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.
- package/README.md +473 -0
- package/dist/backends/index.d.ts +13 -0
- package/dist/backends/index.d.ts.map +1 -0
- package/dist/backends/index.js +32 -0
- package/dist/backends/index.js.map +1 -0
- package/dist/backends/onnx.d.ts +46 -0
- package/dist/backends/onnx.d.ts.map +1 -0
- package/dist/backends/onnx.js +249 -0
- package/dist/backends/onnx.js.map +1 -0
- package/dist/backends/wasm.d.ts +78 -0
- package/dist/backends/wasm.d.ts.map +1 -0
- package/dist/backends/wasm.js +358 -0
- package/dist/backends/wasm.js.map +1 -0
- package/dist/backends/webgpu.d.ts +143 -0
- package/dist/backends/webgpu.d.ts.map +1 -0
- package/dist/backends/webgpu.js +326 -0
- package/dist/backends/webgpu.js.map +1 -0
- package/dist/backends/webnn.d.ts +115 -0
- package/dist/backends/webnn.d.ts.map +1 -0
- package/dist/backends/webnn.js +202 -0
- package/dist/backends/webnn.js.map +1 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +14 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/memory.d.ts +234 -0
- package/dist/core/memory.d.ts.map +1 -0
- package/dist/core/memory.js +554 -0
- package/dist/core/memory.js.map +1 -0
- package/dist/core/runtime.d.ts +129 -0
- package/dist/core/runtime.d.ts.map +1 -0
- package/dist/core/runtime.js +352 -0
- package/dist/core/runtime.js.map +1 -0
- package/dist/core/scheduler.d.ts +118 -0
- package/dist/core/scheduler.d.ts.map +1 -0
- package/dist/core/scheduler.js +600 -0
- package/dist/core/scheduler.js.map +1 -0
- package/dist/core/tensor.d.ts +149 -0
- package/dist/core/tensor.d.ts.map +1 -0
- package/dist/core/tensor.js +719 -0
- package/dist/core/tensor.js.map +1 -0
- package/dist/core/types.d.ts +367 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +54 -0
- package/dist/core/types.js.map +1 -0
- package/dist/edgeflow.browser.js +5601 -0
- package/dist/edgeflow.browser.js.map +7 -0
- package/dist/edgeflow.browser.min.js +19 -0
- package/dist/edgeflow.browser.min.js.map +7 -0
- package/dist/index.d.ts +71 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +158 -0
- package/dist/index.js.map +1 -0
- package/dist/pipelines/base.d.ts +122 -0
- package/dist/pipelines/base.d.ts.map +1 -0
- package/dist/pipelines/base.js +155 -0
- package/dist/pipelines/base.js.map +1 -0
- package/dist/pipelines/feature-extraction.d.ts +68 -0
- package/dist/pipelines/feature-extraction.d.ts.map +1 -0
- package/dist/pipelines/feature-extraction.js +197 -0
- package/dist/pipelines/feature-extraction.js.map +1 -0
- package/dist/pipelines/image-classification.d.ts +61 -0
- package/dist/pipelines/image-classification.d.ts.map +1 -0
- package/dist/pipelines/image-classification.js +140 -0
- package/dist/pipelines/image-classification.js.map +1 -0
- package/dist/pipelines/index.d.ts +58 -0
- package/dist/pipelines/index.d.ts.map +1 -0
- package/dist/pipelines/index.js +72 -0
- package/dist/pipelines/index.js.map +1 -0
- package/dist/pipelines/text-classification.d.ts +71 -0
- package/dist/pipelines/text-classification.d.ts.map +1 -0
- package/dist/pipelines/text-classification.js +175 -0
- package/dist/pipelines/text-classification.js.map +1 -0
- package/dist/tools/index.d.ts +143 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +294 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/utils/cache.d.ts +162 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +443 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +12 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/model-loader.d.ts +107 -0
- package/dist/utils/model-loader.d.ts.map +1 -0
- package/dist/utils/model-loader.js +694 -0
- package/dist/utils/model-loader.js.map +1 -0
- package/dist/utils/preprocessor.d.ts +147 -0
- package/dist/utils/preprocessor.d.ts.map +1 -0
- package/dist/utils/preprocessor.js +423 -0
- package/dist/utils/preprocessor.js.map +1 -0
- package/dist/utils/tokenizer.d.ts +140 -0
- package/dist/utils/tokenizer.d.ts.map +1 -0
- package/dist/utils/tokenizer.js +397 -0
- package/dist/utils/tokenizer.js.map +1 -0
- package/package.json +87 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/core/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* edgeFlow.js - Runtime Management
|
|
3
|
+
*
|
|
4
|
+
* Manages runtime backends and automatic selection.
|
|
5
|
+
* Provides unified interface for different compute backends.
|
|
6
|
+
*/
|
|
7
|
+
import { EdgeFlowError, ErrorCodes, } from './types.js';
|
|
8
|
+
import { getScheduler } from './scheduler.js';
|
|
9
|
+
import { getMemoryManager } from './memory.js';
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// Runtime Registry
|
|
12
|
+
// ============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Registered runtime factories
|
|
15
|
+
*/
|
|
16
|
+
const runtimeFactories = new Map();
|
|
17
|
+
/**
|
|
18
|
+
* Cached runtime instances
|
|
19
|
+
*/
|
|
20
|
+
const runtimeInstances = new Map();
|
|
21
|
+
/**
|
|
22
|
+
* Runtime priority order (higher priority first)
|
|
23
|
+
*/
|
|
24
|
+
const RUNTIME_PRIORITY = ['webgpu', 'webnn', 'wasm'];
|
|
25
|
+
// ============================================================================
|
|
26
|
+
// Runtime Manager
|
|
27
|
+
// ============================================================================
|
|
28
|
+
/**
|
|
29
|
+
* RuntimeManager - Manages runtime selection and lifecycle
|
|
30
|
+
*
|
|
31
|
+
* Features:
|
|
32
|
+
* - Automatic best runtime selection
|
|
33
|
+
* - Runtime registration
|
|
34
|
+
* - Capability detection
|
|
35
|
+
* - Fallback handling
|
|
36
|
+
*/
|
|
37
|
+
export class RuntimeManager {
|
|
38
|
+
static instance = null;
|
|
39
|
+
listeners = new Map();
|
|
40
|
+
defaultRuntime = 'auto';
|
|
41
|
+
constructor() { }
|
|
42
|
+
/**
|
|
43
|
+
* Get singleton instance
|
|
44
|
+
*/
|
|
45
|
+
static getInstance() {
|
|
46
|
+
if (!RuntimeManager.instance) {
|
|
47
|
+
RuntimeManager.instance = new RuntimeManager();
|
|
48
|
+
}
|
|
49
|
+
return RuntimeManager.instance;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Register a runtime factory
|
|
53
|
+
*/
|
|
54
|
+
register(type, factory) {
|
|
55
|
+
runtimeFactories.set(type, factory);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get a runtime instance
|
|
59
|
+
*/
|
|
60
|
+
async getRuntime(type = 'auto') {
|
|
61
|
+
if (type === 'auto') {
|
|
62
|
+
return this.getBestRuntime();
|
|
63
|
+
}
|
|
64
|
+
// Check if already instantiated
|
|
65
|
+
let runtime = runtimeInstances.get(type);
|
|
66
|
+
if (runtime) {
|
|
67
|
+
return runtime;
|
|
68
|
+
}
|
|
69
|
+
// Create new instance
|
|
70
|
+
const factory = runtimeFactories.get(type);
|
|
71
|
+
if (!factory) {
|
|
72
|
+
throw new EdgeFlowError(`Runtime '${type}' is not registered`, ErrorCodes.RUNTIME_NOT_AVAILABLE, { runtime: type });
|
|
73
|
+
}
|
|
74
|
+
runtime = factory();
|
|
75
|
+
// Check availability
|
|
76
|
+
const available = await runtime.isAvailable();
|
|
77
|
+
if (!available) {
|
|
78
|
+
throw new EdgeFlowError(`Runtime '${type}' is not available in this environment`, ErrorCodes.RUNTIME_NOT_AVAILABLE, { runtime: type });
|
|
79
|
+
}
|
|
80
|
+
// Initialize
|
|
81
|
+
try {
|
|
82
|
+
await runtime.initialize();
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
throw new EdgeFlowError(`Failed to initialize runtime '${type}': ${error instanceof Error ? error.message : String(error)}`, ErrorCodes.RUNTIME_INIT_FAILED, { runtime: type, error });
|
|
86
|
+
}
|
|
87
|
+
runtimeInstances.set(type, runtime);
|
|
88
|
+
this.emit('runtime:ready', { runtime: type });
|
|
89
|
+
return runtime;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Get the best available runtime
|
|
93
|
+
*/
|
|
94
|
+
async getBestRuntime() {
|
|
95
|
+
for (const type of RUNTIME_PRIORITY) {
|
|
96
|
+
try {
|
|
97
|
+
// Check if already available
|
|
98
|
+
const existing = runtimeInstances.get(type);
|
|
99
|
+
if (existing) {
|
|
100
|
+
return existing;
|
|
101
|
+
}
|
|
102
|
+
// Try to create and initialize
|
|
103
|
+
const factory = runtimeFactories.get(type);
|
|
104
|
+
if (!factory)
|
|
105
|
+
continue;
|
|
106
|
+
const runtime = factory();
|
|
107
|
+
const available = await runtime.isAvailable();
|
|
108
|
+
if (available) {
|
|
109
|
+
await runtime.initialize();
|
|
110
|
+
runtimeInstances.set(type, runtime);
|
|
111
|
+
this.emit('runtime:ready', { runtime: type });
|
|
112
|
+
return runtime;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
// Try next runtime
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
throw new EdgeFlowError('No runtime available. Please ensure WebGPU, WebNN, or WASM is supported.', ErrorCodes.RUNTIME_NOT_AVAILABLE, { triedRuntimes: RUNTIME_PRIORITY });
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Check which runtimes are available
|
|
124
|
+
*/
|
|
125
|
+
async detectAvailableRuntimes() {
|
|
126
|
+
const results = new Map();
|
|
127
|
+
for (const type of RUNTIME_PRIORITY) {
|
|
128
|
+
const factory = runtimeFactories.get(type);
|
|
129
|
+
if (!factory) {
|
|
130
|
+
results.set(type, false);
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
try {
|
|
134
|
+
const runtime = factory();
|
|
135
|
+
results.set(type, await runtime.isAvailable());
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
results.set(type, false);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return results;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Get capabilities of a runtime
|
|
145
|
+
*/
|
|
146
|
+
async getCapabilities(type) {
|
|
147
|
+
const runtime = await this.getRuntime(type);
|
|
148
|
+
return runtime.capabilities;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Set default runtime
|
|
152
|
+
*/
|
|
153
|
+
setDefaultRuntime(type) {
|
|
154
|
+
this.defaultRuntime = type;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get default runtime type
|
|
158
|
+
*/
|
|
159
|
+
getDefaultRuntimeType() {
|
|
160
|
+
return this.defaultRuntime;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Dispose a specific runtime
|
|
164
|
+
*/
|
|
165
|
+
disposeRuntime(type) {
|
|
166
|
+
const runtime = runtimeInstances.get(type);
|
|
167
|
+
if (runtime) {
|
|
168
|
+
runtime.dispose();
|
|
169
|
+
runtimeInstances.delete(type);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Dispose all runtimes
|
|
174
|
+
*/
|
|
175
|
+
disposeAll() {
|
|
176
|
+
for (const [type, runtime] of runtimeInstances) {
|
|
177
|
+
runtime.dispose();
|
|
178
|
+
runtimeInstances.delete(type);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Add event listener
|
|
183
|
+
*/
|
|
184
|
+
on(event, listener) {
|
|
185
|
+
let listeners = this.listeners.get(event);
|
|
186
|
+
if (!listeners) {
|
|
187
|
+
listeners = new Set();
|
|
188
|
+
this.listeners.set(event, listeners);
|
|
189
|
+
}
|
|
190
|
+
listeners.add(listener);
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Remove event listener
|
|
194
|
+
*/
|
|
195
|
+
off(event, listener) {
|
|
196
|
+
const listeners = this.listeners.get(event);
|
|
197
|
+
if (listeners) {
|
|
198
|
+
listeners.delete(listener);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Emit event
|
|
203
|
+
*/
|
|
204
|
+
emit(type, data) {
|
|
205
|
+
const event = {
|
|
206
|
+
type,
|
|
207
|
+
timestamp: Date.now(),
|
|
208
|
+
data,
|
|
209
|
+
};
|
|
210
|
+
const listeners = this.listeners.get(type);
|
|
211
|
+
if (listeners) {
|
|
212
|
+
for (const listener of listeners) {
|
|
213
|
+
try {
|
|
214
|
+
listener(event);
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
console.error('Error in event listener:', error);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
// ============================================================================
|
|
224
|
+
// Model Loader
|
|
225
|
+
// ============================================================================
|
|
226
|
+
/**
|
|
227
|
+
* Model instance counter
|
|
228
|
+
*/
|
|
229
|
+
let modelIdCounter = 0;
|
|
230
|
+
/**
|
|
231
|
+
* Generate unique model ID
|
|
232
|
+
*/
|
|
233
|
+
function generateModelId() {
|
|
234
|
+
return `model_${++modelIdCounter}_${Date.now().toString(36)}`;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* LoadedModelImpl - Implementation of LoadedModel interface
|
|
238
|
+
*/
|
|
239
|
+
export class LoadedModelImpl {
|
|
240
|
+
id;
|
|
241
|
+
metadata;
|
|
242
|
+
runtime;
|
|
243
|
+
_isLoaded = true;
|
|
244
|
+
_dispose;
|
|
245
|
+
constructor(metadata, runtime, dispose) {
|
|
246
|
+
this.id = generateModelId();
|
|
247
|
+
this.metadata = metadata;
|
|
248
|
+
this.runtime = runtime;
|
|
249
|
+
this._dispose = dispose;
|
|
250
|
+
}
|
|
251
|
+
get isLoaded() {
|
|
252
|
+
return this._isLoaded;
|
|
253
|
+
}
|
|
254
|
+
dispose() {
|
|
255
|
+
if (this._isLoaded) {
|
|
256
|
+
this._isLoaded = false;
|
|
257
|
+
this._dispose();
|
|
258
|
+
getMemoryManager().untrack(this.id);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
// ============================================================================
|
|
263
|
+
// Model Loading Functions
|
|
264
|
+
// ============================================================================
|
|
265
|
+
/**
|
|
266
|
+
* Load model from URL with advanced loading support
|
|
267
|
+
* (caching, sharding, resume download)
|
|
268
|
+
*/
|
|
269
|
+
export async function loadModel(url, options = {}) {
|
|
270
|
+
const manager = RuntimeManager.getInstance();
|
|
271
|
+
const runtime = await manager.getRuntime(options.runtime ?? 'auto');
|
|
272
|
+
// Import model loader dynamically to avoid circular dependencies
|
|
273
|
+
const { loadModelData } = await import('../utils/model-loader.js');
|
|
274
|
+
// Use advanced model loader with caching and resume support
|
|
275
|
+
const modelData = await loadModelData(url, {
|
|
276
|
+
cache: options.cache ?? true,
|
|
277
|
+
resumable: options.resumable ?? true,
|
|
278
|
+
chunkSize: options.chunkSize,
|
|
279
|
+
forceDownload: options.forceDownload,
|
|
280
|
+
onProgress: options.onProgress ? (progress) => {
|
|
281
|
+
options.onProgress(progress.percent / 100);
|
|
282
|
+
} : undefined,
|
|
283
|
+
});
|
|
284
|
+
// Load into runtime
|
|
285
|
+
const model = await runtime.loadModel(modelData, options);
|
|
286
|
+
return model;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Load model from ArrayBuffer
|
|
290
|
+
*/
|
|
291
|
+
export async function loadModelFromBuffer(data, options = {}) {
|
|
292
|
+
const manager = RuntimeManager.getInstance();
|
|
293
|
+
const runtime = await manager.getRuntime(options.runtime ?? 'auto');
|
|
294
|
+
return runtime.loadModel(data, options);
|
|
295
|
+
}
|
|
296
|
+
// ============================================================================
|
|
297
|
+
// Inference Functions
|
|
298
|
+
// ============================================================================
|
|
299
|
+
/**
|
|
300
|
+
* Run inference on a model
|
|
301
|
+
*/
|
|
302
|
+
export async function runInference(model, inputs) {
|
|
303
|
+
if (!model.isLoaded) {
|
|
304
|
+
throw new EdgeFlowError('Model has been disposed', ErrorCodes.MODEL_NOT_LOADED, { modelId: model.id });
|
|
305
|
+
}
|
|
306
|
+
const manager = RuntimeManager.getInstance();
|
|
307
|
+
const runtime = await manager.getRuntime(model.runtime);
|
|
308
|
+
// Use scheduler for execution
|
|
309
|
+
const scheduler = getScheduler();
|
|
310
|
+
const task = scheduler.schedule(model.id, () => runtime.run(model, inputs));
|
|
311
|
+
return task.wait();
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Run inference with batch processing
|
|
315
|
+
*/
|
|
316
|
+
export async function runBatchInference(model, batches) {
|
|
317
|
+
const scheduler = getScheduler();
|
|
318
|
+
const manager = RuntimeManager.getInstance();
|
|
319
|
+
const runtime = await manager.getRuntime(model.runtime);
|
|
320
|
+
// Schedule all batches
|
|
321
|
+
const tasks = batches.map(inputs => scheduler.schedule(model.id, () => runtime.run(model, inputs)));
|
|
322
|
+
// Wait for all to complete
|
|
323
|
+
return Promise.all(tasks.map(task => task.wait()));
|
|
324
|
+
}
|
|
325
|
+
// ============================================================================
|
|
326
|
+
// Convenience Functions
|
|
327
|
+
// ============================================================================
|
|
328
|
+
/**
|
|
329
|
+
* Get runtime manager instance
|
|
330
|
+
*/
|
|
331
|
+
export function getRuntimeManager() {
|
|
332
|
+
return RuntimeManager.getInstance();
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* Register a runtime
|
|
336
|
+
*/
|
|
337
|
+
export function registerRuntime(type, factory) {
|
|
338
|
+
RuntimeManager.getInstance().register(type, factory);
|
|
339
|
+
}
|
|
340
|
+
/**
|
|
341
|
+
* Get the best available runtime
|
|
342
|
+
*/
|
|
343
|
+
export async function getBestRuntime() {
|
|
344
|
+
return RuntimeManager.getInstance().getBestRuntime();
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Check available runtimes
|
|
348
|
+
*/
|
|
349
|
+
export async function getAvailableRuntimes() {
|
|
350
|
+
return RuntimeManager.getInstance().detectAvailableRuntimes();
|
|
351
|
+
}
|
|
352
|
+
//# sourceMappingURL=runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/core/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
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 { InferenceTask, TaskPriority, SchedulerOptions, EventType, EventListener } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* InferenceScheduler - Manages concurrent task execution
|
|
10
|
+
*
|
|
11
|
+
* Features:
|
|
12
|
+
* - Priority-based task scheduling
|
|
13
|
+
* - Model-level concurrency control
|
|
14
|
+
* - Optional batch processing
|
|
15
|
+
* - Task cancellation
|
|
16
|
+
* - Event emission
|
|
17
|
+
*/
|
|
18
|
+
export declare class InferenceScheduler {
|
|
19
|
+
private readonly options;
|
|
20
|
+
private readonly queues;
|
|
21
|
+
private readonly runningTasks;
|
|
22
|
+
private readonly allTasks;
|
|
23
|
+
private readonly batchers;
|
|
24
|
+
private readonly listeners;
|
|
25
|
+
private globalRunningCount;
|
|
26
|
+
private isProcessing;
|
|
27
|
+
private disposed;
|
|
28
|
+
constructor(options?: SchedulerOptions);
|
|
29
|
+
/**
|
|
30
|
+
* Get or create queue for a model
|
|
31
|
+
*/
|
|
32
|
+
private getQueue;
|
|
33
|
+
/**
|
|
34
|
+
* Get or create running set for a model
|
|
35
|
+
*/
|
|
36
|
+
private getRunningSet;
|
|
37
|
+
/**
|
|
38
|
+
* Check if we can start a new task for a model
|
|
39
|
+
*/
|
|
40
|
+
private canStartTask;
|
|
41
|
+
/**
|
|
42
|
+
* Process pending tasks
|
|
43
|
+
*/
|
|
44
|
+
private processQueue;
|
|
45
|
+
/**
|
|
46
|
+
* Schedule a task for execution
|
|
47
|
+
*/
|
|
48
|
+
schedule<T>(modelId: string, executor: () => Promise<T>, priority?: TaskPriority): InferenceTask<T>;
|
|
49
|
+
/**
|
|
50
|
+
* Schedule with timeout
|
|
51
|
+
*/
|
|
52
|
+
scheduleWithTimeout<T>(modelId: string, executor: () => Promise<T>, timeout?: number, priority?: TaskPriority): InferenceTask<T>;
|
|
53
|
+
/**
|
|
54
|
+
* Schedule multiple tasks and wait for all
|
|
55
|
+
*/
|
|
56
|
+
scheduleAll<T>(tasks: Array<{
|
|
57
|
+
modelId: string;
|
|
58
|
+
executor: () => Promise<T>;
|
|
59
|
+
priority?: TaskPriority;
|
|
60
|
+
}>): Promise<T[]>;
|
|
61
|
+
/**
|
|
62
|
+
* Get task by ID
|
|
63
|
+
*/
|
|
64
|
+
getTask(taskId: string): InferenceTask | undefined;
|
|
65
|
+
/**
|
|
66
|
+
* Cancel a task
|
|
67
|
+
*/
|
|
68
|
+
cancelTask(taskId: string): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Cancel all tasks for a model
|
|
71
|
+
*/
|
|
72
|
+
cancelAllForModel(modelId: string): number;
|
|
73
|
+
/**
|
|
74
|
+
* Get statistics
|
|
75
|
+
*/
|
|
76
|
+
getStats(): {
|
|
77
|
+
totalTasks: number;
|
|
78
|
+
pendingTasks: number;
|
|
79
|
+
runningTasks: number;
|
|
80
|
+
completedTasks: number;
|
|
81
|
+
failedTasks: number;
|
|
82
|
+
cancelledTasks: number;
|
|
83
|
+
queuedByModel: Record<string, number>;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Add event listener
|
|
87
|
+
*/
|
|
88
|
+
on<T = unknown>(event: EventType, listener: EventListener<T>): void;
|
|
89
|
+
/**
|
|
90
|
+
* Remove event listener
|
|
91
|
+
*/
|
|
92
|
+
off<T = unknown>(event: EventType, listener: EventListener<T>): void;
|
|
93
|
+
/**
|
|
94
|
+
* Emit event
|
|
95
|
+
*/
|
|
96
|
+
private emit;
|
|
97
|
+
/**
|
|
98
|
+
* Clear completed/failed/cancelled tasks from history
|
|
99
|
+
*/
|
|
100
|
+
clearHistory(): void;
|
|
101
|
+
/**
|
|
102
|
+
* Dispose the scheduler
|
|
103
|
+
*/
|
|
104
|
+
dispose(): void;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Get the global scheduler instance
|
|
108
|
+
*/
|
|
109
|
+
export declare function getScheduler(): InferenceScheduler;
|
|
110
|
+
/**
|
|
111
|
+
* Set the global scheduler instance
|
|
112
|
+
*/
|
|
113
|
+
export declare function setScheduler(scheduler: InferenceScheduler): void;
|
|
114
|
+
/**
|
|
115
|
+
* Configure the global scheduler
|
|
116
|
+
*/
|
|
117
|
+
export declare function configureScheduler(options: SchedulerOptions): void;
|
|
118
|
+
//# sourceMappingURL=scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/core/scheduler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,aAAa,EACb,YAAY,EAEZ,gBAAgB,EAGhB,SAAS,EACT,aAAa,EAEd,MAAM,YAAY,CAAC;AAuTpB;;;;;;;;;GASG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;IACtE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuC;IACpE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgC;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmD;IAC5E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiD;IAC3E,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,GAAE,gBAAqB;IAI1C;;OAEG;IACH,OAAO,CAAC,QAAQ;IAShB;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB;;OAEG;YACW,YAAY;IAuE1B;;OAEG;IACH,QAAQ,CAAC,CAAC,EACR,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC1B,QAAQ,GAAE,YAAuB,GAChC,aAAa,CAAC,CAAC,CAAC;IA2BnB;;OAEG;IACH,mBAAmB,CAAC,CAAC,EACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC1B,OAAO,GAAE,MAAoC,EAC7C,QAAQ,GAAE,YAAuB,GAChC,aAAa,CAAC,CAAC,CAAC;IA0BnB;;OAEG;IACG,WAAW,CAAC,CAAC,EACjB,KAAK,EAAE,KAAK,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,QAAQ,CAAC,EAAE,YAAY,CAAC;KACzB,CAAC,GACD,OAAO,CAAC,CAAC,EAAE,CAAC;IAQf;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIlD;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAenC;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAgB1C;;OAEG;IACH,QAAQ,IAAI;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACvC;IAsCD;;OAEG;IACH,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;IASnE;;OAEG;IACH,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;IAOpE;;OAEG;IACH,OAAO,CAAC,IAAI;IAmBZ;;OAEG;IACH,YAAY,IAAI,IAAI;IAYpB;;OAEG;IACH,OAAO,IAAI,IAAI;CAsBhB;AAQD;;GAEG;AACH,wBAAgB,YAAY,IAAI,kBAAkB,CAKjD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,kBAAkB,GAAG,IAAI,CAKhE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAElE"}
|