@psiclawops/hypermem 0.5.5 → 0.6.2
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 +108 -62
- package/dist/background-indexer.d.ts +18 -0
- package/dist/background-indexer.d.ts.map +1 -1
- package/dist/background-indexer.js +131 -20
- package/dist/cache.d.ts +24 -1
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +77 -3
- package/dist/compositor.d.ts +6 -0
- package/dist/compositor.d.ts.map +1 -1
- package/dist/compositor.js +471 -129
- package/dist/context-backfill.d.ts +46 -0
- package/dist/context-backfill.d.ts.map +1 -0
- package/dist/context-backfill.js +113 -0
- package/dist/context-store.d.ts +77 -0
- package/dist/context-store.d.ts.map +1 -0
- package/dist/context-store.js +177 -0
- package/dist/cross-agent.d.ts +12 -0
- package/dist/cross-agent.d.ts.map +1 -1
- package/dist/cross-agent.js +31 -19
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +8 -0
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -7
- package/dist/knowledge-lint.js +4 -4
- package/dist/message-store.d.ts +31 -2
- package/dist/message-store.d.ts.map +1 -1
- package/dist/message-store.js +131 -17
- package/dist/preference-store.d.ts +1 -1
- package/dist/preference-store.js +1 -1
- package/dist/profiles.d.ts +4 -2
- package/dist/profiles.d.ts.map +1 -1
- package/dist/profiles.js +72 -37
- package/dist/repair-tool-pairs.d.ts.map +1 -1
- package/dist/repair-tool-pairs.js +73 -2
- package/dist/schema.d.ts +1 -1
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +27 -1
- package/dist/seed.d.ts +1 -1
- package/dist/seed.js +1 -1
- package/dist/session-flusher.d.ts +2 -2
- package/dist/session-flusher.js +2 -2
- package/dist/spawn-context.d.ts +1 -1
- package/dist/spawn-context.js +1 -1
- package/dist/topic-synthesizer.d.ts.map +1 -1
- package/dist/topic-synthesizer.js +4 -3
- package/dist/trigger-registry.d.ts +1 -1
- package/dist/trigger-registry.js +4 -4
- package/dist/types.d.ts +74 -32
- package/dist/types.d.ts.map +1 -1
- package/dist/vector-store.d.ts +10 -1
- package/dist/vector-store.d.ts.map +1 -1
- package/dist/vector-store.js +353 -0
- package/dist/version.d.ts +5 -5
- package/dist/version.js +5 -5
- package/package.json +4 -2
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/vector-store.d.ts
CHANGED
|
@@ -19,14 +19,23 @@ export interface EmbeddingConfig {
|
|
|
19
19
|
* Embedding provider. Default: 'ollama'.
|
|
20
20
|
* - 'ollama': local Ollama instance (nomic-embed-text or any pull'd model)
|
|
21
21
|
* - 'openai': OpenAI Embeddings API (text-embedding-3-small / 3-large)
|
|
22
|
+
* - 'gemini': Google Gemini Embedding API (gemini-embedding-2-preview)
|
|
22
23
|
*/
|
|
23
|
-
provider?: 'ollama' | 'openai';
|
|
24
|
+
provider?: 'ollama' | 'openai' | 'gemini';
|
|
24
25
|
/** Ollama base URL. Default: http://localhost:11434 */
|
|
25
26
|
ollamaUrl: string;
|
|
26
27
|
/** OpenAI API key. Required when provider is 'openai'. */
|
|
27
28
|
openaiApiKey?: string;
|
|
28
29
|
/** OpenAI base URL. Default: https://api.openai.com/v1 */
|
|
29
30
|
openaiBaseUrl?: string;
|
|
31
|
+
/** Gemini API key. Alternative to OAuth — passed as ?key= query param. */
|
|
32
|
+
geminiApiKey?: string;
|
|
33
|
+
/** Gemini API base URL. Default: https://generativelanguage.googleapis.com */
|
|
34
|
+
geminiBaseUrl?: string;
|
|
35
|
+
/** Gemini task type for indexing. Default: RETRIEVAL_DOCUMENT */
|
|
36
|
+
geminiIndexTaskType?: string;
|
|
37
|
+
/** Gemini task type for queries. Default: RETRIEVAL_QUERY */
|
|
38
|
+
geminiQueryTaskType?: string;
|
|
30
39
|
/** Embedding model name. Default: nomic-embed-text (ollama) or text-embedding-3-small (openai) */
|
|
31
40
|
model: string;
|
|
32
41
|
/** Embedding dimensions. Default: 768 (ollama/nomic) or 1536 (openai/3-small) */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vector-store.d.ts","sourceRoot":"","sources":["../src/vector-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"vector-store.d.ts","sourceRoot":"","sources":["../src/vector-store.ts"],"names":[],"mappings":"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"}
|
package/dist/vector-store.js
CHANGED
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
* - Batch embedding support for bulk indexing
|
|
15
15
|
*/
|
|
16
16
|
import { createHash } from 'node:crypto';
|
|
17
|
+
import { readFileSync, writeFileSync, existsSync, readdirSync, realpathSync } from 'node:fs';
|
|
18
|
+
import { join, dirname, delimiter } from 'node:path';
|
|
17
19
|
const DEFAULT_EMBEDDING_CONFIG = {
|
|
18
20
|
provider: 'ollama',
|
|
19
21
|
ollamaUrl: 'http://localhost:11434',
|
|
@@ -30,6 +32,13 @@ const OPENAI_DEFAULTS = {
|
|
|
30
32
|
dimensions: 1536,
|
|
31
33
|
batchSize: 128,
|
|
32
34
|
};
|
|
35
|
+
/** Provider-specific defaults applied when provider is 'gemini' and fields are not set. */
|
|
36
|
+
const GEMINI_DEFAULTS = {
|
|
37
|
+
model: 'gemini-embedding-2-preview',
|
|
38
|
+
dimensions: 3072,
|
|
39
|
+
batchSize: 100, // Gemini batch limit
|
|
40
|
+
timeout: 15000,
|
|
41
|
+
};
|
|
33
42
|
const _embeddingCache = new Map();
|
|
34
43
|
/**
|
|
35
44
|
* Insert an entry into the LRU cache, evicting the oldest if over capacity.
|
|
@@ -113,6 +122,338 @@ async function generateOpenAIEmbeddings(texts, config) {
|
|
|
113
122
|
}
|
|
114
123
|
return results;
|
|
115
124
|
}
|
|
125
|
+
let _geminiTokenCache = null;
|
|
126
|
+
/**
|
|
127
|
+
* Extract Gemini CLI OAuth client credentials.
|
|
128
|
+
*
|
|
129
|
+
* Strategy:
|
|
130
|
+
* 1. Check env vars GEMINI_CLI_OAUTH_CLIENT_ID / GEMINI_CLI_OAUTH_CLIENT_SECRET
|
|
131
|
+
* 2. Find the `gemini` binary in PATH, resolve to real path, navigate to oauth2.js,
|
|
132
|
+
* regex out client_id and client_secret.
|
|
133
|
+
*/
|
|
134
|
+
function resolveGeminiCliCredentials() {
|
|
135
|
+
const envId = process.env.GEMINI_CLI_OAUTH_CLIENT_ID;
|
|
136
|
+
const envSecret = process.env.GEMINI_CLI_OAUTH_CLIENT_SECRET;
|
|
137
|
+
if (envId && envSecret) {
|
|
138
|
+
return { clientId: envId, clientSecret: envSecret };
|
|
139
|
+
}
|
|
140
|
+
// Find gemini binary in PATH
|
|
141
|
+
const pathDirs = (process.env.PATH ?? '').split(delimiter);
|
|
142
|
+
let geminiBinPath = null;
|
|
143
|
+
for (const dir of pathDirs) {
|
|
144
|
+
const candidate = join(dir, 'gemini');
|
|
145
|
+
if (existsSync(candidate)) {
|
|
146
|
+
geminiBinPath = candidate;
|
|
147
|
+
break;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
if (!geminiBinPath) {
|
|
151
|
+
console.log('[hypermem-vector] Gemini CLI binary not found in PATH; cannot extract OAuth credentials');
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
try {
|
|
155
|
+
// Resolve symlinks to get actual install location
|
|
156
|
+
const realBin = realpathSync(geminiBinPath);
|
|
157
|
+
// Navigate from bin to the oauth2.js module
|
|
158
|
+
// Typical layout: .../node_modules/.bin/gemini -> ../gemini-cli/bin/gemini.js
|
|
159
|
+
// oauth2.js is at: .../node_modules/gemini-cli/src/oauth2.js or similar
|
|
160
|
+
const binDir = dirname(realBin);
|
|
161
|
+
const packageDir = dirname(binDir); // go up from bin/
|
|
162
|
+
// Search for oauth2.js in common locations
|
|
163
|
+
const candidates = [
|
|
164
|
+
join(packageDir, 'src', 'oauth2.js'),
|
|
165
|
+
join(packageDir, 'dist', 'oauth2.js'),
|
|
166
|
+
join(packageDir, 'lib', 'oauth2.js'),
|
|
167
|
+
join(packageDir, 'oauth2.js'),
|
|
168
|
+
];
|
|
169
|
+
let oauthContent = null;
|
|
170
|
+
for (const c of candidates) {
|
|
171
|
+
if (existsSync(c)) {
|
|
172
|
+
oauthContent = readFileSync(c, 'utf-8');
|
|
173
|
+
break;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
// Also try searching recursively in the package dir for any file containing 'client_id'
|
|
177
|
+
if (!oauthContent) {
|
|
178
|
+
// Try common JS bundle locations — first oauth-named files, then all .js
|
|
179
|
+
const searchDirs = [packageDir];
|
|
180
|
+
for (const searchDir of searchDirs) {
|
|
181
|
+
if (!existsSync(searchDir))
|
|
182
|
+
continue;
|
|
183
|
+
const entries = readdirSync(searchDir, { recursive: true });
|
|
184
|
+
for (const entry of entries) {
|
|
185
|
+
const fullPath = join(searchDir, entry);
|
|
186
|
+
if (typeof entry === 'string' && (entry.endsWith('.js') || entry.endsWith('.mjs')) && entry.includes('oauth')) {
|
|
187
|
+
try {
|
|
188
|
+
oauthContent = readFileSync(fullPath, 'utf-8');
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
catch { /* skip unreadable */ }
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
if (oauthContent)
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
if (!oauthContent) {
|
|
199
|
+
console.log('[hypermem-vector] Could not find oauth2.js in Gemini CLI package');
|
|
200
|
+
}
|
|
201
|
+
// Regex out client_id and client_secret from oauth file
|
|
202
|
+
if (oauthContent) {
|
|
203
|
+
const idMatch = oauthContent.match(/client_id["'\s:=]+["']([^"']+)["']/i);
|
|
204
|
+
const secretMatch = oauthContent.match(/client_secret["'\s:=]+["']([^"']+)["']/i);
|
|
205
|
+
if (idMatch?.[1] && secretMatch?.[1]) {
|
|
206
|
+
return { clientId: idMatch[1], clientSecret: secretMatch[1] };
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
// Fallback: scan all bundle JS files for Google OAuth client_id pattern
|
|
210
|
+
// Bundled CLIs (e.g. @google/gemini-cli) split credentials across chunks
|
|
211
|
+
const bundleDir = join(packageDir, 'bundle');
|
|
212
|
+
if (existsSync(bundleDir)) {
|
|
213
|
+
const googleIdRe = /["']([\d]+-[a-z0-9]+\.apps\.googleusercontent\.com)["']/;
|
|
214
|
+
const clientSecretRe = /client_secret["'\s:=]+["']([^"']+)["']/i;
|
|
215
|
+
// Also match bundled patterns: secret alongside or near client_id
|
|
216
|
+
const inlineSecretRe = /["'](GOCSPX-[^"']+)["']/;
|
|
217
|
+
let foundId = null;
|
|
218
|
+
let foundSecret = null;
|
|
219
|
+
const bundleFiles = readdirSync(bundleDir)
|
|
220
|
+
.filter(f => f.endsWith('.js') || f.endsWith('.mjs'))
|
|
221
|
+
.sort();
|
|
222
|
+
for (const file of bundleFiles) {
|
|
223
|
+
try {
|
|
224
|
+
const content = readFileSync(join(bundleDir, file), 'utf-8');
|
|
225
|
+
if (!foundId) {
|
|
226
|
+
const m = content.match(googleIdRe);
|
|
227
|
+
if (m)
|
|
228
|
+
foundId = m[1];
|
|
229
|
+
}
|
|
230
|
+
if (!foundSecret) {
|
|
231
|
+
const m = content.match(clientSecretRe) || content.match(inlineSecretRe);
|
|
232
|
+
if (m)
|
|
233
|
+
foundSecret = m[1];
|
|
234
|
+
}
|
|
235
|
+
if (foundId && foundSecret)
|
|
236
|
+
break;
|
|
237
|
+
}
|
|
238
|
+
catch { /* skip */ }
|
|
239
|
+
}
|
|
240
|
+
if (foundId && foundSecret) {
|
|
241
|
+
return { clientId: foundId, clientSecret: foundSecret };
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
console.log('[hypermem-vector] Could not extract client_id/client_secret from Gemini CLI');
|
|
245
|
+
return null;
|
|
246
|
+
}
|
|
247
|
+
catch (err) {
|
|
248
|
+
console.log('[hypermem-vector] Error extracting Gemini CLI credentials:', err);
|
|
249
|
+
return null;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Resolve a Gemini OAuth access token from OpenClaw's secrets store.
|
|
254
|
+
*
|
|
255
|
+
* Reads ~/.openclaw/secrets/secrets.json, finds the google-gemini-cli credential,
|
|
256
|
+
* refreshes if expired, and caches in memory.
|
|
257
|
+
*/
|
|
258
|
+
async function resolveGeminiOAuthToken() {
|
|
259
|
+
// Return cached token if still valid (with 60s buffer)
|
|
260
|
+
if (_geminiTokenCache && Date.now() < _geminiTokenCache.expiresAt - 60_000) {
|
|
261
|
+
return _geminiTokenCache.accessToken;
|
|
262
|
+
}
|
|
263
|
+
const secretsPath = join(process.env.HOME ?? '/root', '.openclaw', 'secrets', 'secrets.json');
|
|
264
|
+
if (!existsSync(secretsPath)) {
|
|
265
|
+
console.log('[hypermem-vector] Secrets file not found:', secretsPath);
|
|
266
|
+
return null;
|
|
267
|
+
}
|
|
268
|
+
let secrets;
|
|
269
|
+
try {
|
|
270
|
+
secrets = JSON.parse(readFileSync(secretsPath, 'utf-8'));
|
|
271
|
+
}
|
|
272
|
+
catch (err) {
|
|
273
|
+
console.log('[hypermem-vector] Failed to parse secrets.json:', err);
|
|
274
|
+
return null;
|
|
275
|
+
}
|
|
276
|
+
// Search for google-gemini-cli credential across all agents
|
|
277
|
+
let credential = null;
|
|
278
|
+
let credentialPath = []; // path segments for writing back
|
|
279
|
+
const agents = secrets.agents;
|
|
280
|
+
if (agents && typeof agents === 'object') {
|
|
281
|
+
for (const agentId of Object.keys(agents)) {
|
|
282
|
+
const profiles = agents[agentId]?.['auth-profiles']?.profiles;
|
|
283
|
+
if (!profiles || typeof profiles !== 'object')
|
|
284
|
+
continue;
|
|
285
|
+
for (const profileKey of Object.keys(profiles)) {
|
|
286
|
+
if (profileKey.startsWith('google-gemini-cli:')) {
|
|
287
|
+
credential = profiles[profileKey];
|
|
288
|
+
credentialPath = ['agents', agentId, 'auth-profiles', 'profiles', profileKey];
|
|
289
|
+
break;
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
if (credential)
|
|
293
|
+
break;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
if (!credential) {
|
|
297
|
+
console.log('[hypermem-vector] No google-gemini-cli credential found in secrets.json');
|
|
298
|
+
return null;
|
|
299
|
+
}
|
|
300
|
+
// Check if token is still valid (with 60s buffer)
|
|
301
|
+
if (Date.now() < credential.expires - 60_000) {
|
|
302
|
+
_geminiTokenCache = { accessToken: credential.access, expiresAt: credential.expires };
|
|
303
|
+
return credential.access;
|
|
304
|
+
}
|
|
305
|
+
// Token expired, refresh it
|
|
306
|
+
console.log('[hypermem-vector] Gemini OAuth token expired, refreshing...');
|
|
307
|
+
const cliCreds = resolveGeminiCliCredentials();
|
|
308
|
+
if (!cliCreds) {
|
|
309
|
+
console.log('[hypermem-vector] Cannot refresh: no CLI credentials available. Set GEMINI_CLI_OAUTH_CLIENT_ID and GEMINI_CLI_OAUTH_CLIENT_SECRET env vars.');
|
|
310
|
+
return null;
|
|
311
|
+
}
|
|
312
|
+
try {
|
|
313
|
+
const refreshResponse = await fetch('https://oauth2.googleapis.com/token', {
|
|
314
|
+
method: 'POST',
|
|
315
|
+
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
316
|
+
body: new URLSearchParams({
|
|
317
|
+
client_id: cliCreds.clientId,
|
|
318
|
+
client_secret: cliCreds.clientSecret,
|
|
319
|
+
refresh_token: credential.refresh,
|
|
320
|
+
grant_type: 'refresh_token',
|
|
321
|
+
}),
|
|
322
|
+
});
|
|
323
|
+
if (!refreshResponse.ok) {
|
|
324
|
+
const body = await refreshResponse.text().catch(() => '');
|
|
325
|
+
console.log(`[hypermem-vector] OAuth refresh failed: ${refreshResponse.status} ${refreshResponse.statusText} — ${body}`);
|
|
326
|
+
return null;
|
|
327
|
+
}
|
|
328
|
+
const tokenData = await refreshResponse.json();
|
|
329
|
+
const newExpires = Date.now() + tokenData.expires_in * 1000;
|
|
330
|
+
// Write updated token back to secrets.json
|
|
331
|
+
try {
|
|
332
|
+
// Re-read to avoid clobbering concurrent changes
|
|
333
|
+
const freshSecrets = JSON.parse(readFileSync(secretsPath, 'utf-8'));
|
|
334
|
+
let target = freshSecrets;
|
|
335
|
+
for (let i = 0; i < credentialPath.length - 1; i++) {
|
|
336
|
+
target = target[credentialPath[i]];
|
|
337
|
+
}
|
|
338
|
+
const lastKey = credentialPath[credentialPath.length - 1];
|
|
339
|
+
if (target[lastKey]) {
|
|
340
|
+
target[lastKey].access = tokenData.access_token;
|
|
341
|
+
target[lastKey].expires = newExpires;
|
|
342
|
+
}
|
|
343
|
+
writeFileSync(secretsPath, JSON.stringify(freshSecrets, null, 2), 'utf-8');
|
|
344
|
+
}
|
|
345
|
+
catch (writeErr) {
|
|
346
|
+
console.log('[hypermem-vector] Warning: refreshed token but failed to write back to secrets.json:', writeErr);
|
|
347
|
+
}
|
|
348
|
+
_geminiTokenCache = { accessToken: tokenData.access_token, expiresAt: newExpires };
|
|
349
|
+
return tokenData.access_token;
|
|
350
|
+
}
|
|
351
|
+
catch (err) {
|
|
352
|
+
console.log('[hypermem-vector] OAuth token refresh error:', err);
|
|
353
|
+
return null;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* L2-normalize a vector in place.
|
|
358
|
+
* Gemini pre-normalizes at native dimensions but lower outputDimensionality may not be unit-length.
|
|
359
|
+
*/
|
|
360
|
+
function l2Normalize(vec) {
|
|
361
|
+
let sumSq = 0;
|
|
362
|
+
for (let i = 0; i < vec.length; i++)
|
|
363
|
+
sumSq += vec[i] * vec[i];
|
|
364
|
+
if (sumSq === 0)
|
|
365
|
+
return vec;
|
|
366
|
+
const norm = Math.sqrt(sumSq);
|
|
367
|
+
if (Math.abs(norm - 1.0) < 1e-6)
|
|
368
|
+
return vec; // already unit-length
|
|
369
|
+
for (let i = 0; i < vec.length; i++)
|
|
370
|
+
vec[i] /= norm;
|
|
371
|
+
return vec;
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Generate embeddings via Google Gemini Embedding API.
|
|
375
|
+
* Uses batchEmbedContents endpoint, respects config.batchSize (max 100).
|
|
376
|
+
* Auth: OAuth token from secrets store, or API key via config/env.
|
|
377
|
+
*/
|
|
378
|
+
async function generateGeminiEmbeddings(texts, config, taskType) {
|
|
379
|
+
const baseUrl = config.geminiBaseUrl ?? 'https://generativelanguage.googleapis.com';
|
|
380
|
+
const model = config.model;
|
|
381
|
+
const effectiveTaskType = taskType ?? config.geminiIndexTaskType ?? 'RETRIEVAL_DOCUMENT';
|
|
382
|
+
const results = [];
|
|
383
|
+
// Resolve auth: API key takes precedence (simpler), then OAuth
|
|
384
|
+
const apiKey = config.geminiApiKey ?? process.env.GEMINI_EMBEDDING_API_KEY ?? process.env.GEMINI_API_KEY ?? process.env.GOOGLE_API_KEY ?? null;
|
|
385
|
+
let oauthToken = null;
|
|
386
|
+
if (!apiKey) {
|
|
387
|
+
oauthToken = await resolveGeminiOAuthToken();
|
|
388
|
+
if (!oauthToken) {
|
|
389
|
+
throw new Error('[hypermem] Gemini embedding provider requires authentication. ' +
|
|
390
|
+
'Set geminiApiKey in config, GEMINI_EMBEDDING_API_KEY env var, or configure a google-gemini-cli OAuth credential in OpenClaw secrets.');
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
const effectiveBatchSize = Math.min(config.batchSize, 100); // Gemini hard limit
|
|
394
|
+
for (let i = 0; i < texts.length; i += effectiveBatchSize) {
|
|
395
|
+
const batch = texts.slice(i, i + effectiveBatchSize);
|
|
396
|
+
const requests = batch.map(text => ({
|
|
397
|
+
model: `models/${model}`,
|
|
398
|
+
content: { parts: [{ text }] },
|
|
399
|
+
taskType: effectiveTaskType,
|
|
400
|
+
outputDimensionality: config.dimensions,
|
|
401
|
+
}));
|
|
402
|
+
let url;
|
|
403
|
+
const headers = { 'Content-Type': 'application/json' };
|
|
404
|
+
if (apiKey) {
|
|
405
|
+
url = `${baseUrl}/v1beta/models/${model}:batchEmbedContents?key=${apiKey}`;
|
|
406
|
+
}
|
|
407
|
+
else {
|
|
408
|
+
url = `${baseUrl}/v1beta/models/${model}:batchEmbedContents`;
|
|
409
|
+
headers['Authorization'] = `Bearer ${oauthToken}`;
|
|
410
|
+
}
|
|
411
|
+
const controller = new AbortController();
|
|
412
|
+
const timer = setTimeout(() => controller.abort(), config.timeout);
|
|
413
|
+
let retried = false;
|
|
414
|
+
const doRequest = async () => {
|
|
415
|
+
const response = await fetch(url, {
|
|
416
|
+
method: 'POST',
|
|
417
|
+
headers,
|
|
418
|
+
body: JSON.stringify({ requests }),
|
|
419
|
+
signal: controller.signal,
|
|
420
|
+
});
|
|
421
|
+
if (response.status === 401 && !retried && !apiKey) {
|
|
422
|
+
// OAuth token may have been refreshed by another process; re-resolve once
|
|
423
|
+
retried = true;
|
|
424
|
+
_geminiTokenCache = null; // force re-read
|
|
425
|
+
const freshToken = await resolveGeminiOAuthToken();
|
|
426
|
+
if (freshToken) {
|
|
427
|
+
oauthToken = freshToken;
|
|
428
|
+
headers['Authorization'] = `Bearer ${oauthToken}`;
|
|
429
|
+
return doRequest();
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
if (!response.ok) {
|
|
433
|
+
const body = await response.text().catch(() => '');
|
|
434
|
+
throw new Error(`Gemini embedding failed: ${response.status} ${response.statusText} — ${body}`);
|
|
435
|
+
}
|
|
436
|
+
const data = await response.json();
|
|
437
|
+
for (const item of data.embeddings) {
|
|
438
|
+
if (item.values.length !== config.dimensions) {
|
|
439
|
+
throw new Error(`Gemini embedding dimension mismatch: expected ${config.dimensions}, got ${item.values.length}. ` +
|
|
440
|
+
'If you changed models or dimensions, re-index via hypermem reindex.');
|
|
441
|
+
}
|
|
442
|
+
const vec = new Float32Array(item.values);
|
|
443
|
+
// L2 normalize as safety net for reduced dimensions
|
|
444
|
+
l2Normalize(vec);
|
|
445
|
+
results.push(vec);
|
|
446
|
+
}
|
|
447
|
+
};
|
|
448
|
+
try {
|
|
449
|
+
await doRequest();
|
|
450
|
+
}
|
|
451
|
+
finally {
|
|
452
|
+
clearTimeout(timer);
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
return results;
|
|
456
|
+
}
|
|
116
457
|
/**
|
|
117
458
|
* Generate embeddings via Ollama API.
|
|
118
459
|
* Supports single and batch embedding.
|
|
@@ -133,6 +474,18 @@ export async function generateEmbeddings(texts, config = DEFAULT_EMBEDDING_CONFI
|
|
|
133
474
|
// adds complexity without proportional benefit given async background use).
|
|
134
475
|
return generateOpenAIEmbeddings(texts, config);
|
|
135
476
|
}
|
|
477
|
+
if (config.provider === 'gemini') {
|
|
478
|
+
config = {
|
|
479
|
+
...DEFAULT_EMBEDDING_CONFIG,
|
|
480
|
+
...config,
|
|
481
|
+
model: config.model !== DEFAULT_EMBEDDING_CONFIG.model ? config.model : GEMINI_DEFAULTS.model,
|
|
482
|
+
dimensions: config.dimensions !== DEFAULT_EMBEDDING_CONFIG.dimensions ? config.dimensions : GEMINI_DEFAULTS.dimensions,
|
|
483
|
+
batchSize: config.batchSize !== DEFAULT_EMBEDDING_CONFIG.batchSize ? config.batchSize : GEMINI_DEFAULTS.batchSize,
|
|
484
|
+
};
|
|
485
|
+
// Gemini path — no LRU cache (same rationale as OpenAI: billed API calls,
|
|
486
|
+
// background indexing context, minimal benefit from this-layer caching).
|
|
487
|
+
return generateGeminiEmbeddings(texts, config);
|
|
488
|
+
}
|
|
136
489
|
if (texts.length === 0)
|
|
137
490
|
return [];
|
|
138
491
|
const maxSize = Math.min(config.cacheSize ?? DEFAULT_EMBEDDING_CONFIG.cacheSize ?? 128, 10_000 // Hard cap: prevent unbounded memory growth from operator misconfiguration
|
package/dist/version.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Release version — matches package.json and is stamped into library.db on every startup. */
|
|
2
|
-
export declare const ENGINE_VERSION = "0.
|
|
2
|
+
export declare const ENGINE_VERSION = "0.6.2";
|
|
3
3
|
/** Minimum Node.js version required — matches package.json engines field. */
|
|
4
4
|
export declare const MIN_NODE_VERSION = "22.0.0";
|
|
5
5
|
/** @deprecated No longer used — Redis was replaced with SQLite :memory: CacheLayer. */
|
|
@@ -10,7 +10,7 @@ export declare const SQLITE_VEC_VERSION = "0.1.9";
|
|
|
10
10
|
* Main DB (hypermem.db) schema version.
|
|
11
11
|
* Re-exported here for convenience; authoritative value lives in schema.ts.
|
|
12
12
|
*/
|
|
13
|
-
export declare const MAIN_SCHEMA_VERSION =
|
|
13
|
+
export declare const MAIN_SCHEMA_VERSION = 8;
|
|
14
14
|
/**
|
|
15
15
|
* Library DB (library.db) schema version.
|
|
16
16
|
* Re-exported here for convenience; authoritative value lives in library-schema.ts.
|
|
@@ -21,14 +21,14 @@ export declare const LIBRARY_SCHEMA_VERSION_EXPORT = 12;
|
|
|
21
21
|
* Maps to: main schema v6, library schema v12.
|
|
22
22
|
* Matches ENGINE_VERSION for the 0.5.2 release.
|
|
23
23
|
*/
|
|
24
|
-
export declare const HYPERMEM_COMPAT_VERSION = "0.
|
|
24
|
+
export declare const HYPERMEM_COMPAT_VERSION = "0.6.2";
|
|
25
25
|
/**
|
|
26
26
|
* Schema compatibility map — machine-readable version requirements.
|
|
27
27
|
* Use this to verify DB schemas match the running engine.
|
|
28
28
|
*/
|
|
29
29
|
export declare const SCHEMA_COMPAT: {
|
|
30
|
-
readonly compatVersion: "0.
|
|
31
|
-
readonly mainSchema:
|
|
30
|
+
readonly compatVersion: "0.6.2";
|
|
31
|
+
readonly mainSchema: 8;
|
|
32
32
|
readonly librarySchema: 12;
|
|
33
33
|
};
|
|
34
34
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Release version — matches package.json and is stamped into library.db on every startup. */
|
|
2
|
-
export const ENGINE_VERSION = '0.
|
|
2
|
+
export const ENGINE_VERSION = '0.6.2';
|
|
3
3
|
/** Minimum Node.js version required — matches package.json engines field. */
|
|
4
4
|
export const MIN_NODE_VERSION = '22.0.0';
|
|
5
5
|
/** @deprecated No longer used — Redis was replaced with SQLite :memory: CacheLayer. */
|
|
@@ -10,7 +10,7 @@ export const SQLITE_VEC_VERSION = '0.1.9';
|
|
|
10
10
|
* Main DB (hypermem.db) schema version.
|
|
11
11
|
* Re-exported here for convenience; authoritative value lives in schema.ts.
|
|
12
12
|
*/
|
|
13
|
-
export const MAIN_SCHEMA_VERSION =
|
|
13
|
+
export const MAIN_SCHEMA_VERSION = 8;
|
|
14
14
|
/**
|
|
15
15
|
* Library DB (library.db) schema version.
|
|
16
16
|
* Re-exported here for convenience; authoritative value lives in library-schema.ts.
|
|
@@ -21,14 +21,14 @@ export const LIBRARY_SCHEMA_VERSION_EXPORT = 12;
|
|
|
21
21
|
* Maps to: main schema v6, library schema v12.
|
|
22
22
|
* Matches ENGINE_VERSION for the 0.5.2 release.
|
|
23
23
|
*/
|
|
24
|
-
export const HYPERMEM_COMPAT_VERSION = '0.
|
|
24
|
+
export const HYPERMEM_COMPAT_VERSION = '0.6.2';
|
|
25
25
|
/**
|
|
26
26
|
* Schema compatibility map — machine-readable version requirements.
|
|
27
27
|
* Use this to verify DB schemas match the running engine.
|
|
28
28
|
*/
|
|
29
29
|
export const SCHEMA_COMPAT = {
|
|
30
|
-
compatVersion: '0.
|
|
31
|
-
mainSchema:
|
|
30
|
+
compatVersion: '0.6.2',
|
|
31
|
+
mainSchema: 8,
|
|
32
32
|
librarySchema: 12,
|
|
33
33
|
};
|
|
34
34
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@psiclawops/hypermem",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.2",
|
|
4
4
|
"description": "Agent-centric memory and context composition engine for OpenClaw",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -27,7 +27,9 @@
|
|
|
27
27
|
"validate:plugin-pipeline": "npm --prefix plugin run build && node test/plugin-pipeline.mjs",
|
|
28
28
|
"test:multi-turn": "node test/multi-turn-session.mjs",
|
|
29
29
|
"test:ci": "npm test && npm --prefix plugin run typecheck",
|
|
30
|
-
"smoke": "node scripts/smoke-test.mjs"
|
|
30
|
+
"smoke": "node scripts/smoke-test.mjs",
|
|
31
|
+
"sync-public": "node scripts/sync-public.mjs",
|
|
32
|
+
"validate:docs": "node scripts/validate-docs.mjs"
|
|
31
33
|
},
|
|
32
34
|
"dependencies": {
|
|
33
35
|
"sqlite-vec": "^0.1.9"
|