@sharpee/event-processor 0.9.61-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.
Files changed (71) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +43 -0
  3. package/dist-npm/effects/effect-processor.d.ts +50 -0
  4. package/dist-npm/effects/effect-processor.d.ts.map +1 -0
  5. package/dist-npm/effects/effect-processor.js +255 -0
  6. package/dist-npm/effects/effect-processor.js.map +1 -0
  7. package/dist-npm/effects/index.d.ts +10 -0
  8. package/dist-npm/effects/index.d.ts.map +1 -0
  9. package/dist-npm/effects/index.js +29 -0
  10. package/dist-npm/effects/index.js.map +1 -0
  11. package/dist-npm/effects/types.d.ts +119 -0
  12. package/dist-npm/effects/types.d.ts.map +1 -0
  13. package/dist-npm/effects/types.js +9 -0
  14. package/dist-npm/effects/types.js.map +1 -0
  15. package/dist-npm/effects/world-query.d.ts +70 -0
  16. package/dist-npm/effects/world-query.d.ts.map +1 -0
  17. package/dist-npm/effects/world-query.js +34 -0
  18. package/dist-npm/effects/world-query.js.map +1 -0
  19. package/dist-npm/handler-types.d.ts +67 -0
  20. package/dist-npm/handler-types.d.ts.map +1 -0
  21. package/dist-npm/handler-types.js +8 -0
  22. package/dist-npm/handler-types.js.map +1 -0
  23. package/dist-npm/handlers/complex-manipulation.d.ts +31 -0
  24. package/dist-npm/handlers/complex-manipulation.d.ts.map +1 -0
  25. package/dist-npm/handlers/complex-manipulation.js +87 -0
  26. package/dist-npm/handlers/complex-manipulation.js.map +1 -0
  27. package/dist-npm/handlers/device/index.d.ts +28 -0
  28. package/dist-npm/handlers/device/index.d.ts.map +1 -0
  29. package/dist-npm/handlers/device/index.js +172 -0
  30. package/dist-npm/handlers/device/index.js.map +1 -0
  31. package/dist-npm/handlers/index.d.ts +17 -0
  32. package/dist-npm/handlers/index.d.ts.map +1 -0
  33. package/dist-npm/handlers/index.js +48 -0
  34. package/dist-npm/handlers/index.js.map +1 -0
  35. package/dist-npm/handlers/meta.d.ts +59 -0
  36. package/dist-npm/handlers/meta.d.ts.map +1 -0
  37. package/dist-npm/handlers/meta.js +129 -0
  38. package/dist-npm/handlers/meta.js.map +1 -0
  39. package/dist-npm/handlers/movement.d.ts +51 -0
  40. package/dist-npm/handlers/movement.d.ts.map +1 -0
  41. package/dist-npm/handlers/movement.js +176 -0
  42. package/dist-npm/handlers/movement.js.map +1 -0
  43. package/dist-npm/handlers/observation/index.d.ts +6 -0
  44. package/dist-npm/handlers/observation/index.d.ts.map +1 -0
  45. package/dist-npm/handlers/observation/index.js +22 -0
  46. package/dist-npm/handlers/observation/index.js.map +1 -0
  47. package/dist-npm/handlers/observation/observation-handlers.d.ts +96 -0
  48. package/dist-npm/handlers/observation/observation-handlers.d.ts.map +1 -0
  49. package/dist-npm/handlers/observation/observation-handlers.js +162 -0
  50. package/dist-npm/handlers/observation/observation-handlers.js.map +1 -0
  51. package/dist-npm/handlers/observation/sensory.d.ts +29 -0
  52. package/dist-npm/handlers/observation/sensory.d.ts.map +1 -0
  53. package/dist-npm/handlers/observation/sensory.js +77 -0
  54. package/dist-npm/handlers/observation/sensory.js.map +1 -0
  55. package/dist-npm/handlers/state-change.d.ts +47 -0
  56. package/dist-npm/handlers/state-change.d.ts.map +1 -0
  57. package/dist-npm/handlers/state-change.js +166 -0
  58. package/dist-npm/handlers/state-change.js.map +1 -0
  59. package/dist-npm/index.d.ts +14 -0
  60. package/dist-npm/index.d.ts.map +1 -0
  61. package/dist-npm/index.js +32 -0
  62. package/dist-npm/index.js.map +1 -0
  63. package/dist-npm/processor.d.ts +62 -0
  64. package/dist-npm/processor.d.ts.map +1 -0
  65. package/dist-npm/processor.js +332 -0
  66. package/dist-npm/processor.js.map +1 -0
  67. package/dist-npm/types.d.ts +6 -0
  68. package/dist-npm/types.d.ts.map +1 -0
  69. package/dist-npm/types.js +6 -0
  70. package/dist-npm/types.js.map +1 -0
  71. package/package.json +48 -0
@@ -0,0 +1,332 @@
1
+ "use strict";
2
+ /**
3
+ * Event processor implementation
4
+ *
5
+ * Applies semantic events to the world model through registered handlers.
6
+ * ADR-075: Entity handlers receive WorldQuery and return Effect[].
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.EventProcessor = void 0;
10
+ const handlers_1 = require("./handlers");
11
+ const effects_1 = require("./effects");
12
+ // Simple ID generator for error events
13
+ let eventCounter = 0;
14
+ function generateEventId() {
15
+ return `evt_${Date.now()}_${(++eventCounter).toString(36)}`;
16
+ }
17
+ class EventProcessor {
18
+ world;
19
+ options;
20
+ effectProcessor;
21
+ worldQuery;
22
+ // Story-level handlers: multiple handlers per event type
23
+ storyHandlers = new Map();
24
+ constructor(world, options = {}) {
25
+ this.world = world;
26
+ this.options = {
27
+ validate: options.validate ?? true,
28
+ preview: options.preview ?? false,
29
+ maxReactionDepth: options.maxReactionDepth ?? 10
30
+ };
31
+ // Create WorldQuery and EffectProcessor
32
+ this.worldQuery = (0, effects_1.createWorldQuery)(world);
33
+ this.effectProcessor = new effects_1.EffectProcessor(world, (events) => {
34
+ // Recursively process emitted events
35
+ this.processEvents(events);
36
+ });
37
+ // Register standard handlers on creation
38
+ (0, handlers_1.registerStandardHandlers)(world);
39
+ }
40
+ /**
41
+ * Register a story-level event handler
42
+ * Multiple handlers can be registered for the same event type
43
+ */
44
+ registerHandler(eventType, handler) {
45
+ const handlers = this.storyHandlers.get(eventType) || [];
46
+ handlers.push(handler);
47
+ this.storyHandlers.set(eventType, handlers);
48
+ }
49
+ /**
50
+ * Unregister a story-level event handler
51
+ */
52
+ unregisterHandler(eventType, handler) {
53
+ const handlers = this.storyHandlers.get(eventType);
54
+ if (handlers) {
55
+ const index = handlers.indexOf(handler);
56
+ if (index !== -1) {
57
+ handlers.splice(index, 1);
58
+ }
59
+ if (handlers.length === 0) {
60
+ this.storyHandlers.delete(eventType);
61
+ }
62
+ }
63
+ }
64
+ /**
65
+ * Process a batch of events
66
+ */
67
+ processEvents(events) {
68
+ const results = {
69
+ applied: [],
70
+ failed: [],
71
+ changes: [],
72
+ reactions: []
73
+ };
74
+ // Process each event
75
+ for (const event of events) {
76
+ const processed = this.processSingleEvent(event);
77
+ if (processed.success) {
78
+ results.applied.push(event);
79
+ results.changes.push(...processed.changes);
80
+ // Process any reactions
81
+ if (processed.reactions && processed.reactions.length > 0) {
82
+ const reactionResults = this.processReactions(processed.reactions, 0);
83
+ results.reactions.push(...reactionResults.reactions);
84
+ results.applied.push(...reactionResults.applied);
85
+ results.failed.push(...reactionResults.failed);
86
+ results.changes.push(...reactionResults.changes);
87
+ }
88
+ }
89
+ else {
90
+ results.failed.push({
91
+ event,
92
+ reason: processed.reason || 'Unknown failure'
93
+ });
94
+ }
95
+ }
96
+ return results;
97
+ }
98
+ /**
99
+ * Process a single event
100
+ */
101
+ processSingleEvent(event) {
102
+ // Validate if required
103
+ if (this.options.validate) {
104
+ if (!this.world.canApplyEvent(event)) {
105
+ return {
106
+ success: false,
107
+ reason: 'Event validation failed',
108
+ changes: []
109
+ };
110
+ }
111
+ }
112
+ // Preview changes if required
113
+ let changes = [];
114
+ if (this.options.preview) {
115
+ changes = this.world.previewEvent(event);
116
+ }
117
+ // Apply the event
118
+ try {
119
+ this.world.applyEvent(event);
120
+ // Invoke entity handlers (ADR-052)
121
+ const reactions = this.invokeEntityHandlers(event);
122
+ return {
123
+ success: true,
124
+ changes,
125
+ reactions
126
+ };
127
+ }
128
+ catch (error) {
129
+ return {
130
+ success: false,
131
+ reason: error instanceof Error ? error.message : 'Unknown error',
132
+ changes: []
133
+ };
134
+ }
135
+ }
136
+ /**
137
+ * Process reaction events with depth limiting
138
+ */
139
+ processReactions(reactions, depth) {
140
+ const results = {
141
+ applied: [],
142
+ failed: [],
143
+ changes: [],
144
+ reactions: []
145
+ };
146
+ // Check depth limit
147
+ if (depth >= this.options.maxReactionDepth) {
148
+ console.warn('Maximum reaction depth reached, stopping processing');
149
+ return results;
150
+ }
151
+ // Process each reaction
152
+ for (const reaction of reactions) {
153
+ const processed = this.processSingleEvent(reaction);
154
+ if (processed.success) {
155
+ results.applied.push(reaction);
156
+ results.changes.push(...processed.changes);
157
+ // Recursively process nested reactions
158
+ if (processed.reactions && processed.reactions.length > 0) {
159
+ const nestedResults = this.processReactions(processed.reactions, depth + 1);
160
+ results.reactions.push(...nestedResults.reactions);
161
+ results.applied.push(...nestedResults.applied);
162
+ results.failed.push(...nestedResults.failed);
163
+ results.changes.push(...nestedResults.changes);
164
+ }
165
+ }
166
+ else {
167
+ results.failed.push({
168
+ event: reaction,
169
+ reason: processed.reason || 'Unknown failure'
170
+ });
171
+ }
172
+ }
173
+ results.reactions.push(...reactions);
174
+ return results;
175
+ }
176
+ /**
177
+ * Check if a result is an array of Effects (ADR-075 pattern)
178
+ */
179
+ isEffectArray(result) {
180
+ if (!Array.isArray(result) || result.length === 0)
181
+ return false;
182
+ // Check first element for Effect signature (has 'type' that's one of our effect types)
183
+ const first = result[0];
184
+ if (typeof first !== 'object' || first === null)
185
+ return false;
186
+ const effectTypes = ['score', 'flag', 'message', 'emit', 'schedule', 'unblock', 'block', 'move_entity', 'update_entity', 'set_state', 'update_exits'];
187
+ return 'type' in first && effectTypes.includes(first.type);
188
+ }
189
+ /**
190
+ * Invoke entity and story handlers for an event (ADR-075)
191
+ *
192
+ * Collects effects from all handlers and processes them through EffectProcessor.
193
+ * Supports multiple handlers per event type.
194
+ * Also supports legacy handlers that return ISemanticEvent[] during migration.
195
+ */
196
+ invokeEntityHandlers(event) {
197
+ const allEffects = [];
198
+ const legacyReactions = [];
199
+ // Convert to IGameEvent for handlers
200
+ const gameEvent = {
201
+ ...event,
202
+ data: event.data || {}
203
+ };
204
+ // 1. Invoke entity handlers on the target entity
205
+ if (event.entities?.target) {
206
+ const target = this.world.getEntity(event.entities.target);
207
+ if (target?.on?.[event.type]) {
208
+ const handlerOrHandlers = target.on[event.type];
209
+ const handlers = Array.isArray(handlerOrHandlers)
210
+ ? handlerOrHandlers
211
+ : [handlerOrHandlers];
212
+ for (const handler of handlers) {
213
+ try {
214
+ // Try calling with WorldQuery first (ADR-075 pattern)
215
+ const result = handler(gameEvent, this.worldQuery);
216
+ if (result && Array.isArray(result)) {
217
+ if (this.isEffectArray(result)) {
218
+ // ADR-075 Effect-returning handler
219
+ allEffects.push(...result);
220
+ }
221
+ else {
222
+ // Legacy handler returning ISemanticEvent[]
223
+ legacyReactions.push(...result);
224
+ }
225
+ }
226
+ }
227
+ catch (error) {
228
+ console.error(`Entity handler error for ${event.type} on ${target.id}:`, error instanceof Error ? error.message : error);
229
+ }
230
+ }
231
+ }
232
+ }
233
+ // 2. Invoke story-level handlers (ADR-075 only - use registerHandler)
234
+ const storyHandlers = this.storyHandlers.get(event.type);
235
+ if (storyHandlers) {
236
+ for (const handler of storyHandlers) {
237
+ try {
238
+ const effects = handler(gameEvent, this.worldQuery);
239
+ if (effects && Array.isArray(effects)) {
240
+ allEffects.push(...effects);
241
+ }
242
+ }
243
+ catch (error) {
244
+ console.error(`Story handler error for ${event.type}:`, error instanceof Error ? error.message : error);
245
+ }
246
+ }
247
+ }
248
+ // 3. Process all collected effects through EffectProcessor
249
+ if (allEffects.length > 0) {
250
+ const result = this.effectProcessor.process(allEffects);
251
+ if (!result.success) {
252
+ console.error('Effect processing failed:', result.errors);
253
+ }
254
+ // Add emitted events to reactions so they appear in turn events
255
+ if (result.emittedEvents && result.emittedEvents.length > 0) {
256
+ legacyReactions.push(...result.emittedEvents);
257
+ }
258
+ }
259
+ // 4. Process game.message overrides
260
+ // When entity handlers return game.message, it overrides the original event's message
261
+ // rather than being rendered as a separate event (ADR-106 domain events)
262
+ const gameMessages = legacyReactions.filter(r => r.type === 'game.message');
263
+ let filteredReactions = legacyReactions;
264
+ if (gameMessages.length > 1) {
265
+ // Error: multiple game.message reactions - this should never happen
266
+ console.error(`Multiple game.message reactions for ${event.type} on ${event.entities?.target}:`, gameMessages.map(m => m.data?.messageId));
267
+ filteredReactions.push({
268
+ id: generateEventId(),
269
+ type: 'if.event.error',
270
+ entities: event.entities,
271
+ data: {
272
+ message: `Multiple game.message reactions returned for ${event.type}`,
273
+ sourceEvent: event.type,
274
+ targetId: event.entities?.target,
275
+ count: gameMessages.length,
276
+ messageIds: gameMessages.map(m => m.data?.messageId)
277
+ },
278
+ timestamp: Date.now()
279
+ });
280
+ // Filter out the game.message events - use first one as override
281
+ const firstOverride = gameMessages[0];
282
+ const overrideData = firstOverride.data;
283
+ const eventData = event.data;
284
+ if (overrideData.messageId) {
285
+ eventData.messageId = overrideData.messageId;
286
+ }
287
+ if (overrideData.text) {
288
+ eventData.text = overrideData.text;
289
+ }
290
+ if (overrideData.params) {
291
+ eventData.params = overrideData.params;
292
+ }
293
+ filteredReactions = legacyReactions.filter(r => r.type !== 'game.message');
294
+ }
295
+ else if (gameMessages.length === 1) {
296
+ // Normal case: single game.message overrides original event's message
297
+ const override = gameMessages[0];
298
+ const overrideData = override.data;
299
+ const eventData = event.data;
300
+ if (overrideData.messageId) {
301
+ eventData.messageId = overrideData.messageId;
302
+ }
303
+ if (overrideData.text) {
304
+ eventData.text = overrideData.text;
305
+ }
306
+ if (overrideData.params) {
307
+ eventData.params = overrideData.params;
308
+ }
309
+ // Filter out game.message - it's been consumed as an override
310
+ filteredReactions = legacyReactions.filter(r => r.type !== 'game.message');
311
+ }
312
+ // Return filtered reactions (game.message consumed as override)
313
+ return filteredReactions;
314
+ }
315
+ /**
316
+ * Get the world model
317
+ */
318
+ getWorld() {
319
+ return this.world;
320
+ }
321
+ /**
322
+ * Update processor options
323
+ */
324
+ setOptions(options) {
325
+ this.options = {
326
+ ...this.options,
327
+ ...options
328
+ };
329
+ }
330
+ }
331
+ exports.EventProcessor = EventProcessor;
332
+ //# sourceMappingURL=processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processor.js","sourceRoot":"","sources":["../src/processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Event processor types
3
+ */
4
+ export { WorldChange, ProcessedEvents, ProcessorOptions } from '@sharpee/if-domain';
5
+ export { EventHandler } from '@sharpee/world-model';
6
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGpF,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Event processor types
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@sharpee/event-processor",
3
+ "version": "0.9.61-beta",
4
+ "description": "Event processor for applying semantic events to the world model",
5
+ "main": "dist-npm/index.js",
6
+ "types": "dist-npm/index.d.ts",
7
+ "dependencies": {
8
+ "@sharpee/core": "0.9.61-beta",
9
+ "@sharpee/if-domain": "0.9.61-beta",
10
+ "@sharpee/world-model": "0.9.61-beta"
11
+ },
12
+ "devDependencies": {
13
+ "@types/node": "^20.11.19",
14
+ "cross-env": "^7.0.3",
15
+ "rimraf": "^5.0.5",
16
+ "typescript": "^5.3.3"
17
+ },
18
+ "files": [
19
+ "dist-npm"
20
+ ],
21
+ "keywords": [
22
+ "sharpee",
23
+ "interactive-fiction",
24
+ "if",
25
+ "events",
26
+ "event-processor"
27
+ ],
28
+ "author": "Sharpee Team",
29
+ "license": "MIT",
30
+ "publishConfig": {
31
+ "access": "public"
32
+ },
33
+ "exports": {
34
+ ".": {
35
+ "types": "./dist-npm/index.d.ts",
36
+ "import": "./dist-npm/index.js",
37
+ "require": "./dist-npm/index.js"
38
+ }
39
+ },
40
+ "scripts": {
41
+ "build": "tsc",
42
+ "test": "vitest",
43
+ "test:ci": "vitest run",
44
+ "test:verbose": "vitest run --reporter=verbose",
45
+ "clean": "rimraf dist",
46
+ "build:npm": "tsc --outDir dist-npm"
47
+ }
48
+ }