Websearch tweaks
This commit is contained in:
parent
010133f6df
commit
ee02fb4fce
1 changed files with 75 additions and 77 deletions
|
|
@ -32,8 +32,7 @@ export const Plugin = {
|
|||
|
||||
yield* ctx.tool
|
||||
.transform((draft) =>
|
||||
draft.add(
|
||||
{
|
||||
draft.add({
|
||||
name,
|
||||
options: { codemode: false },
|
||||
description,
|
||||
|
|
@ -58,33 +57,33 @@ export const Plugin = {
|
|||
if (providers.length === 0) return yield* new WebSearch.ProviderRequiredError()
|
||||
const response = yield* forms.ask({
|
||||
sessionID: context.sessionID,
|
||||
title: "Choose a provider so the agent can search the web",
|
||||
title: "Web Search",
|
||||
metadata: { kind: "websearch.provider" },
|
||||
fields: [
|
||||
{
|
||||
key: "provider",
|
||||
title: "Provider",
|
||||
description: "OpenCode will use your choice for future searches.",
|
||||
key: "enabled",
|
||||
description: "Allow OpenCode to search the web?",
|
||||
type: "string",
|
||||
required: true,
|
||||
custom: false,
|
||||
options: [
|
||||
...providers.map((provider) => ({ value: provider.id, label: provider.name })),
|
||||
{ value: "__disable__", label: "Disable web search" },
|
||||
{ value: "yes", label: "Allow web search" },
|
||||
{ value: "no", label: "Disable web search" },
|
||||
],
|
||||
},
|
||||
],
|
||||
})
|
||||
if (response.status === "cancelled") return yield* Effect.fail(new Error("Web search cancelled"))
|
||||
const answer = response.answer.provider
|
||||
if (answer === "__disable__") {
|
||||
const answer = response.answer.enabled
|
||||
if (answer === "no") {
|
||||
yield* kv.set("websearch:provider", false)
|
||||
return yield* new WebSearch.DisabledError()
|
||||
}
|
||||
if (typeof answer !== "string" || !providers.some((provider) => provider.id === answer))
|
||||
return yield* new WebSearch.ProviderRequiredError()
|
||||
yield* kv.set("websearch:provider", answer)
|
||||
if (answer === "yes") {
|
||||
yield* kv.set("websearch:provider", providers[Math.floor(Math.random() * providers.length)].id)
|
||||
return yield* ctx.websearch.query(input)
|
||||
}
|
||||
return yield* new WebSearch.ProviderRequiredError()
|
||||
})
|
||||
}),
|
||||
)
|
||||
|
|
@ -109,8 +108,7 @@ export const Plugin = {
|
|||
(error) => new ToolFailure({ message: `Unable to search the web for ${input.query}`, error }),
|
||||
),
|
||||
),
|
||||
},
|
||||
),
|
||||
}),
|
||||
)
|
||||
.pipe(Effect.orDie)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue