Skip to content

[dotnet-port-api] Port shelltool metadata overrides #788

Description

@github-actions

Summary

Port shell-tool metadata overrides from the upstream .NET harness work by letting shelltool.LocalConfig override the model-facing tool name and description. Go previously hard-coded run_shell and always synthesized the default description; now callers can keep the defaults or set custom metadata explicitly. The shelltool parity row in the feature-comparison doc was updated to reflect the aligned surface.

Ported .NET PRs

Breaking Changes

No. Existing callers keep the same default tool name (run_shell) and generated description unless they opt into the new LocalConfig fields.

Tests and Examples

  • go test ./tool/shelltool
  • Added focused shelltool coverage for custom name/description overrides
  • No example changes were needed for this narrow config-only parity addition

Notes

  • The broader file-access approval options shipped in the same upstream PR were intentionally skipped here because they are a separate public-surface change and would make this nightly port less narrow.
  • Upstream inspection was based on upstream-agent-framework/main at 1da571860a60f0da4f060bd60c8e7ee8d092cd32; the remote refresh step itself was blocked in this environment, so selection used the locally available upstream reference plus GitHub read-only source inspection.

Generated by .NET to Go API Porting Agent · gpt54 · 153.5 AIC · ⌖ 11.3 AIC · ⊞ 24.1K ·


Note

This was originally intended as a pull request, but GitHub Actions is not permitted to create or approve pull requests in this repository.
The changes have been pushed to branch dotnet-port-api-shelltool-metadata-30980459955-a66e5eb7ab29be28.

Click here to create the pull request

To fix the permissions issue, go to SettingsActionsGeneral and enable Allow GitHub Actions to create and approve pull requests. See also: gh-aw FAQ

Show patch preview (119 of 119 lines)
From 0fb1c7f0c65a4fe1f205937c778f95f9a6d4c0e5 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]" <github-actions[bot]@users.noreply.github.com>
Date: Wed, 5 Aug 2026 06:19:12 +0000
Subject: [PATCH] [dotnet-port-api] Port shelltool metadata overrides

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---
 docs/dotnet-go-sdk-feature-comparison.md |  4 ++--
 tool/shelltool/localshell.go             | 28 +++++++++++++++++++++---
 tool/shelltool/shelltool_test.go         | 14 ++++++++++++
 3 files changed, 41 insertions(+), 5 deletions(-)

diff --git a/docs/dotnet-go-sdk-feature-comparison.md b/docs/dotnet-go-sdk-feature-comparison.md
index 22f52a521..bc62232b0 100644
--- a/docs/dotnet-go-sdk-feature-comparison.md
+++ b/docs/dotnet-go-sdk-feature-comparison.md
@@ -37,7 +37,7 @@ Within overlapping features, the main misalignments are API shape and ecosystem
 | Message/content model | `ChatMessage`, `AIContent`, text/data/error/function call/function result/hosted file/vector store/reasoning/code interpreter and durable state wrappers. | `message.Message`, `Content`, text/data/error/function call/function result/hosted file/vector store/reasoning/URI/usage/approval/code interpreter content. | Aligned | Type names and serialization are not interchangeable. Go has its own content model rather than using MEAI. |
 | Annotations/citations | MEAI annotation/content support through `AIContent`. | `message.Annotation`, citation annotations, annotated text spans. | Aligned | No direct binary compatibility; mapping is provider-specific. |
 | Function tools | `AIFunction`, `AITool`, function tools, plugins, dynamic function tools, tool argument matching in evals. | `tool.Tool`, `tool.FuncTool`, `functool.New`, typed input/output schemas, and a plugin-style grouping sample. | Partial | Go has typed function tools and plugin-style tool grouping, but no first-class plugin abstraction or dynamic tool sample equivalent to .NET steps 12 and 20. |
-| Shell tool and envi
... (truncated)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions