@vybestack/llxprt-code-core 0.1.19-gamma → 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/index.js +1 -0
- package/dist/index.js.map +1 -1
- 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/converter.d.ts +2 -2
- package/dist/src/code_assist/converter.js +1 -1
- package/dist/src/code_assist/converter.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 +28 -22
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/core/client.d.ts +8 -3
- package/dist/src/core/client.js +177 -38
- 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/loggingContentGenerator.d.ts +5 -0
- package/dist/src/core/loggingContentGenerator.js +9 -1
- package/dist/src/core/loggingContentGenerator.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 +12 -2
- package/dist/src/ide/detect-ide.js +64 -5
- package/dist/src/ide/detect-ide.js.map +1 -1
- package/dist/src/ide/ide-client.js +22 -15
- package/dist/src/ide/ide-client.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 +4 -1
- package/dist/src/index.js +4 -1
- 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.d.ts +1 -1
- package/dist/src/prompt-config/defaults/core-defaults.js +205 -326
- package/dist/src/prompt-config/defaults/core-defaults.js.map +1 -1
- package/dist/src/prompt-config/defaults/core.md +1 -1
- package/dist/src/prompt-config/defaults/provider-defaults.d.ts +1 -1
- package/dist/src/prompt-config/defaults/provider-defaults.js +172 -19
- 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/providers/gemini/models/gemini-2.5-flash/core.md +273 -10
- package/dist/src/prompt-config/defaults/providers/gemini/models/gemini-2.5-flash/gemini-2-5-flash/core.md +278 -0
- package/dist/src/prompt-config/defaults/tool-defaults.d.ts +1 -1
- package/dist/src/prompt-config/defaults/tool-defaults.js +184 -75
- package/dist/src/prompt-config/defaults/tool-defaults.js.map +1 -1
- package/dist/src/prompt-config/defaults/tools/read-file.md +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/BaseProvider.js +1 -1
- package/dist/src/providers/BaseProvider.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 +97 -35
- package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
- package/dist/src/providers/gemini/GeminiProvider.d.ts +4 -5
- package/dist/src/providers/gemini/GeminiProvider.js +21 -26
- 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/loopDetectionService.js +4 -5
- package/dist/src/services/loopDetectionService.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 +91 -27
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/glob.js +9 -10
- package/dist/src/tools/glob.js.map +1 -1
- package/dist/src/tools/grep.js +8 -9
- 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 -114
- 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 +6 -13
- package/dist/src/tools/mcp-tool.js +41 -31
- 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 +127 -121
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/read-file.js +7 -8
- 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 -111
- 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 -117
- 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 +6 -15
- package/dist/src/tools/tool-registry.js +17 -74
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tools.d.ts +20 -19
- package/dist/src/tools/tools.js +21 -20
- 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 -83
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/tools/web-search.js +26 -9
- 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 +89 -29
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/utils/editCorrector.js +8 -9
- package/dist/src/utils/editCorrector.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/nextSpeakerChecker.js +3 -4
- package/dist/src/utils/nextSpeakerChecker.js.map +1 -1
- package/dist/src/utils/quotaErrorDetection.d.ts +1 -5
- package/dist/src/utils/quotaErrorDetection.js.map +1 -1
- package/dist/src/utils/schemaValidator.d.ts +1 -9
- package/dist/src/utils/schemaValidator.js +1 -109
- package/dist/src/utils/schemaValidator.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
|
@@ -4,14 +4,13 @@
|
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
6
|
import { SchemaValidator } from '../utils/schemaValidator.js';
|
|
7
|
-
import {
|
|
8
|
-
import { Type } from '@google/genai';
|
|
7
|
+
import { BaseDeclarativeTool, BaseToolInvocation, Kind, ToolConfirmationOutcome, } from './tools.js';
|
|
9
8
|
import { getErrorMessage } from '../utils/errors.js';
|
|
10
9
|
import { ApprovalMode } from '../config/config.js';
|
|
10
|
+
import { getResponseText } from '../utils/generateContentResponseUtilities.js';
|
|
11
11
|
import { fetchWithTimeout, isPrivateIp } from '../utils/fetch.js';
|
|
12
12
|
import { convert } from 'html-to-text';
|
|
13
13
|
import { ProxyAgent, setGlobalDispatcher } from 'undici';
|
|
14
|
-
import { getResponseText } from '../utils/generateContentResponseUtilities.js';
|
|
15
14
|
const URL_FETCH_TIMEOUT_MS = 10000;
|
|
16
15
|
const MAX_CONTENT_LENGTH = 100000;
|
|
17
16
|
// Helper function to extract URLs from a string
|
|
@@ -19,31 +18,14 @@ function extractUrls(text) {
|
|
|
19
18
|
const urlRegex = /(https?:\/\/[^\s]+)/g;
|
|
20
19
|
return text.match(urlRegex) || [];
|
|
21
20
|
}
|
|
22
|
-
|
|
23
|
-
* Implementation of the WebFetch tool logic
|
|
24
|
-
*/
|
|
25
|
-
export class WebFetchTool extends BaseTool {
|
|
21
|
+
class WebFetchToolInvocation extends BaseToolInvocation {
|
|
26
22
|
config;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
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, {
|
|
30
|
-
properties: {
|
|
31
|
-
prompt: {
|
|
32
|
-
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://.',
|
|
33
|
-
type: Type.STRING,
|
|
34
|
-
},
|
|
35
|
-
},
|
|
36
|
-
required: ['prompt'],
|
|
37
|
-
type: Type.OBJECT,
|
|
38
|
-
});
|
|
23
|
+
constructor(config, params) {
|
|
24
|
+
super(params);
|
|
39
25
|
this.config = config;
|
|
40
|
-
const proxy = config.getProxy();
|
|
41
|
-
if (proxy) {
|
|
42
|
-
setGlobalDispatcher(new ProxyAgent(proxy));
|
|
43
|
-
}
|
|
44
26
|
}
|
|
45
|
-
async executeFallback(
|
|
46
|
-
const urls = extractUrls(params.prompt);
|
|
27
|
+
async executeFallback(_signal) {
|
|
28
|
+
const urls = extractUrls(this.params.prompt);
|
|
47
29
|
if (urls.length === 0) {
|
|
48
30
|
return {
|
|
49
31
|
llmContent: 'Error: No URL found in the prompt for fallback.',
|
|
@@ -60,18 +42,18 @@ export class WebFetchTool extends BaseTool {
|
|
|
60
42
|
}
|
|
61
43
|
try {
|
|
62
44
|
const response = await fetchWithTimeout(url, URL_FETCH_TIMEOUT_MS);
|
|
63
|
-
if (!response.ok) {
|
|
64
|
-
throw new Error(`Request failed with status code ${response.status} ${response.statusText}`);
|
|
65
|
-
}
|
|
66
45
|
const html = await response.text();
|
|
67
46
|
const textContent = convert(html, {
|
|
68
|
-
wordwrap:
|
|
47
|
+
wordwrap: 130,
|
|
69
48
|
selectors: [
|
|
70
49
|
{ selector: 'a', options: { ignoreHref: true } },
|
|
71
50
|
{ selector: 'img', format: 'skip' },
|
|
51
|
+
{ selector: 'script', format: 'skip' },
|
|
52
|
+
{ selector: 'style', format: 'skip' },
|
|
72
53
|
],
|
|
73
54
|
}).substring(0, MAX_CONTENT_LENGTH);
|
|
74
|
-
//
|
|
55
|
+
// In llxprt, we can't use Gemini client directly for fallback processing
|
|
56
|
+
// Return the raw content with a note about the limitation
|
|
75
57
|
return {
|
|
76
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]' : ''}`,
|
|
77
59
|
returnDisplay: `Private/local URLs cannot be processed with AI. Raw content provided below.`,
|
|
@@ -86,39 +68,21 @@ export class WebFetchTool extends BaseTool {
|
|
|
86
68
|
};
|
|
87
69
|
}
|
|
88
70
|
}
|
|
89
|
-
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
}
|
|
94
|
-
if (!params.prompt || params.prompt.trim() === '') {
|
|
95
|
-
return "The 'prompt' parameter cannot be empty and must contain URL(s) and instructions.";
|
|
96
|
-
}
|
|
97
|
-
if (!params.prompt.includes('http://') &&
|
|
98
|
-
!params.prompt.includes('https://')) {
|
|
99
|
-
return "The 'prompt' must contain at least one valid URL (starting with http:// or https://).";
|
|
100
|
-
}
|
|
101
|
-
return null;
|
|
102
|
-
}
|
|
103
|
-
getDescription(params) {
|
|
104
|
-
const displayPrompt = params.prompt.length > 100
|
|
105
|
-
? params.prompt.substring(0, 97) + '...'
|
|
106
|
-
: params.prompt;
|
|
71
|
+
getDescription() {
|
|
72
|
+
const displayPrompt = this.params.prompt.length > 100
|
|
73
|
+
? this.params.prompt.substring(0, 97) + '...'
|
|
74
|
+
: this.params.prompt;
|
|
107
75
|
return `Processing URLs and instructions from prompt: "${displayPrompt}"`;
|
|
108
76
|
}
|
|
109
|
-
async shouldConfirmExecute(
|
|
77
|
+
async shouldConfirmExecute() {
|
|
110
78
|
const approvalMode = this.config.getApprovalMode();
|
|
111
79
|
if (approvalMode === ApprovalMode.AUTO_EDIT ||
|
|
112
80
|
approvalMode === ApprovalMode.YOLO) {
|
|
113
81
|
return false;
|
|
114
82
|
}
|
|
115
|
-
const validationError = this.validateParams(params);
|
|
116
|
-
if (validationError) {
|
|
117
|
-
return false;
|
|
118
|
-
}
|
|
119
83
|
// Perform GitHub URL conversion here to differentiate between user-provided
|
|
120
84
|
// URL and the actual URL to be fetched.
|
|
121
|
-
const urls = extractUrls(params.prompt).map((url) => {
|
|
85
|
+
const urls = extractUrls(this.params.prompt).map((url) => {
|
|
122
86
|
if (url.includes('github.com') && url.includes('/blob/')) {
|
|
123
87
|
return url
|
|
124
88
|
.replace('github.com', 'raw.githubusercontent.com')
|
|
@@ -129,7 +93,7 @@ export class WebFetchTool extends BaseTool {
|
|
|
129
93
|
const confirmationDetails = {
|
|
130
94
|
type: 'info',
|
|
131
95
|
title: `Confirm Web Fetch`,
|
|
132
|
-
prompt: params.prompt,
|
|
96
|
+
prompt: this.params.prompt,
|
|
133
97
|
urls,
|
|
134
98
|
onConfirm: async (outcome) => {
|
|
135
99
|
if (outcome === ToolConfirmationOutcome.ProceedAlways) {
|
|
@@ -139,20 +103,13 @@ export class WebFetchTool extends BaseTool {
|
|
|
139
103
|
};
|
|
140
104
|
return confirmationDetails;
|
|
141
105
|
}
|
|
142
|
-
async execute(
|
|
143
|
-
const
|
|
144
|
-
if (validationError) {
|
|
145
|
-
return {
|
|
146
|
-
llmContent: `Error: Invalid parameters provided. Reason: ${validationError}`,
|
|
147
|
-
returnDisplay: validationError,
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
const userPrompt = params.prompt;
|
|
106
|
+
async execute(signal) {
|
|
107
|
+
const userPrompt = this.params.prompt;
|
|
151
108
|
const urls = extractUrls(userPrompt);
|
|
152
109
|
const url = urls[0];
|
|
153
110
|
const isPrivate = isPrivateIp(url);
|
|
154
111
|
if (isPrivate) {
|
|
155
|
-
return this.executeFallback(
|
|
112
|
+
return this.executeFallback(signal);
|
|
156
113
|
}
|
|
157
114
|
// Get the content generator config to access the provider manager
|
|
158
115
|
const contentGenConfig = this.config.getContentGeneratorConfig();
|
|
@@ -181,7 +138,7 @@ export class WebFetchTool extends BaseTool {
|
|
|
181
138
|
}
|
|
182
139
|
try {
|
|
183
140
|
// Invoke the server tool
|
|
184
|
-
const response = await serverToolsProvider.invokeServerTool('web_fetch', { prompt: params.prompt }, { signal });
|
|
141
|
+
const response = await serverToolsProvider.invokeServerTool('web_fetch', { prompt: this.params.prompt }, { signal });
|
|
185
142
|
if (process.env.DEBUG) {
|
|
186
143
|
console.log('[WEB-FETCH] Raw response:', JSON.stringify(response, null, 2));
|
|
187
144
|
}
|
|
@@ -232,33 +189,74 @@ export class WebFetchTool extends BaseTool {
|
|
|
232
189
|
}
|
|
233
190
|
});
|
|
234
191
|
insertions.sort((a, b) => b.index - a.index);
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
192
|
+
insertions.forEach(({ index, marker }) => {
|
|
193
|
+
modifiedResponseText =
|
|
194
|
+
modifiedResponseText.slice(0, index) +
|
|
195
|
+
marker +
|
|
196
|
+
modifiedResponseText.slice(index);
|
|
238
197
|
});
|
|
239
|
-
modifiedResponseText = responseChars.join('');
|
|
240
|
-
}
|
|
241
|
-
if (sourceListFormatted.length > 0) {
|
|
242
|
-
modifiedResponseText += `
|
|
243
|
-
|
|
244
|
-
Sources:
|
|
245
|
-
${sourceListFormatted.join('\n')}`;
|
|
246
198
|
}
|
|
247
199
|
}
|
|
248
|
-
|
|
200
|
+
// Prepare the final response
|
|
201
|
+
const finalResponse = sourceListFormatted.length
|
|
202
|
+
? `${modifiedResponseText}\n\n### Sources:\n${sourceListFormatted.join('\n')}`
|
|
203
|
+
: modifiedResponseText;
|
|
249
204
|
return {
|
|
250
|
-
llmContent,
|
|
251
|
-
returnDisplay:
|
|
205
|
+
llmContent: finalResponse,
|
|
206
|
+
returnDisplay: finalResponse,
|
|
252
207
|
};
|
|
253
208
|
}
|
|
254
209
|
catch (error) {
|
|
255
|
-
const errorMessage =
|
|
256
|
-
|
|
210
|
+
const errorMessage = getErrorMessage(error);
|
|
211
|
+
if (process.env.DEBUG) {
|
|
212
|
+
console.error('[WEB-FETCH] Error:', error);
|
|
213
|
+
}
|
|
257
214
|
return {
|
|
258
|
-
llmContent: `Error: ${errorMessage}`,
|
|
259
|
-
returnDisplay: `Error: ${errorMessage}`,
|
|
215
|
+
llmContent: `Error during web fetch: ${errorMessage}`,
|
|
216
|
+
returnDisplay: `Error during web fetch: ${errorMessage}`,
|
|
260
217
|
};
|
|
261
218
|
}
|
|
262
219
|
}
|
|
263
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
|
+
}
|
|
264
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":"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"}
|
|
@@ -3,8 +3,7 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { BaseTool,
|
|
7
|
-
import { Type } from '@google/genai';
|
|
6
|
+
import { BaseTool, Kind } from './tools.js';
|
|
8
7
|
import { SchemaValidator } from '../utils/schemaValidator.js';
|
|
9
8
|
import { getErrorMessage } from '../utils/errors.js';
|
|
10
9
|
import { getResponseText } from '../utils/generateContentResponseUtilities.js';
|
|
@@ -15,11 +14,11 @@ export class WebSearchTool extends BaseTool {
|
|
|
15
14
|
config;
|
|
16
15
|
static Name = 'google_web_search';
|
|
17
16
|
constructor(config) {
|
|
18
|
-
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.',
|
|
19
|
-
type:
|
|
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
|
+
type: 'object',
|
|
20
19
|
properties: {
|
|
21
20
|
query: {
|
|
22
|
-
type:
|
|
21
|
+
type: 'string',
|
|
23
22
|
description: 'The search query to find information on the web.',
|
|
24
23
|
},
|
|
25
24
|
},
|
|
@@ -33,7 +32,7 @@ export class WebSearchTool extends BaseTool {
|
|
|
33
32
|
* @returns An error message string if validation fails, null if valid
|
|
34
33
|
*/
|
|
35
34
|
validateParams(params) {
|
|
36
|
-
const errors = SchemaValidator.validate(this.schema.
|
|
35
|
+
const errors = SchemaValidator.validate(this.schema.parametersJsonSchema, params);
|
|
37
36
|
if (errors) {
|
|
38
37
|
return errors;
|
|
39
38
|
}
|
|
@@ -53,6 +52,15 @@ export class WebSearchTool extends BaseTool {
|
|
|
53
52
|
returnDisplay: validationError,
|
|
54
53
|
};
|
|
55
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
|
+
}
|
|
56
64
|
try {
|
|
57
65
|
// Get the content generator config to access the provider manager
|
|
58
66
|
const contentGenConfig = this.config.getContentGeneratorConfig();
|
|
@@ -79,8 +87,16 @@ export class WebSearchTool extends BaseTool {
|
|
|
79
87
|
returnDisplay: `Web search not available.`,
|
|
80
88
|
};
|
|
81
89
|
}
|
|
82
|
-
// Invoke the server tool
|
|
83
|
-
|
|
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 });
|
|
84
100
|
// Cast response to the expected type
|
|
85
101
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
86
102
|
const geminiResponse = response;
|
|
@@ -136,7 +152,8 @@ export class WebSearchTool extends BaseTool {
|
|
|
136
152
|
};
|
|
137
153
|
}
|
|
138
154
|
catch (error) {
|
|
139
|
-
const
|
|
155
|
+
const queryDisplay = params.query || 'undefined';
|
|
156
|
+
const errorMessage = `Error during web search for query "${queryDisplay}": ${getErrorMessage(error)}`;
|
|
140
157
|
console.error(errorMessage, error);
|
|
141
158
|
return {
|
|
142
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,
|
|
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
|
/**
|