@librechat/agents 2.4.321 → 2.4.322

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 (45) hide show
  1. package/dist/cjs/tools/search/firecrawl.cjs +6 -4
  2. package/dist/cjs/tools/search/firecrawl.cjs.map +1 -1
  3. package/dist/cjs/tools/search/format.cjs +6 -0
  4. package/dist/cjs/tools/search/format.cjs.map +1 -1
  5. package/dist/cjs/tools/search/rerankers.cjs +43 -36
  6. package/dist/cjs/tools/search/rerankers.cjs.map +1 -1
  7. package/dist/cjs/tools/search/schema.cjs +70 -0
  8. package/dist/cjs/tools/search/schema.cjs.map +1 -0
  9. package/dist/cjs/tools/search/search.cjs +62 -25
  10. package/dist/cjs/tools/search/search.cjs.map +1 -1
  11. package/dist/cjs/tools/search/tool.cjs +162 -47
  12. package/dist/cjs/tools/search/tool.cjs.map +1 -1
  13. package/dist/cjs/tools/search/utils.cjs +34 -5
  14. package/dist/cjs/tools/search/utils.cjs.map +1 -1
  15. package/dist/esm/tools/search/firecrawl.mjs +6 -4
  16. package/dist/esm/tools/search/firecrawl.mjs.map +1 -1
  17. package/dist/esm/tools/search/format.mjs +7 -1
  18. package/dist/esm/tools/search/format.mjs.map +1 -1
  19. package/dist/esm/tools/search/rerankers.mjs +43 -36
  20. package/dist/esm/tools/search/rerankers.mjs.map +1 -1
  21. package/dist/esm/tools/search/schema.mjs +61 -0
  22. package/dist/esm/tools/search/schema.mjs.map +1 -0
  23. package/dist/esm/tools/search/search.mjs +63 -26
  24. package/dist/esm/tools/search/search.mjs.map +1 -1
  25. package/dist/esm/tools/search/tool.mjs +161 -46
  26. package/dist/esm/tools/search/tool.mjs.map +1 -1
  27. package/dist/esm/tools/search/utils.mjs +33 -6
  28. package/dist/esm/tools/search/utils.mjs.map +1 -1
  29. package/dist/types/tools/search/firecrawl.d.ts +1 -0
  30. package/dist/types/tools/search/rerankers.d.ts +8 -4
  31. package/dist/types/tools/search/schema.d.ts +16 -0
  32. package/dist/types/tools/search/tool.d.ts +13 -0
  33. package/dist/types/tools/search/types.d.ts +34 -0
  34. package/dist/types/tools/search/utils.d.ts +9 -2
  35. package/package.json +3 -2
  36. package/src/scripts/search.ts +3 -3
  37. package/src/tools/search/firecrawl.ts +9 -4
  38. package/src/tools/search/format.ts +8 -1
  39. package/src/tools/search/rerankers.ts +57 -36
  40. package/src/tools/search/schema.ts +63 -0
  41. package/src/tools/search/search.ts +74 -22
  42. package/src/tools/search/tool.ts +217 -44
  43. package/src/tools/search/types.ts +35 -0
  44. package/src/tools/search/utils.ts +37 -5
  45. package/src/utils/llmConfig.ts +1 -1
@@ -1,6 +1,8 @@
1
1
  import { z } from 'zod';
2
+ import type { Logger as WinstonLogger } from 'winston';
2
3
  import type { RunnableConfig } from '@langchain/core/runnables';
3
4
  import type { BaseReranker } from './rerankers';
5
+ import { DATE_RANGE } from './schema';
4
6
 
5
7
  export type SearchProvider = 'serper' | 'searxng';
6
8
  export type RerankerType = 'infinity' | 'jina' | 'cohere' | 'none';
@@ -86,6 +88,7 @@ export interface ProcessSourcesConfig {
86
88
  strategies?: string[];
87
89
  filterContent?: boolean;
88
90
  reranker?: BaseReranker;
91
+ logger?: Logger;
89
92
  }
90
93
 
91
94
  export interface FirecrawlConfig {
@@ -135,10 +138,15 @@ export interface CohereRerankerResponse {
135
138
  };
136
139
  }
137
140
 
141
+ export type SafeSearchLevel = 0 | 1 | 2;
142
+
143
+ export type Logger = WinstonLogger;
138
144
  export interface SearchToolConfig
139
145
  extends SearchConfig,
140
146
  ProcessSourcesConfig,
141
147
  FirecrawlConfig {
148
+ logger?: Logger;
149
+ safeSearch?: SafeSearchLevel;
142
150
  jinaApiKey?: string;
143
151
  cohereApiKey?: string;
144
152
  rerankerType?: RerankerType;
@@ -251,12 +259,19 @@ export interface FirecrawlScraperConfig {
251
259
  apiUrl?: string;
252
260
  formats?: string[];
253
261
  timeout?: number;
262
+ logger?: Logger;
254
263
  }
255
264
 
256
265
  export type GetSourcesParams = {
257
266
  query: string;
267
+ date?: DATE_RANGE;
258
268
  country?: string;
259
269
  numResults?: number;
270
+ safeSearch?: SearchToolConfig['safeSearch'];
271
+ images?: boolean;
272
+ videos?: boolean;
273
+ news?: boolean;
274
+ type?: 'search' | 'images' | 'videos' | 'news';
260
275
  };
261
276
 
262
277
  /** Serper API */
@@ -435,6 +450,13 @@ export interface SerperSearchInput {
435
450
  */
436
451
  autocorrect?: boolean;
437
452
  page?: number;
453
+ /**
454
+ * Date range for search results
455
+ * Options: "h" (past hour), "d" (past 24 hours), "w" (past week),
456
+ * "m" (past month), "y" (past year)
457
+ * `qdr:${DATE_RANGE}`
458
+ */
459
+ tbs?: string;
438
460
  }
439
461
 
440
462
  export type SerperResultData = {
@@ -564,6 +586,7 @@ export type ProcessSourcesFields = {
564
586
  result: SearchResult;
565
587
  numElements: number;
566
588
  query: string;
589
+ news: boolean;
567
590
  proMode: boolean;
568
591
  onGetHighlights: SearchToolConfig['onGetHighlights'];
569
592
  };
@@ -571,16 +594,28 @@ export type ProcessSourcesFields = {
571
594
  export type SearchToolSchema = z.ZodObject<
572
595
  {
573
596
  query: z.ZodString;
597
+ date: z.ZodOptional<z.ZodNativeEnum<typeof DATE_RANGE>>;
574
598
  country?: z.ZodOptional<z.ZodString>;
599
+ images: z.ZodOptional<z.ZodBoolean>;
600
+ videos: z.ZodOptional<z.ZodBoolean>;
601
+ news: z.ZodOptional<z.ZodBoolean>;
575
602
  },
576
603
  'strip',
577
604
  z.ZodTypeAny,
578
605
  {
579
606
  query: string;
607
+ date?: DATE_RANGE;
580
608
  country?: unknown;
609
+ images?: boolean;
610
+ videos?: boolean;
611
+ news?: boolean;
581
612
  },
582
613
  {
583
614
  query: string;
615
+ date?: DATE_RANGE;
584
616
  country?: unknown;
617
+ images?: boolean;
618
+ videos?: boolean;
619
+ news?: boolean;
585
620
  }
586
621
  >;
@@ -1,9 +1,36 @@
1
1
  /* eslint-disable no-console */
2
+
2
3
  import type * as t from './types';
3
4
 
5
+ /**
6
+ * Singleton instance of the default logger
7
+ */
8
+ let defaultLoggerInstance: t.Logger | null = null;
9
+
10
+ /**
11
+ * Creates a default logger that maps to console methods
12
+ * Uses a singleton pattern to avoid creating multiple instances
13
+ * @returns A default logger that implements the Logger interface
14
+ */
15
+ export const createDefaultLogger = (): t.Logger => {
16
+ if (!defaultLoggerInstance) {
17
+ defaultLoggerInstance = {
18
+ error: console.error,
19
+ warn: console.warn,
20
+ info: console.info,
21
+ debug: console.debug,
22
+ } as t.Logger;
23
+ }
24
+ return defaultLoggerInstance;
25
+ };
26
+
27
+ export const fileExtRegex =
28
+ /\.(pdf|jpe?g|png|gif|svg|webp|bmp|ico|tiff?|avif|heic|doc[xm]?|xls[xm]?|ppt[xm]?|zip|rar|mp[34]|mov|avi|wav)$/i;
29
+
4
30
  export const getDomainName = (
5
31
  link: string,
6
- metadata?: t.ScrapeMetadata
32
+ metadata?: t.ScrapeMetadata,
33
+ logger?: t.Logger
7
34
  ): string | undefined => {
8
35
  try {
9
36
  const url = metadata?.sourceURL ?? metadata?.url ?? (link || '');
@@ -13,7 +40,11 @@ export const getDomainName = (
13
40
  }
14
41
  } catch (e) {
15
42
  // URL parsing failed
16
- console.error('Error parsing URL:', e);
43
+ if (logger) {
44
+ logger.error('Error parsing URL:', e);
45
+ } else {
46
+ console.error('Error parsing URL:', e);
47
+ }
17
48
  }
18
49
 
19
50
  return;
@@ -21,9 +52,10 @@ export const getDomainName = (
21
52
 
22
53
  export function getAttribution(
23
54
  link: string,
24
- metadata?: t.ScrapeMetadata
55
+ metadata?: t.ScrapeMetadata,
56
+ logger?: t.Logger
25
57
  ): string | undefined {
26
- if (!metadata) return getDomainName(link, metadata);
58
+ if (!metadata) return getDomainName(link, metadata, logger);
27
59
 
28
60
  const twitterSite = metadata['twitter:site'];
29
61
  const twitterSiteFormatted =
@@ -43,5 +75,5 @@ export function getAttribution(
43
75
  return attribution;
44
76
  }
45
77
 
46
- return getDomainName(link, metadata);
78
+ return getDomainName(link, metadata, logger);
47
79
  }
@@ -6,7 +6,7 @@ import type * as t from '@/types';
6
6
  export const llmConfigs: Record<string, t.LLMConfig | undefined> = {
7
7
  [Providers.OPENAI]: {
8
8
  provider: Providers.OPENAI,
9
- model: 'gpt-4o-mini',
9
+ model: 'gpt-4.1',
10
10
  temperature: 0.7,
11
11
  streaming: true,
12
12
  streamUsage: true,