This commit is contained in:
seb
2026-10-07 19:16:42 +02:00
parent 1743cef11c
commit 857963b1c3
20 changed files with 892 additions and 182 deletions

View File

@@ -96,36 +96,40 @@ export function createWebSearchTool({ googleAuthId }) {
additionalProperties: false,
required: ['query'],
properties: {
note: {
type: ['string', 'null'],
description: 'A note explaining what this search is doing (or null). This note will be displayed to the user while the search is executing.',
},
query: {
type: 'string',
description: 'Search query.',
},
timePeriod: {
type: 'string',
enum: ['day', 'week', 'month', 'year'],
description: 'Time filter: "day", "week", "month", or "year".',
type: ['string', 'null'],
enum: ['day', 'week', 'month', 'year', null],
description: 'Time filter: "day", "week", "month", or "year", or null.',
},
gl: {
type: 'string',
description: 'Country code. Default "de".',
type: ['string', 'null'],
description: 'Country code or null. Default "de".',
},
hl: {
type: 'string',
description: 'Language code. Default "de".',
type: ['string', 'null'],
description: 'Language code or null. Default "de".',
},
page: {
type: 'number',
description: 'Result page number (10/page). Default 1.',
type: ['number', 'null'],
description: 'Result page number (10/page) or null. Default 1.',
},
},
},
invoke: async ({ query, timePeriod, tbs, gl = 'de', hl = 'de', page = 1 } = {}, { signal } = {}) => {
invoke: async ({ query, timePeriod, tbs, gl = 'de', hl = 'de', page = 1, note } = {}, { signal } = {}) => {
const term = typeof query === 'string' ? query.trim() : '';
if (!term) {
throw new ToolError('web_search requires a non-empty "query".');
}
const parsedPage = Number(page);
const parsedPage = page != null ? Number(page) : 1;
if (!Number.isInteger(parsedPage) || parsedPage < 1) {
throw new ToolError(`"page" must be a positive integer (received ${page}).`);
}