@librechat/agents 3.7.5 → 3.7.6

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.
@@ -13,6 +13,12 @@ const KEENABLE_DATE_RANGES = {
13
13
  ["m"]: "1mo",
14
14
  ["y"]: "1y"
15
15
  };
16
+ const SNIPPET_MAX_LENGTH = 500;
17
+ function toSnippet(result) {
18
+ const snippet = (result.snippet ?? "").replace(/\s+/g, " ").trim();
19
+ const description = (result.description ?? "").replace(/\s+/g, " ").trim();
20
+ return (snippet !== "" ? snippet : description).slice(0, SNIPPET_MAX_LENGTH);
21
+ }
16
22
  const createKeenableAPI = (apiKey, apiUrl, options) => {
17
23
  const resolvedKey = apiKey ?? process.env.KEENABLE_API_KEY;
18
24
  const hasKey = resolvedKey != null && resolvedKey !== "";
@@ -44,7 +50,7 @@ const createKeenableAPI = (apiKey, apiUrl, options) => {
44
50
  data: { organic: (Array.isArray(response.data.results) ? response.data.results.slice(0, maxResults) : []).map((result) => ({
45
51
  title: result.title ?? "",
46
52
  link: result.url ?? "",
47
- snippet: result.description ?? result.snippet ?? "",
53
+ snippet: toSnippet(result),
48
54
  date: result.published_at
49
55
  })) }
50
56
  };
@@ -1 +1 @@
1
- {"version":3,"file":"keenable-search.cjs","names":[],"sources":["../../../../src/tools/search/keenable-search.ts"],"mappings":";;;;;AAIA,MAAM,2BAA2B;AAIjC,MAAM,2BAA2B;AACjC,MAAM,0BAA0B;AAChC,MAAM,uBAAmD;QAC/B;QACI;QACJ;QACC;QACD;AAC1B;AAEA,MAAa,qBACX,QACA,QACA,YAGG;CACH,MAAM,cAAc,UAAU,QAAQ,IAAI;CAC1C,MAAM,SAAS,eAAe,QAAQ,gBAAgB;CACtD,MAAM,UAAU,SAAS,WAAW;CACpC,MAAM,cACJ,UACA,QAAQ,IAAI,qBACX,SAAS,2BAA2B;CAKvC,MAAM,UAAkC;EACtC,gBAAgB;EAChB,oBAAoB,SAAS,oBAAoB;CACnD;CACA,IAAI,QACF,QAAQ,eAAe;CAGzB,MAAM,aAAa,OAAO,EACxB,OACA,MACA,aAAa,QACoC;EACjD,IAAI,CAAC,MAAM,KAAK,GACd,OAAO;GAAE,SAAS;GAAO,OAAO;EAAwB;EAG1D,IAAI;GAGF,MAAM,UAAmC,EAAE,MAAM;GACjD,IAAI,SAAS,QAAQ,QAAQ,QAAQ,SAAS,IAC5C,QAAQ,OAAO,QAAQ;GAEzB,IAAI,QAAQ,MACV,QAAQ,kBAAkB,qBAAqB;GAGjD,MAAM,WAAW,MAAM,MAAA,QAAM,KAC3B,aACA,SACA;IACE;IACA;IACA,WAAW,SAAS;IACpB,YAAY,SAAS;GACvB,CACF;GAEA,MAAM,aAAa,KAAK,IACtB,KAAK,IAAI,GAAG,SAAS,cAAc,UAAU,GAC7C,EACF;GAYA,OAAO;IAAE,SAAS;IAAM,MAAM,EAAE,UAXb,MAAM,QAAQ,SAAS,KAAK,OAAO,IAClD,SAAS,KAAK,QAAQ,MAAM,GAAG,UAAU,IACzC,CAAC,EAAA,CAEyC,KAAK,YAAY;KAC7D,OAAO,OAAO,SAAS;KACvB,MAAM,OAAO,OAAO;KACpB,SAAS,OAAO,eAAe,OAAO,WAAW;KACjD,MAAM,OAAO;IACf,EAEsC,EAAE;GAAE;EAC5C,SAAS,OAAO;GAGd,OAAO;IACL,SAAS;IACT,OAAO,gCAHP,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;GAIvD;EACF;CACF;CAEA,OAAO,EAAE,WAAW;AACtB"}
1
+ {"version":3,"file":"keenable-search.cjs","names":[],"sources":["../../../../src/tools/search/keenable-search.ts"],"mappings":";;;;;AAIA,MAAM,2BAA2B;AAIjC,MAAM,2BAA2B;AACjC,MAAM,0BAA0B;AAChC,MAAM,uBAAmD;QAC/B;QACI;QACJ;QACC;QACD;AAC1B;AAKA,MAAM,qBAAqB;AAO3B,SAAS,UAAU,QAAwC;CACzD,MAAM,WAAW,OAAO,WAAW,GAAA,CAAI,QAAQ,QAAQ,GAAG,CAAC,CAAC,KAAK;CACjE,MAAM,eAAe,OAAO,eAAe,GAAA,CAAI,QAAQ,QAAQ,GAAG,CAAC,CAAC,KAAK;CAEzE,QADa,YAAY,KAAK,UAAU,YAAA,CAC5B,MAAM,GAAG,kBAAkB;AACzC;AAEA,MAAa,qBACX,QACA,QACA,YAGG;CACH,MAAM,cAAc,UAAU,QAAQ,IAAI;CAC1C,MAAM,SAAS,eAAe,QAAQ,gBAAgB;CACtD,MAAM,UAAU,SAAS,WAAW;CACpC,MAAM,cACJ,UACA,QAAQ,IAAI,qBACX,SAAS,2BAA2B;CAKvC,MAAM,UAAkC;EACtC,gBAAgB;EAChB,oBAAoB,SAAS,oBAAoB;CACnD;CACA,IAAI,QACF,QAAQ,eAAe;CAGzB,MAAM,aAAa,OAAO,EACxB,OACA,MACA,aAAa,QACoC;EACjD,IAAI,CAAC,MAAM,KAAK,GACd,OAAO;GAAE,SAAS;GAAO,OAAO;EAAwB;EAG1D,IAAI;GAGF,MAAM,UAAmC,EAAE,MAAM;GACjD,IAAI,SAAS,QAAQ,QAAQ,QAAQ,SAAS,IAC5C,QAAQ,OAAO,QAAQ;GAEzB,IAAI,QAAQ,MACV,QAAQ,kBAAkB,qBAAqB;GAGjD,MAAM,WAAW,MAAM,MAAA,QAAM,KAC3B,aACA,SACA;IACE;IACA;IACA,WAAW,SAAS;IACpB,YAAY,SAAS;GACvB,CACF;GAEA,MAAM,aAAa,KAAK,IACtB,KAAK,IAAI,GAAG,SAAS,cAAc,UAAU,GAC7C,EACF;GAYA,OAAO;IAAE,SAAS;IAAM,MAAM,EAAE,UAXb,MAAM,QAAQ,SAAS,KAAK,OAAO,IAClD,SAAS,KAAK,QAAQ,MAAM,GAAG,UAAU,IACzC,CAAC,EAAA,CAEyC,KAAK,YAAY;KAC7D,OAAO,OAAO,SAAS;KACvB,MAAM,OAAO,OAAO;KACpB,SAAS,UAAU,MAAM;KACzB,MAAM,OAAO;IACf,EAEsC,EAAE;GAAE;EAC5C,SAAS,OAAO;GAGd,OAAO;IACL,SAAS;IACT,OAAO,gCAHP,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;GAIvD;EACF;CACF;CAEA,OAAO,EAAE,WAAW;AACtB"}
@@ -11,6 +11,12 @@ const KEENABLE_DATE_RANGES = {
11
11
  ["m"]: "1mo",
12
12
  ["y"]: "1y"
13
13
  };
14
+ const SNIPPET_MAX_LENGTH = 500;
15
+ function toSnippet(result) {
16
+ const snippet = (result.snippet ?? "").replace(/\s+/g, " ").trim();
17
+ const description = (result.description ?? "").replace(/\s+/g, " ").trim();
18
+ return (snippet !== "" ? snippet : description).slice(0, SNIPPET_MAX_LENGTH);
19
+ }
14
20
  const createKeenableAPI = (apiKey, apiUrl, options) => {
15
21
  const resolvedKey = apiKey ?? process.env.KEENABLE_API_KEY;
16
22
  const hasKey = resolvedKey != null && resolvedKey !== "";
@@ -42,7 +48,7 @@ const createKeenableAPI = (apiKey, apiUrl, options) => {
42
48
  data: { organic: (Array.isArray(response.data.results) ? response.data.results.slice(0, maxResults) : []).map((result) => ({
43
49
  title: result.title ?? "",
44
50
  link: result.url ?? "",
45
- snippet: result.description ?? result.snippet ?? "",
51
+ snippet: toSnippet(result),
46
52
  date: result.published_at
47
53
  })) }
48
54
  };
@@ -1 +1 @@
1
- {"version":3,"file":"keenable-search.mjs","names":[],"sources":["../../../../src/tools/search/keenable-search.ts"],"mappings":";;;AAIA,MAAM,2BAA2B;AAIjC,MAAM,2BAA2B;AACjC,MAAM,0BAA0B;AAChC,MAAM,uBAAmD;QAC/B;QACI;QACJ;QACC;QACD;AAC1B;AAEA,MAAa,qBACX,QACA,QACA,YAGG;CACH,MAAM,cAAc,UAAU,QAAQ,IAAI;CAC1C,MAAM,SAAS,eAAe,QAAQ,gBAAgB;CACtD,MAAM,UAAU,SAAS,WAAW;CACpC,MAAM,cACJ,UACA,QAAQ,IAAI,qBACX,SAAS,2BAA2B;CAKvC,MAAM,UAAkC;EACtC,gBAAgB;EAChB,oBAAoB,SAAS,oBAAoB;CACnD;CACA,IAAI,QACF,QAAQ,eAAe;CAGzB,MAAM,aAAa,OAAO,EACxB,OACA,MACA,aAAa,QACoC;EACjD,IAAI,CAAC,MAAM,KAAK,GACd,OAAO;GAAE,SAAS;GAAO,OAAO;EAAwB;EAG1D,IAAI;GAGF,MAAM,UAAmC,EAAE,MAAM;GACjD,IAAI,SAAS,QAAQ,QAAQ,QAAQ,SAAS,IAC5C,QAAQ,OAAO,QAAQ;GAEzB,IAAI,QAAQ,MACV,QAAQ,kBAAkB,qBAAqB;GAGjD,MAAM,WAAW,MAAM,MAAM,KAC3B,aACA,SACA;IACE;IACA;IACA,WAAW,SAAS;IACpB,YAAY,SAAS;GACvB,CACF;GAEA,MAAM,aAAa,KAAK,IACtB,KAAK,IAAI,GAAG,SAAS,cAAc,UAAU,GAC7C,EACF;GAYA,OAAO;IAAE,SAAS;IAAM,MAAM,EAAE,UAXb,MAAM,QAAQ,SAAS,KAAK,OAAO,IAClD,SAAS,KAAK,QAAQ,MAAM,GAAG,UAAU,IACzC,CAAC,EAAA,CAEyC,KAAK,YAAY;KAC7D,OAAO,OAAO,SAAS;KACvB,MAAM,OAAO,OAAO;KACpB,SAAS,OAAO,eAAe,OAAO,WAAW;KACjD,MAAM,OAAO;IACf,EAEsC,EAAE;GAAE;EAC5C,SAAS,OAAO;GAGd,OAAO;IACL,SAAS;IACT,OAAO,gCAHP,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;GAIvD;EACF;CACF;CAEA,OAAO,EAAE,WAAW;AACtB"}
1
+ {"version":3,"file":"keenable-search.mjs","names":[],"sources":["../../../../src/tools/search/keenable-search.ts"],"mappings":";;;AAIA,MAAM,2BAA2B;AAIjC,MAAM,2BAA2B;AACjC,MAAM,0BAA0B;AAChC,MAAM,uBAAmD;QAC/B;QACI;QACJ;QACC;QACD;AAC1B;AAKA,MAAM,qBAAqB;AAO3B,SAAS,UAAU,QAAwC;CACzD,MAAM,WAAW,OAAO,WAAW,GAAA,CAAI,QAAQ,QAAQ,GAAG,CAAC,CAAC,KAAK;CACjE,MAAM,eAAe,OAAO,eAAe,GAAA,CAAI,QAAQ,QAAQ,GAAG,CAAC,CAAC,KAAK;CAEzE,QADa,YAAY,KAAK,UAAU,YAAA,CAC5B,MAAM,GAAG,kBAAkB;AACzC;AAEA,MAAa,qBACX,QACA,QACA,YAGG;CACH,MAAM,cAAc,UAAU,QAAQ,IAAI;CAC1C,MAAM,SAAS,eAAe,QAAQ,gBAAgB;CACtD,MAAM,UAAU,SAAS,WAAW;CACpC,MAAM,cACJ,UACA,QAAQ,IAAI,qBACX,SAAS,2BAA2B;CAKvC,MAAM,UAAkC;EACtC,gBAAgB;EAChB,oBAAoB,SAAS,oBAAoB;CACnD;CACA,IAAI,QACF,QAAQ,eAAe;CAGzB,MAAM,aAAa,OAAO,EACxB,OACA,MACA,aAAa,QACoC;EACjD,IAAI,CAAC,MAAM,KAAK,GACd,OAAO;GAAE,SAAS;GAAO,OAAO;EAAwB;EAG1D,IAAI;GAGF,MAAM,UAAmC,EAAE,MAAM;GACjD,IAAI,SAAS,QAAQ,QAAQ,QAAQ,SAAS,IAC5C,QAAQ,OAAO,QAAQ;GAEzB,IAAI,QAAQ,MACV,QAAQ,kBAAkB,qBAAqB;GAGjD,MAAM,WAAW,MAAM,MAAM,KAC3B,aACA,SACA;IACE;IACA;IACA,WAAW,SAAS;IACpB,YAAY,SAAS;GACvB,CACF;GAEA,MAAM,aAAa,KAAK,IACtB,KAAK,IAAI,GAAG,SAAS,cAAc,UAAU,GAC7C,EACF;GAYA,OAAO;IAAE,SAAS;IAAM,MAAM,EAAE,UAXb,MAAM,QAAQ,SAAS,KAAK,OAAO,IAClD,SAAS,KAAK,QAAQ,MAAM,GAAG,UAAU,IACzC,CAAC,EAAA,CAEyC,KAAK,YAAY;KAC7D,OAAO,OAAO,SAAS;KACvB,MAAM,OAAO,OAAO;KACpB,SAAS,UAAU,MAAM;KACzB,MAAM,OAAO;IACf,EAEsC,EAAE;GAAE;EAC5C,SAAS,OAAO;GAGd,OAAO;IACL,SAAS;IACT,OAAO,gCAHP,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;GAIvD;EACF;CACF;CAEA,OAAO,EAAE,WAAW;AACtB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@librechat/agents",
3
- "version": "3.7.5",
3
+ "version": "3.7.6",
4
4
  "reova": {
5
5
  "enabled": true,
6
6
  "endpoint": "https://telemetry.reo.dev/data"
@@ -16,6 +16,23 @@ const KEENABLE_DATE_RANGES: Record<DATE_RANGE, string> = {
16
16
  [DATE_RANGE.PAST_YEAR]: '1y',
17
17
  };
18
18
 
19
+ /** Characters of page text kept per result. Keenable returns the whole page on
20
+ * every search result, an order of magnitude more than the other providers here
21
+ * return, which would crowd out the reranker and the LLM output budget. */
22
+ const SNIPPET_MAX_LENGTH = 500;
23
+
24
+ /** Keenable sends both `description` and `snippet` on every result: `snippet`
25
+ * carries the page text and `description` is the page's meta description, which
26
+ * is empty for most pages. Either field can arrive as an empty string, so the
27
+ * pick is on emptiness rather than nullishness: a `??` chain would keep an empty
28
+ * `snippet` over a `description` that does carry text. */
29
+ function toSnippet(result: t.KeenableSearchResult): string {
30
+ const snippet = (result.snippet ?? '').replace(/\s+/g, ' ').trim();
31
+ const description = (result.description ?? '').replace(/\s+/g, ' ').trim();
32
+ const text = snippet !== '' ? snippet : description;
33
+ return text.slice(0, SNIPPET_MAX_LENGTH);
34
+ }
35
+
19
36
  export const createKeenableAPI = (
20
37
  apiKey?: string,
21
38
  apiUrl?: string,
@@ -84,7 +101,7 @@ export const createKeenableAPI = (
84
101
  const organic: t.OrganicResult[] = rawResults.map((result) => ({
85
102
  title: result.title ?? '',
86
103
  link: result.url ?? '',
87
- snippet: result.description ?? result.snippet ?? '',
104
+ snippet: toSnippet(result),
88
105
  date: result.published_at,
89
106
  }));
90
107