@sharpee/core 0.9.66-beta → 0.9.69-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 (197) hide show
  1. package/constants/attributes.d.ts +32 -0
  2. package/constants/attributes.d.ts.map +1 -0
  3. package/constants/attributes.js +53 -0
  4. package/constants/attributes.js.map +1 -0
  5. package/constants/core-events.d.ts +37 -0
  6. package/constants/core-events.d.ts.map +1 -0
  7. package/constants/core-events.js +50 -0
  8. package/constants/core-events.js.map +1 -0
  9. package/constants/entity-types.d.ts +15 -0
  10. package/constants/entity-types.d.ts.map +1 -0
  11. package/constants/entity-types.js +27 -0
  12. package/constants/entity-types.js.map +1 -0
  13. package/constants/index.d.ts +22 -0
  14. package/constants/index.d.ts.map +1 -0
  15. package/constants/index.js +41 -0
  16. package/constants/index.js.map +1 -0
  17. package/constants/relationships.d.ts +25 -0
  18. package/constants/relationships.d.ts.map +1 -0
  19. package/constants/relationships.js +55 -0
  20. package/constants/relationships.js.map +1 -0
  21. package/debug/index.d.ts +5 -0
  22. package/debug/index.d.ts.map +1 -0
  23. package/debug/index.js +21 -0
  24. package/debug/index.js.map +1 -0
  25. package/debug/types.d.ts +65 -0
  26. package/debug/types.d.ts.map +1 -0
  27. package/debug/types.js +39 -0
  28. package/debug/types.js.map +1 -0
  29. package/events/event-factory.d.ts +81 -0
  30. package/events/event-factory.d.ts.map +1 -0
  31. package/events/event-factory.js +74 -0
  32. package/events/event-factory.js.map +1 -0
  33. package/events/event-helpers.d.ts +118 -0
  34. package/events/event-helpers.d.ts.map +1 -0
  35. package/events/event-helpers.js +151 -0
  36. package/events/event-helpers.js.map +1 -0
  37. package/events/event-registry.d.ts +154 -0
  38. package/events/event-registry.d.ts.map +1 -0
  39. package/events/event-registry.js +24 -0
  40. package/events/event-registry.js.map +1 -0
  41. package/events/event-source.d.ts +39 -0
  42. package/events/event-source.d.ts.map +1 -0
  43. package/events/event-source.js +57 -0
  44. package/events/event-source.js.map +1 -0
  45. package/events/event-system.d.ts +27 -0
  46. package/events/event-system.d.ts.map +1 -0
  47. package/events/event-system.js +64 -0
  48. package/events/event-system.js.map +1 -0
  49. package/events/game-events.d.ts +246 -0
  50. package/events/game-events.d.ts.map +1 -0
  51. package/events/game-events.js +250 -0
  52. package/events/game-events.js.map +1 -0
  53. package/events/index.d.ts +19 -0
  54. package/events/index.d.ts.map +1 -0
  55. package/events/index.js +51 -0
  56. package/events/index.js.map +1 -0
  57. package/events/platform-events.d.ts +161 -0
  58. package/events/platform-events.d.ts.map +1 -0
  59. package/events/platform-events.js +135 -0
  60. package/events/platform-events.js.map +1 -0
  61. package/events/semantic-event-source.d.ts +85 -0
  62. package/events/semantic-event-source.d.ts.map +1 -0
  63. package/events/semantic-event-source.js +147 -0
  64. package/events/semantic-event-source.js.map +1 -0
  65. package/events/standard-events.d.ts +26 -0
  66. package/events/standard-events.d.ts.map +1 -0
  67. package/events/standard-events.js +27 -0
  68. package/events/standard-events.js.map +1 -0
  69. package/events/system-event.d.ts +62 -0
  70. package/events/system-event.d.ts.map +1 -0
  71. package/events/system-event.js +55 -0
  72. package/events/system-event.js.map +1 -0
  73. package/events/typed-event.d.ts +69 -0
  74. package/events/typed-event.d.ts.map +1 -0
  75. package/events/typed-event.js +20 -0
  76. package/events/typed-event.js.map +1 -0
  77. package/events/types.d.ts +105 -0
  78. package/events/types.d.ts.map +1 -0
  79. package/events/types.js +4 -0
  80. package/events/types.js.map +1 -0
  81. package/execution/index.d.ts +2 -0
  82. package/execution/index.d.ts.map +1 -0
  83. package/execution/index.js +23 -0
  84. package/execution/index.js.map +1 -0
  85. package/execution/types.d.ts +117 -0
  86. package/execution/types.d.ts.map +1 -0
  87. package/execution/types.js +4 -0
  88. package/execution/types.js.map +1 -0
  89. package/extensions/index.d.ts +3 -0
  90. package/extensions/index.d.ts.map +1 -0
  91. package/extensions/index.js +20 -0
  92. package/extensions/index.js.map +1 -0
  93. package/extensions/registry.d.ts +61 -0
  94. package/extensions/registry.d.ts.map +1 -0
  95. package/extensions/registry.js +153 -0
  96. package/extensions/registry.js.map +1 -0
  97. package/extensions/types.d.ts +84 -0
  98. package/extensions/types.d.ts.map +1 -0
  99. package/extensions/types.js +15 -0
  100. package/extensions/types.js.map +1 -0
  101. package/ifid/ifid.d.ts +30 -0
  102. package/ifid/ifid.d.ts.map +1 -0
  103. package/ifid/ifid.js +52 -0
  104. package/ifid/ifid.js.map +1 -0
  105. package/ifid/index.d.ts +2 -0
  106. package/ifid/index.d.ts.map +1 -0
  107. package/ifid/index.js +9 -0
  108. package/ifid/index.js.map +1 -0
  109. package/index.d.ts +11 -0
  110. package/index.d.ts.map +1 -0
  111. package/index.js +36 -0
  112. package/index.js.map +1 -0
  113. package/metadata/index.d.ts +2 -0
  114. package/metadata/index.d.ts.map +1 -0
  115. package/metadata/index.js +3 -0
  116. package/metadata/index.js.map +1 -0
  117. package/metadata/story-metadata.d.ts +64 -0
  118. package/metadata/story-metadata.d.ts.map +1 -0
  119. package/metadata/story-metadata.js +5 -0
  120. package/metadata/story-metadata.js.map +1 -0
  121. package/package.json +1 -16
  122. package/query/index.d.ts +9 -0
  123. package/query/index.d.ts.map +1 -0
  124. package/query/index.js +25 -0
  125. package/query/index.js.map +1 -0
  126. package/query/query-manager.d.ts +86 -0
  127. package/query/query-manager.d.ts.map +1 -0
  128. package/query/query-manager.js +391 -0
  129. package/query/query-manager.js.map +1 -0
  130. package/query/types.d.ts +188 -0
  131. package/query/types.d.ts.map +1 -0
  132. package/query/types.js +106 -0
  133. package/query/types.js.map +1 -0
  134. package/random/index.d.ts +5 -0
  135. package/random/index.d.ts.map +1 -0
  136. package/random/index.js +9 -0
  137. package/random/index.js.map +1 -0
  138. package/random/seeded-random.d.ts +32 -0
  139. package/random/seeded-random.d.ts.map +1 -0
  140. package/random/seeded-random.js +62 -0
  141. package/random/seeded-random.js.map +1 -0
  142. package/rules/compatibility.d.ts +46 -0
  143. package/rules/compatibility.d.ts.map +1 -0
  144. package/rules/compatibility.js +62 -0
  145. package/rules/compatibility.js.map +1 -0
  146. package/rules/condition-builder.d.ts +23 -0
  147. package/rules/condition-builder.d.ts.map +1 -0
  148. package/rules/condition-builder.js +16 -0
  149. package/rules/condition-builder.js.map +1 -0
  150. package/rules/helpers.d.ts +51 -0
  151. package/rules/helpers.d.ts.map +1 -0
  152. package/rules/helpers.js +111 -0
  153. package/rules/helpers.js.map +1 -0
  154. package/rules/index.d.ts +12 -0
  155. package/rules/index.d.ts.map +1 -0
  156. package/rules/index.js +34 -0
  157. package/rules/index.js.map +1 -0
  158. package/rules/rule-system.d.ts +6 -0
  159. package/rules/rule-system.d.ts.map +1 -0
  160. package/rules/rule-system.js +10 -0
  161. package/rules/rule-system.js.map +1 -0
  162. package/rules/rule-world-adapter.d.ts +43 -0
  163. package/rules/rule-world-adapter.d.ts.map +1 -0
  164. package/rules/rule-world-adapter.js +74 -0
  165. package/rules/rule-world-adapter.js.map +1 -0
  166. package/rules/simple-rule-system.d.ts +36 -0
  167. package/rules/simple-rule-system.d.ts.map +1 -0
  168. package/rules/simple-rule-system.js +135 -0
  169. package/rules/simple-rule-system.js.map +1 -0
  170. package/rules/types.d.ts +64 -0
  171. package/rules/types.d.ts.map +1 -0
  172. package/rules/types.js +6 -0
  173. package/rules/types.js.map +1 -0
  174. package/types/attribute.d.ts +40 -0
  175. package/types/attribute.d.ts.map +1 -0
  176. package/types/attribute.js +4 -0
  177. package/types/attribute.js.map +1 -0
  178. package/types/entity.d.ts +47 -0
  179. package/types/entity.d.ts.map +1 -0
  180. package/types/entity.js +4 -0
  181. package/types/entity.js.map +1 -0
  182. package/types/index.d.ts +10 -0
  183. package/types/index.d.ts.map +1 -0
  184. package/types/index.js +27 -0
  185. package/types/index.js.map +1 -0
  186. package/types/relationship.d.ts +44 -0
  187. package/types/relationship.d.ts.map +1 -0
  188. package/types/relationship.js +4 -0
  189. package/types/relationship.js.map +1 -0
  190. package/types/result.d.ts +81 -0
  191. package/types/result.d.ts.map +1 -0
  192. package/types/result.js +79 -0
  193. package/types/result.js.map +1 -0
  194. package/types/save-data.d.ts +266 -0
  195. package/types/save-data.d.ts.map +1 -0
  196. package/types/save-data.js +6 -0
  197. package/types/save-data.js.map +1 -0
@@ -0,0 +1,62 @@
1
+ /**
2
+ * System events are used for debugging, monitoring, and system-level notifications.
3
+ * These are separate from SemanticEvents which represent story-meaningful occurrences.
4
+ */
5
+ /**
6
+ * System event for debugging and monitoring
7
+ */
8
+ export interface ISystemEvent {
9
+ /**
10
+ * Unique identifier for this event instance
11
+ */
12
+ id: string;
13
+ /**
14
+ * Timestamp when the event occurred
15
+ */
16
+ timestamp: number;
17
+ /**
18
+ * Which subsystem emitted this event
19
+ */
20
+ subsystem: string;
21
+ /**
22
+ * Type of system event (e.g., 'parse_attempt', 'validation_error', 'entity_resolved')
23
+ */
24
+ type: string;
25
+ /**
26
+ * Event-specific data
27
+ */
28
+ data: unknown;
29
+ /**
30
+ * Optional severity level
31
+ */
32
+ severity?: 'debug' | 'info' | 'warning' | 'error';
33
+ /**
34
+ * Optional correlation ID to track related events
35
+ */
36
+ correlationId?: string;
37
+ }
38
+ /**
39
+ * Common subsystem identifiers
40
+ */
41
+ export declare const Subsystems: {
42
+ readonly PARSER: "parser";
43
+ readonly VALIDATOR: "validator";
44
+ readonly EXECUTOR: "executor";
45
+ readonly WORLD_MODEL: "world-model";
46
+ readonly TEXT_SERVICE: "text-service";
47
+ readonly EVENT_PROCESSOR: "event-processor";
48
+ readonly RULE_ENGINE: "rule-engine";
49
+ };
50
+ export type SubsystemType = typeof Subsystems[keyof typeof Subsystems];
51
+ /**
52
+ * Helper to create a system event with common fields
53
+ */
54
+ export declare function createSystemEvent(subsystem: string, type: string, data: unknown, options?: {
55
+ severity?: ISystemEvent['severity'];
56
+ correlationId?: string;
57
+ }): ISystemEvent;
58
+ /**
59
+ * Type guard to check if an object is a SystemEvent
60
+ */
61
+ export declare function isSystemEvent(obj: unknown): obj is ISystemEvent;
62
+ //# sourceMappingURL=system-event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-event.d.ts","sourceRoot":"","sources":["../../../../../../mnt/c/repotemp/sharpee/packages/core/src/events/system-event.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IAElD;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;CAQb,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,OAAO,UAAU,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAEvE;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GACA,YAAY,CASd;AAWD;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,YAAY,CAU/D"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ /**
3
+ * System events are used for debugging, monitoring, and system-level notifications.
4
+ * These are separate from SemanticEvents which represent story-meaningful occurrences.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.Subsystems = void 0;
8
+ exports.createSystemEvent = createSystemEvent;
9
+ exports.isSystemEvent = isSystemEvent;
10
+ /**
11
+ * Common subsystem identifiers
12
+ */
13
+ exports.Subsystems = {
14
+ PARSER: 'parser',
15
+ VALIDATOR: 'validator',
16
+ EXECUTOR: 'executor',
17
+ WORLD_MODEL: 'world-model',
18
+ TEXT_SERVICE: 'text-service',
19
+ EVENT_PROCESSOR: 'event-processor',
20
+ RULE_ENGINE: 'rule-engine',
21
+ };
22
+ /**
23
+ * Helper to create a system event with common fields
24
+ */
25
+ function createSystemEvent(subsystem, type, data, options) {
26
+ return {
27
+ id: generateEventId(),
28
+ timestamp: Date.now(),
29
+ subsystem,
30
+ type,
31
+ data,
32
+ ...options
33
+ };
34
+ }
35
+ /**
36
+ * Simple ID generator for events
37
+ * In production, might use UUID or similar
38
+ */
39
+ let eventCounter = 0;
40
+ function generateEventId() {
41
+ return `sys_${Date.now()}_${++eventCounter}`;
42
+ }
43
+ /**
44
+ * Type guard to check if an object is a SystemEvent
45
+ */
46
+ function isSystemEvent(obj) {
47
+ return (typeof obj === 'object' &&
48
+ obj !== null &&
49
+ 'id' in obj &&
50
+ 'timestamp' in obj &&
51
+ 'subsystem' in obj &&
52
+ 'type' in obj &&
53
+ 'data' in obj);
54
+ }
55
+ //# sourceMappingURL=system-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"system-event.js","sourceRoot":"","sources":["../../../../../../mnt/c/repotemp/sharpee/packages/core/src/events/system-event.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AA4DH,8CAiBC;AAcD,sCAUC;AA3DD;;GAEG;AACU,QAAA,UAAU,GAAG;IACxB,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,aAAa;IAC1B,YAAY,EAAE,cAAc;IAC5B,eAAe,EAAE,iBAAiB;IAClC,WAAW,EAAE,aAAa;CAClB,CAAC;AAIX;;GAEG;AACH,SAAgB,iBAAiB,CAC/B,SAAiB,EACjB,IAAY,EACZ,IAAa,EACb,OAGC;IAED,OAAO;QACL,EAAE,EAAE,eAAe,EAAE;QACrB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,SAAS;QACT,IAAI;QACJ,IAAI;QACJ,GAAG,OAAO;KACX,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,IAAI,YAAY,GAAG,CAAC,CAAC;AACrB,SAAS,eAAe;IACtB,OAAO,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,GAAY;IACxC,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,IAAI,IAAI,GAAG;QACX,WAAW,IAAI,GAAG;QAClB,WAAW,IAAI,GAAG;QAClB,MAAM,IAAI,GAAG;QACb,MAAM,IAAI,GAAG,CACd,CAAC;AACJ,CAAC"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Typed Semantic Event - Generic event interface with compile-time type safety
3
+ *
4
+ * @see ADR-082 for design rationale
5
+ */
6
+ import { EventDataRegistry, EventType } from './event-registry';
7
+ import { ISemanticEvent } from './types';
8
+ /**
9
+ * A semantic event with typed data based on the event type.
10
+ *
11
+ * Use this when you know the specific event type at compile time.
12
+ * The `data` property is strictly typed based on the event type.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * const event: TypedSemanticEvent<'query.invalid'> = {
17
+ * id: 'evt-1',
18
+ * type: 'query.invalid',
19
+ * timestamp: Date.now(),
20
+ * entities: {},
21
+ * data: { message: 'Invalid input', hint: 'Try again' }
22
+ * };
23
+ *
24
+ * // TypeScript knows event.data.message is string | undefined
25
+ * console.log(event.data.message);
26
+ * ```
27
+ */
28
+ export interface TypedSemanticEvent<T extends EventType> extends Omit<ISemanticEvent, 'type' | 'data'> {
29
+ /**
30
+ * The event type - a literal string type for discrimination.
31
+ */
32
+ type: T;
33
+ /**
34
+ * Typed event data based on the event type.
35
+ */
36
+ data: EventDataRegistry[T];
37
+ }
38
+ /**
39
+ * Union of all known typed semantic events.
40
+ *
41
+ * Use this for exhaustive event handling where you want TypeScript
42
+ * to verify you've handled all event types.
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * function handleEvent(event: KnownSemanticEvent) {
47
+ * switch (event.type) {
48
+ * case 'query.invalid':
49
+ * // TypeScript knows event.data is QueryInvalidData
50
+ * return event.data.message;
51
+ * case 'query.pending':
52
+ * // TypeScript knows event.data is QueryPendingData
53
+ * return event.data.query.messageId;
54
+ * // ... handle all cases
55
+ * }
56
+ * }
57
+ * ```
58
+ */
59
+ export type KnownSemanticEvent = {
60
+ [K in EventType]: TypedSemanticEvent<K>;
61
+ }[EventType];
62
+ /**
63
+ * Type guard to check if an ISemanticEvent is a known typed event.
64
+ *
65
+ * This is useful when you have an ISemanticEvent and want to narrow
66
+ * it to a KnownSemanticEvent for exhaustive handling.
67
+ */
68
+ export declare function isKnownEvent(event: ISemanticEvent): event is KnownSemanticEvent;
69
+ //# sourceMappingURL=typed-event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-event.d.ts","sourceRoot":"","sources":["../../../../../../mnt/c/repotemp/sharpee/packages/core/src/events/typed-event.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,SAAS,CACrD,SAAQ,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7C;;OAEG;IACH,IAAI,EAAE,CAAC,CAAC;IAER;;OAEG;IACH,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,kBAAkB,GAAG;KAC9B,CAAC,IAAI,SAAS,GAAG,kBAAkB,CAAC,CAAC,CAAC;CACxC,CAAC,SAAS,CAAC,CAAC;AAEb;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,KAAK,IAAI,kBAAkB,CAI/E"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ /**
3
+ * Typed Semantic Event - Generic event interface with compile-time type safety
4
+ *
5
+ * @see ADR-082 for design rationale
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.isKnownEvent = isKnownEvent;
9
+ /**
10
+ * Type guard to check if an ISemanticEvent is a known typed event.
11
+ *
12
+ * This is useful when you have an ISemanticEvent and want to narrow
13
+ * it to a KnownSemanticEvent for exhaustive handling.
14
+ */
15
+ function isKnownEvent(event) {
16
+ // Check if the event type is in our registry
17
+ // This is a runtime check that the type string is known
18
+ return event.type in {};
19
+ }
20
+ //# sourceMappingURL=typed-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-event.js","sourceRoot":"","sources":["../../../../../../mnt/c/repotemp/sharpee/packages/core/src/events/typed-event.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAqEH,oCAIC;AAVD;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,KAAqB;IAChD,6CAA6C;IAC7C,wDAAwD;IACxD,OAAO,KAAK,CAAC,IAAI,IAAK,EAAwB,CAAC;AACjD,CAAC"}
@@ -0,0 +1,105 @@
1
+ import { EntityId } from '../types/entity';
2
+ /**
3
+ * Represents a semantic event in the system
4
+ */
5
+ export interface ISemanticEvent {
6
+ /**
7
+ * Unique identifier for this event
8
+ */
9
+ id: string;
10
+ /**
11
+ * The type of event
12
+ */
13
+ type: string;
14
+ /**
15
+ * Timestamp when the event was created
16
+ */
17
+ timestamp: number;
18
+ /**
19
+ * Entity IDs relevant to this event
20
+ */
21
+ entities: {
22
+ /**
23
+ * The entity that initiated the event (often the player)
24
+ */
25
+ actor?: EntityId;
26
+ /**
27
+ * The primary entity that the event affects
28
+ */
29
+ target?: EntityId;
30
+ /**
31
+ * A secondary entity involved in the event
32
+ */
33
+ instrument?: EntityId;
34
+ /**
35
+ * A location where the event occurred
36
+ */
37
+ location?: EntityId;
38
+ /**
39
+ * Other relevant entities
40
+ */
41
+ others?: EntityId[];
42
+ };
43
+ /**
44
+ * Event data - can contain any shape of data needed for the event
45
+ * Use type assertions to access typed data: event.data as MyEventData
46
+ */
47
+ data?: unknown;
48
+ /**
49
+ * Tags for categorizing and filtering events
50
+ */
51
+ tags?: string[];
52
+ /**
53
+ * Priority of the event (higher numbers are more important)
54
+ */
55
+ priority?: number;
56
+ /**
57
+ * Whether this event should be narrated
58
+ */
59
+ narrate?: boolean;
60
+ }
61
+ export { ISemanticEventSource as EventSource } from './semantic-event-source';
62
+ /**
63
+ * Event listener for semantic events
64
+ */
65
+ export type EventListener = (event: ISemanticEvent) => void;
66
+ /**
67
+ * Event emitter for semantic events
68
+ */
69
+ export interface IEventEmitter {
70
+ /**
71
+ * Add an event listener for a specific event type
72
+ * Use '*' to listen to all events
73
+ */
74
+ on: (type: string, listener: EventListener) => void;
75
+ /**
76
+ * Remove an event listener
77
+ */
78
+ off: (type: string, listener: EventListener) => void;
79
+ /**
80
+ * Emit an event
81
+ */
82
+ emit: (event: ISemanticEvent) => void;
83
+ }
84
+ /**
85
+ * Configuration options for the event system
86
+ */
87
+ export interface IEventSystemOptions {
88
+ /**
89
+ * Maximum number of events to store in memory
90
+ */
91
+ maxEvents?: number;
92
+ /**
93
+ * Whether to emit events immediately when added
94
+ */
95
+ emitOnAdd?: boolean;
96
+ /**
97
+ * Custom filter for events that should be emitted
98
+ */
99
+ emitFilter?: (event: ISemanticEvent) => boolean;
100
+ }
101
+ /**
102
+ * Type alias for backwards compatibility
103
+ */
104
+ export type Event = ISemanticEvent;
105
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../mnt/c/repotemp/sharpee/packages/core/src/events/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,QAAQ,EAAE;QACR;;WAEG;QACH,KAAK,CAAC,EAAE,QAAQ,CAAC;QAEjB;;WAEG;QACH,MAAM,CAAC,EAAE,QAAQ,CAAC;QAElB;;WAEG;QACH,UAAU,CAAC,EAAE,QAAQ,CAAC;QAEtB;;WAEG;QACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;QAEpB;;WAEG;QACH,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;KACrB,CAAC;IAEF;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAID,OAAO,EAAE,oBAAoB,IAAI,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE9E;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;IAEpD;;OAEG;IACH,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;IAErD;;OAEG;IACH,IAAI,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CACvC;AAID;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,OAAO,CAAC;CACjD;AAED;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG,cAAc,CAAC"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // packages/core/src/events/types.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../mnt/c/repotemp/sharpee/packages/core/src/events/types.ts"],"names":[],"mappings":";AAAA,oCAAoC"}
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../mnt/c/repotemp/sharpee/packages/core/src/execution/index.ts"],"names":[],"mappings":"AAEA,cAAc,SAAS,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ // packages/core/src/execution/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
+ __exportStar(require("./types"), exports);
19
+ // command-router has been moved to stdlib as it depends on GameContext
20
+ // command-handler has been moved to stdlib as it depends on parser and GameContext
21
+ // game-context has been moved to stdlib as it depends on world-model
22
+ // actions have been moved to stdlib as they depend on parser and GameContext
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../mnt/c/repotemp/sharpee/packages/core/src/execution/index.ts"],"names":[],"mappings":";AAAA,uCAAuC;;;;;;;;;;;;;;;;AAEvC,0CAAwB;AACxB,uEAAuE;AACvE,mFAAmF;AACnF,qEAAqE;AACrE,6EAA6E"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Generic context interface for execution
3
+ * Domain-specific contexts should extend this interface
4
+ */
5
+ export interface IExecutionContext {
6
+ /**
7
+ * Additional context data
8
+ */
9
+ [key: string]: any;
10
+ }
11
+ /**
12
+ * Generic handler interface for any command-like system
13
+ * This is kept generic - specific implementations (IF, visual novel, etc)
14
+ * should define their own command and result types
15
+ */
16
+ export interface ICommandHandler<TCommand = any, TResult = any> {
17
+ /**
18
+ * The verb or verbs that this handler can process
19
+ */
20
+ verbs: string[];
21
+ /**
22
+ * Check if this handler can handle the given command
23
+ */
24
+ canHandle: (command: TCommand, context: IExecutionContext) => boolean;
25
+ /**
26
+ * Execute the command
27
+ */
28
+ execute: (command: TCommand, context: IExecutionContext) => Promise<TResult> | TResult;
29
+ /**
30
+ * Validate the command before execution
31
+ */
32
+ validate?: (command: TCommand, context: IExecutionContext) => {
33
+ valid: boolean;
34
+ error?: string;
35
+ };
36
+ }
37
+ /**
38
+ * Generic action interface
39
+ * Actions are handlers with unique identifiers
40
+ */
41
+ export interface IAction<TCommand = any, TResult = any> extends ICommandHandler<TCommand, TResult> {
42
+ /**
43
+ * Unique identifier for the action
44
+ */
45
+ id: string;
46
+ /**
47
+ * Action metadata (if any)
48
+ */
49
+ metadata?: any;
50
+ }
51
+ /**
52
+ * Generic router interface for command-like systems
53
+ */
54
+ export interface ICommandRouter<TCommand = any, TResult = any> {
55
+ /**
56
+ * Register a command handler
57
+ */
58
+ registerHandler: (handler: ICommandHandler<TCommand, TResult>) => void;
59
+ /**
60
+ * Unregister a command handler
61
+ */
62
+ unregisterHandler: (handler: ICommandHandler<TCommand, TResult>) => void;
63
+ /**
64
+ * Get a handler for the command
65
+ */
66
+ getHandler: (command: TCommand, context: IExecutionContext) => ICommandHandler<TCommand, TResult> | undefined;
67
+ /**
68
+ * Route and execute a command
69
+ */
70
+ execute: (command: TCommand, context: IExecutionContext, options?: ICommandExecutionOptions<TCommand>) => Promise<TResult>;
71
+ /**
72
+ * Process the result of command execution and return text output
73
+ */
74
+ processResult?: (result: TResult) => string;
75
+ }
76
+ /**
77
+ * Generic factory interface for creating handlers
78
+ */
79
+ export interface ICommandHandlerFactory<TCommand = any, TResult = any> {
80
+ /**
81
+ * Create a standard command handler
82
+ */
83
+ createHandler: (config: {
84
+ verbs: string[];
85
+ canHandle?: (command: TCommand, context: IExecutionContext) => boolean;
86
+ execute: (command: TCommand, context: IExecutionContext) => Promise<TResult> | TResult;
87
+ validate?: (command: TCommand, context: IExecutionContext) => {
88
+ valid: boolean;
89
+ error?: string;
90
+ };
91
+ }) => ICommandHandler<TCommand, TResult>;
92
+ }
93
+ /**
94
+ * Options for command execution
95
+ */
96
+ export interface ICommandExecutionOptions<TCommand = any, TResult = any> {
97
+ /**
98
+ * Whether to skip validation
99
+ */
100
+ skipValidation?: boolean;
101
+ /**
102
+ * Custom validation callback
103
+ */
104
+ customValidation?: (command: TCommand, context: IExecutionContext) => {
105
+ valid: boolean;
106
+ error?: string;
107
+ };
108
+ /**
109
+ * Pre-execution hooks
110
+ */
111
+ preExecute?: ((command: TCommand, context: IExecutionContext) => Promise<void> | void)[];
112
+ /**
113
+ * Post-execution hooks
114
+ */
115
+ postExecute?: ((result: TResult, command: TCommand, context: IExecutionContext) => Promise<TResult> | TResult)[];
116
+ }
117
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../mnt/c/repotemp/sharpee/packages/core/src/execution/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ // packages/core/src/execution/types.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../mnt/c/repotemp/sharpee/packages/core/src/execution/types.ts"],"names":[],"mappings":";AAAA,uCAAuC"}
@@ -0,0 +1,3 @@
1
+ export * from './types';
2
+ export * from './registry';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../mnt/c/repotemp/sharpee/packages/core/src/extensions/index.ts"],"names":[],"mappings":"AAEA,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ // packages/core/src/extensions/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
+ __exportStar(require("./types"), exports);
19
+ __exportStar(require("./registry"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../mnt/c/repotemp/sharpee/packages/core/src/extensions/index.ts"],"names":[],"mappings":";AAAA,wCAAwC;;;;;;;;;;;;;;;;AAExC,0CAAwB;AACxB,6CAA2B"}
@@ -0,0 +1,61 @@
1
+ import { AnyExtension, ExtensionType } from './types';
2
+ /**
3
+ * Registry for extensions
4
+ */
5
+ export declare class ExtensionRegistry {
6
+ private extensions;
7
+ private processingOrder;
8
+ /**
9
+ * Register an extension
10
+ * @param type Type of extension
11
+ * @param extension The extension to register
12
+ */
13
+ register<T extends AnyExtension>(type: ExtensionType, extension: T): void;
14
+ /**
15
+ * Get an extension by type and id
16
+ * @param type Type of extension
17
+ * @param id Extension ID
18
+ */
19
+ get<T extends AnyExtension>(type: ExtensionType, id: string): T | undefined;
20
+ /**
21
+ * Get all extensions of a specific type
22
+ * @param type Type of extension
23
+ */
24
+ getAll<T extends AnyExtension>(type: ExtensionType): T[];
25
+ /**
26
+ * Set the processing order for a specific extension type
27
+ * @param type Type of extension
28
+ * @param orderedIds Ordered list of extension IDs
29
+ */
30
+ setProcessingOrder(type: ExtensionType, orderedIds: string[]): void;
31
+ /**
32
+ * Check if an extension is registered
33
+ * @param type Type of extension
34
+ * @param id Extension ID
35
+ */
36
+ has(type: ExtensionType, id: string): boolean;
37
+ /**
38
+ * Remove an extension
39
+ * @param type Type of extension
40
+ * @param id Extension ID
41
+ */
42
+ remove(type: ExtensionType, id: string): boolean;
43
+ /**
44
+ * Get the number of registered extensions of a specific type
45
+ * @param type Type of extension
46
+ */
47
+ count(type: ExtensionType): number;
48
+ /**
49
+ * Initialize an extension if needed
50
+ */
51
+ private initializeExtension;
52
+ /**
53
+ * Clean up an extension if needed
54
+ */
55
+ private cleanupExtension;
56
+ }
57
+ /**
58
+ * Create a new extension registry
59
+ */
60
+ export declare function createExtensionRegistry(): ExtensionRegistry;
61
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../../../mnt/c/repotemp/sharpee/packages/core/src/extensions/registry.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEtD;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,UAAU,CAA4D;IAC9E,OAAO,CAAC,eAAe,CAA2C;IAElE;;;;OAIG;IACI,QAAQ,CAAC,CAAC,SAAS,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI;IAuBhF;;;;OAIG;IACI,GAAG,CAAC,CAAC,SAAS,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAOlF;;;OAGG;IACI,MAAM,CAAC,CAAC,SAAS,YAAY,EAAE,IAAI,EAAE,aAAa,GAAG,CAAC,EAAE;IAY/D;;;;OAIG;IACI,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI;IA0B1E;;;;OAIG;IACI,GAAG,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAOpD;;;;OAIG;IACI,MAAM,CAAC,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO;IAuBvD;;;OAGG;IACI,KAAK,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM;IAOzC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAK3B;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAIzB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,iBAAiB,CAE3D"}