fix: MAF v1.0 GA upgrade - align docs, auth, packages, and config keys#512
fix: MAF v1.0 GA upgrade - align docs, auth, packages, and config keys#512
Conversation
- Branch for upgrading all 26 MAF samples from preview to v1.0 GA - Add .lscache and .copilot/skills/ to .gitignore - Initialize Squad templates and configuration Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Comprehensive plan for upgrading all 26 MAF samples from preview to v1.0 GA, creating 2 new Hosted Agent scenarios, updating docs, and improvement suggestions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Upgrade 6 MAF samples from preview to stable v1.0.0 packages - Fix v1 breaking API changes: CreateAIAgent→AsAIAgent, AgentRunResponse→AgentResponse, AsAgent→AsAIAgent, GetNewThread→CreateSessionAsync, Serialize/DeserializeThread→Session - Update Microsoft.Extensions.AI to 10.4.0 (required by v1) - Remove 'Coming Later' text from Lesson 01, add MAF v1.0 reference Samples: MAF01, MAF02, MAF-Ollama-01, MAF-FoundryClaude-01, MAF-FoundryClaude-Persisting-01, MAF-MultiModel Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Microsoft.Agents.AI.AzureAI -> Microsoft.Agents.AI.Foundry 1.0.0 - Microsoft.Agents.AI, Abstractions, OpenAI -> 1.0.0 - Microsoft.Extensions.AI/OpenAI -> 10.4.0 - OpenAI -> 2.9.1, Azure.Identity -> 1.20.0 API renames applied: - CreateAIAgent() -> AsAIAgent() - AgentRunResponse -> AgentResponse - AgentRunResponseUpdate -> AgentResponseUpdate - AgentThread -> AgentSession - GetNewThread() -> await CreateSessionAsync() - thread.Serialize() -> await agent.SerializeSessionAsync() - agent.DeserializeThread() -> await agent.DeserializeSessionAsync() Added NoWarn MEAI001 for experimental ContinuationToken in BackgroundResponses projects. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- New hosted agent sample: TimeZone agent with GetCurrentTime tool supporting Azure OpenAI and Ollama providers - Includes Dockerfile, agent.yaml manifest, and comprehensive README - Added to MAF-Demos.slnx under Hosted Agents folder - Updated CLAUDE-SAMPLES-README.md to v1.0 GA package versions Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Update 6 Aspire-based web chat apps to latest MAF package versions: - Microsoft.Agents.AI/Abstractions/OpenAI/Workflows: 1.0.0 - Microsoft.Agents.AI.Hosting: 1.0.0-preview.260402.1 - Microsoft.Agents.AI.Hosting.OpenAI: 1.0.0-alpha.260402.1 - Microsoft.Agents.AI.DevUI: 1.0.0-preview.260402.1 - Microsoft.Agents.AI.Hosting.AGUI.AspNetCore: 1.0.0-preview.260402.1 - Microsoft.Agents.AI.AGUI: 1.0.0-preview.260402.1 - Microsoft.Agents.AI.Workflows.Declarative: 1.0.0-rc6 - Microsoft.Extensions.AI/OpenAI: 10.4.0 Apply v1 API renames across all samples: - CreateAIAgent() -> AsAIAgent() - AgentThread -> AgentSession - GetNewThread() -> CreateSessionAsync() - thread.Serialize() -> agent.SerializeSessionAsync(session) - agent.DeserializeThread() -> agent.DeserializeSessionAsync() Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Replace preview MAF packages with v1.0 stable releases: - Microsoft.Agents.AI 1.0.0 - Microsoft.Agents.AI.Foundry 1.0.0 (replaces AzureAI + AzureAI.Persistent) - Microsoft.Agents.AI.Workflows 1.0.0 - Microsoft.Agents.AI.Abstractions 1.0.0 - Microsoft.Agents.AI.Declarative 1.0.0-rc6 - Migrate from PersistentAgentsClient to AIProjectClient + Responses API: - Projects 1-3: Replace GetAIAgentAsync() with AsAIAgent(model, instructions) - Project 4: Rewrite AIFoundryAgentsProvider to use AIProjectClient - Apply v1.0 API renames: - CreateAIAgent -> AsAIAgent - AsAgent() -> AsAIAgent() - AgentRunResponse -> AgentResponse - AgentRunUpdateEvent -> AgentResponseUpdateEvent - InProcessExecution.StreamAsync -> InProcessExecution.Default.RunStreamingAsync - Microsoft.Bot.ObjectModel -> Microsoft.Agents.ObjectModel - Remove unused Azure.AI.Agents.Persistent dependency from all projects - Suppress MAAIW001 for experimental handoff API in Factory sample - Run dotnet format on all projects Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- New multi-agent Research Assistant: Researcher → Writer → Reviewer workflow - Uses MAF v1.0 AgentWorkflow for sequential pipeline orchestration - Supports Azure OpenAI and Ollama providers - Includes Dockerfile, agent.yaml, and comprehensive README - Added to MAF-Demos.slnx under Hosted Agents folder Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Remove --prerelease flags from Lesson 04 install instructions - Add Hosted Agents section to Lesson 04 with links to new samples - Update sample reference table to 28 total samples - Add MAF v1.0 GA entry to root README What's New section - Create 10-WhatsNew/readme.md archive with migration guide - Create samples/MAF/README.md unified index (10 categories, 28 samples) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add MAF v1.0 GA What's New entry to all translated READMEs: de, es, fr, ja, ko, pt, tw, zh Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Documentation fixes: - Replace CreateAIAgent() with AsAIAgent() across all Lesson 04 docs (41 occurrences) - Replace AgentRunResponse with AgentResponse (4 occurrences) - Fix Microsoft.Agents.AI.Core to Microsoft.Agents.AI in CLAUDE-SAMPLES-README.md - Fix user secrets key deploymentName to AzureOpenAI:Deployment in README.md Package version alignment: - Aspire.Azure.AI.OpenAI: 9.5.2-preview → 13.1.0-preview (3 web apps) - Azure.AI.OpenAI: 2.8.0-beta.1 → 2.9.0-beta.1 (14 projects) - Azure.Identity: 1.18.0 → 1.20.0 (6 projects) - OpenAI SDK: 2.9.1 → 2.10.0 (11 projects) - PdfPig: 0.1.14-alpha → 0.1.13 stable (MutliAgent) Model name standardization: - Standardize gpt-4o-mini → gpt-5-mini in HostedAgent samples and README Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Migrate all MAF console samples from ApiKeyCredential + config['endpoint'] to AzureCliCredential + config['AzureOpenAI:Endpoint'] for consistency with CoreSamples (BasicChat-01MEAI) and Azure passwordless best practices. Files changed: - MAF01, MAF02: Switch to AzureCliCredential, add Azure.Identity pkg - MAF-AIFoundry-01: Remove dead apiKey code, fix endpoint key - MAF-AIFoundry-02: Switch to AzureCliCredential, fix endpoint key - BackgroundResponses-01-Simple: Simplify providers to AzureCliCredential only - MAF-ImageGen-01/02: Switch ChatClientProvider to AzureCliCredential - MAF-MultiModel: Simplify to DefaultAzureCredential only All 26 projects build successfully, 11 samples tested end-to-end. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Update all Azure OpenAI documentation sections to match the new standardized authentication pattern used by MAF console samples: - config["AzureOpenAI:Endpoint"] (not config["endpoint"]) - config["AzureOpenAI:Deployment"] (not hardcoded model names) - AzureCliCredential (not ApiKeyCredential — no API key needed) - az login required before running samples Files updated: - samples/MAF/README.md (6 sections) - 04-AgentsWithMAF/01-building-first-agent.md (package name + 2 snippets) - 04-AgentsWithMAF/03-multi-agent-workflows.md (1 snippet) - 04-AgentsWithMAF/04-model-context-protocol.md (1 snippet + imports) Claude/Foundry and HostedAgent sections left unchanged (different auth). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Fix MAF-MultiAgents/AppConfigurationService.cs: config[endpoint] -> config[AzureOpenAI:Endpoint], config[apikey] -> config[AzureOpenAI:ApiKey] - Fix MAF-MultiAgents/Program.cs comment and README.md setup instructions - Fix MAF-MultiModel/README.md to show AzureOpenAI:Endpoint + DefaultAzureCredential - Fix MAF-Persisting-01-Simple/README.md and MAF-Persisting-02-Menu/README.md - Fix MAF-ImageGen-02/ImageGenerator.cs: config[endpoint] -> config[AzureOpenAI:Endpoint] - Remove unused 'using System.ClientModel' from StreamConsoleHelper.cs - All remaining 'endpoint'/'apikey' refs are Claude-specific (correct) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
👋 Thanks for contributing @elbruno! We will review the pull request and get back to you soon. |
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR updates the course’s Microsoft Agent Framework (MAF) content to align with the MAF v1.0 GA release, including API renames, auth/config key standardization, package version alignment across samples, and refreshed documentation/translations. It also introduces two new “Hosted Agent” sample projects under samples/MAF.
Changes:
- Updated MAF sample code to GA APIs (
AsAIAgent,AgentResponse, session APIs) and standardized Azure OpenAI config keys/auth patterns. - Aligned NuGet package versions across many MAF projects and updated docs (lessons, root README, What’s New, translations).
- Added two new hosted-agent sample projects (TimeZone + MultiAgent) with Docker +
agent.yaml.
Show a summary per file
| File | Description |
|---|---|
| translations/zh/README.md | Adds MAF v1.0 GA news entry (ZH). |
| translations/tw/README.md | Adds MAF v1.0 GA news entry (TW). |
| translations/pt/README.md | Adds MAF v1.0 GA news entry (PT). |
| translations/ko/README.md | Adds MAF v1.0 GA news entry (KO). |
| translations/ja/README.md | Adds MAF v1.0 GA news entry (JA). |
| translations/fr/README.md | Adds MAF v1.0 GA news entry (FR). |
| translations/es/README.md | Adds MAF v1.0 GA news entry (ES). |
| translations/de/README.md | Adds MAF v1.0 GA news entry (DE). |
| samples/MAF/MAF02/Program.cs | Updates auth + GA API renames. |
| samples/MAF/MAF02/MAF02.csproj | Bumps MAF/MEAI/Azure packages. |
| samples/MAF/MAF01/Program.cs | Updates auth + GA API renames. |
| samples/MAF/MAF01/MAF01.csproj | Bumps MAF/MEAI/Azure packages. |
| samples/MAF/MAF-Persisting-02-Menu/README.md | Updates secrets keys + az login note. |
| samples/MAF/MAF-Persisting-02-Menu/Program.cs | Migrates threads → sessions APIs. |
| samples/MAF/MAF-Persisting-02-Menu/MAF-Persisting-02-Menu.csproj | Renames AzureAI → Foundry + bumps packages. |
| samples/MAF/MAF-Persisting-01-Simple/README.md | Updates secrets keys + az login note. |
| samples/MAF/MAF-Persisting-01-Simple/Program.cs | Migrates threads → sessions APIs. |
| samples/MAF/MAF-Persisting-01-Simple/MAF-Persisting-01-Simple.csproj | Renames AzureAI → Foundry + bumps packages. |
| samples/MAF/MAF-Ollama-01/Program.cs | Updates GA API renames. |
| samples/MAF/MAF-Ollama-01/MAF-Ollama-01.csproj | Bumps MAF/MEAI package versions. |
| samples/MAF/MAF-MultiModel/README.md | Updates auth guidance + config keys. |
| samples/MAF/MAF-MultiModel/Program.cs | Updates GA API renames + workflow wrapper. |
| samples/MAF/MAF-MultiModel/MAF-MultiModel.csproj | Bumps packages for GA alignment. |
| samples/MAF/MAF-MultiModel/ChatClientProvider.cs | Simplifies to DefaultAzureCredential + new keys. |
| samples/MAF/MAF-MultiAgents/README.md | Updates secrets keys + credential options. |
| samples/MAF/MAF-MultiAgents/Program.cs | Updates GA API renames + workflow wrapper. |
| samples/MAF/MAF-MultiAgents/MAF-MultiAgents.csproj | Renames AzureAI → Foundry + bumps packages. |
| samples/MAF/MAF-MultiAgents/ChatClientProvider.cs | Minor formatting tweak (comma spacing). |
| samples/MAF/MAF-MultiAgents/AppConfigurationService.cs | Updates config keys for endpoint/apikey. |
| samples/MAF/MAF-MultiAgents/AIFoundryAgentsProvider.cs | Switches to Responses API via AIProjectClient. |
| samples/MAF/MAF-MultiAgents-Factory-01/Program.cs | Updates workflow streaming/event API names. |
| samples/MAF/MAF-MultiAgents-Factory-01/MAF-MultiAgents-Factory-01.csproj | Bumps packages + adds NoWarn. |
| samples/MAF/MAF-MicrosoftFoundryAgents-02/Program.cs | Moves to Responses API + GA patterns. |
| samples/MAF/MAF-MicrosoftFoundryAgents-02/MAF-MicrosoftFoundryAgents-02.csproj | Renames AzureAI → Foundry + bumps packages. |
| samples/MAF/MAF-MicrosoftFoundryAgents-01/Program.cs | Moves to Responses API + GA patterns. |
| samples/MAF/MAF-MicrosoftFoundryAgents-01/MAF-MicrosoftFoundryAgents-01.csproj | Renames AzureAI → Foundry + bumps packages. |
| samples/MAF/MAF-ImageGen-02/Program.cs | Updates GA API renames. |
| samples/MAF/MAF-ImageGen-02/MAF-ImageGen-02.csproj | Bumps packages to aligned versions. |
| samples/MAF/MAF-ImageGen-02/ImageGenerator.cs | Updates endpoint config key used by image client. |
| samples/MAF/MAF-ImageGen-02/ChatClientProvider.cs | Switches to AzureCliCredential + new config keys. |
| samples/MAF/MAF-ImageGen-01/Program.cs | Updates GA API renames. |
| samples/MAF/MAF-ImageGen-01/MAF-ImageGen-01.csproj | Bumps packages to aligned versions. |
| samples/MAF/MAF-ImageGen-01/ChatClientProvider.cs | Switches to AzureCliCredential + new config keys. |
| samples/MAF/MAF-HostedAgent-02-MultiAgent/README.md | Adds new hosted-agent sample documentation. |
| samples/MAF/MAF-HostedAgent-02-MultiAgent/Properties/launchSettings.json | Adds env var defaults for local run. |
| samples/MAF/MAF-HostedAgent-02-MultiAgent/Program.cs | Adds new multi-agent console workflow sample. |
| samples/MAF/MAF-HostedAgent-02-MultiAgent/MAF-HostedAgent-02-MultiAgent.csproj | Adds new sample project + package refs. |
| samples/MAF/MAF-HostedAgent-02-MultiAgent/Dockerfile | Adds container build for the sample. |
| samples/MAF/MAF-HostedAgent-02-MultiAgent/Agents/WriterAgent.cs | Adds Writer agent factory. |
| samples/MAF/MAF-HostedAgent-02-MultiAgent/Agents/ReviewerAgent.cs | Adds Reviewer agent factory. |
| samples/MAF/MAF-HostedAgent-02-MultiAgent/Agents/ResearcherAgent.cs | Adds Researcher agent factory. |
| samples/MAF/MAF-HostedAgent-02-MultiAgent/agent.yaml | Adds hosted-agent manifest. |
| samples/MAF/MAF-HostedAgent-01-TimeZone/README.md | Adds new hosted-agent sample documentation. |
| samples/MAF/MAF-HostedAgent-01-TimeZone/Properties/launchSettings.json | Adds env var defaults for local run. |
| samples/MAF/MAF-HostedAgent-01-TimeZone/Program.cs | Adds new tool-based console agent sample. |
| samples/MAF/MAF-HostedAgent-01-TimeZone/MAF-HostedAgent-01-TimeZone.csproj | Adds new sample project + package refs. |
| samples/MAF/MAF-HostedAgent-01-TimeZone/Dockerfile | Adds container build for the sample. |
| samples/MAF/MAF-HostedAgent-01-TimeZone/agent.yaml | Adds hosted-agent manifest. |
| samples/MAF/MAF-FoundryClaude-Persisting-01/Program.cs | Updates GA agent/session APIs. |
| samples/MAF/MAF-FoundryClaude-Persisting-01/MAF-FoundryClaude-Persisting-01.csproj | Bumps MAF/MEAI packages. |
| samples/MAF/MAF-FoundryClaude-01/Program.cs | Updates GA API renames. |
| samples/MAF/MAF-FoundryClaude-01/MAF-FoundryClaude-01.csproj | Bumps MAF/MEAI packages. |
| samples/MAF/MAF-Demos.slnx | Adds hosted-agent projects to solution list. |
| samples/MAF/MAF-BackgroundResponses-03-Complex/Program.cs | Updates GA agent/session/update APIs. |
| samples/MAF/MAF-BackgroundResponses-03-Complex/MAF-BackgroundResponses-03-Complex.csproj | Renames AzureAI → Foundry + bumps packages + NoWarn. |
| samples/MAF/MAF-BackgroundResponses-02-Tools/Program.cs | Updates GA agent/session/update APIs. |
| samples/MAF/MAF-BackgroundResponses-02-Tools/MAF-BackgroundResponses-02-Tools.csproj | Renames AzureAI → Foundry + bumps packages + NoWarn. |
| samples/MAF/MAF-BackgroundResponses-01-Simple/StreamConsoleHelper.cs | Removes unused ClientModel using + formatting tweaks. |
| samples/MAF/MAF-BackgroundResponses-01-Simple/ResponseClientProvider.cs | Switches to AzureCliCredential + new config keys. |
| samples/MAF/MAF-BackgroundResponses-01-Simple/Program.cs | Updates GA agent/session/update APIs. |
| samples/MAF/MAF-BackgroundResponses-01-Simple/MAF-BackgroundResponses-01-Simple.csproj | Renames AzureAI → Foundry + bumps packages + NoWarn. |
| samples/MAF/MAF-BackgroundResponses-01-Simple/ConsoleHelper.cs | Minor formatting tweaks. |
| samples/MAF/MAF-BackgroundResponses-01-Simple/ChatClientProvider.cs | Switches to AzureCliCredential + new config keys. |
| samples/MAF/MAF-AIWebChatApp-Simple/ChatApp20/ChatApp20.Web/Program.cs | Updates agent creation method name. |
| samples/MAF/MAF-AIWebChatApp-Simple/ChatApp20/ChatApp20.Web/ChatApp20.Web.csproj | Bumps Aspire + MAF/MEAI packages. |
| samples/MAF/MAF-AIWebChatApp-Persisting/MAF-AIWebChatApp-Persisting.Web/Services/ChatThreadStore.cs | Migrates persistence to AgentSession APIs. |
| samples/MAF/MAF-AIWebChatApp-Persisting/MAF-AIWebChatApp-Persisting.Web/Program.cs | Updates agent creation method name. |
| samples/MAF/MAF-AIWebChatApp-Persisting/MAF-AIWebChatApp-Persisting.Web/MAF-AIWebChatApp-Persisting.Web.csproj | Bumps Aspire + MAF/MEAI packages. |
| samples/MAF/MAF-AIWebChatApp-Persisting/MAF-AIWebChatApp-Persisting.Web/Components/Pages/Chat/Chat.razor | Migrates thread to session + updates persistence call. |
| samples/MAF/MAF-AIWebChatApp-MutliAgent/ChatApp20/ChatApp20.Web/Program.cs | Updates agent creation method name(s). |
| samples/MAF/MAF-AIWebChatApp-MutliAgent/ChatApp20/ChatApp20.Web/ChatApp20.Web.csproj | Bumps MAF/MEAI packages + normalizes PdfPig. |
| samples/MAF/MAF-AIWebChatApp-Middleware/ChatApp20/ChatApp20.Web/Program.cs | Updates agent creation method name. |
| samples/MAF/MAF-AIWebChatApp-Middleware/ChatApp20/ChatApp20.Web/ChatApp20.Web.csproj | Bumps Aspire + MAF/MEAI packages. |
| samples/MAF/MAF-AIWebChatApp-FoundryClaude/Program.cs | Updates agent creation method name. |
| samples/MAF/MAF-AIWebChatApp-FoundryClaude/MAF-AIWebChatApp-FoundryClaude.csproj | Bumps MAF/MEAI packages. |
| samples/MAF/MAF-AIWebChatApp-AG-UI/MAF-AIWebChatApp-AG-UI.Web/Program.cs | Updates agent creation method name. |
| samples/MAF/MAF-AIWebChatApp-AG-UI/MAF-AIWebChatApp-AG-UI.Web/MAF-AIWebChatApp-AG-UI.Web.csproj | Bumps AGUI + MAF/MEAI packages. |
| samples/MAF/MAF-AIWebChatApp-AG-UI/MAF-AIWebChatApp-AG-UI-Agents/Program.cs | Updates agent creation method name. |
| samples/MAF/MAF-AIWebChatApp-AG-UI/MAF-AIWebChatApp-AG-UI-Agents/MAF-AIWebChatApp-AG-UI-Agents.csproj | Bumps Azure.Identity + MAF/MEAI packages. |
| samples/MAF/MAF-AIFoundryAgents-01/Program.cs | Moves to Responses API via AIProjectClient. |
| samples/MAF/MAF-AIFoundryAgents-01/MAF-AIFoundryAgents-01.csproj | Renames AzureAI → Foundry + bumps packages. |
| samples/MAF/MAF-AIFoundry-02/Program.cs | Switches to AzureCliCredential + AsAIAgent. |
| samples/MAF/MAF-AIFoundry-02/MAF-AIFoundry-02.csproj | Bumps MAF/MEAI/Azure/OpenAI packages. |
| samples/MAF/MAF-AIFoundry-01/Program.cs | Switches to AzureCliCredential + new config keys. |
| samples/MAF/MAF-AIFoundry-01/MAF-AIFoundry-01.csproj | Bumps MAF/MEAI/Azure/OpenAI packages. |
| samples/MAF/CLAUDE-SAMPLES-README.md | Updates install instructions for Claude samples. |
| README.md | Adds MAF v1.0 GA news entry + hosted agent links. |
| MAF-V1-UPGRADE-PLAN.md | Adds written upgrade plan/matrix (new doc). |
| 10-WhatsNew/readme.md | Adds What’s New archive entry for MAF GA. |
| 04-AgentsWithMAF/readme.md | Updates install command + adds hosted agents section. |
| 04-AgentsWithMAF/04-model-context-protocol.md | Updates auth snippet + agent creation API names. |
| 04-AgentsWithMAF/03-multi-agent-workflows.md | Updates agent creation + response type names. |
| 04-AgentsWithMAF/02-agents-with-tools.md | Updates agent creation API name in snippets. |
| 04-AgentsWithMAF/01-building-first-agent.md | Updates install command + auth snippet + API names. |
| 01-IntroductionToGenerativeAI/readme.md | Updates MAF section from “coming later” to present. |
| .squad/team.md | Removes squad team file. |
| .squad/skills/squad-conventions/SKILL.md | Removes squad conventions skill file. |
| .squad/skills/project-conventions/SKILL.md | Removes project conventions template skill file. |
| .squad/routing.md | Removes squad routing rules. |
| .squad/identity/wisdom.md | Removes squad “wisdom” doc. |
| .squad/identity/now.md | Removes squad “now” status doc. |
| .squad/decisions/decisions.md | Removes decisions log file. |
| .squad/decisions.md | Removes legacy decisions doc. |
| .squad/config.json | Removes squad config file. |
| .squad/ceremonies.md | Removes squad ceremonies doc. |
| .squad/casting/registry.json | Removes casting registry. |
| .squad/casting/policy.json | Removes casting policy. |
| .squad/casting/history.json | Removes casting history. |
| .squad/agents/trinity/history.md | Adds/updates Trinity history doc. |
| .squad/agents/trinity/charter.md | Removes Trinity charter. |
| .squad/agents/tank/history.md | Removes Tank history. |
| .squad/agents/tank/charter.md | Removes Tank charter. |
| .squad/agents/scribe/history.md | Removes Scribe history. |
| .squad/agents/scribe/charter.md | Removes Scribe charter. |
| .squad/agents/oracle/history.md | Removes Oracle history. |
| .squad/agents/oracle/charter.md | Removes Oracle charter. |
| .squad/agents/niobe/history.md | Removes Niobe history. |
| .squad/agents/niobe/charter.md | Removes Niobe charter. |
| .squad/agents/neo/history.md | Removes Neo history. |
| .squad/agents/neo/charter.md | Removes Neo charter. |
| .squad/agents/morpheus/history.md | Removes Morpheus history. |
| .squad/agents/morpheus/charter.md | Removes Morpheus charter. |
| .squad/agents/dozer/history.md | Removes Dozer history. |
| .squad/agents/dozer/charter.md | Removes Dozer charter. |
| .squad/.first-run | Removes first-run marker. |
| .gitignore | Adds additional squad/IDE ignore entries. |
| .github/workflows/squad-promote.yml | Adjusts forbidden-path stripping rules. |
| .github/workflows/squad-heartbeat.yml | Refactors triage workflow + sync header. |
Copilot's findings
Comments suppressed due to low confidence (2)
samples/MAF/MAF-AIFoundry-01/Program.cs:15
endpointis retrieved viaconfig["AzureOpenAI:Endpoint"]but is used immediately innew Uri(endpoint)without validation. If the secret is missing/empty, the sample will crash with an unhelpful exception. Suggest adding a required-value check (?? throwwith a setup hint) before constructingAzureOpenAIClient.
samples/MAF/MAF-ImageGen-02/ImageGenerator.cs:33endpoint,deployment, andapiKeyare read from configuration but are used as non-null immediately (endpoint.EndsWith(...),new ApiKeyCredential(apiKey)). If any of these are missing, the sample will throw aNullReferenceExceptionor an argument exception. Add required-value validation (with a clear error message explaining which variable/secret to set) before using them.
- Files reviewed: 136/140 changed files
- Comments generated: 9
| var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build(); | ||
| var endpoint = config["endpoint"]; | ||
| var apiKey = new ApiKeyCredential(config["apikey"]); | ||
| var endpoint = config["AzureOpenAI:Endpoint"]; | ||
| var deploymentName = config["AzureOpenAI:Deployment"] ?? "gpt-5-mini"; | ||
|
|
||
| IChatClient chatClient = | ||
| new AzureOpenAIClient(new Uri(endpoint), apiKey) | ||
| new AzureOpenAIClient(new Uri(endpoint), new AzureCliCredential()) | ||
| .GetChatClient(deploymentName) |
There was a problem hiding this comment.
endpoint comes from config["AzureOpenAI:Endpoint"] (nullable). As written, missing user-secrets/env var will cause an exception in new Uri(endpoint) (and may also trigger nullable warnings). Consider validating it (e.g., ?? throw with a short setup hint/link) before constructing the client so the sample fails with a clear message.
| var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build(); | ||
| var endpoint = config["endpoint"]; | ||
| var apiKey = new ApiKeyCredential(config["apikey"]); | ||
| var endpoint = config["AzureOpenAI:Endpoint"]; | ||
| var deploymentName = config["AzureOpenAI:Deployment"] ?? "gpt-5-mini"; | ||
|
|
||
| IChatClient chatClient = | ||
| new AzureOpenAIClient(new Uri(endpoint), apiKey) | ||
| new AzureOpenAIClient(new Uri(endpoint), new AzureCliCredential()) | ||
| .GetChatClient(deploymentName) | ||
| .AsIChatClient(); |
There was a problem hiding this comment.
endpoint is read from config["AzureOpenAI:Endpoint"] (nullable). If the secret isn't set, new Uri(endpoint) will throw at runtime (and may produce nullable warnings). Add a guard (e.g., ?? throw with a helpful setup message) before creating the AzureOpenAIClient.
| /// <summary> | ||
| /// Unified interaction function: prompts the user for a question, runs the agent using the provided thread, | ||
| /// prints the response using StreamConsoleHelper, and optionally persists the thread to disk. | ||
| /// The function returns the (possibly updated) AgentThread so callers can continue working with it. | ||
| /// </summary> | ||
| private static async Task<AgentThread> RunQuestionWithThread(AIAgent agent, AgentThread thread, bool persistAfter) | ||
| private static async Task<AgentSession> RunQuestionWithThread(AIAgent agent, AgentSession thread, bool persistAfter) | ||
| { |
There was a problem hiding this comment.
The XML doc comment still says the method returns an AgentThread, but the signature now returns AgentSession and uses session serialization APIs. Update the comment to match the new session-based API to avoid confusing readers.
| // Configure the chat client from environment variables | ||
| IChatClient chatClient = CreateChatClient(); | ||
|
|
||
| // Create the AI agent with the GetCurrentTime tool | ||
| AIAgent timeAgent = chatClient.AsAIAgent( | ||
| name: "TimeZoneAgent", | ||
| instructions: "You are a helpful assistant that provides the current date and time in any timezone. " + | ||
| "When a user asks for the time, use the GetCurrentTime tool to get accurate results. " + | ||
| "Always include the timezone name and the formatted date/time in your response.", | ||
| tools: [AIFunctionFactory.Create(GetCurrentTime)]); | ||
|
|
||
| // Run an interactive chat loop | ||
| Console.WriteLine("TimeZone Agent — Ask me for the current time in any timezone!"); | ||
| Console.WriteLine("Type 'exit' to quit.\n"); | ||
|
|
||
| while (true) | ||
| { |
There was a problem hiding this comment.
This sample is presented as a "Hosted Agent" container (agent.yaml specifies port 8088 and the Dockerfile exposes it), but the program is an interactive stdin/stdout console loop and does not start any listener on 8088. In a non-interactive hosted environment this will block or exit and the declared port is unused. Either implement the expected Hosted Agent container protocol/server, or update the manifest/Dockerfile/docs to reflect that this is a local console sample (no port, no hosted deployment claims).
| name: timezone-agent | ||
| version: "1.0" | ||
| description: A .NET agent that provides current time in any timezone | ||
| runtime: | ||
| type: container | ||
| port: 8088 |
There was a problem hiding this comment.
agent.yaml declares runtime.port: 8088, but the containerized app doesn't open/listen on that port (it's an interactive console loop). This will likely fail Hosted Agent deployments that rely on the declared port. Align the manifest with the actual runtime behavior (add a server that listens on 8088, or remove the port/runtime expectations if this isn't a hosted-service container).
| Workflow workflow = AgentWorkflowBuilder.BuildSequential(writer, editor); | ||
|
|
||
| // Run the workflow | ||
| AIAgent workflowAgent = workflow.AsAgent(); | ||
|
|
||
| AgentRunResponse response = await workflowAgent.RunAsync( | ||
| AgentResponse response = await workflowAgent.RunAsync( |
There was a problem hiding this comment.
The docs/code here still use workflow.AsAgent(), but the rest of the repo (and updated samples) have moved to workflow.AsAIAgent(). Leaving AsAgent() in the snippet is likely to cause copy/paste compile errors for learners. Update this snippet to use AsAIAgent() consistently.
| - **🚀 Microsoft Agent Framework v1.0 GA (April 2026)** | ||
|
|
||
| Todos los 28 ejemplos de MAF se han actualizado de preview a paquetes **estables v1.0**. Esto incluye un **cambio de ruptura:** `Microsoft.Agents.AI.AzureAI` ha sido renombrado a `Microsoft.Agents.AI.Foundry`. | ||
|
|
||
| **2 nuevos escenarios de Hosted Agent** — Implementa agentes containerizados en Azure Foundry Agent Service: | ||
| - [MAF-HostedAgent-01-TimeZone](samples/MAF/MAF-HostedAgent-01-TimeZone/) — Agente alojado simple con herramienta de zona horaria | ||
| - [MAF-HostedAgent-02-MultiAgent](samples/MAF/MAF-HostedAgent-02-MultiAgent/) — Flujo de trabajo de Asistente de Investigación Multi-Agente | ||
|
|
||
| Los flujos de trabajo multi-agente, streaming, persistencia y MCP son ahora production-ready. | ||
|
|
There was a problem hiding this comment.
This new Spanish entry mixes untranslated English: the date is shown as "April 2026" and the sentence ends with "production-ready". Consider localizing these terms (e.g., "abril de 2026" and a Spanish equivalent for "production-ready") for consistency with the rest of the translation.
| // Configure the chat client from environment variables | ||
| IChatClient chatClient = CreateChatClient(); | ||
|
|
||
| // Create the three collaborating agents | ||
| AIAgent researcher = ResearcherAgent.Create(chatClient); | ||
| AIAgent writer = WriterAgent.Create(chatClient); | ||
| AIAgent reviewer = ReviewerAgent.Create(chatClient); | ||
|
|
||
| // Build a sequential workflow: Researcher → Writer → Reviewer | ||
| Workflow workflow = AgentWorkflowBuilder.BuildSequential(researcher, writer, reviewer); | ||
| AIAgent workflowAgent = workflow.AsAIAgent(); | ||
|
|
||
| // Interactive loop | ||
| Console.WriteLine("Multi-Agent Research Assistant"); | ||
| Console.WriteLine("Workflow: Researcher → Writer → Reviewer"); | ||
| Console.WriteLine("Type a topic to research, or 'exit' to quit.\n"); | ||
|
|
There was a problem hiding this comment.
Like the TimeZone hosted-agent sample, this project is described as deployable as a Hosted Agent container (agent.yaml declares port 8088), but the implementation is an interactive console loop with no listener on 8088. This is unlikely to work in a non-interactive hosted environment. Either implement the Hosted Agent container server/protocol that listens on the declared port, or update the docs/manifest/Dockerfile to avoid claiming hosted deployment + remove the port.
| name: multi-agent-research-assistant | ||
| version: "1.0" | ||
| description: A multi-agent research assistant using Researcher, Writer, and Reviewer agents in a sequential workflow | ||
| runtime: | ||
| type: container | ||
| port: 8088 |
There was a problem hiding this comment.
agent.yaml declares runtime.port: 8088, but the container app is interactive and does not open/listen on that port. This mismatch will likely break Hosted Agent deployments that rely on the manifest port. Align the manifest (and Dockerfile expose) with the actual runtime behavior, or add a server implementation that listens on 8088.
- Add null guards with setup hints for config values (MAF01, MAF02, AIFoundry-01, ImageGen-02) - Fix AsAgent() -> AsAIAgent() in Lesson 04 workflow docs (7 instances) - Fix XML doc comment AgentThread -> AgentSession in Persisting-02-Menu - Localize Spanish translation (April -> abril, production-ready -> listos para producción) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Summary
Comprehensive alignment of MAF samples and documentation for the Microsoft Agent Framework v1.0 GA release.
Changes
API Name Fixes (Lesson 04 docs)
CreateAIAgent→AsAIAgent(45 instances across 4 files)AgentRunResponse→AgentResponse(4 instances)Microsoft.Agents.AI.OpenAI→Microsoft.Agents.AI(package name)Auth Standardization (passwordless)
ApiKeyCredential+config["endpoint"]toAzureCliCredential+config["AzureOpenAI:Endpoint"]az login)Package Version Alignment
Microsoft.Extensions.AI: 10.4.0Azure.AI.OpenAI: 2.9.0-beta.1Azure.Identity: 1.20.0OpenAI: 2.10.0Documentation Updates
samples/MAF/README.md(6 setup sections)gpt-4o-mini→gpt-5-miniVerification
config["endpoint"]/config["apikey"]in Azure OpenAI code/docsapikeyrefs are Claude-specific (correct — different provider)Notes for Reviewers
FoundryClaude-*) intentionally keepapikey/endpointClaude/deploymentName— different auth providerAzureOpenAI:Endpoint+AzureOpenAI:Deployment+az login