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,281 @@
1
+ "use strict";
2
+ // S2-T4: Profiler Event Instrumentation
3
+ // PerfReporter for batched performance event collection and reporting
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.perf = exports.PerfReporter = void 0;
6
+ exports.getPerfReporter = getPerfReporter;
7
+ exports.shutdownPerfReporter = shutdownPerfReporter;
8
+ /**
9
+ * PerfReporter - Batched performance event collection and analysis
10
+ * Designed to work off main thread for minimal performance impact
11
+ */
12
+ class PerfReporter {
13
+ events = [];
14
+ config;
15
+ flushTimer = null;
16
+ startTime;
17
+ activeSpans = new Map();
18
+ constructor(config = {}) {
19
+ this.config = {
20
+ batchSize: config.batchSize || 100,
21
+ flushInterval: config.flushInterval || 5000, // 5 seconds
22
+ enableBackgroundFlush: config.enableBackgroundFlush !== false,
23
+ maxEventHistory: config.maxEventHistory || 1000,
24
+ enableConsoleOutput: config.enableConsoleOutput || false
25
+ };
26
+ this.startTime = performance.now();
27
+ if (this.config.enableBackgroundFlush) {
28
+ this.startFlushTimer();
29
+ }
30
+ }
31
+ /**
32
+ * Record a performance event
33
+ */
34
+ record(type, metadata = {}, category = 'engine') {
35
+ const event = {
36
+ id: this.generateEventId(),
37
+ type,
38
+ timestamp: performance.now(),
39
+ metadata,
40
+ category
41
+ };
42
+ this.events.push(event);
43
+ if (this.config.enableConsoleOutput) {
44
+ console.log(`[PERF] ${type}:`, metadata);
45
+ }
46
+ // Auto-flush if batch size reached
47
+ if (this.events.length >= this.config.batchSize) {
48
+ this.flush();
49
+ }
50
+ return event.id;
51
+ }
52
+ /**
53
+ * Start a performance span (for measuring duration)
54
+ */
55
+ startSpan(type, metadata = {}, category = 'engine') {
56
+ const spanId = this.generateEventId();
57
+ const event = {
58
+ id: spanId,
59
+ type,
60
+ timestamp: performance.now(),
61
+ metadata: { ...metadata, spanStart: true },
62
+ category
63
+ };
64
+ this.activeSpans.set(spanId, event);
65
+ return spanId;
66
+ }
67
+ /**
68
+ * End a performance span and record the complete event
69
+ */
70
+ endSpan(spanId, additionalMetadata = {}) {
71
+ const startEvent = this.activeSpans.get(spanId);
72
+ if (!startEvent) {
73
+ console.warn(`[PERF] Span ${spanId} not found`);
74
+ return;
75
+ }
76
+ const endTime = performance.now();
77
+ const duration = endTime - startEvent.timestamp;
78
+ const completeEvent = {
79
+ ...startEvent,
80
+ duration,
81
+ metadata: {
82
+ ...startEvent.metadata,
83
+ ...additionalMetadata,
84
+ spanEnd: true
85
+ }
86
+ };
87
+ this.events.push(completeEvent);
88
+ this.activeSpans.delete(spanId);
89
+ if (this.config.enableConsoleOutput) {
90
+ console.log(`[PERF] ${startEvent.type} completed in ${duration.toFixed(2)}ms`);
91
+ }
92
+ // Auto-flush if batch size reached
93
+ if (this.events.length >= this.config.batchSize) {
94
+ this.flush();
95
+ }
96
+ }
97
+ /**
98
+ * Record flow start event (S2-T4 requirement)
99
+ */
100
+ recordFlowStart(nodeId, metadata = {}) {
101
+ return this.startSpan('flow-start', { nodeId, ...metadata }, 'engine');
102
+ }
103
+ /**
104
+ * Record flow completion event (S2-T4 requirement)
105
+ */
106
+ recordFlowComplete(spanId, nextNodeId, metadata = {}) {
107
+ this.endSpan(spanId, { nextNodeId, ...metadata });
108
+ }
109
+ /**
110
+ * Record cache hit event (S2-T4 requirement)
111
+ */
112
+ recordCacheHit(cacheKey, metadata = {}) {
113
+ return this.record('cache-hit', { cacheKey, ...metadata }, 'cache');
114
+ }
115
+ /**
116
+ * Record cache miss event (S2-T4 requirement)
117
+ */
118
+ recordCacheMiss(cacheKey, metadata = {}) {
119
+ return this.record('cache-miss', { cacheKey, ...metadata }, 'cache');
120
+ }
121
+ /**
122
+ * Record hot-reload start event (S2-T4 requirement)
123
+ */
124
+ recordHotReloadStart(deltaSize, metadata = {}) {
125
+ return this.startSpan('hot-reload-start', { deltaSize, ...metadata }, 'hot-reload');
126
+ }
127
+ /**
128
+ * Record hot-reload completion event (S2-T4 requirement)
129
+ */
130
+ recordHotReloadEnd(spanId, success, metadata = {}) {
131
+ this.endSpan(spanId, { success, ...metadata });
132
+ }
133
+ /**
134
+ * Generate performance summary for CLI dashboard
135
+ */
136
+ summary() {
137
+ const now = performance.now();
138
+ const eventsByType = {};
139
+ const durationsByType = {};
140
+ let cacheHits = 0;
141
+ let cacheMisses = 0;
142
+ let hotReloads = [];
143
+ // Analyze events
144
+ for (const event of this.events) {
145
+ // Count events by type
146
+ eventsByType[event.type] = (eventsByType[event.type] || 0) + 1;
147
+ // Collect durations
148
+ if (event.duration !== undefined) {
149
+ if (!durationsByType[event.type]) {
150
+ durationsByType[event.type] = [];
151
+ }
152
+ durationsByType[event.type].push(event.duration);
153
+ }
154
+ // Cache metrics
155
+ if (event.type === 'cache-hit')
156
+ cacheHits++;
157
+ if (event.type === 'cache-miss')
158
+ cacheMisses++;
159
+ // Hot-reload metrics
160
+ if (event.type === 'hot-reload-start' && event.duration !== undefined) {
161
+ hotReloads.push(event.duration);
162
+ }
163
+ }
164
+ // Calculate averages, mins, maxs
165
+ const avgDurations = {};
166
+ const maxDurations = {};
167
+ const minDurations = {};
168
+ for (const [type, durations] of Object.entries(durationsByType)) {
169
+ if (durations.length > 0) {
170
+ avgDurations[type] = durations.reduce((sum, d) => sum + d, 0) / durations.length;
171
+ maxDurations[type] = Math.max(...durations);
172
+ minDurations[type] = Math.min(...durations);
173
+ }
174
+ }
175
+ // Cache hit rate
176
+ const totalCacheEvents = cacheHits + cacheMisses;
177
+ const cacheHitRate = totalCacheEvents > 0 ? (cacheHits / totalCacheEvents) * 100 : 0;
178
+ // Hot-reload performance
179
+ const hotReloadPerformance = {
180
+ avgTime: hotReloads.length > 0 ? hotReloads.reduce((sum, d) => sum + d, 0) / hotReloads.length : 0,
181
+ maxTime: hotReloads.length > 0 ? Math.max(...hotReloads) : 0,
182
+ totalReloads: hotReloads.length
183
+ };
184
+ return {
185
+ totalEvents: this.events.length,
186
+ eventsByType,
187
+ avgDurations,
188
+ maxDurations,
189
+ minDurations,
190
+ cacheHitRate,
191
+ hotReloadPerformance,
192
+ timeRange: {
193
+ start: this.startTime,
194
+ end: now,
195
+ duration: now - this.startTime
196
+ }
197
+ };
198
+ }
199
+ /**
200
+ * Get raw events for detailed analysis
201
+ */
202
+ getEvents() {
203
+ return [...this.events];
204
+ }
205
+ /**
206
+ * Clear event history
207
+ */
208
+ clear() {
209
+ this.events.length = 0;
210
+ this.activeSpans.clear();
211
+ this.startTime = performance.now();
212
+ }
213
+ /**
214
+ * Flush events to background processing
215
+ */
216
+ flush() {
217
+ if (this.events.length === 0)
218
+ return;
219
+ // TODO: Body - integrate with ThreadPool for background processing
220
+ // For now, just maintain event history with size limit
221
+ if (this.events.length > this.config.maxEventHistory) {
222
+ const excess = this.events.length - this.config.maxEventHistory;
223
+ this.events.splice(0, excess);
224
+ }
225
+ if (this.config.enableConsoleOutput) {
226
+ console.log(`[PERF] Flushed ${this.events.length} events`);
227
+ }
228
+ }
229
+ /**
230
+ * Start automatic flush timer
231
+ */
232
+ startFlushTimer() {
233
+ this.flushTimer = setInterval(() => {
234
+ this.flush();
235
+ }, this.config.flushInterval);
236
+ }
237
+ /**
238
+ * Stop automatic flush timer
239
+ */
240
+ stopFlushTimer() {
241
+ if (this.flushTimer) {
242
+ clearInterval(this.flushTimer);
243
+ this.flushTimer = null;
244
+ }
245
+ }
246
+ /**
247
+ * Generate unique event ID
248
+ */
249
+ generateEventId() {
250
+ return `perf-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
251
+ }
252
+ }
253
+ exports.PerfReporter = PerfReporter;
254
+ // Singleton instance for global access
255
+ let globalPerfReporter = null;
256
+ function getPerfReporter(config) {
257
+ if (!globalPerfReporter) {
258
+ globalPerfReporter = new PerfReporter(config);
259
+ }
260
+ return globalPerfReporter;
261
+ }
262
+ function shutdownPerfReporter() {
263
+ if (globalPerfReporter) {
264
+ globalPerfReporter.stopFlushTimer();
265
+ globalPerfReporter.flush();
266
+ globalPerfReporter = null;
267
+ }
268
+ }
269
+ // Convenience functions for common operations
270
+ exports.perf = {
271
+ flowStart: (nodeId, metadata) => getPerfReporter().recordFlowStart(nodeId, metadata),
272
+ flowComplete: (spanId, nextNodeId, metadata) => getPerfReporter().recordFlowComplete(spanId, nextNodeId, metadata),
273
+ cacheHit: (cacheKey, metadata) => getPerfReporter().recordCacheHit(cacheKey, metadata),
274
+ cacheMiss: (cacheKey, metadata) => getPerfReporter().recordCacheMiss(cacheKey, metadata),
275
+ hotReloadStart: (deltaSize, metadata) => getPerfReporter().recordHotReloadStart(deltaSize, metadata),
276
+ hotReloadEnd: (spanId, success, metadata) => getPerfReporter().recordHotReloadEnd(spanId, success, metadata),
277
+ record: (type, metadata, category) => getPerfReporter().record(type, metadata, category),
278
+ summary: () => getPerfReporter().summary(),
279
+ clear: () => getPerfReporter().clear()
280
+ };
281
+ //# sourceMappingURL=PerfReporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PerfReporter.js","sourceRoot":"","sources":["../../src/performance/PerfReporter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ export interface QnceJob {
2
+ id: string;
3
+ type: 'cache-load' | 'telemetry-write' | 'hot-reload-prep' | 'asset-process';
4
+ priority: 'low' | 'normal' | 'high';
5
+ payload: unknown;
6
+ timestamp: number;
7
+ resolve: (result: unknown) => void;
8
+ reject: (error: Error) => void;
9
+ }
10
+ export interface ThreadPoolConfig {
11
+ maxWorkers: number;
12
+ queueLimit: number;
13
+ idleTimeout: number;
14
+ enableProfiling: boolean;
15
+ }
16
+ export interface ThreadPoolStats {
17
+ activeWorkers: number;
18
+ queuedJobs: number;
19
+ completedJobs: number;
20
+ failedJobs: number;
21
+ avgExecutionTime: number;
22
+ workerUtilization: number;
23
+ }
24
+ /**
25
+ * QnceThreadPool - Background job processing for QNCE engine
26
+ * Handles cache operations, telemetry, and other non-blocking tasks
27
+ */
28
+ export declare class QnceThreadPool {
29
+ private workers;
30
+ private jobQueue;
31
+ private activeJobs;
32
+ private config;
33
+ private stats;
34
+ private isShuttingDown;
35
+ constructor(config?: Partial<ThreadPoolConfig>);
36
+ /**
37
+ * Submit job for background processing
38
+ */
39
+ submitJob<T = unknown>(type: QnceJob['type'], payload: unknown, priority?: QnceJob['priority']): Promise<T>;
40
+ /**
41
+ * Cache load operation (S2-T2 primary use case)
42
+ */
43
+ loadFromCache(cacheKey: string, loader: () => Promise<unknown>): Promise<unknown>;
44
+ /**
45
+ * Telemetry write operation (S2-T2 primary use case)
46
+ */
47
+ writeTelemetry(eventData: unknown): Promise<void>;
48
+ /**
49
+ * Hot-reload preparation (integration with S2-T3)
50
+ */
51
+ prepareHotReload(deltaData: unknown): Promise<unknown>;
52
+ /**
53
+ * Get current thread pool statistics
54
+ */
55
+ getStats(): ThreadPoolStats;
56
+ /**
57
+ * Graceful shutdown of thread pool
58
+ */
59
+ shutdown(timeoutMs?: number): Promise<void>;
60
+ /**
61
+ * Initialize worker threads based on environment
62
+ */
63
+ private initializeWorkers;
64
+ /**
65
+ * Web Workers for browser environment
66
+ */
67
+ private initializeWebWorkers;
68
+ /**
69
+ * Node.js worker_threads (placeholder - would need actual implementation)
70
+ */
71
+ private initializeNodeWorkers;
72
+ /**
73
+ * Fallback simulation for testing/development
74
+ */
75
+ private initializeFallbackWorkers;
76
+ /**
77
+ * Generate Web Worker code for browser execution
78
+ */
79
+ private generateWebWorkerCode;
80
+ /**
81
+ * Setup worker message handlers
82
+ */
83
+ private setupWorkerHandlers;
84
+ /**
85
+ * Handle worker completion messages
86
+ */
87
+ private handleWorkerMessage;
88
+ /**
89
+ * Handle worker errors
90
+ */
91
+ private handleWorkerError;
92
+ /**
93
+ * Process job queue by assigning jobs to available workers
94
+ */
95
+ private processQueue;
96
+ /**
97
+ * Find insertion index for job based on priority
98
+ */
99
+ private findInsertionIndex;
100
+ /**
101
+ * Update execution time statistics
102
+ */
103
+ private updateExecutionTimeStats;
104
+ }
105
+ export declare function getThreadPool(config?: Partial<ThreadPoolConfig>): QnceThreadPool;
106
+ export declare function shutdownThreadPool(): Promise<void>;
107
+ //# sourceMappingURL=ThreadPool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreadPool.d.ts","sourceRoot":"","sources":["../../src/performance/ThreadPool.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,eAAe,CAAC;IAC7E,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,UAAU,CAAmC;IACrD,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,cAAc,CAAS;gBAEnB,MAAM,GAAE,OAAO,CAAC,gBAAgB,CAAM;IAoBlD;;OAEG;IACG,SAAS,CAAC,CAAC,GAAG,OAAO,EACzB,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EACrB,OAAO,EAAE,OAAO,EAChB,QAAQ,GAAE,OAAO,CAAC,UAAU,CAAY,GACvC,OAAO,CAAC,CAAC,CAAC;IA+Bb;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvF;;OAEG;IACG,cAAc,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD;;OAEG;IACG,gBAAgB,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAI5D;;OAEG;IACH,QAAQ,IAAI,eAAe;IAI3B;;OAEG;IACG,QAAQ,CAAC,SAAS,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB/C;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAezB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiB5B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAM7B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IA0BjC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAwE7B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAK3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAKzB;;OAEG;IACH,OAAO,CAAC,YAAY;IAsBpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACH,OAAO,CAAC,wBAAwB;CAQjC;AAKD,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,cAAc,CAKhF;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAOlD"}