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,71 @@
1
+ /**
2
+ * edgeFlow.js
3
+ *
4
+ * Lightweight, high-performance browser ML inference framework
5
+ * with native concurrency support.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { pipeline } from 'edgeflow';
10
+ *
11
+ * // Create a sentiment analysis pipeline
12
+ * const sentiment = await pipeline('sentiment-analysis');
13
+ *
14
+ * // Run inference
15
+ * const result = await sentiment.run('I love this product!');
16
+ * console.log(result); // { label: 'positive', score: 0.98 }
17
+ *
18
+ * // Batch processing
19
+ * const results = await sentiment.run([
20
+ * 'This is amazing!',
21
+ * 'This is terrible.'
22
+ * ]);
23
+ *
24
+ * // Concurrent execution with different models
25
+ * const classifier = await pipeline('text-classification');
26
+ * const extractor = await pipeline('feature-extraction');
27
+ *
28
+ * const [classification, features] = await Promise.all([
29
+ * classifier.run('Sample text'),
30
+ * extractor.run('Sample text')
31
+ * ]);
32
+ * ```
33
+ *
34
+ * @packageDocumentation
35
+ */
36
+ export type { DataType, TypedArray, Shape, Tensor, RuntimeType, RuntimeCapabilities, Runtime, ModelFormat, QuantizationType, ModelMetadata, ModelIOSpec, ModelLoadOptions, LoadedModel, TaskPriority, TaskStatus, InferenceTask, SchedulerOptions, MemoryStats, MemoryPoolConfig, PipelineTask, PipelineConfig, PipelineOptions, TokenizerConfig, TokenizedOutput, EventType, EdgeFlowEvent, EventListener, ErrorCode, } from './core/types.js';
37
+ export { EdgeFlowError, ErrorCodes } from './core/types.js';
38
+ export { EdgeFlowTensor, tensor, zeros, ones, full, random, randn, arange, linspace, eye, add, sub, mul, div, matmul, softmax, relu, sigmoid, tanh, sum, mean, argmax, concat, } from './core/tensor.js';
39
+ export { InferenceScheduler, getScheduler, setScheduler, configureScheduler, } from './core/scheduler.js';
40
+ export { MemoryManager, MemoryScope, ModelCache, withMemoryScope, withMemoryScopeSync, getMemoryManager, getMemoryStats, release, gc, } from './core/memory.js';
41
+ export { RuntimeManager, LoadedModelImpl, loadModel, loadModelFromBuffer, runInference, runBatchInference, getRuntimeManager, registerRuntime, getBestRuntime, getAvailableRuntimes, } from './core/runtime.js';
42
+ export { WebGPURuntime, createWebGPURuntime, WebNNRuntime, createWebNNRuntime, WASMRuntime, createWASMRuntime, registerAllBackends, } from './backends/index.js';
43
+ export { pipeline, createPipelines, BasePipeline, registerPipeline, getPipelineFactory, SENTIMENT_LABELS, EMOTION_LABELS, IMAGENET_LABELS, type PipelineResult, type TextClassificationResult, type FeatureExtractionResult, type ImageClassificationResult, type ObjectDetectionResult, TextClassificationPipeline, SentimentAnalysisPipeline, FeatureExtractionPipeline, ImageClassificationPipeline, createTextClassificationPipeline, createSentimentAnalysisPipeline, createFeatureExtractionPipeline, createImageClassificationPipeline, type PipelineFactoryOptions, type TextClassificationOptions, type FeatureExtractionOptions, type ImageClassificationOptions, type ImageInput, } from './pipelines/index.js';
44
+ export { Tokenizer, createBasicTokenizer, loadTokenizer, type TokenizerModel, type TokenizerOptions, ImagePreprocessor, AudioPreprocessor, preprocessText, createImagePreprocessor, createAudioPreprocessor, type ImagePreprocessorOptions, type AudioPreprocessorOptions, type TextPreprocessorOptions, Cache, InferenceCache, ModelDownloadCache, createCache, type CacheStrategy, type CacheOptions, type CacheStats, loadModelData, preloadModel, preloadModels, isModelCached, getCachedModel, deleteCachedModel, clearModelCache, getModelCacheStats, getPreloadStatus, cancelPreload, getPreloadedModel, type DownloadProgress, type ModelLoaderOptions, type PreloadOptions, } from './utils/index.js';
45
+ export { quantize, type QuantizationOptions, type QuantizationResult, prune, type PruningOptions, type PruningResult, analyzeModel, type ModelAnalysis, benchmark, type BenchmarkOptions, type BenchmarkResult, exportModel, } from './tools/index.js';
46
+ /**
47
+ * Check if edgeFlow is supported in the current environment
48
+ */
49
+ export declare function isSupported(): Promise<boolean>;
50
+ /**
51
+ * Get the best available runtime type
52
+ */
53
+ export declare function getBestRuntimeType(): Promise<RuntimeType | null>;
54
+ /**
55
+ * Preload models for faster subsequent loading
56
+ */
57
+ export declare function preload(models: string[]): Promise<void>;
58
+ /**
59
+ * edgeFlow.js version
60
+ */
61
+ export declare const VERSION = "0.1.0";
62
+ /**
63
+ * Get framework info
64
+ */
65
+ export declare function getInfo(): Promise<{
66
+ version: string;
67
+ runtimes: Record<RuntimeType, boolean>;
68
+ features: string[];
69
+ }>;
70
+ import { RuntimeType } from './core/types.js';
71
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,158 @@
1
+ /**
2
+ * edgeFlow.js
3
+ *
4
+ * Lightweight, high-performance browser ML inference framework
5
+ * with native concurrency support.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { pipeline } from 'edgeflow';
10
+ *
11
+ * // Create a sentiment analysis pipeline
12
+ * const sentiment = await pipeline('sentiment-analysis');
13
+ *
14
+ * // Run inference
15
+ * const result = await sentiment.run('I love this product!');
16
+ * console.log(result); // { label: 'positive', score: 0.98 }
17
+ *
18
+ * // Batch processing
19
+ * const results = await sentiment.run([
20
+ * 'This is amazing!',
21
+ * 'This is terrible.'
22
+ * ]);
23
+ *
24
+ * // Concurrent execution with different models
25
+ * const classifier = await pipeline('text-classification');
26
+ * const extractor = await pipeline('feature-extraction');
27
+ *
28
+ * const [classification, features] = await Promise.all([
29
+ * classifier.run('Sample text'),
30
+ * extractor.run('Sample text')
31
+ * ]);
32
+ * ```
33
+ *
34
+ * @packageDocumentation
35
+ */
36
+ // Error class
37
+ export { EdgeFlowError, ErrorCodes } from './core/types.js';
38
+ // Tensor operations
39
+ export { EdgeFlowTensor, tensor, zeros, ones, full, random, randn, arange, linspace, eye, add, sub, mul, div, matmul, softmax, relu, sigmoid, tanh, sum, mean, argmax, concat, } from './core/tensor.js';
40
+ // Scheduler
41
+ export { InferenceScheduler, getScheduler, setScheduler, configureScheduler, } from './core/scheduler.js';
42
+ // Memory management
43
+ export { MemoryManager, MemoryScope, ModelCache, withMemoryScope, withMemoryScopeSync, getMemoryManager, getMemoryStats, release, gc, } from './core/memory.js';
44
+ // Runtime management
45
+ export { RuntimeManager, LoadedModelImpl, loadModel, loadModelFromBuffer, runInference, runBatchInference, getRuntimeManager, registerRuntime, getBestRuntime, getAvailableRuntimes, } from './core/runtime.js';
46
+ // ============================================================================
47
+ // Backend Exports
48
+ // ============================================================================
49
+ export { WebGPURuntime, createWebGPURuntime, WebNNRuntime, createWebNNRuntime, WASMRuntime, createWASMRuntime, registerAllBackends, } from './backends/index.js';
50
+ // ============================================================================
51
+ // Pipeline Exports
52
+ // ============================================================================
53
+ export {
54
+ // Factory function
55
+ pipeline, createPipelines,
56
+ // Base classes
57
+ BasePipeline, registerPipeline, getPipelineFactory,
58
+ // Labels
59
+ SENTIMENT_LABELS, EMOTION_LABELS, IMAGENET_LABELS,
60
+ // Pipelines
61
+ TextClassificationPipeline, SentimentAnalysisPipeline, FeatureExtractionPipeline, ImageClassificationPipeline,
62
+ // Factory functions
63
+ createTextClassificationPipeline, createSentimentAnalysisPipeline, createFeatureExtractionPipeline, createImageClassificationPipeline, } from './pipelines/index.js';
64
+ // ============================================================================
65
+ // Utility Exports
66
+ // ============================================================================
67
+ export {
68
+ // Tokenizer
69
+ Tokenizer, createBasicTokenizer, loadTokenizer,
70
+ // Preprocessor
71
+ ImagePreprocessor, AudioPreprocessor, preprocessText, createImagePreprocessor, createAudioPreprocessor,
72
+ // Cache
73
+ Cache, InferenceCache, ModelDownloadCache, createCache,
74
+ // Model Loader (Preloading, Sharding, Resume, Caching)
75
+ loadModelData, preloadModel, preloadModels, isModelCached, getCachedModel, deleteCachedModel, clearModelCache, getModelCacheStats, getPreloadStatus, cancelPreload, getPreloadedModel, } from './utils/index.js';
76
+ // ============================================================================
77
+ // Tools Exports
78
+ // ============================================================================
79
+ export {
80
+ // Quantization
81
+ quantize,
82
+ // Pruning
83
+ prune,
84
+ // Analysis
85
+ analyzeModel,
86
+ // Benchmarking
87
+ benchmark,
88
+ // Export
89
+ exportModel, } from './tools/index.js';
90
+ // ============================================================================
91
+ // Convenience Functions
92
+ // ============================================================================
93
+ /**
94
+ * Check if edgeFlow is supported in the current environment
95
+ */
96
+ export async function isSupported() {
97
+ const runtimes = await getAvailableRuntimes();
98
+ return Array.from(runtimes.values()).some(v => v);
99
+ }
100
+ /**
101
+ * Get the best available runtime type
102
+ */
103
+ export async function getBestRuntimeType() {
104
+ const runtimes = await getAvailableRuntimes();
105
+ if (runtimes.get('webgpu'))
106
+ return 'webgpu';
107
+ if (runtimes.get('webnn'))
108
+ return 'webnn';
109
+ if (runtimes.get('wasm'))
110
+ return 'wasm';
111
+ return null;
112
+ }
113
+ /**
114
+ * Preload models for faster subsequent loading
115
+ */
116
+ export async function preload(models) {
117
+ const cache = new ModelDownloadCache();
118
+ await Promise.all(models.map(async (url) => {
119
+ if (!(await cache.get(url))) {
120
+ const response = await fetch(url);
121
+ if (response.ok) {
122
+ await cache.put(url, response);
123
+ }
124
+ }
125
+ }));
126
+ }
127
+ // ============================================================================
128
+ // Version Info
129
+ // ============================================================================
130
+ /**
131
+ * edgeFlow.js version
132
+ */
133
+ export const VERSION = '0.1.0';
134
+ /**
135
+ * Get framework info
136
+ */
137
+ export async function getInfo() {
138
+ const runtimes = await getAvailableRuntimes();
139
+ return {
140
+ version: VERSION,
141
+ runtimes: {
142
+ webgpu: runtimes.get('webgpu') ?? false,
143
+ webnn: runtimes.get('webnn') ?? false,
144
+ wasm: runtimes.get('wasm') ?? false,
145
+ auto: true,
146
+ },
147
+ features: [
148
+ 'concurrent-execution',
149
+ 'batch-processing',
150
+ 'memory-management',
151
+ 'model-caching',
152
+ 'quantization',
153
+ ],
154
+ };
155
+ }
156
+ import { getAvailableRuntimes } from './core/runtime.js';
157
+ import { ModelDownloadCache } from './utils/cache.js';
158
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * edgeFlow.js - Base Pipeline
3
+ *
4
+ * Base class and utilities for all pipeline implementations.
5
+ */
6
+ import { LoadedModel, PipelineConfig, PipelineOptions, PipelineTask } from '../core/types.js';
7
+ import { EdgeFlowTensor } from '../core/tensor.js';
8
+ import { ModelCache } from '../core/memory.js';
9
+ import { ModelDownloadCache } from '../utils/cache.js';
10
+ /**
11
+ * Pipeline result base interface
12
+ */
13
+ export interface PipelineResult {
14
+ /** Processing time in milliseconds */
15
+ processingTime?: number;
16
+ }
17
+ /**
18
+ * Text classification result
19
+ */
20
+ export interface TextClassificationResult extends PipelineResult {
21
+ label: string;
22
+ score: number;
23
+ }
24
+ /**
25
+ * Feature extraction result
26
+ */
27
+ export interface FeatureExtractionResult extends PipelineResult {
28
+ embeddings: number[];
29
+ }
30
+ /**
31
+ * Image classification result
32
+ */
33
+ export interface ImageClassificationResult extends PipelineResult {
34
+ label: string;
35
+ score: number;
36
+ }
37
+ /**
38
+ * Object detection result
39
+ */
40
+ export interface ObjectDetectionResult extends PipelineResult {
41
+ label: string;
42
+ score: number;
43
+ box: {
44
+ x: number;
45
+ y: number;
46
+ width: number;
47
+ height: number;
48
+ };
49
+ }
50
+ /**
51
+ * BasePipeline - Abstract base class for all pipelines
52
+ */
53
+ export declare abstract class BasePipeline<TInput, TOutput extends PipelineResult | PipelineResult[]> {
54
+ protected model: LoadedModel | null;
55
+ protected readonly config: PipelineConfig;
56
+ protected readonly modelCache: ModelCache;
57
+ protected readonly downloadCache: ModelDownloadCache;
58
+ protected isReady: boolean;
59
+ constructor(config: PipelineConfig);
60
+ /**
61
+ * Initialize the pipeline (load model)
62
+ */
63
+ initialize(): Promise<void>;
64
+ /**
65
+ * Load model with caching
66
+ */
67
+ protected loadModelWithCache(modelPath: string): Promise<LoadedModel>;
68
+ /**
69
+ * Run inference (single input)
70
+ */
71
+ run(input: TInput, options?: PipelineOptions): Promise<TOutput>;
72
+ /**
73
+ * Run batch inference
74
+ */
75
+ runBatch(inputs: TInput[], options?: PipelineOptions): Promise<TOutput[]>;
76
+ /**
77
+ * Preprocess input - must be implemented by subclasses
78
+ */
79
+ protected abstract preprocess(input: TInput): Promise<EdgeFlowTensor[]>;
80
+ /**
81
+ * Postprocess output - must be implemented by subclasses
82
+ */
83
+ protected abstract postprocess(outputs: EdgeFlowTensor[], options?: PipelineOptions): Promise<TOutput>;
84
+ /**
85
+ * Get the task type
86
+ */
87
+ get task(): PipelineTask;
88
+ /**
89
+ * Check if pipeline is ready
90
+ */
91
+ get ready(): boolean;
92
+ /**
93
+ * Dispose the pipeline
94
+ */
95
+ dispose(): void;
96
+ }
97
+ /**
98
+ * Pipeline factory function type
99
+ */
100
+ type PipelineFactory = (config: PipelineConfig) => BasePipeline<any, any>;
101
+ /**
102
+ * Register a pipeline factory
103
+ */
104
+ export declare function registerPipeline(task: PipelineTask, factory: PipelineFactory): void;
105
+ /**
106
+ * Get a pipeline factory
107
+ */
108
+ export declare function getPipelineFactory(task: PipelineTask): PipelineFactory | undefined;
109
+ /**
110
+ * Common sentiment labels
111
+ */
112
+ export declare const SENTIMENT_LABELS: string[];
113
+ /**
114
+ * Common emotion labels
115
+ */
116
+ export declare const EMOTION_LABELS: string[];
117
+ /**
118
+ * ImageNet top-10 labels (for demo)
119
+ */
120
+ export declare const IMAGENET_LABELS: string[];
121
+ export {};
122
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/pipelines/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * edgeFlow.js - Base Pipeline
3
+ *
4
+ * Base class and utilities for all pipeline implementations.
5
+ */
6
+ import { loadModel, runInference } from '../core/runtime.js';
7
+ import { ModelCache } from '../core/memory.js';
8
+ import { ModelDownloadCache } from '../utils/cache.js';
9
+ // ============================================================================
10
+ // Base Pipeline Class
11
+ // ============================================================================
12
+ /**
13
+ * BasePipeline - Abstract base class for all pipelines
14
+ */
15
+ export class BasePipeline {
16
+ model = null;
17
+ config;
18
+ modelCache;
19
+ downloadCache;
20
+ isReady = false;
21
+ constructor(config) {
22
+ this.config = config;
23
+ this.modelCache = new ModelCache();
24
+ this.downloadCache = new ModelDownloadCache();
25
+ }
26
+ /**
27
+ * Initialize the pipeline (load model)
28
+ */
29
+ async initialize() {
30
+ if (this.isReady && this.model)
31
+ return;
32
+ // Check model cache first
33
+ const cachedModel = this.modelCache.get(this.config.model);
34
+ if (cachedModel) {
35
+ this.model = cachedModel;
36
+ this.isReady = true;
37
+ return;
38
+ }
39
+ // Load model
40
+ this.model = await this.loadModelWithCache(this.config.model);
41
+ this.isReady = true;
42
+ }
43
+ /**
44
+ * Load model with caching
45
+ */
46
+ async loadModelWithCache(modelPath) {
47
+ // Try download cache first
48
+ const cachedResponse = await this.downloadCache.get(modelPath);
49
+ if (cachedResponse) {
50
+ // Use cached data
51
+ }
52
+ // Download and cache (or use mock for now)
53
+ try {
54
+ const response = await fetch(modelPath);
55
+ if (response.ok) {
56
+ // Cache the response
57
+ await this.downloadCache.put(modelPath, response.clone());
58
+ }
59
+ }
60
+ catch {
61
+ // Ignore fetch errors for demo
62
+ }
63
+ // Load into runtime
64
+ return loadModel(modelPath, {
65
+ runtime: this.config.runtime,
66
+ quantization: this.config.quantization,
67
+ cache: this.config.cache,
68
+ });
69
+ }
70
+ /**
71
+ * Run inference (single input)
72
+ */
73
+ async run(input, options) {
74
+ await this.initialize();
75
+ const startTime = performance.now();
76
+ // Preprocess
77
+ const preprocessed = await this.preprocess(input);
78
+ // Run inference
79
+ const outputs = await runInference(this.model, preprocessed);
80
+ // Postprocess
81
+ const result = await this.postprocess(outputs, options);
82
+ if (result && typeof result === 'object' && 'processingTime' in result) {
83
+ result.processingTime = performance.now() - startTime;
84
+ }
85
+ return result;
86
+ }
87
+ /**
88
+ * Run batch inference
89
+ */
90
+ async runBatch(inputs, options) {
91
+ await this.initialize();
92
+ // Process all inputs
93
+ const results = await Promise.all(inputs.map(input => this.run(input, options)));
94
+ return results;
95
+ }
96
+ /**
97
+ * Get the task type
98
+ */
99
+ get task() {
100
+ return this.config.task;
101
+ }
102
+ /**
103
+ * Check if pipeline is ready
104
+ */
105
+ get ready() {
106
+ return this.isReady;
107
+ }
108
+ /**
109
+ * Dispose the pipeline
110
+ */
111
+ dispose() {
112
+ if (this.model) {
113
+ this.model.dispose();
114
+ this.model = null;
115
+ }
116
+ this.isReady = false;
117
+ }
118
+ }
119
+ /**
120
+ * Registered pipeline factories
121
+ */
122
+ const pipelineFactories = new Map();
123
+ /**
124
+ * Register a pipeline factory
125
+ */
126
+ export function registerPipeline(task, factory) {
127
+ pipelineFactories.set(task, factory);
128
+ }
129
+ /**
130
+ * Get a pipeline factory
131
+ */
132
+ export function getPipelineFactory(task) {
133
+ return pipelineFactories.get(task);
134
+ }
135
+ // ============================================================================
136
+ // Default Label Maps
137
+ // ============================================================================
138
+ /**
139
+ * Common sentiment labels
140
+ */
141
+ export const SENTIMENT_LABELS = ['negative', 'positive'];
142
+ /**
143
+ * Common emotion labels
144
+ */
145
+ export const EMOTION_LABELS = [
146
+ 'anger', 'disgust', 'fear', 'joy', 'sadness', 'surprise', 'neutral'
147
+ ];
148
+ /**
149
+ * ImageNet top-10 labels (for demo)
150
+ */
151
+ export const IMAGENET_LABELS = [
152
+ 'tench', 'goldfish', 'great white shark', 'tiger shark', 'hammerhead',
153
+ 'electric ray', 'stingray', 'cock', 'hen', 'ostrich'
154
+ ];
155
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/pipelines/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * edgeFlow.js - Feature Extraction Pipeline
3
+ *
4
+ * Extract embeddings/features from text, images, or other data.
5
+ */
6
+ import { PipelineConfig, PipelineOptions } from '../core/types.js';
7
+ import { EdgeFlowTensor } from '../core/tensor.js';
8
+ import { BasePipeline, FeatureExtractionResult } from './base.js';
9
+ /**
10
+ * Feature extraction options
11
+ */
12
+ export interface FeatureExtractionOptions extends PipelineOptions {
13
+ /** Pooling strategy */
14
+ pooling?: 'mean' | 'max' | 'cls' | 'none';
15
+ /** Normalize embeddings */
16
+ normalize?: boolean;
17
+ /** Output dimension (for dimension reduction) */
18
+ outputDim?: number;
19
+ }
20
+ /**
21
+ * FeatureExtractionPipeline - Extract embeddings from text
22
+ */
23
+ export declare class FeatureExtractionPipeline extends BasePipeline<string | string[], FeatureExtractionResult | FeatureExtractionResult[]> {
24
+ private tokenizer;
25
+ private embeddingDim;
26
+ constructor(config: PipelineConfig, embeddingDim?: number);
27
+ /**
28
+ * Initialize pipeline
29
+ */
30
+ initialize(): Promise<void>;
31
+ /**
32
+ * Run feature extraction
33
+ */
34
+ run(input: string | string[], options?: FeatureExtractionOptions): Promise<FeatureExtractionResult | FeatureExtractionResult[]>;
35
+ /**
36
+ * Preprocess text input
37
+ */
38
+ protected preprocess(input: string | string[]): Promise<EdgeFlowTensor[]>;
39
+ /**
40
+ * Run model inference
41
+ */
42
+ private runInference;
43
+ /**
44
+ * Postprocess model outputs
45
+ */
46
+ protected postprocess(outputs: EdgeFlowTensor[], options?: FeatureExtractionOptions): Promise<FeatureExtractionResult>;
47
+ /**
48
+ * Extract CLS token embedding
49
+ */
50
+ private extractCLSEmbedding;
51
+ /**
52
+ * Mean pooling over sequence
53
+ */
54
+ private meanPooling;
55
+ /**
56
+ * Max pooling over sequence
57
+ */
58
+ private maxPooling;
59
+ /**
60
+ * L2 normalize vector
61
+ */
62
+ private normalizeVector;
63
+ }
64
+ /**
65
+ * Create feature extraction pipeline
66
+ */
67
+ export declare function createFeatureExtractionPipeline(config?: Partial<PipelineConfig>): FeatureExtractionPipeline;
68
+ //# sourceMappingURL=feature-extraction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-extraction.d.ts","sourceRoot":"","sources":["../../src/pipelines/feature-extraction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,cAAc,EACd,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EACL,YAAY,EACZ,uBAAuB,EAExB,MAAM,WAAW,CAAC;AAMnB;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,eAAe;IAC/D,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAC1C,2BAA2B;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,YAAY,CACzD,MAAM,GAAG,MAAM,EAAE,EACjB,uBAAuB,GAAG,uBAAuB,EAAE,CACpD;IACC,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,YAAY,CAAS;gBAEjB,MAAM,EAAE,cAAc,EAAE,YAAY,GAAE,MAAY;IAK9D;;OAEG;IACY,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ1C;;OAEG;IACY,GAAG,CAChB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,uBAAuB,GAAG,uBAAuB,EAAE,CAAC;IA8B/D;;OAEG;cACsB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAwBxF;;OAEG;YACW,YAAY;IAoB1B;;OAEG;cACsB,WAAW,CAClC,OAAO,EAAE,cAAc,EAAE,EACzB,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,uBAAuB,CAAC;IA4CnC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAM3B;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB;;OAEG;IACH,OAAO,CAAC,UAAU;IAmBlB;;OAEG;IACH,OAAO,CAAC,eAAe;CAWxB;AAMD;;GAEG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM,GACnC,yBAAyB,CAQ3B"}