@sharpee/core 0.9.56-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 (199) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +48 -0
  3. package/dist/constants/attributes.d.ts +32 -0
  4. package/dist/constants/attributes.d.ts.map +1 -0
  5. package/dist/constants/attributes.js +53 -0
  6. package/dist/constants/attributes.js.map +1 -0
  7. package/dist/constants/core-events.d.ts +37 -0
  8. package/dist/constants/core-events.d.ts.map +1 -0
  9. package/dist/constants/core-events.js +50 -0
  10. package/dist/constants/core-events.js.map +1 -0
  11. package/dist/constants/entity-types.d.ts +15 -0
  12. package/dist/constants/entity-types.d.ts.map +1 -0
  13. package/dist/constants/entity-types.js +27 -0
  14. package/dist/constants/entity-types.js.map +1 -0
  15. package/dist/constants/index.d.ts +22 -0
  16. package/dist/constants/index.d.ts.map +1 -0
  17. package/dist/constants/index.js +41 -0
  18. package/dist/constants/index.js.map +1 -0
  19. package/dist/constants/relationships.d.ts +25 -0
  20. package/dist/constants/relationships.d.ts.map +1 -0
  21. package/dist/constants/relationships.js +55 -0
  22. package/dist/constants/relationships.js.map +1 -0
  23. package/dist/debug/index.d.ts +5 -0
  24. package/dist/debug/index.d.ts.map +1 -0
  25. package/dist/debug/index.js +21 -0
  26. package/dist/debug/index.js.map +1 -0
  27. package/dist/debug/types.d.ts +65 -0
  28. package/dist/debug/types.d.ts.map +1 -0
  29. package/dist/debug/types.js +39 -0
  30. package/dist/debug/types.js.map +1 -0
  31. package/dist/events/event-factory.d.ts +81 -0
  32. package/dist/events/event-factory.d.ts.map +1 -0
  33. package/dist/events/event-factory.js +74 -0
  34. package/dist/events/event-factory.js.map +1 -0
  35. package/dist/events/event-helpers.d.ts +118 -0
  36. package/dist/events/event-helpers.d.ts.map +1 -0
  37. package/dist/events/event-helpers.js +151 -0
  38. package/dist/events/event-helpers.js.map +1 -0
  39. package/dist/events/event-registry.d.ts +154 -0
  40. package/dist/events/event-registry.d.ts.map +1 -0
  41. package/dist/events/event-registry.js +24 -0
  42. package/dist/events/event-registry.js.map +1 -0
  43. package/dist/events/event-source.d.ts +39 -0
  44. package/dist/events/event-source.d.ts.map +1 -0
  45. package/dist/events/event-source.js +57 -0
  46. package/dist/events/event-source.js.map +1 -0
  47. package/dist/events/event-system.d.ts +27 -0
  48. package/dist/events/event-system.d.ts.map +1 -0
  49. package/dist/events/event-system.js +64 -0
  50. package/dist/events/event-system.js.map +1 -0
  51. package/dist/events/game-events.d.ts +245 -0
  52. package/dist/events/game-events.d.ts.map +1 -0
  53. package/dist/events/game-events.js +250 -0
  54. package/dist/events/game-events.js.map +1 -0
  55. package/dist/events/index.d.ts +19 -0
  56. package/dist/events/index.d.ts.map +1 -0
  57. package/dist/events/index.js +51 -0
  58. package/dist/events/index.js.map +1 -0
  59. package/dist/events/platform-events.d.ts +161 -0
  60. package/dist/events/platform-events.d.ts.map +1 -0
  61. package/dist/events/platform-events.js +135 -0
  62. package/dist/events/platform-events.js.map +1 -0
  63. package/dist/events/semantic-event-source.d.ts +85 -0
  64. package/dist/events/semantic-event-source.d.ts.map +1 -0
  65. package/dist/events/semantic-event-source.js +147 -0
  66. package/dist/events/semantic-event-source.js.map +1 -0
  67. package/dist/events/standard-events.d.ts +26 -0
  68. package/dist/events/standard-events.d.ts.map +1 -0
  69. package/dist/events/standard-events.js +27 -0
  70. package/dist/events/standard-events.js.map +1 -0
  71. package/dist/events/system-event.d.ts +62 -0
  72. package/dist/events/system-event.d.ts.map +1 -0
  73. package/dist/events/system-event.js +55 -0
  74. package/dist/events/system-event.js.map +1 -0
  75. package/dist/events/typed-event.d.ts +69 -0
  76. package/dist/events/typed-event.d.ts.map +1 -0
  77. package/dist/events/typed-event.js +20 -0
  78. package/dist/events/typed-event.js.map +1 -0
  79. package/dist/events/types.d.ts +105 -0
  80. package/dist/events/types.d.ts.map +1 -0
  81. package/dist/events/types.js +4 -0
  82. package/dist/events/types.js.map +1 -0
  83. package/dist/execution/index.d.ts +2 -0
  84. package/dist/execution/index.d.ts.map +1 -0
  85. package/dist/execution/index.js +23 -0
  86. package/dist/execution/index.js.map +1 -0
  87. package/dist/execution/types.d.ts +117 -0
  88. package/dist/execution/types.d.ts.map +1 -0
  89. package/dist/execution/types.js +4 -0
  90. package/dist/execution/types.js.map +1 -0
  91. package/dist/extensions/index.d.ts +3 -0
  92. package/dist/extensions/index.d.ts.map +1 -0
  93. package/dist/extensions/index.js +20 -0
  94. package/dist/extensions/index.js.map +1 -0
  95. package/dist/extensions/registry.d.ts +61 -0
  96. package/dist/extensions/registry.d.ts.map +1 -0
  97. package/dist/extensions/registry.js +153 -0
  98. package/dist/extensions/registry.js.map +1 -0
  99. package/dist/extensions/types.d.ts +84 -0
  100. package/dist/extensions/types.d.ts.map +1 -0
  101. package/dist/extensions/types.js +15 -0
  102. package/dist/extensions/types.js.map +1 -0
  103. package/dist/ifid/ifid.d.ts +30 -0
  104. package/dist/ifid/ifid.d.ts.map +1 -0
  105. package/dist/ifid/ifid.js +52 -0
  106. package/dist/ifid/ifid.js.map +1 -0
  107. package/dist/ifid/index.d.ts +2 -0
  108. package/dist/ifid/index.d.ts.map +1 -0
  109. package/dist/ifid/index.js +9 -0
  110. package/dist/ifid/index.js.map +1 -0
  111. package/dist/index.d.ts +11 -0
  112. package/dist/index.d.ts.map +1 -0
  113. package/dist/index.js +36 -0
  114. package/dist/index.js.map +1 -0
  115. package/dist/metadata/index.d.ts +2 -0
  116. package/dist/metadata/index.d.ts.map +1 -0
  117. package/dist/metadata/index.js +3 -0
  118. package/dist/metadata/index.js.map +1 -0
  119. package/dist/metadata/story-metadata.d.ts +64 -0
  120. package/dist/metadata/story-metadata.d.ts.map +1 -0
  121. package/dist/metadata/story-metadata.js +5 -0
  122. package/dist/metadata/story-metadata.js.map +1 -0
  123. package/dist/query/index.d.ts +9 -0
  124. package/dist/query/index.d.ts.map +1 -0
  125. package/dist/query/index.js +25 -0
  126. package/dist/query/index.js.map +1 -0
  127. package/dist/query/query-manager.d.ts +86 -0
  128. package/dist/query/query-manager.d.ts.map +1 -0
  129. package/dist/query/query-manager.js +391 -0
  130. package/dist/query/query-manager.js.map +1 -0
  131. package/dist/query/types.d.ts +188 -0
  132. package/dist/query/types.d.ts.map +1 -0
  133. package/dist/query/types.js +106 -0
  134. package/dist/query/types.js.map +1 -0
  135. package/dist/random/index.d.ts +5 -0
  136. package/dist/random/index.d.ts.map +1 -0
  137. package/dist/random/index.js +9 -0
  138. package/dist/random/index.js.map +1 -0
  139. package/dist/random/seeded-random.d.ts +32 -0
  140. package/dist/random/seeded-random.d.ts.map +1 -0
  141. package/dist/random/seeded-random.js +62 -0
  142. package/dist/random/seeded-random.js.map +1 -0
  143. package/dist/rules/compatibility.d.ts +46 -0
  144. package/dist/rules/compatibility.d.ts.map +1 -0
  145. package/dist/rules/compatibility.js +62 -0
  146. package/dist/rules/compatibility.js.map +1 -0
  147. package/dist/rules/condition-builder.d.ts +23 -0
  148. package/dist/rules/condition-builder.d.ts.map +1 -0
  149. package/dist/rules/condition-builder.js +16 -0
  150. package/dist/rules/condition-builder.js.map +1 -0
  151. package/dist/rules/helpers.d.ts +51 -0
  152. package/dist/rules/helpers.d.ts.map +1 -0
  153. package/dist/rules/helpers.js +111 -0
  154. package/dist/rules/helpers.js.map +1 -0
  155. package/dist/rules/index.d.ts +12 -0
  156. package/dist/rules/index.d.ts.map +1 -0
  157. package/dist/rules/index.js +34 -0
  158. package/dist/rules/index.js.map +1 -0
  159. package/dist/rules/rule-system.d.ts +6 -0
  160. package/dist/rules/rule-system.d.ts.map +1 -0
  161. package/dist/rules/rule-system.js +10 -0
  162. package/dist/rules/rule-system.js.map +1 -0
  163. package/dist/rules/rule-world-adapter.d.ts +43 -0
  164. package/dist/rules/rule-world-adapter.d.ts.map +1 -0
  165. package/dist/rules/rule-world-adapter.js +74 -0
  166. package/dist/rules/rule-world-adapter.js.map +1 -0
  167. package/dist/rules/simple-rule-system.d.ts +36 -0
  168. package/dist/rules/simple-rule-system.d.ts.map +1 -0
  169. package/dist/rules/simple-rule-system.js +135 -0
  170. package/dist/rules/simple-rule-system.js.map +1 -0
  171. package/dist/rules/types.d.ts +64 -0
  172. package/dist/rules/types.d.ts.map +1 -0
  173. package/dist/rules/types.js +6 -0
  174. package/dist/rules/types.js.map +1 -0
  175. package/dist/types/attribute.d.ts +40 -0
  176. package/dist/types/attribute.d.ts.map +1 -0
  177. package/dist/types/attribute.js +4 -0
  178. package/dist/types/attribute.js.map +1 -0
  179. package/dist/types/entity.d.ts +47 -0
  180. package/dist/types/entity.d.ts.map +1 -0
  181. package/dist/types/entity.js +4 -0
  182. package/dist/types/entity.js.map +1 -0
  183. package/dist/types/index.d.ts +10 -0
  184. package/dist/types/index.d.ts.map +1 -0
  185. package/dist/types/index.js +27 -0
  186. package/dist/types/index.js.map +1 -0
  187. package/dist/types/relationship.d.ts +44 -0
  188. package/dist/types/relationship.d.ts.map +1 -0
  189. package/dist/types/relationship.js +4 -0
  190. package/dist/types/relationship.js.map +1 -0
  191. package/dist/types/result.d.ts +81 -0
  192. package/dist/types/result.d.ts.map +1 -0
  193. package/dist/types/result.js +79 -0
  194. package/dist/types/result.js.map +1 -0
  195. package/dist/types/save-data.d.ts +264 -0
  196. package/dist/types/save-data.d.ts.map +1 -0
  197. package/dist/types/save-data.js +6 -0
  198. package/dist/types/save-data.js.map +1 -0
  199. package/package.json +65 -0
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Create a rule system
3
+ * This is a re-export from compatibility for backward compatibility
4
+ */
5
+ export { IRuleSystem, createRuleSystem } from './compatibility';
6
+ //# sourceMappingURL=rule-system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-system.d.ts","sourceRoot":"","sources":["../../src/rules/rule-system.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ /**
3
+ * Create a rule system
4
+ * This is a re-export from compatibility for backward compatibility
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.createRuleSystem = void 0;
8
+ var compatibility_1 = require("./compatibility");
9
+ Object.defineProperty(exports, "createRuleSystem", { enumerable: true, get: function () { return compatibility_1.createRuleSystem; } });
10
+ //# sourceMappingURL=rule-system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-system.js","sourceRoot":"","sources":["../../src/rules/rule-system.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,iDAAgE;AAA1C,iHAAA,gBAAgB,OAAA"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Adapter to make existing world model work with simple rule system
3
+ */
4
+ import { EntityId } from '../types/entity';
5
+ import { IRuleWorld } from './types';
6
+ /**
7
+ * Simple adapter for any object-based world state
8
+ */
9
+ export declare class SimpleRuleWorldAdapter implements IRuleWorld {
10
+ private worldState;
11
+ private playerId;
12
+ private currentLocationId?;
13
+ constructor(worldState: any, playerId?: EntityId, currentLocationId?: EntityId | undefined);
14
+ /**
15
+ * Get an entity by ID
16
+ */
17
+ getEntity(id: EntityId): any;
18
+ /**
19
+ * Update an entity with new attributes
20
+ */
21
+ updateEntity(id: EntityId, changes: Record<string, any>): void;
22
+ /**
23
+ * Get the player entity
24
+ */
25
+ getPlayer(): any;
26
+ /**
27
+ * Get the current location entity
28
+ */
29
+ getCurrentLocation(): any;
30
+ /**
31
+ * Set the player ID
32
+ */
33
+ setPlayerId(playerId: EntityId): void;
34
+ /**
35
+ * Set the current location ID
36
+ */
37
+ setCurrentLocationId(locationId: EntityId): void;
38
+ }
39
+ /**
40
+ * Create a simple rule world from basic state
41
+ */
42
+ export declare function createSimpleRuleWorld(worldState: any, playerId?: EntityId, currentLocationId?: EntityId): IRuleWorld;
43
+ //# sourceMappingURL=rule-world-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-world-adapter.d.ts","sourceRoot":"","sources":["../../src/rules/rule-world-adapter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC;;GAEG;AACH,qBAAa,sBAAuB,YAAW,UAAU;IAErD,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,iBAAiB,CAAC;gBAFlB,UAAU,EAAE,GAAG,EACf,QAAQ,GAAE,QAAmB,EAC7B,iBAAiB,CAAC,EAAE,QAAQ,YAAA;IAGtC;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,QAAQ,GAAG,GAAG;IAI5B;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAa9D;;OAEG;IACH,SAAS,IAAI,GAAG;IAIhB;;OAEG;IACH,kBAAkB,IAAI,GAAG;IAIzB;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAIrC;;OAEG;IACH,oBAAoB,CAAC,UAAU,EAAE,QAAQ,GAAG,IAAI;CAGjD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,GAAG,EACf,QAAQ,GAAE,QAAmB,EAC7B,iBAAiB,CAAC,EAAE,QAAQ,GAC3B,UAAU,CAEZ"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ /**
3
+ * Adapter to make existing world model work with simple rule system
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SimpleRuleWorldAdapter = void 0;
7
+ exports.createSimpleRuleWorld = createSimpleRuleWorld;
8
+ /**
9
+ * Simple adapter for any object-based world state
10
+ */
11
+ class SimpleRuleWorldAdapter {
12
+ worldState;
13
+ playerId;
14
+ currentLocationId;
15
+ constructor(worldState, playerId = 'player', currentLocationId) {
16
+ this.worldState = worldState;
17
+ this.playerId = playerId;
18
+ this.currentLocationId = currentLocationId;
19
+ }
20
+ /**
21
+ * Get an entity by ID
22
+ */
23
+ getEntity(id) {
24
+ return this.worldState.entities?.[id] || this.worldState[id];
25
+ }
26
+ /**
27
+ * Update an entity with new attributes
28
+ */
29
+ updateEntity(id, changes) {
30
+ const entity = this.getEntity(id);
31
+ if (entity) {
32
+ if (entity.attributes) {
33
+ // For entities with attributes object
34
+ Object.assign(entity.attributes, changes);
35
+ }
36
+ else {
37
+ // For flat entity objects
38
+ Object.assign(entity, changes);
39
+ }
40
+ }
41
+ }
42
+ /**
43
+ * Get the player entity
44
+ */
45
+ getPlayer() {
46
+ return this.getEntity(this.playerId);
47
+ }
48
+ /**
49
+ * Get the current location entity
50
+ */
51
+ getCurrentLocation() {
52
+ return this.currentLocationId ? this.getEntity(this.currentLocationId) : undefined;
53
+ }
54
+ /**
55
+ * Set the player ID
56
+ */
57
+ setPlayerId(playerId) {
58
+ this.playerId = playerId;
59
+ }
60
+ /**
61
+ * Set the current location ID
62
+ */
63
+ setCurrentLocationId(locationId) {
64
+ this.currentLocationId = locationId;
65
+ }
66
+ }
67
+ exports.SimpleRuleWorldAdapter = SimpleRuleWorldAdapter;
68
+ /**
69
+ * Create a simple rule world from basic state
70
+ */
71
+ function createSimpleRuleWorld(worldState, playerId = 'player', currentLocationId) {
72
+ return new SimpleRuleWorldAdapter(worldState, playerId, currentLocationId);
73
+ }
74
+ //# sourceMappingURL=rule-world-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-world-adapter.js","sourceRoot":"","sources":["../../src/rules/rule-world-adapter.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAsEH,sDAMC;AAvED;;GAEG;AACH,MAAa,sBAAsB;IAEvB;IACA;IACA;IAHV,YACU,UAAe,EACf,WAAqB,QAAQ,EAC7B,iBAA4B;QAF5B,eAAU,GAAV,UAAU,CAAK;QACf,aAAQ,GAAR,QAAQ,CAAqB;QAC7B,sBAAiB,GAAjB,iBAAiB,CAAW;IACnC,CAAC;IAEJ;;OAEG;IACH,SAAS,CAAC,EAAY;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,EAAY,EAAE,OAA4B;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBACtB,sCAAsC;gBACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACN,0BAA0B;gBAC1B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrF,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,QAAkB;QAC5B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,UAAoB;QACvC,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC;IACtC,CAAC;CACF;AAzDD,wDAyDC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CACnC,UAAe,EACf,WAAqB,QAAQ,EAC7B,iBAA4B;IAE5B,OAAO,IAAI,sBAAsB,CAAC,UAAU,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC7E,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Simple Rule System Implementation
3
+ */
4
+ import { ISemanticEvent } from '../events/types';
5
+ import { IRule, IRuleResult, IRuleWorld, ISimpleRuleSystem } from './types';
6
+ /**
7
+ * Simple rule system implementation
8
+ */
9
+ export declare class SimpleRuleSystemImpl implements ISimpleRuleSystem {
10
+ private rules;
11
+ /**
12
+ * Add a rule to the system
13
+ */
14
+ addRule(rule: IRule): void;
15
+ /**
16
+ * Remove a rule from the system
17
+ */
18
+ removeRule(ruleId: string): void;
19
+ /**
20
+ * Get all rules
21
+ */
22
+ getRules(): IRule[];
23
+ /**
24
+ * Process an event through all matching rules
25
+ */
26
+ processEvent(event: ISemanticEvent, world: IRuleWorld): IRuleResult;
27
+ /**
28
+ * Find rules that match the given event
29
+ */
30
+ private getMatchingRules;
31
+ }
32
+ /**
33
+ * Create a new simple rule system
34
+ */
35
+ export declare function createSimpleRuleSystem(): ISimpleRuleSystem;
36
+ //# sourceMappingURL=simple-rule-system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple-rule-system.d.ts","sourceRoot":"","sources":["../../src/rules/simple-rule-system.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,EAAiB,MAAM,SAAS,CAAC;AAE3F;;GAEG;AACH,qBAAa,oBAAqB,YAAW,iBAAiB;IAC5D,OAAO,CAAC,KAAK,CAAiC;IAE9C;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI;IAI1B;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIhC;;OAEG;IACH,QAAQ,IAAI,KAAK,EAAE;IAInB;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,GAAG,WAAW;IA8FnE;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAezB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,iBAAiB,CAE1D"}
@@ -0,0 +1,135 @@
1
+ "use strict";
2
+ /**
3
+ * Simple Rule System Implementation
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SimpleRuleSystemImpl = void 0;
7
+ exports.createSimpleRuleSystem = createSimpleRuleSystem;
8
+ const event_system_1 = require("../events/event-system");
9
+ const standard_events_1 = require("../events/standard-events");
10
+ /**
11
+ * Simple rule system implementation
12
+ */
13
+ class SimpleRuleSystemImpl {
14
+ rules = new Map();
15
+ /**
16
+ * Add a rule to the system
17
+ */
18
+ addRule(rule) {
19
+ this.rules.set(rule.id, rule);
20
+ }
21
+ /**
22
+ * Remove a rule from the system
23
+ */
24
+ removeRule(ruleId) {
25
+ this.rules.delete(ruleId);
26
+ }
27
+ /**
28
+ * Get all rules
29
+ */
30
+ getRules() {
31
+ return Array.from(this.rules.values());
32
+ }
33
+ /**
34
+ * Process an event through all matching rules
35
+ */
36
+ processEvent(event, world) {
37
+ // Find matching rules
38
+ const matchingRules = this.getMatchingRules(event);
39
+ // Sort by priority (higher first)
40
+ matchingRules.sort((a, b) => (b.priority || 0) - (a.priority || 0));
41
+ let prevented = false;
42
+ let message;
43
+ const allEvents = [];
44
+ const allChanges = [];
45
+ // Process each matching rule
46
+ for (const rule of matchingRules) {
47
+ // Check condition if present
48
+ if (rule.condition && !rule.condition(event, world)) {
49
+ continue;
50
+ }
51
+ // Execute the rule
52
+ let result;
53
+ try {
54
+ result = rule.action(event, world);
55
+ }
56
+ catch (error) {
57
+ console.error(`Error executing rule ${rule.id}:`, error);
58
+ continue; // Skip this rule and continue with others
59
+ }
60
+ // Handle prevention (first rule to prevent wins)
61
+ if (result.prevent && !prevented) {
62
+ prevented = true;
63
+ message = result.message;
64
+ // Create a narrative event for the prevent message
65
+ if (result.message) {
66
+ allEvents.push((0, event_system_1.createEvent)(standard_events_1.StandardEventTypes.NARRATIVE, { message: result.message }, {
67
+ actor: event.entities.actor,
68
+ location: event.entities.location
69
+ }));
70
+ }
71
+ // When prevented, stop processing more rules
72
+ break;
73
+ }
74
+ // Collect events
75
+ if (result.events) {
76
+ allEvents.push(...result.events);
77
+ }
78
+ // Handle message (create narrative event)
79
+ if (result.message && !result.prevent) {
80
+ // Keep the message for the result
81
+ if (!message) {
82
+ message = result.message;
83
+ }
84
+ allEvents.push((0, event_system_1.createEvent)(standard_events_1.StandardEventTypes.NARRATIVE, { message: result.message }, {
85
+ actor: event.entities.actor,
86
+ location: event.entities.location
87
+ }));
88
+ }
89
+ // Collect entity changes
90
+ if (result.changes) {
91
+ allChanges.push(...result.changes);
92
+ }
93
+ }
94
+ // Apply entity changes to the world
95
+ for (const change of allChanges) {
96
+ const entity = world.getEntity(change.entityId);
97
+ if (entity) {
98
+ world.updateEntity(change.entityId, {
99
+ [change.attribute]: change.value
100
+ });
101
+ }
102
+ }
103
+ return {
104
+ prevent: prevented,
105
+ message,
106
+ events: allEvents,
107
+ changes: allChanges
108
+ };
109
+ }
110
+ /**
111
+ * Find rules that match the given event
112
+ */
113
+ getMatchingRules(event) {
114
+ return Array.from(this.rules.values()).filter(rule => {
115
+ // Handle wildcards
116
+ if (rule.eventType === '*')
117
+ return true;
118
+ // Handle category wildcards (e.g., 'item:*')
119
+ if (rule.eventType.endsWith(':*')) {
120
+ const category = rule.eventType.split(':')[0];
121
+ return event.type.startsWith(`${category}:`);
122
+ }
123
+ // Exact match
124
+ return rule.eventType === event.type;
125
+ });
126
+ }
127
+ }
128
+ exports.SimpleRuleSystemImpl = SimpleRuleSystemImpl;
129
+ /**
130
+ * Create a new simple rule system
131
+ */
132
+ function createSimpleRuleSystem() {
133
+ return new SimpleRuleSystemImpl();
134
+ }
135
+ //# sourceMappingURL=simple-rule-system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple-rule-system.js","sourceRoot":"","sources":["../../src/rules/simple-rule-system.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Simple Rule System v2 - Clean, functional design
3
+ */
4
+ import { EntityId } from '../types/entity';
5
+ import { ISemanticEvent } from '../events/types';
6
+ /**
7
+ * Simple world interface for rules - no complex abstractions
8
+ */
9
+ export interface IRuleWorld {
10
+ getEntity(id: EntityId): any;
11
+ updateEntity(id: EntityId, changes: Record<string, any>): void;
12
+ getPlayer(): any;
13
+ getCurrentLocation(): any;
14
+ }
15
+ /**
16
+ * Result of executing a rule
17
+ */
18
+ export interface IRuleResult {
19
+ /** Prevent the original action from happening */
20
+ prevent?: boolean;
21
+ /** Message to display to the player */
22
+ message?: string;
23
+ /** Additional events to generate */
24
+ events?: ISemanticEvent[];
25
+ /** Entity changes to apply */
26
+ changes?: IEntityChange[];
27
+ }
28
+ /**
29
+ * A change to apply to an entity
30
+ */
31
+ export interface IEntityChange {
32
+ entityId: EntityId;
33
+ attribute: string;
34
+ value: any;
35
+ }
36
+ /**
37
+ * A simple rule definition
38
+ */
39
+ export interface IRule {
40
+ /** Unique identifier for the rule */
41
+ id: string;
42
+ /** Event type this rule responds to (e.g., 'item:taking') */
43
+ eventType: string;
44
+ /** Optional condition - if false, rule doesn't fire */
45
+ condition?: (event: ISemanticEvent, world: IRuleWorld) => boolean;
46
+ /** Action to take when rule fires */
47
+ action: (event: ISemanticEvent, world: IRuleWorld) => IRuleResult;
48
+ /** Priority (higher = runs first) */
49
+ priority?: number;
50
+ }
51
+ /**
52
+ * Simple rule system interface
53
+ */
54
+ export interface ISimpleRuleSystem {
55
+ /** Add a rule */
56
+ addRule(rule: IRule): void;
57
+ /** Remove a rule */
58
+ removeRule(ruleId: string): void;
59
+ /** Process an event through all matching rules */
60
+ processEvent(event: ISemanticEvent, world: IRuleWorld): IRuleResult;
61
+ /** Get all rules */
62
+ getRules(): IRule[];
63
+ }
64
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/rules/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,EAAE,QAAQ,GAAG,GAAG,CAAC;IAC7B,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAC/D,SAAS,IAAI,GAAG,CAAC;IACjB,kBAAkB,IAAI,GAAG,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,iDAAiD;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;IAC1B,8BAA8B;IAC9B,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,GAAG,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,qCAAqC;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,uDAAuD;IACvD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC;IAClE,qCAAqC;IACrC,MAAM,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,KAAK,WAAW,CAAC;IAClE,qCAAqC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,iBAAiB;IACjB,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC;IAC3B,oBAAoB;IACpB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,kDAAkD;IAClD,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,GAAG,WAAW,CAAC;IACpE,oBAAoB;IACpB,QAAQ,IAAI,KAAK,EAAE,CAAC;CACrB"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Simple Rule System v2 - Clean, functional design
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/rules/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Possible types for attribute values
3
+ */
4
+ export type AttributeValue = string | number | boolean | null | IAttributeObject | AttributeArray;
5
+ /**
6
+ * An object containing attribute values
7
+ */
8
+ export interface IAttributeObject {
9
+ [key: string]: AttributeValue;
10
+ }
11
+ /**
12
+ * An array of attribute values
13
+ */
14
+ export type AttributeArray = AttributeValue[];
15
+ /**
16
+ * Configuration for an attribute
17
+ */
18
+ export interface IAttributeConfig {
19
+ /**
20
+ * Type validation for this attribute
21
+ */
22
+ type?: 'string' | 'number' | 'boolean' | 'object' | 'array';
23
+ /**
24
+ * Whether this attribute is required for the entity
25
+ */
26
+ required?: boolean;
27
+ /**
28
+ * Default value if none is provided
29
+ */
30
+ default?: AttributeValue;
31
+ /**
32
+ * Custom validation function
33
+ */
34
+ validate?: (value: AttributeValue) => boolean;
35
+ }
36
+ /**
37
+ * A map of attribute configurations
38
+ */
39
+ export type AttributeConfigMap = Record<string, IAttributeConfig>;
40
+ //# sourceMappingURL=attribute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attribute.d.ts","sourceRoot":"","sources":["../../src/types/attribute.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,gBAAgB,GAChB,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,cAAc,EAAE,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;IAE5D;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // packages/core/src/types/attribute.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=attribute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attribute.js","sourceRoot":"","sources":["../../src/types/attribute.ts"],"names":[],"mappings":";AAAA,uCAAuC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Unique identifier for entities
3
+ */
4
+ export type EntityId = string;
5
+ /**
6
+ * The base Entity interface representing any object in a narrative system
7
+ */
8
+ export interface IEntity {
9
+ /**
10
+ * Unique identifier for this entity
11
+ */
12
+ id: EntityId;
13
+ /**
14
+ * The entity type, used for categorization and type checking
15
+ */
16
+ type: string;
17
+ /**
18
+ * Arbitrary attributes/properties of the entity
19
+ */
20
+ attributes: Record<string, unknown>;
21
+ /**
22
+ * Relationships to other entities, organized by relationship type
23
+ */
24
+ relationships: Record<string, EntityId[]>;
25
+ }
26
+ /**
27
+ * Minimal information needed to create a new entity
28
+ */
29
+ export interface IEntityCreationParams {
30
+ type: string;
31
+ attributes?: Record<string, unknown>;
32
+ relationships?: Record<string, EntityId[]>;
33
+ }
34
+ /**
35
+ * Configuration for how entity operations should be performed
36
+ */
37
+ export interface IEntityOperationOptions {
38
+ /**
39
+ * Whether to merge arrays in relationships instead of replacing them
40
+ */
41
+ mergeRelationships?: boolean;
42
+ /**
43
+ * Whether to validate relationship target existence
44
+ */
45
+ validateRelationships?: boolean;
46
+ }
47
+ //# sourceMappingURL=entity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../src/types/entity.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,EAAE,EAAE,QAAQ,CAAC;IAEb;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEpC;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;CAC3C;AAID;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // packages/core/src/types/entity.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/types/entity.ts"],"names":[],"mappings":";AAAA,oCAAoC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Core type definitions for Sharpee
3
+ * These are generic types that can be used by any narrative system
4
+ */
5
+ export * from './entity';
6
+ export * from './relationship';
7
+ export * from './attribute';
8
+ export * from './result';
9
+ export * from './save-data';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ // packages/core/src/types/index.ts
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ /**
19
+ * Core type definitions for Sharpee
20
+ * These are generic types that can be used by any narrative system
21
+ */
22
+ __exportStar(require("./entity"), exports);
23
+ __exportStar(require("./relationship"), exports);
24
+ __exportStar(require("./attribute"), exports);
25
+ __exportStar(require("./result"), exports);
26
+ __exportStar(require("./save-data"), exports);
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA,mCAAmC;;;;;;;;;;;;;;;;AAEnC;;;GAGG;AAEH,2CAAyB;AACzB,iDAA+B;AAC/B,8CAA4B;AAC5B,2CAAyB;AACzB,8CAA4B"}
@@ -0,0 +1,44 @@
1
+ import { EntityId } from './entity';
2
+ /**
3
+ * A generic relationship between two entities
4
+ */
5
+ export interface IRelationship {
6
+ /**
7
+ * The source entity of the relationship
8
+ */
9
+ sourceId: EntityId;
10
+ /**
11
+ * The type of relationship (can be any string)
12
+ */
13
+ type: string;
14
+ /**
15
+ * The target entity of the relationship
16
+ */
17
+ targetId: EntityId;
18
+ /**
19
+ * Optional metadata for the relationship
20
+ */
21
+ metadata?: Record<string, unknown>;
22
+ }
23
+ /**
24
+ * Configuration for creating a relationship
25
+ */
26
+ export interface IRelationshipConfig {
27
+ /**
28
+ * Whether this relationship creates an inverse relationship automatically
29
+ */
30
+ bidirectional?: boolean;
31
+ /**
32
+ * If bidirectional, the name of the inverse relationship
33
+ */
34
+ inverseType?: string;
35
+ /**
36
+ * Whether this relationship is exclusive (replaces previous relationships of same type)
37
+ */
38
+ exclusive?: boolean;
39
+ }
40
+ /**
41
+ * Map of relationship type configurations
42
+ */
43
+ export type RelationshipConfigMap = Record<string, IRelationshipConfig>;
44
+ //# sourceMappingURL=relationship.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relationship.d.ts","sourceRoot":"","sources":["../../src/types/relationship.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,QAAQ,EAAE,QAAQ,CAAC;IAEnB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,QAAQ,EAAE,QAAQ,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // packages/core/src/types/relationship.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=relationship.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relationship.js","sourceRoot":"","sources":["../../src/types/relationship.ts"],"names":[],"mappings":";AAAA,0CAA0C"}