@sharpee/world-model 0.9.100 → 0.9.103

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sharpee/world-model",
3
- "version": "0.9.100",
3
+ "version": "0.9.103",
4
4
  "description": "World model for Sharpee IF platform - entities, traits, and behaviors",
5
5
  "main": "./index.js",
6
6
  "types": "./index.d.ts",
@@ -12,8 +12,8 @@
12
12
  }
13
13
  },
14
14
  "dependencies": {
15
- "@sharpee/core": "^0.9.100",
16
- "@sharpee/if-domain": "^0.9.100"
15
+ "@sharpee/core": "^0.9.103",
16
+ "@sharpee/if-domain": "^0.9.103"
17
17
  },
18
18
  "keywords": [
19
19
  "interactive-fiction",
@@ -1,11 +1,28 @@
1
+ /**
2
+ * AuthorModel — unrestricted world model access for authoring and setup.
3
+ *
4
+ * Public interface: Implements IWorldModel. Entity creation and movement
5
+ * bypass validation. All other methods delegate to the backing WorldModel.
6
+ *
7
+ * Owner context: packages/world-model. Used during initializeWorld() for
8
+ * setup that requires bypassing game rules (placing items in closed
9
+ * containers, etc.).
10
+ */
1
11
  import { IFEntity } from '../entities/if-entity';
2
12
  import { TraitType } from '../traits/trait-types';
3
13
  import { SpatialIndex } from './SpatialIndex';
4
14
  import { ITrait } from '../traits/trait';
5
15
  import { ICapabilityStore } from './capabilities';
6
- import type { IWorldModel } from './WorldModel';
16
+ import type { IWorldModel, EventHandler, EventValidator, EventPreviewer, EventChainHandler, ChainEventOptions } from './WorldModel';
17
+ import type { ScoreEntry } from './ScoreLedger';
18
+ import type { ISemanticEvent } from "../../core/index";
19
+ import type { WorldState, ContentsOptions, WorldChange, IEventProcessorWiring, GamePrompt, IGrammarVocabularyProvider } from "../../if-domain/index";
20
+ import type { DirectionType } from '../constants/directions';
21
+ import type { ScopeRegistry } from '../scope/scope-registry';
22
+ import type { IScopeRule } from '../scope/scope-rule';
23
+ import type { ICapabilityData, ICapabilityRegistration } from './capabilities';
7
24
  /**
8
- * Data store shared between WorldModel and AuthorModel
25
+ * Data store shared between WorldModel and AuthorModel.
9
26
  */
10
27
  export interface IDataStore {
11
28
  entities: Map<string, IFEntity>;
@@ -17,7 +34,7 @@ export interface IDataStore {
17
34
  capabilities: ICapabilityStore;
18
35
  }
19
36
  /**
20
- * Item specification for bulk creation
37
+ * Item specification for bulk creation.
21
38
  */
22
39
  export interface IItemSpec {
23
40
  name: string;
@@ -27,125 +44,125 @@ export interface IItemSpec {
27
44
  }
28
45
  /**
29
46
  * AuthorModel provides unrestricted access to the world state for authoring,
30
- * testing, and world setup. It bypasses all validation rules and does not
31
- * emit events (unless explicitly requested).
32
- *
33
- * Use AuthorModel when:
34
- * - Setting up initial world state
35
- * - Populating containers (even closed ones)
36
- * - Loading saved games
37
- * - Writing tests
38
- * - Implementing special mechanics (magic, teleportation, etc.)
47
+ * testing, and world setup. It bypasses validation rules for entity creation
48
+ * and movement. All other IWorldModel methods delegate to the backing WorldModel.
39
49
  *
40
50
  * @example
41
51
  * ```typescript
42
- * const author = new AuthorModel(world.getDataStore());
43
- * const cabinet = author.createEntity('Medicine Cabinet', 'container');
44
- * cabinet.add(new OpenableTrait({ isOpen: false }));
45
- *
46
- * // Can place items in closed container!
52
+ * const author = new AuthorModel(world.getDataStore(), world);
47
53
  * const medicine = author.createEntity('Aspirin', 'item');
48
- * author.moveEntity(medicine.id, cabinet.id); // Works even though closed
54
+ * author.moveEntity(medicine.id, closedCabinet.id); // Works even though closed
49
55
  * ```
50
56
  */
51
- export declare class AuthorModel {
57
+ export declare class AuthorModel implements IWorldModel {
52
58
  private dataStore;
53
- private worldModel?;
54
- private eventHandlers;
55
- constructor(dataStore: IDataStore, worldModel?: IWorldModel);
59
+ private worldModel;
60
+ constructor(dataStore: IDataStore, worldModel: IWorldModel);
56
61
  /**
57
- * Get the shared data store. This allows creating a WorldModel
58
- * that shares the same state.
62
+ * Get the shared data store.
59
63
  */
60
64
  getDataStore(): IDataStore;
61
65
  /**
62
- * Create a new entity without any validation.
63
- * @param name Display name for the entity
64
- * @param type Entity type (room, item, actor, etc.)
65
- * @param recordEvent If true, emits an 'author:entity:created' event
66
- */
67
- createEntity(name: string, type?: string, recordEvent?: boolean): IFEntity;
68
- /**
69
- * Remove an entity without validation.
70
- * @param entityId ID of entity to remove
71
- * @param recordEvent If true, emits an 'author:entity:removed' event
72
- */
73
- removeEntity(entityId: string, recordEvent?: boolean): void;
74
- /**
75
- * Move an entity to a new location without any validation.
76
- * Can move entities into closed containers, locked containers, or any location.
77
- * @param entityId ID of entity to move
78
- * @param targetId ID of target location (null to remove from world)
79
- * @param recordEvent If true, emits an 'author:entity:moved' event
80
- */
81
- moveEntity(entityId: string, targetId: string | null, recordEvent?: boolean): void;
82
- /**
83
- * Get an entity by ID
84
- */
85
- getEntity(entityId: string): IFEntity | undefined;
86
- /**
87
- * Set an entity property directly without validation
88
- */
89
- setEntityProperty(entityId: string, property: string, value: any, recordEvent?: boolean): void;
90
- /**
91
- * Add a trait to an entity without validation
92
- */
93
- addTrait(entityId: string, trait: ITrait, recordEvent?: boolean): void;
94
- /**
95
- * Remove a trait from an entity without validation
96
- */
97
- removeTrait(entityId: string, traitType: TraitType, recordEvent?: boolean): void;
98
- /**
99
- * Move multiple entities to a container in one operation
100
- */
101
- populate(containerId: string, entityIds: string[], recordEvent?: boolean): void;
102
- /**
103
- * Create a bidirectional connection between two rooms
104
- */
105
- connect(room1Id: string, room2Id: string, direction: string, recordEvent?: boolean): void;
106
- /**
107
- * Fill a container with items based on specifications
108
- */
109
- fillContainer(containerId: string, itemSpecs: IItemSpec[], recordEvent?: boolean): void;
110
- /**
111
- * Place an actor at a location (convenience method)
112
- */
113
- placeActor(actorId: string, locationId: string, recordEvent?: boolean): void;
114
- /**
115
- * Set up a container with common properties
116
- */
117
- setupContainer(containerId: string, isOpen?: boolean, isLocked?: boolean, keyId?: string, recordEvent?: boolean): void;
118
- /**
119
- * Set a world state value directly
120
- */
121
- setStateValue(key: string, value: any, recordEvent?: boolean): void;
122
- /**
123
- * Set the player entity
124
- */
125
- setPlayer(entityId: string, recordEvent?: boolean): void;
66
+ * Create a new entity without validation.
67
+ *
68
+ * @param name - Display name for the entity
69
+ * @param type - Entity type (room, item, actor, etc.)
70
+ * @returns The created entity
71
+ */
72
+ createEntity(name: string, type?: string): IFEntity;
73
+ /**
74
+ * Move an entity without validation. Can move into closed/locked containers.
75
+ *
76
+ * @param entityId - ID of entity to move
77
+ * @param targetId - ID of target location (null to remove from world)
78
+ * @returns Always true (no validation to fail)
79
+ */
80
+ moveEntity(entityId: string, targetId: string | null): boolean;
81
+ getEntity(id: string): IFEntity | undefined;
82
+ hasEntity(id: string): boolean;
83
+ removeEntity(id: string): boolean;
84
+ getAllEntities(): IFEntity[];
85
+ updateEntity(entityId: string, updater: (entity: IFEntity) => void): void;
86
+ getLocation(entityId: string): string | undefined;
87
+ getContents(containerId: string, options?: ContentsOptions): IFEntity[];
88
+ canMoveEntity(entityId: string, targetId: string | null): boolean;
89
+ getContainingRoom(entityId: string): IFEntity | undefined;
90
+ getAllContents(entityId: string, options?: ContentsOptions): IFEntity[];
91
+ getState(): WorldState;
92
+ setState(state: WorldState): void;
93
+ getStateValue(key: string): any;
94
+ setStateValue(key: string, value: any): void;
95
+ getPrompt(): GamePrompt;
96
+ setPrompt(prompt: GamePrompt): void;
97
+ findByTrait(traitType: TraitType): IFEntity[];
98
+ findByType(entityType: string): IFEntity[];
99
+ findWhere(predicate: (entity: IFEntity) => boolean): IFEntity[];
100
+ getVisible(observerId: string): IFEntity[];
101
+ getInScope(observerId: string): IFEntity[];
102
+ canSee(observerId: string, targetId: string): boolean;
103
+ getRelated(entityId: string, relationshipType: string): string[];
104
+ areRelated(entity1Id: string, entity2Id: string, relationshipType: string): boolean;
105
+ addRelationship(entity1Id: string, entity2Id: string, relationshipType: string): void;
106
+ removeRelationship(entity1Id: string, entity2Id: string, relationshipType: string): void;
107
+ getTotalWeight(entityId: string): number;
108
+ wouldCreateLoop(entityId: string, targetId: string): boolean;
109
+ findPath(fromRoomId: string, toRoomId: string): string[] | null;
110
+ getPlayer(): IFEntity | undefined;
111
+ setPlayer(entityId: string): void;
112
+ connectRooms(room1Id: string, room2Id: string, direction: DirectionType): void;
113
+ createDoor(displayName: string, opts: {
114
+ room1Id: string;
115
+ room2Id: string;
116
+ direction: DirectionType;
117
+ description?: string;
118
+ aliases?: string[];
119
+ isOpen?: boolean;
120
+ isLocked?: boolean;
121
+ keyId?: string;
122
+ }): IFEntity;
123
+ registerCapability(name: string, registration: Partial<ICapabilityRegistration>): void;
124
+ updateCapability(name: string, data: Partial<ICapabilityData>): void;
125
+ getCapability(name: string): ICapabilityData | undefined;
126
+ hasCapability(name: string): boolean;
127
+ awardScore(id: string, points: number, description: string): boolean;
128
+ revokeScore(id: string): boolean;
129
+ hasScore(id: string): boolean;
130
+ getScore(): number;
131
+ getScoreEntries(): ScoreEntry[];
132
+ setMaxScore(max: number): void;
133
+ getMaxScore(): number;
134
+ toJSON(): string;
135
+ loadJSON(json: string): void;
136
+ clear(): void;
137
+ registerEventHandler(eventType: string, handler: EventHandler): void;
138
+ unregisterEventHandler(eventType: string): void;
139
+ registerEventValidator(eventType: string, validator: EventValidator): void;
140
+ registerEventPreviewer(eventType: string, previewer: EventPreviewer): void;
141
+ connectEventProcessor(wiring: IEventProcessorWiring): void;
142
+ chainEvent(triggerType: string, handler: EventChainHandler, options?: ChainEventOptions): void;
143
+ applyEvent(event: ISemanticEvent): void;
144
+ canApplyEvent(event: ISemanticEvent): boolean;
145
+ previewEvent(event: ISemanticEvent): WorldChange[];
146
+ getAppliedEvents(): ISemanticEvent[];
147
+ getEventsSince(timestamp: number): ISemanticEvent[];
148
+ clearEventHistory(): void;
149
+ getScopeRegistry(): ScopeRegistry;
150
+ addScopeRule(rule: IScopeRule): void;
151
+ removeScopeRule(ruleId: string): boolean;
152
+ evaluateScope(actorId: string, actionId?: string): string[];
153
+ getGrammarVocabularyProvider(): IGrammarVocabularyProvider;
126
154
  /**
127
- * Clear all world data
155
+ * Move multiple entities to a container in one operation.
128
156
  */
129
- clear(recordEvent?: boolean): void;
157
+ populate(containerId: string, entityIds: string[]): void;
130
158
  /**
131
- * Import world data from a serialized format
159
+ * Add a trait to an entity.
132
160
  */
133
- import(data: any, recordEvent?: boolean): void;
161
+ addTrait(entityId: string, trait: ITrait): void;
134
162
  /**
135
- * Generate an ID for a new entity
163
+ * Remove a trait from an entity.
136
164
  */
165
+ removeTrait(entityId: string, traitType: TraitType): void;
137
166
  private generateId;
138
- /**
139
- * Emit an author event if event recording is enabled
140
- */
141
- private emitEvent;
142
- /**
143
- * Register an event handler for author events
144
- */
145
- registerEventHandler(eventType: string, handler: (event: any) => void): void;
146
- /**
147
- * Unregister an event handler
148
- */
149
- unregisterEventHandler(eventType: string): void;
150
167
  }
151
168
  //# sourceMappingURL=AuthorModel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuthorModel.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/world-model/src/world/AuthorModel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AuthorModel.d.ts","sourceRoot":"","sources":["../../../../../../repos/sharpee/packages/world-model/src/world/AuthorModel.ts"],"names":[],"mappings":"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"}