Files
2026-07-13 13:34:48 +08:00

46 lines
1.4 KiB
TypeScript

import { type Client } from '@botpress/client'
import { z } from '@bpinternal/zui'
import { Tool } from 'llmz'
/** Extract the full content & the metadata of the specified pages as markdown. */
export const browsePages = (client: Client) =>
new Tool({
name: 'browser_browsePages',
description: 'Extract the full content & the metadata of the specified pages as markdown.',
input: z
.object({
urls: z.array(z.string()),
waitFor: z
.default(
z
.number()
.describe(
'Time to wait before extracting the content (in milliseconds). Set this value higher for dynamic pages.'
),
350
)
.describe(
'Time to wait before extracting the content (in milliseconds). Set this value higher for dynamic pages.'
),
})
.catchall(z.never()),
output: z
.object({
results: z.array(
z
.object({
url: z.string(),
content: z.string(),
favicon: z.optional(z.string()),
title: z.optional(z.string()),
description: z.optional(z.string()),
})
.catchall(z.never())
),
})
.catchall(z.never()),
handler: async (input) => {
return client.callAction({ type: 'browser:browsePages', input }).then(({ output }) => output) as any
},
})