feat: experimental.primary_tools, allow user to set the tools that should only be available to primary agents (#4913)

Co-authored-by: GitHub Action <action@github.com>
This commit is contained in:
Spoon
2025-12-03 18:19:43 +01:00
committed by GitHub
parent 91db82c138
commit 0bccd1d578
3 changed files with 12 additions and 0 deletions

View File

@@ -9,6 +9,7 @@ import { Agent } from "../agent/agent"
import { SessionPrompt } from "../session/prompt"
import { iife } from "@/util/iife"
import { defer } from "@/util/defer"
import { Config } from "../config/config"
export const TaskTool = Tool.define("task", async () => {
const agents = await Agent.list().then((x) => x.filter((a) => a.mode !== "primary"))
@@ -77,6 +78,8 @@ export const TaskTool = Tool.define("task", async () => {
ctx.abort.addEventListener("abort", cancel)
using _ = defer(() => ctx.abort.removeEventListener("abort", cancel))
const promptParts = await SessionPrompt.resolvePromptParts(params.prompt)
const config = await Config.get()
const result = await SessionPrompt.prompt({
messageID,
sessionID: session.id,
@@ -89,6 +92,7 @@ export const TaskTool = Tool.define("task", async () => {
todowrite: false,
todoread: false,
task: false,
...Object.fromEntries((config.experimental?.primary_tools ?? []).map((t) => [t, false])),
...agent.tools,
},
parts: promptParts,