edgeflowjs 0.1.0 → 0.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 (152) hide show
  1. package/README.md +200 -66
  2. package/dist/backends/index.d.ts +9 -2
  3. package/dist/backends/index.d.ts.map +1 -1
  4. package/dist/backends/index.js +13 -13
  5. package/dist/backends/index.js.map +1 -1
  6. package/dist/backends/onnx.d.ts +11 -4
  7. package/dist/backends/onnx.d.ts.map +1 -1
  8. package/dist/backends/onnx.js +97 -78
  9. package/dist/backends/onnx.js.map +1 -1
  10. package/dist/backends/transformers-adapter.d.ts +99 -0
  11. package/dist/backends/transformers-adapter.d.ts.map +1 -0
  12. package/dist/backends/transformers-adapter.js +171 -0
  13. package/dist/backends/transformers-adapter.js.map +1 -0
  14. package/dist/backends/webgpu.d.ts +7 -5
  15. package/dist/backends/webgpu.d.ts.map +1 -1
  16. package/dist/backends/webgpu.js +7 -5
  17. package/dist/backends/webgpu.js.map +1 -1
  18. package/dist/backends/webnn.d.ts +6 -5
  19. package/dist/backends/webnn.d.ts.map +1 -1
  20. package/dist/backends/webnn.js +6 -5
  21. package/dist/backends/webnn.js.map +1 -1
  22. package/dist/core/composer.d.ts +118 -0
  23. package/dist/core/composer.d.ts.map +1 -0
  24. package/dist/core/composer.js +163 -0
  25. package/dist/core/composer.js.map +1 -0
  26. package/dist/core/device-profiler.d.ts +75 -0
  27. package/dist/core/device-profiler.d.ts.map +1 -0
  28. package/dist/core/device-profiler.js +131 -0
  29. package/dist/core/device-profiler.js.map +1 -0
  30. package/dist/core/index.d.ts +4 -0
  31. package/dist/core/index.d.ts.map +1 -1
  32. package/dist/core/index.js +8 -0
  33. package/dist/core/index.js.map +1 -1
  34. package/dist/core/memory.d.ts +22 -2
  35. package/dist/core/memory.d.ts.map +1 -1
  36. package/dist/core/memory.js +49 -13
  37. package/dist/core/memory.js.map +1 -1
  38. package/dist/core/plugin.d.ts +100 -0
  39. package/dist/core/plugin.d.ts.map +1 -0
  40. package/dist/core/plugin.js +106 -0
  41. package/dist/core/plugin.js.map +1 -0
  42. package/dist/core/runtime.d.ts +4 -0
  43. package/dist/core/runtime.d.ts.map +1 -1
  44. package/dist/core/runtime.js +18 -0
  45. package/dist/core/runtime.js.map +1 -1
  46. package/dist/core/scheduler.d.ts +17 -0
  47. package/dist/core/scheduler.d.ts.map +1 -1
  48. package/dist/core/scheduler.js +101 -3
  49. package/dist/core/scheduler.js.map +1 -1
  50. package/dist/core/types.d.ts +14 -0
  51. package/dist/core/types.d.ts.map +1 -1
  52. package/dist/core/types.js.map +1 -1
  53. package/dist/core/worker.d.ts +202 -0
  54. package/dist/core/worker.d.ts.map +1 -0
  55. package/dist/core/worker.js +477 -0
  56. package/dist/core/worker.js.map +1 -0
  57. package/dist/edgeflow.browser.js +9770 -4383
  58. package/dist/edgeflow.browser.js.map +4 -4
  59. package/dist/edgeflow.browser.min.js +435 -5
  60. package/dist/edgeflow.browser.min.js.map +4 -4
  61. package/dist/index.d.ts +7 -4
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +28 -10
  64. package/dist/index.js.map +1 -1
  65. package/dist/pipelines/automatic-speech-recognition.d.ts +63 -0
  66. package/dist/pipelines/automatic-speech-recognition.d.ts.map +1 -0
  67. package/dist/pipelines/automatic-speech-recognition.js +269 -0
  68. package/dist/pipelines/automatic-speech-recognition.js.map +1 -0
  69. package/dist/pipelines/base.d.ts +6 -1
  70. package/dist/pipelines/base.d.ts.map +1 -1
  71. package/dist/pipelines/base.js +12 -2
  72. package/dist/pipelines/base.js.map +1 -1
  73. package/dist/pipelines/feature-extraction.d.ts +5 -40
  74. package/dist/pipelines/feature-extraction.d.ts.map +1 -1
  75. package/dist/pipelines/feature-extraction.js +44 -63
  76. package/dist/pipelines/feature-extraction.js.map +1 -1
  77. package/dist/pipelines/image-classification.d.ts +4 -36
  78. package/dist/pipelines/image-classification.d.ts.map +1 -1
  79. package/dist/pipelines/image-classification.js +22 -60
  80. package/dist/pipelines/image-classification.js.map +1 -1
  81. package/dist/pipelines/image-segmentation.d.ts +221 -0
  82. package/dist/pipelines/image-segmentation.d.ts.map +1 -0
  83. package/dist/pipelines/image-segmentation.js +535 -0
  84. package/dist/pipelines/image-segmentation.js.map +1 -0
  85. package/dist/pipelines/index.d.ts +18 -0
  86. package/dist/pipelines/index.d.ts.map +1 -1
  87. package/dist/pipelines/index.js +51 -2
  88. package/dist/pipelines/index.js.map +1 -1
  89. package/dist/pipelines/object-detection.d.ts +44 -0
  90. package/dist/pipelines/object-detection.d.ts.map +1 -0
  91. package/dist/pipelines/object-detection.js +218 -0
  92. package/dist/pipelines/object-detection.js.map +1 -0
  93. package/dist/pipelines/question-answering.d.ts +41 -0
  94. package/dist/pipelines/question-answering.d.ts.map +1 -0
  95. package/dist/pipelines/question-answering.js +164 -0
  96. package/dist/pipelines/question-answering.js.map +1 -0
  97. package/dist/pipelines/text-classification.d.ts +3 -39
  98. package/dist/pipelines/text-classification.d.ts.map +1 -1
  99. package/dist/pipelines/text-classification.js +29 -67
  100. package/dist/pipelines/text-classification.js.map +1 -1
  101. package/dist/pipelines/text-generation.d.ts +281 -0
  102. package/dist/pipelines/text-generation.d.ts.map +1 -0
  103. package/dist/pipelines/text-generation.js +766 -0
  104. package/dist/pipelines/text-generation.js.map +1 -0
  105. package/dist/pipelines/zero-shot-classification.d.ts +45 -0
  106. package/dist/pipelines/zero-shot-classification.d.ts.map +1 -0
  107. package/dist/pipelines/zero-shot-classification.js +140 -0
  108. package/dist/pipelines/zero-shot-classification.js.map +1 -0
  109. package/dist/tools/benchmark.d.ts +92 -0
  110. package/dist/tools/benchmark.d.ts.map +1 -0
  111. package/dist/tools/benchmark.js +213 -0
  112. package/dist/tools/benchmark.js.map +1 -0
  113. package/dist/tools/debugger.d.ts +258 -0
  114. package/dist/tools/debugger.d.ts.map +1 -0
  115. package/dist/tools/debugger.js +624 -0
  116. package/dist/tools/debugger.js.map +1 -0
  117. package/dist/tools/index.d.ts +8 -0
  118. package/dist/tools/index.d.ts.map +1 -1
  119. package/dist/tools/index.js +16 -0
  120. package/dist/tools/index.js.map +1 -1
  121. package/dist/tools/monitor.d.ts +284 -0
  122. package/dist/tools/monitor.d.ts.map +1 -0
  123. package/dist/tools/monitor.js +921 -0
  124. package/dist/tools/monitor.js.map +1 -0
  125. package/dist/tools/quantization.d.ts +235 -0
  126. package/dist/tools/quantization.d.ts.map +1 -0
  127. package/dist/tools/quantization.js +830 -0
  128. package/dist/tools/quantization.js.map +1 -0
  129. package/dist/utils/hub.d.ts +162 -0
  130. package/dist/utils/hub.d.ts.map +1 -0
  131. package/dist/utils/hub.js +311 -0
  132. package/dist/utils/hub.js.map +1 -0
  133. package/dist/utils/index.d.ts +3 -1
  134. package/dist/utils/index.d.ts.map +1 -1
  135. package/dist/utils/index.js +5 -1
  136. package/dist/utils/index.js.map +1 -1
  137. package/dist/utils/model-loader.d.ts.map +1 -1
  138. package/dist/utils/model-loader.js +106 -30
  139. package/dist/utils/model-loader.js.map +1 -1
  140. package/dist/utils/offline.d.ts +147 -0
  141. package/dist/utils/offline.d.ts.map +1 -0
  142. package/dist/utils/offline.js +405 -0
  143. package/dist/utils/offline.js.map +1 -0
  144. package/dist/utils/preprocessor.d.ts +82 -6
  145. package/dist/utils/preprocessor.d.ts.map +1 -1
  146. package/dist/utils/preprocessor.js +278 -21
  147. package/dist/utils/preprocessor.js.map +1 -1
  148. package/dist/utils/tokenizer.d.ts +197 -72
  149. package/dist/utils/tokenizer.d.ts.map +1 -1
  150. package/dist/utils/tokenizer.js +558 -274
  151. package/dist/utils/tokenizer.js.map +1 -1
  152. package/package.json +26 -11
@@ -0,0 +1,624 @@
1
+ /**
2
+ * edgeFlow.js - Visual Debugging Tools
3
+ *
4
+ * In-browser debugging and visualization utilities for ML models.
5
+ */
6
+ // ============================================================================
7
+ // Tensor Inspection
8
+ // ============================================================================
9
+ /**
10
+ * Calculate tensor statistics
11
+ */
12
+ function calculateTensorStats(data) {
13
+ const arr = data instanceof Float32Array ? data : new Float32Array(data);
14
+ let min = Infinity;
15
+ let max = -Infinity;
16
+ let sum = 0;
17
+ let zeros = 0;
18
+ let nans = 0;
19
+ let infinities = 0;
20
+ for (let i = 0; i < arr.length; i++) {
21
+ const val = arr[i] ?? 0;
22
+ if (isNaN(val)) {
23
+ nans++;
24
+ continue;
25
+ }
26
+ if (!isFinite(val)) {
27
+ infinities++;
28
+ continue;
29
+ }
30
+ min = Math.min(min, val);
31
+ max = Math.max(max, val);
32
+ sum += val;
33
+ if (val === 0)
34
+ zeros++;
35
+ }
36
+ const validCount = arr.length - nans - infinities;
37
+ const mean = validCount > 0 ? sum / validCount : 0;
38
+ // Calculate std
39
+ let varianceSum = 0;
40
+ for (let i = 0; i < arr.length; i++) {
41
+ const val = arr[i] ?? 0;
42
+ if (!isNaN(val) && isFinite(val)) {
43
+ varianceSum += Math.pow(val - mean, 2);
44
+ }
45
+ }
46
+ const std = validCount > 0 ? Math.sqrt(varianceSum / validCount) : 0;
47
+ return {
48
+ min: min === Infinity ? 0 : min,
49
+ max: max === -Infinity ? 0 : max,
50
+ mean,
51
+ std,
52
+ zeros,
53
+ nans,
54
+ infinities,
55
+ sparsity: zeros / arr.length,
56
+ };
57
+ }
58
+ /**
59
+ * Create histogram from data
60
+ */
61
+ function createHistogram(data, bins = 50) {
62
+ const arr = data instanceof Float32Array ? data : new Float32Array(data);
63
+ // Find min/max (excluding NaN/Inf)
64
+ let min = Infinity;
65
+ let max = -Infinity;
66
+ for (let i = 0; i < arr.length; i++) {
67
+ const val = arr[i] ?? 0;
68
+ if (!isNaN(val) && isFinite(val)) {
69
+ min = Math.min(min, val);
70
+ max = Math.max(max, val);
71
+ }
72
+ }
73
+ if (min === Infinity || max === -Infinity || min === max) {
74
+ return { bins: [min || 0], counts: [arr.length], binEdges: [min || 0, max || 0] };
75
+ }
76
+ const binWidth = (max - min) / bins;
77
+ const counts = new Array(bins).fill(0);
78
+ const binEdges = new Array(bins + 1);
79
+ for (let i = 0; i <= bins; i++) {
80
+ binEdges[i] = min + i * binWidth;
81
+ }
82
+ for (let i = 0; i < arr.length; i++) {
83
+ const val = arr[i] ?? 0;
84
+ if (!isNaN(val) && isFinite(val)) {
85
+ const binIndex = Math.min(Math.floor((val - min) / binWidth), bins - 1);
86
+ counts[binIndex]++;
87
+ }
88
+ }
89
+ return {
90
+ bins: binEdges.slice(0, -1).map((e, i) => (e + binEdges[i + 1]) / 2),
91
+ counts,
92
+ binEdges,
93
+ };
94
+ }
95
+ /**
96
+ * Inspect a tensor
97
+ */
98
+ export function inspectTensor(tensor, name = 'tensor', options = {}) {
99
+ const { histogram = true, maxSample = 10 } = options;
100
+ const data = tensor.toFloat32Array();
101
+ const shape = tensor.shape;
102
+ const size = tensor.size;
103
+ // Get sample of values
104
+ const sampleIndices = [];
105
+ const step = Math.max(1, Math.floor(size / maxSample));
106
+ for (let i = 0; i < size && sampleIndices.length < maxSample; i += step) {
107
+ sampleIndices.push(i);
108
+ }
109
+ const sample = sampleIndices.map(i => data[i] ?? 0);
110
+ // Calculate memory (assuming float32)
111
+ const bytesPerElement = tensor.dtype === 'float32' ? 4
112
+ : tensor.dtype === 'int32' ? 4
113
+ : tensor.dtype === 'int64' ? 8
114
+ : 4;
115
+ const memoryBytes = size * bytesPerElement;
116
+ return {
117
+ name,
118
+ shape,
119
+ dtype: tensor.dtype,
120
+ size,
121
+ memoryBytes,
122
+ stats: calculateTensorStats(data),
123
+ sample,
124
+ histogram: histogram ? createHistogram(data) : undefined,
125
+ };
126
+ }
127
+ /**
128
+ * Format tensor inspection for display
129
+ */
130
+ export function formatTensorInspection(inspection) {
131
+ const { name, shape, dtype, size, memoryBytes, stats, sample } = inspection;
132
+ const lines = [
133
+ `┌─ Tensor: ${name} ─────────────────────────────`,
134
+ `│ Shape: [${shape.join(', ')}]`,
135
+ `│ Dtype: ${dtype}`,
136
+ `│ Size: ${size.toLocaleString()} elements`,
137
+ `│ Memory: ${formatBytes(memoryBytes)}`,
138
+ `├─ Statistics ─────────────────────────────────`,
139
+ `│ Min: ${stats.min.toFixed(6)}`,
140
+ `│ Max: ${stats.max.toFixed(6)}`,
141
+ `│ Mean: ${stats.mean.toFixed(6)}`,
142
+ `│ Std: ${stats.std.toFixed(6)}`,
143
+ `│ Sparsity: ${(stats.sparsity * 100).toFixed(2)}%`,
144
+ ];
145
+ if (stats.nans > 0) {
146
+ lines.push(`│ ⚠️ NaN values: ${stats.nans}`);
147
+ }
148
+ if (stats.infinities > 0) {
149
+ lines.push(`│ ⚠️ Infinity values: ${stats.infinities}`);
150
+ }
151
+ lines.push(`├─ Sample Values ──────────────────────────────`);
152
+ lines.push(`│ [${sample.map(v => v.toFixed(4)).join(', ')}]`);
153
+ lines.push(`└──────────────────────────────────────────────`);
154
+ return lines.join('\n');
155
+ }
156
+ /**
157
+ * Format bytes to human readable
158
+ */
159
+ function formatBytes(bytes) {
160
+ if (bytes < 1024)
161
+ return `${bytes} B`;
162
+ if (bytes < 1024 * 1024)
163
+ return `${(bytes / 1024).toFixed(2)} KB`;
164
+ if (bytes < 1024 * 1024 * 1024)
165
+ return `${(bytes / (1024 * 1024)).toFixed(2)} MB`;
166
+ return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)} GB`;
167
+ }
168
+ // ============================================================================
169
+ // Visual Debugger Class
170
+ // ============================================================================
171
+ /**
172
+ * Visual debugger for edgeFlow.js
173
+ */
174
+ export class EdgeFlowDebugger {
175
+ config;
176
+ events = [];
177
+ traces = [];
178
+ performanceMetrics;
179
+ listeners = new Map();
180
+ isEnabled = true;
181
+ constructor(config = {}) {
182
+ this.config = {
183
+ logging: config.logging ?? true,
184
+ logLevel: config.logLevel ?? 'info',
185
+ inspectTensors: config.inspectTensors ?? true,
186
+ maxDisplayValues: config.maxDisplayValues ?? 10,
187
+ trackPerformance: config.trackPerformance ?? true,
188
+ logger: config.logger ?? this.defaultLogger.bind(this),
189
+ };
190
+ this.performanceMetrics = {
191
+ inferenceCount: 0,
192
+ totalInferenceTime: 0,
193
+ averageInferenceTime: 0,
194
+ minInferenceTime: Infinity,
195
+ maxInferenceTime: 0,
196
+ peakMemoryUsage: 0,
197
+ currentMemoryUsage: 0,
198
+ tensorAllocations: 0,
199
+ tensorDeallocations: 0,
200
+ };
201
+ }
202
+ /**
203
+ * Default logger
204
+ */
205
+ defaultLogger(level, message, data) {
206
+ const timestamp = new Date().toISOString();
207
+ const prefix = `[edgeFlow.js ${timestamp}] [${level.toUpperCase()}]`;
208
+ switch (level) {
209
+ case 'debug':
210
+ console.debug(prefix, message, data ?? '');
211
+ break;
212
+ case 'info':
213
+ console.info(prefix, message, data ?? '');
214
+ break;
215
+ case 'warn':
216
+ console.warn(prefix, message, data ?? '');
217
+ break;
218
+ case 'error':
219
+ console.error(prefix, message, data ?? '');
220
+ break;
221
+ default:
222
+ console.log(prefix, message, data ?? '');
223
+ }
224
+ }
225
+ /**
226
+ * Log a message
227
+ */
228
+ log(level, message, data) {
229
+ if (!this.isEnabled || !this.config.logging)
230
+ return;
231
+ const levels = ['debug', 'info', 'warn', 'error'];
232
+ const configLevel = levels.indexOf(this.config.logLevel);
233
+ const msgLevel = levels.indexOf(level);
234
+ if (msgLevel >= configLevel) {
235
+ this.config.logger(level, message, data);
236
+ }
237
+ }
238
+ /**
239
+ * Add debug event
240
+ */
241
+ addEvent(event) {
242
+ this.events.push(event);
243
+ // Notify listeners
244
+ const listeners = this.listeners.get(event.type) ?? [];
245
+ for (const listener of listeners) {
246
+ listener(event);
247
+ }
248
+ // Keep only last 1000 events
249
+ if (this.events.length > 1000) {
250
+ this.events = this.events.slice(-1000);
251
+ }
252
+ }
253
+ /**
254
+ * Enable debugger
255
+ */
256
+ enable() {
257
+ this.isEnabled = true;
258
+ this.log('info', 'Debugger enabled');
259
+ }
260
+ /**
261
+ * Disable debugger
262
+ */
263
+ disable() {
264
+ this.isEnabled = false;
265
+ }
266
+ /**
267
+ * Subscribe to events
268
+ */
269
+ on(type, callback) {
270
+ const listeners = this.listeners.get(type) ?? [];
271
+ listeners.push(callback);
272
+ this.listeners.set(type, listeners);
273
+ return () => {
274
+ const idx = listeners.indexOf(callback);
275
+ if (idx !== -1)
276
+ listeners.splice(idx, 1);
277
+ };
278
+ }
279
+ /**
280
+ * Inspect and log a tensor
281
+ */
282
+ inspectTensor(tensor, name = 'tensor') {
283
+ const inspection = inspectTensor(tensor, name, {
284
+ histogram: true,
285
+ maxSample: this.config.maxDisplayValues,
286
+ });
287
+ if (this.config.inspectTensors) {
288
+ this.log('debug', `Tensor: ${name}`, inspection);
289
+ this.addEvent({
290
+ type: 'tensor',
291
+ timestamp: Date.now(),
292
+ message: `Inspected tensor: ${name}`,
293
+ data: inspection,
294
+ });
295
+ // Check for issues
296
+ if (inspection.stats.nans > 0) {
297
+ this.log('warn', `Tensor "${name}" contains ${inspection.stats.nans} NaN values`);
298
+ }
299
+ if (inspection.stats.infinities > 0) {
300
+ this.log('warn', `Tensor "${name}" contains ${inspection.stats.infinities} Infinity values`);
301
+ }
302
+ }
303
+ return inspection;
304
+ }
305
+ /**
306
+ * Start tracing an inference
307
+ */
308
+ startTrace(modelId) {
309
+ const id = `trace_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
310
+ const trace = {
311
+ id,
312
+ modelId,
313
+ timestamp: Date.now(),
314
+ inputs: [],
315
+ outputs: [],
316
+ duration: 0,
317
+ memoryUsed: 0,
318
+ operations: [],
319
+ };
320
+ this.traces.push(trace);
321
+ this.log('debug', `Started trace: ${id} for model: ${modelId}`);
322
+ return id;
323
+ }
324
+ /**
325
+ * Add input to trace
326
+ */
327
+ traceInput(traceId, tensor, name) {
328
+ const trace = this.traces.find(t => t.id === traceId);
329
+ if (!trace)
330
+ return;
331
+ trace.inputs.push(inspectTensor(tensor, name));
332
+ }
333
+ /**
334
+ * Add output to trace
335
+ */
336
+ traceOutput(traceId, tensor, name) {
337
+ const trace = this.traces.find(t => t.id === traceId);
338
+ if (!trace)
339
+ return;
340
+ trace.outputs.push(inspectTensor(tensor, name));
341
+ }
342
+ /**
343
+ * Add operation to trace
344
+ */
345
+ traceOperation(traceId, operation) {
346
+ const trace = this.traces.find(t => t.id === traceId);
347
+ if (!trace)
348
+ return;
349
+ trace.operations.push(operation);
350
+ }
351
+ /**
352
+ * End trace
353
+ */
354
+ endTrace(traceId) {
355
+ const trace = this.traces.find(t => t.id === traceId);
356
+ if (!trace)
357
+ return;
358
+ trace.duration = Date.now() - trace.timestamp;
359
+ // Update performance metrics
360
+ this.performanceMetrics.inferenceCount++;
361
+ this.performanceMetrics.totalInferenceTime += trace.duration;
362
+ this.performanceMetrics.averageInferenceTime =
363
+ this.performanceMetrics.totalInferenceTime / this.performanceMetrics.inferenceCount;
364
+ this.performanceMetrics.minInferenceTime =
365
+ Math.min(this.performanceMetrics.minInferenceTime, trace.duration);
366
+ this.performanceMetrics.maxInferenceTime =
367
+ Math.max(this.performanceMetrics.maxInferenceTime, trace.duration);
368
+ this.log('info', `Trace completed: ${traceId}`, {
369
+ duration: `${trace.duration}ms`,
370
+ inputs: trace.inputs.length,
371
+ outputs: trace.outputs.length,
372
+ operations: trace.operations.length,
373
+ });
374
+ this.addEvent({
375
+ type: 'inference',
376
+ timestamp: Date.now(),
377
+ message: `Inference completed in ${trace.duration}ms`,
378
+ data: trace,
379
+ });
380
+ return trace;
381
+ }
382
+ /**
383
+ * Record tensor allocation
384
+ */
385
+ recordAllocation(tensor) {
386
+ if (!this.config.trackPerformance)
387
+ return;
388
+ this.performanceMetrics.tensorAllocations++;
389
+ const memory = tensor.size * 4; // Assume float32
390
+ this.performanceMetrics.currentMemoryUsage += memory;
391
+ this.performanceMetrics.peakMemoryUsage = Math.max(this.performanceMetrics.peakMemoryUsage, this.performanceMetrics.currentMemoryUsage);
392
+ }
393
+ /**
394
+ * Record tensor deallocation
395
+ */
396
+ recordDeallocation(tensor) {
397
+ if (!this.config.trackPerformance)
398
+ return;
399
+ this.performanceMetrics.tensorDeallocations++;
400
+ const memory = tensor.size * 4;
401
+ this.performanceMetrics.currentMemoryUsage -= memory;
402
+ }
403
+ /**
404
+ * Get performance metrics
405
+ */
406
+ getPerformanceMetrics() {
407
+ return { ...this.performanceMetrics };
408
+ }
409
+ /**
410
+ * Get all events
411
+ */
412
+ getEvents() {
413
+ return [...this.events];
414
+ }
415
+ /**
416
+ * Get all traces
417
+ */
418
+ getTraces() {
419
+ return [...this.traces];
420
+ }
421
+ /**
422
+ * Get trace by ID
423
+ */
424
+ getTrace(traceId) {
425
+ return this.traces.find(t => t.id === traceId);
426
+ }
427
+ /**
428
+ * Clear all data
429
+ */
430
+ clear() {
431
+ this.events = [];
432
+ this.traces = [];
433
+ this.performanceMetrics = {
434
+ inferenceCount: 0,
435
+ totalInferenceTime: 0,
436
+ averageInferenceTime: 0,
437
+ minInferenceTime: Infinity,
438
+ maxInferenceTime: 0,
439
+ peakMemoryUsage: 0,
440
+ currentMemoryUsage: 0,
441
+ tensorAllocations: 0,
442
+ tensorDeallocations: 0,
443
+ };
444
+ }
445
+ /**
446
+ * Export debug data
447
+ */
448
+ export() {
449
+ return {
450
+ events: this.getEvents(),
451
+ traces: this.getTraces(),
452
+ metrics: this.getPerformanceMetrics(),
453
+ timestamp: Date.now(),
454
+ };
455
+ }
456
+ /**
457
+ * Generate summary report
458
+ */
459
+ generateReport() {
460
+ const metrics = this.getPerformanceMetrics();
461
+ const traces = this.getTraces();
462
+ const lines = [
463
+ '╔══════════════════════════════════════════════════════════════════╗',
464
+ '║ edgeFlow.js Debug Report ║',
465
+ '╠══════════════════════════════════════════════════════════════════╣',
466
+ '║ Performance Metrics ║',
467
+ '╟──────────────────────────────────────────────────────────────────╢',
468
+ `║ Total Inferences: ${metrics.inferenceCount.toString().padStart(10)} ║`,
469
+ `║ Average Time: ${metrics.averageInferenceTime.toFixed(2).padStart(10)}ms ║`,
470
+ `║ Min Time: ${(metrics.minInferenceTime === Infinity ? 0 : metrics.minInferenceTime).toFixed(2).padStart(10)}ms ║`,
471
+ `║ Max Time: ${metrics.maxInferenceTime.toFixed(2).padStart(10)}ms ║`,
472
+ `║ Peak Memory: ${formatBytes(metrics.peakMemoryUsage).padStart(10)} ║`,
473
+ `║ Current Memory: ${formatBytes(metrics.currentMemoryUsage).padStart(10)} ║`,
474
+ `║ Tensor Allocations: ${metrics.tensorAllocations.toString().padStart(10)} ║`,
475
+ `║ Tensor Deallocations: ${metrics.tensorDeallocations.toString().padStart(10)} ║`,
476
+ '╟──────────────────────────────────────────────────────────────────╢',
477
+ '║ Recent Traces ║',
478
+ '╟──────────────────────────────────────────────────────────────────╢',
479
+ ];
480
+ const recentTraces = traces.slice(-5);
481
+ for (const trace of recentTraces) {
482
+ lines.push(`║ ${trace.id.slice(0, 20).padEnd(20)} | ${trace.duration.toFixed(2).padStart(8)}ms | ${trace.modelId.slice(0, 20).padEnd(20)} ║`);
483
+ }
484
+ if (recentTraces.length === 0) {
485
+ lines.push('║ No traces recorded ║');
486
+ }
487
+ lines.push('╚══════════════════════════════════════════════════════════════════╝');
488
+ return lines.join('\n');
489
+ }
490
+ }
491
+ // ============================================================================
492
+ // Global Debugger Instance
493
+ // ============================================================================
494
+ let globalDebugger = null;
495
+ /**
496
+ * Get or create the global debugger instance
497
+ */
498
+ export function getDebugger(config) {
499
+ if (!globalDebugger || config) {
500
+ globalDebugger = new EdgeFlowDebugger(config);
501
+ }
502
+ return globalDebugger;
503
+ }
504
+ /**
505
+ * Enable debugging
506
+ */
507
+ export function enableDebugging(config) {
508
+ const debugger_ = getDebugger(config);
509
+ debugger_.enable();
510
+ return debugger_;
511
+ }
512
+ /**
513
+ * Disable debugging
514
+ */
515
+ export function disableDebugging() {
516
+ globalDebugger?.disable();
517
+ }
518
+ // ============================================================================
519
+ // Visualization Helpers
520
+ // ============================================================================
521
+ /**
522
+ * Create ASCII histogram
523
+ */
524
+ export function createAsciiHistogram(histogram, width = 50, height = 10) {
525
+ const { counts, binEdges } = histogram;
526
+ const maxCount = Math.max(...counts);
527
+ if (maxCount === 0)
528
+ return 'No data to display';
529
+ const lines = [];
530
+ // Scale counts to height
531
+ const scaled = counts.map(c => Math.round((c / maxCount) * height));
532
+ // Create rows
533
+ for (let row = height; row > 0; row--) {
534
+ let line = row === height ? `${maxCount.toString().padStart(6)} │` : ' │';
535
+ for (let col = 0; col < width && col < scaled.length; col++) {
536
+ line += (scaled[col] ?? 0) >= row ? '█' : ' ';
537
+ }
538
+ lines.push(line);
539
+ }
540
+ // X axis
541
+ lines.push(' └' + '─'.repeat(Math.min(width, scaled.length)));
542
+ // Labels
543
+ const minLabel = (binEdges[0] ?? 0).toFixed(2);
544
+ const maxLabel = (binEdges[binEdges.length - 1] ?? 0).toFixed(2);
545
+ lines.push(` ${minLabel}${' '.repeat(Math.max(0, Math.min(width, scaled.length) - minLabel.length - maxLabel.length))}${maxLabel}`);
546
+ return lines.join('\n');
547
+ }
548
+ /**
549
+ * Create tensor heatmap (for 2D tensors)
550
+ */
551
+ export function createTensorHeatmap(tensor, width = 40) {
552
+ const shape = tensor.shape;
553
+ if (shape.length !== 2) {
554
+ return 'Heatmap only supports 2D tensors';
555
+ }
556
+ const [rows, cols] = shape;
557
+ if (rows === undefined || cols === undefined) {
558
+ return 'Invalid tensor shape';
559
+ }
560
+ const data = tensor.toFloat32Array();
561
+ // Find min/max
562
+ let min = Infinity;
563
+ let max = -Infinity;
564
+ for (let i = 0; i < data.length; i++) {
565
+ const val = data[i] ?? 0;
566
+ if (!isNaN(val) && isFinite(val)) {
567
+ min = Math.min(min, val);
568
+ max = Math.max(max, val);
569
+ }
570
+ }
571
+ const range = max - min;
572
+ const chars = [' ', '░', '▒', '▓', '█'];
573
+ const lines = [];
574
+ const scaleX = Math.max(1, Math.ceil(cols / width));
575
+ const displayCols = Math.min(cols, width);
576
+ for (let r = 0; r < rows; r++) {
577
+ let line = '';
578
+ for (let c = 0; c < displayCols; c++) {
579
+ const idx = r * cols + c * scaleX;
580
+ const val = data[idx] ?? 0;
581
+ const normalized = range > 0 ? (val - min) / range : 0;
582
+ const charIdx = Math.floor(normalized * (chars.length - 1));
583
+ line += chars[charIdx];
584
+ }
585
+ lines.push(line);
586
+ }
587
+ return lines.join('\n');
588
+ }
589
+ /**
590
+ * Create model architecture visualization
591
+ */
592
+ export function visualizeModelArchitecture(layers) {
593
+ const lines = [];
594
+ lines.push('┌─────────────────────────────────────────────────────────────────────┐');
595
+ lines.push('│ Model Architecture │');
596
+ lines.push('├─────────────────────────────────────────────────────────────────────┤');
597
+ for (let i = 0; i < layers.length; i++) {
598
+ const layer = layers[i];
599
+ const inputStr = `[${layer.inputShape.join('×')}]`;
600
+ const outputStr = `[${layer.outputShape.join('×')}]`;
601
+ lines.push(`│ ${(i + 1).toString().padStart(2)}. ${layer.name.padEnd(20)} │ ${layer.type.padEnd(15)} │`);
602
+ lines.push(`│ ${inputStr.padEnd(15)} → ${outputStr.padEnd(15)} │`);
603
+ if (i < layers.length - 1) {
604
+ lines.push('│ ↓ │');
605
+ }
606
+ }
607
+ lines.push('└─────────────────────────────────────────────────────────────────────┘');
608
+ return lines.join('\n');
609
+ }
610
+ // ============================================================================
611
+ // Exports
612
+ // ============================================================================
613
+ export default {
614
+ EdgeFlowDebugger,
615
+ getDebugger,
616
+ enableDebugging,
617
+ disableDebugging,
618
+ inspectTensor,
619
+ formatTensorInspection,
620
+ createAsciiHistogram,
621
+ createTensorHeatmap,
622
+ visualizeModelArchitecture,
623
+ };
624
+ //# sourceMappingURL=debugger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debugger.js","sourceRoot":"","sources":["../../src/tools/debugger.ts"],"names":[],"mappings":"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"}
@@ -136,6 +136,14 @@ export interface BenchmarkResult {
136
136
  * Benchmark model inference
137
137
  */
138
138
  export declare function benchmark(runFn: () => Promise<void>, options?: BenchmarkOptions): Promise<BenchmarkResult>;
139
+ export { benchmark as runBenchmark, compareBenchmarks, benchmarkSuite, benchmarkMemory, formatBenchmarkResult, formatComparisonResult, } from './benchmark.js';
140
+ export type { BenchmarkOptions as DetailedBenchmarkOptions, BenchmarkResult as DetailedBenchmarkResult, CompareBenchmarkResult, MemoryBenchmarkResult, } from './benchmark.js';
141
+ export { quantizeModel, quantizeTensor, dequantizeTensor, pruneModel, pruneTensor, analyzeModel as analyzeModelDetailed, exportModel as exportModelAdvanced, dequantizeInt8, dequantizeUint8, dequantizeFloat16, float16ToFloat32, } from './quantization.js';
142
+ export type { QuantizationType as QuantizationMethod, QuantizationOptions as AdvancedQuantizationOptions, QuantizationProgress, QuantizationResult as AdvancedQuantizationResult, LayerQuantizationStats, QuantizationStats, PruningOptions as AdvancedPruningOptions, PruningResult as AdvancedPruningResult, ModelAnalysis as DetailedModelAnalysis, ExportFormat, ExportOptions, } from './quantization.js';
143
+ export { EdgeFlowDebugger, getDebugger, enableDebugging, disableDebugging, inspectTensor, formatTensorInspection, createAsciiHistogram, createTensorHeatmap, visualizeModelArchitecture, } from './debugger.js';
144
+ export type { DebuggerConfig, TensorInspection, TensorStats, HistogramData, InferenceTrace, OperationTrace, DebugEvent, PerformanceMetrics as DebugPerformanceMetrics, } from './debugger.js';
145
+ export { PerformanceMonitor, getMonitor, startMonitoring, stopMonitoring, generateDashboardHTML, generateAsciiDashboard, } from './monitor.js';
146
+ export type { MonitorConfig, PerformanceSample, InferenceMetrics, MemoryMetrics, SystemMetrics, AlertConfig, AlertEvent, WidgetData, } from './monitor.js';
139
147
  /**
140
148
  * Export model to different formats
141
149
  */