hippo-memory 1.8.1 → 1.9.3

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 (46) hide show
  1. package/README.md +27 -0
  2. package/bin/hippo.js +2 -2
  3. package/dist/cli.js +44 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/embeddings.d.ts +34 -1
  6. package/dist/embeddings.d.ts.map +1 -1
  7. package/dist/embeddings.js +74 -14
  8. package/dist/embeddings.js.map +1 -1
  9. package/dist/rerankers/cross-encoder.d.ts +18 -0
  10. package/dist/rerankers/cross-encoder.d.ts.map +1 -0
  11. package/dist/rerankers/cross-encoder.js +90 -0
  12. package/dist/rerankers/cross-encoder.js.map +1 -0
  13. package/dist/rerankers/index.d.ts +4 -0
  14. package/dist/rerankers/index.d.ts.map +1 -0
  15. package/dist/rerankers/index.js +16 -0
  16. package/dist/rerankers/index.js.map +1 -0
  17. package/dist/rerankers/llm.d.ts +15 -0
  18. package/dist/rerankers/llm.d.ts.map +1 -0
  19. package/dist/rerankers/llm.js +77 -0
  20. package/dist/rerankers/llm.js.map +1 -0
  21. package/dist/rerankers/types.d.ts +30 -0
  22. package/dist/rerankers/types.d.ts.map +1 -0
  23. package/dist/rerankers/types.js +2 -0
  24. package/dist/rerankers/types.js.map +1 -0
  25. package/dist/search.d.ts +17 -0
  26. package/dist/search.d.ts.map +1 -1
  27. package/dist/search.js +13 -2
  28. package/dist/search.js.map +1 -1
  29. package/dist/src/cli.js +44 -0
  30. package/dist/src/cli.js.map +1 -1
  31. package/dist/src/embeddings.js +74 -14
  32. package/dist/src/embeddings.js.map +1 -1
  33. package/dist/src/rerankers/cross-encoder.js +90 -0
  34. package/dist/src/rerankers/cross-encoder.js.map +1 -0
  35. package/dist/src/rerankers/index.js +16 -0
  36. package/dist/src/rerankers/index.js.map +1 -0
  37. package/dist/src/rerankers/llm.js +77 -0
  38. package/dist/src/rerankers/llm.js.map +1 -0
  39. package/dist/src/rerankers/types.js +2 -0
  40. package/dist/src/rerankers/types.js.map +1 -0
  41. package/dist/src/search.js +13 -2
  42. package/dist/src/search.js.map +1 -1
  43. package/extensions/openclaw-plugin/openclaw.plugin.json +1 -1
  44. package/extensions/openclaw-plugin/package.json +1 -1
  45. package/openclaw.plugin.json +1 -1
  46. package/package.json +2 -1
@@ -4,6 +4,34 @@
4
4
  * Falls back silently if the library is not installed.
5
5
  */
6
6
  import { MemoryEntry } from './memory.js';
7
+ /**
8
+ * Per-model pooling dispatch for `@xenova/transformers`'s feature-extraction
9
+ * pipeline. BGE family models were trained with CLS pooling (per BAAI's
10
+ * official inference code in `FlagEmbedding`); MiniLM and most sentence-
11
+ * transformers models use mean pooling. Unknown model ids default to mean
12
+ * — that is the safe choice because most third-party models adopt the
13
+ * sentence-transformers convention, and the alternative ('cls') silently
14
+ * degrades vector quality for mean-pooling models.
15
+ */
16
+ export declare function poolingFor(model: string): 'cls' | 'mean';
17
+ /**
18
+ * Per-model input-prefix dispatch. The intfloat/e5 family was trained with
19
+ * asymmetric "query: " / "passage: " prefixes — the model only matches the
20
+ * two halves correctly when each side carries its prefix at inference. BGE
21
+ * also has prefix conventions for some downstream tasks, but symmetric use
22
+ * without prefixes is the documented default for `bge-*-en-v1.5`, so we leave
23
+ * BGE alone here. Symmetric models (MiniLM, BGE) and unknown models return
24
+ * an empty prefix.
25
+ *
26
+ * `role` semantics:
27
+ * - 'query' — the text is the user's question / search input.
28
+ * - 'passage' — the text is a document being indexed.
29
+ * - undefined or absent — symmetric path; no prefix is applied even for
30
+ * asymmetric models (preserves backwards compatibility with the legacy
31
+ * two-argument `getEmbedding(text, model)` API).
32
+ */
33
+ export type EmbeddingRole = 'query' | 'passage';
34
+ export declare function prefixFor(model: string, role?: EmbeddingRole): string;
7
35
  /**
8
36
  * Check (synchronously) if @xenova/transformers or @huggingface/transformers is installed.
9
37
  */
@@ -14,8 +42,13 @@ export declare function embeddingModelRequiresReindex(hippoRoot: string, model:
14
42
  /**
15
43
  * Get an embedding vector for a piece of text.
16
44
  * Returns an empty array if transformers is not available or fails.
45
+ *
46
+ * Pass `role: 'query'` / `'passage'` to engage asymmetric prefixing for
47
+ * model families that require it (currently intfloat/e5-*). Omitting `role`
48
+ * keeps the legacy symmetric behavior (no prefix), so BGE / MiniLM callers
49
+ * don't need to change.
17
50
  */
18
- export declare function getEmbedding(text: string, model?: string): Promise<number[]>;
51
+ export declare function getEmbedding(text: string, model?: string, role?: EmbeddingRole): Promise<number[]>;
19
52
  /**
20
53
  * Cosine similarity between two vectors. Handles unnormalized vectors.
21
54
  * Returns 0 for empty or mismatched vectors.
@@ -1 +1 @@
1
- {"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../src/embeddings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAuB1C;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAqB9C;AA0CD,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAYvF;AAyBD,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAiC,GAC9D,MAAM,GAAG,IAAI,CAIf;AAED,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAiC,GAC9D,OAAO,CAGT;AAoCD;;;GAGG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,KAAK,SAA0B,GAC9B,OAAO,CAAC,MAAM,EAAE,CAAC,CAanB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAiBjE;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAQ9E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAU3F;AAkBD;;GAEG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,WAAW,EAClB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAyCf;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAC5B,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CA+CjB"}
1
+ {"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../src/embeddings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAmB1C;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAExD;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,CAAC;AAEhD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM,CAMrE;AAMD;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAqB9C;AA6ED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAYvF;AAyBD,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAiC,GAC9D,MAAM,GAAG,IAAI,CAIf;AAED,wBAAgB,6BAA6B,CAC3C,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAiC,GAC9D,OAAO,CAGT;AAoCD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,KAAK,SAA0B,EAC/B,IAAI,CAAC,EAAE,aAAa,GACnB,OAAO,CAAC,MAAM,EAAE,CAAC,CAenB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAiBjE;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAQ9E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAU3F;AAkBD;;GAEG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,WAAW,EAClB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAyCf;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAC5B,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CA+CjB"}
@@ -19,6 +19,26 @@ const _pipelineInstances = new Map();
19
19
  const _pipelineLoading = new Map();
20
20
  const DEFAULT_EMBEDDING_MODEL = 'Xenova/all-MiniLM-L6-v2';
21
21
  const EMBEDDING_MODEL_META_KEY = 'embedding_model';
22
+ /**
23
+ * Per-model pooling dispatch for `@xenova/transformers`'s feature-extraction
24
+ * pipeline. BGE family models were trained with CLS pooling (per BAAI's
25
+ * official inference code in `FlagEmbedding`); MiniLM and most sentence-
26
+ * transformers models use mean pooling. Unknown model ids default to mean
27
+ * — that is the safe choice because most third-party models adopt the
28
+ * sentence-transformers convention, and the alternative ('cls') silently
29
+ * degrades vector quality for mean-pooling models.
30
+ */
31
+ export function poolingFor(model) {
32
+ return /\bbge\b/i.test(model) ? 'cls' : 'mean';
33
+ }
34
+ export function prefixFor(model, role) {
35
+ if (!role)
36
+ return '';
37
+ if (/\be5\b/i.test(model)) {
38
+ return role === 'query' ? 'query: ' : 'passage: ';
39
+ }
40
+ return '';
41
+ }
22
42
  // Use Function constructor to bypass TypeScript static module resolution
23
43
  // for optional peer dependencies that may not be installed.
24
44
  const _dynImport = new Function('s', 'return import(s)');
@@ -47,6 +67,25 @@ export function isEmbeddingAvailable() {
47
67
  _embeddingAvailable = false;
48
68
  return false;
49
69
  }
70
+ /**
71
+ * Some model families ship ONNX in external-data format (a tiny graph .onnx
72
+ * plus a multi-GB `model.onnx_data` sidecar). `@xenova/transformers` v2.17 loads
73
+ * the .onnx as an in-memory Buffer, which severs the external-data path
74
+ * resolution and produces an "Initializer model_path must not be empty" error.
75
+ * The maintained fork `@huggingface/transformers` v4 correctly passes the file
76
+ * path through to onnxruntime, so external-data resolves cleanly.
77
+ *
78
+ * We prefer the older `@xenova/transformers` by default (it's the historical
79
+ * peer dep with zero observed regressions on BGE / MiniLM), and dispatch to
80
+ * `@huggingface/transformers` only for families known to require it.
81
+ */
82
+ function preferredBackend(model) {
83
+ // intfloat/e5 family ships external-data ONNX in the Qdrant fastembed
84
+ // mirror. Same dispatch shape as poolingFor / prefixFor.
85
+ if (/\be5\b/i.test(model))
86
+ return 'huggingface';
87
+ return 'xenova';
88
+ }
50
89
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
51
90
  async function loadPipeline(model) {
52
91
  if (_pipelineInstances.has(model))
@@ -56,25 +95,39 @@ async function loadPipeline(model) {
56
95
  const loading = (async () => {
57
96
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
58
97
  let pipelineFn = null;
59
- try {
60
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
61
- const mod = await _dynImport('@xenova/transformers');
62
- pipelineFn = mod.pipeline ?? mod.default?.pipeline;
63
- }
64
- catch {
98
+ const backend = preferredBackend(model);
99
+ const order = backend === 'huggingface'
100
+ ? ['@huggingface/transformers', '@xenova/transformers']
101
+ : ['@xenova/transformers', '@huggingface/transformers'];
102
+ for (const pkg of order) {
65
103
  try {
66
104
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
67
- const mod = await _dynImport('@huggingface/transformers');
105
+ const mod = await _dynImport(pkg);
106
+ if (process.env.HIPPO_MODEL_CACHE) {
107
+ if (mod.env) {
108
+ mod.env.cacheDir = process.env.HIPPO_MODEL_CACHE;
109
+ mod.env.localModelPath = process.env.HIPPO_MODEL_CACHE;
110
+ mod.env.allowRemoteModels = false;
111
+ }
112
+ }
68
113
  pipelineFn = mod.pipeline ?? mod.default?.pipeline;
114
+ if (pipelineFn)
115
+ break;
69
116
  }
70
117
  catch {
71
- return null;
118
+ // try next package
72
119
  }
73
120
  }
74
121
  if (!pipelineFn)
75
122
  return null;
123
+ // The Qdrant-vendored bundle (used in egress-restricted sandboxes) ships
124
+ // only `onnx/model.onnx` (FP32). The HF default ships `model_quantized.onnx`
125
+ // too. When pointing at a local cache, pick the variant that's on disk.
126
+ const cacheRoot = process.env.HIPPO_MODEL_CACHE?.trim();
127
+ const quantized = !cacheRoot
128
+ || fs.existsSync(path.join(cacheRoot, model, 'onnx', 'model_quantized.onnx'));
76
129
  try {
77
- const instance = await pipelineFn('feature-extraction', model, { quantized: true });
130
+ const instance = await pipelineFn('feature-extraction', model, { quantized });
78
131
  _pipelineInstances.set(model, instance);
79
132
  return instance;
80
133
  }
@@ -140,7 +193,7 @@ async function rebuildEmbeddingIndex(entries, model) {
140
193
  const rebuilt = {};
141
194
  for (const entry of entries) {
142
195
  const text = `${entry.content} ${entry.tags.join(' ')}`.trim();
143
- const vector = await getEmbedding(text, model);
196
+ const vector = await getEmbedding(text, model, 'passage');
144
197
  if (vector.length > 0) {
145
198
  rebuilt[entry.id] = vector;
146
199
  }
@@ -164,16 +217,23 @@ function resetPhysicsFromIndex(hippoRoot, entries, index) {
164
217
  /**
165
218
  * Get an embedding vector for a piece of text.
166
219
  * Returns an empty array if transformers is not available or fails.
220
+ *
221
+ * Pass `role: 'query'` / `'passage'` to engage asymmetric prefixing for
222
+ * model families that require it (currently intfloat/e5-*). Omitting `role`
223
+ * keeps the legacy symmetric behavior (no prefix), so BGE / MiniLM callers
224
+ * don't need to change.
167
225
  */
168
- export async function getEmbedding(text, model = DEFAULT_EMBEDDING_MODEL) {
226
+ export async function getEmbedding(text, model = DEFAULT_EMBEDDING_MODEL, role) {
169
227
  if (!isEmbeddingAvailable())
170
228
  return [];
171
229
  try {
172
230
  const pipe = await loadPipeline(model);
173
231
  if (!pipe)
174
232
  return [];
233
+ const prefix = prefixFor(model, role);
234
+ const input = prefix ? `${prefix}${text}` : text;
175
235
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
176
- const output = await pipe(text, { pooling: 'mean', normalize: true });
236
+ const output = await pipe(input, { pooling: poolingFor(model), normalize: true });
177
237
  return Array.from(output.data);
178
238
  }
179
239
  catch {
@@ -268,7 +328,7 @@ export async function embedMemory(hippoRoot, entry, model) {
268
328
  return;
269
329
  }
270
330
  const text = `${entry.content} ${entry.tags.join(' ')}`.trim();
271
- const vector = await getEmbedding(text, effectiveModel);
331
+ const vector = await getEmbedding(text, effectiveModel, 'passage');
272
332
  if (vector.length === 0)
273
333
  return;
274
334
  const index = existingIndex;
@@ -327,7 +387,7 @@ export async function embedAll(hippoRoot, model) {
327
387
  if (index[entry.id])
328
388
  continue; // already embedded
329
389
  const text = `${entry.content} ${entry.tags.join(' ')}`.trim();
330
- const vector = await getEmbedding(text, effectiveModel);
390
+ const vector = await getEmbedding(text, effectiveModel, 'passage');
331
391
  if (vector.length > 0) {
332
392
  index[entry.id] = vector;
333
393
  count++;
@@ -1 +1 @@
1
- {"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../src/embeddings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../src/embeddings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { RerankerFn } from './types.js';
2
+ /**
3
+ * True if @xenova/transformers is importable. Note: this does NOT confirm
4
+ * that the model is downloadable from Hugging Face CDN — in sandboxed
5
+ * environments the package may import but the model fetch may be blocked.
6
+ * The reranker silently falls back to identity ordering in that case.
7
+ */
8
+ export declare function isCrossEncoderAvailable(): Promise<boolean>;
9
+ /**
10
+ * Track 2 reranker: MS-MARCO MiniLM cross-encoder.
11
+ * Loads model on first call, then sub-100ms per query for top-K=50 candidates
12
+ * on a typical developer laptop CPU. Falls back to identity ordering if the
13
+ * model fails to load (no transformers, no network for first download, etc.).
14
+ *
15
+ * See docs/plans/2026-05-10-f6-reranker-hardening.md Task 6.
16
+ */
17
+ export declare const crossEncoderReranker: RerankerFn;
18
+ //# sourceMappingURL=cross-encoder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-encoder.d.ts","sourceRoot":"","sources":["../../src/rerankers/cross-encoder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAiC,MAAM,YAAY,CAAC;AAe5E;;;;;GAKG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,OAAO,CAAC,CAOhE;AAuBD;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,EAAE,UAoDlC,CAAC"}
@@ -0,0 +1,90 @@
1
+ const MODEL_NAME = 'Xenova/ms-marco-MiniLM-L-6-v2';
2
+ // Use Function constructor to bypass TypeScript static module resolution
3
+ // for optional peer dependencies that may not be installed (mirrors the
4
+ // pattern in src/embeddings.ts).
5
+ const _dynImport = new Function('s', 'return import(s)');
6
+ let cachedPipeline = null;
7
+ let warnedOnFallback = false;
8
+ /**
9
+ * True if @xenova/transformers is importable. Note: this does NOT confirm
10
+ * that the model is downloadable from Hugging Face CDN — in sandboxed
11
+ * environments the package may import but the model fetch may be blocked.
12
+ * The reranker silently falls back to identity ordering in that case.
13
+ */
14
+ export async function isCrossEncoderAvailable() {
15
+ try {
16
+ const t = (await _dynImport('@xenova/transformers'));
17
+ return typeof t.pipeline === 'function';
18
+ }
19
+ catch {
20
+ return false;
21
+ }
22
+ }
23
+ async function loadPipeline() {
24
+ if (cachedPipeline)
25
+ return cachedPipeline;
26
+ try {
27
+ const mod = (await _dynImport('@xenova/transformers'));
28
+ const p = (await mod.pipeline('text-classification', MODEL_NAME));
29
+ cachedPipeline = async (query, candidate) => {
30
+ const out = (await p(`${query} [SEP] ${candidate}`));
31
+ return Array.isArray(out) ? out : [out];
32
+ };
33
+ return cachedPipeline;
34
+ }
35
+ catch {
36
+ return null;
37
+ }
38
+ }
39
+ /**
40
+ * Track 2 reranker: MS-MARCO MiniLM cross-encoder.
41
+ * Loads model on first call, then sub-100ms per query for top-K=50 candidates
42
+ * on a typical developer laptop CPU. Falls back to identity ordering if the
43
+ * model fails to load (no transformers, no network for first download, etc.).
44
+ *
45
+ * See docs/plans/2026-05-10-f6-reranker-hardening.md Task 6.
46
+ */
47
+ export const crossEncoderReranker = async (query, results, options) => {
48
+ const topK = options?.topK ?? 50;
49
+ const head = results.slice(0, topK);
50
+ const pipe = await loadPipeline();
51
+ if (!pipe) {
52
+ // Fallback: identity ordering with rerankScore = original score. Warn
53
+ // once per process so a silent identity-fallback doesn't mislead users
54
+ // into thinking the cross-encoder is doing work it isn't.
55
+ if (!warnedOnFallback) {
56
+ warnedOnFallback = true;
57
+ // eslint-disable-next-line no-console
58
+ console.warn('[hippo] cross-encoder reranker unavailable (no @xenova/transformers, or model fetch blocked); falling back to identity ordering. Subsequent calls will not repeat this warning.');
59
+ }
60
+ return head.map((r, i) => ({
61
+ ...r,
62
+ rerankScore: r.score,
63
+ preRerankRank: r.preRerankRank ?? i + 1,
64
+ postRerankRank: i + 1,
65
+ }));
66
+ }
67
+ const scored = await Promise.all(head.map(async (r, i) => {
68
+ let ceScore;
69
+ try {
70
+ const out = await pipe(query, r.entry.content);
71
+ ceScore = Array.isArray(out) && out.length > 0 ? out[0].score : 0;
72
+ }
73
+ catch {
74
+ // Per-call inference failure (transient tensor error, bad input,
75
+ // etc.): fall back to original score for this candidate so a
76
+ // single bad inference doesn't sink the whole rerank pass.
77
+ ceScore = r.score;
78
+ }
79
+ return {
80
+ ...r,
81
+ rerankScore: ceScore,
82
+ preRerankRank: r.preRerankRank ?? i + 1,
83
+ postRerankRank: 0,
84
+ };
85
+ }));
86
+ scored.sort((a, b) => b.rerankScore - a.rerankScore);
87
+ scored.forEach((r, i) => (r.postRerankRank = i + 1));
88
+ return scored;
89
+ };
90
+ //# sourceMappingURL=cross-encoder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-encoder.js","sourceRoot":"","sources":["../../src/rerankers/cross-encoder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { RerankerFn } from './types.js';
2
+ export declare function getReranker(name: string | null | undefined): RerankerFn | null;
3
+ export type { RerankerFn, RerankResult, RerankerOptions } from './types.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/rerankers/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAO7C,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,UAAU,GAAG,IAAI,CAS9E;AAED,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { crossEncoderReranker } from './cross-encoder.js';
2
+ import { llmReranker } from './llm.js';
3
+ const REGISTRY = {
4
+ 'cross-encoder': crossEncoderReranker,
5
+ llm: llmReranker,
6
+ };
7
+ export function getReranker(name) {
8
+ if (!name)
9
+ return null;
10
+ const fn = REGISTRY[name];
11
+ if (!fn) {
12
+ throw new Error(`Unknown reranker: ${name}. Available: ${Object.keys(REGISTRY).join(', ')}`);
13
+ }
14
+ return fn;
15
+ }
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rerankers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,MAAM,QAAQ,GAA+B;IAC3C,eAAe,EAAE,oBAAoB;IACrC,GAAG,EAAE,WAAW;CACjB,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,IAA+B;IACzD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CACb,qBAAqB,IAAI,gBAAgB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5E,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { RerankerFn } from './types.js';
2
+ /**
3
+ * Track 3 reranker: listwise LLM rerank. Uses a customer-supplied
4
+ * OpenAI-compatible endpoint. Gated on HIPPO_LLM_RERANKER_URL to prevent
5
+ * accidental cost.
6
+ *
7
+ * Skeleton only — see docs/plans/2026-05-10-f6-reranker-hardening.md Task 8.
8
+ * Full characterisation deferred to a follow-on plan.
9
+ *
10
+ * Timeout: defaults to 30s; overridable via HIPPO_LLM_RERANKER_TIMEOUT_MS.
11
+ * On timeout or any fetch failure, the reranker silently falls back to
12
+ * identity ordering — recall must not hang on a wedged endpoint.
13
+ */
14
+ export declare const llmReranker: RerankerFn;
15
+ //# sourceMappingURL=llm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/rerankers/llm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAiC,MAAM,YAAY,CAAC;AAI5E;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,WAAW,EAAE,UA2EzB,CAAC"}
@@ -0,0 +1,77 @@
1
+ const DEFAULT_TIMEOUT_MS = 30_000;
2
+ /**
3
+ * Track 3 reranker: listwise LLM rerank. Uses a customer-supplied
4
+ * OpenAI-compatible endpoint. Gated on HIPPO_LLM_RERANKER_URL to prevent
5
+ * accidental cost.
6
+ *
7
+ * Skeleton only — see docs/plans/2026-05-10-f6-reranker-hardening.md Task 8.
8
+ * Full characterisation deferred to a follow-on plan.
9
+ *
10
+ * Timeout: defaults to 30s; overridable via HIPPO_LLM_RERANKER_TIMEOUT_MS.
11
+ * On timeout or any fetch failure, the reranker silently falls back to
12
+ * identity ordering — recall must not hang on a wedged endpoint.
13
+ */
14
+ export const llmReranker = async (query, results, options) => {
15
+ const url = process.env.HIPPO_LLM_RERANKER_URL;
16
+ const key = process.env.HIPPO_LLM_RERANKER_KEY;
17
+ if (!url) {
18
+ throw new Error('HIPPO_LLM_RERANKER_URL not set; refusing to run LLM reranker.');
19
+ }
20
+ const topK = options?.topK ?? 20;
21
+ const head = results.slice(0, topK);
22
+ const prompt = [
23
+ `Rerank the candidates below by relevance to the query. Output a JSON array of indices (zero-indexed) in best-first order.`,
24
+ `Query: ${query}`,
25
+ ...head.map((r, i) => `[${i}] ${r.entry.content}`),
26
+ `Output format: [<int>, <int>, ...] with all ${head.length} indices.`,
27
+ ].join('\n');
28
+ const timeoutMs = Number.parseInt(process.env.HIPPO_LLM_RERANKER_TIMEOUT_MS ?? '', 10) || DEFAULT_TIMEOUT_MS;
29
+ const controller = new AbortController();
30
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
31
+ let permutation = null;
32
+ try {
33
+ const resp = await fetch(`${url.replace(/\/$/, '')}/chat/completions`, {
34
+ method: 'POST',
35
+ headers: {
36
+ 'content-type': 'application/json',
37
+ ...(key ? { authorization: `Bearer ${key}` } : {}),
38
+ },
39
+ body: JSON.stringify({
40
+ model: process.env.HIPPO_LLM_RERANKER_MODEL ?? 'gpt-4o-mini',
41
+ messages: [{ role: 'user', content: prompt }],
42
+ temperature: 0,
43
+ }),
44
+ signal: controller.signal,
45
+ });
46
+ if (resp.ok) {
47
+ const j = (await resp.json());
48
+ const txt = j.choices?.[0]?.message?.content ?? '';
49
+ const m = txt.match(/\[\s*(\d+(?:\s*,\s*\d+)*)\s*\]/);
50
+ if (m) {
51
+ const parsed = m[1].split(',').map((s) => parseInt(s.trim(), 10));
52
+ if (parsed.length === head.length &&
53
+ parsed.every((n) => Number.isInteger(n) && n >= 0 && n < head.length) &&
54
+ new Set(parsed).size === head.length) {
55
+ permutation = parsed;
56
+ }
57
+ }
58
+ }
59
+ }
60
+ catch {
61
+ // Fall through to identity. Includes AbortError on timeout — see
62
+ // DEFAULT_TIMEOUT_MS / HIPPO_LLM_RERANKER_TIMEOUT_MS above.
63
+ }
64
+ finally {
65
+ clearTimeout(timer);
66
+ }
67
+ const ordered = permutation
68
+ ? permutation.map((idx) => head[idx])
69
+ : head;
70
+ return ordered.map((r, i) => ({
71
+ ...r,
72
+ rerankScore: ordered.length - i,
73
+ preRerankRank: r.preRerankRank ?? i + 1,
74
+ postRerankRank: i + 1,
75
+ }));
76
+ };
77
+ //# sourceMappingURL=llm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/rerankers/llm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { SearchResult } from '../search.js';
2
+ /**
3
+ * A reranker reorders (and optionally rescales) the candidate set produced
4
+ * by hybridSearch's BM25 + cosine + MMR pipeline. Rerankers run AFTER MMR
5
+ * de-duplication and BEFORE token-budget filtering, so the reranker sees
6
+ * the full diversity-balanced candidate pool but does not see candidates
7
+ * already filtered out by score-zero or supersession.
8
+ *
9
+ * Rerankers MUST be deterministic for a given (query, results) input
10
+ * unless explicitly documented as stochastic (LLM track). Determinism is
11
+ * required for paired A/B and for the workload-validity gate in
12
+ * docs/evals/2026-05-10-f6-reranker-prereg.md.
13
+ */
14
+ export type RerankerFn = (query: string, results: SearchResult[], options?: RerankerOptions) => Promise<RerankResult[]>;
15
+ export interface RerankerOptions {
16
+ /** Cap candidates passed to the reranker. Default 50. */
17
+ topK?: number;
18
+ /** Per-track config blob; opaque to the seam. */
19
+ config?: Record<string, unknown>;
20
+ }
21
+ export interface RerankResult extends SearchResult {
22
+ /** Score assigned by the reranker. Replaces `score` for downstream
23
+ * ordering; original `score` preserved on the SearchResult. */
24
+ rerankScore: number;
25
+ /** 1-indexed rank in the input to the reranker. */
26
+ preRerankRank: number;
27
+ /** 1-indexed rank in the reranker output. */
28
+ postRerankRank: number;
29
+ }
30
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/rerankers/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,UAAU,GAAG,CACvB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,CAAC,EAAE,eAAe,KACtB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;AAE7B,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,YAAa,SAAQ,YAAY;IAChD;oEACgE;IAChE,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,aAAa,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,cAAc,EAAE,MAAM,CAAC;CACxB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/rerankers/types.ts"],"names":[],"mappings":""}
package/dist/search.d.ts CHANGED
@@ -38,6 +38,11 @@ export interface SearchResult {
38
38
  tokens: number;
39
39
  /** Populated when search is called with options.explain === true. */
40
40
  breakdown?: ScoreBreakdown;
41
+ /** Populated when a reranker ran. Replaces `score` for ordering;
42
+ * original `score` preserved here. See src/rerankers/types.ts. */
43
+ rerankScore?: number;
44
+ preRerankRank?: number;
45
+ postRerankRank?: number;
41
46
  }
42
47
  export interface ScoreBreakdown {
43
48
  /**
@@ -122,6 +127,11 @@ export declare function hybridSearch(query: string, entries: MemoryEntry[], opti
122
127
  includeSuperseded?: boolean;
123
128
  /** Filter to memories current at this ISO date string. */
124
129
  asOf?: string;
130
+ /** Optional reranker. Runs after MMR, before budget filtering.
131
+ * See src/rerankers/types.ts. */
132
+ reranker?: import('./rerankers/types.js').RerankerFn;
133
+ /** Options passed through to the reranker. */
134
+ rerankerOptions?: import('./rerankers/types.js').RerankerOptions;
125
135
  }): Promise<SearchResult[]>;
126
136
  /**
127
137
  * MMR (Maximal Marginal Relevance) re-ranking.
@@ -149,6 +159,13 @@ export declare function physicsSearch(query: string, entries: MemoryEntry[], opt
149
159
  minResults?: number;
150
160
  /** Active scope for scope-boost scoring. Auto-detected if not provided. */
151
161
  scope?: string | null;
162
+ /** Include superseded memories. Default false. Must be threaded through
163
+ * from the CLI so `recall --include-superseded` reaches the inner
164
+ * bi-temporal filter at line ~844; otherwise the superseded entries are
165
+ * re-filtered out here even when the caller deliberately retained them. */
166
+ includeSuperseded?: boolean;
167
+ /** Bi-temporal filter: memories current at this ISO date string. */
168
+ asOf?: string;
152
169
  }): Promise<SearchResult[]>;
153
170
  /**
154
171
  * Search entries using BM25 + strength + recency composite score.
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"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"}