@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,57 @@
1
+ "use strict";
2
+ /**
3
+ * Generic event source infrastructure for the narrative engine.
4
+ * This provides a simple pub/sub mechanism for any type of event.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.SimpleEventSource = void 0;
8
+ exports.createEventSource = createEventSource;
9
+ /**
10
+ * Simple synchronous implementation of EventSource
11
+ */
12
+ class SimpleEventSource {
13
+ handlers = [];
14
+ emit(event) {
15
+ // Create a copy to avoid issues if handlers modify the array
16
+ const currentHandlers = [...this.handlers];
17
+ currentHandlers.forEach(handler => {
18
+ try {
19
+ handler(event);
20
+ }
21
+ catch (error) {
22
+ // Prevent one handler's error from affecting others
23
+ console.error('Error in event handler:', error);
24
+ }
25
+ });
26
+ }
27
+ subscribe(handler) {
28
+ this.handlers.push(handler);
29
+ // Return unsubscribe function
30
+ return () => {
31
+ const index = this.handlers.indexOf(handler);
32
+ if (index > -1) {
33
+ this.handlers.splice(index, 1);
34
+ }
35
+ };
36
+ }
37
+ /**
38
+ * Get the current number of subscribers
39
+ */
40
+ get subscriberCount() {
41
+ return this.handlers.length;
42
+ }
43
+ /**
44
+ * Remove all subscribers
45
+ */
46
+ clear() {
47
+ this.handlers = [];
48
+ }
49
+ }
50
+ exports.SimpleEventSource = SimpleEventSource;
51
+ /**
52
+ * Create a new event source for a specific event type
53
+ */
54
+ function createEventSource() {
55
+ return new SimpleEventSource();
56
+ }
57
+ //# sourceMappingURL=event-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-source.js","sourceRoot":"","sources":["../../src/events/event-source.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAmEH,8CAEC;AAnDD;;GAEG;AACH,MAAa,iBAAiB;IACpB,QAAQ,GAA2B,EAAE,CAAC;IAE9C,IAAI,CAAC,KAAQ;QACX,6DAA6D;QAC7D,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAChC,IAAI,CAAC;gBACH,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,oDAAoD;gBACpD,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAClD,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CAAC,OAA2B;QACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE5B,8BAA8B;QAC9B,OAAO,GAAG,EAAE;YACV,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC7C,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;gBACf,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACjC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;CACF;AAzCD,8CAyCC;AAED;;GAEG;AACH,SAAgB,iBAAiB;IAC/B,OAAO,IAAI,iBAAiB,EAAK,CAAC;AACpC,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { ISemanticEvent } from './types';
2
+ import { EntityId } from '../types/entity';
3
+ import { ISemanticEventSource } from './semantic-event-source';
4
+ /**
5
+ * Create a new semantic event
6
+ */
7
+ export declare function createEvent(type: string, data?: Record<string, unknown>, entities?: {
8
+ actor?: EntityId;
9
+ target?: EntityId;
10
+ instrument?: EntityId;
11
+ location?: EntityId;
12
+ others?: EntityId[];
13
+ }, metadata?: {
14
+ tags?: string[];
15
+ priority?: number;
16
+ narrate?: boolean;
17
+ source?: string;
18
+ sessionId?: string;
19
+ [key: string]: unknown;
20
+ }): ISemanticEvent;
21
+ export { SemanticEventSourceImpl as EventSourceImpl } from './semantic-event-source';
22
+ /**
23
+ * Create a new event source
24
+ * @deprecated Use createSemanticEventSource from './semantic-event-source'
25
+ */
26
+ export declare function createEventSource(): ISemanticEventSource;
27
+ //# sourceMappingURL=event-system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-system.d.ts","sourceRoot":"","sources":["../../src/events/event-system.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAA6B,MAAM,yBAAyB,CAAC;AAE1F;;GAEG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,QAAQ,CAAC,EAAE;IACT,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;CACrB,EACD,QAAQ,CAAC,EAAE;IACT,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,GACA,cAAc,CA+BhB;AAID,OAAO,EAAE,uBAAuB,IAAI,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAoBrF;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,oBAAoB,CAExD"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ // packages/core/src/events/event-system.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.EventSourceImpl = void 0;
5
+ exports.createEvent = createEvent;
6
+ exports.createEventSource = createEventSource;
7
+ const semantic_event_source_1 = require("./semantic-event-source");
8
+ /**
9
+ * Create a new semantic event
10
+ */
11
+ function createEvent(type, data, entities, metadata) {
12
+ // Extract values from metadata
13
+ const tags = metadata?.tags || [];
14
+ const priority = metadata?.priority ?? 0;
15
+ const narrate = metadata?.narrate ?? true;
16
+ // Clean metadata for storage (remove known properties)
17
+ const cleanMetadata = metadata ? { ...metadata } : undefined;
18
+ if (cleanMetadata) {
19
+ delete cleanMetadata.tags;
20
+ delete cleanMetadata.priority;
21
+ delete cleanMetadata.narrate;
22
+ }
23
+ const event = {
24
+ id: generateEventId(),
25
+ type,
26
+ timestamp: Date.now(),
27
+ entities: entities || {},
28
+ data: data || {},
29
+ tags,
30
+ priority,
31
+ narrate
32
+ };
33
+ // Add metadata if provided (excluding extracted properties)
34
+ if (cleanMetadata && Object.keys(cleanMetadata).length > 0) {
35
+ event.metadata = cleanMetadata;
36
+ }
37
+ return event;
38
+ }
39
+ // Event source implementation moved to semantic-event-source.ts
40
+ // Re-export for backwards compatibility
41
+ var semantic_event_source_2 = require("./semantic-event-source");
42
+ Object.defineProperty(exports, "EventSourceImpl", { enumerable: true, get: function () { return semantic_event_source_2.SemanticEventSourceImpl; } });
43
+ // Counter for ensuring unique IDs even with same timestamp
44
+ let eventCounter = 0;
45
+ /**
46
+ * Generate a unique ID for an event
47
+ */
48
+ function generateEventId() {
49
+ // Use the expected format: evt_timestamp_random
50
+ // Increment counter and reset if it gets too large
51
+ eventCounter = (eventCounter + 1) % 10000;
52
+ // Use both random and counter for better uniqueness
53
+ const random = Math.floor(Math.random() * 1000);
54
+ const unique = random + (eventCounter * 1000);
55
+ return `evt_${Date.now()}_${unique}`;
56
+ }
57
+ /**
58
+ * Create a new event source
59
+ * @deprecated Use createSemanticEventSource from './semantic-event-source'
60
+ */
61
+ function createEventSource() {
62
+ return (0, semantic_event_source_1.createSemanticEventSource)();
63
+ }
64
+ //# sourceMappingURL=event-system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-system.js","sourceRoot":"","sources":["../../src/events/event-system.ts"],"names":[],"mappings":";AAAA,2CAA2C;;;AAS3C,kCAiDC;AA4BD,8CAEC;AApFD,mEAA0F;AAE1F;;GAEG;AACH,SAAgB,WAAW,CACzB,IAAY,EACZ,IAA8B,EAC9B,QAMC,EACD,QAOC;IAED,+BAA+B;IAC/B,MAAM,IAAI,GAAG,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAG,QAAQ,EAAE,QAAQ,IAAI,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,IAAI,IAAI,CAAC;IAE1C,uDAAuD;IACvD,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7D,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC,IAAI,CAAC;QAC1B,OAAO,aAAa,CAAC,QAAQ,CAAC;QAC9B,OAAO,aAAa,CAAC,OAAO,CAAC;IAC/B,CAAC;IAED,MAAM,KAAK,GAAmB;QAC5B,EAAE,EAAE,eAAe,EAAE;QACrB,IAAI;QACJ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,QAAQ,EAAE,QAAQ,IAAI,EAAE;QACxB,IAAI,EAAE,IAAI,IAAI,EAAE;QAChB,IAAI;QACJ,QAAQ;QACR,OAAO;KACR,CAAC;IAEF,4DAA4D;IAC5D,IAAI,aAAa,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,KAAa,CAAC,QAAQ,GAAG,aAAa,CAAC;IAC1C,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,gEAAgE;AAChE,wCAAwC;AACxC,iEAAqF;AAA5E,wHAAA,uBAAuB,OAAmB;AAEnD,2DAA2D;AAC3D,IAAI,YAAY,GAAG,CAAC,CAAC;AAErB;;GAEG;AACH,SAAS,eAAe;IACtB,gDAAgD;IAChD,mDAAmD;IACnD,YAAY,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;IAE1C,oDAAoD;IACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAE9C,OAAO,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,MAAM,EAAE,CAAC;AACvC,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB;IAC/B,OAAO,IAAA,iDAAyB,GAAE,CAAC;AACrC,CAAC"}
@@ -0,0 +1,245 @@
1
+ /**
2
+ * Game lifecycle events for tracking game state transitions
3
+ * These events mark important milestones in a game session
4
+ */
5
+ import { ISemanticEvent } from './types';
6
+ /** Story metadata included in game events */
7
+ export interface GameEventStoryData {
8
+ id?: string;
9
+ title?: string;
10
+ author?: string;
11
+ version?: string;
12
+ }
13
+ /** Session tracking data */
14
+ export interface GameEventSessionData {
15
+ startTime?: number;
16
+ endTime?: number;
17
+ turns?: number;
18
+ score?: number;
19
+ moves?: number;
20
+ }
21
+ /** Ending/conclusion data for game end events */
22
+ export interface GameEventEndingData {
23
+ type?: 'victory' | 'defeat' | 'quit' | 'abort';
24
+ reason?: string;
25
+ achieved?: string[];
26
+ score?: number;
27
+ maxScore?: number;
28
+ ranking?: string;
29
+ }
30
+ /** Error data for failure events */
31
+ export interface GameEventErrorData {
32
+ code?: string;
33
+ message?: string;
34
+ stack?: string;
35
+ }
36
+ /** Game state values */
37
+ export type GameState = 'initializing' | 'ready' | 'running' | 'ending' | 'ended';
38
+ export interface GameLifecycleInitializingData {
39
+ gameState: 'initializing';
40
+ [key: string]: unknown;
41
+ }
42
+ export interface GameLifecycleInitializedData {
43
+ gameState: 'ready';
44
+ [key: string]: unknown;
45
+ }
46
+ export interface GameLifecycleStoryLoadingData {
47
+ story?: {
48
+ id?: string;
49
+ };
50
+ [key: string]: unknown;
51
+ }
52
+ export interface GameLifecycleStoryLoadedData {
53
+ story: GameEventStoryData;
54
+ gameState: 'ready';
55
+ [key: string]: unknown;
56
+ }
57
+ export interface GameLifecycleStartingData {
58
+ story?: GameEventStoryData;
59
+ gameState: 'ready';
60
+ [key: string]: unknown;
61
+ }
62
+ export interface GameLifecycleStartedData {
63
+ story?: GameEventStoryData;
64
+ engineVersion?: string;
65
+ clientVersion?: string;
66
+ gameState: 'running';
67
+ session: {
68
+ startTime: number;
69
+ turns: number;
70
+ moves: number;
71
+ };
72
+ [key: string]: unknown;
73
+ }
74
+ export interface GameLifecycleEndingData {
75
+ gameState: 'ending';
76
+ session?: GameEventSessionData;
77
+ ending?: {
78
+ reason?: string;
79
+ };
80
+ [key: string]: unknown;
81
+ }
82
+ export interface GameLifecycleEndedData {
83
+ gameState: 'ended';
84
+ session?: GameEventSessionData & {
85
+ endTime: number;
86
+ };
87
+ ending: GameEventEndingData & {
88
+ type: 'victory' | 'defeat' | 'quit' | 'abort';
89
+ };
90
+ [key: string]: unknown;
91
+ }
92
+ export interface GameLifecycleWonData {
93
+ gameState: 'ended';
94
+ session?: GameEventSessionData & {
95
+ endTime: number;
96
+ };
97
+ ending: GameEventEndingData & {
98
+ type: 'victory';
99
+ };
100
+ [key: string]: unknown;
101
+ }
102
+ export interface GameLifecycleLostData {
103
+ gameState: 'ended';
104
+ session?: GameEventSessionData & {
105
+ endTime: number;
106
+ };
107
+ ending: {
108
+ type: 'defeat';
109
+ reason: string;
110
+ };
111
+ [key: string]: unknown;
112
+ }
113
+ export interface GameLifecycleQuitData {
114
+ gameState: 'ended';
115
+ session?: GameEventSessionData & {
116
+ endTime: number;
117
+ };
118
+ ending: {
119
+ type: 'quit';
120
+ reason: string;
121
+ };
122
+ [key: string]: unknown;
123
+ }
124
+ export interface GameLifecycleAbortedData {
125
+ gameState: 'ended';
126
+ session?: GameEventSessionData & {
127
+ endTime: number;
128
+ };
129
+ ending: {
130
+ type: 'abort';
131
+ reason: string;
132
+ };
133
+ error: {
134
+ message: string;
135
+ };
136
+ [key: string]: unknown;
137
+ }
138
+ export interface GameLifecycleSessionSavingData {
139
+ saveId?: string;
140
+ [key: string]: unknown;
141
+ }
142
+ export interface GameLifecycleSessionSavedData {
143
+ saveId?: string;
144
+ timestamp: number;
145
+ [key: string]: unknown;
146
+ }
147
+ export interface GameLifecycleSessionRestoringData {
148
+ saveId?: string;
149
+ [key: string]: unknown;
150
+ }
151
+ export interface GameLifecycleSessionRestoredData {
152
+ saveId?: string;
153
+ timestamp: number;
154
+ [key: string]: unknown;
155
+ }
156
+ export interface GameLifecycleInitFailedData {
157
+ error: GameEventErrorData;
158
+ [key: string]: unknown;
159
+ }
160
+ export interface GameLifecycleStoryLoadFailedData {
161
+ story?: {
162
+ id?: string;
163
+ };
164
+ error: GameEventErrorData;
165
+ [key: string]: unknown;
166
+ }
167
+ export interface GameLifecycleFatalErrorData {
168
+ error: GameEventErrorData;
169
+ [key: string]: unknown;
170
+ }
171
+ /**
172
+ * Game event types for lifecycle transitions
173
+ */
174
+ export declare const GameEventType: {
175
+ readonly GAME_INITIALIZING: "game.initializing";
176
+ readonly GAME_INITIALIZED: "game.initialized";
177
+ readonly STORY_LOADING: "game.story_loading";
178
+ readonly STORY_LOADED: "game.story_loaded";
179
+ readonly GAME_STARTING: "game.starting";
180
+ readonly GAME_STARTED: "game.started";
181
+ readonly GAME_ENDING: "game.ending";
182
+ readonly GAME_ENDED: "game.ended";
183
+ readonly GAME_WON: "game.won";
184
+ readonly GAME_LOST: "game.lost";
185
+ readonly GAME_QUIT: "game.quit";
186
+ readonly GAME_ABORTED: "game.aborted";
187
+ readonly SESSION_SAVING: "game.session_saving";
188
+ readonly SESSION_SAVED: "game.session_saved";
189
+ readonly SESSION_RESTORING: "game.session_restoring";
190
+ readonly SESSION_RESTORED: "game.session_restored";
191
+ readonly INITIALIZATION_FAILED: "game.initialization_failed";
192
+ readonly STORY_LOAD_FAILED: "game.story_load_failed";
193
+ readonly FATAL_ERROR: "game.fatal_error";
194
+ };
195
+ export type GameEventTypeValue = typeof GameEventType[keyof typeof GameEventType];
196
+ /**
197
+ * Check if an event is a game lifecycle event (any GameEventType).
198
+ * Use specific type guards (isGameStartedEvent, etc.) for typed data access.
199
+ */
200
+ export declare function isGameEvent(event: ISemanticEvent): boolean;
201
+ /**
202
+ * Check if an event is part of the game start sequence.
203
+ */
204
+ export declare function isGameStartSequenceEvent(event: ISemanticEvent): boolean;
205
+ /**
206
+ * Check if an event is part of the game end sequence.
207
+ */
208
+ export declare function isGameEndSequenceEvent(event: ISemanticEvent): boolean;
209
+ /**
210
+ * Create a generic game event with typed data.
211
+ * Use specific creators (createGameStartedEvent, etc.) when possible for type safety.
212
+ */
213
+ export declare function createGameEvent<T extends Record<string, unknown>>(type: GameEventTypeValue, data?: T): ISemanticEvent;
214
+ export declare function createGameInitializingEvent(): ISemanticEvent;
215
+ export declare function createGameInitializedEvent(): ISemanticEvent;
216
+ export declare function createStoryLoadingEvent(storyId?: string): ISemanticEvent;
217
+ export declare function createStoryLoadedEvent(story: GameEventStoryData): ISemanticEvent;
218
+ export declare function createGameStartingEvent(story?: GameEventStoryData): ISemanticEvent;
219
+ export declare function createGameStartedEvent(story?: GameEventStoryData, startTime?: number, engineVersion?: string, clientVersion?: string): ISemanticEvent;
220
+ export declare function createGameEndingEvent(reason?: string, session?: GameEventSessionData): ISemanticEvent;
221
+ export declare function createGameEndedEvent(endingType: 'victory' | 'defeat' | 'quit' | 'abort', session?: GameEventSessionData, ending?: Partial<GameEventEndingData>): ISemanticEvent;
222
+ export declare function createGameWonEvent(session?: GameEventSessionData, ending?: Partial<GameEventEndingData>): ISemanticEvent;
223
+ export declare function createGameLostEvent(reason: string, session?: GameEventSessionData): ISemanticEvent;
224
+ export declare function createGameQuitEvent(session?: GameEventSessionData): ISemanticEvent;
225
+ export declare function createGameAbortedEvent(error: string, session?: GameEventSessionData): ISemanticEvent;
226
+ /** Type guard to check if an event has specific data type */
227
+ export declare function isGameStartedEvent(event: ISemanticEvent): event is ISemanticEvent & {
228
+ data: GameLifecycleStartedData;
229
+ };
230
+ export declare function isGameEndedEvent(event: ISemanticEvent): event is ISemanticEvent & {
231
+ data: GameLifecycleEndedData;
232
+ };
233
+ export declare function isGameWonEvent(event: ISemanticEvent): event is ISemanticEvent & {
234
+ data: GameLifecycleWonData;
235
+ };
236
+ export declare function isGameLostEvent(event: ISemanticEvent): event is ISemanticEvent & {
237
+ data: GameLifecycleLostData;
238
+ };
239
+ export declare function isGameQuitEvent(event: ISemanticEvent): event is ISemanticEvent & {
240
+ data: GameLifecycleQuitData;
241
+ };
242
+ export declare function isGameAbortedEvent(event: ISemanticEvent): event is ISemanticEvent & {
243
+ data: GameLifecycleAbortedData;
244
+ };
245
+ //# sourceMappingURL=game-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"game-events.d.ts","sourceRoot":"","sources":["../../src/events/game-events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+ /**
3
+ * Game lifecycle events for tracking game state transitions
4
+ * These events mark important milestones in a game session
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.GameEventType = void 0;
8
+ exports.isGameEvent = isGameEvent;
9
+ exports.isGameStartSequenceEvent = isGameStartSequenceEvent;
10
+ exports.isGameEndSequenceEvent = isGameEndSequenceEvent;
11
+ exports.createGameEvent = createGameEvent;
12
+ exports.createGameInitializingEvent = createGameInitializingEvent;
13
+ exports.createGameInitializedEvent = createGameInitializedEvent;
14
+ exports.createStoryLoadingEvent = createStoryLoadingEvent;
15
+ exports.createStoryLoadedEvent = createStoryLoadedEvent;
16
+ exports.createGameStartingEvent = createGameStartingEvent;
17
+ exports.createGameStartedEvent = createGameStartedEvent;
18
+ exports.createGameEndingEvent = createGameEndingEvent;
19
+ exports.createGameEndedEvent = createGameEndedEvent;
20
+ exports.createGameWonEvent = createGameWonEvent;
21
+ exports.createGameLostEvent = createGameLostEvent;
22
+ exports.createGameQuitEvent = createGameQuitEvent;
23
+ exports.createGameAbortedEvent = createGameAbortedEvent;
24
+ exports.isGameStartedEvent = isGameStartedEvent;
25
+ exports.isGameEndedEvent = isGameEndedEvent;
26
+ exports.isGameWonEvent = isGameWonEvent;
27
+ exports.isGameLostEvent = isGameLostEvent;
28
+ exports.isGameQuitEvent = isGameQuitEvent;
29
+ exports.isGameAbortedEvent = isGameAbortedEvent;
30
+ // =============================================================================
31
+ // Game Event Type Constants
32
+ // =============================================================================
33
+ /**
34
+ * Game event types for lifecycle transitions
35
+ */
36
+ exports.GameEventType = {
37
+ // Game start events
38
+ GAME_INITIALIZING: 'game.initializing', // Engine is setting up
39
+ GAME_INITIALIZED: 'game.initialized', // Engine ready, before story
40
+ STORY_LOADING: 'game.story_loading', // Story is being loaded
41
+ STORY_LOADED: 'game.story_loaded', // Story loaded successfully
42
+ GAME_STARTING: 'game.starting', // Game is about to start
43
+ GAME_STARTED: 'game.started', // Game has started, ready for input
44
+ // Game end events
45
+ GAME_ENDING: 'game.ending', // Game is about to end
46
+ GAME_ENDED: 'game.ended', // Game has ended normally
47
+ GAME_WON: 'game.won', // Player achieved victory
48
+ GAME_LOST: 'game.lost', // Player was defeated
49
+ GAME_QUIT: 'game.quit', // Player quit the game
50
+ GAME_ABORTED: 'game.aborted', // Game ended abnormally
51
+ // Session events
52
+ SESSION_SAVING: 'game.session_saving', // Save in progress
53
+ SESSION_SAVED: 'game.session_saved', // Save completed
54
+ SESSION_RESTORING: 'game.session_restoring', // Restore in progress
55
+ SESSION_RESTORED: 'game.session_restored', // Restore completed
56
+ // Error events
57
+ INITIALIZATION_FAILED: 'game.initialization_failed',
58
+ STORY_LOAD_FAILED: 'game.story_load_failed',
59
+ FATAL_ERROR: 'game.fatal_error'
60
+ };
61
+ /**
62
+ * Check if an event is a game lifecycle event (any GameEventType).
63
+ * Use specific type guards (isGameStartedEvent, etc.) for typed data access.
64
+ */
65
+ function isGameEvent(event) {
66
+ return Object.values(exports.GameEventType).includes(event.type);
67
+ }
68
+ /**
69
+ * Check if an event is part of the game start sequence.
70
+ */
71
+ function isGameStartSequenceEvent(event) {
72
+ return (event.type === exports.GameEventType.GAME_INITIALIZING ||
73
+ event.type === exports.GameEventType.GAME_INITIALIZED ||
74
+ event.type === exports.GameEventType.STORY_LOADING ||
75
+ event.type === exports.GameEventType.STORY_LOADED ||
76
+ event.type === exports.GameEventType.GAME_STARTING ||
77
+ event.type === exports.GameEventType.GAME_STARTED);
78
+ }
79
+ /**
80
+ * Check if an event is part of the game end sequence.
81
+ */
82
+ function isGameEndSequenceEvent(event) {
83
+ return (event.type === exports.GameEventType.GAME_ENDING ||
84
+ event.type === exports.GameEventType.GAME_ENDED ||
85
+ event.type === exports.GameEventType.GAME_WON ||
86
+ event.type === exports.GameEventType.GAME_LOST ||
87
+ event.type === exports.GameEventType.GAME_QUIT ||
88
+ event.type === exports.GameEventType.GAME_ABORTED);
89
+ }
90
+ // =============================================================================
91
+ // Helper Functions to Create Game Events
92
+ // =============================================================================
93
+ /**
94
+ * Generate a unique event ID
95
+ */
96
+ function generateEventId() {
97
+ return `game-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
98
+ }
99
+ /**
100
+ * Create a generic game event with typed data.
101
+ * Use specific creators (createGameStartedEvent, etc.) when possible for type safety.
102
+ */
103
+ function createGameEvent(type, data) {
104
+ return {
105
+ id: generateEventId(),
106
+ type,
107
+ timestamp: Date.now(),
108
+ entities: {},
109
+ data: data || {}
110
+ };
111
+ }
112
+ // Specific event creators - all return ISemanticEvent with typed data
113
+ function createGameInitializingEvent() {
114
+ return createGameEvent(exports.GameEventType.GAME_INITIALIZING, {
115
+ gameState: 'initializing'
116
+ });
117
+ }
118
+ function createGameInitializedEvent() {
119
+ return createGameEvent(exports.GameEventType.GAME_INITIALIZED, {
120
+ gameState: 'ready'
121
+ });
122
+ }
123
+ function createStoryLoadingEvent(storyId) {
124
+ return createGameEvent(exports.GameEventType.STORY_LOADING, {
125
+ story: { id: storyId }
126
+ });
127
+ }
128
+ function createStoryLoadedEvent(story) {
129
+ return createGameEvent(exports.GameEventType.STORY_LOADED, {
130
+ story,
131
+ gameState: 'ready'
132
+ });
133
+ }
134
+ function createGameStartingEvent(story) {
135
+ return createGameEvent(exports.GameEventType.GAME_STARTING, {
136
+ story,
137
+ gameState: 'ready'
138
+ });
139
+ }
140
+ function createGameStartedEvent(story, startTime, engineVersion, clientVersion) {
141
+ return createGameEvent(exports.GameEventType.GAME_STARTED, {
142
+ story,
143
+ engineVersion,
144
+ clientVersion,
145
+ gameState: 'running',
146
+ session: {
147
+ startTime: startTime || Date.now(),
148
+ turns: 0,
149
+ moves: 0
150
+ }
151
+ });
152
+ }
153
+ function createGameEndingEvent(reason, session) {
154
+ return createGameEvent(exports.GameEventType.GAME_ENDING, {
155
+ gameState: 'ending',
156
+ session,
157
+ ending: { reason }
158
+ });
159
+ }
160
+ function createGameEndedEvent(endingType, session, ending) {
161
+ return createGameEvent(exports.GameEventType.GAME_ENDED, {
162
+ gameState: 'ended',
163
+ session: {
164
+ ...session,
165
+ endTime: Date.now()
166
+ },
167
+ ending: {
168
+ ...ending,
169
+ type: endingType
170
+ }
171
+ });
172
+ }
173
+ function createGameWonEvent(session, ending) {
174
+ return createGameEvent(exports.GameEventType.GAME_WON, {
175
+ gameState: 'ended',
176
+ session: {
177
+ ...session,
178
+ endTime: Date.now()
179
+ },
180
+ ending: {
181
+ ...ending,
182
+ type: 'victory'
183
+ }
184
+ });
185
+ }
186
+ function createGameLostEvent(reason, session) {
187
+ return createGameEvent(exports.GameEventType.GAME_LOST, {
188
+ gameState: 'ended',
189
+ session: {
190
+ ...session,
191
+ endTime: Date.now()
192
+ },
193
+ ending: {
194
+ type: 'defeat',
195
+ reason
196
+ }
197
+ });
198
+ }
199
+ function createGameQuitEvent(session) {
200
+ return createGameEvent(exports.GameEventType.GAME_QUIT, {
201
+ gameState: 'ended',
202
+ session: {
203
+ ...session,
204
+ endTime: Date.now()
205
+ },
206
+ ending: {
207
+ type: 'quit',
208
+ reason: 'Player quit'
209
+ }
210
+ });
211
+ }
212
+ function createGameAbortedEvent(error, session) {
213
+ return createGameEvent(exports.GameEventType.GAME_ABORTED, {
214
+ gameState: 'ended',
215
+ session: {
216
+ ...session,
217
+ endTime: Date.now()
218
+ },
219
+ ending: {
220
+ type: 'abort',
221
+ reason: error
222
+ },
223
+ error: {
224
+ message: error
225
+ }
226
+ });
227
+ }
228
+ // =============================================================================
229
+ // Type Guards for Game Events
230
+ // =============================================================================
231
+ /** Type guard to check if an event has specific data type */
232
+ function isGameStartedEvent(event) {
233
+ return event.type === exports.GameEventType.GAME_STARTED;
234
+ }
235
+ function isGameEndedEvent(event) {
236
+ return event.type === exports.GameEventType.GAME_ENDED;
237
+ }
238
+ function isGameWonEvent(event) {
239
+ return event.type === exports.GameEventType.GAME_WON;
240
+ }
241
+ function isGameLostEvent(event) {
242
+ return event.type === exports.GameEventType.GAME_LOST;
243
+ }
244
+ function isGameQuitEvent(event) {
245
+ return event.type === exports.GameEventType.GAME_QUIT;
246
+ }
247
+ function isGameAbortedEvent(event) {
248
+ return event.type === exports.GameEventType.GAME_ABORTED;
249
+ }
250
+ //# sourceMappingURL=game-events.js.map