@librechat/agents 3.7.9 → 3.7.11

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 (59) hide show
  1. package/dist/cjs/graphs/Graph.cjs +11 -1
  2. package/dist/cjs/graphs/Graph.cjs.map +1 -1
  3. package/dist/cjs/graphs/MultiAgentGraph.cjs +36 -3
  4. package/dist/cjs/graphs/MultiAgentGraph.cjs.map +1 -1
  5. package/dist/cjs/langfuse.cjs +6 -2
  6. package/dist/cjs/langfuse.cjs.map +1 -1
  7. package/dist/cjs/run.cjs +5 -1
  8. package/dist/cjs/run.cjs.map +1 -1
  9. package/dist/cjs/tools/ToolNode.cjs +12 -2
  10. package/dist/cjs/tools/ToolNode.cjs.map +1 -1
  11. package/dist/cjs/tools/search/metrics.cjs +234 -0
  12. package/dist/cjs/tools/search/metrics.cjs.map +1 -0
  13. package/dist/cjs/tools/search/rerankers.cjs +80 -68
  14. package/dist/cjs/tools/search/rerankers.cjs.map +1 -1
  15. package/dist/cjs/tools/search/search.cjs +95 -45
  16. package/dist/cjs/tools/search/search.cjs.map +1 -1
  17. package/dist/cjs/tools/search/tool.cjs +77 -49
  18. package/dist/cjs/tools/search/tool.cjs.map +1 -1
  19. package/dist/cjs/tools/search/utils.cjs.map +1 -1
  20. package/dist/esm/graphs/Graph.mjs +11 -1
  21. package/dist/esm/graphs/Graph.mjs.map +1 -1
  22. package/dist/esm/graphs/MultiAgentGraph.mjs +36 -3
  23. package/dist/esm/graphs/MultiAgentGraph.mjs.map +1 -1
  24. package/dist/esm/langfuse.mjs +6 -2
  25. package/dist/esm/langfuse.mjs.map +1 -1
  26. package/dist/esm/run.mjs +5 -1
  27. package/dist/esm/run.mjs.map +1 -1
  28. package/dist/esm/tools/ToolNode.mjs +12 -2
  29. package/dist/esm/tools/ToolNode.mjs.map +1 -1
  30. package/dist/esm/tools/search/metrics.mjs +234 -0
  31. package/dist/esm/tools/search/metrics.mjs.map +1 -0
  32. package/dist/esm/tools/search/rerankers.mjs +80 -68
  33. package/dist/esm/tools/search/rerankers.mjs.map +1 -1
  34. package/dist/esm/tools/search/search.mjs +96 -46
  35. package/dist/esm/tools/search/search.mjs.map +1 -1
  36. package/dist/esm/tools/search/tool.mjs +77 -49
  37. package/dist/esm/tools/search/tool.mjs.map +1 -1
  38. package/dist/esm/tools/search/utils.mjs.map +1 -1
  39. package/dist/types/langfuse.d.ts +5 -1
  40. package/dist/types/tools/ToolNode.d.ts +4 -1
  41. package/dist/types/tools/search/metrics.d.ts +15 -0
  42. package/dist/types/tools/search/rerankers.d.ts +30 -5
  43. package/dist/types/tools/search/tool.d.ts +7 -1
  44. package/dist/types/tools/search/types.d.ts +88 -4
  45. package/dist/types/tools/search/utils.d.ts +2 -10
  46. package/dist/types/types/tools.d.ts +5 -0
  47. package/package.json +1 -1
  48. package/src/graphs/Graph.ts +10 -0
  49. package/src/graphs/MultiAgentGraph.ts +71 -2
  50. package/src/langfuse.ts +12 -0
  51. package/src/run.ts +4 -0
  52. package/src/tools/ToolNode.ts +19 -0
  53. package/src/tools/search/metrics.ts +400 -0
  54. package/src/tools/search/rerankers.ts +160 -97
  55. package/src/tools/search/search.ts +139 -56
  56. package/src/tools/search/tool.ts +126 -62
  57. package/src/tools/search/types.ts +104 -4
  58. package/src/tools/search/utils.ts +2 -10
  59. package/src/types/tools.ts +5 -0
@@ -0,0 +1,234 @@
1
+ //#region src/tools/search/metrics.ts
2
+ const MAX_REASON_KEYS = 6;
3
+ const MAX_FAILURE_SAMPLES = 3;
4
+ const MAX_DETAIL_LENGTH = 200;
5
+ const MAX_LABEL_LENGTH = 48;
6
+ const OTHER_REASON = "other";
7
+ const HTTP_STATUS_REGEX = /\b(?:status(?:\scode)?|http)\D{0,3}(\d{3})\b/i;
8
+ const REASON_PATTERNS = [
9
+ [/ECONNABORTED|ETIMEDOUT|timeout|timed out/i, "timeout"],
10
+ [/ENOTFOUND|EAI_AGAIN|getaddrinfo/i, "dns"],
11
+ [/ECONNREFUSED|ECONNRESET|EPIPE|socket hang up/i, "connection"],
12
+ [/CERT_|SSL|TLS|self[- ]signed/i, "tls"],
13
+ [/abort|cancel/i, "aborted"]
14
+ ];
15
+ const classifyFailure = (message) => {
16
+ if (message == null || message === "") return "unknown";
17
+ const status = HTTP_STATUS_REGEX.exec(message);
18
+ if (status != null) return `http_${status[1]}`;
19
+ for (const [pattern, reason] of REASON_PATTERNS) if (pattern.test(message)) return reason;
20
+ return OTHER_REASON;
21
+ };
22
+ const bump = (counts, rawKey) => {
23
+ const key = label(rawKey);
24
+ const existing = counts.get(key);
25
+ if (existing != null) {
26
+ counts.set(key, existing + 1);
27
+ return;
28
+ }
29
+ if (counts.size >= MAX_REASON_KEYS) {
30
+ counts.set(OTHER_REASON, (counts.get(OTHER_REASON) ?? 0) + 1);
31
+ return;
32
+ }
33
+ counts.set(key, 1);
34
+ };
35
+ const hostOf = (url) => {
36
+ try {
37
+ return new URL(url).hostname.replace(/^www\./, "");
38
+ } catch {
39
+ return url.slice(0, 60);
40
+ }
41
+ };
42
+ const formatCount = (value) => value < 1e4 ? String(value) : `${(value / 1e3).toFixed(1)}k`;
43
+ const formatMs = (ms) => ms < 1e3 ? `${Math.round(ms)}ms` : `${(ms / 1e3).toFixed(1)}s`;
44
+ const formatMap = (counts) => {
45
+ let out = "";
46
+ for (const [key, count] of counts) out += `${out === "" ? "" : ","}${key}:${count}`;
47
+ return `{${out}}`;
48
+ };
49
+ const truncate = (value, max) => value.length <= max ? value : `${value.slice(0, max)}…`;
50
+ const UNPRINTABLE = /[\p{Cc}\p{Cf}\p{Zl}\p{Zp}"]+/gu;
51
+ const sanitize = (value) => value.replace(UNPRINTABLE, " ");
52
+ const label = (value) => truncate(sanitize(value), MAX_LABEL_LENGTH);
53
+ const detailOf = (value) => truncate(sanitize(value), MAX_DETAIL_LENGTH);
54
+ const mergeProvider = (current, incoming) => current === incoming ? current : "mixed";
55
+ const createSearchMetrics = (logger, autoFlush = false) => {
56
+ let search;
57
+ let scrape;
58
+ let rerank;
59
+ const flushSearch = (phase) => {
60
+ let line = `[web_search] search=${label(phase.provider)} queries=${phase.queries}`;
61
+ if (phase.types.size > 0) line += ` results=${formatMap(phase.types)}`;
62
+ line += ` dur=${formatMs(phase.durationMs)}`;
63
+ if (phase.failed === 0) {
64
+ logger.debug(line);
65
+ return;
66
+ }
67
+ line += ` failed=${phase.failed} reasons=${formatMap(phase.reasons)}`;
68
+ if (phase.errors === 0) {
69
+ logger.warn(line);
70
+ return;
71
+ }
72
+ if (phase.detail == null) {
73
+ logger.error(line);
74
+ return;
75
+ }
76
+ logger.error(line, phase.detail);
77
+ };
78
+ const flushScrape = (phase) => {
79
+ let line = `[web_search] scrape links=${phase.links} ok=${phase.ok} chars=${formatCount(phase.chars)} highlights=${phase.highlights}`;
80
+ if (phase.empty > 0) line += ` empty=${phase.empty}`;
81
+ if (phase.failed === 0) {
82
+ logger.debug(line);
83
+ return;
84
+ }
85
+ line += ` failed=${phase.failed} reasons=${formatMap(phase.reasons)}`;
86
+ if (phase.samples.length > 0) line += ` sample=${phase.samples.join(",")}`;
87
+ if (phase.detail == null) {
88
+ logger.error(line);
89
+ return;
90
+ }
91
+ logger.error(line, phase.detail);
92
+ };
93
+ const flushRerank = (phase) => {
94
+ let line = `[web_search] rerank=${label(phase.provider)} calls=${phase.calls} chunks=${phase.chunks} maxChunks=${phase.maxChunks} results=${phase.results} dur=${formatMs(phase.durationMs)} maxDur=${formatMs(phase.maxDurationMs)}`;
95
+ if (phase.model != null) line += ` model="${label(phase.model)}"`;
96
+ if (phase.units > 0) line += ` units=${phase.units}`;
97
+ if (phase.dropped > 0) line += ` dropped=${phase.dropped}`;
98
+ if (phase.topKLimit != null) line += ` topK=${phase.topK} topKLimit=${phase.topKLimit}`;
99
+ if (phase.fallbacks === 0) {
100
+ logger.debug(line);
101
+ return;
102
+ }
103
+ line += ` fallbacks=${phase.fallbacks} reasons=${formatMap(phase.reasons)}`;
104
+ if (phase.fallbacks - (phase.reasons.get("placeholder") ?? 0) === 0 && phase.errors === 0) {
105
+ logger.debug(line);
106
+ return;
107
+ }
108
+ if (phase.errors === 0) {
109
+ logger.warn(line);
110
+ return;
111
+ }
112
+ if (phase.error == null) {
113
+ logger.error(line);
114
+ return;
115
+ }
116
+ logger.error(line, phase.error);
117
+ };
118
+ const flush = () => {
119
+ if (search != null) {
120
+ flushSearch(search);
121
+ search = void 0;
122
+ }
123
+ if (scrape != null) {
124
+ flushScrape(scrape);
125
+ scrape = void 0;
126
+ }
127
+ if (rerank != null) {
128
+ flushRerank(rerank);
129
+ rerank = void 0;
130
+ }
131
+ };
132
+ const recordSearch = (observation) => {
133
+ search ??= {
134
+ provider: observation.provider,
135
+ queries: 0,
136
+ failed: 0,
137
+ errors: 0,
138
+ durationMs: 0,
139
+ types: /* @__PURE__ */ new Map(),
140
+ reasons: /* @__PURE__ */ new Map()
141
+ };
142
+ search.provider = mergeProvider(search.provider, observation.provider);
143
+ search.queries += 1;
144
+ search.durationMs = Math.max(search.durationMs, observation.durationMs);
145
+ if (observation.error != null) {
146
+ search.failed += 1;
147
+ bump(search.reasons, `${observation.type}:${classifyFailure(observation.error)}`);
148
+ if (observation.thrown === true) {
149
+ search.errors += 1;
150
+ search.detail ??= detailOf(observation.error);
151
+ }
152
+ } else if (observation.results > 0) {
153
+ const type = label(observation.type);
154
+ const seen = search.types.get(type) ?? 0;
155
+ search.types.set(type, seen + observation.results);
156
+ }
157
+ if (autoFlush) flush();
158
+ };
159
+ const recordScrape = (observation) => {
160
+ scrape ??= {
161
+ links: 0,
162
+ ok: 0,
163
+ empty: 0,
164
+ chars: 0,
165
+ highlights: 0,
166
+ failed: 0,
167
+ reasons: /* @__PURE__ */ new Map(),
168
+ samples: [],
169
+ detail: void 0
170
+ };
171
+ scrape.links += 1;
172
+ if (observation.error != null) {
173
+ scrape.failed += 1;
174
+ const reason = classifyFailure(observation.error);
175
+ bump(scrape.reasons, reason);
176
+ if (scrape.samples.length < MAX_FAILURE_SAMPLES) scrape.samples.push(label(`${hostOf(observation.url)}:${reason}`));
177
+ scrape.detail ??= detailOf(observation.error);
178
+ } else {
179
+ scrape.ok += 1;
180
+ const chars = observation.chars ?? 0;
181
+ scrape.chars += chars;
182
+ scrape.highlights += observation.highlights ?? 0;
183
+ if (chars === 0) scrape.empty += 1;
184
+ }
185
+ if (autoFlush) flush();
186
+ };
187
+ const recordRerank = (observation) => {
188
+ rerank ??= {
189
+ provider: observation.provider,
190
+ calls: 0,
191
+ fallbacks: 0,
192
+ errors: 0,
193
+ chunks: 0,
194
+ maxChunks: 0,
195
+ dropped: 0,
196
+ results: 0,
197
+ units: 0,
198
+ durationMs: 0,
199
+ maxDurationMs: 0,
200
+ reasons: /* @__PURE__ */ new Map()
201
+ };
202
+ rerank.provider = mergeProvider(rerank.provider, observation.provider);
203
+ rerank.calls += 1;
204
+ rerank.chunks += observation.chunks;
205
+ rerank.maxChunks = Math.max(rerank.maxChunks, observation.chunks);
206
+ rerank.results += observation.results;
207
+ rerank.dropped += observation.dropped ?? 0;
208
+ rerank.topK ??= observation.topK;
209
+ rerank.topKLimit ??= observation.topKLimit;
210
+ rerank.units += observation.units ?? 0;
211
+ rerank.durationMs += observation.durationMs;
212
+ rerank.maxDurationMs = Math.max(rerank.maxDurationMs, observation.durationMs);
213
+ if (observation.model != null) rerank.model = rerank.model == null ? observation.model : mergeProvider(rerank.model, observation.model);
214
+ if (observation.reason != null) {
215
+ rerank.fallbacks += 1;
216
+ bump(rerank.reasons, observation.reason);
217
+ }
218
+ if (observation.error != null) {
219
+ rerank.errors += 1;
220
+ rerank.error ??= observation.error;
221
+ }
222
+ if (autoFlush) flush();
223
+ };
224
+ return {
225
+ recordSearch,
226
+ recordScrape,
227
+ recordRerank,
228
+ flush
229
+ };
230
+ };
231
+ //#endregion
232
+ export { createSearchMetrics };
233
+
234
+ //# sourceMappingURL=metrics.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.mjs","names":[],"sources":["../../../../src/tools/search/metrics.ts"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { createDefaultLogger, formatErrorForLog } from "./utils.mjs";
2
+ import { createSearchMetrics } from "./metrics.mjs";
2
3
  import axios from "axios";
3
4
  //#region src/tools/search/rerankers.ts
4
5
  const DEFAULT_JINA_API_URL = "https://api.jina.ai/v1/rerank";
@@ -7,6 +8,7 @@ const getDefaultJinaApiUrl = () => process.env.JINA_API_URL != null && process.e
7
8
  var BaseReranker = class {
8
9
  apiKey;
9
10
  logger;
11
+ ownMetrics;
10
12
  constructor(logger) {
11
13
  this.logger = logger || createDefaultLogger();
12
14
  }
@@ -16,8 +18,43 @@ var BaseReranker = class {
16
18
  score: 0
17
19
  }));
18
20
  }
21
+ localMetrics() {
22
+ this.ownMetrics ??= createSearchMetrics(this.logger, true);
23
+ return this.ownMetrics;
24
+ }
25
+ beginRerank(documents, topK, metrics) {
26
+ return {
27
+ metrics: metrics ?? this.localMetrics(),
28
+ documents,
29
+ topK,
30
+ startedAt: Date.now()
31
+ };
32
+ }
33
+ record(run, highlights, reason, error) {
34
+ run.metrics.recordRerank({
35
+ provider: this.provider,
36
+ chunks: run.documents.length,
37
+ results: highlights.length,
38
+ durationMs: Date.now() - run.startedAt,
39
+ model: run.model,
40
+ units: run.units,
41
+ dropped: run.dropped,
42
+ topK: run.topKLimit != null ? run.topK : void 0,
43
+ topKLimit: run.topKLimit,
44
+ reason,
45
+ error
46
+ });
47
+ return highlights;
48
+ }
49
+ complete(run, highlights) {
50
+ return this.record(run, highlights);
51
+ }
52
+ fallback(run, reason, error) {
53
+ return this.record(run, this.getDefaultRanking(run.documents, run.topK), reason, error);
54
+ }
19
55
  };
20
56
  var JinaReranker = class extends BaseReranker {
57
+ provider = "jina";
21
58
  apiUrl;
22
59
  timeout;
23
60
  httpAgent;
@@ -30,13 +67,10 @@ var JinaReranker = class extends BaseReranker {
30
67
  this.httpAgent = httpAgent;
31
68
  this.httpsAgent = httpsAgent;
32
69
  }
33
- async rerank(query, documents, topK = 5) {
34
- this.logger.debug(`Reranking ${documents.length} chunks with Jina using API URL: ${this.apiUrl}`);
70
+ async rerank(query, documents, topK = 5, metrics) {
71
+ const run = this.beginRerank(documents, topK, metrics);
35
72
  try {
36
- if (this.apiKey == null || this.apiKey === "") {
37
- this.logger.warn("JINA_API_KEY is not set. Using default ranking.");
38
- return this.getDefaultRanking(documents, topK);
39
- }
73
+ if (this.apiKey == null || this.apiKey === "") return this.fallback(run, "no_api_key");
40
74
  const requestData = {
41
75
  model: "jina-reranker-v2-base-multilingual",
42
76
  query,
@@ -53,9 +87,11 @@ var JinaReranker = class extends BaseReranker {
53
87
  httpAgent: this.httpAgent,
54
88
  httpsAgent: this.httpsAgent
55
89
  });
56
- this.logger.debug("Jina API Model:", response.data?.model);
57
- this.logger.debug("Jina API Usage:", response.data?.usage);
58
- if (response.data && response.data.results.length) return response.data.results.map((result) => {
90
+ run.model = response.data?.model;
91
+ run.units = response.data?.usage?.total_tokens;
92
+ const results = response.data?.results;
93
+ if (!Array.isArray(results) || results.length === 0) return this.fallback(run, "bad_response");
94
+ return this.complete(run, results.map((result) => {
59
95
  const docIndex = result.index;
60
96
  const score = result.relevance_score;
61
97
  let text = "";
@@ -68,18 +104,14 @@ var JinaReranker = class extends BaseReranker {
68
104
  text,
69
105
  score
70
106
  };
71
- });
72
- else {
73
- this.logger.warn("Unexpected response format from Jina API. Using default ranking.");
74
- return this.getDefaultRanking(documents, topK);
75
- }
107
+ }));
76
108
  } catch (error) {
77
- this.logger.error("Error using Jina reranker", formatErrorForLog(error));
78
- return this.getDefaultRanking(documents, topK);
109
+ return this.fallback(run, "error", formatErrorForLog(error));
79
110
  }
80
111
  }
81
112
  };
82
113
  var CohereReranker = class extends BaseReranker {
114
+ provider = "cohere";
83
115
  timeout;
84
116
  httpAgent;
85
117
  httpsAgent;
@@ -90,15 +122,13 @@ var CohereReranker = class extends BaseReranker {
90
122
  this.httpAgent = httpAgent;
91
123
  this.httpsAgent = httpsAgent;
92
124
  }
93
- async rerank(query, documents, topK = 5) {
94
- this.logger.debug(`Reranking ${documents.length} chunks with Cohere`);
125
+ async rerank(query, documents, topK = 5, metrics) {
126
+ const run = this.beginRerank(documents, topK, metrics);
95
127
  try {
96
- if (this.apiKey == null || this.apiKey === "") {
97
- this.logger.warn("COHERE_API_KEY is not set. Using default ranking.");
98
- return this.getDefaultRanking(documents, topK);
99
- }
128
+ if (this.apiKey == null || this.apiKey === "") return this.fallback(run, "no_api_key");
129
+ const model = "rerank-v3.5";
100
130
  const requestData = {
101
- model: "rerank-v3.5",
131
+ model,
102
132
  query,
103
133
  top_n: topK,
104
134
  documents
@@ -112,23 +142,20 @@ var CohereReranker = class extends BaseReranker {
112
142
  httpAgent: this.httpAgent,
113
143
  httpsAgent: this.httpsAgent
114
144
  });
115
- this.logger.debug("Cohere API ID:", response.data?.id);
116
- this.logger.debug("Cohere API Meta:", response.data?.meta);
117
- if (response.data && response.data.results.length) return response.data.results.map((result) => {
145
+ run.model = model;
146
+ run.units = response.data?.meta?.billed_units?.search_units;
147
+ const results = response.data?.results;
148
+ if (!Array.isArray(results) || results.length === 0) return this.fallback(run, "bad_response");
149
+ return this.complete(run, results.map((result) => {
118
150
  const docIndex = result.index;
119
151
  const score = result.relevance_score;
120
152
  return {
121
153
  text: documents[docIndex],
122
154
  score
123
155
  };
124
- });
125
- else {
126
- this.logger.warn("Unexpected response format from Cohere API. Using default ranking.");
127
- return this.getDefaultRanking(documents, topK);
128
- }
156
+ }));
129
157
  } catch (error) {
130
- this.logger.error("Error using Cohere reranker", formatErrorForLog(error));
131
- return this.getDefaultRanking(documents, topK);
158
+ return this.fallback(run, "error", formatErrorForLog(error));
132
159
  }
133
160
  }
134
161
  };
@@ -141,14 +168,10 @@ const toRagApiCandidate = (text, index) => ({
141
168
  text,
142
169
  base_score: 0
143
170
  });
144
- const buildRagApiCandidates = (documents, logger) => {
145
- if (documents.length <= RAG_API_MAX_CANDIDATES) return documents.map(toRagApiCandidate);
146
- logger.debug(`rag_api fast-v1 accepts at most ${RAG_API_MAX_CANDIDATES} candidates; truncating ${documents.length} to ${RAG_API_MAX_CANDIDATES}.`);
147
- return documents.slice(0, RAG_API_MAX_CANDIDATES).map(toRagApiCandidate);
148
- };
149
- const clampRagApiTopN = (topN, logger) => {
171
+ const buildRagApiCandidates = (documents) => documents.length <= RAG_API_MAX_CANDIDATES ? documents.map(toRagApiCandidate) : documents.slice(0, RAG_API_MAX_CANDIDATES).map(toRagApiCandidate);
172
+ const clampRagApiTopN = (topN, run) => {
150
173
  if (topN <= RAG_API_MAX_TOP_N) return topN;
151
- logger.debug(`rag_api fast-v1 accepts top_n <= ${RAG_API_MAX_TOP_N}; clamping ${topN} to ${RAG_API_MAX_TOP_N}.`);
174
+ run.topKLimit = RAG_API_MAX_TOP_N;
152
175
  return RAG_API_MAX_TOP_N;
153
176
  };
154
177
  const sortRagApiResults = (results) => [...results].sort((a, b) => b.score - a.score || a.index - b.index);
@@ -177,6 +200,7 @@ const withRerankDeadline = (operation, timeout) => {
177
200
  return Promise.race([pending, deadline]).finally(() => clearTimeout(timer));
178
201
  };
179
202
  var RagApiReranker = class extends BaseReranker {
203
+ provider = "rag-api";
180
204
  baseUrl;
181
205
  tokenSupplier;
182
206
  profile;
@@ -192,21 +216,16 @@ var RagApiReranker = class extends BaseReranker {
192
216
  this.httpAgent = httpAgent;
193
217
  this.httpsAgent = httpsAgent;
194
218
  }
195
- async rerank(query, documents, topK = 5) {
219
+ async rerank(query, documents, topK = 5, metrics) {
196
220
  if (documents.length === 0) return [];
197
- this.logger.debug(`Reranking ${documents.length} chunks with rag_api (${this.profile}) using base URL: ${this.baseUrl}`);
221
+ const run = this.beginRerank(documents, topK, metrics);
198
222
  const baseUrl = this.baseUrl;
199
- if (baseUrl == null || baseUrl === "") {
200
- this.logger.warn("RAG_API_URL is not set. Using default ranking.");
201
- return this.getDefaultRanking(documents, topK);
202
- }
223
+ if (baseUrl == null || baseUrl === "") return this.fallback(run, "no_base_url");
203
224
  const tokenSupplier = this.tokenSupplier;
204
- if (tokenSupplier == null) {
205
- this.logger.warn("No rag_api token supplier configured. Using default ranking.");
206
- return this.getDefaultRanking(documents, topK);
207
- }
208
- const candidates = buildRagApiCandidates(documents, this.logger);
209
- const topN = clampRagApiTopN(Math.max(0, topK), this.logger);
225
+ if (tokenSupplier == null) return this.fallback(run, "no_token_supplier");
226
+ const candidates = buildRagApiCandidates(documents);
227
+ const topN = clampRagApiTopN(Math.max(0, topK), run);
228
+ run.dropped = documents.length - candidates.length;
210
229
  const requestData = {
211
230
  profile: this.profile,
212
231
  query,
@@ -227,33 +246,26 @@ var RagApiReranker = class extends BaseReranker {
227
246
  signal
228
247
  })).data;
229
248
  }, this.timeout);
230
- this.logger.debug("rag_api rerank model:", data?.model);
249
+ run.model = data?.model;
231
250
  const rawResults = data?.results;
232
- if (!Array.isArray(rawResults) || rawResults.length === 0) {
233
- this.logger.warn("Unexpected response format from rag_api rerank. Using default ranking.");
234
- return this.getDefaultRanking(documents, topK);
235
- }
236
- if (!isValidRagApiBatch(rawResults, candidates.length)) {
237
- this.logger.warn("rag_api rerank response contained no valid results. Using default ranking.");
238
- return this.getDefaultRanking(documents, topK);
239
- }
240
- return sortRagApiResults(rawResults).slice(0, topN).map((result) => ({
251
+ if (!Array.isArray(rawResults) || rawResults.length === 0) return this.fallback(run, "bad_response");
252
+ if (!isValidRagApiBatch(rawResults, candidates.length)) return this.fallback(run, "invalid_results");
253
+ return this.complete(run, sortRagApiResults(rawResults).slice(0, topN).map((result) => ({
241
254
  text: documents[result.index],
242
255
  score: result.score
243
- }));
256
+ })));
244
257
  } catch (error) {
245
- this.logger.error("Error using rag_api reranker", formatErrorForLog(error));
246
- return this.getDefaultRanking(documents, topK);
258
+ return this.fallback(run, "error", formatErrorForLog(error));
247
259
  }
248
260
  }
249
261
  };
250
262
  var InfinityReranker = class extends BaseReranker {
263
+ provider = "infinity";
251
264
  constructor(logger) {
252
265
  super(logger);
253
266
  }
254
- async rerank(query, documents, topK = 5) {
255
- this.logger.debug(`Reranking ${documents.length} chunks with Infinity (placeholder)`);
256
- return this.getDefaultRanking(documents, topK);
267
+ async rerank(query, documents, topK = 5, metrics) {
268
+ return this.fallback(this.beginRerank(documents, topK, metrics), "placeholder");
257
269
  }
258
270
  };
259
271
  const createReranker = (config) => {
@@ -1 +1 @@
1
- {"version":3,"file":"rerankers.mjs","names":[],"sources":["../../../../src/tools/search/rerankers.ts"],"mappings":"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"}
1
+ {"version":3,"file":"rerankers.mjs","names":[],"sources":["../../../../src/tools/search/rerankers.ts"],"mappings":"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"}