@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.
- package/dist/belief-provenance.d.ts +41 -0
- package/dist/belief-provenance.d.ts.map +1 -0
- package/dist/belief-provenance.js +254 -0
- package/dist/belief-provenance.js.map +1 -0
- package/dist/belief-provenance.test.d.ts +2 -0
- package/dist/belief-provenance.test.d.ts.map +1 -0
- package/dist/belief-provenance.test.js +139 -0
- package/dist/belief-provenance.test.js.map +1 -0
- package/dist/cognition-core.d.ts +89 -0
- package/dist/cognition-core.d.ts.map +1 -0
- package/dist/cognition-core.js +370 -0
- package/dist/cognition-core.js.map +1 -0
- package/dist/cognition-core.test.d.ts +2 -0
- package/dist/cognition-core.test.d.ts.map +1 -0
- package/dist/cognition-core.test.js +215 -0
- package/dist/cognition-core.test.js.map +1 -0
- package/dist/combat-core.d.ts +11 -0
- package/dist/combat-core.d.ts.map +1 -0
- package/dist/combat-core.js +152 -0
- package/dist/combat-core.js.map +1 -0
- package/dist/dialogue-core.d.ts +10 -0
- package/dist/dialogue-core.d.ts.map +1 -0
- package/dist/dialogue-core.js +172 -0
- package/dist/dialogue-core.js.map +1 -0
- package/dist/district-core.d.ts +59 -0
- package/dist/district-core.d.ts.map +1 -0
- package/dist/district-core.js +224 -0
- package/dist/district-core.js.map +1 -0
- package/dist/district-core.test.d.ts +2 -0
- package/dist/district-core.test.d.ts.map +1 -0
- package/dist/district-core.test.js +157 -0
- package/dist/district-core.test.js.map +1 -0
- package/dist/environment-core.d.ts +78 -0
- package/dist/environment-core.d.ts.map +1 -0
- package/dist/environment-core.js +229 -0
- package/dist/environment-core.js.map +1 -0
- package/dist/environment-core.test.d.ts +2 -0
- package/dist/environment-core.test.d.ts.map +1 -0
- package/dist/environment-core.test.js +252 -0
- package/dist/environment-core.test.js.map +1 -0
- package/dist/faction-cognition.d.ts +39 -0
- package/dist/faction-cognition.d.ts.map +1 -0
- package/dist/faction-cognition.js +139 -0
- package/dist/faction-cognition.js.map +1 -0
- package/dist/faction-cognition.test.d.ts +2 -0
- package/dist/faction-cognition.test.d.ts.map +1 -0
- package/dist/faction-cognition.test.js +166 -0
- package/dist/faction-cognition.test.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/inventory-core.d.ts +10 -0
- package/dist/inventory-core.d.ts.map +1 -0
- package/dist/inventory-core.js +69 -0
- package/dist/inventory-core.js.map +1 -0
- package/dist/knowledge-decay.test.d.ts +2 -0
- package/dist/knowledge-decay.test.d.ts.map +1 -0
- package/dist/knowledge-decay.test.js +143 -0
- package/dist/knowledge-decay.test.js.map +1 -0
- package/dist/narrative-authority.d.ts +40 -0
- package/dist/narrative-authority.d.ts.map +1 -0
- package/dist/narrative-authority.js +89 -0
- package/dist/narrative-authority.js.map +1 -0
- package/dist/narrative-authority.test.d.ts +2 -0
- package/dist/narrative-authority.test.d.ts.map +1 -0
- package/dist/narrative-authority.test.js +237 -0
- package/dist/narrative-authority.test.js.map +1 -0
- package/dist/observer-presentation.d.ts +74 -0
- package/dist/observer-presentation.d.ts.map +1 -0
- package/dist/observer-presentation.js +277 -0
- package/dist/observer-presentation.js.map +1 -0
- package/dist/observer-presentation.test.d.ts +2 -0
- package/dist/observer-presentation.test.d.ts.map +1 -0
- package/dist/observer-presentation.test.js +156 -0
- package/dist/observer-presentation.test.js.map +1 -0
- package/dist/perception-filter.d.ts +46 -0
- package/dist/perception-filter.d.ts.map +1 -0
- package/dist/perception-filter.js +281 -0
- package/dist/perception-filter.js.map +1 -0
- package/dist/perception-filter.test.d.ts +2 -0
- package/dist/perception-filter.test.d.ts.map +1 -0
- package/dist/perception-filter.test.js +308 -0
- package/dist/perception-filter.test.js.map +1 -0
- package/dist/progression-core.d.ts +63 -0
- package/dist/progression-core.d.ts.map +1 -0
- package/dist/progression-core.js +232 -0
- package/dist/progression-core.js.map +1 -0
- package/dist/progression-core.test.d.ts +2 -0
- package/dist/progression-core.test.d.ts.map +1 -0
- package/dist/progression-core.test.js +328 -0
- package/dist/progression-core.test.js.map +1 -0
- package/dist/rumor-propagation.d.ts +31 -0
- package/dist/rumor-propagation.d.ts.map +1 -0
- package/dist/rumor-propagation.js +180 -0
- package/dist/rumor-propagation.js.map +1 -0
- package/dist/rumor-propagation.test.d.ts +2 -0
- package/dist/rumor-propagation.test.d.ts.map +1 -0
- package/dist/rumor-propagation.test.js +176 -0
- package/dist/rumor-propagation.test.js.map +1 -0
- package/dist/simulation-inspector.d.ts +78 -0
- package/dist/simulation-inspector.d.ts.map +1 -0
- package/dist/simulation-inspector.js +263 -0
- package/dist/simulation-inspector.js.map +1 -0
- package/dist/simulation-inspector.test.d.ts +2 -0
- package/dist/simulation-inspector.test.d.ts.map +1 -0
- package/dist/simulation-inspector.test.js +152 -0
- package/dist/simulation-inspector.test.js.map +1 -0
- package/dist/status-core.d.ts +17 -0
- package/dist/status-core.d.ts.map +1 -0
- package/dist/status-core.js +106 -0
- package/dist/status-core.js.map +1 -0
- package/dist/traversal-core.d.ts +3 -0
- package/dist/traversal-core.d.ts.map +1 -0
- package/dist/traversal-core.js +93 -0
- package/dist/traversal-core.js.map +1 -0
- package/package.json +34 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"faction-cognition.test.js","sourceRoot":"","sources":["../src/faction-cognition.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export { traversalCore } from './traversal-core.js';
|
|
2
|
+
export { statusCore, applyStatus, removeStatus, hasStatus, getStatusStacks } from './status-core.js';
|
|
3
|
+
export { combatCore, createCombatCore } from './combat-core.js';
|
|
4
|
+
export type { CombatFormulas } from './combat-core.js';
|
|
5
|
+
export { inventoryCore, createInventoryCore, giveItem } from './inventory-core.js';
|
|
6
|
+
export type { ItemEffect } from './inventory-core.js';
|
|
7
|
+
export { createDialogueCore } from './dialogue-core.js';
|
|
8
|
+
export type { DialogueState, DialogueRegistry } from './dialogue-core.js';
|
|
9
|
+
export { createNarrativeAuthority, recordPresentation, revealTruth, getHiddenTruths, getRevealedTruths } from './narrative-authority.js';
|
|
10
|
+
export type { NarratorPersonality, NarrativeAuthorityState, Contradiction } from './narrative-authority.js';
|
|
11
|
+
export { createCognitionCore, getCognition, setBelief, getBelief, getBeliefValue, believes, addMemory, getMemories, getRecentMemories, checkPerception, selectIntent, reinforceBelief, processBeliefDecay, aggressiveProfile, cautiousProfile, } from './cognition-core.js';
|
|
12
|
+
export type { Belief, Memory, CognitionState, CognitionCoreConfig, BeliefDecayConfig, PerceptionCheck, PerceptionResult, IntentOption, IntentProfile, } from './cognition-core.js';
|
|
13
|
+
export { createPerceptionFilter, getPerceptionLog, getRecentPerceptions, didPerceive, whoPerceived, } from './perception-filter.js';
|
|
14
|
+
export type { SenseType, PerceivedEvent, PerceptionLayer, PerceptionFilterConfig, } from './perception-filter.js';
|
|
15
|
+
export { createProgressionCore, getCurrency, addCurrency, spendCurrency, getUnlockedNodes, isNodeUnlocked, canUnlock, unlockNode, getAvailableNodes, } from './progression-core.js';
|
|
16
|
+
export type { ProgressionState, ProgressionEvent, CurrencyReward, ProgressionCoreConfig, EffectHandler, UnlockResult, } from './progression-core.js';
|
|
17
|
+
export { createEnvironmentCore, getZoneProperty, setZoneProperty, modifyZoneProperty, getHazardLog, processEnvironmentDecays, zoneHasTag, entitiesInZone, } from './environment-core.js';
|
|
18
|
+
export type { EnvironmentRule, HazardDefinition, ZoneTickEffect, EnvironmentCoreConfig, EnvironmentState, HazardEvent, } from './environment-core.js';
|
|
19
|
+
export { createFactionCognition, getFactionCognition, getEntityFaction, getFactionMembers, setFactionBelief, getFactionBelief, factionBelieves, getFactionBeliefsAbout, } from './faction-cognition.js';
|
|
20
|
+
export type { FactionBelief, FactionCognitionState, FactionMembership, FactionCognitionConfig, } from './faction-cognition.js';
|
|
21
|
+
export { createRumorPropagation, getRumorsFrom, getRumorsToFaction, getRumorLog, } from './rumor-propagation.js';
|
|
22
|
+
export type { RumorRecord, RumorPropagationConfig, } from './rumor-propagation.js';
|
|
23
|
+
export { createDistrictCore, getDistrictForZone, getDistrictState, getDistrictDefinition, getAllDistrictIds, getDistrictMetric, modifyDistrictMetric, isDistrictOnAlert, getDistrictThreatLevel, } from './district-core.js';
|
|
24
|
+
export type { DistrictMetrics, DistrictDefinition, DistrictState, DistrictDecayConfig, DistrictCoreConfig, } from './district-core.js';
|
|
25
|
+
export { createBeliefProvenance, traceEntityBelief, traceFactionBelief, traceSubject, formatBeliefTrace, } from './belief-provenance.js';
|
|
26
|
+
export type { TraceStep, BeliefTrace, } from './belief-provenance.js';
|
|
27
|
+
export { createObserverPresentation, presentForObserver, presentForAllObservers, getDivergences, getEventDivergences, } from './observer-presentation.js';
|
|
28
|
+
export type { ObserverContext, PresentationRule, ObserverPresentedEvent, ObserverPresentationConfig, DivergenceRecord, } from './observer-presentation.js';
|
|
29
|
+
export { createSimulationInspector, inspectEntity, inspectAllEntities, inspectFaction, inspectAllFactions, inspectZone, inspectAllZones, inspectDistrict, inspectAllDistricts, createSnapshot, formatEntityInspection, formatFactionInspection, formatDistrictInspection, } from './simulation-inspector.js';
|
|
30
|
+
export type { EntityInspection, FactionInspection, ZoneInspection, DistrictInspection, SimulationSnapshot, } from './simulation-inspector.js';
|
|
31
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// @ai-rpg-engine/modules — built-in mechanical systems
|
|
2
|
+
export { traversalCore } from './traversal-core.js';
|
|
3
|
+
export { statusCore, applyStatus, removeStatus, hasStatus, getStatusStacks } from './status-core.js';
|
|
4
|
+
export { combatCore, createCombatCore } from './combat-core.js';
|
|
5
|
+
export { inventoryCore, createInventoryCore, giveItem } from './inventory-core.js';
|
|
6
|
+
export { createDialogueCore } from './dialogue-core.js';
|
|
7
|
+
export { createNarrativeAuthority, recordPresentation, revealTruth, getHiddenTruths, getRevealedTruths } from './narrative-authority.js';
|
|
8
|
+
export { createCognitionCore, getCognition, setBelief, getBelief, getBeliefValue, believes, addMemory, getMemories, getRecentMemories, checkPerception, selectIntent, reinforceBelief, processBeliefDecay, aggressiveProfile, cautiousProfile, } from './cognition-core.js';
|
|
9
|
+
export { createPerceptionFilter, getPerceptionLog, getRecentPerceptions, didPerceive, whoPerceived, } from './perception-filter.js';
|
|
10
|
+
export { createProgressionCore, getCurrency, addCurrency, spendCurrency, getUnlockedNodes, isNodeUnlocked, canUnlock, unlockNode, getAvailableNodes, } from './progression-core.js';
|
|
11
|
+
export { createEnvironmentCore, getZoneProperty, setZoneProperty, modifyZoneProperty, getHazardLog, processEnvironmentDecays, zoneHasTag, entitiesInZone, } from './environment-core.js';
|
|
12
|
+
export { createFactionCognition, getFactionCognition, getEntityFaction, getFactionMembers, setFactionBelief, getFactionBelief, factionBelieves, getFactionBeliefsAbout, } from './faction-cognition.js';
|
|
13
|
+
export { createRumorPropagation, getRumorsFrom, getRumorsToFaction, getRumorLog, } from './rumor-propagation.js';
|
|
14
|
+
export { createDistrictCore, getDistrictForZone, getDistrictState, getDistrictDefinition, getAllDistrictIds, getDistrictMetric, modifyDistrictMetric, isDistrictOnAlert, getDistrictThreatLevel, } from './district-core.js';
|
|
15
|
+
export { createBeliefProvenance, traceEntityBelief, traceFactionBelief, traceSubject, formatBeliefTrace, } from './belief-provenance.js';
|
|
16
|
+
export { createObserverPresentation, presentForObserver, presentForAllObservers, getDivergences, getEventDivergences, } from './observer-presentation.js';
|
|
17
|
+
export { createSimulationInspector, inspectEntity, inspectAllEntities, inspectFaction, inspectAllFactions, inspectZone, inspectAllZones, inspectDistrict, inspectAllDistricts, createSnapshot, formatEntityInspection, formatFactionInspection, formatDistrictInspection, } from './simulation-inspector.js';
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,WAAW,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAEzI,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,SAAS,EACT,SAAS,EACT,cAAc,EACd,QAAQ,EACR,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAY7B,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,WAAW,EACX,YAAY,GACb,MAAM,wBAAwB,CAAC;AAOhC,OAAO,EACL,qBAAqB,EACrB,WAAW,EACX,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,UAAU,EACV,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAS/B,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,wBAAwB,EACxB,UAAU,EACV,cAAc,GACf,MAAM,uBAAuB,CAAC;AAS/B,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAOhC,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,kBAAkB,EAClB,WAAW,GACZ,MAAM,wBAAwB,CAAC;AAKhC,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAQ5B,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAKhC,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AAQpC,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,sBAAsB,EACtB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { EngineModule, ActionIntent, WorldState, ResolvedEvent } from '@ai-rpg-engine/core';
|
|
2
|
+
export type ItemEffect = {
|
|
3
|
+
itemId: string;
|
|
4
|
+
use: (action: ActionIntent, world: WorldState) => ResolvedEvent[];
|
|
5
|
+
};
|
|
6
|
+
export declare function createInventoryCore(itemEffects?: ItemEffect[]): EngineModule;
|
|
7
|
+
export declare const inventoryCore: EngineModule;
|
|
8
|
+
/** Helper: add an item to an entity's inventory */
|
|
9
|
+
export declare function giveItem(entity: import('@ai-rpg-engine/core').EntityState, itemId: string, tick: number): ResolvedEvent;
|
|
10
|
+
//# sourceMappingURL=inventory-core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inventory-core.d.ts","sourceRoot":"","sources":["../src/inventory-core.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,aAAa,EACd,MAAM,qBAAqB,CAAC;AAG7B,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,KAAK,aAAa,EAAE,CAAC;CACnE,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,UAAU,EAAE,GAAG,YAAY,CAgB5E;AAED,eAAO,MAAM,aAAa,EAAE,YAAoC,CAAC;AAwCjE,mDAAmD;AACnD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,OAAO,qBAAqB,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,aAAa,CAUvH"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// inventory-core — item ownership, use, acquire
|
|
2
|
+
import { nextId } from '@ai-rpg-engine/core';
|
|
3
|
+
export function createInventoryCore(itemEffects) {
|
|
4
|
+
const effectMap = new Map();
|
|
5
|
+
if (itemEffects) {
|
|
6
|
+
for (const ie of itemEffects) {
|
|
7
|
+
effectMap.set(ie.itemId, ie.use);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
return {
|
|
11
|
+
id: 'inventory-core',
|
|
12
|
+
version: '0.1.0',
|
|
13
|
+
register(ctx) {
|
|
14
|
+
ctx.actions.registerVerb('use', (action, world) => useHandler(action, world, effectMap));
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export const inventoryCore = createInventoryCore();
|
|
19
|
+
function useHandler(action, world, effectMap) {
|
|
20
|
+
const actor = world.entities[action.actorId];
|
|
21
|
+
if (!actor) {
|
|
22
|
+
return [makeEvent(action, 'action.rejected', { reason: 'actor not found' })];
|
|
23
|
+
}
|
|
24
|
+
const itemId = action.toolId ?? action.targetIds?.[0];
|
|
25
|
+
if (!itemId) {
|
|
26
|
+
return [makeEvent(action, 'action.rejected', { reason: 'no item specified' })];
|
|
27
|
+
}
|
|
28
|
+
const inventory = actor.inventory ?? [];
|
|
29
|
+
const itemIndex = inventory.indexOf(itemId);
|
|
30
|
+
if (itemIndex === -1) {
|
|
31
|
+
return [makeEvent(action, 'action.rejected', { reason: `you don't have ${itemId}` })];
|
|
32
|
+
}
|
|
33
|
+
// Apply effect if registered
|
|
34
|
+
const effect = effectMap.get(itemId);
|
|
35
|
+
const effectEvents = effect ? effect(action, world) : [];
|
|
36
|
+
// Remove from inventory (consumable)
|
|
37
|
+
inventory.splice(itemIndex, 1);
|
|
38
|
+
return [
|
|
39
|
+
makeEvent(action, 'item.used', {
|
|
40
|
+
entityId: actor.id,
|
|
41
|
+
itemId,
|
|
42
|
+
consumed: true,
|
|
43
|
+
}),
|
|
44
|
+
...effectEvents,
|
|
45
|
+
];
|
|
46
|
+
}
|
|
47
|
+
/** Helper: add an item to an entity's inventory */
|
|
48
|
+
export function giveItem(entity, itemId, tick) {
|
|
49
|
+
if (!entity.inventory)
|
|
50
|
+
entity.inventory = [];
|
|
51
|
+
entity.inventory.push(itemId);
|
|
52
|
+
return {
|
|
53
|
+
id: nextId('evt'),
|
|
54
|
+
tick,
|
|
55
|
+
type: 'item.acquired',
|
|
56
|
+
actorId: entity.id,
|
|
57
|
+
payload: { itemId },
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function makeEvent(action, type, payload) {
|
|
61
|
+
return {
|
|
62
|
+
id: nextId('evt'),
|
|
63
|
+
tick: action.issuedAtTick,
|
|
64
|
+
type,
|
|
65
|
+
actorId: action.actorId,
|
|
66
|
+
payload,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=inventory-core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inventory-core.js","sourceRoot":"","sources":["../src/inventory-core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge-decay.test.d.ts","sourceRoot":"","sources":["../src/knowledge-decay.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { describe, test, expect } from 'vitest';
|
|
2
|
+
import { createTestEngine } from '@ai-rpg-engine/core';
|
|
3
|
+
import { createCognitionCore, getCognition, setBelief, getBelief, reinforceBelief, processBeliefDecay, } from './cognition-core.js';
|
|
4
|
+
import { createEnvironmentCore, setZoneProperty } from './environment-core.js';
|
|
5
|
+
const guard = {
|
|
6
|
+
id: 'guard_1',
|
|
7
|
+
blueprintId: 'guard',
|
|
8
|
+
type: 'npc',
|
|
9
|
+
name: 'Guard',
|
|
10
|
+
tags: ['enemy'],
|
|
11
|
+
stats: { vigor: 5, instinct: 6, will: 4 },
|
|
12
|
+
resources: { hp: 20 },
|
|
13
|
+
statuses: [],
|
|
14
|
+
zoneId: 'hall',
|
|
15
|
+
ai: { profileId: 'aggressive', goals: ['guard'], fears: [], alertLevel: 0, knowledge: {} },
|
|
16
|
+
};
|
|
17
|
+
const player = {
|
|
18
|
+
id: 'player',
|
|
19
|
+
blueprintId: 'player',
|
|
20
|
+
type: 'player',
|
|
21
|
+
name: 'Hero',
|
|
22
|
+
tags: ['player'],
|
|
23
|
+
stats: { vigor: 7, instinct: 5, will: 5 },
|
|
24
|
+
resources: { hp: 30 },
|
|
25
|
+
statuses: [],
|
|
26
|
+
zoneId: 'hall',
|
|
27
|
+
};
|
|
28
|
+
const zones = [
|
|
29
|
+
{ id: 'hall', roomId: 'castle', name: 'Great Hall', tags: [], neighbors: [] },
|
|
30
|
+
];
|
|
31
|
+
describe('knowledge-decay', () => {
|
|
32
|
+
function createEngine(decayConfig) {
|
|
33
|
+
return createTestEngine({
|
|
34
|
+
modules: [
|
|
35
|
+
createCognitionCore({ decay: decayConfig }),
|
|
36
|
+
createEnvironmentCore(),
|
|
37
|
+
],
|
|
38
|
+
entities: [player, { ...guard }],
|
|
39
|
+
zones,
|
|
40
|
+
playerId: 'player',
|
|
41
|
+
startZone: 'hall',
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
test('beliefs decay over time on cognition-tick', () => {
|
|
45
|
+
const engine = createEngine({ baseRate: 0.1 });
|
|
46
|
+
const cog = getCognition(engine.world, 'guard_1');
|
|
47
|
+
setBelief(cog, 'player', 'hostile', true, 0.8, 'observed', 0);
|
|
48
|
+
// Advance many ticks so decay accumulates
|
|
49
|
+
for (let i = 0; i < 5; i++) {
|
|
50
|
+
engine.store.advanceTick();
|
|
51
|
+
}
|
|
52
|
+
engine.submitAction('cognition-tick');
|
|
53
|
+
const belief = getBelief(cog, 'player', 'hostile');
|
|
54
|
+
expect(belief).toBeDefined();
|
|
55
|
+
// confidence should have decayed: 0.8 - 0.1 * elapsed * modifier
|
|
56
|
+
expect(belief.confidence).toBeLessThan(0.8);
|
|
57
|
+
});
|
|
58
|
+
test('beliefs are pruned below threshold', () => {
|
|
59
|
+
const engine = createEngine({ baseRate: 0.5, pruneThreshold: 0.1 });
|
|
60
|
+
const cog = getCognition(engine.world, 'guard_1');
|
|
61
|
+
setBelief(cog, 'player', 'hostile', true, 0.3, 'observed', 0);
|
|
62
|
+
// Advance far enough for full decay
|
|
63
|
+
for (let i = 0; i < 10; i++) {
|
|
64
|
+
engine.store.advanceTick();
|
|
65
|
+
}
|
|
66
|
+
engine.submitAction('cognition-tick');
|
|
67
|
+
const belief = getBelief(cog, 'player', 'hostile');
|
|
68
|
+
expect(belief).toBeUndefined(); // Should have been pruned
|
|
69
|
+
});
|
|
70
|
+
test('reinforceBelief resets decay clock', () => {
|
|
71
|
+
const engine = createEngine({ baseRate: 0.1 });
|
|
72
|
+
const cog = getCognition(engine.world, 'guard_1');
|
|
73
|
+
setBelief(cog, 'player', 'hostile', true, 0.8, 'observed', 0);
|
|
74
|
+
// Advance 3 ticks
|
|
75
|
+
for (let i = 0; i < 3; i++) {
|
|
76
|
+
engine.store.advanceTick();
|
|
77
|
+
}
|
|
78
|
+
// Reinforce at current tick
|
|
79
|
+
reinforceBelief(cog, 'player', 'hostile', engine.world.meta.tick);
|
|
80
|
+
// Advance 1 more tick
|
|
81
|
+
engine.store.advanceTick();
|
|
82
|
+
engine.submitAction('cognition-tick');
|
|
83
|
+
const belief = getBelief(cog, 'player', 'hostile');
|
|
84
|
+
expect(belief).toBeDefined();
|
|
85
|
+
// Only 1 tick elapsed since reinforcement, so minimal decay
|
|
86
|
+
expect(belief.confidence).toBeGreaterThan(0.7);
|
|
87
|
+
});
|
|
88
|
+
test('reinforceBelief can boost confidence', () => {
|
|
89
|
+
const engine = createEngine();
|
|
90
|
+
const cog = getCognition(engine.world, 'guard_1');
|
|
91
|
+
setBelief(cog, 'player', 'hostile', true, 0.5, 'observed', 0);
|
|
92
|
+
reinforceBelief(cog, 'player', 'hostile', 1, 0.2);
|
|
93
|
+
const belief = getBelief(cog, 'player', 'hostile');
|
|
94
|
+
expect(belief.confidence).toBe(0.7);
|
|
95
|
+
});
|
|
96
|
+
test('environmental instability accelerates decay', () => {
|
|
97
|
+
const engine = createEngine({ baseRate: 0.05, instabilityFactor: 2.0 });
|
|
98
|
+
const cog = getCognition(engine.world, 'guard_1');
|
|
99
|
+
setBelief(cog, 'player', 'hostile', true, 0.8, 'observed', 0);
|
|
100
|
+
// Make the environment unstable (high noise, no stability set so defaults to 0)
|
|
101
|
+
setZoneProperty(engine.world, 'hall', 'noise', 8);
|
|
102
|
+
// Advance ticks
|
|
103
|
+
for (let i = 0; i < 3; i++) {
|
|
104
|
+
engine.store.advanceTick();
|
|
105
|
+
}
|
|
106
|
+
engine.submitAction('cognition-tick');
|
|
107
|
+
const belief = getBelief(cog, 'player', 'hostile');
|
|
108
|
+
// Should decay faster due to instability
|
|
109
|
+
expect(belief).toBeDefined();
|
|
110
|
+
expect(belief.confidence).toBeLessThan(0.6);
|
|
111
|
+
});
|
|
112
|
+
test('recent beliefs do not decay', () => {
|
|
113
|
+
const engine = createEngine({ baseRate: 0.1 });
|
|
114
|
+
const cog = getCognition(engine.world, 'guard_1');
|
|
115
|
+
// Set belief at current tick
|
|
116
|
+
const currentTick = engine.world.meta.tick;
|
|
117
|
+
setBelief(cog, 'player', 'hostile', true, 0.8, 'observed', currentTick);
|
|
118
|
+
engine.submitAction('cognition-tick');
|
|
119
|
+
const belief = getBelief(cog, 'player', 'hostile');
|
|
120
|
+
// No elapsed ticks since belief was formed, so no decay
|
|
121
|
+
expect(belief.confidence).toBe(0.8);
|
|
122
|
+
});
|
|
123
|
+
test('suspicion also decays on cognition-tick', () => {
|
|
124
|
+
const engine = createEngine();
|
|
125
|
+
const cog = getCognition(engine.world, 'guard_1');
|
|
126
|
+
cog.suspicion = 50;
|
|
127
|
+
engine.submitAction('cognition-tick');
|
|
128
|
+
expect(cog.suspicion).toBe(49);
|
|
129
|
+
});
|
|
130
|
+
test('processBeliefDecay can be called directly', () => {
|
|
131
|
+
const engine = createEngine();
|
|
132
|
+
const cog = getCognition(engine.world, 'guard_1');
|
|
133
|
+
setBelief(cog, 'player', 'hostile', true, 0.8, 'observed', 0);
|
|
134
|
+
// Advance ticks
|
|
135
|
+
for (let i = 0; i < 5; i++) {
|
|
136
|
+
engine.store.advanceTick();
|
|
137
|
+
}
|
|
138
|
+
processBeliefDecay(engine.world, { baseRate: 0.1, pruneThreshold: 0.05, instabilityFactor: 0.5 });
|
|
139
|
+
const belief = getBelief(cog, 'player', 'hostile');
|
|
140
|
+
expect(belief.confidence).toBeLessThan(0.8);
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
//# sourceMappingURL=knowledge-decay.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge-decay.test.js","sourceRoot":"","sources":["../src/knowledge-decay.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { EngineModule, ResolvedEvent } from '@ai-rpg-engine/core';
|
|
2
|
+
import { PresentationChannels, type ChannelFilter, type PresentedEvent } from '@ai-rpg-engine/core';
|
|
3
|
+
export type NarratorPersonality = {
|
|
4
|
+
/** Narrator voice name */
|
|
5
|
+
voice: string;
|
|
6
|
+
/** Base distortion level 0-1. 0 = truthful, 1 = fully unreliable */
|
|
7
|
+
distortion: number;
|
|
8
|
+
/** Event types the narrator will try to conceal */
|
|
9
|
+
conceals?: string[];
|
|
10
|
+
/** Event types the narrator will distort */
|
|
11
|
+
distorts?: string[];
|
|
12
|
+
/** Custom filter for narrator channel */
|
|
13
|
+
filter?: ChannelFilter;
|
|
14
|
+
};
|
|
15
|
+
export type NarrativeAuthorityState = {
|
|
16
|
+
objectiveLog: ResolvedEvent[];
|
|
17
|
+
presentedLog: PresentedEvent[];
|
|
18
|
+
contradictions: Contradiction[];
|
|
19
|
+
revealedTruths: string[];
|
|
20
|
+
};
|
|
21
|
+
export type Contradiction = {
|
|
22
|
+
eventId: string;
|
|
23
|
+
objectiveType: string;
|
|
24
|
+
presentedType: string;
|
|
25
|
+
field?: string;
|
|
26
|
+
objectiveValue: unknown;
|
|
27
|
+
presentedValue: unknown;
|
|
28
|
+
discovered: boolean;
|
|
29
|
+
discoveredAtTick?: number;
|
|
30
|
+
};
|
|
31
|
+
export declare function createNarrativeAuthority(channels: PresentationChannels, personality?: NarratorPersonality): EngineModule;
|
|
32
|
+
/** Record what the player was shown vs what really happened */
|
|
33
|
+
export declare function recordPresentation(state: NarrativeAuthorityState, objective: ResolvedEvent, presented: PresentedEvent[]): void;
|
|
34
|
+
/** Reveal a truth — mark a contradiction as discovered */
|
|
35
|
+
export declare function revealTruth(state: NarrativeAuthorityState, eventId: string, tick: number): Contradiction | undefined;
|
|
36
|
+
/** Get all undiscovered contradictions */
|
|
37
|
+
export declare function getHiddenTruths(state: NarrativeAuthorityState): Contradiction[];
|
|
38
|
+
/** Get all discovered contradictions */
|
|
39
|
+
export declare function getRevealedTruths(state: NarrativeAuthorityState): Contradiction[];
|
|
40
|
+
//# sourceMappingURL=narrative-authority.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"narrative-authority.d.ts","sourceRoot":"","sources":["../src/narrative-authority.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EAEd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEpG,MAAM,MAAM,mBAAmB,GAAG;IAChC,0BAA0B;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,yCAAyC;IACzC,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,YAAY,EAAE,aAAa,EAAE,CAAC;IAC9B,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,oBAAoB,EAC9B,WAAW,CAAC,EAAE,mBAAmB,GAChC,YAAY,CAsDd;AAED,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,uBAAuB,EAC9B,SAAS,EAAE,aAAa,EACxB,SAAS,EAAE,cAAc,EAAE,GAC1B,IAAI,CAqBN;AAED,0DAA0D;AAC1D,wBAAgB,WAAW,CACzB,KAAK,EAAE,uBAAuB,EAC9B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,GACX,aAAa,GAAG,SAAS,CAU3B;AAED,0CAA0C;AAC1C,wBAAgB,eAAe,CAAC,KAAK,EAAE,uBAAuB,GAAG,aAAa,EAAE,CAE/E;AAED,wCAAwC;AACxC,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,uBAAuB,GAAG,aAAa,EAAE,CAEjF"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// narrative-authority — the narrator can lie, conceal, and distort
|
|
2
|
+
export function createNarrativeAuthority(channels, personality) {
|
|
3
|
+
const state = {
|
|
4
|
+
objectiveLog: [],
|
|
5
|
+
presentedLog: [],
|
|
6
|
+
contradictions: [],
|
|
7
|
+
revealedTruths: [],
|
|
8
|
+
};
|
|
9
|
+
return {
|
|
10
|
+
id: 'narrative-authority',
|
|
11
|
+
version: '0.1.0',
|
|
12
|
+
register(ctx) {
|
|
13
|
+
ctx.persistence.registerNamespace('narrative-authority', state);
|
|
14
|
+
// Install narrator filter on the narrator channel
|
|
15
|
+
if (personality?.filter) {
|
|
16
|
+
channels.addFilter('narrator', personality.filter);
|
|
17
|
+
}
|
|
18
|
+
// Default concealment: suppress events the narrator wants hidden
|
|
19
|
+
if (personality?.conceals?.length) {
|
|
20
|
+
channels.addFilter('narrator', (event) => {
|
|
21
|
+
if (personality.conceals.includes(event.type)) {
|
|
22
|
+
return null; // Suppressed — the narrator hides this
|
|
23
|
+
}
|
|
24
|
+
return event;
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
// Default distortion: modify events the narrator wants to twist
|
|
28
|
+
if (personality?.distorts?.length) {
|
|
29
|
+
channels.addFilter('narrator', (event) => {
|
|
30
|
+
if (!personality.distorts.includes(event.type))
|
|
31
|
+
return event;
|
|
32
|
+
// Apply distortion: clone and mark as distorted
|
|
33
|
+
return {
|
|
34
|
+
...event,
|
|
35
|
+
payload: { ...event.payload, _narratorDistorted: true },
|
|
36
|
+
tags: [...(event.tags ?? []), 'narrator-distorted'],
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
// Listen to all events and track objective truth
|
|
41
|
+
ctx.events.on('*', (event) => {
|
|
42
|
+
state.objectiveLog.push(event);
|
|
43
|
+
});
|
|
44
|
+
},
|
|
45
|
+
init() {
|
|
46
|
+
// After all modules registered, nothing extra needed
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/** Record what the player was shown vs what really happened */
|
|
51
|
+
export function recordPresentation(state, objective, presented) {
|
|
52
|
+
state.presentedLog.push(...presented);
|
|
53
|
+
// Detect contradictions
|
|
54
|
+
for (const p of presented) {
|
|
55
|
+
if (p._filtered && p._channel === 'narrator') {
|
|
56
|
+
const contradiction = {
|
|
57
|
+
eventId: objective.id,
|
|
58
|
+
objectiveType: objective.type,
|
|
59
|
+
presentedType: p.type,
|
|
60
|
+
objectiveValue: objective.payload,
|
|
61
|
+
presentedValue: p.payload,
|
|
62
|
+
discovered: false,
|
|
63
|
+
};
|
|
64
|
+
// Check if payload was actually changed
|
|
65
|
+
if (JSON.stringify(objective.payload) !== JSON.stringify(p.payload)) {
|
|
66
|
+
state.contradictions.push(contradiction);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/** Reveal a truth — mark a contradiction as discovered */
|
|
72
|
+
export function revealTruth(state, eventId, tick) {
|
|
73
|
+
const contradiction = state.contradictions.find((c) => c.eventId === eventId && !c.discovered);
|
|
74
|
+
if (contradiction) {
|
|
75
|
+
contradiction.discovered = true;
|
|
76
|
+
contradiction.discoveredAtTick = tick;
|
|
77
|
+
state.revealedTruths.push(eventId);
|
|
78
|
+
}
|
|
79
|
+
return contradiction;
|
|
80
|
+
}
|
|
81
|
+
/** Get all undiscovered contradictions */
|
|
82
|
+
export function getHiddenTruths(state) {
|
|
83
|
+
return state.contradictions.filter((c) => !c.discovered);
|
|
84
|
+
}
|
|
85
|
+
/** Get all discovered contradictions */
|
|
86
|
+
export function getRevealedTruths(state) {
|
|
87
|
+
return state.contradictions.filter((c) => c.discovered);
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=narrative-authority.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"narrative-authority.js","sourceRoot":"","sources":["../src/narrative-authority.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"narrative-authority.test.d.ts","sourceRoot":"","sources":["../src/narrative-authority.test.ts"],"names":[],"mappings":""}
|