@litert-lm/core 0.17.0 → 0.17.1

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 (36) hide show
  1. package/dist/conversation_config.d.ts +11 -7
  2. package/dist/conversation_config.d.ts.map +1 -1
  3. package/dist/conversation_config.js +26 -1
  4. package/dist/conversation_config.js.map +1 -1
  5. package/dist/embedding_engine.d.ts +51 -0
  6. package/dist/embedding_engine.d.ts.map +1 -0
  7. package/dist/embedding_engine.js +198 -0
  8. package/dist/embedding_engine.js.map +1 -0
  9. package/dist/embedding_engine_settings.d.ts +39 -0
  10. package/dist/embedding_engine_settings.d.ts.map +1 -0
  11. package/dist/embedding_engine_settings.js +35 -0
  12. package/dist/embedding_engine_settings.js.map +1 -0
  13. package/dist/index.d.ts +2 -0
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +2 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/litertlm_web.js +1 -1
  18. package/dist/stream_utils.d.ts +25 -0
  19. package/dist/stream_utils.d.ts.map +1 -0
  20. package/dist/stream_utils.js +95 -0
  21. package/dist/stream_utils.js.map +1 -0
  22. package/dist/testing/fakes.js +1 -1
  23. package/dist/testing/fakes.js.map +1 -1
  24. package/dist/wasm_binding_types.d.ts +94 -0
  25. package/dist/wasm_binding_types.d.ts.map +1 -1
  26. package/dist/wasm_binding_types.js +8 -0
  27. package/dist/wasm_binding_types.js.map +1 -1
  28. package/package.json +3 -2
  29. package/wasm/litertlm_wasm_asyncify_internal.js +350 -325
  30. package/wasm/litertlm_wasm_asyncify_internal.wasm +0 -0
  31. package/wasm/litertlm_wasm_compat_asyncify_internal.js +351 -326
  32. package/wasm/litertlm_wasm_compat_asyncify_internal.wasm +0 -0
  33. package/wasm/litertlm_wasm_compat_internal.js +31 -9
  34. package/wasm/litertlm_wasm_compat_internal.wasm +0 -0
  35. package/wasm/litertlm_wasm_internal.js +31 -9
  36. package/wasm/litertlm_wasm_internal.wasm +0 -0
@@ -61,23 +61,27 @@ export interface TextContentPart {
61
61
  text: string;
62
62
  [key: string]: JsonValue | undefined;
63
63
  }
64
+ /**
65
+ * Supported MIME types for image input.
66
+ */
67
+ export declare const SUPPORTED_IMAGE_MIME_TYPES: ReadonlySet<string>;
68
+ /**
69
+ * Supported MIME types for audio input.
70
+ */
71
+ export declare const SUPPORTED_AUDIO_MIME_TYPES: ReadonlySet<string>;
64
72
  /**
65
73
  * Image content part of a message.
66
- *
67
- * This is a placeholder. Images are not supported in JS yet.
68
74
  */
69
75
  export interface ImageContentPart {
70
76
  type: 'image';
71
- [key: string]: JsonValue | undefined;
77
+ data: Uint8Array | ArrayBuffer | string | Blob;
72
78
  }
73
79
  /**
74
80
  * Audio content part of a message.
75
- *
76
- * This is a placeholder. Audio is not supported in JS yet.
77
81
  */
78
82
  export interface AudioContentPart {
79
83
  type: 'audio';
80
- [key: string]: JsonValue | undefined;
84
+ data: Uint8Array | ArrayBuffer | string | Blob;
81
85
  }
82
86
  /**
83
87
  * Video content part of a message.
@@ -123,7 +127,7 @@ export declare interface Message {
123
127
  content?: string | ContentPart[];
124
128
  channels?: Record<string, string>;
125
129
  tool_calls?: ToolCall[];
126
- [key: string]: JsonValue | undefined;
130
+ [key: string]: JsonValue | ContentPart[] | undefined;
127
131
  }
128
132
  /**
129
133
  * Types that can be used as a Message in the conversation.
@@ -1 +1 @@
1
- {"version":3,"file":"conversation_config.d.ts","sourceRoot":"","sources":["../src/conversation_config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAC;AAErC;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,IAAI,CAAC,EAAE,QAAQ,GAAC,OAAO,GAAC,QAAQ,GAAC,QAAQ,GAAC,SAAS,GAAC,SAAS,GAAC,MAAM,CAAC;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,WAAW,YAAY;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAC,mBAAmB,GAAC,SAAS,CAAC;CACxD;AAED;;;GAGG;AACH,MAAM,MAAM,IAAI,GAAG,mBAAmB,GAAC,YAAY,CAAC;AAEpD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,eAAe,GAAC,gBAAgB,GAAC,gBAAgB,GACvE,gBAAgB,GAAC,gBAAgB,CAAC;AAEtC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAC,SAAS,CAAC;CACpC;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAC,SAAS,CAAC;CACpC;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAC,SAAS,CAAC;CACpC;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAC,SAAS,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,WAAW,gBAAgB;IACvC,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAC,SAAS,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,WAAW,gBAAgB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACrC,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAC,SAAS,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,WAAW,QAAQ;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAC,SAAS,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,WAAW,OAAO;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,GAAC,WAAW,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAC,SAAS,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAC,OAAO,CAAC;AAEzC;;;;GAIG;AACH,MAAM,CAAC,OAAO,WAAW,OAAO;IAI9B,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IAErB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IAIf,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,WAAW,kBAAkB;IACzC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,+BAA+B,CAAC,EAAE,OAAO,CAAC;CAE3C"}
1
+ {"version":3,"file":"conversation_config.d.ts","sourceRoot":"","sources":["../src/conversation_config.ts"],"names":[],"mappings":"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"}
@@ -13,5 +13,30 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- export {};
16
+ /**
17
+ * Supported MIME types for image input.
18
+ */
19
+ export const SUPPORTED_IMAGE_MIME_TYPES = new Set([
20
+ 'image/jpeg',
21
+ 'image/png',
22
+ 'image/bmp',
23
+ 'image/gif',
24
+ 'image/x-tga',
25
+ 'image/vnd.adobe.photoshop',
26
+ 'image/vnd.radiance',
27
+ 'image/x-portable-pixmap',
28
+ 'image/x-portable-graymap',
29
+ ]);
30
+ /**
31
+ * Supported MIME types for audio input.
32
+ */
33
+ export const SUPPORTED_AUDIO_MIME_TYPES = new Set([
34
+ 'audio/wav',
35
+ 'audio/x-wav',
36
+ 'audio/wave',
37
+ 'audio/mp3',
38
+ 'audio/mpeg',
39
+ 'audio/flac',
40
+ 'audio/x-flac',
41
+ ]);
17
42
  //# sourceMappingURL=conversation_config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversation_config.js","sourceRoot":"","sources":["../src/conversation_config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
1
+ {"version":3,"file":"conversation_config.js","sourceRoot":"","sources":["../src/conversation_config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA0DH;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAwB,IAAI,GAAG,CAAC;IACrE,YAAY;IACZ,WAAW;IACX,WAAW;IACX,WAAW;IACX,aAAa;IACb,2BAA2B;IAC3B,oBAAoB;IACpB,yBAAyB;IACzB,0BAA0B;CAC3B,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAwB,IAAI,GAAG,CAAC;IACrE,WAAW;IACX,aAAa;IACb,YAAY;IACZ,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,cAAc;CACf,CAAC,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Copyright 2026 Google LLC
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { ContentPart, SUPPORTED_AUDIO_MIME_TYPES, SUPPORTED_IMAGE_MIME_TYPES } from './conversation_config.js';
17
+ import { EmbeddingEngineSettings } from './embedding_engine_settings.js';
18
+ import { Deletable, EmbeddingOptions, InputOverflowStrategy } from './wasm_binding_types.js';
19
+ export { type EmbeddingOptions, InputOverflowStrategy, SUPPORTED_AUDIO_MIME_TYPES, SUPPORTED_IMAGE_MIME_TYPES, };
20
+ /**
21
+ * A single input part to the embedding engine.
22
+ */
23
+ export type SingleEmbeddingInput = string | ContentPart | Blob;
24
+ /**
25
+ * An input or sequence of inputs to compute an embedding for.
26
+ */
27
+ export type EmbeddingInput = SingleEmbeddingInput | SingleEmbeddingInput[];
28
+ /**
29
+ * Result of an embedding computation.
30
+ */
31
+ export interface EmbeddingResponse {
32
+ embedding: number[];
33
+ inputLength: number;
34
+ truncatedLength?: number;
35
+ numChunks: number;
36
+ }
37
+ /**
38
+ * LiteRT-LM Embedding Engine
39
+ */
40
+ export declare class EmbeddingEngine implements Deletable {
41
+ private readonly engine;
42
+ private readonly deleteCallback;
43
+ readonly settings: EmbeddingEngineSettings;
44
+ private readonly mutex;
45
+ private constructor();
46
+ static create(settings: EmbeddingEngineSettings): Promise<EmbeddingEngine>;
47
+ computeEmbedding(input: EmbeddingInput, options?: EmbeddingOptions): Promise<EmbeddingResponse>;
48
+ computeEmbeddingBatch(inputs: EmbeddingInput[], options?: EmbeddingOptions): Promise<EmbeddingResponse[]>;
49
+ delete(): Promise<void>;
50
+ }
51
+ //# sourceMappingURL=embedding_engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding_engine.d.ts","sourceRoot":"","sources":["../src/embedding_engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAC,WAAW,EAAE,0BAA0B,EAAE,0BAA0B,EAAC,MAAM,0BAA0B,CAAC;AAC7G,OAAO,EAAC,uBAAuB,EAA6D,MAAM,gCAAgC,CAAC;AAKnI,OAAO,EAAU,SAAS,EAAkG,gBAAgB,EAAE,qBAAqB,EAAC,MAAM,yBAAyB,CAAC;AAGpM,OAAO,EACL,KAAK,gBAAgB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,0BAA0B,GAC3B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;AAE/D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,oBAAoB,GAAG,oBAAoB,EAAE,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AA6DD;;GAEG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAK3C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAEvB,OAAO,CAAC,QAAQ,CAAC,cAAc;IANnC,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,CAAC;IAC3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IAErC,OAAO;WAQM,MAAM,CAAC,QAAQ,EAAE,uBAAuB,GACjD,OAAO,CAAC,eAAe,CAAC;IA8EtB,gBAAgB,CAClB,KAAK,EAAE,cAAc,EACrB,OAAO,GAAE,gBAAqB,GAC/B,OAAO,CAAC,iBAAiB,CAAC;IAevB,qBAAqB,CACvB,MAAM,EAAE,cAAc,EAAE,EACxB,OAAO,GAAE,gBAAqB,GAC/B,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA0BzB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;CAK9B"}
@@ -0,0 +1,198 @@
1
+ /**
2
+ * Copyright 2026 Google LLC
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { Cleanup } from './cleanup.js';
17
+ import { SUPPORTED_AUDIO_MIME_TYPES, SUPPORTED_IMAGE_MIME_TYPES } from './conversation_config.js';
18
+ import { fillWasmEmbeddingEngineSettingsFromEmbeddingEngineSettings } from './embedding_engine_settings.js';
19
+ import { getOrLoadGlobalLiteRtLm } from './load_litertlm.js';
20
+ import { Mutex } from './mutex.js';
21
+ import { ReadableStreamDataStreamWrapper } from './readable_stream_data_stream_wrapper.js';
22
+ import { modelToStream, setupStreamWeightsCallback } from './stream_utils.js';
23
+ import { Backend, InputOverflowStrategy } from './wasm_binding_types.js';
24
+ import { consumeEmscriptenVectorToArray } from './wasm_utils.js';
25
+ export { InputOverflowStrategy, SUPPORTED_AUDIO_MIME_TYPES, SUPPORTED_IMAGE_MIME_TYPES, };
26
+ function toWasmEmbeddingOptions(options) {
27
+ return {
28
+ normalize: options?.normalize ?? true,
29
+ insertSpecialTokens: options?.insertSpecialTokens ?? true,
30
+ inputOverflowStrategy: options?.inputOverflowStrategy ?? InputOverflowStrategy.ERROR,
31
+ visionTokensPerImage: options?.visionTokensPerImage,
32
+ outputSize: options?.outputSize,
33
+ };
34
+ }
35
+ async function normalizeInputPart(part) {
36
+ if (typeof part === 'string') {
37
+ return { type: 'text', text: part };
38
+ }
39
+ if (part instanceof Blob) {
40
+ const mimeType = part.type.toLowerCase().split(';')[0].trim();
41
+ if (SUPPORTED_IMAGE_MIME_TYPES.has(mimeType)) {
42
+ const arrayBuffer = await part.arrayBuffer();
43
+ return { type: 'image', data: arrayBuffer };
44
+ }
45
+ if (SUPPORTED_AUDIO_MIME_TYPES.has(mimeType)) {
46
+ const arrayBuffer = await part.arrayBuffer();
47
+ return { type: 'audio', data: arrayBuffer };
48
+ }
49
+ throw new Error(`Unsupported Blob mime type: "${part.type}". Supported image types: ` +
50
+ `${[...SUPPORTED_IMAGE_MIME_TYPES].join(', ')}. Supported audio types: ` +
51
+ `${[...SUPPORTED_AUDIO_MIME_TYPES].join(', ')}.`);
52
+ }
53
+ if (typeof part === 'object' && part !== null) {
54
+ if (part.type === 'image') {
55
+ if (part.data instanceof Blob) {
56
+ const arrayBuffer = await part.data.arrayBuffer();
57
+ return { type: 'image', data: arrayBuffer };
58
+ }
59
+ return part;
60
+ }
61
+ if (part.type === 'audio') {
62
+ if (part.data instanceof Blob) {
63
+ const arrayBuffer = await part.data.arrayBuffer();
64
+ return { type: 'audio', data: arrayBuffer };
65
+ }
66
+ return part;
67
+ }
68
+ return part;
69
+ }
70
+ throw new Error(`Unsupported input part: ${JSON.stringify(part)}`);
71
+ }
72
+ async function normalizeInput(input) {
73
+ if (Array.isArray(input)) {
74
+ return Promise.all(input.map((p) => normalizeInputPart(p)));
75
+ }
76
+ return normalizeInputPart(input);
77
+ }
78
+ /**
79
+ * LiteRT-LM Embedding Engine
80
+ */
81
+ export class EmbeddingEngine {
82
+ engine;
83
+ deleteCallback;
84
+ settings;
85
+ mutex = new Mutex();
86
+ constructor(engine, settings, deleteCallback) {
87
+ this.engine = engine;
88
+ this.deleteCallback = deleteCallback;
89
+ this.settings = settings;
90
+ }
91
+ static async create(settings) {
92
+ const litertlm = await getOrLoadGlobalLiteRtLm();
93
+ const wasm = litertlm.liteRtLmWasm;
94
+ const backend = settings.backend ?? Backend.GPU;
95
+ settings = { ...settings, backend };
96
+ if (backend === Backend.GPU || backend === Backend.GPU_ARTISAN) {
97
+ await litertlm.setupDefaultWebGpuDevice();
98
+ }
99
+ const cleanup = new Cleanup();
100
+ const modelStream = await modelToStream(settings.model);
101
+ let engine;
102
+ try {
103
+ const streamWrapper = new ReadableStreamDataStreamWrapper(modelStream, () => wasm.HEAPU8);
104
+ const dataStream = wasm.ReadableStreamDataStream.create(streamWrapper);
105
+ cleanup.add(() => {
106
+ dataStream.delete();
107
+ });
108
+ const modelAssets = wasm.ModelAssets.createStreaming(dataStream);
109
+ const cleanupModelAssets = cleanup.add(() => {
110
+ modelAssets.delete();
111
+ });
112
+ let wasmSettings;
113
+ if (settings.visionBackend !== undefined ||
114
+ settings.audioBackend !== undefined) {
115
+ wasmSettings = wasm.EmbeddingEngineSettings.createDefaultMultimodal(modelAssets, { value: backend }, settings.visionBackend ? { value: settings.visionBackend } :
116
+ undefined, settings.audioBackend ? { value: settings.audioBackend } : undefined);
117
+ }
118
+ else {
119
+ wasmSettings = wasm.EmbeddingEngineSettings.createDefault(modelAssets, { value: backend });
120
+ }
121
+ cleanupModelAssets();
122
+ const cleanupWasmSettings = cleanup.add(() => {
123
+ wasmSettings.delete();
124
+ });
125
+ const resolvedBackend = wasmSettings.getMutableMainExecutorSettings().getBackend().value;
126
+ fillWasmEmbeddingEngineSettingsFromEmbeddingEngineSettings(wasmSettings, settings, resolvedBackend);
127
+ if (resolvedBackend === Backend.GPU) {
128
+ setupStreamWeightsCallback(wasm);
129
+ }
130
+ try {
131
+ engine = await wasm.EmbeddingEngine.createEngine(wasmSettings);
132
+ }
133
+ finally {
134
+ if (resolvedBackend === Backend.GPU) {
135
+ try {
136
+ wasm.registerStreamWeightsCallback(undefined);
137
+ await wasm.clearStoredWeightsStreams();
138
+ }
139
+ catch (cleanupError) {
140
+ console.error('Error during cleanup:', cleanupError);
141
+ }
142
+ }
143
+ }
144
+ cleanupWasmSettings();
145
+ cleanup.add(() => {
146
+ engine.delete();
147
+ });
148
+ return new EmbeddingEngine(engine, settings, () => cleanup.run());
149
+ }
150
+ catch (e) {
151
+ cleanup.run();
152
+ throw e;
153
+ }
154
+ }
155
+ async computeEmbedding(input, options = {}) {
156
+ const normalized = await normalizeInput(input);
157
+ return this.mutex.acquireAndRun(async () => {
158
+ const wasmResponse = await this.engine.computeEmbedding(normalized, toWasmEmbeddingOptions(options));
159
+ const embedding = consumeEmscriptenVectorToArray(wasmResponse.embedding);
160
+ return {
161
+ embedding,
162
+ inputLength: wasmResponse.inputLength,
163
+ truncatedLength: wasmResponse.truncatedLength,
164
+ numChunks: wasmResponse.numChunks,
165
+ };
166
+ });
167
+ }
168
+ async computeEmbeddingBatch(inputs, options = {}) {
169
+ const normalizedBatch = await Promise.all(inputs.map(normalizeInput));
170
+ return this.mutex.acquireAndRun(async () => {
171
+ const wasmResponses = await this.engine.computeEmbeddingBatch(normalizedBatch, toWasmEmbeddingOptions(options));
172
+ try {
173
+ const responses = [];
174
+ const count = wasmResponses.size();
175
+ for (let i = 0; i < count; i++) {
176
+ const wasmResp = wasmResponses.get(i);
177
+ const embedding = consumeEmscriptenVectorToArray(wasmResp.embedding);
178
+ responses.push({
179
+ embedding,
180
+ inputLength: wasmResp.inputLength,
181
+ truncatedLength: wasmResp.truncatedLength,
182
+ numChunks: wasmResp.numChunks,
183
+ });
184
+ }
185
+ return responses;
186
+ }
187
+ finally {
188
+ wasmResponses.delete();
189
+ }
190
+ });
191
+ }
192
+ async delete() {
193
+ await this.mutex.acquireAndRun(() => {
194
+ this.deleteCallback();
195
+ });
196
+ }
197
+ }
198
+ //# sourceMappingURL=embedding_engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding_engine.js","sourceRoot":"","sources":["../src/embedding_engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AACrC,OAAO,EAAc,0BAA0B,EAAE,0BAA0B,EAAC,MAAM,0BAA0B,CAAC;AAC7G,OAAO,EAA0B,0DAA0D,EAAC,MAAM,gCAAgC,CAAC;AACnI,OAAO,EAAC,uBAAuB,EAAC,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAC;AACjC,OAAO,EAAC,+BAA+B,EAAC,MAAM,0CAA0C,CAAC;AACzF,OAAO,EAAC,aAAa,EAAE,0BAA0B,EAAC,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAC,OAAO,EAA+H,qBAAqB,EAAC,MAAM,yBAAyB,CAAC;AACpM,OAAO,EAAC,8BAA8B,EAAC,MAAM,iBAAiB,CAAC;AAE/D,OAAO,EAEL,qBAAqB,EACrB,0BAA0B,EAC1B,0BAA0B,GAC3B,CAAC;AAsBF,SAAS,sBAAsB,CAAC,OAA0B;IACxD,OAAO;QACL,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,IAAI;QACrC,mBAAmB,EAAE,OAAO,EAAE,mBAAmB,IAAI,IAAI;QACzD,qBAAqB,EACjB,OAAO,EAAE,qBAAqB,IAAI,qBAAqB,CAAC,KAAK;QACjE,oBAAoB,EAAE,OAAO,EAAE,oBAAoB;QACnD,UAAU,EAAE,OAAO,EAAE,UAAU;KAChC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,IAA0B;IAE1D,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC;IACpC,CAAC;IACD,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9D,IAAI,0BAA0B,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAC7C,OAAO,EAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAC,CAAC;QAC5C,CAAC;QACD,IAAI,0BAA0B,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAC7C,OAAO,EAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAC,CAAC;QAC5C,CAAC;QACD,MAAM,IAAI,KAAK,CACX,gCAAgC,IAAI,CAAC,IAAI,4BAA4B;YACrE,GAAG,CAAC,GAAG,0BAA0B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B;YACxE,GAAG,CAAC,GAAG,0BAA0B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAC9C,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,IAAI,YAAY,IAAI,EAAE,CAAC;gBAC9B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBAClD,OAAO,EAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAC,CAAC;YAC5C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,IAAI,YAAY,IAAI,EAAE,CAAC;gBAC9B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBAClD,OAAO,EAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAC,CAAC;YAC5C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,KAAqB;IAEjD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,eAAe;IAKL;IAEA;IANZ,QAAQ,CAA0B;IAC1B,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;IAErC,YACqB,MAA2B,EAC5C,QAAiC,EAChB,cAA0B;QAF1B,WAAM,GAAN,MAAM,CAAqB;QAE3B,mBAAc,GAAd,cAAc,CAAY;QAE7C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAiC;QAEnD,MAAM,QAAQ,GAAG,MAAM,uBAAuB,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC;QACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC;QAChD,QAAQ,GAAG,EAAC,GAAG,QAAQ,EAAE,OAAO,EAAC,CAAC;QAElC,IAAI,OAAO,KAAK,OAAO,CAAC,GAAG,IAAI,OAAO,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC;YAC/D,MAAM,QAAQ,CAAC,wBAAwB,EAAE,CAAC;QAC5C,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,WAAW,GAAG,MAAM,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,MAA2B,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,aAAa,GACf,IAAI,+BAA+B,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxE,MAAM,UAAU,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YACvE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;gBACf,UAAU,CAAC,MAAM,EAAE,CAAC;YACtB,CAAC,CAAC,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YACjE,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;gBAC1C,WAAW,CAAC,MAAM,EAAE,CAAC;YACvB,CAAC,CAAC,CAAC;YAEH,IAAI,YAAyC,CAAC;YAC9C,IAAI,QAAQ,CAAC,aAAa,KAAK,SAAS;gBACpC,QAAQ,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;gBACxC,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,CAC/D,WAAW,EAAE,EAAC,KAAK,EAAE,OAAO,EAAC,EAC7B,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAC,KAAK,EAAE,QAAQ,CAAC,aAAa,EAAC,CAAC,CAAC;oBACjC,SAAS,EAClC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAC,KAAK,EAAE,QAAQ,CAAC,YAAY,EAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC1E,CAAC;iBAAM,CAAC;gBACN,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,aAAa,CACrD,WAAW,EAAE,EAAC,KAAK,EAAE,OAAO,EAAC,CAAC,CAAC;YACrC,CAAC;YACD,kBAAkB,EAAE,CAAC;YAErB,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;gBAC3C,YAAY,CAAC,MAAM,EAAE,CAAC;YACxB,CAAC,CAAC,CAAC;YAEH,MAAM,eAAe,GACjB,YAAY,CAAC,8BAA8B,EAAE,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC;YAErE,0DAA0D,CACtD,YAAY,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;YAE7C,IAAI,eAAe,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC;gBACpC,0BAA0B,CAAC,IAAI,CAAC,CAAC;YACnC,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YACjE,CAAC;oBAAS,CAAC;gBACT,IAAI,eAAe,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC;oBACpC,IAAI,CAAC;wBACH,IAAI,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC;wBAC9C,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;oBACzC,CAAC;oBAAC,OAAO,YAAY,EAAE,CAAC;wBACtB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,YAAY,CAAC,CAAC;oBACvD,CAAC;gBACH,CAAC;YACH,CAAC;YACD,mBAAmB,EAAE,CAAC;YAEtB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;gBACf,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,eAAe,CACtB,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CAClB,KAAqB,EACrB,UAA4B,EAAE;QAEhC,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE;YACzC,MAAM,YAAY,GACd,MAAM,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC;YACpF,MAAM,SAAS,GAAG,8BAA8B,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACzE,OAAO;gBACL,SAAS;gBACT,WAAW,EAAE,YAAY,CAAC,WAAW;gBACrC,eAAe,EAAE,YAAY,CAAC,eAAe;gBAC7C,SAAS,EAAE,YAAY,CAAC,SAAS;aAClC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,qBAAqB,CACvB,MAAwB,EACxB,UAA4B,EAAE;QAEhC,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,IAAI,EAAE;YACzC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,qBAAqB,CACzD,eAAe,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC;YACtD,IAAI,CAAC;gBACH,MAAM,SAAS,GAAwB,EAAE,CAAC;gBAC1C,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;gBACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC/B,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACtC,MAAM,SAAS,GACX,8BAA8B,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;oBACvD,SAAS,CAAC,IAAI,CAAC;wBACb,SAAS;wBACT,WAAW,EAAE,QAAQ,CAAC,WAAW;wBACjC,eAAe,EAAE,QAAQ,CAAC,eAAe;wBACzC,SAAS,EAAE,QAAQ,CAAC,SAAS;qBAC9B,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC;oBAAS,CAAC;gBACT,aAAa,CAAC,MAAM,EAAE,CAAC;YACzB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE;YAClC,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Copyright 2026 Google LLC
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { Backend, EmbeddingEngineSettings as WasmEmbeddingEngineSettings } from './wasm_binding_types.js';
17
+ /**
18
+ * LiteRT-LM EmbeddingExecutorSettings
19
+ */
20
+ export interface EmbeddingExecutorSettings {
21
+ numThreads?: number;
22
+ }
23
+ /**
24
+ * LiteRT-LM EmbeddingEngineSettings
25
+ */
26
+ export interface EmbeddingEngineSettings {
27
+ model: string | Blob | ReadableStream<Uint8Array>;
28
+ backend?: Backend;
29
+ visionBackend?: Backend;
30
+ audioBackend?: Backend;
31
+ maxInputLength?: number;
32
+ visionTokensPerImage?: number;
33
+ mainExecutorSettings?: EmbeddingExecutorSettings;
34
+ }
35
+ /**
36
+ * Fills a WasmEmbeddingEngineSettings with the values from an EmbeddingEngineSettings.
37
+ */
38
+ export declare function fillWasmEmbeddingEngineSettingsFromEmbeddingEngineSettings(wasmSettings: WasmEmbeddingEngineSettings, settings: EmbeddingEngineSettings, backend: Backend): void;
39
+ //# sourceMappingURL=embedding_engine_settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding_engine_settings.d.ts","sourceRoot":"","sources":["../src/embedding_engine_settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAC,OAAO,EAAE,uBAAuB,IAAI,2BAA2B,EAAC,MAAM,yBAAyB,CAAC;AAExG;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,yBAAyB,CAAC;CAClD;AAED;;GAEG;AACH,wBAAgB,0DAA0D,CACtE,YAAY,EAAE,2BAA2B,EACzC,QAAQ,EAAE,uBAAuB,EACjC,OAAO,EAAE,OAAO,GACjB,IAAI,CAiBN"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Copyright 2026 Google LLC
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ /**
17
+ * Fills a WasmEmbeddingEngineSettings with the values from an EmbeddingEngineSettings.
18
+ */
19
+ export function fillWasmEmbeddingEngineSettingsFromEmbeddingEngineSettings(wasmSettings, settings, backend) {
20
+ const wasmExecutorSettings = wasmSettings.getMutableMainExecutorSettings();
21
+ wasmExecutorSettings.setCacheDir(':nocache');
22
+ if (settings.maxInputLength !== undefined) {
23
+ wasmSettings.setMaxInputLength(settings.maxInputLength);
24
+ }
25
+ if (settings.visionTokensPerImage !== undefined) {
26
+ wasmSettings.setVisionTokensPerImage(settings.visionTokensPerImage);
27
+ }
28
+ if (settings.mainExecutorSettings) {
29
+ const mainExecutorSettings = settings.mainExecutorSettings;
30
+ if (mainExecutorSettings.numThreads !== undefined) {
31
+ wasmExecutorSettings.setNumThreads(mainExecutorSettings.numThreads);
32
+ }
33
+ }
34
+ }
35
+ //# sourceMappingURL=embedding_engine_settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding_engine_settings.js","sourceRoot":"","sources":["../src/embedding_engine_settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAwBH;;GAEG;AACH,MAAM,UAAU,0DAA0D,CACtE,YAAyC,EACzC,QAAiC,EACjC,OAAgB;IAElB,MAAM,oBAAoB,GAAG,YAAY,CAAC,8BAA8B,EAAE,CAAC;IAC3E,oBAAoB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAE7C,IAAI,QAAQ,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QAC1C,YAAY,CAAC,iBAAiB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,QAAQ,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;QAChD,YAAY,CAAC,uBAAuB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,QAAQ,CAAC,oBAAoB,EAAE,CAAC;QAClC,MAAM,oBAAoB,GAAG,QAAQ,CAAC,oBAAoB,CAAC;QAC3D,IAAI,oBAAoB,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAClD,oBAAoB,CAAC,aAAa,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -26,6 +26,8 @@ export * from './session.js';
26
26
  export * from './conversation.js';
27
27
  export * from './session_config.js';
28
28
  export * from './conversation_config.js';
29
+ export * from './embedding_engine_settings.js';
30
+ export * from './embedding_engine.js';
29
31
  export * as Wasm from './wasm_binding_types.js';
30
32
  export * from './types.js';
31
33
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAE/C,OAAO,EAAC,OAAO,EAAC,MAAM,yBAAyB,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AAGzC,OAAO,KAAK,IAAI,MAAM,yBAAyB,CAAC;AAChD,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAE/C,OAAO,EAAC,OAAO,EAAC,MAAM,yBAAyB,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AAEtC,OAAO,KAAK,IAAI,MAAM,yBAAyB,CAAC;AAChD,cAAc,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -26,6 +26,8 @@ export * from './session.js';
26
26
  export * from './conversation.js';
27
27
  export * from './session_config.js';
28
28
  export * from './conversation_config.js';
29
+ export * from './embedding_engine_settings.js';
30
+ export * from './embedding_engine.js';
29
31
  export * as Wasm from './wasm_binding_types.js';
30
32
  export * from './types.js';
31
33
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAE/C,OAAO,EAAC,OAAO,EAAC,MAAM,yBAAyB,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AAGzC,OAAO,KAAK,IAAI,MAAM,yBAAyB,CAAC;AAChD,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mCAAmC,CAAC;AAClD,cAAc,mCAAmC,CAAC;AAClD,cAAc,gCAAgC,CAAC;AAE/C,OAAO,EAAC,OAAO,EAAC,MAAM,yBAAyB,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,0BAA0B,CAAC;AACzC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AAEtC,OAAO,KAAK,IAAI,MAAM,yBAAyB,CAAC;AAChD,cAAc,YAAY,CAAC"}
@@ -26,7 +26,7 @@ export async function setupDefaultWebGpuDevice() {
26
26
  */
27
27
  export class LiteRtLm {
28
28
  liteRtLmWasm;
29
- static DEFAULT_WASM_PATH = 'https://cdn.jsdelivr.net/npm/@litert-lm/core@0.17.0/wasm';
29
+ static DEFAULT_WASM_PATH = 'https://cdn.jsdelivr.net/npm/@litert-lm/core@0.17.1/wasm';
30
30
  constructor(wasmModule) {
31
31
  this.liteRtLmWasm = wasmModule;
32
32
  this.liteRtLmWasm.setupLogging();
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Copyright 2026 Google LLC
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { LiteRtLmWasm } from './wasm_binding_types.js';
17
+ /**
18
+ * Converts a model source (URL string, Blob, or ReadableStream) into a ReadableStream.
19
+ */
20
+ export declare function modelToStream(model: string | Blob | ReadableStream<Uint8Array>): Promise<ReadableStream<Uint8Array>>;
21
+ /**
22
+ * Sets up the callback that streams model weights directly into WebGPU buffers.
23
+ */
24
+ export declare function setupStreamWeightsCallback(wasm: LiteRtLmWasm): void;
25
+ //# sourceMappingURL=stream_utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream_utils.d.ts","sourceRoot":"","sources":["../src/stream_utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAC;AAErD;;GAEG;AACH,wBAAsB,aAAa,CAC/B,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC,GACjD,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAgBtC;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAoEnE"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Copyright 2026 Google LLC
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ /**
17
+ * Converts a model source (URL string, Blob, or ReadableStream) into a ReadableStream.
18
+ */
19
+ export async function modelToStream(model) {
20
+ if (model instanceof ReadableStream) {
21
+ return model;
22
+ }
23
+ if (model instanceof Blob) {
24
+ return model.stream();
25
+ }
26
+ const modelUrl = model;
27
+ const response = await fetch(modelUrl, {
28
+ credentials: 'same-origin',
29
+ });
30
+ if (!response.ok) {
31
+ throw new Error(`Failed to fetch model file from ${modelUrl}`);
32
+ }
33
+ return response.body;
34
+ }
35
+ /**
36
+ * Sets up the callback that streams model weights directly into WebGPU buffers.
37
+ */
38
+ export function setupStreamWeightsCallback(wasm) {
39
+ const gpuDevice = wasm.preinitializedWebGPUDevice;
40
+ if (!gpuDevice) {
41
+ throw new Error('WebGPU device not initialized');
42
+ }
43
+ wasm.registerStreamWeightsCallback(async (tflIds, wgpuBufferIds, offsets, lengths) => {
44
+ const requests = [];
45
+ if (tflIds.length !== wgpuBufferIds.length) {
46
+ throw new Error(`Stream weights callback received arrays of different lengths: ` +
47
+ `tflIds=${tflIds.length}, wgpuBufferIds=${wgpuBufferIds.length}`);
48
+ }
49
+ for (let i = 0; i < tflIds.length; i++) {
50
+ requests.push({
51
+ id: tflIds[i],
52
+ wgpuBufferId: wgpuBufferIds[i],
53
+ offset: offsets[i],
54
+ length: lengths[i],
55
+ });
56
+ }
57
+ requests.sort((a, b) => a.offset - b.offset);
58
+ const CHUNK_SIZE = 4 * 1024 * 1024;
59
+ // `_malloc` returns a signed i32, which reads back negative once the heap
60
+ // grows past 2GB. Reinterpret it as unsigned before using it to index the
61
+ // heap, or the `Uint8Array` view below throws a `RangeError`.
62
+ const tempPtr = wasm._malloc(CHUNK_SIZE) >>> 0;
63
+ if (tempPtr === 0) {
64
+ throw new Error('Failed to allocate Wasm memory for streaming weights');
65
+ }
66
+ try {
67
+ for (const req of requests) {
68
+ const gpuBuffer = wasm.WebGPU.getJsObject(req.wgpuBufferId);
69
+ if (!gpuBuffer) {
70
+ throw new Error(`Failed to find GPUBuffer for ID: ${req.wgpuBufferId}`);
71
+ }
72
+ const modelType = wasm.getCurrentlyCompilingModel();
73
+ let bytesUploaded = 0;
74
+ while (bytesUploaded < req.length) {
75
+ const chunkSize = Math.min(CHUNK_SIZE, req.length - bytesUploaded);
76
+ await wasm.readStoredWeights(modelType, req.offset + bytesUploaded, chunkSize, tempPtr);
77
+ let chunkData = new Uint8Array(wasm.HEAPU8.buffer, tempPtr, chunkSize);
78
+ if (chunkData.byteLength % 4 !== 0 &&
79
+ bytesUploaded + chunkSize === req.length) {
80
+ const paddedSize = (chunkData.byteLength + 3) & ~3;
81
+ const paddedData = new Uint8Array(paddedSize);
82
+ paddedData.set(chunkData);
83
+ chunkData = paddedData;
84
+ }
85
+ gpuDevice.queue.writeBuffer(gpuBuffer, bytesUploaded, chunkData);
86
+ bytesUploaded += chunkSize;
87
+ }
88
+ }
89
+ }
90
+ finally {
91
+ wasm._free(tempPtr);
92
+ }
93
+ });
94
+ }
95
+ //# sourceMappingURL=stream_utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream_utils.js","sourceRoot":"","sources":["../src/stream_utils.ts"],"names":[],"mappings":"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"}
@@ -33,7 +33,7 @@ export class ConversationFake {
33
33
  if (this.nextResponses.length > 0) {
34
34
  return this.nextResponses.shift();
35
35
  }
36
- return { role: 'model', content: 'hello from fake' };
36
+ return { role: 'assistant', content: 'hello from fake' };
37
37
  }
38
38
  appendInput(message) {
39
39
  if (Array.isArray(message)) {