Skip to content

v0.1.30

Latest

Choose a tag to compare

@github-actions github-actions released this 03 Mar 17:22
7460798

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 OnDisposeCall and improve implementation (#626)
  • improvement: [C#] remove unnecessary SemaphoreSlim locks for handler fields (#625)
  • bugfix: [Python] correct PermissionHandler.approve_all type annotations (#618)

New contributors

  • @giulio-leone made their first contribution in #618

Generated by Release Changelog Generator

Generated by Release Changelog Generator