@sharpee/world-model 0.9.106 → 0.9.109

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 (83) hide show
  1. package/constants/directions.d.ts +1 -89
  2. package/constants/directions.d.ts.map +1 -1
  3. package/constants/directions.js +2 -162
  4. package/constants/directions.js.map +1 -1
  5. package/entities/entity-types.d.ts +4 -0
  6. package/entities/entity-types.d.ts.map +1 -1
  7. package/entities/entity-types.js +6 -0
  8. package/entities/entity-types.js.map +1 -1
  9. package/index.d.ts +1 -0
  10. package/index.d.ts.map +1 -1
  11. package/index.js +1 -0
  12. package/index.js.map +1 -1
  13. package/package.json +3 -3
  14. package/traits/combatant/combatantTrait.d.ts +3 -0
  15. package/traits/combatant/combatantTrait.d.ts.map +1 -1
  16. package/traits/combatant/combatantTrait.js +2 -0
  17. package/traits/combatant/combatantTrait.js.map +1 -1
  18. package/traits/concealment/concealedStateTrait.d.ts +59 -0
  19. package/traits/concealment/concealedStateTrait.d.ts.map +1 -0
  20. package/traits/concealment/concealedStateTrait.js +63 -0
  21. package/traits/concealment/concealedStateTrait.js.map +1 -0
  22. package/traits/concealment/concealedVisibilityBehavior.d.ts +27 -0
  23. package/traits/concealment/concealedVisibilityBehavior.d.ts.map +1 -0
  24. package/traits/concealment/concealedVisibilityBehavior.js +44 -0
  25. package/traits/concealment/concealedVisibilityBehavior.js.map +1 -0
  26. package/traits/concealment/concealmentTrait.d.ts +54 -0
  27. package/traits/concealment/concealmentTrait.d.ts.map +1 -0
  28. package/traits/concealment/concealmentTrait.js +58 -0
  29. package/traits/concealment/concealmentTrait.js.map +1 -0
  30. package/traits/concealment/index.d.ts +7 -0
  31. package/traits/concealment/index.d.ts.map +1 -0
  32. package/traits/concealment/index.js +23 -0
  33. package/traits/concealment/index.js.map +1 -0
  34. package/traits/implementations.d.ts +3 -1
  35. package/traits/implementations.d.ts.map +1 -1
  36. package/traits/implementations.js +13 -2
  37. package/traits/implementations.js.map +1 -1
  38. package/traits/index.d.ts +3 -0
  39. package/traits/index.d.ts.map +1 -1
  40. package/traits/index.js +4 -0
  41. package/traits/index.js.map +1 -1
  42. package/traits/region/index.d.ts +6 -0
  43. package/traits/region/index.d.ts.map +1 -0
  44. package/traits/region/index.js +10 -0
  45. package/traits/region/index.js.map +1 -0
  46. package/traits/region/regionTrait.d.ts +49 -0
  47. package/traits/region/regionTrait.d.ts.map +1 -0
  48. package/traits/region/regionTrait.js +43 -0
  49. package/traits/region/regionTrait.js.map +1 -0
  50. package/traits/room/roomBehavior.js +1 -1
  51. package/traits/room/roomBehavior.js.map +1 -1
  52. package/traits/room/roomTrait.d.ts +3 -3
  53. package/traits/room/roomTrait.d.ts.map +1 -1
  54. package/traits/room/roomTrait.js +2 -2
  55. package/traits/room/roomTrait.js.map +1 -1
  56. package/traits/scene/index.d.ts +6 -0
  57. package/traits/scene/index.d.ts.map +1 -0
  58. package/traits/scene/index.js +10 -0
  59. package/traits/scene/index.js.map +1 -0
  60. package/traits/scene/sceneTrait.d.ts +57 -0
  61. package/traits/scene/sceneTrait.d.ts.map +1 -0
  62. package/traits/scene/sceneTrait.js +48 -0
  63. package/traits/scene/sceneTrait.js.map +1 -0
  64. package/traits/story-info/storyInfoTrait.d.ts +1 -1
  65. package/traits/story-info/storyInfoTrait.js +1 -1
  66. package/traits/trait-types.d.ts +4 -0
  67. package/traits/trait-types.d.ts.map +1 -1
  68. package/traits/trait-types.js +10 -1
  69. package/traits/trait-types.js.map +1 -1
  70. package/world/AuthorModel.d.ts +11 -3
  71. package/world/AuthorModel.d.ts.map +1 -1
  72. package/world/AuthorModel.js +32 -4
  73. package/world/AuthorModel.js.map +1 -1
  74. package/world/SpatialIndex.d.ts.map +1 -1
  75. package/world/SpatialIndex.js +6 -2
  76. package/world/SpatialIndex.js.map +1 -1
  77. package/world/WorldModel.d.ts +135 -12
  78. package/world/WorldModel.d.ts.map +1 -1
  79. package/world/WorldModel.js +241 -14
  80. package/world/WorldModel.js.map +1 -1
  81. package/world/index.d.ts +1 -1
  82. package/world/index.d.ts.map +1 -1
  83. package/world/index.js.map +1 -1
@@ -1,6 +1,6 @@
1
1
  import { IFEntity } from '../entities/if-entity';
2
2
  import { TraitType } from '../traits/trait-types';
3
- import { DirectionType, DirectionVocabularyRegistry } from '../constants/directions';
3
+ import { DirectionType } from '../constants/directions';
4
4
  import { ISemanticEvent, ISemanticEventSource } from "../../core/index";
5
5
  import { IDataStore } from './AuthorModel';
6
6
  import { ICapabilityData, ICapabilityRegistration } from './capabilities';
@@ -10,6 +10,43 @@ import { IScopeRule } from '../scope/scope-rule';
10
10
  import { EventHandler, EventValidator, EventPreviewer, EventChainHandler, ChainEventOptions } from './WorldEventSystem';
11
11
  export type { EventHandler, EventValidator, EventPreviewer, EventChainHandler, ChainEventOptions };
12
12
  export { WorldState, WorldConfig, ContentsOptions, WorldChange } from "../../if-domain/index";
13
+ export interface RegionOptions {
14
+ /** Human-readable region name. */
15
+ name: string;
16
+ /** Parent region entity ID for nesting. */
17
+ parentRegionId?: string;
18
+ /** Region-wide ambient sound. */
19
+ ambientSound?: string;
20
+ /** Region-wide ambient smell. */
21
+ ambientSmell?: string;
22
+ /** Whether rooms in this region default to dark. */
23
+ defaultDark?: boolean;
24
+ }
25
+ export interface SceneOptions {
26
+ /** Human-readable scene name. */
27
+ name: string;
28
+ /** Returns true when the scene should begin. Evaluated each turn when state is 'waiting'. */
29
+ begin: (world: IWorldModel) => boolean;
30
+ /** Returns true when the scene should end. Evaluated each turn when state is 'active'. */
31
+ end: (world: IWorldModel) => boolean;
32
+ /** Whether the scene can activate more than once. Default: false. */
33
+ recurring?: boolean;
34
+ }
35
+ /** Stored condition closures for a scene (not serializable). */
36
+ export interface SceneConditions {
37
+ begin: (world: IWorldModel) => boolean;
38
+ end: (world: IWorldModel) => boolean;
39
+ }
40
+ /**
41
+ * Result of comparing region hierarchies for two rooms (ADR-149).
42
+ *
43
+ * @param exited - Region IDs exited, innermost first.
44
+ * @param entered - Region IDs entered, outermost first.
45
+ */
46
+ export interface RegionCrossings {
47
+ exited: string[];
48
+ entered: string[];
49
+ }
13
50
  import { ScoreEntry } from './ScoreLedger';
14
51
  export { ScoreEntry } from './ScoreLedger';
15
52
  export interface IWorldModel {
@@ -62,6 +99,16 @@ export interface IWorldModel {
62
99
  isLocked?: boolean;
63
100
  keyId?: string;
64
101
  }): IFEntity;
102
+ createRegion(id: string, options: RegionOptions): IFEntity;
103
+ assignRoom(roomId: string, regionId: string): void;
104
+ isInRegion(entityId: string, regionId: string): boolean;
105
+ getRegionCrossings(fromRoomId: string, toRoomId: string): RegionCrossings;
106
+ createScene(id: string, options: SceneOptions): IFEntity;
107
+ getSceneConditions(sceneId: string): SceneConditions | undefined;
108
+ getAllSceneConditions(): Map<string, SceneConditions>;
109
+ isSceneActive(sceneId: string): boolean;
110
+ hasSceneEnded(sceneId: string): boolean;
111
+ hasSceneHappened(sceneId: string): boolean;
65
112
  awardScore(id: string, points: number, description: string): boolean;
66
113
  revokeScore(id: string): boolean;
67
114
  hasScore(id: string): boolean;
@@ -102,7 +149,6 @@ export interface IWorldModel {
102
149
  removeScopeRule(ruleId: string): boolean;
103
150
  evaluateScope(actorId: string, actionId?: string): string[];
104
151
  getGrammarVocabularyProvider(): IGrammarVocabularyProvider;
105
- directions(): DirectionVocabularyRegistry;
106
152
  }
107
153
  export declare class WorldModel implements IWorldModel {
108
154
  private entities;
@@ -112,6 +158,7 @@ export declare class WorldModel implements IWorldModel {
112
158
  private config;
113
159
  private capabilities;
114
160
  private scoreLedger;
161
+ private sceneConditions;
115
162
  private idCounters;
116
163
  private eventSystem;
117
164
  private serializer;
@@ -119,7 +166,6 @@ export declare class WorldModel implements IWorldModel {
119
166
  private scopeRegistry;
120
167
  private scopeEvaluator;
121
168
  private grammarVocabularyProvider;
122
- private directionVocabularyRegistry;
123
169
  constructor(config?: WorldConfig, platformEvents?: ISemanticEventSource);
124
170
  private emitPlatformEvent;
125
171
  registerCapability(name: string, registration?: Partial<ICapabilityRegistration>): void;
@@ -184,15 +230,6 @@ export declare class WorldModel implements IWorldModel {
184
230
  getDataStore(): IDataStore;
185
231
  getScopeRegistry(): ScopeRegistry;
186
232
  getGrammarVocabularyProvider(): IGrammarVocabularyProvider;
187
- /**
188
- * Access the direction vocabulary registry.
189
- *
190
- * Stories call this to override direction words from a single point:
191
- * ```
192
- * world.directions().useVocabulary('naval');
193
- * ```
194
- */
195
- directions(): DirectionVocabularyRegistry;
196
233
  addScopeRule(rule: IScopeRule): void;
197
234
  removeScopeRule(ruleId: string): boolean;
198
235
  evaluateScope(actorId: string, actionId?: string): string[];
@@ -268,5 +305,91 @@ export declare class WorldModel implements IWorldModel {
268
305
  isLocked?: boolean;
269
306
  keyId?: string;
270
307
  }): IFEntity;
308
+ /**
309
+ * Creates a region entity with RegionTrait atomically.
310
+ *
311
+ * @param id - Explicit entity ID for the region (e.g., 'reg-underground').
312
+ * Must be unique; throws if already exists.
313
+ * @param options - Region configuration.
314
+ * @returns The created region entity.
315
+ */
316
+ createRegion(id: string, options: RegionOptions): IFEntity;
317
+ /**
318
+ * Assigns a room to a region by setting RoomTrait.regionId.
319
+ *
320
+ * @param roomId - ID of the room entity.
321
+ * @param regionId - ID of the region entity (must exist and have RegionTrait).
322
+ * @throws If room not found, region not found, or types are wrong.
323
+ */
324
+ assignRoom(roomId: string, regionId: string): void;
325
+ /**
326
+ * Tests whether an entity (or its containing room) is in a region,
327
+ * traversing the parent region hierarchy.
328
+ *
329
+ * @param entityId - The entity to test. If it's a room, checks its regionId.
330
+ * Otherwise, resolves the entity's containing room first.
331
+ * @param regionId - The region to test membership against.
332
+ * @returns true if the entity is in the region or any child of it.
333
+ */
334
+ isInRegion(entityId: string, regionId: string): boolean;
335
+ /**
336
+ * Computes which regions are exited and entered when moving between rooms.
337
+ * Exit list is innermost-first; entry list is outermost-first.
338
+ *
339
+ * @param fromRoomId - The source room entity ID.
340
+ * @param toRoomId - The destination room entity ID.
341
+ * @returns Region IDs exited and entered. Both empty if same region or no regions.
342
+ */
343
+ getRegionCrossings(fromRoomId: string, toRoomId: string): RegionCrossings;
344
+ /**
345
+ * Builds the ancestry chain for a region: [self, parent, grandparent, ...].
346
+ * Returns empty array if regionId is undefined or not found.
347
+ */
348
+ private getRegionAncestry;
349
+ /**
350
+ * Checks whether a region ancestry chain includes a target region.
351
+ */
352
+ private regionAncestryIncludes;
353
+ /**
354
+ * Creates a scene entity with SceneTrait and registers condition closures.
355
+ *
356
+ * @param id - Explicit entity ID (e.g., 'scene-flood'). Must be unique.
357
+ * @param options - Scene name, begin/end conditions, recurring flag.
358
+ * @returns The created scene entity.
359
+ */
360
+ createScene(id: string, options: SceneOptions): IFEntity;
361
+ /**
362
+ * Retrieves the condition closures for a scene.
363
+ * Returns undefined if the scene has no registered conditions
364
+ * (e.g., after save/restore before re-registration).
365
+ *
366
+ * @param sceneId - The scene entity ID.
367
+ */
368
+ getSceneConditions(sceneId: string): SceneConditions | undefined;
369
+ /**
370
+ * Returns all registered scene conditions. Used by the engine's
371
+ * scene evaluation phase to iterate over scenes each turn.
372
+ */
373
+ getAllSceneConditions(): Map<string, SceneConditions>;
374
+ /**
375
+ * Returns true if the scene is currently in the 'active' state.
376
+ *
377
+ * @param sceneId - The scene entity ID.
378
+ */
379
+ isSceneActive(sceneId: string): boolean;
380
+ /**
381
+ * Returns true if the scene has reached the 'ended' state.
382
+ * For recurring scenes, this is true only while in the 'ended' state
383
+ * (resets to 'waiting' when the scene re-activates).
384
+ *
385
+ * @param sceneId - The scene entity ID.
386
+ */
387
+ hasSceneEnded(sceneId: string): boolean;
388
+ /**
389
+ * Returns true if the scene has ever been active (beganAtTurn is set).
390
+ *
391
+ * @param sceneId - The scene entity ID.
392
+ */
393
+ hasSceneHappened(sceneId: string): boolean;
271
394
  }
272
395
  //# sourceMappingURL=WorldModel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorldModel.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/world-model/src/world/WorldModel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorldModel.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/world-model/src/world/WorldModel.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAalD,OAAO,EAAE,aAAa,EAAwB,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAIrE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAEL,eAAe,EAEf,uBAAuB,EACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,UAAU,EACV,WAAW,EACX,eAAe,EACf,WAAW,EACX,0BAA0B,EAE1B,qBAAqB,EACrB,UAAU,EAGX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,UAAU,EAAiB,MAAM,qBAAqB,CAAC;AAGhE,OAAO,EAEL,YAAY,EACZ,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;AAGnG,OAAO,EACL,UAAU,EACV,WAAW,EACX,eAAe,EACf,WAAW,EACZ,MAAM,oBAAoB,CAAC;AAG5B,MAAM,WAAW,aAAa;IAC5B,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAGD,MAAM,WAAW,YAAY;IAC3B,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,6FAA6F;IAC7F,KAAK,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC;IACvC,0FAA0F;IAC1F,GAAG,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC;IACrC,qEAAqE;IACrE,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,gEAAgE;AAChE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC;IACvC,GAAG,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC;CACtC;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAGD,OAAO,EAAe,UAAU,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,MAAM,WAAW,WAAW;IAE1B,YAAY,IAAI,UAAU,CAAC;IAG3B,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,uBAAuB,CAAC,GAAG,IAAI,CAAC;IACvF,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;IACrE,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAAC;IACzD,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAGrC,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3D,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC5C,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,cAAc,IAAI,QAAQ,EAAE,CAAC;IAC7B,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI,CAAC;IAG1E,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAClD,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,QAAQ,EAAE,CAAC;IACxE,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC;IAC/D,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC;IAClE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC1D,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,QAAQ,EAAE,CAAC;IAGxE,QAAQ,IAAI,UAAU,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IAClC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;IAChC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC;IAG7C,SAAS,IAAI,UAAU,CAAC;IACxB,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAGpC,WAAW,CAAC,SAAS,EAAE,SAAS,GAAG,QAAQ,EAAE,CAAC;IAC9C,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAC;IAC3C,SAAS,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,OAAO,GAAG,QAAQ,EAAE,CAAC;IAChE,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAC;IAC3C,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAC;IAC3C,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAGtD,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC;IACpF,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtF,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAGzF,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IACzC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7D,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IAChE,SAAS,IAAI,QAAQ,GAAG,SAAS,CAAC;IAClC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAGlC,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/E,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE;QACpC,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,aAAa,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,QAAQ,CAAC;IAGb,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,QAAQ,CAAC;IAC3D,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACnD,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IACxD,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,CAAC;IAG1E,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,QAAQ,CAAC;IACzD,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAAC;IACjE,qBAAqB,IAAI,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACtD,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IACxC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IACxC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAG3C,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IACrE,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9B,QAAQ,IAAI,MAAM,CAAC;IACnB,eAAe,IAAI,UAAU,EAAE,CAAC;IAChC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,IAAI,MAAM,CAAC;IAGtB,MAAM,IAAI,MAAM,CAAC;IACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,IAAI,IAAI,CAAC;IAGd,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IACrE,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,IAAI,CAAC;IAC3E,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,IAAI,CAAC;IAE3E;;;OAGG;IACH,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAE3D;;;;;;;;OAQG;IACH,UAAU,CACR,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,IAAI,CAAC;IAER,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IACxC,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC;IAC9C,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,WAAW,EAAE,CAAC;IAGnD,gBAAgB,IAAI,cAAc,EAAE,CAAC;IACrC,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,EAAE,CAAC;IACpD,iBAAiB,IAAI,IAAI,CAAC;IAG1B,gBAAgB,IAAI,aAAa,CAAC;IAClC,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IACzC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAG5D,4BAA4B,IAAI,0BAA0B,CAAC;CAE5D;AAeD,qBAAa,UAAW,YAAW,WAAW;IAC5C,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,YAAY,CAAwB;IAG5C,OAAO,CAAC,WAAW,CAAqB;IAGxC,OAAO,CAAC,eAAe,CAA2C;IAGlE,OAAO,CAAC,UAAU,CAAkC;IAGpD,OAAO,CAAC,WAAW,CAA0B;IAG7C,OAAO,CAAC,UAAU,CAAyB;IAE3C,OAAO,CAAC,cAAc,CAAC,CAAuB;IAG9C,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,cAAc,CAAqB;IAG3C,OAAO,CAAC,yBAAyB,CAA6B;gBAElD,MAAM,GAAE,WAAgB,EAAE,cAAc,CAAC,EAAE,oBAAoB;IAuB3E,OAAO,CAAC,iBAAiB;IAmBzB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,GAAE,OAAO,CAAC,uBAAuB,CAAM,GAAG,IAAI;IA+B3F,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;IA6BvE,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAIxD,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKpC,OAAO,CAAC,UAAU;IAoBlB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE,MAAiB,GAAG,QAAQ;IAuBpE,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAI3C,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI9B,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAiBjC,cAAc,IAAI,QAAQ,EAAE;IAI5B,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI;IAiBzE,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIjD,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,QAAQ,EAAE;IA4B3E,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;IA+B9D,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;IA+BjE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAoBzD,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,QAAQ,EAAE;IA+B3E,QAAQ,IAAI,UAAU;IAItB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAIjC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG;IAI/B,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAK5C,SAAS,IAAI,UAAU;IAIvB,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAKnC,WAAW,CAAC,SAAS,EAAE,SAAS,GAAG,QAAQ,EAAE;IAI7C,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,EAAE;IAI1C,SAAS,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,OAAO,GAAG,QAAQ,EAAE;IAO/D,OAAO,CAAC,aAAa,CAA+C;IAEpE,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,EAAE;IAQhE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,OAAO;IAKnF,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAqBrF,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAkBxF,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAexC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAiB5D,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAmF/D,SAAS,IAAI,QAAQ,GAAG,SAAS;IAIjC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQjC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAIpE,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIhC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAI7B,QAAQ,IAAI,MAAM;IAIlB,eAAe,IAAI,UAAU,EAAE;IAI/B,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI9B,WAAW,IAAI,MAAM;IAKrB,MAAM,IAAI,MAAM;IAIhB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAoB5B,OAAO,CAAC,oBAAoB;IAY5B,KAAK,IAAI,IAAI;IAcb,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAIpE,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI/C,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,IAAI;IAI1E,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,IAAI;IAI1E,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,IAAI;IAI1D,UAAU,CACR,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,GAAE,iBAAsB,GAC9B,IAAI;IAIP,UAAU,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAIvC,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO;IAI7C,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,WAAW,EAAE;IAIlD,gBAAgB,IAAI,cAAc,EAAE;IAIpC,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,EAAE;IAInD,iBAAiB,IAAI,IAAI;IAKzB,YAAY,IAAI,UAAU;IAe1B,gBAAgB,IAAI,aAAa;IAKjC,4BAA4B,IAAI,0BAA0B;IAI1D,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IASpC,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAQxC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAwB3D;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAoDjC;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,EAAE;IAM1C;;;;;;;;;;;;;;OAcG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,EAAE;IAO1C;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IASrD;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,GAAG,IAAI;IAY9E;;;OAGG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE;QACpC,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,aAAa,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,QAAQ;IAwCZ;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,QAAQ;IAqB1D;;;;;;OAMG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAmBlD;;;;;;;;OAQG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAqBvD;;;;;;;OAOG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe;IA0BzE;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAuB9B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,QAAQ;IA2BxD;;;;;;OAMG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAIhE;;;OAGG;IACH,qBAAqB,IAAI,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC;IAIrD;;;;OAIG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAMvC;;;;;;OAMG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAMvC;;;;OAIG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAK3C"}
@@ -7,6 +7,8 @@ const entity_types_1 = require("../entities/entity-types");
7
7
  const trait_types_1 = require("../traits/trait-types");
8
8
  const room_1 = require("../traits/room");
9
9
  const roomBehavior_1 = require("../traits/room/roomBehavior");
10
+ const regionTrait_1 = require("../traits/region/regionTrait");
11
+ const sceneTrait_1 = require("../traits/scene/sceneTrait");
10
12
  const door_1 = require("../traits/door");
11
13
  const scenery_1 = require("../traits/scenery");
12
14
  const identityTrait_1 = require("../traits/identity/identityTrait");
@@ -48,6 +50,8 @@ class WorldModel {
48
50
  capabilities = {};
49
51
  // Score Ledger (ADR-129)
50
52
  scoreLedger = new ScoreLedger_1.ScoreLedger();
53
+ // Scene condition closures (ADR-149) — not serialized
54
+ sceneConditions = new Map();
51
55
  // ID generation
52
56
  idCounters = new Map();
53
57
  // Event system (ADR-086, ADR-094) — delegates to WorldEventSystem
@@ -60,8 +64,6 @@ class WorldModel {
60
64
  scopeEvaluator;
61
65
  // Vocabulary system (ADR-082)
62
66
  grammarVocabularyProvider;
63
- // Direction vocabulary (ADR-143)
64
- directionVocabularyRegistry = new directions_1.DirectionVocabularyRegistry();
65
67
  constructor(config = {}, platformEvents) {
66
68
  this.config = {
67
69
  enableSpatialIndex: true,
@@ -662,18 +664,6 @@ class WorldModel {
662
664
  getGrammarVocabularyProvider() {
663
665
  return this.grammarVocabularyProvider;
664
666
  }
665
- // Direction Vocabulary (ADR-143)
666
- /**
667
- * Access the direction vocabulary registry.
668
- *
669
- * Stories call this to override direction words from a single point:
670
- * ```
671
- * world.directions().useVocabulary('naval');
672
- * ```
673
- */
674
- directions() {
675
- return this.directionVocabularyRegistry;
676
- }
677
667
  addScopeRule(rule) {
678
668
  this.scopeRegistry.addRule(rule);
679
669
  this.emitPlatformEvent('scope_rule_added', {
@@ -872,6 +862,243 @@ class WorldModel {
872
862
  this.moveEntity(door.id, opts.room1Id);
873
863
  return door;
874
864
  }
865
+ // ── Region Management (ADR-149) ──────────────────────────────────
866
+ /**
867
+ * Creates a region entity with RegionTrait atomically.
868
+ *
869
+ * @param id - Explicit entity ID for the region (e.g., 'reg-underground').
870
+ * Must be unique; throws if already exists.
871
+ * @param options - Region configuration.
872
+ * @returns The created region entity.
873
+ */
874
+ createRegion(id, options) {
875
+ if (this.hasEntity(id)) {
876
+ throw new Error(`createRegion: entity '${id}' already exists`);
877
+ }
878
+ if (options.parentRegionId && !this.hasEntity(options.parentRegionId)) {
879
+ throw new Error(`createRegion: parent region '${options.parentRegionId}' not found`);
880
+ }
881
+ const entity = new if_entity_1.IFEntity(id, entity_types_1.EntityType.REGION, {
882
+ attributes: {
883
+ displayName: options.name,
884
+ name: options.name,
885
+ entityType: entity_types_1.EntityType.REGION,
886
+ },
887
+ });
888
+ entity.add(new regionTrait_1.RegionTrait(options));
889
+ this.entities.set(id, entity);
890
+ return entity;
891
+ }
892
+ /**
893
+ * Assigns a room to a region by setting RoomTrait.regionId.
894
+ *
895
+ * @param roomId - ID of the room entity.
896
+ * @param regionId - ID of the region entity (must exist and have RegionTrait).
897
+ * @throws If room not found, region not found, or types are wrong.
898
+ */
899
+ assignRoom(roomId, regionId) {
900
+ const room = this.getEntity(roomId);
901
+ if (!room) {
902
+ throw new Error(`assignRoom: room '${roomId}' not found`);
903
+ }
904
+ const roomTrait = room.get(trait_types_1.TraitType.ROOM);
905
+ if (!roomTrait) {
906
+ throw new Error(`assignRoom: entity '${roomId}' does not have RoomTrait`);
907
+ }
908
+ const region = this.getEntity(regionId);
909
+ if (!region) {
910
+ throw new Error(`assignRoom: region '${regionId}' not found`);
911
+ }
912
+ if (!region.hasTrait(trait_types_1.TraitType.REGION)) {
913
+ throw new Error(`assignRoom: entity '${regionId}' is not a region`);
914
+ }
915
+ roomTrait.regionId = regionId;
916
+ }
917
+ /**
918
+ * Tests whether an entity (or its containing room) is in a region,
919
+ * traversing the parent region hierarchy.
920
+ *
921
+ * @param entityId - The entity to test. If it's a room, checks its regionId.
922
+ * Otherwise, resolves the entity's containing room first.
923
+ * @param regionId - The region to test membership against.
924
+ * @returns true if the entity is in the region or any child of it.
925
+ */
926
+ isInRegion(entityId, regionId) {
927
+ const entity = this.getEntity(entityId);
928
+ if (!entity)
929
+ return false;
930
+ // If the entity is a room, use its regionId directly.
931
+ // Otherwise, resolve the containing room.
932
+ let roomRegionId;
933
+ if (entity.type === entity_types_1.EntityType.ROOM) {
934
+ roomRegionId = entity.get(trait_types_1.TraitType.ROOM)?.regionId;
935
+ }
936
+ else {
937
+ const room = this.getContainingRoom(entityId);
938
+ if (!room)
939
+ return false;
940
+ roomRegionId = room.get(trait_types_1.TraitType.ROOM)?.regionId;
941
+ }
942
+ if (!roomRegionId)
943
+ return false;
944
+ // Walk up the parent chain from the room's region
945
+ return this.regionAncestryIncludes(roomRegionId, regionId);
946
+ }
947
+ /**
948
+ * Computes which regions are exited and entered when moving between rooms.
949
+ * Exit list is innermost-first; entry list is outermost-first.
950
+ *
951
+ * @param fromRoomId - The source room entity ID.
952
+ * @param toRoomId - The destination room entity ID.
953
+ * @returns Region IDs exited and entered. Both empty if same region or no regions.
954
+ */
955
+ getRegionCrossings(fromRoomId, toRoomId) {
956
+ const fromRoom = this.getEntity(fromRoomId);
957
+ const toRoom = this.getEntity(toRoomId);
958
+ const fromChain = fromRoom
959
+ ? this.getRegionAncestry(fromRoom.get(trait_types_1.TraitType.ROOM)?.regionId)
960
+ : [];
961
+ const toChain = toRoom
962
+ ? this.getRegionAncestry(toRoom.get(trait_types_1.TraitType.ROOM)?.regionId)
963
+ : [];
964
+ // Convert to sets for fast lookup
965
+ const fromSet = new Set(fromChain);
966
+ const toSet = new Set(toChain);
967
+ // Exited: regions in fromChain but not in toChain (innermost first — natural order)
968
+ const exited = fromChain.filter(id => !toSet.has(id));
969
+ // Entered: regions in toChain but not in fromChain (outermost first — reverse natural order)
970
+ const entered = toChain.filter(id => !fromSet.has(id)).reverse();
971
+ return { exited, entered };
972
+ }
973
+ // ── Private region helpers ───────────────────────────────────────────
974
+ /**
975
+ * Builds the ancestry chain for a region: [self, parent, grandparent, ...].
976
+ * Returns empty array if regionId is undefined or not found.
977
+ */
978
+ getRegionAncestry(regionId) {
979
+ const chain = [];
980
+ let currentId = regionId;
981
+ const visited = new Set(); // guard against cycles
982
+ while (currentId) {
983
+ if (visited.has(currentId))
984
+ break;
985
+ visited.add(currentId);
986
+ const region = this.getEntity(currentId);
987
+ if (!region)
988
+ break;
989
+ const trait = region.get(trait_types_1.TraitType.REGION);
990
+ if (!trait)
991
+ break;
992
+ chain.push(currentId);
993
+ currentId = trait.parentRegionId;
994
+ }
995
+ return chain;
996
+ }
997
+ /**
998
+ * Checks whether a region ancestry chain includes a target region.
999
+ */
1000
+ regionAncestryIncludes(startRegionId, targetRegionId) {
1001
+ let currentId = startRegionId;
1002
+ const visited = new Set();
1003
+ while (currentId) {
1004
+ if (currentId === targetRegionId)
1005
+ return true;
1006
+ if (visited.has(currentId))
1007
+ return false;
1008
+ visited.add(currentId);
1009
+ const region = this.getEntity(currentId);
1010
+ if (!region)
1011
+ return false;
1012
+ const trait = region.get(trait_types_1.TraitType.REGION);
1013
+ if (!trait)
1014
+ return false;
1015
+ currentId = trait.parentRegionId;
1016
+ }
1017
+ return false;
1018
+ }
1019
+ // ── Scene Management (ADR-149) ───────────────────────────────────
1020
+ /**
1021
+ * Creates a scene entity with SceneTrait and registers condition closures.
1022
+ *
1023
+ * @param id - Explicit entity ID (e.g., 'scene-flood'). Must be unique.
1024
+ * @param options - Scene name, begin/end conditions, recurring flag.
1025
+ * @returns The created scene entity.
1026
+ */
1027
+ createScene(id, options) {
1028
+ if (this.hasEntity(id)) {
1029
+ throw new Error(`createScene: entity '${id}' already exists`);
1030
+ }
1031
+ const entity = new if_entity_1.IFEntity(id, entity_types_1.EntityType.SCENE, {
1032
+ attributes: {
1033
+ displayName: options.name,
1034
+ name: options.name,
1035
+ entityType: entity_types_1.EntityType.SCENE,
1036
+ },
1037
+ });
1038
+ entity.add(new sceneTrait_1.SceneTrait({
1039
+ name: options.name,
1040
+ recurring: options.recurring,
1041
+ }));
1042
+ this.entities.set(id, entity);
1043
+ // Store condition closures separately (not serializable)
1044
+ this.sceneConditions.set(id, {
1045
+ begin: options.begin,
1046
+ end: options.end,
1047
+ });
1048
+ return entity;
1049
+ }
1050
+ /**
1051
+ * Retrieves the condition closures for a scene.
1052
+ * Returns undefined if the scene has no registered conditions
1053
+ * (e.g., after save/restore before re-registration).
1054
+ *
1055
+ * @param sceneId - The scene entity ID.
1056
+ */
1057
+ getSceneConditions(sceneId) {
1058
+ return this.sceneConditions.get(sceneId);
1059
+ }
1060
+ /**
1061
+ * Returns all registered scene conditions. Used by the engine's
1062
+ * scene evaluation phase to iterate over scenes each turn.
1063
+ */
1064
+ getAllSceneConditions() {
1065
+ return this.sceneConditions;
1066
+ }
1067
+ /**
1068
+ * Returns true if the scene is currently in the 'active' state.
1069
+ *
1070
+ * @param sceneId - The scene entity ID.
1071
+ */
1072
+ isSceneActive(sceneId) {
1073
+ const entity = this.getEntity(sceneId);
1074
+ if (!entity)
1075
+ return false;
1076
+ return entity.get(trait_types_1.TraitType.SCENE)?.state === 'active';
1077
+ }
1078
+ /**
1079
+ * Returns true if the scene has reached the 'ended' state.
1080
+ * For recurring scenes, this is true only while in the 'ended' state
1081
+ * (resets to 'waiting' when the scene re-activates).
1082
+ *
1083
+ * @param sceneId - The scene entity ID.
1084
+ */
1085
+ hasSceneEnded(sceneId) {
1086
+ const entity = this.getEntity(sceneId);
1087
+ if (!entity)
1088
+ return false;
1089
+ return entity.get(trait_types_1.TraitType.SCENE)?.state === 'ended';
1090
+ }
1091
+ /**
1092
+ * Returns true if the scene has ever been active (beganAtTurn is set).
1093
+ *
1094
+ * @param sceneId - The scene entity ID.
1095
+ */
1096
+ hasSceneHappened(sceneId) {
1097
+ const entity = this.getEntity(sceneId);
1098
+ if (!entity)
1099
+ return false;
1100
+ return entity.get(trait_types_1.TraitType.SCENE)?.beganAtTurn !== undefined;
1101
+ }
875
1102
  }
876
1103
  exports.WorldModel = WorldModel;
877
1104
  //# sourceMappingURL=WorldModel.js.map