@sharpee/engine 0.9.62-beta → 0.9.64-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 (81) hide show
  1. package/dist-npm/action-context-factory.d.ts +2 -2
  2. package/dist-npm/action-context-factory.d.ts.map +1 -1
  3. package/dist-npm/action-context-factory.js +3 -3
  4. package/dist-npm/action-context-factory.js.map +1 -1
  5. package/dist-npm/capability-dispatch-helper.d.ts +3 -3
  6. package/dist-npm/capability-dispatch-helper.d.ts.map +1 -1
  7. package/dist-npm/capability-dispatch-helper.js +1 -1
  8. package/dist-npm/capability-dispatch-helper.js.map +1 -1
  9. package/dist-npm/command-executor.d.ts +5 -5
  10. package/dist-npm/command-executor.d.ts.map +1 -1
  11. package/dist-npm/command-executor.js +2 -2
  12. package/dist-npm/command-executor.js.map +1 -1
  13. package/dist-npm/event-adapter.d.ts +1 -1
  14. package/dist-npm/event-adapter.d.ts.map +1 -1
  15. package/dist-npm/event-adapter.js.map +1 -1
  16. package/dist-npm/event-sequencer.d.ts.map +1 -1
  17. package/dist-npm/event-sequencer.js.map +1 -1
  18. package/dist-npm/events/event-emitter.d.ts +2 -2
  19. package/dist-npm/events/event-emitter.d.ts.map +1 -1
  20. package/dist-npm/events/event-emitter.js.map +1 -1
  21. package/dist-npm/game-engine.d.ts +7 -7
  22. package/dist-npm/game-engine.d.ts.map +1 -1
  23. package/dist-npm/game-engine.js +11 -10
  24. package/dist-npm/game-engine.js.map +1 -1
  25. package/dist-npm/index.d.ts +1 -1
  26. package/dist-npm/index.d.ts.map +1 -1
  27. package/dist-npm/index.js +1 -1
  28. package/dist-npm/index.js.map +1 -1
  29. package/dist-npm/narrative/index.d.ts.map +1 -1
  30. package/dist-npm/narrative/index.js.map +1 -1
  31. package/dist-npm/narrative/narrative-settings.d.ts +1 -1
  32. package/dist-npm/narrative/narrative-settings.d.ts.map +1 -1
  33. package/dist-npm/narrative/narrative-settings.js.map +1 -1
  34. package/dist-npm/parser-interface.d.ts +2 -2
  35. package/dist-npm/parser-interface.d.ts.map +1 -1
  36. package/dist-npm/parser-interface.js.map +1 -1
  37. package/dist-npm/platform-operations.d.ts +2 -2
  38. package/dist-npm/platform-operations.d.ts.map +1 -1
  39. package/dist-npm/platform-operations.js +1 -1
  40. package/dist-npm/platform-operations.js.map +1 -1
  41. package/dist-npm/save-restore-service.d.ts +3 -3
  42. package/dist-npm/save-restore-service.d.ts.map +1 -1
  43. package/dist-npm/save-restore-service.js +2 -2
  44. package/dist-npm/save-restore-service.js.map +1 -1
  45. package/dist-npm/scheduler/index.d.ts +9 -0
  46. package/dist-npm/scheduler/index.d.ts.map +1 -0
  47. package/dist-npm/scheduler/index.js +25 -0
  48. package/dist-npm/scheduler/index.js.map +1 -0
  49. package/dist-npm/scheduler/scheduler-service.d.ts +75 -0
  50. package/dist-npm/scheduler/scheduler-service.d.ts.map +1 -0
  51. package/dist-npm/scheduler/scheduler-service.js +310 -0
  52. package/dist-npm/scheduler/scheduler-service.js.map +1 -0
  53. package/dist-npm/scheduler/seeded-random.d.ts +7 -0
  54. package/dist-npm/scheduler/seeded-random.d.ts.map +1 -0
  55. package/dist-npm/scheduler/seeded-random.js +11 -0
  56. package/dist-npm/scheduler/seeded-random.js.map +1 -0
  57. package/dist-npm/scheduler/types.d.ts +134 -0
  58. package/dist-npm/scheduler/types.d.ts.map +1 -0
  59. package/dist-npm/scheduler/types.js +9 -0
  60. package/dist-npm/scheduler/types.js.map +1 -0
  61. package/dist-npm/shared-data-keys.d.ts +3 -3
  62. package/dist-npm/shared-data-keys.d.ts.map +1 -1
  63. package/dist-npm/shared-data-keys.js.map +1 -1
  64. package/dist-npm/story.d.ts +4 -4
  65. package/dist-npm/story.d.ts.map +1 -1
  66. package/dist-npm/story.js.map +1 -1
  67. package/dist-npm/test-helpers/mock-text-service.d.ts +3 -3
  68. package/dist-npm/test-helpers/mock-text-service.d.ts.map +1 -1
  69. package/dist-npm/test-helpers/mock-text-service.js.map +1 -1
  70. package/dist-npm/turn-event-processor.d.ts +3 -3
  71. package/dist-npm/turn-event-processor.d.ts.map +1 -1
  72. package/dist-npm/turn-event-processor.js +1 -1
  73. package/dist-npm/turn-event-processor.js.map +1 -1
  74. package/dist-npm/types.d.ts +3 -3
  75. package/dist-npm/types.d.ts.map +1 -1
  76. package/dist-npm/types.js.map +1 -1
  77. package/dist-npm/vocabulary-manager.d.ts +1 -1
  78. package/dist-npm/vocabulary-manager.d.ts.map +1 -1
  79. package/dist-npm/vocabulary-manager.js +1 -1
  80. package/dist-npm/vocabulary-manager.js.map +1 -1
  81. package/package.json +14 -15
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler-service.d.ts","sourceRoot":"","sources":["../../src/scheduler/scheduler-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,310 @@
1
+ "use strict";
2
+ /**
3
+ * SchedulerService - Manages Daemons and Fuses (ADR-071)
4
+ *
5
+ * The scheduler runs during the turn cycle, after NPCs act:
6
+ * 1. Player action
7
+ * 2. NPC turns
8
+ * 3. Scheduler tick (daemons run, fuses count down)
9
+ * 4. Turn complete
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SchedulerService = void 0;
13
+ exports.createSchedulerService = createSchedulerService;
14
+ const seeded_random_1 = require("./seeded-random");
15
+ /**
16
+ * Create a unique event ID
17
+ */
18
+ function createEventId(prefix) {
19
+ return `${prefix}_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
20
+ }
21
+ /**
22
+ * SchedulerService implementation
23
+ */
24
+ class SchedulerService {
25
+ daemons = new Map();
26
+ daemonStates = new Map();
27
+ fuses = new Map();
28
+ fuseStates = new Map();
29
+ random;
30
+ currentTurn = 0;
31
+ constructor(seed) {
32
+ this.random = (0, seeded_random_1.createSeededRandom)(seed);
33
+ }
34
+ // ==================== Daemon Management ====================
35
+ registerDaemon(daemon) {
36
+ if (this.daemons.has(daemon.id)) {
37
+ throw new Error(`Daemon with id "${daemon.id}" already exists`);
38
+ }
39
+ this.daemons.set(daemon.id, daemon);
40
+ this.daemonStates.set(daemon.id, {
41
+ id: daemon.id,
42
+ isPaused: false,
43
+ runCount: 0,
44
+ });
45
+ }
46
+ removeDaemon(id) {
47
+ this.daemons.delete(id);
48
+ this.daemonStates.delete(id);
49
+ }
50
+ pauseDaemon(id) {
51
+ const state = this.daemonStates.get(id);
52
+ if (state) {
53
+ state.isPaused = true;
54
+ }
55
+ }
56
+ resumeDaemon(id) {
57
+ const state = this.daemonStates.get(id);
58
+ if (state) {
59
+ state.isPaused = false;
60
+ }
61
+ }
62
+ hasDaemon(id) {
63
+ return this.daemons.has(id);
64
+ }
65
+ // ==================== Fuse Management ====================
66
+ setFuse(fuse) {
67
+ // Store original turns for repeating fuses
68
+ const fuseWithOriginal = {
69
+ ...fuse,
70
+ originalTurns: fuse.originalTurns ?? fuse.turns,
71
+ };
72
+ this.fuses.set(fuse.id, fuseWithOriginal);
73
+ this.fuseStates.set(fuse.id, {
74
+ id: fuse.id,
75
+ turnsRemaining: fuse.turns,
76
+ isPaused: false,
77
+ entityId: fuse.entityId,
78
+ });
79
+ }
80
+ cancelFuse(id) {
81
+ const fuse = this.fuses.get(id);
82
+ const state = this.fuseStates.get(id);
83
+ if (!fuse || !state) {
84
+ return [];
85
+ }
86
+ // Call onCancel if defined
87
+ let events = [];
88
+ if (fuse.onCancel) {
89
+ const context = this.createContext(undefined, this.currentTurn, '');
90
+ try {
91
+ events = fuse.onCancel(context);
92
+ }
93
+ catch (error) {
94
+ console.error(`Error in fuse "${id}" onCancel:`, error);
95
+ }
96
+ }
97
+ this.fuses.delete(id);
98
+ this.fuseStates.delete(id);
99
+ return events;
100
+ }
101
+ getFuseRemaining(id) {
102
+ return this.fuseStates.get(id)?.turnsRemaining;
103
+ }
104
+ adjustFuse(id, delta) {
105
+ const state = this.fuseStates.get(id);
106
+ if (state) {
107
+ state.turnsRemaining = Math.max(0, state.turnsRemaining + delta);
108
+ }
109
+ }
110
+ pauseFuse(id) {
111
+ const state = this.fuseStates.get(id);
112
+ if (state) {
113
+ state.isPaused = true;
114
+ }
115
+ }
116
+ resumeFuse(id) {
117
+ const state = this.fuseStates.get(id);
118
+ if (state) {
119
+ state.isPaused = false;
120
+ }
121
+ }
122
+ hasFuse(id) {
123
+ return this.fuses.has(id);
124
+ }
125
+ // ==================== Tick (Main Loop) ====================
126
+ tick(world, turn, playerId) {
127
+ this.currentTurn = turn;
128
+ const events = [];
129
+ const fusesTriggered = [];
130
+ const daemonsRun = [];
131
+ // Get player location
132
+ const playerLocation = world.getLocation(playerId) || '';
133
+ // Create context
134
+ const context = this.createContext(world, turn, playerLocation, playerId);
135
+ // 1. Run daemons (sorted by priority, highest first)
136
+ const sortedDaemons = this.getSortedDaemons();
137
+ for (const daemon of sortedDaemons) {
138
+ const state = this.daemonStates.get(daemon.id);
139
+ if (!state || state.isPaused)
140
+ continue;
141
+ // Check condition
142
+ if (daemon.condition && !daemon.condition(context)) {
143
+ continue;
144
+ }
145
+ // Run the daemon
146
+ try {
147
+ const daemonEvents = daemon.run(context);
148
+ if (daemonEvents.length > 0) {
149
+ events.push(...daemonEvents);
150
+ daemonsRun.push(daemon.id);
151
+ state.runCount++;
152
+ // Remove if runOnce and produced events
153
+ if (daemon.runOnce) {
154
+ this.removeDaemon(daemon.id);
155
+ }
156
+ }
157
+ }
158
+ catch (error) {
159
+ console.error(`Error running daemon "${daemon.id}":`, error);
160
+ }
161
+ }
162
+ // 2. Process fuses
163
+ const fusesToRemove = [];
164
+ const sortedFuses = this.getSortedFuses();
165
+ for (const fuse of sortedFuses) {
166
+ const state = this.fuseStates.get(fuse.id);
167
+ if (!state || state.isPaused)
168
+ continue;
169
+ // Check tick condition
170
+ if (fuse.tickCondition && !fuse.tickCondition(context)) {
171
+ continue;
172
+ }
173
+ // Decrement turns
174
+ state.turnsRemaining--;
175
+ // Check if triggered
176
+ if (state.turnsRemaining <= 0) {
177
+ try {
178
+ const fuseEvents = fuse.trigger(context);
179
+ events.push(...fuseEvents);
180
+ fusesTriggered.push(fuse.id);
181
+ if (fuse.repeat && fuse.originalTurns) {
182
+ // Reset for repeat
183
+ state.turnsRemaining = fuse.originalTurns;
184
+ }
185
+ else {
186
+ // Mark for removal
187
+ fusesToRemove.push(fuse.id);
188
+ }
189
+ }
190
+ catch (error) {
191
+ console.error(`Error triggering fuse "${fuse.id}":`, error);
192
+ fusesToRemove.push(fuse.id);
193
+ }
194
+ }
195
+ }
196
+ // Remove triggered fuses
197
+ for (const id of fusesToRemove) {
198
+ this.fuses.delete(id);
199
+ this.fuseStates.delete(id);
200
+ }
201
+ return { events, fusesTriggered, daemonsRun };
202
+ }
203
+ // ==================== Introspection ====================
204
+ getActiveDaemons() {
205
+ const infos = [];
206
+ for (const [id, daemon] of this.daemons) {
207
+ const state = this.daemonStates.get(id);
208
+ if (!state)
209
+ continue;
210
+ infos.push({
211
+ id: daemon.id,
212
+ name: daemon.name,
213
+ isPaused: state.isPaused,
214
+ runCount: state.runCount,
215
+ priority: daemon.priority ?? 0,
216
+ });
217
+ }
218
+ return infos.sort((a, b) => b.priority - a.priority);
219
+ }
220
+ getActiveFuses() {
221
+ const infos = [];
222
+ for (const [id, fuse] of this.fuses) {
223
+ const state = this.fuseStates.get(id);
224
+ if (!state)
225
+ continue;
226
+ infos.push({
227
+ id: fuse.id,
228
+ name: fuse.name,
229
+ turnsRemaining: state.turnsRemaining,
230
+ isPaused: state.isPaused,
231
+ entityId: state.entityId,
232
+ priority: fuse.priority ?? 0,
233
+ repeat: fuse.repeat ?? false,
234
+ });
235
+ }
236
+ return infos.sort((a, b) => b.priority - a.priority);
237
+ }
238
+ // ==================== Serialization ====================
239
+ getState() {
240
+ const daemons = [];
241
+ const fuses = [];
242
+ for (const state of this.daemonStates.values()) {
243
+ daemons.push({ ...state });
244
+ }
245
+ for (const state of this.fuseStates.values()) {
246
+ fuses.push({ ...state });
247
+ }
248
+ return {
249
+ turn: this.currentTurn,
250
+ daemons,
251
+ fuses,
252
+ randomSeed: this.random.getSeed(),
253
+ };
254
+ }
255
+ setState(state) {
256
+ this.currentTurn = state.turn;
257
+ this.random.setSeed(state.randomSeed);
258
+ // Restore daemon states (daemons must be re-registered at game start)
259
+ for (const daemonState of state.daemons) {
260
+ if (this.daemons.has(daemonState.id)) {
261
+ this.daemonStates.set(daemonState.id, { ...daemonState });
262
+ }
263
+ }
264
+ // Restore fuse states (fuses must be re-registered at game start)
265
+ for (const fuseState of state.fuses) {
266
+ if (this.fuses.has(fuseState.id)) {
267
+ this.fuseStates.set(fuseState.id, { ...fuseState });
268
+ }
269
+ }
270
+ }
271
+ // ==================== Entity Cleanup ====================
272
+ cleanupEntity(entityId) {
273
+ const events = [];
274
+ // Cancel any fuses bound to this entity
275
+ for (const [id, state] of this.fuseStates) {
276
+ if (state.entityId === entityId) {
277
+ events.push(...this.cancelFuse(id));
278
+ }
279
+ }
280
+ return events;
281
+ }
282
+ // ==================== Random Access ====================
283
+ getRandom() {
284
+ return this.random;
285
+ }
286
+ // ==================== Private Helpers ====================
287
+ createContext(world, turn, playerLocation, playerId) {
288
+ return {
289
+ world,
290
+ turn,
291
+ random: this.random,
292
+ playerLocation,
293
+ playerId: playerId || '',
294
+ };
295
+ }
296
+ getSortedDaemons() {
297
+ return Array.from(this.daemons.values()).sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
298
+ }
299
+ getSortedFuses() {
300
+ return Array.from(this.fuses.values()).sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
301
+ }
302
+ }
303
+ exports.SchedulerService = SchedulerService;
304
+ /**
305
+ * Create a new SchedulerService instance
306
+ */
307
+ function createSchedulerService(seed) {
308
+ return new SchedulerService(seed);
309
+ }
310
+ //# sourceMappingURL=scheduler-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler-service.js","sourceRoot":"","sources":["../../src/scheduler/scheduler-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Seeded Random Number Generator
3
+ *
4
+ * Re-exports from @sharpee/core for convenience.
5
+ */
6
+ export { createSeededRandom, SeededRandom } from "../../../core/dist-npm/src/index";
7
+ //# sourceMappingURL=seeded-random.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seeded-random.d.ts","sourceRoot":"","sources":["../../src/scheduler/seeded-random.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ /**
3
+ * Seeded Random Number Generator
4
+ *
5
+ * Re-exports from @sharpee/core for convenience.
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.createSeededRandom = void 0;
9
+ var core_1 = require("../../../core/dist-npm/src/index.js");
10
+ Object.defineProperty(exports, "createSeededRandom", { enumerable: true, get: function () { return core_1.createSeededRandom; } });
11
+ //# sourceMappingURL=seeded-random.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seeded-random.js","sourceRoot":"","sources":["../../src/scheduler/seeded-random.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,sCAAiE;AAAxD,0GAAA,kBAAkB,OAAA"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Scheduler types for Daemons and Fuses (ADR-071)
3
+ *
4
+ * Daemons: Processes that run every turn
5
+ * Fuses: Countdown timers that trigger after N turns
6
+ */
7
+ import { ISemanticEvent, EntityId, SeededRandom } from "../../../core/dist-npm/src/index";
8
+ import { WorldModel } from "../../../world-model/dist-npm/src/index";
9
+ export { SeededRandom } from "../../../core/dist-npm/src/index";
10
+ /**
11
+ * Context passed to daemon and fuse handlers
12
+ */
13
+ export interface SchedulerContext {
14
+ /** The world model */
15
+ world: WorldModel;
16
+ /** Current turn number */
17
+ turn: number;
18
+ /** Seeded random number generator */
19
+ random: SeededRandom;
20
+ /** Player's current location */
21
+ playerLocation: EntityId;
22
+ /** Player entity ID */
23
+ playerId: EntityId;
24
+ }
25
+ /**
26
+ * A daemon is a function that runs every turn
27
+ */
28
+ export interface Daemon {
29
+ /** Unique identifier */
30
+ id: string;
31
+ /** Human-readable name for debugging */
32
+ name: string;
33
+ /** Condition for running (optional - if omitted, always runs) */
34
+ condition?: (context: SchedulerContext) => boolean;
35
+ /** The daemon's action - returns semantic events */
36
+ run: (context: SchedulerContext) => ISemanticEvent[];
37
+ /** Priority for ordering (higher = runs first, default 0) */
38
+ priority?: number;
39
+ /** If true, daemon removes itself after first successful run */
40
+ runOnce?: boolean;
41
+ }
42
+ /**
43
+ * A fuse is a countdown timer that triggers after N turns
44
+ */
45
+ export interface Fuse {
46
+ /** Unique identifier */
47
+ id: string;
48
+ /** Human-readable name for debugging */
49
+ name: string;
50
+ /** Turns until trigger (counts down each tick) */
51
+ turns: number;
52
+ /** What happens when it triggers - returns semantic events */
53
+ trigger: (context: SchedulerContext) => ISemanticEvent[];
54
+ /** Optional: entity this fuse is bound to (for automatic cleanup) */
55
+ entityId?: EntityId;
56
+ /** Optional: condition for ticking (if false, turn doesn't count down) */
57
+ tickCondition?: (context: SchedulerContext) => boolean;
58
+ /** What happens if cancelled before triggering (cleanup) */
59
+ onCancel?: (context: SchedulerContext) => ISemanticEvent[];
60
+ /** Priority for ordering multiple simultaneous triggers */
61
+ priority?: number;
62
+ /** If true, fuse repeats after triggering */
63
+ repeat?: boolean;
64
+ /** Original turns value for repeating fuses */
65
+ originalTurns?: number;
66
+ }
67
+ /**
68
+ * Runtime state for a daemon
69
+ */
70
+ export interface DaemonState {
71
+ id: string;
72
+ isPaused: boolean;
73
+ runCount: number;
74
+ }
75
+ /**
76
+ * Runtime state for a fuse
77
+ */
78
+ export interface FuseState {
79
+ id: string;
80
+ turnsRemaining: number;
81
+ isPaused: boolean;
82
+ entityId?: EntityId;
83
+ }
84
+ /**
85
+ * Info about an active daemon (for debugging/introspection)
86
+ */
87
+ export interface DaemonInfo {
88
+ id: string;
89
+ name: string;
90
+ isPaused: boolean;
91
+ runCount: number;
92
+ priority: number;
93
+ }
94
+ /**
95
+ * Info about an active fuse (for debugging/introspection)
96
+ */
97
+ export interface FuseInfo {
98
+ id: string;
99
+ name: string;
100
+ turnsRemaining: number;
101
+ isPaused: boolean;
102
+ entityId?: EntityId;
103
+ priority: number;
104
+ repeat: boolean;
105
+ }
106
+ /**
107
+ * Result of a scheduler tick
108
+ */
109
+ export interface SchedulerResult {
110
+ /** Events generated by daemons and fuses */
111
+ events: ISemanticEvent[];
112
+ /** IDs of fuses that triggered this tick */
113
+ fusesTriggered: string[];
114
+ /** IDs of daemons that ran this tick */
115
+ daemonsRun: string[];
116
+ }
117
+ /**
118
+ * Serializable scheduler state for save/load
119
+ */
120
+ export interface SchedulerState {
121
+ /** Current turn number */
122
+ turn: number;
123
+ /** Daemon states */
124
+ daemons: DaemonState[];
125
+ /** Fuse states */
126
+ fuses: FuseState[];
127
+ /** Random seed */
128
+ randomSeed: number;
129
+ }
130
+ /**
131
+ * Scheduler event types for lifecycle events
132
+ */
133
+ export type SchedulerEventType = 'daemon.registered' | 'daemon.removed' | 'daemon.paused' | 'daemon.resumed' | 'fuse.set' | 'fuse.triggered' | 'fuse.cancelled' | 'fuse.paused' | 'fuse.resumed';
134
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/scheduler/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /**
3
+ * Scheduler types for Daemons and Fuses (ADR-071)
4
+ *
5
+ * Daemons: Processes that run every turn
6
+ * Fuses: Countdown timers that trigger after N turns
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/scheduler/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
@@ -7,9 +7,9 @@
7
7
  * This file defines only engine-level keys. Actions define their own
8
8
  * action-specific keys as needed.
9
9
  */
10
- import type { ISemanticEvent } from '@sharpee/core';
11
- import type { IFEntity } from '@sharpee/world-model';
12
- import type { ValidationResult } from '@sharpee/stdlib';
10
+ import type { ISemanticEvent } from "../../core/dist-npm/src/index";
11
+ import type { IFEntity } from "../../world-model/dist-npm/src/index";
12
+ import type { ValidationResult } from "../../stdlib/dist-npm/src/index";
13
13
  /**
14
14
  * Constants for engine-level sharedData keys.
15
15
  * Using constants prevents typos and enables IDE autocomplete.
@@ -1 +1 @@
1
- {"version":3,"file":"shared-data-keys.d.ts","sourceRoot":"","sources":["../src/shared-data-keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,cAAc;IACzB,wDAAwD;;IAGxD,kDAAkD;;IAGlD,iDAAiD;;IAGjD,kDAAkD;;IAGlD,gDAAgD;;CAExC,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,cAAc,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAEnF;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8CAA8C;IAC9C,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC,EAAE,OAAO,CAAC;IAE/C,kDAAkD;IAClD,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC;IAE5C,iDAAiD;IACjD,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC;IAE5C,wCAAwC;IACxC,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC;IAEzD,gDAAgD;IAChD,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,EAAE,gBAAgB,CAAC;IAEtD,4CAA4C;IAC5C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
1
+ {"version":3,"file":"shared-data-keys.d.ts","sourceRoot":"","sources":["../../../../src/shared-data-keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,cAAc;IACzB,wDAAwD;;IAGxD,kDAAkD;;IAGlD,iDAAiD;;IAGjD,kDAAkD;;IAGlD,gDAAgD;;CAExC,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,OAAO,cAAc,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAEnF;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,8CAA8C;IAC9C,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC,EAAE,OAAO,CAAC;IAE/C,kDAAkD;IAClD,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC;IAE5C,iDAAiD;IACjD,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,EAAE,QAAQ,CAAC;IAE5C,wCAAwC;IACxC,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC;IAEzD,gDAAgD;IAChD,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,EAAE,gBAAgB,CAAC;IAEtD,4CAA4C;IAC5C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
@@ -1 +1 @@
1
- {"version":3,"file":"shared-data-keys.js","sourceRoot":"","sources":["../src/shared-data-keys.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAMH;;;GAGG;AACU,QAAA,cAAc,GAAG;IAC5B,wDAAwD;IACxD,mBAAmB,EAAE,oBAAoB;IAEzC,kDAAkD;IAClD,eAAe,EAAE,gBAAgB;IAEjC,iDAAiD;IACjD,eAAe,EAAE,gBAAgB;IAEjC,kDAAkD;IAClD,oBAAoB,EAAE,oBAAoB;IAE1C,gDAAgD;IAChD,iBAAiB,EAAE,kBAAkB;CAC7B,CAAC"}
1
+ {"version":3,"file":"shared-data-keys.js","sourceRoot":"","sources":["../../../../src/shared-data-keys.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAMH;;;GAGG;AACU,QAAA,cAAc,GAAG;IAC5B,wDAAwD;IACxD,mBAAmB,EAAE,oBAAoB;IAEzC,kDAAkD;IAClD,eAAe,EAAE,gBAAgB;IAEjC,iDAAiD;IACjD,eAAe,EAAE,gBAAgB;IAEjC,kDAAkD;IAClD,oBAAoB,EAAE,oBAAoB;IAE1C,gDAAgD;IAChD,iBAAiB,EAAE,kBAAkB;CAC7B,CAAC"}
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * Story configuration and interfaces
3
3
  */
4
- import { WorldModel, IFEntity, IGameEvent, SimpleEventHandler } from '@sharpee/world-model';
5
- import { LanguageProvider } from '@sharpee/if-domain';
6
- import { Parser } from '@sharpee/stdlib';
7
- import { ISemanticEvent } from '@sharpee/core';
4
+ import { WorldModel, IFEntity, IGameEvent, SimpleEventHandler } from "../../world-model/dist-npm/src/index";
5
+ import { LanguageProvider } from "../../if-domain/dist-npm/src/index";
6
+ import { Parser } from "../../stdlib/dist-npm/src/index";
7
+ import { ISemanticEvent } from "../../core/dist-npm/src/index";
8
8
  import type { GameEngine } from './game-engine';
9
9
  import { NarrativeConfig } from './narrative';
10
10
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"story.d.ts","sourceRoot":"","sources":["../src/story.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"story.d.ts","sourceRoot":"","sources":["../../../../src/story.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"story.js","sourceRoot":"","sources":["../src/story.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAyQH,kDAUC;AA9QD,0DAAsD;AAqNtD;;GAEG;AACH,MAAa,eAAe;IAC1B,MAAM,CAAc;IACZ,YAAY,CAAe;IAEnC,YAAY,MAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,IAAI,4BAAY,EAAE,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,EAAE,CAAC,SAAiB,EAAE,OAA2B;QAC/C,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,SAAiB,EAAE,OAA2B;QAChD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,KAAiB;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,0DAA0D;IAC1D,eAAe,CAAC,KAAiB;QAC/B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IAED,YAAY,CAAC,KAAiB;QAC5B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;CACF;AAvCD,0CAuCC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,MAAmB;IACrD,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,gFAAgF;IAChF,MAAM,YAAY,GAAG,mCAAmC,CAAC;IACzD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;IAClG,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"story.js","sourceRoot":"","sources":["../../../../src/story.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAyQH,kDAUC;AA9QD,0DAAsD;AAqNtD;;GAEG;AACH,MAAa,eAAe;IAC1B,MAAM,CAAc;IACZ,YAAY,CAAe;IAEnC,YAAY,MAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,IAAI,4BAAY,EAAE,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,EAAE,CAAC,SAAiB,EAAE,OAA2B;QAC/C,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,SAAiB,EAAE,OAA2B;QAChD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,KAAiB;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,0DAA0D;IAC1D,eAAe,CAAC,KAAiB;QAC/B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IAED,YAAY,CAAC,KAAiB;QAC5B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtD,CAAC;CACF;AAvCD,0CAuCC;AAED;;GAEG;AACH,SAAgB,mBAAmB,CAAC,MAAmB;IACrD,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,gFAAgF;IAChF,MAAM,YAAY,GAAG,mCAAmC,CAAC;IACzD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;IAClG,CAAC;AACH,CAAC"}
@@ -1,9 +1,9 @@
1
1
  /**
2
2
  * Mock text service for testing
3
3
  */
4
- import type { ITextService } from '@sharpee/text-service';
5
- import type { ITextBlock } from '@sharpee/text-blocks';
6
- import type { ISemanticEvent } from '@sharpee/core';
4
+ import type { ITextService } from "../../../text-service/dist-npm/src/index";
5
+ import type { ITextBlock } from "../../../text-blocks/dist-npm/src/index";
6
+ import type { ISemanticEvent } from "../../../core/dist-npm/src/index";
7
7
  export declare class MockTextService implements ITextService {
8
8
  processTurn(events: ISemanticEvent[]): ITextBlock[];
9
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mock-text-service.d.ts","sourceRoot":"","sources":["../../src/test-helpers/mock-text-service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,qBAAa,eAAgB,YAAW,YAAY;IAClD,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE;CAkCpD;AAED,wBAAgB,qBAAqB,IAAI,YAAY,CAEpD"}
1
+ {"version":3,"file":"mock-text-service.d.ts","sourceRoot":"","sources":["../../../../../src/test-helpers/mock-text-service.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,qBAAa,eAAgB,YAAW,YAAY;IAClD,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,UAAU,EAAE;CAkCpD;AAED,wBAAgB,qBAAqB,IAAI,YAAY,CAEpD"}
@@ -1 +1 @@
1
- {"version":3,"file":"mock-text-service.js","sourceRoot":"","sources":["../../src/test-helpers/mock-text-service.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AA2CH,sDAEC;AAvCD,MAAa,eAAe;IAC1B,WAAW,CAAC,MAAwB;QAClC,MAAM,MAAM,GAAiB,EAAE,CAAC;QAEhC,iBAAiB;QACjB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,IAA2B,CAAC;YAC/C,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAClC,MAAM,CAAC,IAAI,CAAC;oBACV,GAAG,EAAE,OAAO;oBACZ,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,IAAI,gBAAgB,CAAC,CAAC;iBACrD,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBAC3C,MAAM,CAAC,IAAI,CAAC;oBACV,GAAG,EAAE,eAAe;oBACpB,OAAO,EAAE,CAAC,qBAAqB,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,SAAS,CAAC,EAAE,CAAC;iBACpE,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBAC3C,MAAM,CAAC,IAAI,CAAC;oBACV,GAAG,EAAE,kBAAkB;oBACvB,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,IAAI,oBAAoB,CAAC,CAAC;iBAC7D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,+BAA+B;QAC/B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC;gBACV,GAAG,EAAE,cAAc;gBACnB,OAAO,EAAE,CAAC,mBAAmB,CAAC;aAC/B,CAAC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAnCD,0CAmCC;AAED,SAAgB,qBAAqB;IACnC,OAAO,IAAI,eAAe,EAAE,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"mock-text-service.js","sourceRoot":"","sources":["../../../../../src/test-helpers/mock-text-service.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AA2CH,sDAEC;AAvCD,MAAa,eAAe;IAC1B,WAAW,CAAC,MAAwB;QAClC,MAAM,MAAM,GAAiB,EAAE,CAAC;QAEhC,iBAAiB;QACjB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,IAA2B,CAAC;YAC/C,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAClC,MAAM,CAAC,IAAI,CAAC;oBACV,GAAG,EAAE,OAAO;oBACZ,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,IAAI,gBAAgB,CAAC,CAAC;iBACrD,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBAC3C,MAAM,CAAC,IAAI,CAAC;oBACV,GAAG,EAAE,eAAe;oBACpB,OAAO,EAAE,CAAC,qBAAqB,MAAM,CAAC,IAAI,EAAE,MAAM,IAAI,SAAS,CAAC,EAAE,CAAC;iBACpE,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBAC3C,MAAM,CAAC,IAAI,CAAC;oBACV,GAAG,EAAE,kBAAkB;oBACvB,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,IAAI,oBAAoB,CAAC,CAAC;iBAC7D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,+BAA+B;QAC/B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC;gBACV,GAAG,EAAE,cAAc;gBACnB,OAAO,EAAE,CAAC,mBAAmB,CAAC;aAC/B,CAAC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAnCD,0CAmCC;AAED,SAAgB,qBAAqB;IACnC,OAAO,IAAI,eAAe,EAAE,CAAC;AAC/B,CAAC"}
@@ -4,9 +4,9 @@
4
4
  * Extracted from GameEngine as part of Phase 4 remediation.
5
5
  * Handles event enrichment, perception filtering, and event emission.
6
6
  */
7
- import { ISemanticEvent, ISemanticEventSource, IPlatformEvent } from '@sharpee/core';
8
- import { WorldModel, IFEntity } from '@sharpee/world-model';
9
- import { IPerceptionService } from '@sharpee/stdlib';
7
+ import { ISemanticEvent, ISemanticEventSource, IPlatformEvent } from "../../core/dist-npm/src/index";
8
+ import { WorldModel, IFEntity } from "../../world-model/dist-npm/src/index";
9
+ import { IPerceptionService } from "../../stdlib/dist-npm/src/index";
10
10
  import { SequencedEvent, EngineConfig } from './types';
11
11
  /**
12
12
  * Context for event enrichment - matches EventProcessingContext
@@ -1 +1 @@
1
- {"version":3,"file":"turn-event-processor.d.ts","sourceRoot":"","sources":["../src/turn-event-processor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,cAAc,EACd,oBAAoB,EAEpB,cAAc,EACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gCAAgC;IAChC,cAAc,EAAE,cAAc,EAAE,CAAC;IACjC,yCAAyC;IACzC,cAAc,EAAE,cAAc,EAAE,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;AAEtE;;GAEG;AACH,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,iBAAiB,CAAC;gBAAlB,iBAAiB,CAAC,EAAE,kBAAkB,YAAA;IAGhD;;;;;;;;OAQG;IACH,mBAAmB,CACjB,MAAM,EAAE,cAAc,EAAE,EACxB,iBAAiB,EAAE,iBAAiB,EACpC,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,UAAU,GAChB,qBAAqB;IAiCxB;;;;;;;;OAQG;IACH,qBAAqB,CACnB,MAAM,EAAE,cAAc,EAAE,EACxB,iBAAiB,EAAE,iBAAiB,EACpC,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,UAAU,GAChB,qBAAqB;IA8BxB;;;;;;;;;;OAUG;IACH,UAAU,CACR,cAAc,EAAE,cAAc,EAAE,EAChC,WAAW,EAAE,oBAAoB,EACjC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,EACzC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,gBAAgB,CAAC,EAAE,uBAAuB,GACzC,IAAI;IA4BP;;;;;OAKG;IACH,eAAe,CACb,MAAM,EAAE,cAAc,EAAE,GACvB;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAY5C;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,iBAAiB,CAAC,EAAE,kBAAkB,GACrC,kBAAkB,CAEpB"}
1
+ {"version":3,"file":"turn-event-processor.d.ts","sourceRoot":"","sources":["../../../../src/turn-event-processor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,cAAc,EACd,oBAAoB,EAEpB,cAAc,EACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gCAAgC;IAChC,cAAc,EAAE,cAAc,EAAE,CAAC;IACjC,yCAAyC;IACzC,cAAc,EAAE,cAAc,EAAE,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;AAEhE;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;AAEtE;;GAEG;AACH,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,iBAAiB,CAAC;gBAAlB,iBAAiB,CAAC,EAAE,kBAAkB,YAAA;IAGhD;;;;;;;;OAQG;IACH,mBAAmB,CACjB,MAAM,EAAE,cAAc,EAAE,EACxB,iBAAiB,EAAE,iBAAiB,EACpC,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,UAAU,GAChB,qBAAqB;IAiCxB;;;;;;;;OAQG;IACH,qBAAqB,CACnB,MAAM,EAAE,cAAc,EAAE,EACxB,iBAAiB,EAAE,iBAAiB,EACpC,MAAM,EAAE,QAAQ,EAChB,KAAK,EAAE,UAAU,GAChB,qBAAqB;IA8BxB;;;;;;;;;;OAUG;IACH,UAAU,CACR,cAAc,EAAE,cAAc,EAAE,EAChC,WAAW,EAAE,oBAAoB,EACjC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,EACzC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,iBAAiB,EAC/B,gBAAgB,CAAC,EAAE,uBAAuB,GACzC,IAAI;IA4BP;;;;;OAKG;IACH,eAAe,CACb,MAAM,EAAE,cAAc,EAAE,GACvB;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAY5C;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,iBAAiB,CAAC,EAAE,kBAAkB,GACrC,kBAAkB,CAEpB"}