@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.
- package/dist/cjs/tools/search/firecrawl.cjs +6 -4
- package/dist/cjs/tools/search/firecrawl.cjs.map +1 -1
- package/dist/cjs/tools/search/format.cjs +6 -0
- package/dist/cjs/tools/search/format.cjs.map +1 -1
- package/dist/cjs/tools/search/rerankers.cjs +43 -36
- package/dist/cjs/tools/search/rerankers.cjs.map +1 -1
- package/dist/cjs/tools/search/schema.cjs +70 -0
- package/dist/cjs/tools/search/schema.cjs.map +1 -0
- package/dist/cjs/tools/search/search.cjs +62 -25
- package/dist/cjs/tools/search/search.cjs.map +1 -1
- package/dist/cjs/tools/search/tool.cjs +162 -47
- package/dist/cjs/tools/search/tool.cjs.map +1 -1
- package/dist/cjs/tools/search/utils.cjs +34 -5
- package/dist/cjs/tools/search/utils.cjs.map +1 -1
- package/dist/esm/tools/search/firecrawl.mjs +6 -4
- package/dist/esm/tools/search/firecrawl.mjs.map +1 -1
- package/dist/esm/tools/search/format.mjs +7 -1
- package/dist/esm/tools/search/format.mjs.map +1 -1
- package/dist/esm/tools/search/rerankers.mjs +43 -36
- package/dist/esm/tools/search/rerankers.mjs.map +1 -1
- package/dist/esm/tools/search/schema.mjs +61 -0
- package/dist/esm/tools/search/schema.mjs.map +1 -0
- package/dist/esm/tools/search/search.mjs +63 -26
- package/dist/esm/tools/search/search.mjs.map +1 -1
- package/dist/esm/tools/search/tool.mjs +161 -46
- package/dist/esm/tools/search/tool.mjs.map +1 -1
- package/dist/esm/tools/search/utils.mjs +33 -6
- package/dist/esm/tools/search/utils.mjs.map +1 -1
- package/dist/types/tools/search/firecrawl.d.ts +1 -0
- package/dist/types/tools/search/rerankers.d.ts +8 -4
- package/dist/types/tools/search/schema.d.ts +16 -0
- package/dist/types/tools/search/tool.d.ts +13 -0
- package/dist/types/tools/search/types.d.ts +34 -0
- package/dist/types/tools/search/utils.d.ts +9 -2
- package/package.json +3 -2
- package/src/scripts/search.ts +3 -3
- package/src/tools/search/firecrawl.ts +9 -4
- package/src/tools/search/format.ts +8 -1
- package/src/tools/search/rerankers.ts +57 -36
- package/src/tools/search/schema.ts +63 -0
- package/src/tools/search/search.ts +74 -22
- package/src/tools/search/tool.ts +217 -44
- package/src/tools/search/types.ts +35 -0
- package/src/tools/search/utils.ts +37 -5
- 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
|
-
|
|
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
|
}
|
package/src/utils/llmConfig.ts
CHANGED
|
@@ -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-
|
|
9
|
+
model: 'gpt-4.1',
|
|
10
10
|
temperature: 0.7,
|
|
11
11
|
streaming: true,
|
|
12
12
|
streamUsage: true,
|