summaryrefslogtreecommitdiff
path: root/packages/server/src/tools/web-fetch.ts
diff options
context:
space:
mode:
authorN. Taylor Mullen <[email protected]>2025-05-30 10:57:00 -0700
committerGitHub <[email protected]>2025-05-30 17:57:00 +0000
commit8c46108a852128d1d0792c149746631d83fc58cf (patch)
tree4d3ca2e8abd03e3722a1a75fce0dc752752a391c /packages/server/src/tools/web-fetch.ts
parentc5608869c00c433a468fe5e88bcbafd83f6599a1 (diff)
feat: Implement retry with backoff for API calls (#613)
Diffstat (limited to 'packages/server/src/tools/web-fetch.ts')
-rw-r--r--packages/server/src/tools/web-fetch.ts26
1 files changed, 15 insertions, 11 deletions
diff --git a/packages/server/src/tools/web-fetch.ts b/packages/server/src/tools/web-fetch.ts
index 7a8a1515..24617902 100644
--- a/packages/server/src/tools/web-fetch.ts
+++ b/packages/server/src/tools/web-fetch.ts
@@ -10,6 +10,7 @@ import { BaseTool, ToolResult } from './tools.js';
import { getErrorMessage } from '../utils/errors.js';
import { Config } from '../config/config.js';
import { getResponseText } from '../utils/generateContentResponseUtilities.js';
+import { retryWithBackoff } from '../utils/retry.js';
// Interfaces for grounding metadata (similar to web-search.ts)
interface GroundingChunkWeb {
@@ -121,18 +122,21 @@ export class WebFetchTool extends BaseTool<WebFetchToolParams, ToolResult> {
const userPrompt = params.prompt;
try {
- const response = await this.ai.models.generateContent({
- model: this.modelName,
- contents: [
- {
- role: 'user',
- parts: [{ text: userPrompt }],
+ const apiCall = () =>
+ this.ai.models.generateContent({
+ model: this.modelName,
+ contents: [
+ {
+ role: 'user',
+ parts: [{ text: userPrompt }],
+ },
+ ],
+ config: {
+ tools: [{ urlContext: {} }],
},
- ],
- config: {
- tools: [{ urlContext: {} }],
- },
- });
+ });
+
+ const response = await retryWithBackoff(apiCall);
console.debug(
`[WebFetchTool] Full response for prompt "${userPrompt.substring(0, 50)}...":`,