@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
+ exports.createSearchMetrics = createSearchMetrics;
233
+
234
+ //# sourceMappingURL=metrics.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.cjs","names":[],"sources":["../../../../src/tools/search/metrics.ts"],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  const require_runtime = require("../../_virtual/_rolldown/runtime.cjs");
2
2
  const require_utils = require("./utils.cjs");
3
+ const require_metrics = require("./metrics.cjs");
3
4
  let axios = require("axios");
4
5
  axios = require_runtime.__toESM(axios, 1);
5
6
  //#region src/tools/search/rerankers.ts
@@ -9,6 +10,7 @@ const getDefaultJinaApiUrl = () => process.env.JINA_API_URL != null && process.e
9
10
  var BaseReranker = class {
10
11
  apiKey;
11
12
  logger;
13
+ ownMetrics;
12
14
  constructor(logger) {
13
15
  this.logger = logger || require_utils.createDefaultLogger();
14
16
  }
@@ -18,8 +20,43 @@ var BaseReranker = class {
18
20
  score: 0
19
21
  }));
20
22
  }
23
+ localMetrics() {
24
+ this.ownMetrics ??= require_metrics.createSearchMetrics(this.logger, true);
25
+ return this.ownMetrics;
26
+ }
27
+ beginRerank(documents, topK, metrics) {
28
+ return {
29
+ metrics: metrics ?? this.localMetrics(),
30
+ documents,
31
+ topK,
32
+ startedAt: Date.now()
33
+ };
34
+ }
35
+ record(run, highlights, reason, error) {
36
+ run.metrics.recordRerank({
37
+ provider: this.provider,
38
+ chunks: run.documents.length,
39
+ results: highlights.length,
40
+ durationMs: Date.now() - run.startedAt,
41
+ model: run.model,
42
+ units: run.units,
43
+ dropped: run.dropped,
44
+ topK: run.topKLimit != null ? run.topK : void 0,
45
+ topKLimit: run.topKLimit,
46
+ reason,
47
+ error
48
+ });
49
+ return highlights;
50
+ }
51
+ complete(run, highlights) {
52
+ return this.record(run, highlights);
53
+ }
54
+ fallback(run, reason, error) {
55
+ return this.record(run, this.getDefaultRanking(run.documents, run.topK), reason, error);
56
+ }
21
57
  };
22
58
  var JinaReranker = class extends BaseReranker {
59
+ provider = "jina";
23
60
  apiUrl;
24
61
  timeout;
25
62
  httpAgent;
@@ -32,13 +69,10 @@ var JinaReranker = class extends BaseReranker {
32
69
  this.httpAgent = httpAgent;
33
70
  this.httpsAgent = httpsAgent;
34
71
  }
35
- async rerank(query, documents, topK = 5) {
36
- this.logger.debug(`Reranking ${documents.length} chunks with Jina using API URL: ${this.apiUrl}`);
72
+ async rerank(query, documents, topK = 5, metrics) {
73
+ const run = this.beginRerank(documents, topK, metrics);
37
74
  try {
38
- if (this.apiKey == null || this.apiKey === "") {
39
- this.logger.warn("JINA_API_KEY is not set. Using default ranking.");
40
- return this.getDefaultRanking(documents, topK);
41
- }
75
+ if (this.apiKey == null || this.apiKey === "") return this.fallback(run, "no_api_key");
42
76
  const requestData = {
43
77
  model: "jina-reranker-v2-base-multilingual",
44
78
  query,
@@ -55,9 +89,11 @@ var JinaReranker = class extends BaseReranker {
55
89
  httpAgent: this.httpAgent,
56
90
  httpsAgent: this.httpsAgent
57
91
  });
58
- this.logger.debug("Jina API Model:", response.data?.model);
59
- this.logger.debug("Jina API Usage:", response.data?.usage);
60
- if (response.data && response.data.results.length) return response.data.results.map((result) => {
92
+ run.model = response.data?.model;
93
+ run.units = response.data?.usage?.total_tokens;
94
+ const results = response.data?.results;
95
+ if (!Array.isArray(results) || results.length === 0) return this.fallback(run, "bad_response");
96
+ return this.complete(run, results.map((result) => {
61
97
  const docIndex = result.index;
62
98
  const score = result.relevance_score;
63
99
  let text = "";
@@ -70,18 +106,14 @@ var JinaReranker = class extends BaseReranker {
70
106
  text,
71
107
  score
72
108
  };
73
- });
74
- else {
75
- this.logger.warn("Unexpected response format from Jina API. Using default ranking.");
76
- return this.getDefaultRanking(documents, topK);
77
- }
109
+ }));
78
110
  } catch (error) {
79
- this.logger.error("Error using Jina reranker", require_utils.formatErrorForLog(error));
80
- return this.getDefaultRanking(documents, topK);
111
+ return this.fallback(run, "error", require_utils.formatErrorForLog(error));
81
112
  }
82
113
  }
83
114
  };
84
115
  var CohereReranker = class extends BaseReranker {
116
+ provider = "cohere";
85
117
  timeout;
86
118
  httpAgent;
87
119
  httpsAgent;
@@ -92,15 +124,13 @@ var CohereReranker = class extends BaseReranker {
92
124
  this.httpAgent = httpAgent;
93
125
  this.httpsAgent = httpsAgent;
94
126
  }
95
- async rerank(query, documents, topK = 5) {
96
- this.logger.debug(`Reranking ${documents.length} chunks with Cohere`);
127
+ async rerank(query, documents, topK = 5, metrics) {
128
+ const run = this.beginRerank(documents, topK, metrics);
97
129
  try {
98
- if (this.apiKey == null || this.apiKey === "") {
99
- this.logger.warn("COHERE_API_KEY is not set. Using default ranking.");
100
- return this.getDefaultRanking(documents, topK);
101
- }
130
+ if (this.apiKey == null || this.apiKey === "") return this.fallback(run, "no_api_key");
131
+ const model = "rerank-v3.5";
102
132
  const requestData = {
103
- model: "rerank-v3.5",
133
+ model,
104
134
  query,
105
135
  top_n: topK,
106
136
  documents
@@ -114,23 +144,20 @@ var CohereReranker = class extends BaseReranker {
114
144
  httpAgent: this.httpAgent,
115
145
  httpsAgent: this.httpsAgent
116
146
  });
117
- this.logger.debug("Cohere API ID:", response.data?.id);
118
- this.logger.debug("Cohere API Meta:", response.data?.meta);
119
- if (response.data && response.data.results.length) return response.data.results.map((result) => {
147
+ run.model = model;
148
+ run.units = response.data?.meta?.billed_units?.search_units;
149
+ const results = response.data?.results;
150
+ if (!Array.isArray(results) || results.length === 0) return this.fallback(run, "bad_response");
151
+ return this.complete(run, results.map((result) => {
120
152
  const docIndex = result.index;
121
153
  const score = result.relevance_score;
122
154
  return {
123
155
  text: documents[docIndex],
124
156
  score
125
157
  };
126
- });
127
- else {
128
- this.logger.warn("Unexpected response format from Cohere API. Using default ranking.");
129
- return this.getDefaultRanking(documents, topK);
130
- }
158
+ }));
131
159
  } catch (error) {
132
- this.logger.error("Error using Cohere reranker", require_utils.formatErrorForLog(error));
133
- return this.getDefaultRanking(documents, topK);
160
+ return this.fallback(run, "error", require_utils.formatErrorForLog(error));
134
161
  }
135
162
  }
136
163
  };
@@ -143,14 +170,10 @@ const toRagApiCandidate = (text, index) => ({
143
170
  text,
144
171
  base_score: 0
145
172
  });
146
- const buildRagApiCandidates = (documents, logger) => {
147
- if (documents.length <= RAG_API_MAX_CANDIDATES) return documents.map(toRagApiCandidate);
148
- logger.debug(`rag_api fast-v1 accepts at most ${RAG_API_MAX_CANDIDATES} candidates; truncating ${documents.length} to ${RAG_API_MAX_CANDIDATES}.`);
149
- return documents.slice(0, RAG_API_MAX_CANDIDATES).map(toRagApiCandidate);
150
- };
151
- const clampRagApiTopN = (topN, logger) => {
173
+ const buildRagApiCandidates = (documents) => documents.length <= RAG_API_MAX_CANDIDATES ? documents.map(toRagApiCandidate) : documents.slice(0, RAG_API_MAX_CANDIDATES).map(toRagApiCandidate);
174
+ const clampRagApiTopN = (topN, run) => {
152
175
  if (topN <= RAG_API_MAX_TOP_N) return topN;
153
- logger.debug(`rag_api fast-v1 accepts top_n <= ${RAG_API_MAX_TOP_N}; clamping ${topN} to ${RAG_API_MAX_TOP_N}.`);
176
+ run.topKLimit = RAG_API_MAX_TOP_N;
154
177
  return RAG_API_MAX_TOP_N;
155
178
  };
156
179
  const sortRagApiResults = (results) => [...results].sort((a, b) => b.score - a.score || a.index - b.index);
@@ -179,6 +202,7 @@ const withRerankDeadline = (operation, timeout) => {
179
202
  return Promise.race([pending, deadline]).finally(() => clearTimeout(timer));
180
203
  };
181
204
  var RagApiReranker = class extends BaseReranker {
205
+ provider = "rag-api";
182
206
  baseUrl;
183
207
  tokenSupplier;
184
208
  profile;
@@ -194,21 +218,16 @@ var RagApiReranker = class extends BaseReranker {
194
218
  this.httpAgent = httpAgent;
195
219
  this.httpsAgent = httpsAgent;
196
220
  }
197
- async rerank(query, documents, topK = 5) {
221
+ async rerank(query, documents, topK = 5, metrics) {
198
222
  if (documents.length === 0) return [];
199
- this.logger.debug(`Reranking ${documents.length} chunks with rag_api (${this.profile}) using base URL: ${this.baseUrl}`);
223
+ const run = this.beginRerank(documents, topK, metrics);
200
224
  const baseUrl = this.baseUrl;
201
- if (baseUrl == null || baseUrl === "") {
202
- this.logger.warn("RAG_API_URL is not set. Using default ranking.");
203
- return this.getDefaultRanking(documents, topK);
204
- }
225
+ if (baseUrl == null || baseUrl === "") return this.fallback(run, "no_base_url");
205
226
  const tokenSupplier = this.tokenSupplier;
206
- if (tokenSupplier == null) {
207
- this.logger.warn("No rag_api token supplier configured. Using default ranking.");
208
- return this.getDefaultRanking(documents, topK);
209
- }
210
- const candidates = buildRagApiCandidates(documents, this.logger);
211
- const topN = clampRagApiTopN(Math.max(0, topK), this.logger);
227
+ if (tokenSupplier == null) return this.fallback(run, "no_token_supplier");
228
+ const candidates = buildRagApiCandidates(documents);
229
+ const topN = clampRagApiTopN(Math.max(0, topK), run);
230
+ run.dropped = documents.length - candidates.length;
212
231
  const requestData = {
213
232
  profile: this.profile,
214
233
  query,
@@ -229,33 +248,26 @@ var RagApiReranker = class extends BaseReranker {
229
248
  signal
230
249
  })).data;
231
250
  }, this.timeout);
232
- this.logger.debug("rag_api rerank model:", data?.model);
251
+ run.model = data?.model;
233
252
  const rawResults = data?.results;
234
- if (!Array.isArray(rawResults) || rawResults.length === 0) {
235
- this.logger.warn("Unexpected response format from rag_api rerank. Using default ranking.");
236
- return this.getDefaultRanking(documents, topK);
237
- }
238
- if (!isValidRagApiBatch(rawResults, candidates.length)) {
239
- this.logger.warn("rag_api rerank response contained no valid results. Using default ranking.");
240
- return this.getDefaultRanking(documents, topK);
241
- }
242
- return sortRagApiResults(rawResults).slice(0, topN).map((result) => ({
253
+ if (!Array.isArray(rawResults) || rawResults.length === 0) return this.fallback(run, "bad_response");
254
+ if (!isValidRagApiBatch(rawResults, candidates.length)) return this.fallback(run, "invalid_results");
255
+ return this.complete(run, sortRagApiResults(rawResults).slice(0, topN).map((result) => ({
243
256
  text: documents[result.index],
244
257
  score: result.score
245
- }));
258
+ })));
246
259
  } catch (error) {
247
- this.logger.error("Error using rag_api reranker", require_utils.formatErrorForLog(error));
248
- return this.getDefaultRanking(documents, topK);
260
+ return this.fallback(run, "error", require_utils.formatErrorForLog(error));
249
261
  }
250
262
  }
251
263
  };
252
264
  var InfinityReranker = class extends BaseReranker {
265
+ provider = "infinity";
253
266
  constructor(logger) {
254
267
  super(logger);
255
268
  }
256
- async rerank(query, documents, topK = 5) {
257
- this.logger.debug(`Reranking ${documents.length} chunks with Infinity (placeholder)`);
258
- return this.getDefaultRanking(documents, topK);
269
+ async rerank(query, documents, topK = 5, metrics) {
270
+ return this.fallback(this.beginRerank(documents, topK, metrics), "placeholder");
259
271
  }
260
272
  };
261
273
  const createReranker = (config) => {
@@ -1 +1 @@
1
- {"version":3,"file":"rerankers.cjs","names":["createDefaultLogger","formatErrorForLog"],"sources":["../../../../src/tools/search/rerankers.ts"],"mappings":"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"}
1
+ {"version":3,"file":"rerankers.cjs","names":["createDefaultLogger","createSearchMetrics","formatErrorForLog"],"sources":["../../../../src/tools/search/rerankers.ts"],"mappings":"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"}