qnce-engine 0.1.0 → 1.2.0

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 (53) hide show
  1. package/README.md +248 -0
  2. package/dist/cli/audit.js +6 -4
  3. package/dist/cli/audit.js.map +1 -1
  4. package/dist/cli/init.js +11 -9
  5. package/dist/cli/init.js.map +1 -1
  6. package/dist/cli/perf.d.ts +30 -0
  7. package/dist/cli/perf.d.ts.map +1 -0
  8. package/dist/cli/perf.js +219 -0
  9. package/dist/cli/perf.js.map +1 -0
  10. package/dist/engine/core.d.ts +104 -8
  11. package/dist/engine/core.d.ts.map +1 -1
  12. package/dist/engine/core.js +288 -7
  13. package/dist/engine/core.js.map +1 -1
  14. package/dist/engine/demo-story.js +4 -1
  15. package/dist/engine/demo-story.js.map +1 -1
  16. package/dist/index.js +24 -3
  17. package/dist/index.js.map +1 -1
  18. package/dist/narrative/branching/engine-simple.d.ts +84 -0
  19. package/dist/narrative/branching/engine-simple.d.ts.map +1 -0
  20. package/dist/narrative/branching/engine-simple.js +349 -0
  21. package/dist/narrative/branching/engine-simple.js.map +1 -0
  22. package/dist/narrative/branching/index.d.ts +12 -0
  23. package/dist/narrative/branching/index.d.ts.map +1 -0
  24. package/dist/narrative/branching/index.js +56 -0
  25. package/dist/narrative/branching/index.js.map +1 -0
  26. package/dist/narrative/branching/models.d.ts +223 -0
  27. package/dist/narrative/branching/models.d.ts.map +1 -0
  28. package/dist/narrative/branching/models.js +6 -0
  29. package/dist/narrative/branching/models.js.map +1 -0
  30. package/dist/performance/HotReloadDelta.d.ts +107 -0
  31. package/dist/performance/HotReloadDelta.d.ts.map +1 -0
  32. package/dist/performance/HotReloadDelta.js +333 -0
  33. package/dist/performance/HotReloadDelta.js.map +1 -0
  34. package/dist/performance/ObjectPool.d.ts +150 -0
  35. package/dist/performance/ObjectPool.d.ts.map +1 -0
  36. package/dist/performance/ObjectPool.js +297 -0
  37. package/dist/performance/ObjectPool.js.map +1 -0
  38. package/dist/performance/PerfReporter.d.ts +123 -0
  39. package/dist/performance/PerfReporter.d.ts.map +1 -0
  40. package/dist/performance/PerfReporter.js +281 -0
  41. package/dist/performance/PerfReporter.js.map +1 -0
  42. package/dist/performance/ThreadPool.d.ts +107 -0
  43. package/dist/performance/ThreadPool.d.ts.map +1 -0
  44. package/dist/performance/ThreadPool.js +348 -0
  45. package/dist/performance/ThreadPool.js.map +1 -0
  46. package/docs/PERFORMANCE.md +355 -0
  47. package/docs/branching/ERD.md +214 -0
  48. package/docs/branching/PDM.md +443 -0
  49. package/docs/branching/RELEASE-v1.2.0.md +169 -0
  50. package/examples/branching-advanced-demo.ts +339 -0
  51. package/examples/branching-quickstart.ts +314 -0
  52. package/examples/quickstart-demo.js +82 -0
  53. package/package.json +21 -8
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HotReloadDelta.js","sourceRoot":"","sources":["../../src/performance/HotReloadDelta.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,150 @@
1
+ export interface Poolable {
2
+ reset(): void;
3
+ isInUse(): boolean;
4
+ setInUse(inUse: boolean): void;
5
+ }
6
+ export interface PoolableConstructor<T extends Poolable> {
7
+ new (): T;
8
+ }
9
+ /**
10
+ * Generic Object Pool for QNCE narrative objects
11
+ * Reduces GC pressure by reusing objects instead of creating new ones
12
+ */
13
+ export declare class ObjectPool<T extends Poolable> {
14
+ private pool;
15
+ private createFn;
16
+ private maxSize;
17
+ private created;
18
+ private borrowed;
19
+ private returned;
20
+ constructor(createFn: () => T, initialSize?: number, maxSize?: number);
21
+ /**
22
+ * Borrow an object from the pool
23
+ */
24
+ borrow(): T;
25
+ /**
26
+ * Return an object to the pool
27
+ */
28
+ return(obj: T): void;
29
+ /**
30
+ * Get pool statistics for monitoring
31
+ */
32
+ getStats(): {
33
+ poolSize: number;
34
+ maxSize: number;
35
+ created: number;
36
+ borrowed: number;
37
+ returned: number;
38
+ inUse: number;
39
+ hitRate: number;
40
+ };
41
+ /**
42
+ * Clear the pool (useful for testing)
43
+ */
44
+ clear(): void;
45
+ /**
46
+ * Resize the pool
47
+ */
48
+ resize(newSize: number): void;
49
+ }
50
+ /**
51
+ * Pooled Flow object for narrative state management
52
+ */
53
+ export declare class PooledFlow implements Poolable {
54
+ private _inUse;
55
+ nodeId: string;
56
+ timestamp: number;
57
+ metadata: Record<string, unknown>;
58
+ transitions: string[];
59
+ constructor();
60
+ reset(): void;
61
+ isInUse(): boolean;
62
+ setInUse(inUse: boolean): void;
63
+ initialize(nodeId: string, metadata?: Record<string, unknown>): void;
64
+ addTransition(fromNodeId: string, toNodeId: string): void;
65
+ getDuration(): number;
66
+ }
67
+ /**
68
+ * Pooled Node object for narrative content
69
+ */
70
+ export declare class PooledNode implements Poolable {
71
+ private _inUse;
72
+ id: string;
73
+ text: string;
74
+ choices: unknown[];
75
+ flags: Record<string, unknown>;
76
+ lastAccessed: number;
77
+ constructor();
78
+ reset(): void;
79
+ isInUse(): boolean;
80
+ setInUse(inUse: boolean): void;
81
+ initialize(id: string, text: string, choices?: unknown[]): void;
82
+ touch(): void;
83
+ }
84
+ /**
85
+ * Pooled Asset object for narrative resources
86
+ */
87
+ export declare class PooledAsset implements Poolable {
88
+ private _inUse;
89
+ id: string;
90
+ type: string;
91
+ data: unknown;
92
+ size: number;
93
+ loaded: boolean;
94
+ constructor();
95
+ reset(): void;
96
+ isInUse(): boolean;
97
+ setInUse(inUse: boolean): void;
98
+ initialize(id: string, type: string, data: unknown): void;
99
+ private calculateSize;
100
+ }
101
+ /**
102
+ * Pool Manager - Centralized management of all object pools
103
+ */
104
+ export declare class PoolManager {
105
+ private static instance;
106
+ private flowPool;
107
+ private nodePool;
108
+ private assetPool;
109
+ private constructor();
110
+ static getInstance(): PoolManager;
111
+ borrowFlow(): PooledFlow;
112
+ returnFlow(flow: PooledFlow): void;
113
+ borrowNode(): PooledNode;
114
+ returnNode(node: PooledNode): void;
115
+ borrowAsset(): PooledAsset;
116
+ returnAsset(asset: PooledAsset): void;
117
+ getAllStats(): {
118
+ flows: {
119
+ poolSize: number;
120
+ maxSize: number;
121
+ created: number;
122
+ borrowed: number;
123
+ returned: number;
124
+ inUse: number;
125
+ hitRate: number;
126
+ };
127
+ nodes: {
128
+ poolSize: number;
129
+ maxSize: number;
130
+ created: number;
131
+ borrowed: number;
132
+ returned: number;
133
+ inUse: number;
134
+ hitRate: number;
135
+ };
136
+ assets: {
137
+ poolSize: number;
138
+ maxSize: number;
139
+ created: number;
140
+ borrowed: number;
141
+ returned: number;
142
+ inUse: number;
143
+ hitRate: number;
144
+ };
145
+ };
146
+ getGCPressureReduction(): number;
147
+ clearAllPools(): void;
148
+ }
149
+ export declare const poolManager: PoolManager;
150
+ //# sourceMappingURL=ObjectPool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectPool.d.ts","sourceRoot":"","sources":["../../src/performance/ObjectPool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,297 @@
1
+ "use strict";
2
+ // S2-T1: Object Pooling for Narrative Objects
3
+ // Generic object pool to eliminate runtime allocations and reduce GC pressure
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.poolManager = exports.PoolManager = exports.PooledAsset = exports.PooledNode = exports.PooledFlow = exports.ObjectPool = void 0;
6
+ /**
7
+ * Generic Object Pool for QNCE narrative objects
8
+ * Reduces GC pressure by reusing objects instead of creating new ones
9
+ */
10
+ class ObjectPool {
11
+ pool = [];
12
+ createFn;
13
+ maxSize;
14
+ created = 0;
15
+ borrowed = 0;
16
+ returned = 0;
17
+ constructor(createFn, initialSize = 10, maxSize = 100) {
18
+ this.createFn = createFn;
19
+ this.maxSize = maxSize;
20
+ // Pre-populate pool
21
+ for (let i = 0; i < initialSize; i++) {
22
+ const obj = this.createFn();
23
+ obj.setInUse(false);
24
+ this.pool.push(obj);
25
+ this.created++;
26
+ }
27
+ }
28
+ /**
29
+ * Borrow an object from the pool
30
+ */
31
+ borrow() {
32
+ let obj;
33
+ if (this.pool.length > 0) {
34
+ obj = this.pool.pop();
35
+ }
36
+ else {
37
+ // Pool exhausted, create new object
38
+ obj = this.createFn();
39
+ this.created++;
40
+ }
41
+ obj.reset();
42
+ obj.setInUse(true);
43
+ this.borrowed++;
44
+ return obj;
45
+ }
46
+ /**
47
+ * Return an object to the pool
48
+ */
49
+ return(obj) {
50
+ if (!obj.isInUse()) {
51
+ console.warn('Attempting to return object that is not in use');
52
+ return;
53
+ }
54
+ obj.setInUse(false);
55
+ this.returned++;
56
+ // Only return to pool if under max size
57
+ if (this.pool.length < this.maxSize) {
58
+ this.pool.push(obj);
59
+ }
60
+ // Otherwise let GC handle it (controlled disposal)
61
+ }
62
+ /**
63
+ * Get pool statistics for monitoring
64
+ */
65
+ getStats() {
66
+ return {
67
+ poolSize: this.pool.length,
68
+ maxSize: this.maxSize,
69
+ created: this.created,
70
+ borrowed: this.borrowed,
71
+ returned: this.returned,
72
+ inUse: this.borrowed - this.returned,
73
+ hitRate: this.borrowed > 0 ? ((this.borrowed - this.created) / this.borrowed) * 100 : 0
74
+ };
75
+ }
76
+ /**
77
+ * Clear the pool (useful for testing)
78
+ */
79
+ clear() {
80
+ this.pool.forEach(obj => obj.setInUse(false));
81
+ this.pool.length = 0;
82
+ this.created = 0;
83
+ this.borrowed = 0;
84
+ this.returned = 0;
85
+ }
86
+ /**
87
+ * Resize the pool
88
+ */
89
+ resize(newSize) {
90
+ if (newSize < this.pool.length) {
91
+ // Shrink pool
92
+ this.pool.splice(newSize);
93
+ }
94
+ else if (newSize > this.pool.length) {
95
+ // Grow pool
96
+ const toAdd = newSize - this.pool.length;
97
+ for (let i = 0; i < toAdd && this.pool.length < this.maxSize; i++) {
98
+ const obj = this.createFn();
99
+ obj.setInUse(false);
100
+ this.pool.push(obj);
101
+ this.created++;
102
+ }
103
+ }
104
+ }
105
+ }
106
+ exports.ObjectPool = ObjectPool;
107
+ /**
108
+ * Pooled Flow object for narrative state management
109
+ */
110
+ class PooledFlow {
111
+ _inUse = false;
112
+ nodeId = '';
113
+ timestamp = 0;
114
+ metadata = {};
115
+ transitions = [];
116
+ constructor() {
117
+ this.reset();
118
+ }
119
+ reset() {
120
+ this.nodeId = '';
121
+ this.timestamp = 0;
122
+ this.metadata = {};
123
+ this.transitions.length = 0;
124
+ }
125
+ isInUse() {
126
+ return this._inUse;
127
+ }
128
+ setInUse(inUse) {
129
+ this._inUse = inUse;
130
+ }
131
+ // Flow-specific methods
132
+ initialize(nodeId, metadata) {
133
+ this.nodeId = nodeId;
134
+ this.timestamp = performance.now();
135
+ if (metadata) {
136
+ this.metadata = { ...metadata };
137
+ }
138
+ }
139
+ addTransition(fromNodeId, toNodeId) {
140
+ this.transitions.push(`${fromNodeId}->${toNodeId}`);
141
+ }
142
+ getDuration() {
143
+ return performance.now() - this.timestamp;
144
+ }
145
+ }
146
+ exports.PooledFlow = PooledFlow;
147
+ /**
148
+ * Pooled Node object for narrative content
149
+ */
150
+ class PooledNode {
151
+ _inUse = false;
152
+ id = '';
153
+ text = '';
154
+ choices = [];
155
+ flags = {};
156
+ lastAccessed = 0;
157
+ constructor() {
158
+ this.reset();
159
+ }
160
+ reset() {
161
+ this.id = '';
162
+ this.text = '';
163
+ this.choices.length = 0;
164
+ this.flags = {};
165
+ this.lastAccessed = 0;
166
+ }
167
+ isInUse() {
168
+ return this._inUse;
169
+ }
170
+ setInUse(inUse) {
171
+ this._inUse = inUse;
172
+ }
173
+ // Node-specific methods
174
+ initialize(id, text, choices = []) {
175
+ this.id = id;
176
+ this.text = text;
177
+ this.choices = [...choices];
178
+ this.lastAccessed = performance.now();
179
+ }
180
+ touch() {
181
+ this.lastAccessed = performance.now();
182
+ }
183
+ }
184
+ exports.PooledNode = PooledNode;
185
+ /**
186
+ * Pooled Asset object for narrative resources
187
+ */
188
+ class PooledAsset {
189
+ _inUse = false;
190
+ id = '';
191
+ type = '';
192
+ data = null;
193
+ size = 0;
194
+ loaded = false;
195
+ constructor() {
196
+ this.reset();
197
+ }
198
+ reset() {
199
+ this.id = '';
200
+ this.type = '';
201
+ this.data = null;
202
+ this.size = 0;
203
+ this.loaded = false;
204
+ }
205
+ isInUse() {
206
+ return this._inUse;
207
+ }
208
+ setInUse(inUse) {
209
+ this._inUse = inUse;
210
+ }
211
+ // Asset-specific methods
212
+ initialize(id, type, data) {
213
+ this.id = id;
214
+ this.type = type;
215
+ this.data = data;
216
+ this.size = this.calculateSize(data);
217
+ this.loaded = true;
218
+ }
219
+ calculateSize(data) {
220
+ if (typeof data === 'string') {
221
+ return data.length * 2; // Approximate UTF-16 size
222
+ }
223
+ if (data && typeof data === 'object') {
224
+ return JSON.stringify(data).length * 2;
225
+ }
226
+ return 0;
227
+ }
228
+ }
229
+ exports.PooledAsset = PooledAsset;
230
+ /**
231
+ * Pool Manager - Centralized management of all object pools
232
+ */
233
+ class PoolManager {
234
+ static instance;
235
+ flowPool;
236
+ nodePool;
237
+ assetPool;
238
+ constructor() {
239
+ // Initialize pools with different sizes based on expected usage
240
+ this.flowPool = new ObjectPool(() => new PooledFlow(), 5, 50);
241
+ this.nodePool = new ObjectPool(() => new PooledNode(), 20, 200);
242
+ this.assetPool = new ObjectPool(() => new PooledAsset(), 10, 100);
243
+ }
244
+ static getInstance() {
245
+ if (!PoolManager.instance) {
246
+ PoolManager.instance = new PoolManager();
247
+ }
248
+ return PoolManager.instance;
249
+ }
250
+ // Flow pool methods
251
+ borrowFlow() {
252
+ return this.flowPool.borrow();
253
+ }
254
+ returnFlow(flow) {
255
+ this.flowPool.return(flow);
256
+ }
257
+ // Node pool methods
258
+ borrowNode() {
259
+ return this.nodePool.borrow();
260
+ }
261
+ returnNode(node) {
262
+ this.nodePool.return(node);
263
+ }
264
+ // Asset pool methods
265
+ borrowAsset() {
266
+ return this.assetPool.borrow();
267
+ }
268
+ returnAsset(asset) {
269
+ this.assetPool.return(asset);
270
+ }
271
+ // Statistics and monitoring
272
+ getAllStats() {
273
+ return {
274
+ flows: this.flowPool.getStats(),
275
+ nodes: this.nodePool.getStats(),
276
+ assets: this.assetPool.getStats()
277
+ };
278
+ }
279
+ // Performance monitoring
280
+ getGCPressureReduction() {
281
+ const stats = this.getAllStats();
282
+ const totalHitRate = (stats.flows.hitRate +
283
+ stats.nodes.hitRate +
284
+ stats.assets.hitRate) / 3;
285
+ return totalHitRate;
286
+ }
287
+ // Cleanup for testing
288
+ clearAllPools() {
289
+ this.flowPool.clear();
290
+ this.nodePool.clear();
291
+ this.assetPool.clear();
292
+ }
293
+ }
294
+ exports.PoolManager = PoolManager;
295
+ // Export singleton instance
296
+ exports.poolManager = PoolManager.getInstance();
297
+ //# sourceMappingURL=ObjectPool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObjectPool.js","sourceRoot":"","sources":["../../src/performance/ObjectPool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ export interface PerfEvent {
2
+ id: string;
3
+ type: 'flow-start' | 'flow-complete' | 'cache-hit' | 'cache-miss' | 'hot-reload-start' | 'hot-reload-end' | 'state-transition' | 'custom';
4
+ timestamp: number;
5
+ duration?: number;
6
+ metadata: Record<string, unknown>;
7
+ category: 'engine' | 'cache' | 'hot-reload' | 'user' | 'system';
8
+ }
9
+ export interface PerfSummary {
10
+ totalEvents: number;
11
+ eventsByType: Record<string, number>;
12
+ avgDurations: Record<string, number>;
13
+ maxDurations: Record<string, number>;
14
+ minDurations: Record<string, number>;
15
+ cacheHitRate: number;
16
+ hotReloadPerformance: {
17
+ avgTime: number;
18
+ maxTime: number;
19
+ totalReloads: number;
20
+ };
21
+ timeRange: {
22
+ start: number;
23
+ end: number;
24
+ duration: number;
25
+ };
26
+ }
27
+ export interface PerfReporterConfig {
28
+ batchSize: number;
29
+ flushInterval: number;
30
+ enableBackgroundFlush: boolean;
31
+ maxEventHistory: number;
32
+ enableConsoleOutput: boolean;
33
+ }
34
+ /**
35
+ * PerfReporter - Batched performance event collection and analysis
36
+ * Designed to work off main thread for minimal performance impact
37
+ */
38
+ export declare class PerfReporter {
39
+ private events;
40
+ private config;
41
+ private flushTimer;
42
+ private startTime;
43
+ private activeSpans;
44
+ constructor(config?: Partial<PerfReporterConfig>);
45
+ /**
46
+ * Record a performance event
47
+ */
48
+ record(type: PerfEvent['type'], metadata?: Record<string, unknown>, category?: PerfEvent['category']): string;
49
+ /**
50
+ * Start a performance span (for measuring duration)
51
+ */
52
+ startSpan(type: PerfEvent['type'], metadata?: Record<string, unknown>, category?: PerfEvent['category']): string;
53
+ /**
54
+ * End a performance span and record the complete event
55
+ */
56
+ endSpan(spanId: string, additionalMetadata?: Record<string, unknown>): void;
57
+ /**
58
+ * Record flow start event (S2-T4 requirement)
59
+ */
60
+ recordFlowStart(nodeId: string, metadata?: Record<string, unknown>): string;
61
+ /**
62
+ * Record flow completion event (S2-T4 requirement)
63
+ */
64
+ recordFlowComplete(spanId: string, nextNodeId: string, metadata?: Record<string, unknown>): void;
65
+ /**
66
+ * Record cache hit event (S2-T4 requirement)
67
+ */
68
+ recordCacheHit(cacheKey: string, metadata?: Record<string, unknown>): string;
69
+ /**
70
+ * Record cache miss event (S2-T4 requirement)
71
+ */
72
+ recordCacheMiss(cacheKey: string, metadata?: Record<string, unknown>): string;
73
+ /**
74
+ * Record hot-reload start event (S2-T4 requirement)
75
+ */
76
+ recordHotReloadStart(deltaSize: number, metadata?: Record<string, unknown>): string;
77
+ /**
78
+ * Record hot-reload completion event (S2-T4 requirement)
79
+ */
80
+ recordHotReloadEnd(spanId: string, success: boolean, metadata?: Record<string, unknown>): void;
81
+ /**
82
+ * Generate performance summary for CLI dashboard
83
+ */
84
+ summary(): PerfSummary;
85
+ /**
86
+ * Get raw events for detailed analysis
87
+ */
88
+ getEvents(): PerfEvent[];
89
+ /**
90
+ * Clear event history
91
+ */
92
+ clear(): void;
93
+ /**
94
+ * Flush events to background processing
95
+ */
96
+ flush(): void;
97
+ /**
98
+ * Start automatic flush timer
99
+ */
100
+ private startFlushTimer;
101
+ /**
102
+ * Stop automatic flush timer
103
+ */
104
+ stopFlushTimer(): void;
105
+ /**
106
+ * Generate unique event ID
107
+ */
108
+ private generateEventId;
109
+ }
110
+ export declare function getPerfReporter(config?: Partial<PerfReporterConfig>): PerfReporter;
111
+ export declare function shutdownPerfReporter(): void;
112
+ export declare const perf: {
113
+ flowStart: (nodeId: string, metadata?: Record<string, unknown>) => string;
114
+ flowComplete: (spanId: string, nextNodeId: string, metadata?: Record<string, unknown>) => void;
115
+ cacheHit: (cacheKey: string, metadata?: Record<string, unknown>) => string;
116
+ cacheMiss: (cacheKey: string, metadata?: Record<string, unknown>) => string;
117
+ hotReloadStart: (deltaSize: number, metadata?: Record<string, unknown>) => string;
118
+ hotReloadEnd: (spanId: string, success: boolean, metadata?: Record<string, unknown>) => void;
119
+ record: (type: PerfEvent["type"], metadata?: Record<string, unknown>, category?: PerfEvent["category"]) => string;
120
+ summary: () => PerfSummary;
121
+ clear: () => void;
122
+ };
123
+ //# sourceMappingURL=PerfReporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PerfReporter.d.ts","sourceRoot":"","sources":["../../src/performance/PerfReporter.ts"],"names":[],"mappings":"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"}