@vybestack/llxprt-code-core 0.1.19 → 0.1.20
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/README.md +9 -0
- package/dist/src/auth/anthropic-device-flow.d.ts +1 -1
- package/dist/src/auth/anthropic-device-flow.js +4 -2
- package/dist/src/auth/anthropic-device-flow.js.map +1 -1
- package/dist/src/code_assist/setup.js +49 -15
- package/dist/src/code_assist/setup.js.map +1 -1
- package/dist/src/config/config.d.ts +9 -6
- package/dist/src/config/config.js +24 -21
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/core/client.d.ts +3 -1
- package/dist/src/core/client.js +22 -6
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/contentGenerator.js +0 -2
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/coreToolScheduler.d.ts +0 -1
- package/dist/src/core/coreToolScheduler.js +0 -3
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/geminiChat.js +57 -5
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.js +158 -3
- package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
- package/dist/src/core/prompts.js +19 -2
- package/dist/src/core/prompts.js.map +1 -1
- package/dist/src/filters/EmojiFilter.d.ts +122 -0
- package/dist/src/filters/EmojiFilter.js +327 -0
- package/dist/src/filters/EmojiFilter.js.map +1 -0
- package/dist/src/ide/detect-ide.d.ts +2 -0
- package/dist/src/ide/detect-ide.js +18 -2
- package/dist/src/ide/detect-ide.js.map +1 -1
- package/dist/src/ide/ide-installer.js +1 -26
- package/dist/src/ide/ide-installer.js.map +1 -1
- package/dist/src/ide/ideContext.d.ts +6 -6
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.js +3 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/oauth-provider.d.ts +0 -1
- package/dist/src/mcp/oauth-provider.js +2 -3
- package/dist/src/mcp/oauth-provider.js.map +1 -1
- package/dist/src/prompt-config/defaults/core-defaults.js +190 -6
- package/dist/src/prompt-config/defaults/core-defaults.js.map +1 -1
- package/dist/src/prompt-config/defaults/provider-defaults.js +162 -6
- package/dist/src/prompt-config/defaults/provider-defaults.js.map +1 -1
- package/dist/src/prompt-config/defaults/providers/anthropic/core.md +81 -0
- package/dist/src/prompt-config/defaults/providers/anthropic/tools/glob.md +34 -0
- package/dist/src/prompt-config/defaults/providers/anthropic/tools/list-directory.md +11 -0
- package/dist/src/prompt-config/defaults/providers/anthropic/tools/read-file.md +14 -0
- package/dist/src/prompt-config/defaults/providers/anthropic/tools/read-many-files.md +31 -0
- package/dist/src/prompt-config/defaults/providers/anthropic/tools/replace.md +41 -0
- package/dist/src/prompt-config/defaults/providers/anthropic/tools/run-shell-command.md +32 -0
- package/dist/src/prompt-config/defaults/providers/anthropic/tools/save-memory.md +35 -0
- package/dist/src/prompt-config/defaults/providers/anthropic/tools/search-file-content.md +44 -0
- package/dist/src/prompt-config/defaults/providers/anthropic/tools/todo-write.md +45 -0
- package/dist/src/prompt-config/defaults/providers/anthropic/tools/write-file.md +11 -0
- package/dist/src/prompt-config/defaults/tool-defaults.js +163 -6
- package/dist/src/prompt-config/defaults/tool-defaults.js.map +1 -1
- package/dist/src/prompt-config/prompt-service.d.ts +1 -1
- package/dist/src/prompt-config/prompt-service.js +5 -3
- package/dist/src/prompt-config/prompt-service.js.map +1 -1
- package/dist/src/providers/LoggingProviderWrapper.js +0 -12
- package/dist/src/providers/LoggingProviderWrapper.js.map +1 -1
- package/dist/src/providers/ProviderContentGenerator.d.ts +2 -2
- package/dist/src/providers/ProviderContentGenerator.js +5 -3
- package/dist/src/providers/ProviderContentGenerator.js.map +1 -1
- package/dist/src/providers/adapters/GeminiCompatibleWrapper.js +1 -1
- package/dist/src/providers/adapters/GeminiCompatibleWrapper.js.map +1 -1
- package/dist/src/providers/anthropic/AnthropicProvider.d.ts +1 -1
- package/dist/src/providers/anthropic/AnthropicProvider.js +95 -33
- package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
- package/dist/src/providers/gemini/GeminiProvider.d.ts +0 -5
- package/dist/src/providers/gemini/GeminiProvider.js +0 -25
- package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
- package/dist/src/providers/openai/OpenAIProvider.js +2 -1
- package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
- package/dist/src/providers/openai/parseResponsesStream.js +6 -6
- package/dist/src/providers/openai/parseResponsesStream.js.map +1 -1
- package/dist/src/services/todo-context-tracker.d.ts +1 -1
- package/dist/src/services/todo-context-tracker.js +5 -3
- package/dist/src/services/todo-context-tracker.js.map +1 -1
- package/dist/src/settings/SettingsService.js.map +1 -1
- package/dist/src/settings/types.d.ts +16 -0
- package/dist/src/telemetry/integration.test.circular.js +2 -40
- package/dist/src/telemetry/integration.test.circular.js.map +1 -1
- package/dist/src/telemetry/loggers.js +0 -20
- package/dist/src/telemetry/loggers.js.map +1 -1
- package/dist/src/telemetry/sdk.d.ts +1 -1
- package/dist/src/telemetry/sdk.js +13 -29
- package/dist/src/telemetry/sdk.js.map +1 -1
- package/dist/src/test-utils/tools.js +2 -2
- package/dist/src/test-utils/tools.js.map +1 -1
- package/dist/src/tools/edit.js +85 -20
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/glob.js +2 -2
- package/dist/src/tools/glob.js.map +1 -1
- package/dist/src/tools/grep.js +2 -2
- package/dist/src/tools/grep.js.map +1 -1
- package/dist/src/tools/ls.d.ts +3 -22
- package/dist/src/tools/ls.js +84 -113
- package/dist/src/tools/ls.js.map +1 -1
- package/dist/src/tools/mcp-client.js +2 -2
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-tool.d.ts +3 -5
- package/dist/src/tools/mcp-tool.js +41 -18
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/memoryTool.d.ts +9 -13
- package/dist/src/tools/memoryTool.js +124 -117
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/read-file.js +2 -2
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-many-files.d.ts +4 -6
- package/dist/src/tools/read-many-files.js +118 -110
- package/dist/src/tools/read-many-files.js.map +1 -1
- package/dist/src/tools/shell.d.ts +7 -14
- package/dist/src/tools/shell.js +120 -116
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/todo-pause.js +2 -2
- package/dist/src/tools/todo-pause.js.map +1 -1
- package/dist/src/tools/todo-read.js +8 -8
- package/dist/src/tools/todo-read.js.map +1 -1
- package/dist/src/tools/todo-write.js +2 -2
- package/dist/src/tools/todo-write.js.map +1 -1
- package/dist/src/tools/tool-registry.d.ts +5 -0
- package/dist/src/tools/tool-registry.js +13 -2
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tools.d.ts +16 -15
- package/dist/src/tools/tools.js +19 -18
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/web-fetch.d.ts +4 -7
- package/dist/src/tools/web-fetch.js +81 -82
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/tools/web-search.js +23 -5
- package/dist/src/tools/web-search.js.map +1 -1
- package/dist/src/tools/write-file.d.ts +2 -1
- package/dist/src/tools/write-file.js +85 -24
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/utils/errorParsing.d.ts +8 -0
- package/dist/src/utils/errorParsing.js +109 -0
- package/dist/src/utils/errorParsing.js.map +1 -0
- package/dist/src/utils/filesearch/fileSearch.js +1 -1
- package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
- package/dist/src/utils/filesearch/result-cache.d.ts +1 -2
- package/dist/src/utils/filesearch/result-cache.js +1 -3
- package/dist/src/utils/filesearch/result-cache.js.map +1 -1
- package/dist/src/utils/memoryImportProcessor.js +1 -1
- package/dist/src/utils/memoryImportProcessor.js.map +1 -1
- package/dist/src/utils/quotaErrorDetection.d.ts +1 -5
- package/dist/src/utils/quotaErrorDetection.js.map +1 -1
- package/package.json +2 -2
- package/dist/src/core/modelCheck.d.ts +0 -14
- package/dist/src/core/modelCheck.js +0 -62
- package/dist/src/core/modelCheck.js.map +0 -1
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +0 -48
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +0 -577
- package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +0 -1
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.d.ts +0 -58
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js +0 -157
- package/dist/src/telemetry/clearcut-logger/event-metadata-key.js.map +0 -1
|
@@ -84,9 +84,9 @@ export interface ToolBuilder<TParams extends object, TResult extends ToolResult>
|
|
|
84
84
|
*/
|
|
85
85
|
description: string;
|
|
86
86
|
/**
|
|
87
|
-
* The
|
|
87
|
+
* The kind of tool for categorization and permissions
|
|
88
88
|
*/
|
|
89
|
-
|
|
89
|
+
kind: Kind;
|
|
90
90
|
/**
|
|
91
91
|
* Function declaration schema from @google/genai.
|
|
92
92
|
*/
|
|
@@ -114,11 +114,11 @@ export declare abstract class DeclarativeTool<TParams extends object, TResult ex
|
|
|
114
114
|
readonly name: string;
|
|
115
115
|
readonly displayName: string;
|
|
116
116
|
readonly description: string;
|
|
117
|
-
readonly
|
|
117
|
+
readonly kind: Kind;
|
|
118
118
|
readonly parameterSchema: unknown;
|
|
119
119
|
readonly isOutputMarkdown: boolean;
|
|
120
120
|
readonly canUpdateOutput: boolean;
|
|
121
|
-
constructor(name: string, displayName: string, description: string,
|
|
121
|
+
constructor(name: string, displayName: string, description: string, kind: Kind, parameterSchema: unknown, isOutputMarkdown?: boolean, canUpdateOutput?: boolean);
|
|
122
122
|
get schema(): FunctionDeclaration;
|
|
123
123
|
/**
|
|
124
124
|
* Validates the raw tool parameters.
|
|
@@ -168,7 +168,7 @@ export declare abstract class BaseTool<TParams extends object = object, TResult
|
|
|
168
168
|
readonly name: string;
|
|
169
169
|
readonly displayName: string;
|
|
170
170
|
readonly description: string;
|
|
171
|
-
readonly
|
|
171
|
+
readonly kind: Kind;
|
|
172
172
|
readonly parameterSchema: unknown;
|
|
173
173
|
readonly isOutputMarkdown: boolean;
|
|
174
174
|
readonly canUpdateOutput: boolean;
|
|
@@ -183,7 +183,7 @@ export declare abstract class BaseTool<TParams extends object = object, TResult
|
|
|
183
183
|
* @param canUpdateOutput Whether the tool supports live (streaming) output
|
|
184
184
|
* @param parameterSchema JSON Schema defining the parameters
|
|
185
185
|
*/
|
|
186
|
-
constructor(name: string, displayName: string, description: string,
|
|
186
|
+
constructor(name: string, displayName: string, description: string, kind: Kind, parameterSchema: unknown, isOutputMarkdown?: boolean, canUpdateOutput?: boolean);
|
|
187
187
|
build(params: TParams): ToolInvocation<TParams, TResult>;
|
|
188
188
|
/**
|
|
189
189
|
* Validates the parameters for the tool
|
|
@@ -319,15 +319,16 @@ export declare enum ToolConfirmationOutcome {
|
|
|
319
319
|
ModifyWithEditor = "modify_with_editor",
|
|
320
320
|
Cancel = "cancel"
|
|
321
321
|
}
|
|
322
|
-
export declare enum
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
322
|
+
export declare enum Kind {
|
|
323
|
+
Read = "read",
|
|
324
|
+
Edit = "edit",
|
|
325
|
+
Delete = "delete",
|
|
326
|
+
Move = "move",
|
|
327
|
+
Search = "search",
|
|
328
|
+
Execute = "execute",
|
|
329
|
+
Think = "think",
|
|
330
|
+
Fetch = "fetch",
|
|
331
|
+
Other = "other"
|
|
331
332
|
}
|
|
332
333
|
export interface ToolLocation {
|
|
333
334
|
path: string;
|
package/dist/src/tools/tools.js
CHANGED
|
@@ -50,15 +50,15 @@ export class DeclarativeTool {
|
|
|
50
50
|
name;
|
|
51
51
|
displayName;
|
|
52
52
|
description;
|
|
53
|
-
|
|
53
|
+
kind;
|
|
54
54
|
parameterSchema;
|
|
55
55
|
isOutputMarkdown;
|
|
56
56
|
canUpdateOutput;
|
|
57
|
-
constructor(name, displayName, description,
|
|
57
|
+
constructor(name, displayName, description, kind, parameterSchema, isOutputMarkdown = true, canUpdateOutput = false) {
|
|
58
58
|
this.name = name;
|
|
59
59
|
this.displayName = displayName;
|
|
60
60
|
this.description = description;
|
|
61
|
-
this.
|
|
61
|
+
this.kind = kind;
|
|
62
62
|
this.parameterSchema = parameterSchema;
|
|
63
63
|
this.isOutputMarkdown = isOutputMarkdown;
|
|
64
64
|
this.canUpdateOutput = canUpdateOutput;
|
|
@@ -117,7 +117,7 @@ export class BaseTool extends DeclarativeTool {
|
|
|
117
117
|
name;
|
|
118
118
|
displayName;
|
|
119
119
|
description;
|
|
120
|
-
|
|
120
|
+
kind;
|
|
121
121
|
parameterSchema;
|
|
122
122
|
isOutputMarkdown;
|
|
123
123
|
canUpdateOutput;
|
|
@@ -132,12 +132,12 @@ export class BaseTool extends DeclarativeTool {
|
|
|
132
132
|
* @param canUpdateOutput Whether the tool supports live (streaming) output
|
|
133
133
|
* @param parameterSchema JSON Schema defining the parameters
|
|
134
134
|
*/
|
|
135
|
-
constructor(name, displayName, description,
|
|
136
|
-
super(name, displayName, description,
|
|
135
|
+
constructor(name, displayName, description, kind, parameterSchema, isOutputMarkdown = true, canUpdateOutput = false) {
|
|
136
|
+
super(name, displayName, description, kind, parameterSchema, isOutputMarkdown, canUpdateOutput);
|
|
137
137
|
this.name = name;
|
|
138
138
|
this.displayName = displayName;
|
|
139
139
|
this.description = description;
|
|
140
|
-
this.
|
|
140
|
+
this.kind = kind;
|
|
141
141
|
this.parameterSchema = parameterSchema;
|
|
142
142
|
this.isOutputMarkdown = isOutputMarkdown;
|
|
143
143
|
this.canUpdateOutput = canUpdateOutput;
|
|
@@ -269,15 +269,16 @@ export var ToolConfirmationOutcome;
|
|
|
269
269
|
ToolConfirmationOutcome["ModifyWithEditor"] = "modify_with_editor";
|
|
270
270
|
ToolConfirmationOutcome["Cancel"] = "cancel";
|
|
271
271
|
})(ToolConfirmationOutcome || (ToolConfirmationOutcome = {}));
|
|
272
|
-
export var
|
|
273
|
-
(function (
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
272
|
+
export var Kind;
|
|
273
|
+
(function (Kind) {
|
|
274
|
+
Kind["Read"] = "read";
|
|
275
|
+
Kind["Edit"] = "edit";
|
|
276
|
+
Kind["Delete"] = "delete";
|
|
277
|
+
Kind["Move"] = "move";
|
|
278
|
+
Kind["Search"] = "search";
|
|
279
|
+
Kind["Execute"] = "execute";
|
|
280
|
+
Kind["Think"] = "think";
|
|
281
|
+
Kind["Fetch"] = "fetch";
|
|
282
|
+
Kind["Other"] = "other";
|
|
283
|
+
})(Kind || (Kind = {}));
|
|
283
284
|
//# sourceMappingURL=tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/tools/tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoDH;;GAEG;AACH,MAAM,OAAgB,kBAAkB;IAKjB;IAArB,YAAqB,MAAe;QAAf,WAAM,GAAN,MAAM,CAAS;IAAG,CAAC;IAIxC,aAAa;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,oBAAoB,CAClB,YAAyB;QAEzB,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;CAMF;AAOD;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IAMZ;IACR;IAFX,YACmB,UAAsC,EAC9C,MAAe;QADP,eAAU,GAAV,UAAU,CAA4B;QAC9C,WAAM,GAAN,MAAM,CAAS;IACvB,CAAC;IAEJ,cAAc;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,oBAAoB,CAClB,WAAwB;QAExB,OAAO,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,CACL,MAAmB,EACnB,YAAuC;QAEvC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IACpE,CAAC;CACF;AAoDD;;;GAGG;AACH,MAAM,OAAgB,eAAe;IAMxB;IACA;IACA;IACA;IACA;IACA;IACA;IAPX,YACW,IAAY,EACZ,WAAmB,EACnB,WAAmB,EACnB,IAAU,EACV,eAAwB,EACxB,mBAA4B,IAAI,EAChC,kBAA2B,KAAK;QANhC,SAAI,GAAJ,IAAI,CAAQ;QACZ,gBAAW,GAAX,WAAW,CAAQ;QACnB,gBAAW,GAAX,WAAW,CAAQ;QACnB,SAAI,GAAJ,IAAI,CAAM;QACV,oBAAe,GAAf,eAAe,CAAS;QACxB,qBAAgB,GAAhB,gBAAgB,CAAgB;QAChC,oBAAe,GAAf,eAAe,CAAiB;IACxC,CAAC;IAEJ,IAAI,MAAM;QACR,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,oBAAoB,EAAE,IAAI,CAAC,eAAe;SAC3C,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACO,kBAAkB,CAAC,OAAgB;QAC3C,qDAAqD;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAWD;;;;;;;OAOG;IACH,KAAK,CAAC,eAAe,CACnB,MAAe,EACf,MAAmB,EACnB,YAAuC;QAEvC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtC,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAClD,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAgB,mBAGpB,SAAQ,eAAiC;IACzC,KAAK,CAAC,MAAe;QACnB,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;CAKF;AAOD;;;GAGG;AACH,MAAM,OAAgB,QAIpB,SAAQ,eAAiC;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/tools/tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAoDH;;GAEG;AACH,MAAM,OAAgB,kBAAkB;IAKjB;IAArB,YAAqB,MAAe;QAAf,WAAM,GAAN,MAAM,CAAS;IAAG,CAAC;IAIxC,aAAa;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,oBAAoB,CAClB,YAAyB;QAEzB,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;CAMF;AAOD;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IAMZ;IACR;IAFX,YACmB,UAAsC,EAC9C,MAAe;QADP,eAAU,GAAV,UAAU,CAA4B;QAC9C,WAAM,GAAN,MAAM,CAAS;IACvB,CAAC;IAEJ,cAAc;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,oBAAoB,CAClB,WAAwB;QAExB,OAAO,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,CACL,MAAmB,EACnB,YAAuC;QAEvC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IACpE,CAAC;CACF;AAoDD;;;GAGG;AACH,MAAM,OAAgB,eAAe;IAMxB;IACA;IACA;IACA;IACA;IACA;IACA;IAPX,YACW,IAAY,EACZ,WAAmB,EACnB,WAAmB,EACnB,IAAU,EACV,eAAwB,EACxB,mBAA4B,IAAI,EAChC,kBAA2B,KAAK;QANhC,SAAI,GAAJ,IAAI,CAAQ;QACZ,gBAAW,GAAX,WAAW,CAAQ;QACnB,gBAAW,GAAX,WAAW,CAAQ;QACnB,SAAI,GAAJ,IAAI,CAAM;QACV,oBAAe,GAAf,eAAe,CAAS;QACxB,qBAAgB,GAAhB,gBAAgB,CAAgB;QAChC,oBAAe,GAAf,eAAe,CAAiB;IACxC,CAAC;IAEJ,IAAI,MAAM;QACR,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,oBAAoB,EAAE,IAAI,CAAC,eAAe;SAC3C,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACO,kBAAkB,CAAC,OAAgB;QAC3C,qDAAqD;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;IAWD;;;;;;;OAOG;IACH,KAAK,CAAC,eAAe,CACnB,MAAe,EACf,MAAmB,EACnB,YAAuC;QAEvC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtC,OAAO,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAClD,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAgB,mBAGpB,SAAQ,eAAiC;IACzC,KAAK,CAAC,MAAe;QACnB,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;CAKF;AAOD;;;GAGG;AACH,MAAM,OAAgB,QAIpB,SAAQ,eAAiC;IAerB;IACA;IACA;IACA;IACA;IACA;IACA;IAlBpB,sEAAsE;IACtE,OAAO,CAAe;IACtB;;;;;;;;OAQG;IACH,YACoB,IAAY,EACZ,WAAmB,EACnB,WAAmB,EACnB,IAAU,EACV,eAAwB,EACxB,mBAA4B,IAAI,EAChC,kBAA2B,KAAK;QAElD,KAAK,CACH,IAAI,EACJ,WAAW,EACX,WAAW,EACX,IAAI,EACJ,eAAe,EACf,gBAAgB,EAChB,eAAe,CAChB,CAAC;QAhBgB,SAAI,GAAJ,IAAI,CAAQ;QACZ,gBAAW,GAAX,WAAW,CAAQ;QACnB,gBAAW,GAAX,WAAW,CAAQ;QACnB,SAAI,GAAJ,IAAI,CAAM;QACV,oBAAe,GAAf,eAAe,CAAS;QACxB,qBAAgB,GAAhB,gBAAgB,CAAgB;QAChC,oBAAe,GAAf,eAAe,CAAiB;IAWpD,CAAC;IAED,KAAK,CAAC,MAAe;QACnB,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,IAAI,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;;OAOG;IACH,6DAA6D;IACpD,kBAAkB,CAAC,MAAe;QACzC,6DAA6D;QAC7D,sEAAsE;QACtE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,MAAe;QAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACH,oBAAoB;IAClB,6DAA6D;IAC7D,MAAe;IACf,6DAA6D;IAC7D,WAAwB;QAExB,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACH,aAAa;IACX,6DAA6D;IAC7D,MAAe;QAEf,OAAO,EAAE,CAAC;IACZ,CAAC;CAcF;AAqCD;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,SAAS,UAAU,CAAC,GAAW;QAC7B,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,OAAO,GAAY,MAAM,CAAC;QAC9B,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;YAC3B,IACE,OAAO,OAAO,KAAK,QAAQ;gBAC3B,OAAO,KAAK,IAAI;gBAChB,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EACvD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,GAAI,OAAmC,CAAC,OAAO,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,OAAiB,CAAC;IAC3B,CAAC;IAED,SAAS,QAAQ,CACf,IAAa,EACb,WAAwB,EACxB,QAAqB;QAErB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAC9C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;gBACxB,IAAI,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC;oBAC1C,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,GAAG,KAAK,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtC,wCAAwC;gBACxC,OAAO,IAAI,CAAC,CAAC,kBAAkB;YACjC,CAAC;YACD,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,OAAO,KAAK,CAAC,CAAC,+CAA+C;YAC/D,CAAC;YAED,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,YAAY,EAAE,CAAC;gBACjB,8CAA8C;gBAC9C,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACrB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAClB,MAAM,QAAQ,GAAG,QAAQ,CAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;gBAC/D,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,mCAAmC;gBACzD,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QAED,mCAAmC;QACnC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;gBACpD,IACE,QAAQ,CACL,IAAgC,CAAC,GAAG,CAAC,EACtC,WAAW,EACX,QAAQ,CACT,EACD,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,EAAU,EAAE,IAAI,GAAG,EAAU,CAAC,CAAC;AAChE,CAAC;AAwED,MAAM,CAAN,IAAY,uBAOX;AAPD,WAAY,uBAAuB;IACjC,uDAA4B,CAAA;IAC5B,2DAAgC,CAAA;IAChC,wEAA6C,CAAA;IAC7C,oEAAyC,CAAA;IACzC,kEAAuC,CAAA;IACvC,4CAAiB,CAAA;AACnB,CAAC,EAPW,uBAAuB,KAAvB,uBAAuB,QAOlC;AAED,MAAM,CAAN,IAAY,IAUX;AAVD,WAAY,IAAI;IACd,qBAAa,CAAA;IACb,qBAAa,CAAA;IACb,yBAAiB,CAAA;IACjB,qBAAa,CAAA;IACb,yBAAiB,CAAA;IACjB,2BAAmB,CAAA;IACnB,uBAAe,CAAA;IACf,uBAAe,CAAA;IACf,uBAAe,CAAA;AACjB,CAAC,EAVW,IAAI,KAAJ,IAAI,QAUf"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
6
|
+
import { BaseDeclarativeTool, ToolInvocation, ToolResult } from './tools.js';
|
|
7
7
|
import { Config } from '../config/config.js';
|
|
8
8
|
/**
|
|
9
9
|
* Parameters for the WebFetch tool
|
|
@@ -17,13 +17,10 @@ export interface WebFetchToolParams {
|
|
|
17
17
|
/**
|
|
18
18
|
* Implementation of the WebFetch tool logic
|
|
19
19
|
*/
|
|
20
|
-
export declare class WebFetchTool extends
|
|
20
|
+
export declare class WebFetchTool extends BaseDeclarativeTool<WebFetchToolParams, ToolResult> {
|
|
21
21
|
private readonly config;
|
|
22
22
|
static readonly Name: string;
|
|
23
23
|
constructor(config: Config);
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
getDescription(params: WebFetchToolParams): string;
|
|
27
|
-
shouldConfirmExecute(params: WebFetchToolParams): Promise<ToolCallConfirmationDetails | false>;
|
|
28
|
-
execute(params: WebFetchToolParams, signal: AbortSignal): Promise<ToolResult>;
|
|
24
|
+
protected validateToolParams(params: WebFetchToolParams): string | null;
|
|
25
|
+
protected createInvocation(params: WebFetchToolParams): ToolInvocation<WebFetchToolParams, ToolResult>;
|
|
29
26
|
}
|
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { SchemaValidator } from '../utils/schemaValidator.js';
|
|
7
|
-
import {
|
|
7
|
+
import { BaseDeclarativeTool, BaseToolInvocation, Kind, ToolConfirmationOutcome, } from './tools.js';
|
|
8
8
|
import { getErrorMessage } from '../utils/errors.js';
|
|
9
9
|
import { ApprovalMode } from '../config/config.js';
|
|
10
|
+
import { getResponseText } from '../utils/generateContentResponseUtilities.js';
|
|
10
11
|
import { fetchWithTimeout, isPrivateIp } from '../utils/fetch.js';
|
|
11
12
|
import { convert } from 'html-to-text';
|
|
12
13
|
import { ProxyAgent, setGlobalDispatcher } from 'undici';
|
|
13
|
-
import { getResponseText } from '../utils/generateContentResponseUtilities.js';
|
|
14
14
|
const URL_FETCH_TIMEOUT_MS = 10000;
|
|
15
15
|
const MAX_CONTENT_LENGTH = 100000;
|
|
16
16
|
// Helper function to extract URLs from a string
|
|
@@ -18,31 +18,14 @@ function extractUrls(text) {
|
|
|
18
18
|
const urlRegex = /(https?:\/\/[^\s]+)/g;
|
|
19
19
|
return text.match(urlRegex) || [];
|
|
20
20
|
}
|
|
21
|
-
|
|
22
|
-
* Implementation of the WebFetch tool logic
|
|
23
|
-
*/
|
|
24
|
-
export class WebFetchTool extends BaseTool {
|
|
21
|
+
class WebFetchToolInvocation extends BaseToolInvocation {
|
|
25
22
|
config;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
super(WebFetchTool.Name, 'WebFetch', "Processes content from URL(s), including local and private network addresses (e.g., localhost), embedded in a prompt. Include up to 20 URLs and instructions (e.g., summarize, extract specific data) directly in the 'prompt' parameter.", Icon.Globe, {
|
|
29
|
-
properties: {
|
|
30
|
-
prompt: {
|
|
31
|
-
description: 'A comprehensive prompt that includes the URL(s) (up to 20) to fetch and specific instructions on how to process their content (e.g., "Summarize https://example.com/article and extract key points from https://another.com/data"). Must contain as least one URL starting with http:// or https://.',
|
|
32
|
-
type: 'string',
|
|
33
|
-
},
|
|
34
|
-
},
|
|
35
|
-
required: ['prompt'],
|
|
36
|
-
type: 'object',
|
|
37
|
-
});
|
|
23
|
+
constructor(config, params) {
|
|
24
|
+
super(params);
|
|
38
25
|
this.config = config;
|
|
39
|
-
const proxy = config.getProxy();
|
|
40
|
-
if (proxy) {
|
|
41
|
-
setGlobalDispatcher(new ProxyAgent(proxy));
|
|
42
|
-
}
|
|
43
26
|
}
|
|
44
|
-
async executeFallback(
|
|
45
|
-
const urls = extractUrls(params.prompt);
|
|
27
|
+
async executeFallback(_signal) {
|
|
28
|
+
const urls = extractUrls(this.params.prompt);
|
|
46
29
|
if (urls.length === 0) {
|
|
47
30
|
return {
|
|
48
31
|
llmContent: 'Error: No URL found in the prompt for fallback.',
|
|
@@ -59,18 +42,18 @@ export class WebFetchTool extends BaseTool {
|
|
|
59
42
|
}
|
|
60
43
|
try {
|
|
61
44
|
const response = await fetchWithTimeout(url, URL_FETCH_TIMEOUT_MS);
|
|
62
|
-
if (!response.ok) {
|
|
63
|
-
throw new Error(`Request failed with status code ${response.status} ${response.statusText}`);
|
|
64
|
-
}
|
|
65
45
|
const html = await response.text();
|
|
66
46
|
const textContent = convert(html, {
|
|
67
|
-
wordwrap:
|
|
47
|
+
wordwrap: 130,
|
|
68
48
|
selectors: [
|
|
69
49
|
{ selector: 'a', options: { ignoreHref: true } },
|
|
70
50
|
{ selector: 'img', format: 'skip' },
|
|
51
|
+
{ selector: 'script', format: 'skip' },
|
|
52
|
+
{ selector: 'style', format: 'skip' },
|
|
71
53
|
],
|
|
72
54
|
}).substring(0, MAX_CONTENT_LENGTH);
|
|
73
|
-
//
|
|
55
|
+
// In llxprt, we can't use Gemini client directly for fallback processing
|
|
56
|
+
// Return the raw content with a note about the limitation
|
|
74
57
|
return {
|
|
75
58
|
llmContent: `Private/local URLs cannot be processed with AI. Raw content provided below.\n\nContent from ${url}:\n\n${textContent.substring(0, 5000)}${textContent.length > 5000 ? '...[truncated]' : ''}`,
|
|
76
59
|
returnDisplay: `Private/local URLs cannot be processed with AI. Raw content provided below.`,
|
|
@@ -85,39 +68,21 @@ export class WebFetchTool extends BaseTool {
|
|
|
85
68
|
};
|
|
86
69
|
}
|
|
87
70
|
}
|
|
88
|
-
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
if (!params.prompt || params.prompt.trim() === '') {
|
|
94
|
-
return "The 'prompt' parameter cannot be empty and must contain URL(s) and instructions.";
|
|
95
|
-
}
|
|
96
|
-
if (!params.prompt.includes('http://') &&
|
|
97
|
-
!params.prompt.includes('https://')) {
|
|
98
|
-
return "The 'prompt' must contain at least one valid URL (starting with http:// or https://).";
|
|
99
|
-
}
|
|
100
|
-
return null;
|
|
101
|
-
}
|
|
102
|
-
getDescription(params) {
|
|
103
|
-
const displayPrompt = params.prompt.length > 100
|
|
104
|
-
? params.prompt.substring(0, 97) + '...'
|
|
105
|
-
: params.prompt;
|
|
71
|
+
getDescription() {
|
|
72
|
+
const displayPrompt = this.params.prompt.length > 100
|
|
73
|
+
? this.params.prompt.substring(0, 97) + '...'
|
|
74
|
+
: this.params.prompt;
|
|
106
75
|
return `Processing URLs and instructions from prompt: "${displayPrompt}"`;
|
|
107
76
|
}
|
|
108
|
-
async shouldConfirmExecute(
|
|
77
|
+
async shouldConfirmExecute() {
|
|
109
78
|
const approvalMode = this.config.getApprovalMode();
|
|
110
79
|
if (approvalMode === ApprovalMode.AUTO_EDIT ||
|
|
111
80
|
approvalMode === ApprovalMode.YOLO) {
|
|
112
81
|
return false;
|
|
113
82
|
}
|
|
114
|
-
const validationError = this.validateParams(params);
|
|
115
|
-
if (validationError) {
|
|
116
|
-
return false;
|
|
117
|
-
}
|
|
118
83
|
// Perform GitHub URL conversion here to differentiate between user-provided
|
|
119
84
|
// URL and the actual URL to be fetched.
|
|
120
|
-
const urls = extractUrls(params.prompt).map((url) => {
|
|
85
|
+
const urls = extractUrls(this.params.prompt).map((url) => {
|
|
121
86
|
if (url.includes('github.com') && url.includes('/blob/')) {
|
|
122
87
|
return url
|
|
123
88
|
.replace('github.com', 'raw.githubusercontent.com')
|
|
@@ -128,7 +93,7 @@ export class WebFetchTool extends BaseTool {
|
|
|
128
93
|
const confirmationDetails = {
|
|
129
94
|
type: 'info',
|
|
130
95
|
title: `Confirm Web Fetch`,
|
|
131
|
-
prompt: params.prompt,
|
|
96
|
+
prompt: this.params.prompt,
|
|
132
97
|
urls,
|
|
133
98
|
onConfirm: async (outcome) => {
|
|
134
99
|
if (outcome === ToolConfirmationOutcome.ProceedAlways) {
|
|
@@ -138,20 +103,13 @@ export class WebFetchTool extends BaseTool {
|
|
|
138
103
|
};
|
|
139
104
|
return confirmationDetails;
|
|
140
105
|
}
|
|
141
|
-
async execute(
|
|
142
|
-
const
|
|
143
|
-
if (validationError) {
|
|
144
|
-
return {
|
|
145
|
-
llmContent: `Error: Invalid parameters provided. Reason: ${validationError}`,
|
|
146
|
-
returnDisplay: validationError,
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
const userPrompt = params.prompt;
|
|
106
|
+
async execute(signal) {
|
|
107
|
+
const userPrompt = this.params.prompt;
|
|
150
108
|
const urls = extractUrls(userPrompt);
|
|
151
109
|
const url = urls[0];
|
|
152
110
|
const isPrivate = isPrivateIp(url);
|
|
153
111
|
if (isPrivate) {
|
|
154
|
-
return this.executeFallback(
|
|
112
|
+
return this.executeFallback(signal);
|
|
155
113
|
}
|
|
156
114
|
// Get the content generator config to access the provider manager
|
|
157
115
|
const contentGenConfig = this.config.getContentGeneratorConfig();
|
|
@@ -180,7 +138,7 @@ export class WebFetchTool extends BaseTool {
|
|
|
180
138
|
}
|
|
181
139
|
try {
|
|
182
140
|
// Invoke the server tool
|
|
183
|
-
const response = await serverToolsProvider.invokeServerTool('web_fetch', { prompt: params.prompt }, { signal });
|
|
141
|
+
const response = await serverToolsProvider.invokeServerTool('web_fetch', { prompt: this.params.prompt }, { signal });
|
|
184
142
|
if (process.env.DEBUG) {
|
|
185
143
|
console.log('[WEB-FETCH] Raw response:', JSON.stringify(response, null, 2));
|
|
186
144
|
}
|
|
@@ -231,33 +189,74 @@ export class WebFetchTool extends BaseTool {
|
|
|
231
189
|
}
|
|
232
190
|
});
|
|
233
191
|
insertions.sort((a, b) => b.index - a.index);
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
192
|
+
insertions.forEach(({ index, marker }) => {
|
|
193
|
+
modifiedResponseText =
|
|
194
|
+
modifiedResponseText.slice(0, index) +
|
|
195
|
+
marker +
|
|
196
|
+
modifiedResponseText.slice(index);
|
|
237
197
|
});
|
|
238
|
-
modifiedResponseText = responseChars.join('');
|
|
239
|
-
}
|
|
240
|
-
if (sourceListFormatted.length > 0) {
|
|
241
|
-
modifiedResponseText += `
|
|
242
|
-
|
|
243
|
-
Sources:
|
|
244
|
-
${sourceListFormatted.join('\n')}`;
|
|
245
198
|
}
|
|
246
199
|
}
|
|
247
|
-
|
|
200
|
+
// Prepare the final response
|
|
201
|
+
const finalResponse = sourceListFormatted.length
|
|
202
|
+
? `${modifiedResponseText}\n\n### Sources:\n${sourceListFormatted.join('\n')}`
|
|
203
|
+
: modifiedResponseText;
|
|
248
204
|
return {
|
|
249
|
-
llmContent,
|
|
250
|
-
returnDisplay:
|
|
205
|
+
llmContent: finalResponse,
|
|
206
|
+
returnDisplay: finalResponse,
|
|
251
207
|
};
|
|
252
208
|
}
|
|
253
209
|
catch (error) {
|
|
254
|
-
const errorMessage =
|
|
255
|
-
|
|
210
|
+
const errorMessage = getErrorMessage(error);
|
|
211
|
+
if (process.env.DEBUG) {
|
|
212
|
+
console.error('[WEB-FETCH] Error:', error);
|
|
213
|
+
}
|
|
256
214
|
return {
|
|
257
|
-
llmContent: `Error: ${errorMessage}`,
|
|
258
|
-
returnDisplay: `Error: ${errorMessage}`,
|
|
215
|
+
llmContent: `Error during web fetch: ${errorMessage}`,
|
|
216
|
+
returnDisplay: `Error during web fetch: ${errorMessage}`,
|
|
259
217
|
};
|
|
260
218
|
}
|
|
261
219
|
}
|
|
262
220
|
}
|
|
221
|
+
/**
|
|
222
|
+
* Implementation of the WebFetch tool logic
|
|
223
|
+
*/
|
|
224
|
+
export class WebFetchTool extends BaseDeclarativeTool {
|
|
225
|
+
config;
|
|
226
|
+
static Name = 'web_fetch';
|
|
227
|
+
constructor(config) {
|
|
228
|
+
super(WebFetchTool.Name, 'WebFetch', "Processes content from URL(s), including local and private network addresses (e.g., localhost), embedded in a prompt. Include up to 20 URLs and instructions (e.g., summarize, extract specific data) directly in the 'prompt' parameter.", Kind.Fetch, {
|
|
229
|
+
properties: {
|
|
230
|
+
prompt: {
|
|
231
|
+
description: 'A comprehensive prompt that includes the URL(s) (up to 20) to fetch and specific instructions on how to process their content (e.g., "Summarize https://example.com/article and extract key points from https://another.com/data"). Must contain as least one URL starting with http:// or https://.',
|
|
232
|
+
type: 'string',
|
|
233
|
+
},
|
|
234
|
+
},
|
|
235
|
+
required: ['prompt'],
|
|
236
|
+
type: 'object',
|
|
237
|
+
});
|
|
238
|
+
this.config = config;
|
|
239
|
+
const proxy = config.getProxy();
|
|
240
|
+
if (proxy) {
|
|
241
|
+
setGlobalDispatcher(new ProxyAgent(proxy));
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
validateToolParams(params) {
|
|
245
|
+
const errors = SchemaValidator.validate(this.schema.parametersJsonSchema, params);
|
|
246
|
+
if (errors) {
|
|
247
|
+
return errors;
|
|
248
|
+
}
|
|
249
|
+
if (!params.prompt || params.prompt.trim() === '') {
|
|
250
|
+
return "The 'prompt' parameter cannot be empty and must contain URL(s) and instructions.";
|
|
251
|
+
}
|
|
252
|
+
if (!params.prompt.includes('http://') &&
|
|
253
|
+
!params.prompt.includes('https://')) {
|
|
254
|
+
return "The 'prompt' must contain at least one valid URL (starting with http:// or https://).";
|
|
255
|
+
}
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
createInvocation(params) {
|
|
259
|
+
return new WebFetchToolInvocation(this.config, params);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
263
262
|
//# sourceMappingURL=web-fetch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-fetch.js","sourceRoot":"","sources":["../../../src/tools/web-fetch.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"web-fetch.js","sourceRoot":"","sources":["../../../src/tools/web-fetch.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,IAAI,EAEJ,uBAAuB,GAGxB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAU,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAEzD,MAAM,oBAAoB,GAAG,KAAK,CAAC;AACnC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC,gDAAgD;AAChD,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,QAAQ,GAAG,sBAAsB,CAAC;IACxC,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACpC,CAAC;AAiCD,MAAM,sBAAuB,SAAQ,kBAGpC;IAEoB;IADnB,YACmB,MAAc,EAC/B,MAA0B;QAE1B,KAAK,CAAC,MAAM,CAAC,CAAC;QAHG,WAAM,GAAN,MAAM,CAAQ;IAIjC,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,OAAoB;QAChD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO;gBACL,UAAU,EAAE,iDAAiD;gBAC7D,aAAa,EAAE,iDAAiD;aACjE,CAAC;QACJ,CAAC;QACD,gDAAgD;QAChD,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAElB,qCAAqC;QACrC,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzD,GAAG,GAAG,GAAG;iBACN,OAAO,CAAC,YAAY,EAAE,2BAA2B,CAAC;iBAClD,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC5B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAC;YACnE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE;gBAChC,QAAQ,EAAE,GAAG;gBACb,SAAS,EAAE;oBACT,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE;oBAChD,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE;oBACnC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;oBACtC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;iBACtC;aACF,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;YAEpC,yEAAyE;YACzE,0DAA0D;YAC1D,OAAO;gBACL,UAAU,EAAE,+FAA+F,GAAG,QAAQ,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC1M,aAAa,EAAE,6EAA6E;aAC7F,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,CAAU,CAAC;YACzB,MAAM,YAAY,GAAG,mCAAmC,GAAG,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;YAChF,OAAO;gBACL,UAAU,EAAE,UAAU,YAAY,EAAE;gBACpC,aAAa,EAAE,UAAU,YAAY,EAAE;aACxC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,cAAc;QACZ,MAAM,aAAa,GACjB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG;YAC7B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;YAC7C,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACzB,OAAO,kDAAkD,aAAa,GAAG,CAAC;IAC5E,CAAC;IAEQ,KAAK,CAAC,oBAAoB;QAGjC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;QACnD,IACE,YAAY,KAAK,YAAY,CAAC,SAAS;YACvC,YAAY,KAAK,YAAY,CAAC,IAAI,EAClC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,4EAA4E;QAC5E,wCAAwC;QACxC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACvD,IAAI,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzD,OAAO,GAAG;qBACP,OAAO,CAAC,YAAY,EAAE,2BAA2B,CAAC;qBAClD,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC5B,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAgC;YACvD,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,mBAAmB;YAC1B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC1B,IAAI;YACJ,SAAS,EAAE,KAAK,EAAE,OAAgC,EAAE,EAAE;gBACpD,IAAI,OAAO,KAAK,uBAAuB,CAAC,aAAa,EAAE,CAAC;oBACtD,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBACtD,CAAC;YACH,CAAC;SACF,CAAC;QACF,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAmB;QAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACtC,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAEnC,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC;QAED,kEAAkE;QAClE,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,yBAAyB,EAAE,CAAC;QAEjE,wDAAwD;QACxD,IAAI,CAAC,gBAAgB,EAAE,eAAe,EAAE,CAAC;YACvC,OAAO;gBACL,UAAU,EAAE,kFAAkF;gBAC9F,aAAa,EAAE,gCAAgC;aAChD,CAAC;QACJ,CAAC;QAED,wCAAwC;QACxC,MAAM,mBAAmB,GACvB,gBAAgB,CAAC,eAAe,CAAC,sBAAsB,EAAE,CAAC;QAC5D,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzB,OAAO;gBACL,UAAU,EAAE,6GAA6G;gBACzH,aAAa,EAAE,qCAAqC;aACrD,CAAC;QACJ,CAAC;QAED,2CAA2C;QAC3C,MAAM,WAAW,GAAG,mBAAmB,CAAC,cAAc,EAAE,CAAC;QACzD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACvC,OAAO;gBACL,UAAU,EAAE,mFAAmF;gBAC/F,aAAa,EAAE,0BAA0B;aAC1C,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,yBAAyB;YACzB,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,gBAAgB,CACzD,WAAW,EACX,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAC9B,EAAE,MAAM,EAAE,CACX,CAAC;YAEF,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gBACtB,OAAO,CAAC,GAAG,CACT,2BAA2B,EAC3B,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAClC,CAAC;YACJ,CAAC;YAED,wDAAwD;YACxD,MAAM,cAAc,GAAG,QAAmC,CAAC;YAE3D,+CAA+C;YAC/C,IACE,CAAC,cAAc,CAAC,UAAU;gBAC1B,cAAc,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EACtC,CAAC;gBACD,OAAO;oBACL,UAAU,EAAE,mIAAmI;oBAC/I,aAAa,EAAE,+BAA+B;iBAC/C,CAAC;YACJ,CAAC;YAED,kEAAkE;YAClE,2DAA2D;YAE3D,sCAAsC;YACtC,MAAM,YAAY,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;YAErD,0CAA0C;YAC1C,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC1C,OAAO;oBACL,UAAU,EAAE,uGAAuG;oBACnH,aAAa,EAAE,mBAAmB;iBACnC,CAAC;YACJ,CAAC;YAED,iEAAiE;YACjE,MAAM,iBAAiB,GACrB,cAAc,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC;YACpD,MAAM,OAAO,GAAG,iBAAiB,EAAE,eAEtB,CAAC;YACd,MAAM,iBAAiB,GAAG,iBAAiB,EAAE,iBAEhC,CAAC;YAEd,IAAI,oBAAoB,GAAG,YAAY,CAAC;YACxC,MAAM,mBAAmB,GAAa,EAAE,CAAC;YAEzC,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,OAAO,CAAC,OAAO,CAAC,CAAC,MAA0B,EAAE,KAAa,EAAE,EAAE;oBAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,EAAE,KAAK,IAAI,UAAU,CAAC;oBAC9C,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,aAAa,CAAC;oBAC7C,mBAAmB,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,KAAK,KAAK,GAAG,GAAG,CAAC,CAAC;gBAC/D,CAAC,CAAC,CAAC;gBAEH,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtD,MAAM,UAAU,GAA6C,EAAE,CAAC;oBAChE,iBAAiB,CAAC,OAAO,CAAC,CAAC,OAA6B,EAAE,EAAE;wBAC1D,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;4BACrD,MAAM,cAAc,GAAG,OAAO,CAAC,qBAAqB;iCACjD,GAAG,CAAC,CAAC,UAAkB,EAAE,EAAE,CAAC,IAAI,UAAU,GAAG,CAAC,GAAG,CAAC;iCAClD,IAAI,CAAC,EAAE,CAAC,CAAC;4BACZ,UAAU,CAAC,IAAI,CAAC;gCACd,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ;gCAC/B,MAAM,EAAE,cAAc;6BACvB,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC,CAAC,CAAC;oBAEH,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;oBAC7C,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;wBACvC,oBAAoB;4BAClB,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;gCACpC,MAAM;gCACN,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACtC,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,6BAA6B;YAC7B,MAAM,aAAa,GAAG,mBAAmB,CAAC,MAAM;gBAC9C,CAAC,CAAC,GAAG,oBAAoB,qBAAqB,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC9E,CAAC,CAAC,oBAAoB,CAAC;YAEzB,OAAO;gBACL,UAAU,EAAE,aAAa;gBACzB,aAAa,EAAE,aAAa;aAC7B,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YAC5C,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;gBACtB,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;YAC7C,CAAC;YACD,OAAO;gBACL,UAAU,EAAE,2BAA2B,YAAY,EAAE;gBACrD,aAAa,EAAE,2BAA2B,YAAY,EAAE;aACzD,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,mBAGjC;IAG8B;IAF7B,MAAM,CAAU,IAAI,GAAW,WAAW,CAAC;IAE3C,YAA6B,MAAc;QACzC,KAAK,CACH,YAAY,CAAC,IAAI,EACjB,UAAU,EACV,2OAA2O,EAC3O,IAAI,CAAC,KAAK,EACV;YACE,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,WAAW,EACT,sSAAsS;oBACxS,IAAI,EAAE,QAAQ;iBACf;aACF;YACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;YACpB,IAAI,EAAE,QAAQ;SACf,CACF,CAAC;QAjByB,WAAM,GAAN,MAAM,CAAQ;QAkBzC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,IAAI,KAAK,EAAE,CAAC;YACV,mBAAmB,CAAC,IAAI,UAAU,CAAC,KAAe,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAEkB,kBAAkB,CACnC,MAA0B;QAE1B,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CACrC,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAChC,MAAM,CACP,CAAC;QACF,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAClD,OAAO,kFAAkF,CAAC;QAC5F,CAAC;QACD,IACE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;YAClC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EACnC,CAAC;YACD,OAAO,uFAAuF,CAAC;QACjG,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAES,gBAAgB,CACxB,MAA0B;QAE1B,OAAO,IAAI,sBAAsB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { BaseTool,
|
|
6
|
+
import { BaseTool, Kind } from './tools.js';
|
|
7
7
|
import { SchemaValidator } from '../utils/schemaValidator.js';
|
|
8
8
|
import { getErrorMessage } from '../utils/errors.js';
|
|
9
9
|
import { getResponseText } from '../utils/generateContentResponseUtilities.js';
|
|
@@ -14,7 +14,7 @@ export class WebSearchTool extends BaseTool {
|
|
|
14
14
|
config;
|
|
15
15
|
static Name = 'google_web_search';
|
|
16
16
|
constructor(config) {
|
|
17
|
-
super(WebSearchTool.Name, 'GoogleSearch', 'Performs a web search using Google Search (via the Gemini API) and returns the results. This tool is useful for finding information on the internet based on a query.',
|
|
17
|
+
super(WebSearchTool.Name, 'GoogleSearch', 'Performs a web search using Google Search (via the Gemini API) and returns the results. This tool is useful for finding information on the internet based on a query.', Kind.Search, {
|
|
18
18
|
type: 'object',
|
|
19
19
|
properties: {
|
|
20
20
|
query: {
|
|
@@ -52,6 +52,15 @@ export class WebSearchTool extends BaseTool {
|
|
|
52
52
|
returnDisplay: validationError,
|
|
53
53
|
};
|
|
54
54
|
}
|
|
55
|
+
// Additional safety check - ensure query exists and is not just "undefined" string
|
|
56
|
+
if (!params.query ||
|
|
57
|
+
params.query.trim() === '' ||
|
|
58
|
+
params.query === 'undefined') {
|
|
59
|
+
return {
|
|
60
|
+
llmContent: `Error: Web search requires a valid search query. Please provide a specific search query.`,
|
|
61
|
+
returnDisplay: `Error: No valid search query provided.`,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
55
64
|
try {
|
|
56
65
|
// Get the content generator config to access the provider manager
|
|
57
66
|
const contentGenConfig = this.config.getContentGeneratorConfig();
|
|
@@ -78,8 +87,16 @@ export class WebSearchTool extends BaseTool {
|
|
|
78
87
|
returnDisplay: `Web search not available.`,
|
|
79
88
|
};
|
|
80
89
|
}
|
|
81
|
-
// Invoke the server tool
|
|
82
|
-
|
|
90
|
+
// Invoke the server tool with validated query
|
|
91
|
+
// Double-check query is not undefined before sending
|
|
92
|
+
const searchQuery = params.query?.trim() || '';
|
|
93
|
+
if (!searchQuery) {
|
|
94
|
+
return {
|
|
95
|
+
llmContent: `Error: Cannot perform web search without a query.`,
|
|
96
|
+
returnDisplay: `Error: Empty search query.`,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
const response = await serverToolsProvider.invokeServerTool('web_search', { query: searchQuery }, { signal });
|
|
83
100
|
// Cast response to the expected type
|
|
84
101
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
85
102
|
const geminiResponse = response;
|
|
@@ -135,7 +152,8 @@ export class WebSearchTool extends BaseTool {
|
|
|
135
152
|
};
|
|
136
153
|
}
|
|
137
154
|
catch (error) {
|
|
138
|
-
const
|
|
155
|
+
const queryDisplay = params.query || 'undefined';
|
|
156
|
+
const errorMessage = `Error during web search for query "${queryDisplay}": ${getErrorMessage(error)}`;
|
|
139
157
|
console.error(errorMessage, error);
|
|
140
158
|
return {
|
|
141
159
|
llmContent: `Error: ${errorMessage}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../../src/tools/web-search.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAc,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AA4C/E;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,QAGlC;IAG8B;IAF7B,MAAM,CAAU,IAAI,GAAW,mBAAmB,CAAC;IAEnD,YAA6B,MAAc;QACzC,KAAK,CACH,aAAa,CAAC,IAAI,EAClB,cAAc,EACd,uKAAuK,EACvK,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../../src/tools/web-search.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { Config } from '../config/config.js';
|
|
7
|
-
import { BaseTool, ToolResult, ToolCallConfirmationDetails } from './tools.js';
|
|
7
|
+
import { BaseTool, ToolResult, ToolCallConfirmationDetails, ToolLocation } from './tools.js';
|
|
8
8
|
import { ModifiableDeclarativeTool, ModifyContext } from './modifiable-tool.js';
|
|
9
9
|
/**
|
|
10
10
|
* Parameters for the WriteFile tool
|
|
@@ -34,6 +34,7 @@ export declare class WriteFileTool extends BaseTool<WriteFileToolParams, ToolRes
|
|
|
34
34
|
private readonly config;
|
|
35
35
|
static readonly Name: string;
|
|
36
36
|
constructor(config: Config);
|
|
37
|
+
toolLocations(params: WriteFileToolParams): ToolLocation[];
|
|
37
38
|
validateToolParams(params: WriteFileToolParams): string | null;
|
|
38
39
|
getDescription(params: WriteFileToolParams): string;
|
|
39
40
|
/**
|