@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 @@
1
+ {"version":3,"file":"observation-handlers.js","sourceRoot":"","sources":["../../../src/handlers/observation/observation-handlers.ts"],"names":[],"mappings":";;AAYA,oEAqBC;AAaD,gEAQC;AAYD,0DAWC;AAsBD,gDAyBC;AAcD,oDASC;AAaD,8DASC;AAYD,wDASC;AAKD,kEAWC;AA9MD;;;;;;;;;;;GAWG;AACH,SAAgB,4BAA4B,CAAC,KAAqB,EAAE,KAAU;IAC5E,MAAM,IAAI,GAAG,KAAK,CAAC,IAIlB,CAAC;IAEF,4BAA4B;IAC5B,kDAAkD;IAElD,0BAA0B;IAC1B,kDAAkD;IAClD,sDAAsD;IACtD,GAAG;IACH,gDAAgD;IAChD,uDAAuD;IACvD,sBAAsB;IACtB,6EAA6E;IAC7E,4BAA4B;IAC5B,SAAS;IACT,IAAI;AACN,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,0BAA0B,CAAC,KAAqB,EAAE,KAAU;IAC1E,MAAM,IAAI,GAAG,KAAK,CAAC,IAIlB,CAAC;IAEF,4BAA4B;AAC9B,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,uBAAuB,CAAC,KAAqB,EAAE,KAAU;IACvE,MAAM,IAAI,GAAG,KAAK,CAAC,IAMlB,CAAC;IAEF,4BAA4B;IAC5B,wCAAwC;AAC1C,CAAC;AAWD;;;;;;;;;;GAUG;AACH,SAAgB,kBAAkB,CAAC,KAAqB,EAAE,KAAU;IAClE,MAAM,IAAI,GAAG,KAAK,CAAC,IAIlB,CAAC;IAEF,4BAA4B;IAC5B,8CAA8C;IAE9C,oCAAoC;IACpC,qDAAqD;IACrD,wDAAwD;IACxD,sDAAsD;IACtD,GAAG;IACH,kCAAkC;IAClC,0DAA0D;IAC1D,oDAAoD;IACpD,qDAAqD;IACrD,uBAAuB;IACvB,gCAAgC;IAChC,8BAA8B;IAC9B,WAAW;IACX,MAAM;IACN,IAAI;AACN,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,oBAAoB,CAAC,KAAqB,EAAE,KAAU;IACpE,MAAM,IAAI,GAAG,KAAK,CAAC,IAIlB,CAAC;IAEF,4BAA4B;IAC5B,8CAA8C;AAChD,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,yBAAyB,CAAC,KAAqB,EAAE,KAAU;IACzE,MAAM,IAAI,GAAG,KAAK,CAAC,IAIlB,CAAC;IAEF,4BAA4B;IAC5B,wCAAwC;AAC1C,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,sBAAsB,CAAC,KAAqB,EAAE,KAAU;IACtE,MAAM,IAAI,GAAG,KAAK,CAAC,IAIlB,CAAC;IAEF,4BAA4B;IAC5B,wCAAwC;AAC1C,CAAC;AAED;;GAEG;AACH,SAAgB,2BAA2B,CAAC,KAAiB;IAC3D,mBAAmB;IACnB,KAAK,CAAC,oBAAoB,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;IAChE,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,CAAC;IACpE,KAAK,CAAC,oBAAoB,CAAC,uBAAuB,EAAE,yBAAyB,CAAC,CAAC;IAC/E,KAAK,CAAC,oBAAoB,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;IAEzE,qBAAqB;IACrB,KAAK,CAAC,oBAAoB,CAAC,0BAA0B,EAAE,4BAA4B,CAAC,CAAC;IACrF,KAAK,CAAC,oBAAoB,CAAC,wBAAwB,EAAE,0BAA0B,CAAC,CAAC;IACjF,KAAK,CAAC,oBAAoB,CAAC,qBAAqB,EAAE,uBAAuB,CAAC,CAAC;AAC7E,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Observation event handlers
3
+ *
4
+ * These handlers process sensory observation events (search, listen, smell, touch)
5
+ */
6
+ import { WorldModel, EventHandler } from '@sharpee/world-model';
7
+ /**
8
+ * Handle SEARCHED event - reveal concealed items
9
+ */
10
+ export declare const handleSearched: EventHandler;
11
+ /**
12
+ * Handle LISTENED event - no world model changes needed
13
+ * This is primarily for message generation
14
+ */
15
+ export declare const handleListened: EventHandler;
16
+ /**
17
+ * Handle SMELLED event - no world model changes needed
18
+ * This is primarily for message generation
19
+ */
20
+ export declare const handleSmelled: EventHandler;
21
+ /**
22
+ * Handle TOUCHED event - could trigger state changes
23
+ */
24
+ export declare const handleTouched: EventHandler;
25
+ /**
26
+ * Register all sensory observation handlers
27
+ */
28
+ export declare function registerSensoryHandlers(world: WorldModel): void;
29
+ //# sourceMappingURL=sensory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sensory.d.ts","sourceRoot":"","sources":["../../../src/handlers/observation/sensory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,UAAU,EAAsC,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpG;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,YAgB5B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,YAI5B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,YAI3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,YAY3B,CAAC;AAEF;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAK/D"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ /**
3
+ * Observation event handlers
4
+ *
5
+ * These handlers process sensory observation events (search, listen, smell, touch)
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.handleTouched = exports.handleSmelled = exports.handleListened = exports.handleSearched = void 0;
9
+ exports.registerSensoryHandlers = registerSensoryHandlers;
10
+ const core_1 = require("@sharpee/core");
11
+ const world_model_1 = require("@sharpee/world-model");
12
+ const if_domain_1 = require("@sharpee/if-domain");
13
+ /**
14
+ * Handle SEARCHED event - reveal concealed items
15
+ */
16
+ const handleSearched = (event, world) => {
17
+ const { target } = event.entities;
18
+ const data = (0, core_1.getUntypedEventData)(event);
19
+ const foundItems = Array.isArray(data?.foundItems) ? data.foundItems : [];
20
+ if (target && foundItems && foundItems.length > 0) {
21
+ // Reveal concealed items
22
+ foundItems.forEach(itemId => {
23
+ world.updateEntity(itemId, (entity) => {
24
+ if (entity.has(world_model_1.TraitType.IDENTITY)) {
25
+ const identity = entity.get(world_model_1.TraitType.IDENTITY);
26
+ identity.concealed = false;
27
+ }
28
+ });
29
+ });
30
+ }
31
+ };
32
+ exports.handleSearched = handleSearched;
33
+ /**
34
+ * Handle LISTENED event - no world model changes needed
35
+ * This is primarily for message generation
36
+ */
37
+ const handleListened = (event, world) => {
38
+ // No world model changes needed for listening
39
+ // The event data contains information about what was heard
40
+ // which will be used by the message system
41
+ };
42
+ exports.handleListened = handleListened;
43
+ /**
44
+ * Handle SMELLED event - no world model changes needed
45
+ * This is primarily for message generation
46
+ */
47
+ const handleSmelled = (event, world) => {
48
+ // No world model changes needed for smelling
49
+ // The event data contains information about scents detected
50
+ // which will be used by the message system
51
+ };
52
+ exports.handleSmelled = handleSmelled;
53
+ /**
54
+ * Handle TOUCHED event - could trigger state changes
55
+ */
56
+ const handleTouched = (event, world) => {
57
+ const { target } = event.entities;
58
+ // In some games, touching might trigger state changes
59
+ // For example, touching a switch might toggle it
60
+ // For now, we'll just record that the object was touched
61
+ // Future implementations could add a "touched" flag or trigger other events
62
+ if (target) {
63
+ // Could update a "lastTouched" timestamp or similar
64
+ // For now, no changes needed
65
+ }
66
+ };
67
+ exports.handleTouched = handleTouched;
68
+ /**
69
+ * Register all sensory observation handlers
70
+ */
71
+ function registerSensoryHandlers(world) {
72
+ world.registerEventHandler(if_domain_1.IFEvents.SEARCHED, exports.handleSearched);
73
+ world.registerEventHandler(if_domain_1.IFEvents.LISTENED, exports.handleListened);
74
+ world.registerEventHandler(if_domain_1.IFEvents.SMELLED, exports.handleSmelled);
75
+ world.registerEventHandler(if_domain_1.IFEvents.TOUCHED, exports.handleTouched);
76
+ }
77
+ //# sourceMappingURL=sensory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sensory.js","sourceRoot":"","sources":["../../../src/handlers/observation/sensory.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAmEH,0DAKC;AAtED,wCAAoE;AACpE,sDAAoG;AACpG,kDAA8C;AAE9C;;GAEG;AACI,MAAM,cAAc,GAAiB,CAAC,KAAqB,EAAE,KAAU,EAAE,EAAE;IAChF,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;IAClC,MAAM,IAAI,GAAG,IAAA,0BAAmB,EAAC,KAAK,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAsB,CAAC,CAAC,CAAC,EAAE,CAAC;IAEtF,IAAI,MAAM,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,yBAAyB;QACzB,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC1B,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,MAAgB,EAAE,EAAE;gBAC9C,IAAI,MAAM,CAAC,GAAG,CAAC,uBAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACnC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAS,CAAC,QAAQ,CAAkB,CAAC;oBACjE,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;gBAC7B,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC;AAhBW,QAAA,cAAc,kBAgBzB;AAEF;;;GAGG;AACI,MAAM,cAAc,GAAiB,CAAC,KAAqB,EAAE,KAAU,EAAE,EAAE;IAChF,8CAA8C;IAC9C,2DAA2D;IAC3D,2CAA2C;AAC7C,CAAC,CAAC;AAJW,QAAA,cAAc,kBAIzB;AAEF;;;GAGG;AACI,MAAM,aAAa,GAAiB,CAAC,KAAqB,EAAE,KAAU,EAAE,EAAE;IAC/E,6CAA6C;IAC7C,4DAA4D;IAC5D,2CAA2C;AAC7C,CAAC,CAAC;AAJW,QAAA,aAAa,iBAIxB;AAEF;;GAEG;AACI,MAAM,aAAa,GAAiB,CAAC,KAAqB,EAAE,KAAU,EAAE,EAAE;IAC/E,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;IAElC,sDAAsD;IACtD,iDAAiD;IACjD,yDAAyD;IACzD,4EAA4E;IAE5E,IAAI,MAAM,EAAE,CAAC;QACX,oDAAoD;QACpD,6BAA6B;IAC/B,CAAC;AACH,CAAC,CAAC;AAZW,QAAA,aAAa,iBAYxB;AAEF;;GAEG;AACH,SAAgB,uBAAuB,CAAC,KAAiB;IACvD,KAAK,CAAC,oBAAoB,CAAC,oBAAQ,CAAC,QAAQ,EAAE,sBAAc,CAAC,CAAC;IAC9D,KAAK,CAAC,oBAAoB,CAAC,oBAAQ,CAAC,QAAQ,EAAE,sBAAc,CAAC,CAAC;IAC9D,KAAK,CAAC,oBAAoB,CAAC,oBAAQ,CAAC,OAAO,EAAE,qBAAa,CAAC,CAAC;IAC5D,KAAK,CAAC,oBAAoB,CAAC,oBAAQ,CAAC,OAAO,EAAE,qBAAa,CAAC,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * State change event handlers
3
+ *
4
+ * These handlers apply state-changing events to the world model
5
+ */
6
+ import { WorldModel, EventHandler } from '@sharpee/world-model';
7
+ /**
8
+ * Handle OPENED event - set openable trait to open
9
+ */
10
+ export declare const handleOpened: EventHandler;
11
+ /**
12
+ * Handle CLOSED event - set openable trait to closed
13
+ */
14
+ export declare const handleClosed: EventHandler;
15
+ /**
16
+ * Handle LOCKED event - set lockable trait to locked
17
+ */
18
+ export declare const handleLocked: EventHandler;
19
+ /**
20
+ * Handle UNLOCKED event - set lockable trait to unlocked
21
+ */
22
+ export declare const handleUnlocked: EventHandler;
23
+ /**
24
+ * Handle SWITCHED_ON event - set switchable trait to on
25
+ */
26
+ export declare const handleSwitchedOn: EventHandler;
27
+ /**
28
+ * Handle SWITCHED_OFF event - set switchable trait to off
29
+ */
30
+ export declare const handleSwitchedOff: EventHandler;
31
+ /**
32
+ * Handle WORN event - set wearable trait to worn
33
+ */
34
+ export declare const handleWorn: EventHandler;
35
+ /**
36
+ * Handle EATEN event - remove the eaten item
37
+ */
38
+ export declare const handleEaten: EventHandler;
39
+ /**
40
+ * Handle DRUNK event - remove the drunk item
41
+ */
42
+ export declare const handleDrunk: EventHandler;
43
+ /**
44
+ * Register all state change handlers
45
+ */
46
+ export declare function registerStateChangeHandlers(world: WorldModel): void;
47
+ //# sourceMappingURL=state-change.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-change.d.ts","sourceRoot":"","sources":["../../src/handlers/state-change.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,UAAU,EAAkH,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGhL;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,YAa1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,YAY1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,YAY1B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,YAY5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,YAgB9B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,YAgB/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,YAUxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,YAKzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,YAKzB,CAAC;AAEF;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAUnE"}
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ /**
3
+ * State change event handlers
4
+ *
5
+ * These handlers apply state-changing events to the world model
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.handleDrunk = exports.handleEaten = exports.handleWorn = exports.handleSwitchedOff = exports.handleSwitchedOn = exports.handleUnlocked = exports.handleLocked = exports.handleClosed = exports.handleOpened = void 0;
9
+ exports.registerStateChangeHandlers = registerStateChangeHandlers;
10
+ const world_model_1 = require("@sharpee/world-model");
11
+ const if_domain_1 = require("@sharpee/if-domain");
12
+ /**
13
+ * Handle OPENED event - set openable trait to open
14
+ */
15
+ const handleOpened = (event, world) => {
16
+ const { target } = event.entities;
17
+ if (target) {
18
+ world.updateEntity(target, (entity) => {
19
+ const openableTrait = entity.get(world_model_1.TraitType.OPENABLE);
20
+ if (openableTrait) {
21
+ openableTrait.isOpen = true;
22
+ }
23
+ });
24
+ // TODO: Handle connected doors - DoorTrait doesn't have connectedDoor property
25
+ // Need to determine the door connection logic
26
+ }
27
+ };
28
+ exports.handleOpened = handleOpened;
29
+ /**
30
+ * Handle CLOSED event - set openable trait to closed
31
+ */
32
+ const handleClosed = (event, world) => {
33
+ const { target } = event.entities;
34
+ if (target) {
35
+ world.updateEntity(target, (entity) => {
36
+ const openableTrait = entity.get(world_model_1.TraitType.OPENABLE);
37
+ if (openableTrait) {
38
+ openableTrait.isOpen = false;
39
+ }
40
+ });
41
+ // TODO: Handle connected doors
42
+ }
43
+ };
44
+ exports.handleClosed = handleClosed;
45
+ /**
46
+ * Handle LOCKED event - set lockable trait to locked
47
+ */
48
+ const handleLocked = (event, world) => {
49
+ const { target } = event.entities;
50
+ if (target) {
51
+ world.updateEntity(target, (entity) => {
52
+ const lockableTrait = entity.get(world_model_1.TraitType.LOCKABLE);
53
+ if (lockableTrait) {
54
+ lockableTrait.isLocked = true;
55
+ }
56
+ });
57
+ // TODO: Handle connected doors
58
+ }
59
+ };
60
+ exports.handleLocked = handleLocked;
61
+ /**
62
+ * Handle UNLOCKED event - set lockable trait to unlocked
63
+ */
64
+ const handleUnlocked = (event, world) => {
65
+ const { target } = event.entities;
66
+ if (target) {
67
+ world.updateEntity(target, (entity) => {
68
+ const lockableTrait = entity.get(world_model_1.TraitType.LOCKABLE);
69
+ if (lockableTrait) {
70
+ lockableTrait.isLocked = false;
71
+ }
72
+ });
73
+ // TODO: Handle connected doors
74
+ }
75
+ };
76
+ exports.handleUnlocked = handleUnlocked;
77
+ /**
78
+ * Handle SWITCHED_ON event - set switchable trait to on
79
+ */
80
+ const handleSwitchedOn = (event, world) => {
81
+ const { target } = event.entities;
82
+ if (target) {
83
+ world.updateEntity(target, (entity) => {
84
+ const switchableTrait = entity.get(world_model_1.TraitType.SWITCHABLE);
85
+ if (switchableTrait) {
86
+ switchableTrait.isOn = true;
87
+ }
88
+ // If it's a light source, set it to lit
89
+ const lightTrait = entity.get(world_model_1.TraitType.LIGHT_SOURCE);
90
+ if (lightTrait) {
91
+ lightTrait.isLit = true;
92
+ }
93
+ });
94
+ }
95
+ };
96
+ exports.handleSwitchedOn = handleSwitchedOn;
97
+ /**
98
+ * Handle SWITCHED_OFF event - set switchable trait to off
99
+ */
100
+ const handleSwitchedOff = (event, world) => {
101
+ const { target } = event.entities;
102
+ if (target) {
103
+ world.updateEntity(target, (entity) => {
104
+ const switchableTrait = entity.get(world_model_1.TraitType.SWITCHABLE);
105
+ if (switchableTrait) {
106
+ switchableTrait.isOn = false;
107
+ }
108
+ // If it's a light source, set it to unlit
109
+ const lightTrait = entity.get(world_model_1.TraitType.LIGHT_SOURCE);
110
+ if (lightTrait) {
111
+ lightTrait.isLit = false;
112
+ }
113
+ });
114
+ }
115
+ };
116
+ exports.handleSwitchedOff = handleSwitchedOff;
117
+ /**
118
+ * Handle WORN event - set wearable trait to worn
119
+ */
120
+ const handleWorn = (event, world) => {
121
+ const { target } = event.entities;
122
+ if (target) {
123
+ world.updateEntity(target, (entity) => {
124
+ const wearableTrait = entity.get(world_model_1.TraitType.WEARABLE);
125
+ if (wearableTrait) {
126
+ wearableTrait.worn = true;
127
+ }
128
+ });
129
+ }
130
+ };
131
+ exports.handleWorn = handleWorn;
132
+ /**
133
+ * Handle EATEN event - remove the eaten item
134
+ */
135
+ const handleEaten = (event, world) => {
136
+ const { target } = event.entities;
137
+ if (target) {
138
+ world.removeEntity(target);
139
+ }
140
+ };
141
+ exports.handleEaten = handleEaten;
142
+ /**
143
+ * Handle DRUNK event - remove the drunk item
144
+ */
145
+ const handleDrunk = (event, world) => {
146
+ const { target } = event.entities;
147
+ if (target) {
148
+ world.removeEntity(target);
149
+ }
150
+ };
151
+ exports.handleDrunk = handleDrunk;
152
+ /**
153
+ * Register all state change handlers
154
+ */
155
+ function registerStateChangeHandlers(world) {
156
+ world.registerEventHandler(if_domain_1.IFEvents.OPENED, exports.handleOpened);
157
+ world.registerEventHandler(if_domain_1.IFEvents.CLOSED, exports.handleClosed);
158
+ world.registerEventHandler(if_domain_1.IFEvents.LOCKED, exports.handleLocked);
159
+ world.registerEventHandler(if_domain_1.IFEvents.UNLOCKED, exports.handleUnlocked);
160
+ world.registerEventHandler(if_domain_1.IFEvents.SWITCHED_ON, exports.handleSwitchedOn);
161
+ world.registerEventHandler(if_domain_1.IFEvents.SWITCHED_OFF, exports.handleSwitchedOff);
162
+ world.registerEventHandler(if_domain_1.IFEvents.WORN, exports.handleWorn);
163
+ world.registerEventHandler(if_domain_1.IFEvents.EATEN, exports.handleEaten);
164
+ world.registerEventHandler(if_domain_1.IFEvents.DRUNK, exports.handleDrunk);
165
+ }
166
+ //# sourceMappingURL=state-change.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-change.js","sourceRoot":"","sources":["../../src/handlers/state-change.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @sharpee/event-processor - Event application system
3
+ *
4
+ * Applies semantic events to the world model through registered handlers.
5
+ * Bridges the gap between event-generating actions and state mutations.
6
+ */
7
+ export * from './types';
8
+ export * from './processor';
9
+ export * from './handlers';
10
+ export * from './effects';
11
+ export * from './handler-types';
12
+ export { ISemanticEvent } from '@sharpee/core';
13
+ export { WorldModel, WorldChange } from '@sharpee/world-model';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAG3B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAGhC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ /**
3
+ * @sharpee/event-processor - Event application system
4
+ *
5
+ * Applies semantic events to the world model through registered handlers.
6
+ * Bridges the gap between event-generating actions and state mutations.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
20
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
+ };
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.WorldModel = void 0;
24
+ __exportStar(require("./types"), exports);
25
+ __exportStar(require("./processor"), exports);
26
+ __exportStar(require("./handlers"), exports);
27
+ // Effects system (ADR-075)
28
+ __exportStar(require("./effects"), exports);
29
+ __exportStar(require("./handler-types"), exports);
30
+ var world_model_1 = require("@sharpee/world-model");
31
+ Object.defineProperty(exports, "WorldModel", { enumerable: true, get: function () { return world_model_1.WorldModel; } });
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;AAEH,0CAAwB;AACxB,8CAA4B;AAC5B,6CAA2B;AAE3B,2BAA2B;AAC3B,4CAA0B;AAC1B,kDAAgC;AAIhC,oDAA+D;AAAtD,yGAAA,UAAU,OAAA"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Event processor implementation
3
+ *
4
+ * Applies semantic events to the world model through registered handlers.
5
+ * ADR-075: Entity handlers receive WorldQuery and return Effect[].
6
+ */
7
+ import { ISemanticEvent } from '@sharpee/core';
8
+ import { WorldModel } from '@sharpee/world-model';
9
+ import { ProcessedEvents, ProcessorOptions } from '@sharpee/if-domain';
10
+ import type { StoryEventHandler } from './handler-types';
11
+ export type { StoryEventHandler, IGameEvent } from './handler-types';
12
+ export type { Effect, WorldQuery } from './effects';
13
+ export declare class EventProcessor {
14
+ private world;
15
+ private options;
16
+ private effectProcessor;
17
+ private worldQuery;
18
+ private storyHandlers;
19
+ constructor(world: WorldModel, options?: ProcessorOptions);
20
+ /**
21
+ * Register a story-level event handler
22
+ * Multiple handlers can be registered for the same event type
23
+ */
24
+ registerHandler(eventType: string, handler: StoryEventHandler): void;
25
+ /**
26
+ * Unregister a story-level event handler
27
+ */
28
+ unregisterHandler(eventType: string, handler: StoryEventHandler): void;
29
+ /**
30
+ * Process a batch of events
31
+ */
32
+ processEvents(events: ISemanticEvent[]): ProcessedEvents;
33
+ /**
34
+ * Process a single event
35
+ */
36
+ private processSingleEvent;
37
+ /**
38
+ * Process reaction events with depth limiting
39
+ */
40
+ private processReactions;
41
+ /**
42
+ * Check if a result is an array of Effects (ADR-075 pattern)
43
+ */
44
+ private isEffectArray;
45
+ /**
46
+ * Invoke entity and story handlers for an event (ADR-075)
47
+ *
48
+ * Collects effects from all handlers and processes them through EffectProcessor.
49
+ * Supports multiple handlers per event type.
50
+ * Also supports legacy handlers that return ISemanticEvent[] during migration.
51
+ */
52
+ private invokeEntityHandlers;
53
+ /**
54
+ * Get the world model
55
+ */
56
+ getWorld(): WorldModel;
57
+ /**
58
+ * Update processor options
59
+ */
60
+ setOptions(options: Partial<ProcessorOptions>): void;
61
+ }
62
+ //# sourceMappingURL=processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processor.d.ts","sourceRoot":"","sources":["../src/processor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAe,eAAe,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAQpF,OAAO,KAAK,EAAc,iBAAiB,EAAmB,MAAM,iBAAiB,CAAC;AAGtF,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACrE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAQpD,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,UAAU,CAAa;IAG/B,OAAO,CAAC,aAAa,CAA+C;gBAExD,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,gBAAqB;IAmB7D;;;OAGG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAMpE;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAatE;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,eAAe;IAsCxD;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA4C1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgDxB;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;;;;;OAMG;IACH,OAAO,CAAC,oBAAoB;IAwI5B;;OAEG;IACH,QAAQ,IAAI,UAAU;IAItB;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;CAMrD"}