qnce-engine 1.2.0 → 1.2.2

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 (125) hide show
  1. package/README.md +713 -7
  2. package/dist/cli/audit.js +0 -0
  3. package/dist/cli/init.js +0 -0
  4. package/dist/cli/perf.d.ts.map +1 -1
  5. package/dist/cli/perf.js +2 -1
  6. package/dist/cli/perf.js.map +1 -1
  7. package/dist/cli/play.d.ts +4 -0
  8. package/dist/cli/play.d.ts.map +1 -0
  9. package/dist/cli/play.js +259 -0
  10. package/dist/cli/play.js.map +1 -0
  11. package/dist/engine/condition.d.ts +69 -0
  12. package/dist/engine/condition.d.ts.map +1 -0
  13. package/dist/engine/condition.js +195 -0
  14. package/dist/engine/condition.js.map +1 -0
  15. package/dist/engine/core.d.ts +274 -3
  16. package/dist/engine/core.d.ts.map +1 -1
  17. package/dist/engine/core.js +1148 -9
  18. package/dist/engine/core.js.map +1 -1
  19. package/dist/engine/demo-story.d.ts.map +1 -1
  20. package/dist/engine/demo-story.js +99 -13
  21. package/dist/engine/demo-story.js.map +1 -1
  22. package/dist/engine/errors.d.ts +76 -0
  23. package/dist/engine/errors.d.ts.map +1 -0
  24. package/dist/engine/errors.js +178 -0
  25. package/dist/engine/errors.js.map +1 -0
  26. package/dist/engine/types.d.ts +445 -0
  27. package/dist/engine/types.d.ts.map +1 -0
  28. package/dist/engine/types.js +9 -0
  29. package/dist/engine/types.js.map +1 -0
  30. package/dist/engine/validation.d.ts +110 -0
  31. package/dist/engine/validation.d.ts.map +1 -0
  32. package/dist/engine/validation.js +261 -0
  33. package/dist/engine/validation.js.map +1 -0
  34. package/dist/examples/examples/autosave-undo-demo.js +248 -0
  35. package/dist/examples/examples/persistence-demo.js +63 -0
  36. package/dist/examples/src/engine/condition.js +194 -0
  37. package/dist/examples/src/engine/core.js +1382 -0
  38. package/dist/examples/src/engine/demo-story.js +200 -0
  39. package/dist/examples/src/engine/types.js +8 -0
  40. package/dist/examples/src/index.js +35 -0
  41. package/dist/examples/src/integrations/react.js +322 -0
  42. package/dist/examples/src/narrative/branching/engine-simple.js +348 -0
  43. package/dist/examples/src/narrative/branching/index.js +55 -0
  44. package/dist/examples/src/narrative/branching/models.js +5 -0
  45. package/dist/examples/src/performance/ObjectPool.js +296 -0
  46. package/dist/examples/src/performance/PerfReporter.js +280 -0
  47. package/dist/examples/src/performance/ThreadPool.js +347 -0
  48. package/dist/index.d.ts +4 -0
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +12 -1
  51. package/dist/index.js.map +1 -1
  52. package/dist/integrations/react.d.ts +200 -0
  53. package/dist/integrations/react.d.ts.map +1 -0
  54. package/dist/integrations/react.js +365 -0
  55. package/dist/integrations/react.js.map +1 -0
  56. package/dist/narrative/branching/engine-simple.js +3 -3
  57. package/dist/narrative/branching/engine-simple.js.map +1 -1
  58. package/dist/narrative/branching/engine.d.ts +1 -0
  59. package/dist/narrative/branching/engine.d.ts.map +1 -0
  60. package/dist/narrative/branching/engine.js +2 -0
  61. package/dist/narrative/branching/engine.js.map +1 -0
  62. package/dist/narrative/branching/models.d.ts.map +1 -1
  63. package/dist/performance/HotReloadDelta.d.ts +25 -8
  64. package/dist/performance/HotReloadDelta.d.ts.map +1 -1
  65. package/dist/performance/HotReloadDelta.js +10 -15
  66. package/dist/performance/HotReloadDelta.js.map +1 -1
  67. package/dist/ui/__tests__/AutosaveIndicator.test.d.ts +2 -0
  68. package/dist/ui/__tests__/AutosaveIndicator.test.d.ts.map +1 -0
  69. package/dist/ui/__tests__/AutosaveIndicator.test.js +329 -0
  70. package/dist/ui/__tests__/AutosaveIndicator.test.js.map +1 -0
  71. package/dist/ui/__tests__/UndoRedoControls.test.d.ts +2 -0
  72. package/dist/ui/__tests__/UndoRedoControls.test.d.ts.map +1 -0
  73. package/dist/ui/__tests__/UndoRedoControls.test.js +245 -0
  74. package/dist/ui/__tests__/UndoRedoControls.test.js.map +1 -0
  75. package/dist/ui/__tests__/autosave-simple.test.d.ts +2 -0
  76. package/dist/ui/__tests__/autosave-simple.test.d.ts.map +1 -0
  77. package/dist/ui/__tests__/autosave-simple.test.js +29 -0
  78. package/dist/ui/__tests__/autosave-simple.test.js.map +1 -0
  79. package/dist/ui/__tests__/setup.d.ts +2 -0
  80. package/dist/ui/__tests__/setup.d.ts.map +1 -0
  81. package/dist/ui/__tests__/setup.js +40 -0
  82. package/dist/ui/__tests__/setup.js.map +1 -0
  83. package/dist/ui/__tests__/smoke-test.d.ts +2 -0
  84. package/dist/ui/__tests__/smoke-test.d.ts.map +1 -0
  85. package/dist/ui/__tests__/smoke-test.js +18 -0
  86. package/dist/ui/__tests__/smoke-test.js.map +1 -0
  87. package/dist/ui/__tests__/smoke-test.test.d.ts +2 -0
  88. package/dist/ui/__tests__/smoke-test.test.d.ts.map +1 -0
  89. package/dist/ui/__tests__/smoke-test.test.js +18 -0
  90. package/dist/ui/__tests__/smoke-test.test.js.map +1 -0
  91. package/dist/ui/__tests__/useKeyboardShortcuts.test.d.ts +2 -0
  92. package/dist/ui/__tests__/useKeyboardShortcuts.test.d.ts.map +1 -0
  93. package/dist/ui/__tests__/useKeyboardShortcuts.test.js +374 -0
  94. package/dist/ui/__tests__/useKeyboardShortcuts.test.js.map +1 -0
  95. package/dist/ui/components/AutosaveIndicator.d.ts +18 -0
  96. package/dist/ui/components/AutosaveIndicator.d.ts.map +1 -0
  97. package/dist/ui/components/AutosaveIndicator.js +175 -0
  98. package/dist/ui/components/AutosaveIndicator.js.map +1 -0
  99. package/dist/ui/components/UndoRedoControls.d.ts +16 -0
  100. package/dist/ui/components/UndoRedoControls.d.ts.map +1 -0
  101. package/dist/ui/components/UndoRedoControls.js +144 -0
  102. package/dist/ui/components/UndoRedoControls.js.map +1 -0
  103. package/dist/ui/hooks/useKeyboardShortcuts.d.ts +22 -0
  104. package/dist/ui/hooks/useKeyboardShortcuts.d.ts.map +1 -0
  105. package/dist/ui/hooks/useKeyboardShortcuts.js +162 -0
  106. package/dist/ui/hooks/useKeyboardShortcuts.js.map +1 -0
  107. package/dist/ui/index.d.ts +9 -0
  108. package/dist/ui/index.d.ts.map +1 -0
  109. package/dist/ui/index.js +14 -0
  110. package/dist/ui/index.js.map +1 -0
  111. package/dist/ui/types.d.ts +141 -0
  112. package/dist/ui/types.d.ts.map +1 -0
  113. package/dist/ui/types.js +51 -0
  114. package/dist/ui/types.js.map +1 -0
  115. package/examples/autosave-undo-demo.ts +306 -0
  116. package/examples/branching-demo-simple.ts +0 -0
  117. package/examples/branching-demo.ts +0 -0
  118. package/examples/persistence-demo.ts +84 -0
  119. package/examples/tsconfig.json +13 -0
  120. package/examples/ui-components-demo.tsx +320 -0
  121. package/examples/validation-demo-story.json +177 -0
  122. package/examples/validation-demo.js +163 -0
  123. package/package.json +24 -4
  124. package/docs/branching/PDM.md +0 -443
  125. package/docs/branching/RELEASE-v1.2.0.md +0 -169
@@ -0,0 +1,445 @@
1
+ import { QNCEState, FlowEvent } from './core';
2
+ /**
3
+ * Metadata about the serialization process and compatibility
4
+ */
5
+ export interface SerializationMetadata {
6
+ /** Engine version that created this serialized state */
7
+ engineVersion: string;
8
+ /** Timestamp when the state was serialized (ISO string) */
9
+ timestamp: string;
10
+ /** Story identifier/hash for compatibility checking */
11
+ storyId?: string;
12
+ /** Custom metadata for application-specific use */
13
+ customMetadata?: Record<string, unknown>;
14
+ /** Compression level used (if any) */
15
+ compression?: 'none' | 'gzip' | 'lz4';
16
+ /** Checksum for integrity verification */
17
+ checksum?: string;
18
+ }
19
+ /**
20
+ * Complete serialized state that can be saved/restored
21
+ * Includes all necessary data to fully reconstruct engine state
22
+ */
23
+ export interface SerializedState {
24
+ /** Core narrative state (current node, flags, history) */
25
+ state: QNCEState;
26
+ /** Active flow events for performance tracking */
27
+ flowEvents: FlowEvent[];
28
+ /** Performance and pool statistics snapshot */
29
+ poolStats?: Record<string, unknown>;
30
+ /** Branching context and branch state */
31
+ branchingContext?: {
32
+ activeBranches: string[];
33
+ branchStates: Record<string, unknown>;
34
+ convergencePoints: string[];
35
+ };
36
+ /** Validation state and rule overrides */
37
+ validationState?: {
38
+ disabledRules: string[];
39
+ customRules: Record<string, unknown>;
40
+ validationErrors: string[];
41
+ };
42
+ /** Thread pool and background operation state */
43
+ performanceState?: {
44
+ performanceMode: boolean;
45
+ enableProfiling: boolean;
46
+ backgroundTasks: string[];
47
+ telemetryData: Record<string, unknown>[];
48
+ };
49
+ /** Serialization metadata */
50
+ metadata: SerializationMetadata;
51
+ }
52
+ /**
53
+ * Lightweight checkpoint for quick save/restore operations
54
+ * Contains minimal data for fast state snapshots
55
+ */
56
+ export interface Checkpoint {
57
+ /** Unique checkpoint identifier */
58
+ id: string;
59
+ /** Human-readable checkpoint name/label */
60
+ name?: string;
61
+ /** Core state snapshot (deep copied) */
62
+ state: QNCEState;
63
+ /** Checkpoint creation timestamp */
64
+ timestamp: string;
65
+ /** Optional description or context */
66
+ description?: string;
67
+ /** Tags for checkpoint organization */
68
+ tags?: string[];
69
+ /** Lightweight metadata */
70
+ metadata?: {
71
+ nodeTitle?: string;
72
+ choiceCount?: number;
73
+ flagCount?: number;
74
+ historyLength?: number;
75
+ [key: string]: unknown;
76
+ };
77
+ }
78
+ /**
79
+ * Options for state serialization
80
+ */
81
+ export interface SerializationOptions {
82
+ /** Include performance data in serialization */
83
+ includePerformanceData?: boolean;
84
+ /** Include flow events in serialization */
85
+ includeFlowEvents?: boolean;
86
+ /** Include branching context */
87
+ includeBranchingContext?: boolean;
88
+ /** Include validation state */
89
+ includeValidationState?: boolean;
90
+ /** Compression to apply */
91
+ compression?: 'none' | 'gzip' | 'lz4';
92
+ /** Generate integrity checksum */
93
+ generateChecksum?: boolean;
94
+ /** Custom metadata to include */
95
+ customMetadata?: Record<string, unknown>;
96
+ /** Pretty print JSON (increases size but improves readability) */
97
+ prettyPrint?: boolean;
98
+ }
99
+ /**
100
+ * Options for state loading/deserialization
101
+ */
102
+ export interface LoadOptions {
103
+ /** Verify checksum integrity before loading */
104
+ verifyChecksum?: boolean;
105
+ /** Skip compatibility checks (dangerous) */
106
+ skipCompatibilityCheck?: boolean;
107
+ /** Restore performance state */
108
+ restorePerformanceState?: boolean;
109
+ /** Restore flow events */
110
+ restoreFlowEvents?: boolean;
111
+ /** Restore branching context */
112
+ restoreBranchingContext?: boolean;
113
+ /** Restore validation state */
114
+ restoreValidationState?: boolean;
115
+ /** Migration function for version compatibility */
116
+ migrationFunction?: (serializedState: SerializedState) => SerializedState;
117
+ }
118
+ /**
119
+ * Checkpoint management options
120
+ */
121
+ export interface CheckpointOptions {
122
+ /** Maximum number of checkpoints to keep */
123
+ maxCheckpoints?: number;
124
+ /** Auto-cleanup strategy */
125
+ cleanupStrategy?: 'lru' | 'fifo' | 'timestamp' | 'manual';
126
+ /** Include metadata in checkpoint */
127
+ includeMetadata?: boolean;
128
+ /** Tags to automatically apply */
129
+ autoTags?: string[];
130
+ }
131
+ /**
132
+ * State persistence result with success/error information
133
+ */
134
+ export interface PersistenceResult {
135
+ /** Whether the operation succeeded */
136
+ success: boolean;
137
+ /** Error message if operation failed */
138
+ error?: string;
139
+ /** Operation-specific data */
140
+ data?: {
141
+ /** Serialized state size in bytes */
142
+ size?: number;
143
+ /** Compression ratio achieved */
144
+ compressionRatio?: number;
145
+ /** Checksum of saved data */
146
+ checksum?: string;
147
+ /** Time taken for operation (ms) */
148
+ duration?: number;
149
+ };
150
+ /** Warnings or informational messages */
151
+ warnings?: string[];
152
+ }
153
+ /**
154
+ * Event emitted during state persistence operations
155
+ */
156
+ export interface PersistenceEvent {
157
+ /** Event type */
158
+ type: 'save-start' | 'save-complete' | 'load-start' | 'load-complete' | 'checkpoint-created' | 'checkpoint-restored' | 'cleanup' | 'error';
159
+ /** Timestamp of event */
160
+ timestamp: string;
161
+ /** Associated checkpoint ID (if applicable) */
162
+ checkpointId?: string;
163
+ /** Event data */
164
+ data?: Record<string, unknown>;
165
+ /** Error information (for error events) */
166
+ error?: {
167
+ message: string;
168
+ code?: string;
169
+ stack?: string;
170
+ };
171
+ }
172
+ /**
173
+ * State validation result for loaded states
174
+ */
175
+ export interface StateValidationResult {
176
+ /** Whether the state is valid */
177
+ isValid: boolean;
178
+ /** Validation errors */
179
+ errors: string[];
180
+ /** Validation warnings */
181
+ warnings: string[];
182
+ /** Suggested fixes or migrations */
183
+ suggestions?: string[];
184
+ /** Whether the state can be safely loaded */
185
+ canLoad: boolean;
186
+ }
187
+ /**
188
+ * Checkpoint manager interface for persistence operations
189
+ */
190
+ export interface CheckpointManager {
191
+ /** Create a new checkpoint */
192
+ createCheckpoint(name?: string, options?: CheckpointOptions): Promise<Checkpoint>;
193
+ /** List all available checkpoints */
194
+ listCheckpoints(): Promise<Checkpoint[]>;
195
+ /** Get a specific checkpoint by ID */
196
+ getCheckpoint(id: string): Promise<Checkpoint | null>;
197
+ /** Delete a checkpoint */
198
+ deleteCheckpoint(id: string): Promise<boolean>;
199
+ /** Restore from a checkpoint */
200
+ restoreFromCheckpoint(id: string): Promise<PersistenceResult>;
201
+ /** Clean up old checkpoints */
202
+ cleanup(options?: CheckpointOptions): Promise<number>;
203
+ /** Export checkpoint to external format */
204
+ exportCheckpoint(id: string, format?: 'json' | 'binary'): Promise<string | Buffer>;
205
+ /** Import checkpoint from external format */
206
+ importCheckpoint(data: string | Buffer, format?: 'json' | 'binary'): Promise<Checkpoint>;
207
+ }
208
+ /**
209
+ * Storage adapter interface for different persistence backends
210
+ */
211
+ export interface StorageAdapter {
212
+ /** Save serialized state */
213
+ save(key: string, data: SerializedState, options?: SerializationOptions): Promise<PersistenceResult>;
214
+ /** Load serialized state */
215
+ load(key: string, options?: LoadOptions): Promise<SerializedState | null>;
216
+ /** Delete stored state */
217
+ delete(key: string): Promise<boolean>;
218
+ /** List all stored keys */
219
+ list(): Promise<string[]>;
220
+ /** Check if key exists */
221
+ exists(key: string): Promise<boolean>;
222
+ /** Get storage statistics */
223
+ getStats(): Promise<{
224
+ totalSize: number;
225
+ keyCount: number;
226
+ [key: string]: unknown;
227
+ }>;
228
+ /** Clear all stored data */
229
+ clear(): Promise<boolean>;
230
+ }
231
+ /**
232
+ * Built-in storage adapter types
233
+ */
234
+ export type StorageAdapterType = 'localStorage' | 'sessionStorage' | 'indexedDB' | 'memory' | 'file';
235
+ /**
236
+ * Configuration for different storage adapters
237
+ */
238
+ export interface StorageConfig {
239
+ /** Storage adapter type */
240
+ type: StorageAdapterType;
241
+ /** Adapter-specific options */
242
+ options?: {
243
+ /** For file storage: directory path */
244
+ directory?: string;
245
+ /** For IndexedDB: database name */
246
+ databaseName?: string;
247
+ /** For memory storage: size limit */
248
+ sizeLimit?: number;
249
+ /** Auto-compression for storage */
250
+ autoCompress?: boolean;
251
+ /** Encryption options */
252
+ encryption?: {
253
+ algorithm: string;
254
+ key: string;
255
+ };
256
+ };
257
+ }
258
+ /**
259
+ * Type guard functions for runtime type checking
260
+ */
261
+ export interface TypeGuards {
262
+ isSerializedState: (obj: unknown) => obj is SerializedState;
263
+ isCheckpoint: (obj: unknown) => obj is Checkpoint;
264
+ isValidationResult: (obj: unknown) => obj is StateValidationResult;
265
+ isPersistenceResult: (obj: unknown) => obj is PersistenceResult;
266
+ }
267
+ export type CheckpointId = string;
268
+ export type StorageKey = string;
269
+ export type Timestamp = string;
270
+ /**
271
+ * History entry for undo/redo functionality
272
+ */
273
+ export interface HistoryEntry {
274
+ /** Unique identifier for this history entry */
275
+ id: string;
276
+ /** State snapshot at this point */
277
+ state: QNCEState;
278
+ /** Timestamp when this entry was created */
279
+ timestamp: string;
280
+ /** Optional description of the action that created this entry */
281
+ action?: string;
282
+ /** Optional metadata about the change */
283
+ metadata?: {
284
+ nodeId?: string;
285
+ choiceText?: string;
286
+ flagsChanged?: string[];
287
+ [key: string]: unknown;
288
+ };
289
+ }
290
+ /**
291
+ * Configuration for autosave functionality
292
+ */
293
+ export interface AutosaveConfig {
294
+ /** Whether autosave is enabled */
295
+ enabled: boolean;
296
+ /** Triggers that should cause an autosave */
297
+ triggers: ('choice' | 'flag-change' | 'state-load' | 'branch-exit' | 'custom')[];
298
+ /** Maximum number of autosave entries to keep */
299
+ maxEntries: number;
300
+ /** Minimum time between autosaves (ms) to prevent spam */
301
+ throttleMs: number;
302
+ /** Whether to include metadata in autosave entries */
303
+ includeMetadata: boolean;
304
+ /** Custom autosave naming pattern */
305
+ namePattern?: string;
306
+ }
307
+ /**
308
+ * Configuration for undo/redo history
309
+ */
310
+ export interface UndoRedoConfig {
311
+ /** Whether undo/redo is enabled */
312
+ enabled: boolean;
313
+ /** Maximum number of undo entries to keep */
314
+ maxUndoEntries: number;
315
+ /** Maximum number of redo entries to keep */
316
+ maxRedoEntries: number;
317
+ /** Whether to track flag changes for undo metadata */
318
+ trackFlagChanges: boolean;
319
+ /** Whether to track choice text for undo metadata */
320
+ trackChoiceText: boolean;
321
+ /** Actions that should create undo entries */
322
+ trackActions: ('choice' | 'flag-change' | 'state-load' | 'reset' | 'custom')[];
323
+ }
324
+ /**
325
+ * Result of undo/redo operations
326
+ */
327
+ export interface UndoRedoResult {
328
+ /** Whether the operation succeeded */
329
+ success: boolean;
330
+ /** Error message if operation failed */
331
+ error?: string;
332
+ /** The state that was restored */
333
+ restoredState?: QNCEState;
334
+ /** Information about the restored entry */
335
+ entry?: {
336
+ id: string;
337
+ timestamp: string;
338
+ action?: string;
339
+ nodeId?: string;
340
+ };
341
+ /** Current undo/redo stack sizes after operation */
342
+ stackSizes?: {
343
+ undoCount: number;
344
+ redoCount: number;
345
+ };
346
+ }
347
+ /**
348
+ * Autosave operation result
349
+ */
350
+ export interface AutosaveResult {
351
+ /** Whether the autosave succeeded */
352
+ success: boolean;
353
+ /** Error message if autosave failed */
354
+ error?: string;
355
+ /** The checkpoint ID created by autosave */
356
+ checkpointId?: string;
357
+ /** Trigger that caused this autosave */
358
+ trigger?: string;
359
+ /** Time taken for autosave operation (ms) */
360
+ duration?: number;
361
+ /** Size of the autosaved data */
362
+ size?: number;
363
+ }
364
+ /**
365
+ * History manager interface for undo/redo operations
366
+ */
367
+ export interface HistoryManager {
368
+ /** Push a new state to the undo stack */
369
+ pushState(state: QNCEState, action?: string, metadata?: Record<string, unknown>): void;
370
+ /** Undo the last operation */
371
+ undo(): UndoRedoResult;
372
+ /** Redo the last undone operation */
373
+ redo(): UndoRedoResult;
374
+ /** Clear all history */
375
+ clear(): void;
376
+ /** Get the current undo stack size */
377
+ getUndoCount(): number;
378
+ /** Get the current redo stack size */
379
+ getRedoCount(): number;
380
+ /** Check if undo is available */
381
+ canUndo(): boolean;
382
+ /** Check if redo is available */
383
+ canRedo(): boolean;
384
+ /** Get history summary for debugging */
385
+ getHistorySummary(): {
386
+ undoEntries: {
387
+ id: string;
388
+ timestamp: string;
389
+ action?: string;
390
+ }[];
391
+ redoEntries: {
392
+ id: string;
393
+ timestamp: string;
394
+ action?: string;
395
+ }[];
396
+ };
397
+ }
398
+ /**
399
+ * Event emitted during autosave operations
400
+ */
401
+ export interface AutosaveEvent {
402
+ /** Event type */
403
+ type: 'autosave-triggered' | 'autosave-complete' | 'autosave-failed' | 'autosave-throttled';
404
+ /** Timestamp of event */
405
+ timestamp: string;
406
+ /** Trigger that caused the autosave */
407
+ trigger?: string;
408
+ /** Event data */
409
+ data?: {
410
+ checkpointId?: string;
411
+ duration?: number;
412
+ size?: number;
413
+ throttleRemainingMs?: number;
414
+ };
415
+ /** Error information (for failed events) */
416
+ error?: {
417
+ message: string;
418
+ code?: string;
419
+ };
420
+ }
421
+ /**
422
+ * Event emitted during undo/redo operations
423
+ */
424
+ export interface UndoRedoEvent {
425
+ /** Event type */
426
+ type: 'undo' | 'redo' | 'history-push' | 'history-clear' | 'undo-failed' | 'redo-failed';
427
+ /** Timestamp of event */
428
+ timestamp: string;
429
+ /** Event data */
430
+ data?: {
431
+ entryId?: string;
432
+ action?: string;
433
+ nodeId?: string;
434
+ undoCount?: number;
435
+ redoCount?: number;
436
+ };
437
+ /** Error information (for failed events) */
438
+ error?: {
439
+ message: string;
440
+ code?: string;
441
+ };
442
+ }
443
+ export declare const PERSISTENCE_VERSION = "1.0.0";
444
+ export declare const SUPPORTED_VERSIONS: string[];
445
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/engine/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ // QNCE Engine Types - Sprint 3.3: State Persistence & Checkpoints
3
+ // Comprehensive type definitions for serialization and checkpoint features
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.SUPPORTED_VERSIONS = exports.PERSISTENCE_VERSION = void 0;
6
+ // Version constants
7
+ exports.PERSISTENCE_VERSION = '1.0.0';
8
+ exports.SUPPORTED_VERSIONS = ['1.0.0'];
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/engine/types.ts"],"names":[],"mappings":";AAAA,kEAAkE;AAClE,2EAA2E;;;AA8iB3E,oBAAoB;AACP,QAAA,mBAAmB,GAAG,OAAO,CAAC;AAC9B,QAAA,kBAAkB,GAAG,CAAC,OAAO,CAAC,CAAC"}
@@ -0,0 +1,110 @@
1
+ import { Choice, NarrativeNode, QNCEState } from './core';
2
+ /**
3
+ * Validation context containing all state needed for choice validation
4
+ */
5
+ export interface ValidationContext {
6
+ currentNode: NarrativeNode;
7
+ state: QNCEState;
8
+ availableChoices: Choice[];
9
+ timestamp?: number;
10
+ metadata?: Record<string, unknown>;
11
+ }
12
+ /**
13
+ * Result of choice validation with detailed information
14
+ */
15
+ export interface ValidationResult {
16
+ isValid: boolean;
17
+ reason?: string;
18
+ failedConditions?: string[];
19
+ suggestedChoices?: Choice[];
20
+ metadata?: Record<string, unknown>;
21
+ }
22
+ /**
23
+ * Choice validation rule interface for extensible validation logic
24
+ */
25
+ export interface ValidationRule {
26
+ name: string;
27
+ priority: number;
28
+ validate(choice: Choice, context: ValidationContext): ValidationResult;
29
+ }
30
+ /**
31
+ * Core ChoiceValidator interface
32
+ * Provides validation logic for choice execution and availability filtering
33
+ */
34
+ export interface ChoiceValidator {
35
+ /**
36
+ * Validate a specific choice against current state
37
+ * @param choice - The choice to validate
38
+ * @param context - Current validation context
39
+ * @returns Validation result with details
40
+ */
41
+ validate(choice: Choice, context: ValidationContext): ValidationResult;
42
+ /**
43
+ * Get all currently available/valid choices
44
+ * @param context - Current validation context
45
+ * @returns Array of valid choices
46
+ */
47
+ getAvailableChoices(context: ValidationContext): Choice[];
48
+ /**
49
+ * Add a validation rule to the validator
50
+ * @param rule - Validation rule to add
51
+ */
52
+ addRule(rule: ValidationRule): void;
53
+ /**
54
+ * Remove a validation rule by name
55
+ * @param ruleName - Name of the rule to remove
56
+ */
57
+ removeRule(ruleName: string): void;
58
+ /**
59
+ * Get all registered validation rules
60
+ * @returns Array of validation rules sorted by priority
61
+ */
62
+ getRules(): ValidationRule[];
63
+ }
64
+ /**
65
+ * Built-in validation rules for common scenarios
66
+ */
67
+ export declare class StandardValidationRules {
68
+ /**
69
+ * Validates that choice exists in the current node's choices
70
+ */
71
+ static readonly CHOICE_EXISTS: ValidationRule;
72
+ /**
73
+ * Validates flag-based conditions for choice availability
74
+ */
75
+ static readonly FLAG_CONDITIONS: ValidationRule;
76
+ /**
77
+ * Validates choice is not disabled or marked as unavailable
78
+ */
79
+ static readonly CHOICE_ENABLED: ValidationRule;
80
+ /**
81
+ * Validates time-based requirements for choice availability
82
+ */
83
+ static readonly TIME_CONDITIONS: ValidationRule;
84
+ /**
85
+ * Validates inventory-based requirements for choice availability
86
+ */
87
+ static readonly INVENTORY_CONDITIONS: ValidationRule;
88
+ }
89
+ /**
90
+ * Default implementation of ChoiceValidator
91
+ * Uses a rule-based system for extensible validation logic
92
+ */
93
+ export declare class DefaultChoiceValidator implements ChoiceValidator {
94
+ private rules;
95
+ constructor();
96
+ validate(choice: Choice, context: ValidationContext): ValidationResult;
97
+ getAvailableChoices(context: ValidationContext): Choice[];
98
+ addRule(rule: ValidationRule): void;
99
+ removeRule(ruleName: string): void;
100
+ getRules(): ValidationRule[];
101
+ }
102
+ /**
103
+ * Factory function to create a choice validator with default rules
104
+ */
105
+ export declare function createChoiceValidator(): ChoiceValidator;
106
+ /**
107
+ * Utility function to create validation context from engine state
108
+ */
109
+ export declare function createValidationContext(currentNode: NarrativeNode, state: QNCEState, availableChoices: Choice[], metadata?: Record<string, unknown>): ValidationContext;
110
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/engine/validation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,aAAa,CAAC;IAC3B,KAAK,EAAE,SAAS,CAAC;IACjB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAAC;CACxE;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAAC;IAEvE;;;;OAIG;IACH,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAAC;IAE1D;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CAAC;IAEpC;;;OAGG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAEnC;;;OAGG;IACH,QAAQ,IAAI,cAAc,EAAE,CAAC;CAC9B;AAED;;GAEG;AACH,qBAAa,uBAAuB;IAClC;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,cAAc,CAc3C;IAEF;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,cAAc,CAgD7C;IAEF;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAiB5C;IAEF;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,eAAe,EAAE,cAAc,CAiD7C;IAEF;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE,cAAc,CAiClD;CACH;AAED;;;GAGG;AACH,qBAAa,sBAAuB,YAAW,eAAe;IAC5D,OAAO,CAAC,KAAK,CAAwB;;IAWrC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,gBAAgB;IA8BtE,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,EAAE;IASzD,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAWnC,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAIlC,QAAQ,IAAI,cAAc,EAAE;CAG7B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,CAEvD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,aAAa,EAC1B,KAAK,EAAE,SAAS,EAChB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,iBAAiB,CAQnB"}