dynamic tool calls: add param exposeToContext to optionally hide tool (#14501)

This extends dynamic_tool_calls to allow us to hide a tool from the
model context but still use it as part of the general tool calling
runtime (for ex from js_repl/code_mode)
This commit is contained in:
Channing Conger
2026-03-14 01:58:43 -07:00
committed by GitHub
Unverified
parent e389091042
commit 70eddad6b0
16 changed files with 578 additions and 14 deletions
+6 -3
View File
@@ -50,7 +50,7 @@ WHERE id = ?
) -> anyhow::Result<Option<Vec<DynamicToolSpec>>> {
let rows = sqlx::query(
r#"
SELECT name, description, input_schema
SELECT name, description, input_schema, defer_loading
FROM thread_dynamic_tools
WHERE thread_id = ?
ORDER BY position ASC
@@ -70,6 +70,7 @@ ORDER BY position ASC
name: row.try_get("name")?,
description: row.try_get("description")?,
input_schema,
defer_loading: row.try_get("defer_loading")?,
});
}
Ok(Some(tools))
@@ -425,8 +426,9 @@ INSERT INTO thread_dynamic_tools (
position,
name,
description,
input_schema
) VALUES (?, ?, ?, ?, ?)
input_schema,
defer_loading
) VALUES (?, ?, ?, ?, ?, ?)
ON CONFLICT(thread_id, position) DO NOTHING
"#,
)
@@ -435,6 +437,7 @@ ON CONFLICT(thread_id, position) DO NOTHING
.bind(tool.name.as_str())
.bind(tool.description.as_str())
.bind(input_schema)
.bind(tool.defer_loading)
.execute(&mut *tx)
.await?;
}