edgeflowjs 0.1.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 (98) hide show
  1. package/README.md +473 -0
  2. package/dist/backends/index.d.ts +13 -0
  3. package/dist/backends/index.d.ts.map +1 -0
  4. package/dist/backends/index.js +32 -0
  5. package/dist/backends/index.js.map +1 -0
  6. package/dist/backends/onnx.d.ts +46 -0
  7. package/dist/backends/onnx.d.ts.map +1 -0
  8. package/dist/backends/onnx.js +249 -0
  9. package/dist/backends/onnx.js.map +1 -0
  10. package/dist/backends/wasm.d.ts +78 -0
  11. package/dist/backends/wasm.d.ts.map +1 -0
  12. package/dist/backends/wasm.js +358 -0
  13. package/dist/backends/wasm.js.map +1 -0
  14. package/dist/backends/webgpu.d.ts +143 -0
  15. package/dist/backends/webgpu.d.ts.map +1 -0
  16. package/dist/backends/webgpu.js +326 -0
  17. package/dist/backends/webgpu.js.map +1 -0
  18. package/dist/backends/webnn.d.ts +115 -0
  19. package/dist/backends/webnn.d.ts.map +1 -0
  20. package/dist/backends/webnn.js +202 -0
  21. package/dist/backends/webnn.js.map +1 -0
  22. package/dist/core/index.d.ts +9 -0
  23. package/dist/core/index.d.ts.map +1 -0
  24. package/dist/core/index.js +14 -0
  25. package/dist/core/index.js.map +1 -0
  26. package/dist/core/memory.d.ts +234 -0
  27. package/dist/core/memory.d.ts.map +1 -0
  28. package/dist/core/memory.js +554 -0
  29. package/dist/core/memory.js.map +1 -0
  30. package/dist/core/runtime.d.ts +129 -0
  31. package/dist/core/runtime.d.ts.map +1 -0
  32. package/dist/core/runtime.js +352 -0
  33. package/dist/core/runtime.js.map +1 -0
  34. package/dist/core/scheduler.d.ts +118 -0
  35. package/dist/core/scheduler.d.ts.map +1 -0
  36. package/dist/core/scheduler.js +600 -0
  37. package/dist/core/scheduler.js.map +1 -0
  38. package/dist/core/tensor.d.ts +149 -0
  39. package/dist/core/tensor.d.ts.map +1 -0
  40. package/dist/core/tensor.js +719 -0
  41. package/dist/core/tensor.js.map +1 -0
  42. package/dist/core/types.d.ts +367 -0
  43. package/dist/core/types.d.ts.map +1 -0
  44. package/dist/core/types.js +54 -0
  45. package/dist/core/types.js.map +1 -0
  46. package/dist/edgeflow.browser.js +5601 -0
  47. package/dist/edgeflow.browser.js.map +7 -0
  48. package/dist/edgeflow.browser.min.js +19 -0
  49. package/dist/edgeflow.browser.min.js.map +7 -0
  50. package/dist/index.d.ts +71 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +158 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/pipelines/base.d.ts +122 -0
  55. package/dist/pipelines/base.d.ts.map +1 -0
  56. package/dist/pipelines/base.js +155 -0
  57. package/dist/pipelines/base.js.map +1 -0
  58. package/dist/pipelines/feature-extraction.d.ts +68 -0
  59. package/dist/pipelines/feature-extraction.d.ts.map +1 -0
  60. package/dist/pipelines/feature-extraction.js +197 -0
  61. package/dist/pipelines/feature-extraction.js.map +1 -0
  62. package/dist/pipelines/image-classification.d.ts +61 -0
  63. package/dist/pipelines/image-classification.d.ts.map +1 -0
  64. package/dist/pipelines/image-classification.js +140 -0
  65. package/dist/pipelines/image-classification.js.map +1 -0
  66. package/dist/pipelines/index.d.ts +58 -0
  67. package/dist/pipelines/index.d.ts.map +1 -0
  68. package/dist/pipelines/index.js +72 -0
  69. package/dist/pipelines/index.js.map +1 -0
  70. package/dist/pipelines/text-classification.d.ts +71 -0
  71. package/dist/pipelines/text-classification.d.ts.map +1 -0
  72. package/dist/pipelines/text-classification.js +175 -0
  73. package/dist/pipelines/text-classification.js.map +1 -0
  74. package/dist/tools/index.d.ts +143 -0
  75. package/dist/tools/index.d.ts.map +1 -0
  76. package/dist/tools/index.js +294 -0
  77. package/dist/tools/index.js.map +1 -0
  78. package/dist/utils/cache.d.ts +162 -0
  79. package/dist/utils/cache.d.ts.map +1 -0
  80. package/dist/utils/cache.js +443 -0
  81. package/dist/utils/cache.js.map +1 -0
  82. package/dist/utils/index.d.ts +8 -0
  83. package/dist/utils/index.d.ts.map +1 -0
  84. package/dist/utils/index.js +12 -0
  85. package/dist/utils/index.js.map +1 -0
  86. package/dist/utils/model-loader.d.ts +107 -0
  87. package/dist/utils/model-loader.d.ts.map +1 -0
  88. package/dist/utils/model-loader.js +694 -0
  89. package/dist/utils/model-loader.js.map +1 -0
  90. package/dist/utils/preprocessor.d.ts +147 -0
  91. package/dist/utils/preprocessor.d.ts.map +1 -0
  92. package/dist/utils/preprocessor.js +423 -0
  93. package/dist/utils/preprocessor.js.map +1 -0
  94. package/dist/utils/tokenizer.d.ts +140 -0
  95. package/dist/utils/tokenizer.d.ts.map +1 -0
  96. package/dist/utils/tokenizer.js +397 -0
  97. package/dist/utils/tokenizer.js.map +1 -0
  98. package/package.json +87 -0
@@ -0,0 +1,600 @@
1
+ /**
2
+ * edgeFlow.js - Inference Scheduler
3
+ *
4
+ * Task scheduler for managing concurrent inference execution.
5
+ * Supports priority queues, model-level isolation, and batch processing.
6
+ */
7
+ import { EdgeFlowError, ErrorCodes, } from './types.js';
8
+ // ============================================================================
9
+ // Task Implementation
10
+ // ============================================================================
11
+ /**
12
+ * Internal task implementation
13
+ */
14
+ class Task {
15
+ id;
16
+ modelId;
17
+ priority;
18
+ createdAt;
19
+ _status = 'pending';
20
+ _startedAt;
21
+ _completedAt;
22
+ _result;
23
+ _error;
24
+ _executor;
25
+ _resolvers = [];
26
+ _cancelled = false;
27
+ constructor(id, modelId, priority, executor) {
28
+ this.id = id;
29
+ this.modelId = modelId;
30
+ this.priority = priority;
31
+ this.createdAt = Date.now();
32
+ this._executor = executor;
33
+ }
34
+ get status() {
35
+ return this._status;
36
+ }
37
+ get startedAt() {
38
+ return this._startedAt;
39
+ }
40
+ get completedAt() {
41
+ return this._completedAt;
42
+ }
43
+ get result() {
44
+ return this._result;
45
+ }
46
+ get error() {
47
+ return this._error;
48
+ }
49
+ /**
50
+ * Cancel the task
51
+ */
52
+ cancel() {
53
+ if (this._status === 'pending') {
54
+ this._cancelled = true;
55
+ this._status = 'cancelled';
56
+ this._completedAt = Date.now();
57
+ const cancelError = new EdgeFlowError('Task was cancelled', ErrorCodes.INFERENCE_CANCELLED, { taskId: this.id });
58
+ for (const { reject } of this._resolvers) {
59
+ reject(cancelError);
60
+ }
61
+ this._resolvers = [];
62
+ }
63
+ }
64
+ /**
65
+ * Wait for task completion
66
+ */
67
+ wait() {
68
+ if (this._status === 'completed') {
69
+ return Promise.resolve(this._result);
70
+ }
71
+ if (this._status === 'failed') {
72
+ return Promise.reject(this._error);
73
+ }
74
+ if (this._status === 'cancelled') {
75
+ return Promise.reject(new EdgeFlowError('Task was cancelled', ErrorCodes.INFERENCE_CANCELLED, { taskId: this.id }));
76
+ }
77
+ return new Promise((resolve, reject) => {
78
+ this._resolvers.push({ resolve, reject });
79
+ });
80
+ }
81
+ /**
82
+ * Execute the task
83
+ */
84
+ async execute() {
85
+ if (this._cancelled) {
86
+ return;
87
+ }
88
+ this._status = 'running';
89
+ this._startedAt = Date.now();
90
+ try {
91
+ this._result = await this._executor();
92
+ this._status = 'completed';
93
+ this._completedAt = Date.now();
94
+ for (const { resolve } of this._resolvers) {
95
+ resolve(this._result);
96
+ }
97
+ }
98
+ catch (err) {
99
+ this._error = err instanceof Error ? err : new Error(String(err));
100
+ this._status = 'failed';
101
+ this._completedAt = Date.now();
102
+ for (const { reject } of this._resolvers) {
103
+ reject(this._error);
104
+ }
105
+ }
106
+ this._resolvers = [];
107
+ }
108
+ }
109
+ // ============================================================================
110
+ // Priority Queue Implementation
111
+ // ============================================================================
112
+ /**
113
+ * Priority mapping for comparison
114
+ */
115
+ const PRIORITY_ORDER = {
116
+ critical: 0,
117
+ high: 1,
118
+ normal: 2,
119
+ low: 3,
120
+ };
121
+ /**
122
+ * Priority queue for tasks
123
+ */
124
+ class PriorityQueue {
125
+ items = [];
126
+ get length() {
127
+ return this.items.length;
128
+ }
129
+ isEmpty() {
130
+ return this.items.length === 0;
131
+ }
132
+ /**
133
+ * Add item to queue with priority ordering
134
+ */
135
+ enqueue(item) {
136
+ let inserted = false;
137
+ for (let i = 0; i < this.items.length; i++) {
138
+ const currentItem = this.items[i];
139
+ if (currentItem && PRIORITY_ORDER[item.priority] < PRIORITY_ORDER[currentItem.priority]) {
140
+ this.items.splice(i, 0, item);
141
+ inserted = true;
142
+ break;
143
+ }
144
+ }
145
+ if (!inserted) {
146
+ this.items.push(item);
147
+ }
148
+ }
149
+ /**
150
+ * Remove and return highest priority item
151
+ */
152
+ dequeue() {
153
+ return this.items.shift();
154
+ }
155
+ /**
156
+ * Peek at highest priority item without removing
157
+ */
158
+ peek() {
159
+ return this.items[0];
160
+ }
161
+ /**
162
+ * Remove a specific item by ID
163
+ */
164
+ remove(id) {
165
+ const index = this.items.findIndex(item => item.id === id);
166
+ if (index !== -1) {
167
+ const [removed] = this.items.splice(index, 1);
168
+ return removed;
169
+ }
170
+ return undefined;
171
+ }
172
+ /**
173
+ * Get all items
174
+ */
175
+ getAll() {
176
+ return [...this.items];
177
+ }
178
+ /**
179
+ * Clear the queue
180
+ */
181
+ clear() {
182
+ this.items = [];
183
+ }
184
+ }
185
+ // ============================================================================
186
+ // Batch Collector
187
+ // ============================================================================
188
+ /**
189
+ * Collects tasks for batch processing
190
+ */
191
+ class BatchCollector {
192
+ tasks = [];
193
+ timer = null;
194
+ maxSize;
195
+ timeout;
196
+ onBatch;
197
+ constructor(maxSize, timeout, onBatch) {
198
+ this.maxSize = maxSize;
199
+ this.timeout = timeout;
200
+ this.onBatch = onBatch;
201
+ }
202
+ add(task) {
203
+ this.tasks.push(task);
204
+ if (this.tasks.length >= this.maxSize) {
205
+ this.flush();
206
+ }
207
+ else if (!this.timer) {
208
+ this.timer = setTimeout(() => this.flush(), this.timeout);
209
+ }
210
+ }
211
+ flush() {
212
+ if (this.timer) {
213
+ clearTimeout(this.timer);
214
+ this.timer = null;
215
+ }
216
+ if (this.tasks.length > 0) {
217
+ const batch = this.tasks;
218
+ this.tasks = [];
219
+ this.onBatch(batch);
220
+ }
221
+ }
222
+ clear() {
223
+ if (this.timer) {
224
+ clearTimeout(this.timer);
225
+ this.timer = null;
226
+ }
227
+ this.tasks = [];
228
+ }
229
+ }
230
+ // ============================================================================
231
+ // Inference Scheduler
232
+ // ============================================================================
233
+ // Counter for task IDs
234
+ let taskIdCounter = 0;
235
+ /**
236
+ * Generate unique task ID
237
+ */
238
+ function generateTaskId() {
239
+ return `task_${++taskIdCounter}_${Date.now().toString(36)}`;
240
+ }
241
+ /**
242
+ * Default scheduler options
243
+ */
244
+ const DEFAULT_OPTIONS = {
245
+ maxConcurrentTasks: 4,
246
+ maxConcurrentPerModel: 1,
247
+ defaultTimeout: 30000,
248
+ enableBatching: false,
249
+ maxBatchSize: 32,
250
+ batchTimeout: 50,
251
+ };
252
+ /**
253
+ * InferenceScheduler - Manages concurrent task execution
254
+ *
255
+ * Features:
256
+ * - Priority-based task scheduling
257
+ * - Model-level concurrency control
258
+ * - Optional batch processing
259
+ * - Task cancellation
260
+ * - Event emission
261
+ */
262
+ export class InferenceScheduler {
263
+ options;
264
+ queues = new Map();
265
+ runningTasks = new Map();
266
+ allTasks = new Map();
267
+ batchers = new Map();
268
+ listeners = new Map();
269
+ globalRunningCount = 0;
270
+ isProcessing = false;
271
+ disposed = false;
272
+ constructor(options = {}) {
273
+ this.options = { ...DEFAULT_OPTIONS, ...options };
274
+ }
275
+ /**
276
+ * Get or create queue for a model
277
+ */
278
+ getQueue(modelId) {
279
+ let queue = this.queues.get(modelId);
280
+ if (!queue) {
281
+ queue = new PriorityQueue();
282
+ this.queues.set(modelId, queue);
283
+ }
284
+ return queue;
285
+ }
286
+ /**
287
+ * Get or create running set for a model
288
+ */
289
+ getRunningSet(modelId) {
290
+ let running = this.runningTasks.get(modelId);
291
+ if (!running) {
292
+ running = new Set();
293
+ this.runningTasks.set(modelId, running);
294
+ }
295
+ return running;
296
+ }
297
+ /**
298
+ * Check if we can start a new task for a model
299
+ */
300
+ canStartTask(modelId) {
301
+ if (this.globalRunningCount >= this.options.maxConcurrentTasks) {
302
+ return false;
303
+ }
304
+ const running = this.runningTasks.get(modelId);
305
+ if (running && running.size >= this.options.maxConcurrentPerModel) {
306
+ return false;
307
+ }
308
+ return true;
309
+ }
310
+ /**
311
+ * Process pending tasks
312
+ */
313
+ async processQueue() {
314
+ if (this.isProcessing || this.disposed) {
315
+ return;
316
+ }
317
+ this.isProcessing = true;
318
+ try {
319
+ // Find tasks that can be started
320
+ const tasksToStart = [];
321
+ for (const [modelId, queue] of this.queues) {
322
+ while (!queue.isEmpty() && this.canStartTask(modelId)) {
323
+ const task = queue.dequeue();
324
+ if (task && task.status === 'pending') {
325
+ tasksToStart.push(task);
326
+ const running = this.getRunningSet(modelId);
327
+ running.add(task.id);
328
+ this.globalRunningCount++;
329
+ }
330
+ }
331
+ }
332
+ // Execute tasks concurrently
333
+ await Promise.all(tasksToStart.map(async (task) => {
334
+ this.emit('inference:start', { taskId: task.id, modelId: task.modelId });
335
+ try {
336
+ await task.execute();
337
+ this.emit('inference:complete', {
338
+ taskId: task.id,
339
+ modelId: task.modelId,
340
+ duration: (task.completedAt ?? 0) - (task.startedAt ?? 0),
341
+ });
342
+ }
343
+ catch (error) {
344
+ this.emit('inference:error', {
345
+ taskId: task.id,
346
+ modelId: task.modelId,
347
+ error,
348
+ });
349
+ }
350
+ finally {
351
+ // Clean up
352
+ const running = this.runningTasks.get(task.modelId);
353
+ if (running) {
354
+ running.delete(task.id);
355
+ }
356
+ this.globalRunningCount--;
357
+ }
358
+ }));
359
+ }
360
+ finally {
361
+ this.isProcessing = false;
362
+ }
363
+ // Check if there are more tasks to process
364
+ let hasPending = false;
365
+ for (const queue of this.queues.values()) {
366
+ if (!queue.isEmpty()) {
367
+ hasPending = true;
368
+ break;
369
+ }
370
+ }
371
+ if (hasPending) {
372
+ // Use setImmediate-like behavior for next tick processing
373
+ setTimeout(() => this.processQueue(), 0);
374
+ }
375
+ }
376
+ /**
377
+ * Schedule a task for execution
378
+ */
379
+ schedule(modelId, executor, priority = 'normal') {
380
+ if (this.disposed) {
381
+ throw new EdgeFlowError('Scheduler has been disposed', ErrorCodes.RUNTIME_NOT_INITIALIZED);
382
+ }
383
+ const task = new Task(generateTaskId(), modelId, priority, executor);
384
+ this.allTasks.set(task.id, task);
385
+ // Add to queue
386
+ const queue = this.getQueue(modelId);
387
+ queue.enqueue(task);
388
+ // Trigger processing
389
+ this.processQueue();
390
+ return task;
391
+ }
392
+ /**
393
+ * Schedule with timeout
394
+ */
395
+ scheduleWithTimeout(modelId, executor, timeout = this.options.defaultTimeout, priority = 'normal') {
396
+ const timeoutExecutor = () => {
397
+ return new Promise((resolve, reject) => {
398
+ const timer = setTimeout(() => {
399
+ reject(new EdgeFlowError(`Task timed out after ${timeout}ms`, ErrorCodes.INFERENCE_TIMEOUT, { timeout }));
400
+ }, timeout);
401
+ executor()
402
+ .then(result => {
403
+ clearTimeout(timer);
404
+ resolve(result);
405
+ })
406
+ .catch(error => {
407
+ clearTimeout(timer);
408
+ reject(error);
409
+ });
410
+ });
411
+ };
412
+ return this.schedule(modelId, timeoutExecutor, priority);
413
+ }
414
+ /**
415
+ * Schedule multiple tasks and wait for all
416
+ */
417
+ async scheduleAll(tasks) {
418
+ const scheduledTasks = tasks.map(({ modelId, executor, priority }) => this.schedule(modelId, executor, priority));
419
+ return Promise.all(scheduledTasks.map(task => task.wait()));
420
+ }
421
+ /**
422
+ * Get task by ID
423
+ */
424
+ getTask(taskId) {
425
+ return this.allTasks.get(taskId);
426
+ }
427
+ /**
428
+ * Cancel a task
429
+ */
430
+ cancelTask(taskId) {
431
+ const task = this.allTasks.get(taskId);
432
+ if (task && task.status === 'pending') {
433
+ task.cancel();
434
+ // Remove from queue
435
+ for (const queue of this.queues.values()) {
436
+ queue.remove(taskId);
437
+ }
438
+ return true;
439
+ }
440
+ return false;
441
+ }
442
+ /**
443
+ * Cancel all tasks for a model
444
+ */
445
+ cancelAllForModel(modelId) {
446
+ const queue = this.queues.get(modelId);
447
+ if (!queue)
448
+ return 0;
449
+ let cancelled = 0;
450
+ for (const task of queue.getAll()) {
451
+ if (task.status === 'pending') {
452
+ task.cancel();
453
+ cancelled++;
454
+ }
455
+ }
456
+ queue.clear();
457
+ return cancelled;
458
+ }
459
+ /**
460
+ * Get statistics
461
+ */
462
+ getStats() {
463
+ const stats = {
464
+ totalTasks: this.allTasks.size,
465
+ pendingTasks: 0,
466
+ runningTasks: 0,
467
+ completedTasks: 0,
468
+ failedTasks: 0,
469
+ cancelledTasks: 0,
470
+ queuedByModel: {},
471
+ };
472
+ for (const task of this.allTasks.values()) {
473
+ switch (task.status) {
474
+ case 'pending':
475
+ stats.pendingTasks++;
476
+ break;
477
+ case 'running':
478
+ stats.runningTasks++;
479
+ break;
480
+ case 'completed':
481
+ stats.completedTasks++;
482
+ break;
483
+ case 'failed':
484
+ stats.failedTasks++;
485
+ break;
486
+ case 'cancelled':
487
+ stats.cancelledTasks++;
488
+ break;
489
+ }
490
+ }
491
+ for (const [modelId, queue] of this.queues) {
492
+ stats.queuedByModel[modelId] = queue.length;
493
+ }
494
+ return stats;
495
+ }
496
+ /**
497
+ * Add event listener
498
+ */
499
+ on(event, listener) {
500
+ let listeners = this.listeners.get(event);
501
+ if (!listeners) {
502
+ listeners = new Set();
503
+ this.listeners.set(event, listeners);
504
+ }
505
+ listeners.add(listener);
506
+ }
507
+ /**
508
+ * Remove event listener
509
+ */
510
+ off(event, listener) {
511
+ const listeners = this.listeners.get(event);
512
+ if (listeners) {
513
+ listeners.delete(listener);
514
+ }
515
+ }
516
+ /**
517
+ * Emit event
518
+ */
519
+ emit(type, data) {
520
+ const event = {
521
+ type,
522
+ timestamp: Date.now(),
523
+ data,
524
+ };
525
+ const listeners = this.listeners.get(type);
526
+ if (listeners) {
527
+ for (const listener of listeners) {
528
+ try {
529
+ listener(event);
530
+ }
531
+ catch (error) {
532
+ console.error('Error in event listener:', error);
533
+ }
534
+ }
535
+ }
536
+ }
537
+ /**
538
+ * Clear completed/failed/cancelled tasks from history
539
+ */
540
+ clearHistory() {
541
+ for (const [taskId, task] of this.allTasks) {
542
+ if (task.status === 'completed' ||
543
+ task.status === 'failed' ||
544
+ task.status === 'cancelled') {
545
+ this.allTasks.delete(taskId);
546
+ }
547
+ }
548
+ }
549
+ /**
550
+ * Dispose the scheduler
551
+ */
552
+ dispose() {
553
+ this.disposed = true;
554
+ // Cancel all pending tasks
555
+ for (const queue of this.queues.values()) {
556
+ for (const task of queue.getAll()) {
557
+ task.cancel();
558
+ }
559
+ queue.clear();
560
+ }
561
+ // Clear batchers
562
+ for (const batcher of this.batchers.values()) {
563
+ batcher.clear();
564
+ }
565
+ this.queues.clear();
566
+ this.runningTasks.clear();
567
+ this.allTasks.clear();
568
+ this.batchers.clear();
569
+ this.listeners.clear();
570
+ }
571
+ }
572
+ // ============================================================================
573
+ // Global Scheduler Instance
574
+ // ============================================================================
575
+ let globalScheduler = null;
576
+ /**
577
+ * Get the global scheduler instance
578
+ */
579
+ export function getScheduler() {
580
+ if (!globalScheduler) {
581
+ globalScheduler = new InferenceScheduler();
582
+ }
583
+ return globalScheduler;
584
+ }
585
+ /**
586
+ * Set the global scheduler instance
587
+ */
588
+ export function setScheduler(scheduler) {
589
+ if (globalScheduler) {
590
+ globalScheduler.dispose();
591
+ }
592
+ globalScheduler = scheduler;
593
+ }
594
+ /**
595
+ * Configure the global scheduler
596
+ */
597
+ export function configureScheduler(options) {
598
+ setScheduler(new InferenceScheduler(options));
599
+ }
600
+ //# sourceMappingURL=scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/core/scheduler.ts"],"names":[],"mappings":"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"}