Feature: support overriding built-in tools
Applications can now override built-in tools such as grep, edit_file, or read_file. To do this, register a custom tool with the same name and set the override flag. Without the flag, the runtime will return an error if the name clashes with a built-in. (#636)
import { defineTool } from "`@github/copilot-sdk`";
const session = await client.createSession({
tools: [defineTool("grep", {
overridesBuiltInTool: true,
handler: async (params) => `CUSTOM_GREP_RESULT: \$\{params.query}`,
})],
onPermissionRequest: approveAll,
});var grep = AIFunctionFactory.Create(
([Description("Search query")] string query) => $"CUSTOM_GREP_RESULT: {query}",
"grep",
"Custom grep implementation",
new AIFunctionFactoryOptions
{
AdditionalProperties = new ReadOnlyDictionary(string, object?)(
new Dictionary(string, object?) { ["is_override"] = true })
});Feature: simpler API for changing model mid-session
While session.rpc.model.switchTo() already worked, there is now a convenience method directly on the session object. (#621)
- TypeScript:
await session.setModel("gpt-4.1") - C#:
await session.SetModelAsync("gpt-4.1") - Python:
await session.set_model("gpt-4.1") - Go:
err := session.SetModel(ctx, "gpt-4.1")
Other changes
- improvement: [C#] use event delegate for thread-safe, insertion-ordered event handler dispatch (#624)
- improvement: [C#] deduplicate
OnDisposeCalland improve implementation (#626) - improvement: [C#] remove unnecessary
SemaphoreSlimlocks for handler fields (#625) - bugfix: [Python] correct
PermissionHandler.approve_alltype annotations (#618)
New contributors
@giulio-leonemade their first contribution in #618
Generated by Release Changelog Generator
Generated by Release Changelog Generator