@mmnto/totem 1.108.0 → 1.110.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/config-schema.d.ts +22 -0
- package/dist/config-schema.d.ts.map +1 -1
- package/dist/config-schema.js +6 -0
- package/dist/config-schema.js.map +1 -1
- package/dist/config-schema.test.js +21 -0
- package/dist/config-schema.test.js.map +1 -1
- package/dist/embedders/embedder.d.ts +29 -0
- package/dist/embedders/embedder.d.ts.map +1 -1
- package/dist/embedders/embedder.js +26 -3
- package/dist/embedders/embedder.js.map +1 -1
- package/dist/embedders/embedder.test.js +51 -0
- package/dist/embedders/embedder.test.js.map +1 -1
- package/dist/embedders/gemini-embedder.d.ts +18 -1
- package/dist/embedders/gemini-embedder.d.ts.map +1 -1
- package/dist/embedders/gemini-embedder.js +98 -5
- package/dist/embedders/gemini-embedder.js.map +1 -1
- package/dist/embedders/gemini-embedder.test.js +153 -1
- package/dist/embedders/gemini-embedder.test.js.map +1 -1
- package/dist/embedders/openai-embedder.d.ts +2 -1
- package/dist/embedders/openai-embedder.d.ts.map +1 -1
- package/dist/embedders/openai-embedder.js +21 -4
- package/dist/embedders/openai-embedder.js.map +1 -1
- package/dist/embedders/openai-embedder.test.d.ts +2 -0
- package/dist/embedders/openai-embedder.test.d.ts.map +1 -0
- package/dist/embedders/openai-embedder.test.js +102 -0
- package/dist/embedders/openai-embedder.test.js.map +1 -0
- package/dist/embedders/pacing.d.ts +11 -0
- package/dist/embedders/pacing.d.ts.map +1 -0
- package/dist/embedders/pacing.js +23 -0
- package/dist/embedders/pacing.js.map +1 -0
- package/dist/embedders/pacing.test.d.ts +2 -0
- package/dist/embedders/pacing.test.d.ts.map +1 -0
- package/dist/embedders/pacing.test.js +50 -0
- package/dist/embedders/pacing.test.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/ingest/file-resolver.d.ts +14 -0
- package/dist/ingest/file-resolver.d.ts.map +1 -1
- package/dist/ingest/file-resolver.js +27 -9
- package/dist/ingest/file-resolver.js.map +1 -1
- package/dist/ingest/pipeline.d.ts +9 -0
- package/dist/ingest/pipeline.d.ts.map +1 -1
- package/dist/ingest/pipeline.js +315 -29
- package/dist/ingest/pipeline.js.map +1 -1
- package/dist/ingest/pipeline.test.js +397 -0
- package/dist/ingest/pipeline.test.js.map +1 -1
- package/dist/ingest/sync.d.ts +2 -2
- package/dist/ingest/sync.d.ts.map +1 -1
- package/dist/ingest/sync.js +2 -2
- package/dist/ingest/sync.js.map +1 -1
- package/dist/parity-detect.d.ts +12 -0
- package/dist/parity-detect.d.ts.map +1 -1
- package/dist/parity-detect.js +4 -3
- package/dist/parity-detect.js.map +1 -1
- package/dist/types.d.ts +39 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -53,6 +53,33 @@ describe('createEmbedder', () => {
|
|
|
53
53
|
const embedder = createEmbedder(config);
|
|
54
54
|
expect(embedder.dimensions).toBe(1536);
|
|
55
55
|
});
|
|
56
|
+
it('describeEffective is null before resolution, the configured identity after (#2562)', async () => {
|
|
57
|
+
process.env['OPENAI_API_KEY'] = 'test-key';
|
|
58
|
+
const config = { provider: 'openai', model: 'text-embedding-3-small' };
|
|
59
|
+
const embedder = createEmbedder(config);
|
|
60
|
+
expect(embedder.describeEffective?.()).toBeNull();
|
|
61
|
+
await embedder.embed(['x']); // resolves the mocked OpenAIEmbedder
|
|
62
|
+
expect(embedder.describeEffective?.()).toEqual({
|
|
63
|
+
provider: 'openai',
|
|
64
|
+
model: 'text-embedding-3-small',
|
|
65
|
+
dimensions: 1536,
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
it('resolveEffective() forces resolution ahead of any embed (#2569 bot round)', async () => {
|
|
69
|
+
process.env['OPENAI_API_KEY'] = 'test-key';
|
|
70
|
+
const config = { provider: 'openai', model: 'text-embedding-3-small' };
|
|
71
|
+
const embedder = createEmbedder(config);
|
|
72
|
+
// No embed() has run — the resume gate calls this to learn the identity
|
|
73
|
+
// that WILL serve the run before trusting checkpointed progress.
|
|
74
|
+
expect(embedder.describeEffective?.()).toBeNull();
|
|
75
|
+
const effective = await embedder.resolveEffective?.();
|
|
76
|
+
expect(effective).toEqual({
|
|
77
|
+
provider: 'openai',
|
|
78
|
+
model: 'text-embedding-3-small',
|
|
79
|
+
dimensions: 1536,
|
|
80
|
+
});
|
|
81
|
+
expect(embedder.describeEffective?.()).toEqual(effective);
|
|
82
|
+
});
|
|
56
83
|
});
|
|
57
84
|
describe('LazyEmbedder concurrency', () => {
|
|
58
85
|
let originalApiKey;
|
|
@@ -174,6 +201,30 @@ describe('LazyEmbedder fallback chain — regression contract (mmnto-ai/totem#18
|
|
|
174
201
|
const allWarns = warns.join('\n');
|
|
175
202
|
expect(allWarns).toContain('Falling back to Ollama');
|
|
176
203
|
expect(allWarns).toContain('Using Ollama fallback embedder');
|
|
204
|
+
// #2562: consumers that persist an embedder fingerprint (the full-sync
|
|
205
|
+
// checkpoint) must see the EFFECTIVE post-fallback identity, not the
|
|
206
|
+
// configured one — or a resume would mix vector spaces.
|
|
207
|
+
expect(embedder.describeEffective?.()).toEqual({
|
|
208
|
+
provider: 'ollama',
|
|
209
|
+
model: 'nomic-embed-text',
|
|
210
|
+
dimensions: 768,
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
it('resolveEffective() reports the Ollama fallback identity without any embed (#2569 bot round)', async () => {
|
|
214
|
+
vi.spyOn(globalThis, 'fetch').mockResolvedValue(new Response(JSON.stringify({ models: [{ name: 'nomic-embed-text' }] }), {
|
|
215
|
+
status: 200,
|
|
216
|
+
headers: { 'content-type': 'application/json' },
|
|
217
|
+
}));
|
|
218
|
+
const config = { provider: 'gemini', model: 'gemini-embedding-2-preview' };
|
|
219
|
+
const embedder = createEmbedder(config, () => { });
|
|
220
|
+
// Forced resolution takes the fallback branch (SDK mocked absent) and
|
|
221
|
+
// reports the identity that would actually serve embeds — no embed runs.
|
|
222
|
+
const effective = await embedder.resolveEffective?.();
|
|
223
|
+
expect(effective).toEqual({
|
|
224
|
+
provider: 'ollama',
|
|
225
|
+
model: 'nomic-embed-text',
|
|
226
|
+
dimensions: 768,
|
|
227
|
+
});
|
|
177
228
|
});
|
|
178
229
|
// mmnto-ai/totem#1859: the SDK-missing trigger (distinct from missing-key above).
|
|
179
230
|
// The API key IS present, so GeminiEmbedder constructs cleanly; only the mocked-
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedder.test.js","sourceRoot":"","sources":["../../src/embedders/embedder.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"embedder.test.js","sourceRoot":"","sources":["../../src/embedders/embedder.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,20 @@
|
|
|
1
1
|
import type { Embedder } from './embedder.js';
|
|
2
|
+
/**
|
|
3
|
+
* Quota-class failure (429 / RESOURCE_EXHAUSTED): the one retryable class
|
|
4
|
+
* where "check your API key and network" is the WRONG recovery hint
|
|
5
|
+
* (mmnto-ai/totem#2562) — the key works; the per-minute allowance is spent.
|
|
6
|
+
*/
|
|
7
|
+
export declare function isQuotaError(err: unknown): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Extract a server-advised retry delay from a Gemini SDK error, if present.
|
|
10
|
+
* 429s carry google.rpc.RetryInfo either as a structured `errorDetails` entry
|
|
11
|
+
* (`retryDelay: "18s"`) or embedded in the message JSON. Against a per-minute
|
|
12
|
+
* quota this is the difference between the retry budget being real and being
|
|
13
|
+
* decorative — 1–4s exponential backoff never outlives the window. Capped at
|
|
14
|
+
* MAX_SERVER_RETRY_DELAY_MS; returns null when absent (caller falls back to
|
|
15
|
+
* exponential backoff).
|
|
16
|
+
*/
|
|
17
|
+
export declare function extractRetryDelayMs(err: unknown): number | null;
|
|
2
18
|
/** Minimal interface for the subset of @google/genai SDK we use. */
|
|
3
19
|
interface GeminiAI {
|
|
4
20
|
models: {
|
|
@@ -37,7 +53,8 @@ export declare class GeminiEmbedder implements Embedder {
|
|
|
37
53
|
readonly dimensions: number;
|
|
38
54
|
private model;
|
|
39
55
|
private apiKey;
|
|
40
|
-
|
|
56
|
+
private pace;
|
|
57
|
+
constructor(model?: string, dimensions?: number, throttleMs?: number);
|
|
41
58
|
embed(texts: string[]): Promise<number[][]>;
|
|
42
59
|
private embedWithRetry;
|
|
43
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-embedder.d.ts","sourceRoot":"","sources":["../../src/embedders/gemini-embedder.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"gemini-embedder.d.ts","sourceRoot":"","sources":["../../src/embedders/gemini-embedder.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AA4C9C;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAKlD;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAgB/D;AAED,oEAAoE;AACpE,UAAU,QAAQ;IAChB,MAAM,EAAE;QACN,YAAY,CAAC,GAAG,EAAE;YAChB,KAAK,EAAE,MAAM,CAAC;YACd,QAAQ,EAAE;gBAAE,KAAK,EAAE;oBAAE,IAAI,EAAE,MAAM,CAAA;iBAAE,EAAE,CAAA;aAAE,EAAE,CAAC;YAC1C,MAAM,EAAE;gBAAE,QAAQ,EAAE,MAAM,CAAC;gBAAC,oBAAoB,EAAE,MAAM,CAAA;aAAE,CAAC;SAC5D,GAAG,OAAO,CAAC;YACV,UAAU,CAAC,EAAE;gBAAE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;aAAE,EAAE,CAAC;SACtC,CAAC,CAAC;KACJ,CAAC;CACH;AAED;;;GAGG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAC/C,WAAW,EAAE,KAAK,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,QAAQ,CAAC;CACzD,CAAC,CAmBD;AAED;;;GAGG;AACH,qBAAa,cAAe,YAAW,QAAQ;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAAsB;gBAGhC,KAAK,GAAE,MAAsB,EAC7B,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,GAAE,MAA4B;IAkBpC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YA0BnC,cAAc;CA0E7B"}
|
|
@@ -1,10 +1,26 @@
|
|
|
1
1
|
import { TotemConfigError, TotemError } from '../errors.js';
|
|
2
2
|
import { buildMissingSdkHint } from '../missing-sdk.js';
|
|
3
|
+
import { createRequestPacer } from './pacing.js';
|
|
3
4
|
const DEFAULT_DIMENSIONS = 768;
|
|
4
5
|
const DEFAULT_MODEL = 'gemini-embedding-2-preview';
|
|
5
6
|
const MAX_BATCH_SIZE = 100; // Gemini supports up to 100 texts per batch
|
|
6
7
|
const MAX_RETRIES = 3;
|
|
7
8
|
const INITIAL_BACKOFF_MS = 1000;
|
|
9
|
+
// Cap on a server-advised retry delay — a pathological RetryInfo hint must not
|
|
10
|
+
// stall the run; bounds worst-case retry wall-clock at ~MAX_RETRIES minutes.
|
|
11
|
+
const MAX_SERVER_RETRY_DELAY_MS = 60_000;
|
|
12
|
+
// The Vertex quota that kills unthrottled syncs is a PER-MINUTE window
|
|
13
|
+
// (ground-read 2026-08-03, mmnto-ai/totem#2562: online_prediction_requests_
|
|
14
|
+
// per_base_model = 2,000/min default for gemini-embedding-2, accounting
|
|
15
|
+
// consistent with per-content-item). Derived default pacing: 100-item batches
|
|
16
|
+
// every 4s = 1,500 items/min — under the window with margin. A run that never
|
|
17
|
+
// throttles converges on a corpus of ANY size in corpus/1500 minutes instead
|
|
18
|
+
// of dying at ~2k. Explicit `throttleMs: 0` disables pacing.
|
|
19
|
+
const DEFAULT_THROTTLE_MS = 4_000;
|
|
20
|
+
// Quota retries without a server-advised delay must back off PAST the minute
|
|
21
|
+
// boundary — 1–4s backoff burns the whole retry budget inside the same closed
|
|
22
|
+
// window that produced the 429.
|
|
23
|
+
const QUOTA_WINDOW_BACKOFF_MS = 60_000;
|
|
8
24
|
/** Status codes / error names that are safe to retry. */
|
|
9
25
|
const RETRYABLE_STATUS_CODES = new Set([429, 503]);
|
|
10
26
|
const RETRYABLE_ERROR_NAMES = new Set(['RESOURCE_EXHAUSTED', 'UNAVAILABLE', 'TOO_MANY_REQUESTS']);
|
|
@@ -24,6 +40,49 @@ function isRetryableGeminiError(err) {
|
|
|
24
40
|
}
|
|
25
41
|
return false;
|
|
26
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Quota-class failure (429 / RESOURCE_EXHAUSTED): the one retryable class
|
|
45
|
+
* where "check your API key and network" is the WRONG recovery hint
|
|
46
|
+
* (mmnto-ai/totem#2562) — the key works; the per-minute allowance is spent.
|
|
47
|
+
*/
|
|
48
|
+
export function isQuotaError(err) {
|
|
49
|
+
if (!(err instanceof Error))
|
|
50
|
+
return false;
|
|
51
|
+
const errObj = err;
|
|
52
|
+
if (errObj['status'] === 429 || errObj['code'] === 429)
|
|
53
|
+
return true;
|
|
54
|
+
return /RESOURCE_EXHAUSTED|TOO_MANY_REQUESTS/.test(`${String(errObj['name'])} ${err.message}`);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Extract a server-advised retry delay from a Gemini SDK error, if present.
|
|
58
|
+
* 429s carry google.rpc.RetryInfo either as a structured `errorDetails` entry
|
|
59
|
+
* (`retryDelay: "18s"`) or embedded in the message JSON. Against a per-minute
|
|
60
|
+
* quota this is the difference between the retry budget being real and being
|
|
61
|
+
* decorative — 1–4s exponential backoff never outlives the window. Capped at
|
|
62
|
+
* MAX_SERVER_RETRY_DELAY_MS; returns null when absent (caller falls back to
|
|
63
|
+
* exponential backoff).
|
|
64
|
+
*/
|
|
65
|
+
export function extractRetryDelayMs(err) {
|
|
66
|
+
if (!(err instanceof Error))
|
|
67
|
+
return null;
|
|
68
|
+
const details = err['errorDetails'];
|
|
69
|
+
if (Array.isArray(details)) {
|
|
70
|
+
for (const entry of details) {
|
|
71
|
+
if (entry === null || typeof entry !== 'object')
|
|
72
|
+
continue;
|
|
73
|
+
const delay = entry['retryDelay'];
|
|
74
|
+
if (typeof delay === 'string') {
|
|
75
|
+
const seconds = delay.match(/^(\d+(?:\.\d+)?)s$/);
|
|
76
|
+
if (seconds)
|
|
77
|
+
return Math.min(Number(seconds[1]) * 1000, MAX_SERVER_RETRY_DELAY_MS);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
const inMessage = err.message.match(/["']?retryDelay["']?\s*:\s*["'](\d+(?:\.\d+)?)s["']/);
|
|
82
|
+
if (inMessage)
|
|
83
|
+
return Math.min(Number(inMessage[1]) * 1000, MAX_SERVER_RETRY_DELAY_MS);
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
27
86
|
/**
|
|
28
87
|
* Dynamically import the @google/genai SDK.
|
|
29
88
|
* It's an optional peer dep in @mmnto/totem — only required when provider is 'gemini'.
|
|
@@ -52,9 +111,11 @@ export class GeminiEmbedder {
|
|
|
52
111
|
dimensions;
|
|
53
112
|
model;
|
|
54
113
|
apiKey;
|
|
55
|
-
|
|
114
|
+
pace;
|
|
115
|
+
constructor(model = DEFAULT_MODEL, dimensions, throttleMs = DEFAULT_THROTTLE_MS) {
|
|
56
116
|
this.model = model;
|
|
57
117
|
this.dimensions = dimensions ?? DEFAULT_DIMENSIONS;
|
|
118
|
+
this.pace = createRequestPacer(throttleMs);
|
|
58
119
|
const apiKey = process.env['GEMINI_API_KEY'] ?? process.env['GOOGLE_API_KEY'];
|
|
59
120
|
if (!apiKey) {
|
|
60
121
|
throw new TotemConfigError('No Gemini API key found.', 'Set GEMINI_API_KEY (or GOOGLE_API_KEY) in your .env file.', 'CONFIG_MISSING');
|
|
@@ -66,18 +127,30 @@ export class GeminiEmbedder {
|
|
|
66
127
|
return [];
|
|
67
128
|
const { GoogleGenAI } = await importGeminiSdk();
|
|
68
129
|
const ai = new GoogleGenAI({ apiKey: this.apiKey });
|
|
130
|
+
// Pace only multi-text (ingest-shaped) calls (falsification round 3,
|
|
131
|
+
// MAJOR 3): sync flushes arrive as multi-text batches and are what burns
|
|
132
|
+
// the per-minute window. Single-text calls stay unpaced — queries
|
|
133
|
+
// (search / MCP retrieval, whose embedder is process-lifetime cached) and
|
|
134
|
+
// the per-candidate semantic-dedup probes, both of which are
|
|
135
|
+
// sequential-RTT-bound far below the window; pacing them would tax every
|
|
136
|
+
// interactive lookup for quota they cannot meaningfully consume.
|
|
137
|
+
const paceThisCall = texts.length > 1;
|
|
69
138
|
const results = [];
|
|
70
139
|
for (let i = 0; i < texts.length; i += MAX_BATCH_SIZE) {
|
|
71
140
|
const batch = texts.slice(i, i + MAX_BATCH_SIZE);
|
|
72
|
-
const embeddings = await this.embedWithRetry(ai, batch);
|
|
141
|
+
const embeddings = await this.embedWithRetry(ai, batch, paceThisCall);
|
|
73
142
|
results.push(...embeddings);
|
|
74
143
|
}
|
|
75
144
|
return results;
|
|
76
145
|
}
|
|
77
|
-
async embedWithRetry(ai, batch) {
|
|
146
|
+
async embedWithRetry(ai, batch, paceThisCall) {
|
|
78
147
|
let lastErr;
|
|
79
148
|
for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
|
|
80
149
|
try {
|
|
150
|
+
// Pace every attempt (mmnto-ai/totem#2562): the throttle exists for
|
|
151
|
+
// per-minute quotas, and retries count against them like any request.
|
|
152
|
+
if (paceThisCall)
|
|
153
|
+
await this.pace();
|
|
81
154
|
const response = await ai.models.embedContent({
|
|
82
155
|
model: this.model,
|
|
83
156
|
contents: batch.map((text) => ({ parts: [{ text }] })),
|
|
@@ -94,17 +167,37 @@ export class GeminiEmbedder {
|
|
|
94
167
|
throw new TotemError('EMBEDDING_UNAVAILABLE', 'Embedding response missing values', 'This may be a transient Gemini API issue. Retry with `totem sync`.');
|
|
95
168
|
return e.values;
|
|
96
169
|
});
|
|
170
|
+
// totem-context: intentional capture — the retry loop stores the error and EVERY exit path rethrows it as the terminal TotemError below (mmnto-ai/totem#2562); nothing is swallowed.
|
|
97
171
|
}
|
|
98
172
|
catch (err) {
|
|
99
173
|
lastErr = err;
|
|
100
174
|
if (!isRetryableGeminiError(err) || attempt === MAX_RETRIES)
|
|
101
175
|
break;
|
|
102
|
-
|
|
176
|
+
// Delay selection (mmnto-ai/totem#2562, falsification round 2 F4 +
|
|
177
|
+
// the per-minute ground-read): a server-advised RetryInfo delay wins
|
|
178
|
+
// when it is LONGER than the exponential backoff (never shorter — a
|
|
179
|
+
// "0s"/"0.001s" advisory must not collapse the budget into a burst);
|
|
180
|
+
// a quota 429 with NO advisory waits out the minute window instead of
|
|
181
|
+
// burning all retries inside the window that produced it.
|
|
182
|
+
const backoff = INITIAL_BACKOFF_MS * 2 ** attempt + Math.random() * 1000;
|
|
183
|
+
const advised = extractRetryDelayMs(err);
|
|
184
|
+
const delay = advised !== null
|
|
185
|
+
? Math.max(advised, backoff)
|
|
186
|
+
: isQuotaError(err)
|
|
187
|
+
? Math.max(backoff, QUOTA_WINDOW_BACKOFF_MS)
|
|
188
|
+
: backoff;
|
|
103
189
|
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
104
190
|
}
|
|
105
191
|
}
|
|
106
192
|
const detail = lastErr instanceof Error ? lastErr.message : String(lastErr);
|
|
107
|
-
|
|
193
|
+
// Quota exhaustion gets its own recovery hint (mmnto-ai/totem#2562): the
|
|
194
|
+
// key-and-network hint is actively wrong there, and since #2562 a plain
|
|
195
|
+
// `totem sync` after an interrupted full re-index RESUMES from the
|
|
196
|
+
// checkpoint — that recovery is now true, so name it.
|
|
197
|
+
const hint = isQuotaError(lastErr)
|
|
198
|
+
? 'Embedding quota exhausted (e.g. per-minute request quota). Re-run `totem sync` — an interrupted full re-index resumes from its checkpoint instead of restarting. To stay under per-minute quotas, set `embedding.throttleMs` in totem.config.ts to pace requests.'
|
|
199
|
+
: 'Check your GEMINI_API_KEY and network connection, then retry with `totem sync`.';
|
|
200
|
+
throw new TotemError('EMBEDDING_UNAVAILABLE', `Gemini embedding failed after ${MAX_RETRIES + 1} attempts: ${detail}`, hint);
|
|
108
201
|
}
|
|
109
202
|
}
|
|
110
203
|
//# sourceMappingURL=gemini-embedder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-embedder.js","sourceRoot":"","sources":["../../src/embedders/gemini-embedder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"gemini-embedder.js","sourceRoot":"","sources":["../../src/embedders/gemini-embedder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
2
2
|
import { TotemConfigError, TotemError } from '../errors.js';
|
|
3
|
-
import { GeminiEmbedder } from './gemini-embedder.js';
|
|
3
|
+
import { extractRetryDelayMs, GeminiEmbedder, isQuotaError } from './gemini-embedder.js';
|
|
4
4
|
// ─── Mock the @google/genai SDK ───────────────────────
|
|
5
5
|
const mockEmbedContent = vi.fn();
|
|
6
6
|
vi.mock('@google/genai', () => ({
|
|
@@ -17,6 +17,16 @@ function embedResponse(count, dims = 768) {
|
|
|
17
17
|
})),
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
|
+
/** Capture every setTimeout delay while resolving waits immediately (mirrors pacing.test.ts). */
|
|
21
|
+
function captureDelays() {
|
|
22
|
+
const delays = [];
|
|
23
|
+
vi.spyOn(globalThis, 'setTimeout').mockImplementation(((fn, ms) => {
|
|
24
|
+
delays.push(ms);
|
|
25
|
+
fn();
|
|
26
|
+
return 0;
|
|
27
|
+
}));
|
|
28
|
+
return delays;
|
|
29
|
+
}
|
|
20
30
|
// ─── Tests ────────────────────────────────────────────
|
|
21
31
|
describe('GeminiEmbedder', () => {
|
|
22
32
|
beforeEach(() => {
|
|
@@ -154,5 +164,147 @@ describe('GeminiEmbedder', () => {
|
|
|
154
164
|
await embedder.embed(['test']);
|
|
155
165
|
expect(mockEmbedContent.mock.calls[0][0].model).toBe('custom-model');
|
|
156
166
|
});
|
|
167
|
+
// ─── Quota recovery hint (#2562) ───────────────────
|
|
168
|
+
it('terminal 429 failure carries the quota hint naming resume and throttleMs', async () => {
|
|
169
|
+
const rateLimitErr = Object.assign(new Error('rate limited'), { status: 429 });
|
|
170
|
+
mockEmbedContent.mockRejectedValue(rateLimitErr);
|
|
171
|
+
const embedder = new GeminiEmbedder();
|
|
172
|
+
await expect(embedder.embed(['test'])).rejects.toMatchObject({
|
|
173
|
+
recoveryHint: expect.stringMatching(/resumes from its checkpoint.*throttleMs/s),
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
it('terminal non-quota failure keeps the key-and-network hint', async () => {
|
|
177
|
+
const badErr = Object.assign(new Error('service unavailable'), { status: 503 });
|
|
178
|
+
mockEmbedContent.mockRejectedValue(badErr);
|
|
179
|
+
const embedder = new GeminiEmbedder();
|
|
180
|
+
await expect(embedder.embed(['test'])).rejects.toMatchObject({
|
|
181
|
+
recoveryHint: expect.stringContaining('GEMINI_API_KEY'),
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
// ─── Server-advised retry delay (#2562) ────────────
|
|
185
|
+
it('waits the server-advised retryDelay instead of exponential backoff on 429', async () => {
|
|
186
|
+
const delays = captureDelays();
|
|
187
|
+
const quotaErr = Object.assign(new Error('rate limited'), {
|
|
188
|
+
status: 429,
|
|
189
|
+
errorDetails: [{ '@type': 'type.googleapis.com/google.rpc.RetryInfo', retryDelay: '18s' }],
|
|
190
|
+
});
|
|
191
|
+
mockEmbedContent.mockRejectedValueOnce(quotaErr).mockResolvedValueOnce(embedResponse(1));
|
|
192
|
+
const embedder = new GeminiEmbedder(undefined, undefined, 0);
|
|
193
|
+
await embedder.embed(['test']);
|
|
194
|
+
expect(delays).toContain(18_000);
|
|
195
|
+
});
|
|
196
|
+
it.each(['0s', '0.5s'])('a sub-backoff server advisory ("%s") never undercuts the exponential floor', async (advisory) => {
|
|
197
|
+
const delays = captureDelays();
|
|
198
|
+
const quotaErr = Object.assign(new Error('rate limited'), {
|
|
199
|
+
status: 429,
|
|
200
|
+
errorDetails: [{ retryDelay: advisory }],
|
|
201
|
+
});
|
|
202
|
+
mockEmbedContent.mockRejectedValueOnce(quotaErr).mockResolvedValueOnce(embedResponse(1));
|
|
203
|
+
const embedder = new GeminiEmbedder(undefined, undefined, 0);
|
|
204
|
+
await embedder.embed(['test']);
|
|
205
|
+
expect(delays).toHaveLength(1);
|
|
206
|
+
expect(delays[0]).toBeGreaterThanOrEqual(1000); // INITIAL_BACKOFF_MS floor
|
|
207
|
+
});
|
|
208
|
+
it('a quota 429 with NO advisory backs off past the minute window', async () => {
|
|
209
|
+
const delays = captureDelays();
|
|
210
|
+
const quotaErr = Object.assign(new Error('quota exceeded RESOURCE_EXHAUSTED'), { status: 429 });
|
|
211
|
+
mockEmbedContent.mockRejectedValueOnce(quotaErr).mockResolvedValueOnce(embedResponse(1));
|
|
212
|
+
const embedder = new GeminiEmbedder(undefined, undefined, 0);
|
|
213
|
+
await embedder.embed(['test']);
|
|
214
|
+
// The 2,000/min quota is a rolling 60s window — fast retries die inside
|
|
215
|
+
// the window that produced the 429 (ground-read 2026-08-03).
|
|
216
|
+
expect(delays.some((d) => d !== undefined && d >= 60_000)).toBe(true);
|
|
217
|
+
});
|
|
218
|
+
// ─── Request pacing (#2562) ────────────────────────
|
|
219
|
+
it('throttleMs paces successive ingest-shaped calls; explicit 0 disables pacing', async () => {
|
|
220
|
+
const delays = captureDelays();
|
|
221
|
+
mockEmbedContent.mockResolvedValue(embedResponse(2));
|
|
222
|
+
const unpaced = new GeminiEmbedder(undefined, undefined, 0);
|
|
223
|
+
await unpaced.embed(['a', 'b']);
|
|
224
|
+
await unpaced.embed(['c', 'd']);
|
|
225
|
+
expect(delays).toHaveLength(0);
|
|
226
|
+
const paced = new GeminiEmbedder(undefined, undefined, 5_000);
|
|
227
|
+
await paced.embed(['a', 'b']);
|
|
228
|
+
await paced.embed(['c', 'd']); // within 5s of the first call — must wait
|
|
229
|
+
expect(delays.length).toBeGreaterThanOrEqual(1);
|
|
230
|
+
const wait = delays[delays.length - 1];
|
|
231
|
+
expect(wait).toBeGreaterThan(0);
|
|
232
|
+
expect(wait).toBeLessThanOrEqual(5_000);
|
|
233
|
+
});
|
|
234
|
+
it('pacing defaults ON at the derived per-minute-window constant (#2562 ground-read)', async () => {
|
|
235
|
+
const delays = captureDelays();
|
|
236
|
+
mockEmbedContent.mockResolvedValue(embedResponse(2));
|
|
237
|
+
// No throttleMs given — the gemini default (4s between batches ≈ 1,500
|
|
238
|
+
// items/min at 100-item batches) must pace the second ingest-shaped call
|
|
239
|
+
// at close to the full constant (the magnitude IS the convergence claim).
|
|
240
|
+
const embedder = new GeminiEmbedder();
|
|
241
|
+
await embedder.embed(['a', 'b']);
|
|
242
|
+
await embedder.embed(['c', 'd']);
|
|
243
|
+
expect(delays.length).toBeGreaterThanOrEqual(1);
|
|
244
|
+
const wait = delays[delays.length - 1];
|
|
245
|
+
expect(wait).toBeGreaterThan(3_900);
|
|
246
|
+
expect(wait).toBeLessThanOrEqual(4_000);
|
|
247
|
+
});
|
|
248
|
+
it('single-text (query-shaped) calls are never paced, even at the default throttle (#2562 round 3)', async () => {
|
|
249
|
+
const delays = captureDelays();
|
|
250
|
+
mockEmbedContent.mockResolvedValue(embedResponse(1));
|
|
251
|
+
// A process-lifetime embedder (the MCP server) serves sequential search
|
|
252
|
+
// queries — pacing those would tax every interactive lookup.
|
|
253
|
+
const embedder = new GeminiEmbedder();
|
|
254
|
+
await embedder.embed(['query one']);
|
|
255
|
+
await embedder.embed(['query two']);
|
|
256
|
+
await embedder.embed(['query three']);
|
|
257
|
+
expect(delays).toHaveLength(0);
|
|
258
|
+
});
|
|
259
|
+
});
|
|
260
|
+
// ─── Quota-error classification (#2562) ──────────────
|
|
261
|
+
describe('isQuotaError', () => {
|
|
262
|
+
it.each([
|
|
263
|
+
['status 429', Object.assign(new Error('x'), { status: 429 }), true],
|
|
264
|
+
['code 429', Object.assign(new Error('x'), { code: 429 }), true],
|
|
265
|
+
['RESOURCE_EXHAUSTED in message', new Error('got RESOURCE_EXHAUSTED from upstream'), true],
|
|
266
|
+
[
|
|
267
|
+
'RESOURCE_EXHAUSTED name',
|
|
268
|
+
Object.assign(new Error('x'), { name: 'RESOURCE_EXHAUSTED' }),
|
|
269
|
+
true,
|
|
270
|
+
],
|
|
271
|
+
['503 unavailable', Object.assign(new Error('unavailable'), { status: 503 }), false],
|
|
272
|
+
['401 auth', Object.assign(new Error('unauthorized'), { status: 401 }), false],
|
|
273
|
+
['non-error', 'RESOURCE_EXHAUSTED', false],
|
|
274
|
+
])('%s', (_label, err, expected) => {
|
|
275
|
+
expect(isQuotaError(err)).toBe(expected);
|
|
276
|
+
});
|
|
277
|
+
});
|
|
278
|
+
// ─── RetryInfo extraction (#2562) ────────────────────
|
|
279
|
+
describe('extractRetryDelayMs', () => {
|
|
280
|
+
it('reads a structured errorDetails RetryInfo entry', () => {
|
|
281
|
+
const err = Object.assign(new Error('quota'), {
|
|
282
|
+
errorDetails: [
|
|
283
|
+
{ '@type': 'type.googleapis.com/google.rpc.BadRequest' },
|
|
284
|
+
{ '@type': 'type.googleapis.com/google.rpc.RetryInfo', retryDelay: '18s' },
|
|
285
|
+
],
|
|
286
|
+
});
|
|
287
|
+
expect(extractRetryDelayMs(err)).toBe(18_000);
|
|
288
|
+
});
|
|
289
|
+
it('falls back to a retryDelay embedded in the message JSON', () => {
|
|
290
|
+
const err = new Error('429 {"error":{"details":[{"retryDelay":"7s"}]}}');
|
|
291
|
+
expect(extractRetryDelayMs(err)).toBe(7_000);
|
|
292
|
+
});
|
|
293
|
+
it('supports fractional seconds', () => {
|
|
294
|
+
const err = Object.assign(new Error('quota'), {
|
|
295
|
+
errorDetails: [{ retryDelay: '2.5s' }],
|
|
296
|
+
});
|
|
297
|
+
expect(extractRetryDelayMs(err)).toBe(2_500);
|
|
298
|
+
});
|
|
299
|
+
it('caps a pathological delay at 60s', () => {
|
|
300
|
+
const err = Object.assign(new Error('quota'), {
|
|
301
|
+
errorDetails: [{ retryDelay: '3600s' }],
|
|
302
|
+
});
|
|
303
|
+
expect(extractRetryDelayMs(err)).toBe(60_000);
|
|
304
|
+
});
|
|
305
|
+
it('returns null when no delay is present (caller uses exponential backoff)', () => {
|
|
306
|
+
expect(extractRetryDelayMs(new Error('plain rate limited'))).toBeNull();
|
|
307
|
+
expect(extractRetryDelayMs('not an error')).toBeNull();
|
|
308
|
+
});
|
|
157
309
|
});
|
|
158
310
|
//# sourceMappingURL=gemini-embedder.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-embedder.test.js","sourceRoot":"","sources":["../../src/embedders/gemini-embedder.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gemini-embedder.test.js","sourceRoot":"","sources":["../../src/embedders/gemini-embedder.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,8 @@ export declare class OpenAIEmbedder implements Embedder {
|
|
|
3
3
|
readonly dimensions: number;
|
|
4
4
|
private client;
|
|
5
5
|
private model;
|
|
6
|
-
|
|
6
|
+
private pace;
|
|
7
|
+
constructor(model?: string, dimensions?: number, throttleMs?: number);
|
|
7
8
|
embed(texts: string[]): Promise<number[][]>;
|
|
8
9
|
private embedWithRetry;
|
|
9
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-embedder.d.ts","sourceRoot":"","sources":["../../src/embedders/openai-embedder.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"openai-embedder.d.ts","sourceRoot":"","sources":["../../src/embedders/openai-embedder.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAQ9C,qBAAa,cAAe,YAAW,QAAQ;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,IAAI,CAAsB;gBAGhC,KAAK,GAAE,MAAiC,EACxC,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,GAAE,MAAU;IAkBlB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAuBnC,cAAc;CAqC7B"}
|