@runanywhere/web-llamacpp 0.1.0-beta.10
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 +75 -0
- package/dist/Extensions/DiffusionTypes.d.ts +64 -0
- package/dist/Extensions/DiffusionTypes.d.ts.map +1 -0
- package/dist/Extensions/DiffusionTypes.js +28 -0
- package/dist/Extensions/DiffusionTypes.js.map +1 -0
- package/dist/Extensions/EmbeddingsTypes.d.ts +33 -0
- package/dist/Extensions/EmbeddingsTypes.d.ts.map +1 -0
- package/dist/Extensions/EmbeddingsTypes.js +13 -0
- package/dist/Extensions/EmbeddingsTypes.js.map +1 -0
- package/dist/Extensions/RunAnywhere+Diffusion.d.ts +44 -0
- package/dist/Extensions/RunAnywhere+Diffusion.d.ts.map +1 -0
- package/dist/Extensions/RunAnywhere+Diffusion.js +185 -0
- package/dist/Extensions/RunAnywhere+Diffusion.js.map +1 -0
- package/dist/Extensions/RunAnywhere+Embeddings.d.ts +56 -0
- package/dist/Extensions/RunAnywhere+Embeddings.d.ts.map +1 -0
- package/dist/Extensions/RunAnywhere+Embeddings.js +236 -0
- package/dist/Extensions/RunAnywhere+Embeddings.js.map +1 -0
- package/dist/Extensions/RunAnywhere+StructuredOutput.d.ts +69 -0
- package/dist/Extensions/RunAnywhere+StructuredOutput.d.ts.map +1 -0
- package/dist/Extensions/RunAnywhere+StructuredOutput.js +194 -0
- package/dist/Extensions/RunAnywhere+StructuredOutput.js.map +1 -0
- package/dist/Extensions/RunAnywhere+TextGeneration.d.ts +87 -0
- package/dist/Extensions/RunAnywhere+TextGeneration.d.ts.map +1 -0
- package/dist/Extensions/RunAnywhere+TextGeneration.js +525 -0
- package/dist/Extensions/RunAnywhere+TextGeneration.js.map +1 -0
- package/dist/Extensions/RunAnywhere+ToolCalling.d.ts +82 -0
- package/dist/Extensions/RunAnywhere+ToolCalling.d.ts.map +1 -0
- package/dist/Extensions/RunAnywhere+ToolCalling.js +574 -0
- package/dist/Extensions/RunAnywhere+ToolCalling.js.map +1 -0
- package/dist/Extensions/RunAnywhere+VLM.d.ts +57 -0
- package/dist/Extensions/RunAnywhere+VLM.d.ts.map +1 -0
- package/dist/Extensions/RunAnywhere+VLM.js +258 -0
- package/dist/Extensions/RunAnywhere+VLM.js.map +1 -0
- package/dist/Extensions/ToolCallingTypes.d.ts +78 -0
- package/dist/Extensions/ToolCallingTypes.d.ts.map +1 -0
- package/dist/Extensions/ToolCallingTypes.js +8 -0
- package/dist/Extensions/ToolCallingTypes.js.map +1 -0
- package/dist/Extensions/VLMTypes.d.ts +16 -0
- package/dist/Extensions/VLMTypes.d.ts.map +1 -0
- package/dist/Extensions/VLMTypes.js +18 -0
- package/dist/Extensions/VLMTypes.js.map +1 -0
- package/dist/Foundation/AnalyticsEventsBridge.d.ts +38 -0
- package/dist/Foundation/AnalyticsEventsBridge.d.ts.map +1 -0
- package/dist/Foundation/AnalyticsEventsBridge.js +394 -0
- package/dist/Foundation/AnalyticsEventsBridge.js.map +1 -0
- package/dist/Foundation/LlamaCppBridge.d.ts +182 -0
- package/dist/Foundation/LlamaCppBridge.d.ts.map +1 -0
- package/dist/Foundation/LlamaCppBridge.js +483 -0
- package/dist/Foundation/LlamaCppBridge.js.map +1 -0
- package/dist/Foundation/LlamaCppOffsets.d.ts +32 -0
- package/dist/Foundation/LlamaCppOffsets.d.ts.map +1 -0
- package/dist/Foundation/LlamaCppOffsets.js +191 -0
- package/dist/Foundation/LlamaCppOffsets.js.map +1 -0
- package/dist/Foundation/PlatformAdapter.d.ts +109 -0
- package/dist/Foundation/PlatformAdapter.d.ts.map +1 -0
- package/dist/Foundation/PlatformAdapter.js +417 -0
- package/dist/Foundation/PlatformAdapter.js.map +1 -0
- package/dist/Foundation/TelemetryService.d.ts +96 -0
- package/dist/Foundation/TelemetryService.d.ts.map +1 -0
- package/dist/Foundation/TelemetryService.js +345 -0
- package/dist/Foundation/TelemetryService.js.map +1 -0
- package/dist/Foundation/WASMAnalyticsEmitter.d.ts +29 -0
- package/dist/Foundation/WASMAnalyticsEmitter.d.ts.map +1 -0
- package/dist/Foundation/WASMAnalyticsEmitter.js +70 -0
- package/dist/Foundation/WASMAnalyticsEmitter.js.map +1 -0
- package/dist/Infrastructure/VLMWorkerBridge.d.ts +219 -0
- package/dist/Infrastructure/VLMWorkerBridge.d.ts.map +1 -0
- package/dist/Infrastructure/VLMWorkerBridge.js +288 -0
- package/dist/Infrastructure/VLMWorkerBridge.js.map +1 -0
- package/dist/Infrastructure/VLMWorkerRuntime.d.ts +38 -0
- package/dist/Infrastructure/VLMWorkerRuntime.d.ts.map +1 -0
- package/dist/Infrastructure/VLMWorkerRuntime.js +620 -0
- package/dist/Infrastructure/VLMWorkerRuntime.js.map +1 -0
- package/dist/LlamaCPP.d.ts +49 -0
- package/dist/LlamaCPP.d.ts.map +1 -0
- package/dist/LlamaCPP.js +63 -0
- package/dist/LlamaCPP.js.map +1 -0
- package/dist/LlamaCppProvider.d.ts +32 -0
- package/dist/LlamaCppProvider.d.ts.map +1 -0
- package/dist/LlamaCppProvider.js +106 -0
- package/dist/LlamaCppProvider.js.map +1 -0
- package/dist/index.d.ts +43 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +41 -0
- package/dist/index.js.map +1 -0
- package/dist/workers/vlm-worker.d.ts +9 -0
- package/dist/workers/vlm-worker.d.ts.map +1 -0
- package/dist/workers/vlm-worker.js +10 -0
- package/dist/workers/vlm-worker.js.map +1 -0
- package/package.json +69 -0
- package/wasm/racommons-llamacpp-webgpu.js +159 -0
- package/wasm/racommons-llamacpp-webgpu.wasm +0 -0
- package/wasm/racommons-llamacpp.js +129 -0
- package/wasm/racommons-llamacpp.wasm +0 -0
package/README.md
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# @runanywhere/web-llamacpp
|
|
2
|
+
|
|
3
|
+
LLM, VLM, tool calling, structured output, embeddings, and diffusion backend for the [RunAnywhere Web SDK](https://www.npmjs.com/package/@runanywhere/web) — powered by [llama.cpp](https://github.com/ggerganov/llama.cpp) compiled to WebAssembly.
|
|
4
|
+
|
|
5
|
+
> **Peer dependency:** Requires [`@runanywhere/web`](https://www.npmjs.com/package/@runanywhere/web) `>=0.1.0-beta.0`
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @runanywhere/web @runanywhere/web-llamacpp
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Quick Start
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import { RunAnywhere } from '@runanywhere/web';
|
|
17
|
+
import { LlamaCPP, TextGeneration } from '@runanywhere/web-llamacpp';
|
|
18
|
+
|
|
19
|
+
// 1. Initialize core SDK
|
|
20
|
+
await RunAnywhere.initialize({ environment: 'development' });
|
|
21
|
+
|
|
22
|
+
// 2. Register the llama.cpp backend
|
|
23
|
+
await LlamaCPP.register();
|
|
24
|
+
|
|
25
|
+
// 3. Load a GGUF model and generate
|
|
26
|
+
await TextGeneration.loadModel('/models/qwen2.5-0.5b-instruct-q4_0.gguf', 'qwen2.5-0.5b');
|
|
27
|
+
const result = await TextGeneration.generate('Explain quantum computing briefly.');
|
|
28
|
+
console.log(result.text);
|
|
29
|
+
|
|
30
|
+
// Stream tokens
|
|
31
|
+
for await (const token of TextGeneration.generateStream('Write a haiku.')) {
|
|
32
|
+
process.stdout.write(token);
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Capabilities
|
|
37
|
+
|
|
38
|
+
| Feature | Class | Description |
|
|
39
|
+
|---------|-------|-------------|
|
|
40
|
+
| **Text Generation** | `TextGeneration` | LLM inference with streaming, system prompts, temperature, top-k/top-p |
|
|
41
|
+
| **Vision Language Models** | `VLM` | Multimodal inference (image + text) via llama.cpp mtmd — runs in a Web Worker |
|
|
42
|
+
| **Tool Calling** | `ToolCalling` | Function calling with typed definitions (Hermes-style and generic) |
|
|
43
|
+
| **Structured Output** | `StructuredOutput` | JSON schema-guided generation |
|
|
44
|
+
| **Embeddings** | `Embeddings` | Vector embedding generation with configurable normalization/pooling |
|
|
45
|
+
| **Diffusion** | `Diffusion` | Image generation (WebGPU, scaffold) |
|
|
46
|
+
|
|
47
|
+
## WASM Files
|
|
48
|
+
|
|
49
|
+
This package includes pre-built WASM binaries:
|
|
50
|
+
|
|
51
|
+
| File | Description |
|
|
52
|
+
|------|-------------|
|
|
53
|
+
| `wasm/racommons-llamacpp.wasm` | CPU variant (~3.7 MB) |
|
|
54
|
+
| `wasm/racommons-llamacpp-webgpu.wasm` | WebGPU-accelerated variant (~3.9 MB) |
|
|
55
|
+
|
|
56
|
+
The SDK automatically selects the WebGPU variant when available, falling back to CPU.
|
|
57
|
+
|
|
58
|
+
Configure your bundler to serve these as static assets — see the [main SDK README](https://www.npmjs.com/package/@runanywhere/web) for Vite/Webpack examples.
|
|
59
|
+
|
|
60
|
+
> **Warning (Vite):** You must add `@runanywhere/web-llamacpp` to [`optimizeDeps.exclude`](https://vite.dev/config/dep-optimization-options#optimizedeps-exclude) in your `vite.config.ts`. Vite's pre-bundling breaks the `import.meta.url` paths the SDK uses to locate WASM files. See the [main SDK README](https://www.npmjs.com/package/@runanywhere/web#serve-wasm-files--cross-origin-isolation) for the full Vite config.
|
|
61
|
+
|
|
62
|
+
## Cross-Origin Isolation
|
|
63
|
+
|
|
64
|
+
Multi-threaded WASM requires `SharedArrayBuffer`, which needs Cross-Origin Isolation headers:
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
Cross-Origin-Opener-Policy: same-origin
|
|
68
|
+
Cross-Origin-Embedder-Policy: credentialless
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
See the [main SDK docs](https://www.npmjs.com/package/@runanywhere/web#cross-origin-isolation-headers) for platform-specific configuration.
|
|
72
|
+
|
|
73
|
+
## License
|
|
74
|
+
|
|
75
|
+
Apache 2.0
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/** RunAnywhere Web SDK - Diffusion Types */
|
|
2
|
+
export declare enum DiffusionScheduler {
|
|
3
|
+
DPM_PP_2M_Karras = 0,
|
|
4
|
+
DPM_PP_2M = 1,
|
|
5
|
+
DPM_PP_2M_SDE = 2,
|
|
6
|
+
DDIM = 3,
|
|
7
|
+
Euler = 4,
|
|
8
|
+
EulerAncestral = 5,
|
|
9
|
+
PNDM = 6,
|
|
10
|
+
LMS = 7
|
|
11
|
+
}
|
|
12
|
+
export declare enum DiffusionModelVariant {
|
|
13
|
+
SD_1_5 = 0,
|
|
14
|
+
SD_2_1 = 1,
|
|
15
|
+
SDXL = 2,
|
|
16
|
+
SDXL_Turbo = 3,
|
|
17
|
+
SDXS = 4,
|
|
18
|
+
LCM = 5
|
|
19
|
+
}
|
|
20
|
+
export declare enum DiffusionMode {
|
|
21
|
+
TextToImage = 0,
|
|
22
|
+
ImageToImage = 1,
|
|
23
|
+
Inpainting = 2
|
|
24
|
+
}
|
|
25
|
+
export interface DiffusionGenerationOptions {
|
|
26
|
+
/** Text prompt */
|
|
27
|
+
prompt: string;
|
|
28
|
+
/** Negative prompt (optional) */
|
|
29
|
+
negativePrompt?: string;
|
|
30
|
+
/** Image width (default: 512) */
|
|
31
|
+
width?: number;
|
|
32
|
+
/** Image height (default: 512) */
|
|
33
|
+
height?: number;
|
|
34
|
+
/** Number of denoising steps (default: 28) */
|
|
35
|
+
steps?: number;
|
|
36
|
+
/** Guidance scale (default: 7.5) */
|
|
37
|
+
guidanceScale?: number;
|
|
38
|
+
/** Seed (-1 for random) */
|
|
39
|
+
seed?: number;
|
|
40
|
+
/** Scheduler (default: DPM++ 2M Karras) */
|
|
41
|
+
scheduler?: DiffusionScheduler;
|
|
42
|
+
/** Generation mode (default: TextToImage) */
|
|
43
|
+
mode?: DiffusionMode;
|
|
44
|
+
/** Denoising strength for img2img (0-1, default: 0.75) */
|
|
45
|
+
denoiseStrength?: number;
|
|
46
|
+
/** Report intermediate images (default: false) */
|
|
47
|
+
reportIntermediateImages?: boolean;
|
|
48
|
+
}
|
|
49
|
+
export interface DiffusionGenerationResult {
|
|
50
|
+
/** RGBA image data */
|
|
51
|
+
imageData: Uint8ClampedArray;
|
|
52
|
+
/** Image width */
|
|
53
|
+
width: number;
|
|
54
|
+
/** Image height */
|
|
55
|
+
height: number;
|
|
56
|
+
/** Seed used for generation */
|
|
57
|
+
seedUsed: number;
|
|
58
|
+
/** Generation time in milliseconds */
|
|
59
|
+
generationTimeMs: number;
|
|
60
|
+
/** Whether safety checker flagged the image */
|
|
61
|
+
safetyFlagged: boolean;
|
|
62
|
+
}
|
|
63
|
+
export type DiffusionProgressCallback = (step: number, totalSteps: number, progress: number) => void;
|
|
64
|
+
//# sourceMappingURL=DiffusionTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiffusionTypes.d.ts","sourceRoot":"","sources":["../../src/Extensions/DiffusionTypes.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAE5C,oBAAY,kBAAkB;IAC5B,gBAAgB,IAAI;IACpB,SAAS,IAAI;IACb,aAAa,IAAI;IACjB,IAAI,IAAI;IACR,KAAK,IAAI;IACT,cAAc,IAAI;IAClB,IAAI,IAAI;IACR,GAAG,IAAI;CACR;AAED,oBAAY,qBAAqB;IAC/B,MAAM,IAAI;IACV,MAAM,IAAI;IACV,IAAI,IAAI;IACR,UAAU,IAAI;IACd,IAAI,IAAI;IACR,GAAG,IAAI;CACR;AAED,oBAAY,aAAa;IACvB,WAAW,IAAI;IACf,YAAY,IAAI;IAChB,UAAU,IAAI;CACf;AAED,MAAM,WAAW,0BAA0B;IACzC,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2BAA2B;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2CAA2C;IAC3C,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,6CAA6C;IAC7C,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,0DAA0D;IAC1D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,yBAAyB;IACxC,sBAAsB;IACtB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,gBAAgB,EAAE,MAAM,CAAC;IACzB,+CAA+C;IAC/C,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,yBAAyB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/** RunAnywhere Web SDK - Diffusion Types */
|
|
2
|
+
export var DiffusionScheduler;
|
|
3
|
+
(function (DiffusionScheduler) {
|
|
4
|
+
DiffusionScheduler[DiffusionScheduler["DPM_PP_2M_Karras"] = 0] = "DPM_PP_2M_Karras";
|
|
5
|
+
DiffusionScheduler[DiffusionScheduler["DPM_PP_2M"] = 1] = "DPM_PP_2M";
|
|
6
|
+
DiffusionScheduler[DiffusionScheduler["DPM_PP_2M_SDE"] = 2] = "DPM_PP_2M_SDE";
|
|
7
|
+
DiffusionScheduler[DiffusionScheduler["DDIM"] = 3] = "DDIM";
|
|
8
|
+
DiffusionScheduler[DiffusionScheduler["Euler"] = 4] = "Euler";
|
|
9
|
+
DiffusionScheduler[DiffusionScheduler["EulerAncestral"] = 5] = "EulerAncestral";
|
|
10
|
+
DiffusionScheduler[DiffusionScheduler["PNDM"] = 6] = "PNDM";
|
|
11
|
+
DiffusionScheduler[DiffusionScheduler["LMS"] = 7] = "LMS";
|
|
12
|
+
})(DiffusionScheduler || (DiffusionScheduler = {}));
|
|
13
|
+
export var DiffusionModelVariant;
|
|
14
|
+
(function (DiffusionModelVariant) {
|
|
15
|
+
DiffusionModelVariant[DiffusionModelVariant["SD_1_5"] = 0] = "SD_1_5";
|
|
16
|
+
DiffusionModelVariant[DiffusionModelVariant["SD_2_1"] = 1] = "SD_2_1";
|
|
17
|
+
DiffusionModelVariant[DiffusionModelVariant["SDXL"] = 2] = "SDXL";
|
|
18
|
+
DiffusionModelVariant[DiffusionModelVariant["SDXL_Turbo"] = 3] = "SDXL_Turbo";
|
|
19
|
+
DiffusionModelVariant[DiffusionModelVariant["SDXS"] = 4] = "SDXS";
|
|
20
|
+
DiffusionModelVariant[DiffusionModelVariant["LCM"] = 5] = "LCM";
|
|
21
|
+
})(DiffusionModelVariant || (DiffusionModelVariant = {}));
|
|
22
|
+
export var DiffusionMode;
|
|
23
|
+
(function (DiffusionMode) {
|
|
24
|
+
DiffusionMode[DiffusionMode["TextToImage"] = 0] = "TextToImage";
|
|
25
|
+
DiffusionMode[DiffusionMode["ImageToImage"] = 1] = "ImageToImage";
|
|
26
|
+
DiffusionMode[DiffusionMode["Inpainting"] = 2] = "Inpainting";
|
|
27
|
+
})(DiffusionMode || (DiffusionMode = {}));
|
|
28
|
+
//# sourceMappingURL=DiffusionTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiffusionTypes.js","sourceRoot":"","sources":["../../src/Extensions/DiffusionTypes.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAE5C,MAAM,CAAN,IAAY,kBASX;AATD,WAAY,kBAAkB;IAC5B,mFAAoB,CAAA;IACpB,qEAAa,CAAA;IACb,6EAAiB,CAAA;IACjB,2DAAQ,CAAA;IACR,6DAAS,CAAA;IACT,+EAAkB,CAAA;IAClB,2DAAQ,CAAA;IACR,yDAAO,CAAA;AACT,CAAC,EATW,kBAAkB,KAAlB,kBAAkB,QAS7B;AAED,MAAM,CAAN,IAAY,qBAOX;AAPD,WAAY,qBAAqB;IAC/B,qEAAU,CAAA;IACV,qEAAU,CAAA;IACV,iEAAQ,CAAA;IACR,6EAAc,CAAA;IACd,iEAAQ,CAAA;IACR,+DAAO,CAAA;AACT,CAAC,EAPW,qBAAqB,KAArB,qBAAqB,QAOhC;AAED,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,+DAAe,CAAA;IACf,iEAAgB,CAAA;IAChB,6DAAc,CAAA;AAChB,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/** RunAnywhere Web SDK - Embeddings Types */
|
|
2
|
+
export declare enum EmbeddingsNormalize {
|
|
3
|
+
None = 0,
|
|
4
|
+
L2 = 1
|
|
5
|
+
}
|
|
6
|
+
export declare enum EmbeddingsPooling {
|
|
7
|
+
Mean = 0,
|
|
8
|
+
CLS = 1,
|
|
9
|
+
Last = 2
|
|
10
|
+
}
|
|
11
|
+
export interface EmbeddingVector {
|
|
12
|
+
/** Dense float vector */
|
|
13
|
+
data: Float32Array;
|
|
14
|
+
/** Dimension */
|
|
15
|
+
dimension: number;
|
|
16
|
+
}
|
|
17
|
+
export interface EmbeddingsResult {
|
|
18
|
+
/** Array of embedding vectors (one per input text) */
|
|
19
|
+
embeddings: EmbeddingVector[];
|
|
20
|
+
/** Embedding dimension */
|
|
21
|
+
dimension: number;
|
|
22
|
+
/** Processing time in milliseconds */
|
|
23
|
+
processingTimeMs: number;
|
|
24
|
+
/** Total tokens processed */
|
|
25
|
+
totalTokens: number;
|
|
26
|
+
}
|
|
27
|
+
export interface EmbeddingsOptions {
|
|
28
|
+
/** Normalization mode override */
|
|
29
|
+
normalize?: EmbeddingsNormalize;
|
|
30
|
+
/** Pooling strategy override */
|
|
31
|
+
pooling?: EmbeddingsPooling;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=EmbeddingsTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmbeddingsTypes.d.ts","sourceRoot":"","sources":["../../src/Extensions/EmbeddingsTypes.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAE7C,oBAAY,mBAAmB;IAC7B,IAAI,IAAI;IACR,EAAE,IAAI;CACP;AAED,oBAAY,iBAAiB;IAC3B,IAAI,IAAI;IACR,GAAG,IAAI;IACP,IAAI,IAAI;CACT;AAED,MAAM,WAAW,eAAe;IAC9B,yBAAyB;IACzB,IAAI,EAAE,YAAY,CAAC;IACnB,gBAAgB;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,sDAAsD;IACtD,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,gBAAgB,EAAE,MAAM,CAAC;IACzB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,kCAAkC;IAClC,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,gCAAgC;IAChC,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** RunAnywhere Web SDK - Embeddings Types */
|
|
2
|
+
export var EmbeddingsNormalize;
|
|
3
|
+
(function (EmbeddingsNormalize) {
|
|
4
|
+
EmbeddingsNormalize[EmbeddingsNormalize["None"] = 0] = "None";
|
|
5
|
+
EmbeddingsNormalize[EmbeddingsNormalize["L2"] = 1] = "L2";
|
|
6
|
+
})(EmbeddingsNormalize || (EmbeddingsNormalize = {}));
|
|
7
|
+
export var EmbeddingsPooling;
|
|
8
|
+
(function (EmbeddingsPooling) {
|
|
9
|
+
EmbeddingsPooling[EmbeddingsPooling["Mean"] = 0] = "Mean";
|
|
10
|
+
EmbeddingsPooling[EmbeddingsPooling["CLS"] = 1] = "CLS";
|
|
11
|
+
EmbeddingsPooling[EmbeddingsPooling["Last"] = 2] = "Last";
|
|
12
|
+
})(EmbeddingsPooling || (EmbeddingsPooling = {}));
|
|
13
|
+
//# sourceMappingURL=EmbeddingsTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmbeddingsTypes.js","sourceRoot":"","sources":["../../src/Extensions/EmbeddingsTypes.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAE7C,MAAM,CAAN,IAAY,mBAGX;AAHD,WAAY,mBAAmB;IAC7B,6DAAQ,CAAA;IACR,yDAAM,CAAA;AACR,CAAC,EAHW,mBAAmB,KAAnB,mBAAmB,QAG9B;AAED,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,yDAAQ,CAAA;IACR,uDAAO,CAAA;IACP,yDAAQ,CAAA;AACV,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RunAnywhere Web SDK - Diffusion Extension
|
|
3
|
+
*
|
|
4
|
+
* Adds image generation capabilities using diffusion models.
|
|
5
|
+
* Uses the RACommons rac_diffusion_component_* C API (same as iOS/Android).
|
|
6
|
+
*
|
|
7
|
+
* Mirrors: sdk/runanywhere-swift/Sources/RunAnywhere/Public/Extensions/Diffusion/
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* import { Diffusion, DiffusionScheduler, DiffusionMode } from '@runanywhere/web';
|
|
11
|
+
*
|
|
12
|
+
* await Diffusion.loadModel('/models/sd-v1-5', 'sd-1.5');
|
|
13
|
+
* const result = await Diffusion.generate({
|
|
14
|
+
* prompt: 'A sunset over mountains',
|
|
15
|
+
* width: 512, height: 512, steps: 28,
|
|
16
|
+
* });
|
|
17
|
+
* // result.imageData is Uint8ClampedArray RGBA
|
|
18
|
+
*/
|
|
19
|
+
import { type DiffusionGenerationOptions, type DiffusionGenerationResult } from './DiffusionTypes';
|
|
20
|
+
export { DiffusionScheduler, DiffusionModelVariant, DiffusionMode, type DiffusionGenerationOptions, type DiffusionGenerationResult, type DiffusionProgressCallback, } from './DiffusionTypes';
|
|
21
|
+
declare class DiffusionImpl {
|
|
22
|
+
readonly extensionName = "Diffusion";
|
|
23
|
+
private _diffusionComponentHandle;
|
|
24
|
+
private requireBridge;
|
|
25
|
+
private ensureDiffusionComponent;
|
|
26
|
+
/**
|
|
27
|
+
* Load a diffusion model.
|
|
28
|
+
*/
|
|
29
|
+
loadModel(modelPath: string, modelId: string, modelName?: string): Promise<void>;
|
|
30
|
+
/** Unload the diffusion model. */
|
|
31
|
+
unloadModel(): Promise<void>;
|
|
32
|
+
/** Check if a diffusion model is loaded. */
|
|
33
|
+
get isModelLoaded(): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Generate an image from a text prompt.
|
|
36
|
+
*/
|
|
37
|
+
generate(options: DiffusionGenerationOptions): Promise<DiffusionGenerationResult>;
|
|
38
|
+
/** Cancel in-progress generation. */
|
|
39
|
+
cancel(): void;
|
|
40
|
+
/** Clean up the diffusion component. */
|
|
41
|
+
cleanup(): void;
|
|
42
|
+
}
|
|
43
|
+
export declare const Diffusion: DiffusionImpl;
|
|
44
|
+
//# sourceMappingURL=RunAnywhere+Diffusion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RunAnywhere+Diffusion.d.ts","sourceRoot":"","sources":["../../src/Extensions/RunAnywhere+Diffusion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,EAGL,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC/B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,GAC/B,MAAM,kBAAkB,CAAC;AAQ1B,cAAM,aAAa;IACjB,QAAQ,CAAC,aAAa,eAAe;IACrC,OAAO,CAAC,yBAAyB,CAAK;IAEtC,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,wBAAwB;IAmBhC;;OAEG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BtF,kCAAkC;IAC5B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAUlC,4CAA4C;IAC5C,IAAI,aAAa,IAAI,OAAO,CAO3B;IAED;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAkFvF,qCAAqC;IACrC,MAAM,IAAI,IAAI;IAOd,wCAAwC;IACxC,OAAO,IAAI,IAAI;CAUhB;AAED,eAAO,MAAM,SAAS,eAAsB,CAAC"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RunAnywhere Web SDK - Diffusion Extension
|
|
3
|
+
*
|
|
4
|
+
* Adds image generation capabilities using diffusion models.
|
|
5
|
+
* Uses the RACommons rac_diffusion_component_* C API (same as iOS/Android).
|
|
6
|
+
*
|
|
7
|
+
* Mirrors: sdk/runanywhere-swift/Sources/RunAnywhere/Public/Extensions/Diffusion/
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* import { Diffusion, DiffusionScheduler, DiffusionMode } from '@runanywhere/web';
|
|
11
|
+
*
|
|
12
|
+
* await Diffusion.loadModel('/models/sd-v1-5', 'sd-1.5');
|
|
13
|
+
* const result = await Diffusion.generate({
|
|
14
|
+
* prompt: 'A sunset over mountains',
|
|
15
|
+
* width: 512, height: 512, steps: 28,
|
|
16
|
+
* });
|
|
17
|
+
* // result.imageData is Uint8ClampedArray RGBA
|
|
18
|
+
*/
|
|
19
|
+
import { RunAnywhere, SDKError, SDKErrorCode, SDKLogger, EventBus, SDKEventType } from '@runanywhere/web';
|
|
20
|
+
import { LlamaCppBridge } from '../Foundation/LlamaCppBridge';
|
|
21
|
+
import { Offsets } from '../Foundation/LlamaCppOffsets';
|
|
22
|
+
import { DiffusionScheduler, DiffusionMode, } from './DiffusionTypes';
|
|
23
|
+
export { DiffusionScheduler, DiffusionModelVariant, DiffusionMode, } from './DiffusionTypes';
|
|
24
|
+
const logger = new SDKLogger('Diffusion');
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
// Diffusion Extension
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
class DiffusionImpl {
|
|
29
|
+
extensionName = 'Diffusion';
|
|
30
|
+
_diffusionComponentHandle = 0;
|
|
31
|
+
requireBridge() {
|
|
32
|
+
if (!RunAnywhere.isInitialized)
|
|
33
|
+
throw SDKError.notInitialized();
|
|
34
|
+
return LlamaCppBridge.shared;
|
|
35
|
+
}
|
|
36
|
+
ensureDiffusionComponent() {
|
|
37
|
+
if (this._diffusionComponentHandle !== 0)
|
|
38
|
+
return this._diffusionComponentHandle;
|
|
39
|
+
const bridge = this.requireBridge();
|
|
40
|
+
const m = bridge.module;
|
|
41
|
+
const handlePtr = m._malloc(4);
|
|
42
|
+
const result = bridge.callFunction('rac_diffusion_component_create', 'number', ['number'], [handlePtr]);
|
|
43
|
+
if (result !== 0) {
|
|
44
|
+
m._free(handlePtr);
|
|
45
|
+
bridge.checkResult(result, 'rac_diffusion_component_create');
|
|
46
|
+
}
|
|
47
|
+
this._diffusionComponentHandle = m.getValue(handlePtr, 'i32');
|
|
48
|
+
m._free(handlePtr);
|
|
49
|
+
logger.debug('Diffusion component created');
|
|
50
|
+
return this._diffusionComponentHandle;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Load a diffusion model.
|
|
54
|
+
*/
|
|
55
|
+
async loadModel(modelPath, modelId, modelName) {
|
|
56
|
+
const bridge = this.requireBridge();
|
|
57
|
+
const m = bridge.module;
|
|
58
|
+
const handle = this.ensureDiffusionComponent();
|
|
59
|
+
logger.info(`Loading diffusion model: ${modelId} from ${modelPath}`);
|
|
60
|
+
EventBus.shared.emit('model.loadStarted', SDKEventType.Model, { modelId, component: 'diffusion' });
|
|
61
|
+
const pathPtr = bridge.allocString(modelPath);
|
|
62
|
+
const idPtr = bridge.allocString(modelId);
|
|
63
|
+
const namePtr = bridge.allocString(modelName ?? modelId);
|
|
64
|
+
try {
|
|
65
|
+
const result = m.ccall('rac_diffusion_component_load_model', 'number', ['number', 'number', 'number', 'number'], [handle, pathPtr, idPtr, namePtr]);
|
|
66
|
+
bridge.checkResult(result, 'rac_diffusion_component_load_model');
|
|
67
|
+
logger.info(`Diffusion model loaded: ${modelId}`);
|
|
68
|
+
EventBus.shared.emit('model.loadCompleted', SDKEventType.Model, { modelId, component: 'diffusion' });
|
|
69
|
+
}
|
|
70
|
+
finally {
|
|
71
|
+
bridge.free(pathPtr);
|
|
72
|
+
bridge.free(idPtr);
|
|
73
|
+
bridge.free(namePtr);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/** Unload the diffusion model. */
|
|
77
|
+
async unloadModel() {
|
|
78
|
+
if (this._diffusionComponentHandle === 0)
|
|
79
|
+
return;
|
|
80
|
+
const bridge = this.requireBridge();
|
|
81
|
+
const result = bridge.module.ccall('rac_diffusion_component_unload', 'number', ['number'], [this._diffusionComponentHandle]);
|
|
82
|
+
bridge.checkResult(result, 'rac_diffusion_component_unload');
|
|
83
|
+
logger.info('Diffusion model unloaded');
|
|
84
|
+
}
|
|
85
|
+
/** Check if a diffusion model is loaded. */
|
|
86
|
+
get isModelLoaded() {
|
|
87
|
+
if (this._diffusionComponentHandle === 0)
|
|
88
|
+
return false;
|
|
89
|
+
try {
|
|
90
|
+
return LlamaCppBridge.shared.module.ccall('rac_diffusion_component_is_loaded', 'number', ['number'], [this._diffusionComponentHandle]) === 1;
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Generate an image from a text prompt.
|
|
98
|
+
*/
|
|
99
|
+
async generate(options) {
|
|
100
|
+
const bridge = this.requireBridge();
|
|
101
|
+
const m = bridge.module;
|
|
102
|
+
const handle = this.ensureDiffusionComponent();
|
|
103
|
+
if (!this.isModelLoaded) {
|
|
104
|
+
throw new SDKError(SDKErrorCode.ModelNotLoaded, 'No diffusion model loaded. Call loadModel() first.');
|
|
105
|
+
}
|
|
106
|
+
logger.info(`Generating image: "${options.prompt.substring(0, 50)}..."`);
|
|
107
|
+
// Build rac_diffusion_options_t
|
|
108
|
+
const optSize = m._rac_wasm_sizeof_diffusion_options();
|
|
109
|
+
const optPtr = m._malloc(optSize);
|
|
110
|
+
for (let i = 0; i < optSize; i++)
|
|
111
|
+
m.setValue(optPtr + i, 0, 'i8');
|
|
112
|
+
const promptPtr = bridge.allocString(options.prompt);
|
|
113
|
+
let negPromptPtr = 0;
|
|
114
|
+
const dOpt = Offsets.diffusionOptions;
|
|
115
|
+
m.setValue(optPtr + dOpt.prompt, promptPtr, '*');
|
|
116
|
+
if (options.negativePrompt) {
|
|
117
|
+
negPromptPtr = bridge.allocString(options.negativePrompt);
|
|
118
|
+
m.setValue(optPtr + dOpt.negativePrompt, negPromptPtr, '*');
|
|
119
|
+
}
|
|
120
|
+
m.setValue(optPtr + dOpt.width, options.width ?? 512, 'i32');
|
|
121
|
+
m.setValue(optPtr + dOpt.height, options.height ?? 512, 'i32');
|
|
122
|
+
m.setValue(optPtr + dOpt.steps, options.steps ?? 28, 'i32');
|
|
123
|
+
m.setValue(optPtr + dOpt.guidanceScale, options.guidanceScale ?? 7.5, 'float');
|
|
124
|
+
// seed is int64 — write low and high 32-bit halves
|
|
125
|
+
const seed = options.seed ?? -1;
|
|
126
|
+
m.setValue(optPtr + dOpt.seed, seed & 0xFFFFFFFF, 'i32');
|
|
127
|
+
m.setValue(optPtr + dOpt.seed + 4, seed < 0 ? -1 : 0, 'i32');
|
|
128
|
+
m.setValue(optPtr + dOpt.scheduler, options.scheduler ?? DiffusionScheduler.DPM_PP_2M_Karras, 'i32');
|
|
129
|
+
m.setValue(optPtr + dOpt.mode, options.mode ?? DiffusionMode.TextToImage, 'i32');
|
|
130
|
+
m.setValue(optPtr + dOpt.denoiseStrength, options.denoiseStrength ?? 0.75, 'float');
|
|
131
|
+
m.setValue(optPtr + dOpt.reportIntermediate, options.reportIntermediateImages ? 1 : 0, 'i32');
|
|
132
|
+
m.setValue(optPtr + dOpt.progressStride, 1, 'i32');
|
|
133
|
+
// Result struct: rac_diffusion_result_t
|
|
134
|
+
const resSize = m._rac_wasm_sizeof_diffusion_result();
|
|
135
|
+
const resPtr = m._malloc(resSize);
|
|
136
|
+
try {
|
|
137
|
+
const r = m.ccall('rac_diffusion_component_generate', 'number', ['number', 'number', 'number'], [handle, optPtr, resPtr]);
|
|
138
|
+
bridge.checkResult(r, 'rac_diffusion_component_generate');
|
|
139
|
+
// Read rac_diffusion_result_t (offsets from compiler via StructOffsets)
|
|
140
|
+
const dRes = Offsets.diffusionResult;
|
|
141
|
+
const imageDataPtr = m.getValue(resPtr + dRes.imageData, '*');
|
|
142
|
+
const imageSize = m.getValue(resPtr + dRes.imageSize, 'i32');
|
|
143
|
+
const width = m.getValue(resPtr + dRes.width, 'i32');
|
|
144
|
+
const height = m.getValue(resPtr + dRes.height, 'i32');
|
|
145
|
+
const seedUsed = m.getValue(resPtr + dRes.seedUsed, 'i32'); // low 32 bits of int64
|
|
146
|
+
const generationTimeMs = m.getValue(resPtr + dRes.generationTimeMs, 'i32'); // low 32 bits
|
|
147
|
+
const safetyFlagged = m.getValue(resPtr + dRes.safetyFlagged, 'i32') === 1;
|
|
148
|
+
// Copy RGBA image data
|
|
149
|
+
const imageData = new Uint8ClampedArray(imageSize);
|
|
150
|
+
if (imageDataPtr && imageSize > 0) {
|
|
151
|
+
imageData.set(bridge.readBytes(imageDataPtr, imageSize));
|
|
152
|
+
}
|
|
153
|
+
// Free C result
|
|
154
|
+
m.ccall('rac_diffusion_result_free', null, ['number'], [resPtr]);
|
|
155
|
+
EventBus.shared.emit('diffusion.generated', SDKEventType.Generation, {
|
|
156
|
+
width, height, generationTimeMs,
|
|
157
|
+
});
|
|
158
|
+
return { imageData, width, height, seedUsed, generationTimeMs, safetyFlagged };
|
|
159
|
+
}
|
|
160
|
+
finally {
|
|
161
|
+
bridge.free(promptPtr);
|
|
162
|
+
if (negPromptPtr)
|
|
163
|
+
bridge.free(negPromptPtr);
|
|
164
|
+
m._free(optPtr);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
/** Cancel in-progress generation. */
|
|
168
|
+
cancel() {
|
|
169
|
+
if (this._diffusionComponentHandle === 0)
|
|
170
|
+
return;
|
|
171
|
+
LlamaCppBridge.shared.module.ccall('rac_diffusion_component_cancel', 'number', ['number'], [this._diffusionComponentHandle]);
|
|
172
|
+
}
|
|
173
|
+
/** Clean up the diffusion component. */
|
|
174
|
+
cleanup() {
|
|
175
|
+
if (this._diffusionComponentHandle !== 0) {
|
|
176
|
+
try {
|
|
177
|
+
LlamaCppBridge.shared.module.ccall('rac_diffusion_component_destroy', null, ['number'], [this._diffusionComponentHandle]);
|
|
178
|
+
}
|
|
179
|
+
catch { /* ignore */ }
|
|
180
|
+
this._diffusionComponentHandle = 0;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
export const Diffusion = new DiffusionImpl();
|
|
185
|
+
//# sourceMappingURL=RunAnywhere+Diffusion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RunAnywhere+Diffusion.js","sourceRoot":"","sources":["../../src/Extensions/RunAnywhere+Diffusion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RunAnywhere Web SDK - Embeddings Extension
|
|
3
|
+
*
|
|
4
|
+
* Adds text embedding generation capabilities via RACommons WASM.
|
|
5
|
+
* Uses the rac_embeddings_component_* C API for model lifecycle
|
|
6
|
+
* and embedding generation.
|
|
7
|
+
*
|
|
8
|
+
* Embeddings convert text into fixed-dimensional dense vectors
|
|
9
|
+
* useful for semantic search, clustering, and RAG.
|
|
10
|
+
*
|
|
11
|
+
* Backend: llama.cpp (GGUF embedding models like nomic-embed-text)
|
|
12
|
+
*
|
|
13
|
+
* Usage:
|
|
14
|
+
* import { Embeddings } from '@runanywhere/web';
|
|
15
|
+
*
|
|
16
|
+
* await Embeddings.loadModel('/models/nomic-embed-text-v1.5.Q4_K_M.gguf', 'nomic-embed');
|
|
17
|
+
* const result = await Embeddings.embed('Hello, world!');
|
|
18
|
+
* console.log('Dimension:', result.dimension);
|
|
19
|
+
* console.log('Vector:', result.embeddings[0].data);
|
|
20
|
+
*
|
|
21
|
+
* // Batch embedding
|
|
22
|
+
* const batch = await Embeddings.embedBatch(['text1', 'text2', 'text3']);
|
|
23
|
+
*/
|
|
24
|
+
import type { EmbeddingsResult, EmbeddingsOptions } from './EmbeddingsTypes';
|
|
25
|
+
export { EmbeddingsNormalize, EmbeddingsPooling, type EmbeddingVector, type EmbeddingsResult, type EmbeddingsOptions, } from './EmbeddingsTypes';
|
|
26
|
+
declare class EmbeddingsImpl {
|
|
27
|
+
readonly extensionName = "Embeddings";
|
|
28
|
+
private _embeddingsComponentHandle;
|
|
29
|
+
private requireBridge;
|
|
30
|
+
private ensureEmbeddingsComponent;
|
|
31
|
+
/**
|
|
32
|
+
* Load an embedding model (GGUF format).
|
|
33
|
+
*/
|
|
34
|
+
loadModel(modelPath: string, modelId: string, modelName?: string): Promise<void>;
|
|
35
|
+
/** Unload the embeddings model. */
|
|
36
|
+
unloadModel(): Promise<void>;
|
|
37
|
+
/** Check if an embeddings model is loaded. */
|
|
38
|
+
get isModelLoaded(): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Generate embedding for a single text.
|
|
41
|
+
*/
|
|
42
|
+
embed(text: string, options?: EmbeddingsOptions): Promise<EmbeddingsResult>;
|
|
43
|
+
/**
|
|
44
|
+
* Generate embeddings for multiple texts at once.
|
|
45
|
+
*/
|
|
46
|
+
embedBatch(texts: string[], options?: EmbeddingsOptions): Promise<EmbeddingsResult>;
|
|
47
|
+
/**
|
|
48
|
+
* Compute cosine similarity between two embedding vectors.
|
|
49
|
+
* Pure TypeScript utility -- no WASM call needed.
|
|
50
|
+
*/
|
|
51
|
+
cosineSimilarity(a: Float32Array, b: Float32Array): number;
|
|
52
|
+
/** Clean up the embeddings component. */
|
|
53
|
+
cleanup(): void;
|
|
54
|
+
}
|
|
55
|
+
export declare const Embeddings: EmbeddingsImpl;
|
|
56
|
+
//# sourceMappingURL=RunAnywhere+Embeddings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RunAnywhere+Embeddings.d.ts","sourceRoot":"","sources":["../../src/Extensions/RunAnywhere+Embeddings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAKH,OAAO,KAAK,EAEV,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,GACvB,MAAM,mBAAmB,CAAC;AAQ3B,cAAM,cAAc;IAClB,QAAQ,CAAC,aAAa,gBAAgB;IACtC,OAAO,CAAC,0BAA0B,CAAK;IAEvC,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,yBAAyB;IAmBjC;;OAEG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BtF,mCAAmC;IAC7B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAUlC,8CAA8C;IAC9C,IAAI,aAAa,IAAI,OAAO,CAO3B;IAED;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwCrF;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiD7F;;;OAGG;IACH,gBAAgB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM;IAgB1D,yCAAyC;IACzC,OAAO,IAAI,IAAI;CAUhB;AAED,eAAO,MAAM,UAAU,gBAAuB,CAAC"}
|