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.
- package/README.md +713 -7
- package/dist/cli/audit.js +0 -0
- package/dist/cli/init.js +0 -0
- package/dist/cli/perf.d.ts.map +1 -1
- package/dist/cli/perf.js +2 -1
- package/dist/cli/perf.js.map +1 -1
- package/dist/cli/play.d.ts +4 -0
- package/dist/cli/play.d.ts.map +1 -0
- package/dist/cli/play.js +259 -0
- package/dist/cli/play.js.map +1 -0
- package/dist/engine/condition.d.ts +69 -0
- package/dist/engine/condition.d.ts.map +1 -0
- package/dist/engine/condition.js +195 -0
- package/dist/engine/condition.js.map +1 -0
- package/dist/engine/core.d.ts +274 -3
- package/dist/engine/core.d.ts.map +1 -1
- package/dist/engine/core.js +1148 -9
- package/dist/engine/core.js.map +1 -1
- package/dist/engine/demo-story.d.ts.map +1 -1
- package/dist/engine/demo-story.js +99 -13
- package/dist/engine/demo-story.js.map +1 -1
- package/dist/engine/errors.d.ts +76 -0
- package/dist/engine/errors.d.ts.map +1 -0
- package/dist/engine/errors.js +178 -0
- package/dist/engine/errors.js.map +1 -0
- package/dist/engine/types.d.ts +445 -0
- package/dist/engine/types.d.ts.map +1 -0
- package/dist/engine/types.js +9 -0
- package/dist/engine/types.js.map +1 -0
- package/dist/engine/validation.d.ts +110 -0
- package/dist/engine/validation.d.ts.map +1 -0
- package/dist/engine/validation.js +261 -0
- package/dist/engine/validation.js.map +1 -0
- package/dist/examples/examples/autosave-undo-demo.js +248 -0
- package/dist/examples/examples/persistence-demo.js +63 -0
- package/dist/examples/src/engine/condition.js +194 -0
- package/dist/examples/src/engine/core.js +1382 -0
- package/dist/examples/src/engine/demo-story.js +200 -0
- package/dist/examples/src/engine/types.js +8 -0
- package/dist/examples/src/index.js +35 -0
- package/dist/examples/src/integrations/react.js +322 -0
- package/dist/examples/src/narrative/branching/engine-simple.js +348 -0
- package/dist/examples/src/narrative/branching/index.js +55 -0
- package/dist/examples/src/narrative/branching/models.js +5 -0
- package/dist/examples/src/performance/ObjectPool.js +296 -0
- package/dist/examples/src/performance/PerfReporter.js +280 -0
- package/dist/examples/src/performance/ThreadPool.js +347 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/integrations/react.d.ts +200 -0
- package/dist/integrations/react.d.ts.map +1 -0
- package/dist/integrations/react.js +365 -0
- package/dist/integrations/react.js.map +1 -0
- package/dist/narrative/branching/engine-simple.js +3 -3
- package/dist/narrative/branching/engine-simple.js.map +1 -1
- package/dist/narrative/branching/engine.d.ts +1 -0
- package/dist/narrative/branching/engine.d.ts.map +1 -0
- package/dist/narrative/branching/engine.js +2 -0
- package/dist/narrative/branching/engine.js.map +1 -0
- package/dist/narrative/branching/models.d.ts.map +1 -1
- package/dist/performance/HotReloadDelta.d.ts +25 -8
- package/dist/performance/HotReloadDelta.d.ts.map +1 -1
- package/dist/performance/HotReloadDelta.js +10 -15
- package/dist/performance/HotReloadDelta.js.map +1 -1
- package/dist/ui/__tests__/AutosaveIndicator.test.d.ts +2 -0
- package/dist/ui/__tests__/AutosaveIndicator.test.d.ts.map +1 -0
- package/dist/ui/__tests__/AutosaveIndicator.test.js +329 -0
- package/dist/ui/__tests__/AutosaveIndicator.test.js.map +1 -0
- package/dist/ui/__tests__/UndoRedoControls.test.d.ts +2 -0
- package/dist/ui/__tests__/UndoRedoControls.test.d.ts.map +1 -0
- package/dist/ui/__tests__/UndoRedoControls.test.js +245 -0
- package/dist/ui/__tests__/UndoRedoControls.test.js.map +1 -0
- package/dist/ui/__tests__/autosave-simple.test.d.ts +2 -0
- package/dist/ui/__tests__/autosave-simple.test.d.ts.map +1 -0
- package/dist/ui/__tests__/autosave-simple.test.js +29 -0
- package/dist/ui/__tests__/autosave-simple.test.js.map +1 -0
- package/dist/ui/__tests__/setup.d.ts +2 -0
- package/dist/ui/__tests__/setup.d.ts.map +1 -0
- package/dist/ui/__tests__/setup.js +40 -0
- package/dist/ui/__tests__/setup.js.map +1 -0
- package/dist/ui/__tests__/smoke-test.d.ts +2 -0
- package/dist/ui/__tests__/smoke-test.d.ts.map +1 -0
- package/dist/ui/__tests__/smoke-test.js +18 -0
- package/dist/ui/__tests__/smoke-test.js.map +1 -0
- package/dist/ui/__tests__/smoke-test.test.d.ts +2 -0
- package/dist/ui/__tests__/smoke-test.test.d.ts.map +1 -0
- package/dist/ui/__tests__/smoke-test.test.js +18 -0
- package/dist/ui/__tests__/smoke-test.test.js.map +1 -0
- package/dist/ui/__tests__/useKeyboardShortcuts.test.d.ts +2 -0
- package/dist/ui/__tests__/useKeyboardShortcuts.test.d.ts.map +1 -0
- package/dist/ui/__tests__/useKeyboardShortcuts.test.js +374 -0
- package/dist/ui/__tests__/useKeyboardShortcuts.test.js.map +1 -0
- package/dist/ui/components/AutosaveIndicator.d.ts +18 -0
- package/dist/ui/components/AutosaveIndicator.d.ts.map +1 -0
- package/dist/ui/components/AutosaveIndicator.js +175 -0
- package/dist/ui/components/AutosaveIndicator.js.map +1 -0
- package/dist/ui/components/UndoRedoControls.d.ts +16 -0
- package/dist/ui/components/UndoRedoControls.d.ts.map +1 -0
- package/dist/ui/components/UndoRedoControls.js +144 -0
- package/dist/ui/components/UndoRedoControls.js.map +1 -0
- package/dist/ui/hooks/useKeyboardShortcuts.d.ts +22 -0
- package/dist/ui/hooks/useKeyboardShortcuts.d.ts.map +1 -0
- package/dist/ui/hooks/useKeyboardShortcuts.js +162 -0
- package/dist/ui/hooks/useKeyboardShortcuts.js.map +1 -0
- package/dist/ui/index.d.ts +9 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +14 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/types.d.ts +141 -0
- package/dist/ui/types.d.ts.map +1 -0
- package/dist/ui/types.js +51 -0
- package/dist/ui/types.js.map +1 -0
- package/examples/autosave-undo-demo.ts +306 -0
- package/examples/branching-demo-simple.ts +0 -0
- package/examples/branching-demo.ts +0 -0
- package/examples/persistence-demo.ts +84 -0
- package/examples/tsconfig.json +13 -0
- package/examples/ui-components-demo.tsx +320 -0
- package/examples/validation-demo-story.json +177 -0
- package/examples/validation-demo.js +163 -0
- package/package.json +24 -4
- package/docs/branching/PDM.md +0 -443
- 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"}
|