@mneme-ai/embeddings 1.29.0 → 1.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundled.d.ts +6 -0
- package/dist/bundled.d.ts.map +1 -1
- package/dist/bundled.js +97 -15
- package/dist/bundled.js.map +1 -1
- package/package.json +1 -1
package/dist/bundled.d.ts
CHANGED
|
@@ -39,6 +39,12 @@ export declare class BundledEmbedder implements EmbeddingProvider {
|
|
|
39
39
|
/** Lazy load — done at most once, even under concurrent embed() calls. */
|
|
40
40
|
private load;
|
|
41
41
|
private bootPipeline;
|
|
42
|
+
/** v1.30.0 -- WASM CONSTELLATION. Try device IDs in order; cache the
|
|
43
|
+
* winner so the next session loads instantly. The order goes
|
|
44
|
+
* newest-first because @huggingface/transformers@3.x deprecated
|
|
45
|
+
* "wasm" in favor of "cpu" and the user gets the freshest path
|
|
46
|
+
* on a fresh install. */
|
|
47
|
+
private loadViaConstellation;
|
|
42
48
|
}
|
|
43
49
|
/** Default cache dir: ~/.cache/mneme/models. User can `rm -rf` to reset. */
|
|
44
50
|
export declare function defaultCacheDir(): string;
|
package/dist/bundled.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundled.d.ts","sourceRoot":"","sources":["../src/bundled.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGxD,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAChG;;2CAEuC;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAeD,qBAAa,eAAgB,YAAW,iBAAiB;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAA+B;IAC3D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAS;IAC3C,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,WAAW,CAA0C;gBAEjD,IAAI,GAAE,cAAmB;
|
|
1
|
+
{"version":3,"file":"bundled.d.ts","sourceRoot":"","sources":["../src/bundled.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGxD,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAChG;;2CAEuC;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAeD,qBAAa,eAAgB,YAAW,iBAAiB;IACvD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAA+B;IAC3D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAS;IAC3C,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,WAAW,CAA0C;gBAEjD,IAAI,GAAE,cAAmB;IA6BrC;yEACqE;IAC/D,MAAM,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAiB/E,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAiBrD,0EAA0E;YAC5D,IAAI;YAQJ,YAAY;IAyF1B;;;;8BAI0B;YACZ,oBAAoB;CAmDnC;AAED,4EAA4E;AAC5E,wBAAgB,eAAe,IAAI,MAAM,CAExC"}
|
package/dist/bundled.js
CHANGED
|
@@ -28,7 +28,26 @@ export class BundledEmbedder {
|
|
|
28
28
|
extractor = null;
|
|
29
29
|
loadPromise = null;
|
|
30
30
|
constructor(opts = {}) {
|
|
31
|
-
|
|
31
|
+
// v1.30.0 -- MODEL-URL HONEYPOT pre-validation. If the caller hands
|
|
32
|
+
// us a model id that doesn't look like a HuggingFace repo path
|
|
33
|
+
// (e.g., "fnv-256" -- the hash embedder's internal name leaked
|
|
34
|
+
// through a config write/read cycle), FALL BACK to DEFAULT_MODEL
|
|
35
|
+
// instead of constructing a 404-bound URL. The user previously got
|
|
36
|
+
// a confusing "Unauthorized access to file: huggingface.co/fnv-256/..."
|
|
37
|
+
// because their config had been polluted by a prior hash-tier run.
|
|
38
|
+
const requestedModel = opts.model ?? DEFAULT_MODEL;
|
|
39
|
+
const looksValid = /^[\w.-]+\/[\w.-]+$/.test(requestedModel);
|
|
40
|
+
if (!looksValid) {
|
|
41
|
+
// eslint-disable-next-line no-console
|
|
42
|
+
console.warn(`[mneme/embeddings] model id "${requestedModel}" doesn't look like a HuggingFace repo path ` +
|
|
43
|
+
`(expected "<owner>/<name>"). Falling back to ${DEFAULT_MODEL}. ` +
|
|
44
|
+
`Likely cause: a prior hash-tier run polluted .mneme/config.json. ` +
|
|
45
|
+
`Run \`mneme embeddings upgrade\` to reset cleanly.`);
|
|
46
|
+
this.model = DEFAULT_MODEL;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
this.model = requestedModel;
|
|
50
|
+
}
|
|
32
51
|
this.dimensions = DEFAULT_DIMS;
|
|
33
52
|
this.cacheDir = opts.cacheDir ?? defaultCacheDir();
|
|
34
53
|
this.onProgress = opts.onProgress;
|
|
@@ -115,21 +134,29 @@ export class BundledEmbedder {
|
|
|
115
134
|
`Refusing to load possibly-tampered model. To intentionally re-pin, delete: ${this.tofuManifestPath}`);
|
|
116
135
|
}
|
|
117
136
|
}
|
|
118
|
-
//
|
|
119
|
-
//
|
|
120
|
-
//
|
|
137
|
+
// v1.30.0 -- WASM CONSTELLATION (auto-detect best device).
|
|
138
|
+
//
|
|
139
|
+
// Pre-fix: hardcoded `device: "wasm"` worked on @huggingface/transformers
|
|
140
|
+
// <= 3.0 but newer releases threw "Unsupported device 'wasm'. Should be
|
|
141
|
+
// one of: cpu" -- silently dropping the user to the hash tier without
|
|
142
|
+
// them ever knowing the bundled MiniLM was reachable.
|
|
143
|
+
//
|
|
144
|
+
// KILLER IDEA -- WASM Constellation: try a SEQUENCE of device IDs
|
|
145
|
+
// (newest first), keep the first one that loads, cache the winner to
|
|
146
|
+
// `~/.cache/mneme/models/.device-winner` so the NEXT session skips the
|
|
147
|
+
// race. The galaxy of device IDs (cpu / wasm / webgpu / cuda / auto)
|
|
148
|
+
// is searched like a constellation -- whichever star shines first
|
|
149
|
+
// becomes the lighthouse for future runs.
|
|
121
150
|
const onProgress = this.onProgress;
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
?
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
: undefined,
|
|
132
|
-
});
|
|
151
|
+
const progressCb = onProgress
|
|
152
|
+
? (info) => onProgress({
|
|
153
|
+
status: String(info["status"] ?? ""),
|
|
154
|
+
loaded: typeof info["loaded"] === "number" ? info["loaded"] : undefined,
|
|
155
|
+
total: typeof info["total"] === "number" ? info["total"] : undefined,
|
|
156
|
+
file: typeof info["file"] === "string" ? info["file"] : undefined,
|
|
157
|
+
})
|
|
158
|
+
: undefined;
|
|
159
|
+
const pipeline = await this.loadViaConstellation(transformers, progressCb);
|
|
133
160
|
// v1.11.1 — TOFU post-pipeline pin. After the pipeline downloaded any
|
|
134
161
|
// missing files, snapshot hashes if no manifest existed yet. Best-effort:
|
|
135
162
|
// a failure here doesn't break embedding (the user's already past the
|
|
@@ -142,6 +169,61 @@ export class BundledEmbedder {
|
|
|
142
169
|
}
|
|
143
170
|
return pipeline;
|
|
144
171
|
}
|
|
172
|
+
/** v1.30.0 -- WASM CONSTELLATION. Try device IDs in order; cache the
|
|
173
|
+
* winner so the next session loads instantly. The order goes
|
|
174
|
+
* newest-first because @huggingface/transformers@3.x deprecated
|
|
175
|
+
* "wasm" in favor of "cpu" and the user gets the freshest path
|
|
176
|
+
* on a fresh install. */
|
|
177
|
+
async loadViaConstellation(
|
|
178
|
+
// We type the transformers module loosely -- its `device` field
|
|
179
|
+
// is a string literal union that varies between major versions.
|
|
180
|
+
transformers, progressCb) {
|
|
181
|
+
const constellation = ["cpu", "wasm", "webgpu", "auto"];
|
|
182
|
+
const winnerPath = join(this.cacheDir, ".device-winner");
|
|
183
|
+
let cachedWinner = null;
|
|
184
|
+
try {
|
|
185
|
+
const fs = await import("node:fs");
|
|
186
|
+
if (fs.existsSync(winnerPath))
|
|
187
|
+
cachedWinner = fs.readFileSync(winnerPath, "utf8").trim();
|
|
188
|
+
}
|
|
189
|
+
catch { /* */ }
|
|
190
|
+
// Reorder the constellation so the cached winner is tried FIRST.
|
|
191
|
+
const order = cachedWinner && constellation.includes(cachedWinner)
|
|
192
|
+
? [cachedWinner, ...constellation.filter((d) => d !== cachedWinner)]
|
|
193
|
+
: constellation;
|
|
194
|
+
let lastErr = null;
|
|
195
|
+
for (const device of order) {
|
|
196
|
+
try {
|
|
197
|
+
const pipeline = await transformers.pipeline("feature-extraction", this.model, {
|
|
198
|
+
device,
|
|
199
|
+
progress_callback: progressCb,
|
|
200
|
+
});
|
|
201
|
+
// Winner! Persist for next session.
|
|
202
|
+
try {
|
|
203
|
+
const fs = await import("node:fs");
|
|
204
|
+
if (!fs.existsSync(this.cacheDir))
|
|
205
|
+
fs.mkdirSync(this.cacheDir, { recursive: true });
|
|
206
|
+
fs.writeFileSync(winnerPath, device, "utf8");
|
|
207
|
+
}
|
|
208
|
+
catch { /* */ }
|
|
209
|
+
return pipeline;
|
|
210
|
+
}
|
|
211
|
+
catch (e) {
|
|
212
|
+
lastErr = e;
|
|
213
|
+
// Only retry on "Unsupported device" / similar device-rejection errors.
|
|
214
|
+
// Network errors, file-not-found, etc. propagate out of the loop.
|
|
215
|
+
const msg = e.message ?? "";
|
|
216
|
+
if (!/unsupported device|device.*should be|invalid.*device/i.test(msg)) {
|
|
217
|
+
throw e;
|
|
218
|
+
}
|
|
219
|
+
// else: fall through to next device in the constellation.
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
throw new Error(`WASM CONSTELLATION exhausted -- none of [${order.join(", ")}] worked. ` +
|
|
223
|
+
`Last error: ${lastErr?.message ?? "unknown"}. ` +
|
|
224
|
+
`This usually means @huggingface/transformers needs a different device id. ` +
|
|
225
|
+
`Workaround: \`mneme embeddings status\` to see your tier; \`ollama serve && ollama pull nomic-embed-text\` for the ★★★★ tier without WASM.`);
|
|
226
|
+
}
|
|
145
227
|
}
|
|
146
228
|
/** Default cache dir: ~/.cache/mneme/models. User can `rm -rf` to reset. */
|
|
147
229
|
export function defaultCacheDir() {
|
package/dist/bundled.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundled.js","sourceRoot":"","sources":["../src/bundled.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAelE,MAAM,aAAa,GAAG,yBAAyB,CAAC;AAChD,MAAM,YAAY,GAAG,GAAG,CAAC;AAYzB,MAAM,OAAO,eAAe;IACjB,IAAI,CAAS;IACb,UAAU,CAAS;IACX,KAAK,CAAS;IACd,QAAQ,CAAS;IACjB,UAAU,CAAgC;IAC1C,gBAAgB,CAAU;IACnC,SAAS,GAA4B,IAAI,CAAC;IAC1C,WAAW,GAAqC,IAAI,CAAC;IAE7D,YAAY,OAAuB,EAAE;QACnC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"bundled.js","sourceRoot":"","sources":["../src/bundled.ts"],"names":[],"mappings":"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"}
|