@sharpee/if-domain 0.9.60-beta
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/README.md +71 -0
- package/dist/changes.d.ts +8 -0
- package/dist/changes.d.ts.map +1 -0
- package/dist/changes.js +6 -0
- package/dist/changes.js.map +1 -0
- package/dist/contracts.d.ts +270 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +6 -0
- package/dist/contracts.js.map +1 -0
- package/dist/events.d.ts +124 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +123 -0
- package/dist/events.js.map +1 -0
- package/dist/grammar/grammar-builder.d.ts +507 -0
- package/dist/grammar/grammar-builder.d.ts.map +1 -0
- package/dist/grammar/grammar-builder.js +47 -0
- package/dist/grammar/grammar-builder.js.map +1 -0
- package/dist/grammar/grammar-engine.d.ts +65 -0
- package/dist/grammar/grammar-engine.d.ts.map +1 -0
- package/dist/grammar/grammar-engine.js +370 -0
- package/dist/grammar/grammar-engine.js.map +1 -0
- package/dist/grammar/index.d.ts +10 -0
- package/dist/grammar/index.d.ts.map +1 -0
- package/dist/grammar/index.js +26 -0
- package/dist/grammar/index.js.map +1 -0
- package/dist/grammar/pattern-compiler.d.ts +38 -0
- package/dist/grammar/pattern-compiler.d.ts.map +1 -0
- package/dist/grammar/pattern-compiler.js +22 -0
- package/dist/grammar/pattern-compiler.js.map +1 -0
- package/dist/grammar/scope-builder.d.ts +26 -0
- package/dist/grammar/scope-builder.d.ts.map +1 -0
- package/dist/grammar/scope-builder.js +67 -0
- package/dist/grammar/scope-builder.js.map +1 -0
- package/dist/grammar/vocabulary-provider.d.ts +163 -0
- package/dist/grammar/vocabulary-provider.d.ts.map +1 -0
- package/dist/grammar/vocabulary-provider.js +89 -0
- package/dist/grammar/vocabulary-provider.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/language-provider.d.ts +106 -0
- package/dist/language-provider.d.ts.map +1 -0
- package/dist/language-provider.js +14 -0
- package/dist/language-provider.js.map +1 -0
- package/dist/parser-contracts/index.d.ts +10 -0
- package/dist/parser-contracts/index.d.ts.map +1 -0
- package/dist/parser-contracts/index.js +26 -0
- package/dist/parser-contracts/index.js.map +1 -0
- package/dist/parser-contracts/parser-factory.d.ts +46 -0
- package/dist/parser-contracts/parser-factory.d.ts.map +1 -0
- package/dist/parser-contracts/parser-factory.js +78 -0
- package/dist/parser-contracts/parser-factory.js.map +1 -0
- package/dist/parser-contracts/parser-internals.d.ts +125 -0
- package/dist/parser-contracts/parser-internals.d.ts.map +1 -0
- package/dist/parser-contracts/parser-internals.js +26 -0
- package/dist/parser-contracts/parser-internals.js.map +1 -0
- package/dist/parser-contracts/parser-types.d.ts +128 -0
- package/dist/parser-contracts/parser-types.d.ts.map +1 -0
- package/dist/parser-contracts/parser-types.js +9 -0
- package/dist/parser-contracts/parser-types.js.map +1 -0
- package/dist/parser-language-provider.d.ts +158 -0
- package/dist/parser-language-provider.d.ts.map +1 -0
- package/dist/parser-language-provider.js +10 -0
- package/dist/parser-language-provider.js.map +1 -0
- package/dist/sequencing.d.ts +53 -0
- package/dist/sequencing.d.ts.map +1 -0
- package/dist/sequencing.js +6 -0
- package/dist/sequencing.js.map +1 -0
- package/dist/vocabulary-contracts/index.d.ts +7 -0
- package/dist/vocabulary-contracts/index.d.ts.map +1 -0
- package/dist/vocabulary-contracts/index.js +23 -0
- package/dist/vocabulary-contracts/index.js.map +1 -0
- package/dist/vocabulary-contracts/vocabulary-adapters.d.ts +19 -0
- package/dist/vocabulary-contracts/vocabulary-adapters.d.ts.map +1 -0
- package/dist/vocabulary-contracts/vocabulary-adapters.js +73 -0
- package/dist/vocabulary-contracts/vocabulary-adapters.js.map +1 -0
- package/dist/vocabulary-contracts/vocabulary-registry.d.ts +98 -0
- package/dist/vocabulary-contracts/vocabulary-registry.d.ts.map +1 -0
- package/dist/vocabulary-contracts/vocabulary-registry.js +383 -0
- package/dist/vocabulary-contracts/vocabulary-registry.js.map +1 -0
- package/dist/vocabulary-contracts/vocabulary-types.d.ts +240 -0
- package/dist/vocabulary-contracts/vocabulary-types.d.ts.map +1 -0
- package/dist/vocabulary-contracts/vocabulary-types.js +64 -0
- package/dist/vocabulary-contracts/vocabulary-types.js.map +1 -0
- package/package.json +56 -0
package/README.md
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# @sharpee/if-domain
|
|
2
|
+
|
|
3
|
+
Core domain model and contracts for the Sharpee Interactive Fiction Platform.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
This package contains the shared domain types, events, and contracts that define the Interactive Fiction domain model. It serves as the single source of truth for domain concepts used across the Sharpee platform.
|
|
8
|
+
|
|
9
|
+
## Contents
|
|
10
|
+
|
|
11
|
+
### Events (`events.ts`)
|
|
12
|
+
- `IFEvents` - Standard interactive fiction event constants
|
|
13
|
+
- `IFEventType` - Type-safe event type
|
|
14
|
+
- `IFEventCategory` - Event categorization for filtering and handling
|
|
15
|
+
|
|
16
|
+
### Contracts (`contracts.ts`)
|
|
17
|
+
- `EventHandler` - Function type for handling events
|
|
18
|
+
- `EventValidator` - Function type for validating events
|
|
19
|
+
- `EventPreviewer` - Function type for previewing event effects
|
|
20
|
+
- `WorldChange` - Interface for world state changes
|
|
21
|
+
- `ProcessedEvents` - Result of event processing
|
|
22
|
+
- `ProcessorOptions` - Event processing configuration
|
|
23
|
+
|
|
24
|
+
### Changes (`changes.ts`)
|
|
25
|
+
- `WorldChangeType` - Types of world state changes
|
|
26
|
+
- `ContentsOptions` - Options for querying entity contents
|
|
27
|
+
- `FindOptions` - Options for finding entities
|
|
28
|
+
- `WorldConfig` - World behavior configuration
|
|
29
|
+
- `WorldState` - World state storage interface
|
|
30
|
+
|
|
31
|
+
### Sequencing (`sequencing.ts`)
|
|
32
|
+
- `TurnPhase` - Phases of turn execution
|
|
33
|
+
- `EventSequence` - Sequencing information for events
|
|
34
|
+
- `SequencedEvent` - Event with sequence information
|
|
35
|
+
- `EventSequencer` - Interface for event sequencing
|
|
36
|
+
|
|
37
|
+
## Usage
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
import { IFEvents, EventHandler, WorldChange } from '@sharpee/if-domain';
|
|
41
|
+
|
|
42
|
+
// Use event constants
|
|
43
|
+
const moveEvent = {
|
|
44
|
+
type: IFEvents.ACTOR_MOVED,
|
|
45
|
+
// ...
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
// Implement event handlers
|
|
49
|
+
const handleMove: EventHandler = (event, world) => {
|
|
50
|
+
// Handle the event
|
|
51
|
+
};
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Design Principles
|
|
55
|
+
|
|
56
|
+
1. **Domain-Driven Design**: All types represent domain concepts, not technical implementations
|
|
57
|
+
2. **Single Source of Truth**: Event constants and core types defined once
|
|
58
|
+
3. **No Implementation**: Pure type definitions with no runtime code (except constants)
|
|
59
|
+
4. **Minimal Dependencies**: Only depends on @sharpee/core for base types
|
|
60
|
+
|
|
61
|
+
## Dependencies
|
|
62
|
+
|
|
63
|
+
- `@sharpee/core` - Core semantic event types
|
|
64
|
+
|
|
65
|
+
## Build Order
|
|
66
|
+
|
|
67
|
+
This package must be built after `core` but before:
|
|
68
|
+
- `world-model`
|
|
69
|
+
- `event-processor`
|
|
70
|
+
- `engine`
|
|
71
|
+
- `stdlib`
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changes.d.ts","sourceRoot":"","sources":["../src/changes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC"}
|
package/dist/changes.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changes.js","sourceRoot":"","sources":["../src/changes.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Domain contracts for world state changes and event processing
|
|
3
|
+
*/
|
|
4
|
+
import { ISemanticEvent, IEntity } from '@sharpee/core';
|
|
5
|
+
/**
|
|
6
|
+
* Represents a change to the world state
|
|
7
|
+
*/
|
|
8
|
+
export interface WorldChange {
|
|
9
|
+
type: 'move' | 'create' | 'delete' | 'modify' | 'relate' | 'unrelate';
|
|
10
|
+
entityId: string;
|
|
11
|
+
field?: string;
|
|
12
|
+
oldValue?: unknown;
|
|
13
|
+
newValue?: unknown;
|
|
14
|
+
details?: Record<string, unknown>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Configuration for world model behavior
|
|
18
|
+
*/
|
|
19
|
+
export interface WorldConfig {
|
|
20
|
+
enableSpatialIndex?: boolean;
|
|
21
|
+
maxDepth?: number;
|
|
22
|
+
strictMode?: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* World state storage
|
|
26
|
+
*/
|
|
27
|
+
export interface WorldState {
|
|
28
|
+
[key: string]: any;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Options for finding entities
|
|
32
|
+
*/
|
|
33
|
+
export interface FindOptions {
|
|
34
|
+
includeScenery?: boolean;
|
|
35
|
+
includeInvisible?: boolean;
|
|
36
|
+
maxDepth?: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Options for getting contents
|
|
40
|
+
*/
|
|
41
|
+
export interface ContentsOptions {
|
|
42
|
+
recursive?: boolean;
|
|
43
|
+
includeWorn?: boolean;
|
|
44
|
+
visibleOnly?: boolean;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Result of processing events
|
|
48
|
+
*/
|
|
49
|
+
export interface ProcessedEvents {
|
|
50
|
+
/**
|
|
51
|
+
* Events that were successfully applied
|
|
52
|
+
*/
|
|
53
|
+
applied: ISemanticEvent[];
|
|
54
|
+
/**
|
|
55
|
+
* Events that failed validation
|
|
56
|
+
*/
|
|
57
|
+
failed: Array<{
|
|
58
|
+
event: ISemanticEvent;
|
|
59
|
+
reason: string;
|
|
60
|
+
}>;
|
|
61
|
+
/**
|
|
62
|
+
* World changes that occurred
|
|
63
|
+
*/
|
|
64
|
+
changes: WorldChange[];
|
|
65
|
+
/**
|
|
66
|
+
* Events generated as reactions to the processed events
|
|
67
|
+
*/
|
|
68
|
+
reactions: ISemanticEvent[];
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Options for event processing
|
|
72
|
+
*/
|
|
73
|
+
export interface ProcessorOptions {
|
|
74
|
+
/**
|
|
75
|
+
* Whether to validate events before applying them
|
|
76
|
+
*/
|
|
77
|
+
validate?: boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Whether to preview changes before applying
|
|
80
|
+
*/
|
|
81
|
+
preview?: boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Maximum depth for reaction processing
|
|
84
|
+
*/
|
|
85
|
+
maxReactionDepth?: number;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Simple command input for actions
|
|
89
|
+
*
|
|
90
|
+
* This is what actions receive - no parser internals, just the essentials.
|
|
91
|
+
* The rich parsing data stays in world-model where it belongs.
|
|
92
|
+
*/
|
|
93
|
+
export interface CommandInput {
|
|
94
|
+
/** The action being executed */
|
|
95
|
+
actionId: string;
|
|
96
|
+
/** Direct object if present */
|
|
97
|
+
directObject?: EntityReference;
|
|
98
|
+
/** Indirect object if present */
|
|
99
|
+
indirectObject?: EntityReference;
|
|
100
|
+
/** Preposition used (if any) - raw text for backward compatibility */
|
|
101
|
+
preposition?: string;
|
|
102
|
+
/** Semantic properties derived from grammar */
|
|
103
|
+
semantics?: CommandSemantics;
|
|
104
|
+
/** Original input text for reference */
|
|
105
|
+
inputText: string;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Semantic properties derived from grammar rules
|
|
109
|
+
*
|
|
110
|
+
* These replace the need for actions to inspect verb.text, preposition variations,
|
|
111
|
+
* or modify parsed commands. The grammar rules provide normalized semantic meaning.
|
|
112
|
+
*/
|
|
113
|
+
export interface CommandSemantics {
|
|
114
|
+
/** How the action should be performed */
|
|
115
|
+
manner?: 'normal' | 'careful' | 'careless' | 'forceful' | 'stealthy' | 'quick';
|
|
116
|
+
/** Spatial relationship (normalized from preposition variations) */
|
|
117
|
+
spatialRelation?: 'in' | 'on' | 'under' | 'behind' | 'beside' | 'above' | 'below';
|
|
118
|
+
/** Movement direction (normalized from direction variations) */
|
|
119
|
+
direction?: 'north' | 'south' | 'east' | 'west' | 'up' | 'down' | 'northeast' | 'northwest' | 'southeast' | 'southwest' | 'in' | 'out';
|
|
120
|
+
/** Whether a preposition was implicit in the grammar */
|
|
121
|
+
implicitPreposition?: boolean;
|
|
122
|
+
/** Whether a direction was implicit */
|
|
123
|
+
implicitDirection?: boolean;
|
|
124
|
+
/** Action-specific semantics */
|
|
125
|
+
custom?: Record<string, any>;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Reference to an entity in a command
|
|
129
|
+
*/
|
|
130
|
+
export interface EntityReference {
|
|
131
|
+
/** The resolved entity */
|
|
132
|
+
entity: IEntity;
|
|
133
|
+
/** The text that matched this entity */
|
|
134
|
+
matchedText: string;
|
|
135
|
+
/** How the entity was referenced */
|
|
136
|
+
referenceType?: 'name' | 'pronoun' | 'definite' | 'indefinite';
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Validation result from an action
|
|
140
|
+
*/
|
|
141
|
+
export interface ValidationResult {
|
|
142
|
+
/** Whether the action can proceed */
|
|
143
|
+
valid: boolean;
|
|
144
|
+
/** Error code if validation failed */
|
|
145
|
+
error?: string;
|
|
146
|
+
/** Parameters for error message formatting */
|
|
147
|
+
params?: Record<string, any>;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Context provided to actions
|
|
151
|
+
*
|
|
152
|
+
* This is the contract for what actions can access.
|
|
153
|
+
* No world-model internals, no parser details.
|
|
154
|
+
*/
|
|
155
|
+
export interface IActionContext {
|
|
156
|
+
/** The player entity */
|
|
157
|
+
readonly player: IEntity;
|
|
158
|
+
/** The player's current location */
|
|
159
|
+
readonly currentLocation: IEntity;
|
|
160
|
+
/** The command being executed */
|
|
161
|
+
readonly command: CommandInput;
|
|
162
|
+
/** The action being executed */
|
|
163
|
+
readonly action: IAction;
|
|
164
|
+
/**
|
|
165
|
+
* Check if an entity is visible to the player
|
|
166
|
+
*/
|
|
167
|
+
canSee(entity: IEntity): boolean;
|
|
168
|
+
/**
|
|
169
|
+
* Check if an entity is reachable by the player
|
|
170
|
+
*/
|
|
171
|
+
canReach(entity: IEntity): boolean;
|
|
172
|
+
/**
|
|
173
|
+
* Check if an entity can be taken by the player
|
|
174
|
+
*/
|
|
175
|
+
canTake(entity: IEntity): boolean;
|
|
176
|
+
/**
|
|
177
|
+
* Check if an entity is in scope for the player
|
|
178
|
+
*/
|
|
179
|
+
isInScope(entity: IEntity): boolean;
|
|
180
|
+
/**
|
|
181
|
+
* Get all visible entities
|
|
182
|
+
*/
|
|
183
|
+
getVisible(): IEntity[];
|
|
184
|
+
/**
|
|
185
|
+
* Get all entities in scope
|
|
186
|
+
*/
|
|
187
|
+
getInScope(): IEntity[];
|
|
188
|
+
/**
|
|
189
|
+
* Get an entity by ID
|
|
190
|
+
*/
|
|
191
|
+
getEntity(entityId: string): IEntity | undefined;
|
|
192
|
+
/**
|
|
193
|
+
* Get an entity's location
|
|
194
|
+
*/
|
|
195
|
+
getEntityLocation(entityId: string): string | undefined;
|
|
196
|
+
/**
|
|
197
|
+
* Get entities contained within an entity
|
|
198
|
+
*/
|
|
199
|
+
getEntityContents(entityId: string): IEntity[];
|
|
200
|
+
/**
|
|
201
|
+
* Get the room containing an entity
|
|
202
|
+
*/
|
|
203
|
+
getContainingRoom(entityId: string): IEntity | undefined;
|
|
204
|
+
/**
|
|
205
|
+
* Get a world capability (scoring, etc.)
|
|
206
|
+
*/
|
|
207
|
+
getWorldCapability(name: string): any;
|
|
208
|
+
/**
|
|
209
|
+
* Move an entity to a new location
|
|
210
|
+
*/
|
|
211
|
+
moveEntity(entityId: string, newLocationId: string): boolean;
|
|
212
|
+
/**
|
|
213
|
+
* Create an event
|
|
214
|
+
*/
|
|
215
|
+
event(type: string, data: any): ISemanticEvent;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Action contract
|
|
219
|
+
*
|
|
220
|
+
* Actions implement game verbs. They validate and execute commands.
|
|
221
|
+
*/
|
|
222
|
+
export interface IAction {
|
|
223
|
+
/** Unique identifier */
|
|
224
|
+
id: string;
|
|
225
|
+
/** Validate if the action can be executed */
|
|
226
|
+
validate(context: IActionContext): ValidationResult;
|
|
227
|
+
/** Execute the action and return events */
|
|
228
|
+
execute(context: IActionContext): ISemanticEvent[];
|
|
229
|
+
/** Required message IDs for this action */
|
|
230
|
+
requiredMessages?: string[];
|
|
231
|
+
/** Optional description for help/documentation */
|
|
232
|
+
descriptionMessageId?: string;
|
|
233
|
+
/** Optional examples for help/documentation */
|
|
234
|
+
examplesMessageId?: string;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Action registry contract
|
|
238
|
+
*/
|
|
239
|
+
export interface IActionRegistry {
|
|
240
|
+
/** Register an action */
|
|
241
|
+
register(action: IAction): void;
|
|
242
|
+
/** Get an action by ID */
|
|
243
|
+
get(actionId: string): IAction | undefined;
|
|
244
|
+
/** Get all registered actions */
|
|
245
|
+
getAll(): IAction[];
|
|
246
|
+
/** Check if an action exists */
|
|
247
|
+
has(actionId: string): boolean;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Scope levels for entity visibility and accessibility
|
|
251
|
+
*/
|
|
252
|
+
export type ScopeLevel = 'carried' | 'reachable' | 'visible' | 'audible' | 'detectable' | 'out_of_scope';
|
|
253
|
+
/**
|
|
254
|
+
* Basic scope resolver interface for actions
|
|
255
|
+
*/
|
|
256
|
+
export interface IScopeResolver {
|
|
257
|
+
/**
|
|
258
|
+
* Get the highest level of scope for a target entity
|
|
259
|
+
*/
|
|
260
|
+
getScope(actor: IEntity, target: IEntity): ScopeLevel;
|
|
261
|
+
/**
|
|
262
|
+
* Check if actor can see the target
|
|
263
|
+
*/
|
|
264
|
+
canSee(actor: IEntity, target: IEntity): boolean;
|
|
265
|
+
/**
|
|
266
|
+
* Check if actor can physically reach the target
|
|
267
|
+
*/
|
|
268
|
+
canReach(actor: IEntity, target: IEntity): boolean;
|
|
269
|
+
}
|
|
270
|
+
//# sourceMappingURL=contracts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
package/dist/events.d.ts
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standard Interactive Fiction events.
|
|
3
|
+
*
|
|
4
|
+
* These are the core events that can occur in the IF world model.
|
|
5
|
+
* Extensions can add their own events using namespaced identifiers.
|
|
6
|
+
*/
|
|
7
|
+
export declare const IFEvents: {
|
|
8
|
+
readonly TAKEN: "taken";
|
|
9
|
+
readonly DROPPED: "dropped";
|
|
10
|
+
readonly MOVED: "moved";
|
|
11
|
+
readonly EXAMINED: "examined";
|
|
12
|
+
readonly PUT_IN: "put_in";
|
|
13
|
+
readonly PUT_ON: "put_on";
|
|
14
|
+
readonly REMOVED_FROM: "removed_from";
|
|
15
|
+
readonly ITEM_PUT_ON: "item_put_on";
|
|
16
|
+
readonly ITEM_REMOVED_FROM: "item_removed_from";
|
|
17
|
+
readonly CONTAINER_EMPTIED: "container_emptied";
|
|
18
|
+
readonly CONTAINER_NOT_OPEN: "container_not_open";
|
|
19
|
+
readonly NOT_A_CONTAINER: "not_a_container";
|
|
20
|
+
readonly NOT_A_SUPPORTER: "not_a_supporter";
|
|
21
|
+
readonly DOESNT_FIT: "doesnt_fit";
|
|
22
|
+
readonly OPENED: "opened";
|
|
23
|
+
readonly CLOSED: "closed";
|
|
24
|
+
readonly NOT_OPENABLE: "not_openable";
|
|
25
|
+
readonly LOCKED: "locked";
|
|
26
|
+
readonly UNLOCKED: "unlocked";
|
|
27
|
+
readonly CONTAINER_LOCKED: "container_locked";
|
|
28
|
+
readonly CONTAINER_UNLOCKED: "container_unlocked";
|
|
29
|
+
readonly ALREADY_LOCKED: "already_locked";
|
|
30
|
+
readonly ALREADY_UNLOCKED: "already_unlocked";
|
|
31
|
+
readonly UNLOCK_FAILED: "unlock_failed";
|
|
32
|
+
readonly NOT_LOCKABLE: "not_lockable";
|
|
33
|
+
readonly SWITCHED_ON: "switched_on";
|
|
34
|
+
readonly SWITCHED_OFF: "switched_off";
|
|
35
|
+
readonly DEVICE_SWITCHED_ON: "device_switched_on";
|
|
36
|
+
readonly DEVICE_SWITCHED_OFF: "device_switched_off";
|
|
37
|
+
readonly DEVICE_ACTIVATED: "device_activated";
|
|
38
|
+
readonly WORN: "worn";
|
|
39
|
+
readonly REMOVED: "removed";
|
|
40
|
+
readonly EATEN: "eaten";
|
|
41
|
+
readonly DRUNK: "drunk";
|
|
42
|
+
readonly ITEM_EATEN: "item_eaten";
|
|
43
|
+
readonly ITEM_DRUNK: "item_drunk";
|
|
44
|
+
readonly ITEM_DESTROYED: "item_destroyed";
|
|
45
|
+
readonly ACTOR_MOVED: "actor_moved";
|
|
46
|
+
readonly ACTOR_ENTERED: "actor_entered";
|
|
47
|
+
readonly ACTOR_EXITED: "actor_exited";
|
|
48
|
+
readonly MOVEMENT_BLOCKED: "movement_blocked";
|
|
49
|
+
readonly ENTERED: "entered";
|
|
50
|
+
readonly EXITED: "exited";
|
|
51
|
+
readonly EVACUATED: "evacuated";
|
|
52
|
+
readonly CLIMBED: "climbed";
|
|
53
|
+
readonly ROOM_ENTERED: "room_entered";
|
|
54
|
+
readonly ROOM_EXITED: "room_exited";
|
|
55
|
+
readonly ROOM_DESCRIBED: "room_described";
|
|
56
|
+
readonly ROOM_FIRST_ENTERED: "room_first_entered";
|
|
57
|
+
readonly ROOM_ILLUMINATED: "room_illuminated";
|
|
58
|
+
readonly ROOM_DARKENED: "room_darkened";
|
|
59
|
+
readonly NEW_EXIT_REVEALED: "new_exit_revealed";
|
|
60
|
+
readonly LIGHT_CHANGED: "light_changed";
|
|
61
|
+
readonly LOCATION_ILLUMINATED: "location_illuminated";
|
|
62
|
+
readonly LOCATION_DARKENED: "location_darkened";
|
|
63
|
+
readonly FUEL_DEPLETED: "fuel_depleted";
|
|
64
|
+
readonly FUEL_LOW: "fuel_low";
|
|
65
|
+
readonly REFUELED: "refueled";
|
|
66
|
+
readonly READ: "read";
|
|
67
|
+
readonly SEARCHED: "searched";
|
|
68
|
+
readonly LISTENED: "listened";
|
|
69
|
+
readonly SMELLED: "smelled";
|
|
70
|
+
readonly TOUCHED: "touched";
|
|
71
|
+
readonly GIVEN: "given";
|
|
72
|
+
readonly SHOWN: "shown";
|
|
73
|
+
readonly THROWN: "thrown";
|
|
74
|
+
readonly PUSHED: "pushed";
|
|
75
|
+
readonly PULLED: "pulled";
|
|
76
|
+
readonly TURNED: "turned";
|
|
77
|
+
readonly USED: "used";
|
|
78
|
+
readonly CUSTOM_MESSAGE: "custom_message";
|
|
79
|
+
readonly VISIBILITY_CHANGED: "visibility_changed";
|
|
80
|
+
readonly ACTION_PREVENTED: "action_prevented";
|
|
81
|
+
readonly ACTION_FAILED: "action_failed";
|
|
82
|
+
readonly ACTION_SUCCEEDED: "action_succeeded";
|
|
83
|
+
readonly WAITED: "waited";
|
|
84
|
+
readonly SCORE_DISPLAYED: "score_displayed";
|
|
85
|
+
readonly HELP_DISPLAYED: "help_displayed";
|
|
86
|
+
readonly ABOUT_DISPLAYED: "about_displayed";
|
|
87
|
+
readonly SCORE_GAINED: "if.event.score_gained";
|
|
88
|
+
readonly SCORE_LOST: "if.event.score_lost";
|
|
89
|
+
};
|
|
90
|
+
export type IFEventType = typeof IFEvents[keyof typeof IFEvents];
|
|
91
|
+
/**
|
|
92
|
+
* Event categories for filtering and handling
|
|
93
|
+
*/
|
|
94
|
+
export declare const IFEventCategory: {
|
|
95
|
+
readonly MANIPULATION: "manipulation";
|
|
96
|
+
readonly MOVEMENT: "movement";
|
|
97
|
+
readonly STATE_CHANGE: "state_change";
|
|
98
|
+
readonly PERCEPTION: "perception";
|
|
99
|
+
readonly META: "meta";
|
|
100
|
+
};
|
|
101
|
+
export type IFEventCategoryType = typeof IFEventCategory[keyof typeof IFEventCategory];
|
|
102
|
+
/**
|
|
103
|
+
* Event processor wiring types (ADR-086)
|
|
104
|
+
*
|
|
105
|
+
* These types allow WorldModel to wire its event handlers to the engine's
|
|
106
|
+
* EventProcessor without creating a circular dependency.
|
|
107
|
+
*/
|
|
108
|
+
import type { ISemanticEvent } from '@sharpee/core';
|
|
109
|
+
/**
|
|
110
|
+
* Callback for registering a handler with the event processor.
|
|
111
|
+
* The handler returns an array (Effect[] in practice, but typed loosely to avoid circular deps).
|
|
112
|
+
*/
|
|
113
|
+
export type EventProcessorRegisterFn = (eventType: string, handler: (event: ISemanticEvent) => unknown[]) => void;
|
|
114
|
+
/**
|
|
115
|
+
* Interface for wiring WorldModel handlers to EventProcessor.
|
|
116
|
+
* WorldModel receives this during engine initialization.
|
|
117
|
+
*/
|
|
118
|
+
export interface IEventProcessorWiring {
|
|
119
|
+
/**
|
|
120
|
+
* Register a handler with the event processor
|
|
121
|
+
*/
|
|
122
|
+
registerHandler: EventProcessorRegisterFn;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyHX,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,OAAO,QAAQ,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;CAMlB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,OAAO,eAAe,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAEvF;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG,CACrC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,EAAE,KAC1C,IAAI,CAAC;AAEV;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,eAAe,EAAE,wBAAwB,CAAC;CAC3C"}
|
package/dist/events.js
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Standard Interactive Fiction events.
|
|
4
|
+
*
|
|
5
|
+
* These are the core events that can occur in the IF world model.
|
|
6
|
+
* Extensions can add their own events using namespaced identifiers.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.IFEventCategory = exports.IFEvents = void 0;
|
|
10
|
+
exports.IFEvents = {
|
|
11
|
+
// Core object manipulation
|
|
12
|
+
TAKEN: 'taken',
|
|
13
|
+
DROPPED: 'dropped',
|
|
14
|
+
MOVED: 'moved',
|
|
15
|
+
EXAMINED: 'examined',
|
|
16
|
+
// Container/supporter events
|
|
17
|
+
PUT_IN: 'put_in',
|
|
18
|
+
PUT_ON: 'put_on',
|
|
19
|
+
REMOVED_FROM: 'removed_from',
|
|
20
|
+
ITEM_PUT_ON: 'item_put_on',
|
|
21
|
+
ITEM_REMOVED_FROM: 'item_removed_from',
|
|
22
|
+
CONTAINER_EMPTIED: 'container_emptied',
|
|
23
|
+
CONTAINER_NOT_OPEN: 'container_not_open',
|
|
24
|
+
NOT_A_CONTAINER: 'not_a_container',
|
|
25
|
+
NOT_A_SUPPORTER: 'not_a_supporter',
|
|
26
|
+
DOESNT_FIT: 'doesnt_fit',
|
|
27
|
+
// Openable events
|
|
28
|
+
OPENED: 'opened',
|
|
29
|
+
CLOSED: 'closed',
|
|
30
|
+
NOT_OPENABLE: 'not_openable',
|
|
31
|
+
// Lockable events
|
|
32
|
+
LOCKED: 'locked',
|
|
33
|
+
UNLOCKED: 'unlocked',
|
|
34
|
+
CONTAINER_LOCKED: 'container_locked',
|
|
35
|
+
CONTAINER_UNLOCKED: 'container_unlocked',
|
|
36
|
+
ALREADY_LOCKED: 'already_locked',
|
|
37
|
+
ALREADY_UNLOCKED: 'already_unlocked',
|
|
38
|
+
UNLOCK_FAILED: 'unlock_failed',
|
|
39
|
+
NOT_LOCKABLE: 'not_lockable',
|
|
40
|
+
// Switchable events
|
|
41
|
+
SWITCHED_ON: 'switched_on',
|
|
42
|
+
SWITCHED_OFF: 'switched_off',
|
|
43
|
+
DEVICE_SWITCHED_ON: 'device_switched_on',
|
|
44
|
+
DEVICE_SWITCHED_OFF: 'device_switched_off',
|
|
45
|
+
DEVICE_ACTIVATED: 'device_activated',
|
|
46
|
+
// Wearable events
|
|
47
|
+
WORN: 'worn',
|
|
48
|
+
REMOVED: 'removed',
|
|
49
|
+
// Edible events
|
|
50
|
+
EATEN: 'eaten',
|
|
51
|
+
DRUNK: 'drunk',
|
|
52
|
+
ITEM_EATEN: 'item_eaten',
|
|
53
|
+
ITEM_DRUNK: 'item_drunk',
|
|
54
|
+
ITEM_DESTROYED: 'item_destroyed',
|
|
55
|
+
// Movement events
|
|
56
|
+
ACTOR_MOVED: 'actor_moved',
|
|
57
|
+
ACTOR_ENTERED: 'actor_entered',
|
|
58
|
+
ACTOR_EXITED: 'actor_exited',
|
|
59
|
+
MOVEMENT_BLOCKED: 'movement_blocked',
|
|
60
|
+
// Entry/exit events
|
|
61
|
+
ENTERED: 'entered',
|
|
62
|
+
EXITED: 'exited',
|
|
63
|
+
EVACUATED: 'evacuated',
|
|
64
|
+
CLIMBED: 'climbed',
|
|
65
|
+
// Room events
|
|
66
|
+
ROOM_ENTERED: 'room_entered',
|
|
67
|
+
ROOM_EXITED: 'room_exited',
|
|
68
|
+
ROOM_DESCRIBED: 'room_described',
|
|
69
|
+
ROOM_FIRST_ENTERED: 'room_first_entered',
|
|
70
|
+
ROOM_ILLUMINATED: 'room_illuminated',
|
|
71
|
+
ROOM_DARKENED: 'room_darkened',
|
|
72
|
+
NEW_EXIT_REVEALED: 'new_exit_revealed',
|
|
73
|
+
// Light events
|
|
74
|
+
LIGHT_CHANGED: 'light_changed',
|
|
75
|
+
LOCATION_ILLUMINATED: 'location_illuminated',
|
|
76
|
+
LOCATION_DARKENED: 'location_darkened',
|
|
77
|
+
FUEL_DEPLETED: 'fuel_depleted',
|
|
78
|
+
FUEL_LOW: 'fuel_low',
|
|
79
|
+
REFUELED: 'refueled',
|
|
80
|
+
// Reading events
|
|
81
|
+
READ: 'read',
|
|
82
|
+
// Observation events
|
|
83
|
+
SEARCHED: 'searched',
|
|
84
|
+
LISTENED: 'listened',
|
|
85
|
+
SMELLED: 'smelled',
|
|
86
|
+
TOUCHED: 'touched',
|
|
87
|
+
// Social/interaction events
|
|
88
|
+
GIVEN: 'given',
|
|
89
|
+
SHOWN: 'shown',
|
|
90
|
+
THROWN: 'thrown',
|
|
91
|
+
// Device manipulation events
|
|
92
|
+
PUSHED: 'pushed',
|
|
93
|
+
PULLED: 'pulled',
|
|
94
|
+
TURNED: 'turned',
|
|
95
|
+
USED: 'used',
|
|
96
|
+
// General message events
|
|
97
|
+
CUSTOM_MESSAGE: 'custom_message',
|
|
98
|
+
// Visibility events
|
|
99
|
+
VISIBILITY_CHANGED: 'visibility_changed',
|
|
100
|
+
// Action meta-events
|
|
101
|
+
ACTION_PREVENTED: 'action_prevented',
|
|
102
|
+
ACTION_FAILED: 'action_failed',
|
|
103
|
+
ACTION_SUCCEEDED: 'action_succeeded',
|
|
104
|
+
// Meta action events
|
|
105
|
+
WAITED: 'waited',
|
|
106
|
+
SCORE_DISPLAYED: 'score_displayed',
|
|
107
|
+
HELP_DISPLAYED: 'help_displayed',
|
|
108
|
+
ABOUT_DISPLAYED: 'about_displayed',
|
|
109
|
+
// Scoring events (ADR-085)
|
|
110
|
+
SCORE_GAINED: 'if.event.score_gained',
|
|
111
|
+
SCORE_LOST: 'if.event.score_lost',
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Event categories for filtering and handling
|
|
115
|
+
*/
|
|
116
|
+
exports.IFEventCategory = {
|
|
117
|
+
MANIPULATION: 'manipulation',
|
|
118
|
+
MOVEMENT: 'movement',
|
|
119
|
+
STATE_CHANGE: 'state_change',
|
|
120
|
+
PERCEPTION: 'perception',
|
|
121
|
+
META: 'meta',
|
|
122
|
+
};
|
|
123
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
|