mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
af772997af
* Migrate .NET GitHub Copilot SDK from 1.0.0-beta.2 to 1.0.0 - Update namespace from GitHub.Copilot.SDK to GitHub.Copilot - Replace PermissionRequestResult/PermissionRequestResultKind with PermissionDecision - Remove ConnectionState check (StartAsync is now idempotent) - Rename ConfigDir to ConfigDirectory - Use SessionConfig.Clone() for CopySessionConfig - Update Tools type from List<AIFunction> to List<AIFunctionDeclaration> - Rename UserMessageAttachmentFile to AttachmentFile - Update usage data types (CacheWriteTokens: long, Duration: TimeSpan) - Add GHCP001 NoWarn for experimental SDK APIs (matches framework convention) - Specify type argument on CopilotSession.On<SessionEvent>() Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix formatting: remove unused using directive Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Skip AzureFunctions SamplesValidation tests pending func tools fix Azure Functions Core Tools v4 can no longer auto-detect the worker runtime in CI (local.settings.json is gitignored). All 7 active SamplesValidation tests fail with 'Worker runtime cannot be None'. Tracked by: https://github.com/microsoft/agent-framework/issues/6402 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Skip additional failing integration tests in CI WorkflowSamplesValidation (5 tests): same func tools issue as #6402. WorkflowConsoleAppSamplesValidation (4 tests): KeyNotFoundException during workflow execution, tracked by #6404. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
55 lines
1.6 KiB
C#
55 lines
1.6 KiB
C#
// Copyright (c) Microsoft. All rights reserved.
|
|
|
|
// This sample shows how to create a GitHub Copilot agent with shell command permissions.
|
|
|
|
using GitHub.Copilot;
|
|
using GitHub.Copilot.Rpc;
|
|
using Microsoft.Agents.AI;
|
|
|
|
// Permission handler that prompts the user for approval
|
|
static Task<PermissionDecision> PromptPermission(PermissionRequest request, PermissionInvocation invocation)
|
|
{
|
|
Console.WriteLine($"\n[Permission Request: {request.Kind}]");
|
|
Console.Write("Approve? (y/n): ");
|
|
|
|
string? input = Console.ReadLine()?.Trim().ToUpperInvariant();
|
|
PermissionDecision decision = input is "Y" or "YES"
|
|
? PermissionDecision.ApproveOnce()
|
|
: PermissionDecision.Reject();
|
|
|
|
return Task.FromResult(decision);
|
|
}
|
|
|
|
// Create and start a Copilot client
|
|
await using CopilotClient copilotClient = new();
|
|
await copilotClient.StartAsync();
|
|
|
|
// Create an agent with a session config that enables permission handling
|
|
SessionConfig sessionConfig = new()
|
|
{
|
|
OnPermissionRequest = PromptPermission,
|
|
};
|
|
|
|
AIAgent agent = copilotClient.AsAIAgent(sessionConfig, ownsClient: true);
|
|
|
|
// Toggle between streaming and non-streaming modes
|
|
bool useStreaming = true;
|
|
|
|
string prompt = "List all files in the current directory";
|
|
Console.WriteLine($"User: {prompt}\n");
|
|
|
|
if (useStreaming)
|
|
{
|
|
await foreach (AgentResponseUpdate update in agent.RunStreamingAsync(prompt))
|
|
{
|
|
Console.Write(update);
|
|
}
|
|
|
|
Console.WriteLine();
|
|
}
|
|
else
|
|
{
|
|
AgentResponse response = await agent.RunAsync(prompt);
|
|
Console.WriteLine(response);
|
|
}
|