Commit Graph

16 Commits

  • .NET: Fix declarative workflow regressions for hosted agents (#5905)
    * Fix declarative workflow regressions for hosted agents
    
    Three regressions surfaced when running a declarative workflow as a
    Foundry hosted agent. Together they caused every condition group to fall
    through to elseActions and the raw agent JSON to leak to the caller.
    
    1. AgentProviderExtensions.InvokeAgentAsync forced autoSend to true
       whenever the agent ran on the workflow conversation, which overrode
       the explicit autoSend: false declared in workflow.yaml and streamed
       the raw structured-output JSON straight to the user. Honor the
       caller-supplied autoSend instead.
    
    2. IWorkflowContextExtensions.ReadState / QueueStateUpdateAsync /
       QueueStateResetAsync took the variable name and namespace alias
       directly from PropertyPath.VariableName / NamespaceAlias. Against
       Microsoft.Agents.ObjectModel 2026.2.4.1 those properties return null
       for a dotted reference such as `Local.Triage` even when
       SegmentCount == 2 and IsValid == true, so every assignment threw
       ArgumentNullException via Throw.IfNull. Fall back to Segments() to
       reconstruct the name and alias when the parser returns null.
    
    3. The same ObjectModel version no longer recognizes the user-facing
       `Local` scope alias: VariableScopeNames.IsValidName(`Local`)
       returns false and GetNamespaceFromName(`Local`) returns Unknown, so
       the declarative interpreter's IsManagedScope check fails and the
       State.Set call is silently skipped. Translate the `Local` alias to
       its canonical `Topic` form before forwarding to
       QueueStateUpdateAsync; WorkflowFormulaState.Bind continues to expose
       it as `Local` to PowerFx.
    
    Verified end-to-end against a deployed Foundry hosted agent: the
    declarative triage workflow now routes Technical / Billing / General
    inputs correctly and only the autoSend-eligible messages reach the
    caller.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Hosted-agent HITL: persist session across previous_response_id chains; run approved local AIFunctions
    
    Two regressions hit declarative workflows that use require_approval=true when
    the client chains turns via previous_response_id (no conversation_id):
    
    1. AgentFrameworkResponseHandler keyed the AgentSession store solely on
       conversation_id, so when only previous_response_id was present the
       StateBag (which holds ToolApprovalIdMap) was discarded after each turn.
       The next turn then threw 'No approval mapping recorded for wire id ...'
       in InputConverter.ConvertMcpApprovalResponse.
    
       Fix: fall back to previous_response_id on load and to context.ResponseId
       on save so the response-id chain becomes a valid session key. Conversation
       id remains preferred when present.
    
    2. InvokeFunctionToolExecutor.CaptureResponseAsync only acted on
       FunctionResultContent. In the hosted Foundry path the approval response
       arrives as a ToolApprovalResponseContent with no FunctionResultContent,
       so the local AIFunction never ran and downstream PropertyPath/SendActivity
       consumers (e.g. {Local.RefundResult}) saw empty values.
    
       Fix: when no FunctionResultContent matches but an approved
       ToolApprovalResponseContent does, look up the registered AIFunction by
       name on agentProvider.Functions and invoke it with the evaluated
       arguments, surfacing the result through the existing assignment path.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Apply PropertyPath workaround to initialization path; share + tidy helpers
    
    Address PR #5905 review feedback:
    
    * Move the PropertyPath VariableName/NamespaceAlias fallback and 'Local'
      -> 'Topic' scope remap into a shared internal PropertyPathExtensions
      helper. Materializes Segments() once, names the magic 'Local' alias
      as a const, and carries a TODO referencing the tracking issue.
    
    * Apply the same helper in WorkflowDiagnostics.InitializeDefaults so a
      declared default for a dotted variable like 'Local.Triage' is no
      longer silently skipped at workflow startup (closes the gap flagged
      by the reviewer: runtime ReadState/QueueStateUpdateAsync worked but
      state.Initialize did not).
    
    * Restore the previous strict failure mode on namespace alias by
      wrapping GetNamespaceAlias() in Throw.IfNull at call sites so a
      malformed single-segment path keeps failing fast rather than
      silently passing null to State.Get/Set.
    
    All 821 unit tests pass.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Add tests for AgentProviderExtensions.InvokeAgentAsync autoSend behavior
    
    Covers the autoSend regression fix: when the agent runs on the workflow conversation with autoSend=false, no AgentResponseUpdateEvent or AgentResponseEvent is added to the context. Also covers autoSend=true (events emitted) and autoSend=false on a non-workflow conversation.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Surface SendActivity output via AgentResponseUpdateEvent
    
    SendActivityExecutor previously only emitted the activity text via YieldOutputAsync, which the runtime converts to an AgentResponseEvent. WorkflowSession gates AgentResponseEvent behind includeWorkflowOutputsInResponse, so when a host opts out of summary outputs (the default for AsAIAgent) the SendActivity reply is silently dropped.
    
    Mirror the pattern used by AgentProviderExtensions for autoSend agent invocations: also emit an AgentResponseUpdateEvent, which WorkflowSession yields unconditionally. This makes SendActivity reliably reach chat-protocol clients without requiring includeWorkflowOutputsInResponse = true (which would also duplicate autoSend agent output).
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Revert previous_response_id session-key fallback
    
    The fallback let a session be keyed by an unbroken previous_response_id chain,
    but conversation_id is the right way to thread state across turns: it survives
    shared/branched chains (e.g. when another agent generates a response in between)
    and is the documented model for stateful clients. Restore conversation_id as the
    sole session key and rely on the client to thread it. The InvokeFunctionTool
    approval/local-function half of 1baf4af4d remains.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Set Foundry ProductContext per-executor instead of via PropertyPath workaround
    
    ObjectModel 2026.2.4.1 resolves PropertyPath.VariableName / NamespaceAlias and VariableScopeNames.IsValidName against AsyncLocal<ProductContext> at access time. In hosted-agent scenarios each HTTP request runs on a fresh async context where that AsyncLocal is default, so dotted refs like Local.Triage returned null and the Local scope alias was rejected.
    
    Replace the PropertyPathExtensions helper (which papered over both symptoms) with a single WorkflowDiagnostics.SetFoundryProduct() call at the entry of DeclarativeActionExecutor.HandleAsync. The set writes to the request's logical async context before any code reads PropertyPath, letting the existing parser and scope resolver work as designed.
    
    Validated: 824/824 declarative unit tests pass; technical/billing/general routes all dispatch correctly against a deployed Foundry hosted agent.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Address review feedback on InvokeFunctionToolExecutor
    
    - Surface registered-function lookup failures and invocation exceptions via FunctionResultContent.Exception instead of returning the error text as a successful Result, so downstream {Local.X} assignments can distinguish failures from successes.
    
    - Use AIJsonUtilities.DefaultOptions to JSON-serialize non-string function results (matching FunctionInvokingChatClient / ToolBridge), so complex types stay consumable by PropertyPath consumers instead of degrading to Object.ToString().
    
    - Drop the explicit System. prefix on StringComparison / Exception now that the file imports System.
    
    - Add AutoSendTrueOnExternalConversationEmitsResponseEventsAndCopiesMessagesAsync to cover the (autoSend: true, external conversation) quadrant, asserting that response events are emitted and that messages are mirrored to the workflow conversation.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    * Honor AutoSendIsDefaultValue when computing autoSend
    
    AzureAgentOutput.AutoSend and InvokeToolOutput.AutoSend in
    Microsoft.Agents.ObjectModel 2026.2.4.1 are never null — they
    return a literal-false default when the YAML omits the field.
    The previous null check in Get/AutoSendValue therefore always
    fell through to evaluating the literal false, so every action
    whose YAML had any output block but no explicit autoSend was
    treated as autoSend = false. This was previously masked by
    `autoSend |= isWorkflowConversation` in AgentProviderExtensions
    (removed earlier in this PR to honor explicit autoSend: false),
    which silently re-enabled autoSend on the workflow conversation.
    
    Use AutoSendIsDefaultValue to distinguish an explicit autoSend
    value from the implicit default and treat the implicit default
    as true, restoring the historical behavior for ValidateCaseAsync
    InvokeAgent.yaml (3 InvokeAzureAgent actions, last one captures
    to Local.RatingResponse via output.messages with no autoSend
    specified) while keeping the hosted-agent fix that honors an
    explicit autoSend: false.
    
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Ben Thomas <25218250+alliscode@users.noreply.github.com>
    Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
  • .NET: Add declarative HttpRequestAction sample (#5572)
    * Add declarative HttpRequestAction support to workflows
    
    * Clean up response body for diagnostics  and fix tests.
    
    * Fix merge with main.
    
    * Remove redundant fallback for request content headers.
    
    * Add declarative InvokeHttpRequest sample
    
    * Fix solution file and update sample yaml comments
    
    * Add final newline to sample class to fix formatting failure
  • .NET: Include ReasoningEncryptedContent by default when stored output disabled with Responses (#4623)
    * Include ReasoningEncryptedContent by default when stored output disabled
    
    * Fix formatting
    
    * Fix formatter
  • .NET: Support InvokeMcpTool for declarative workflows (#4204)
    * Initial implementation of InvokeMcpTool in declarative workflow
    
    * Cleaned up sample implementation
    
    * Updated sample comments.
    
    * Added missing executor routing attribute
    
    * Fix PR comments.
    
    * Updated based on PR comments.
    
    * Updated based on PR comments.
    
    * Removed unnecessary using statement.
  • .NET: Fix JSON arrays of objects parsed as empty records when no schema is defined (#4199)
    * fix: use HasSchema check in DetermineElementType to prevent empty records
    
    When parsing JSON arrays containing objects without a predefined schema,
    `DetermineElementType()` was creating a `VariableType` with an empty
    (non-null) schema via `targetType.Schema?.Select(...) ?? []`. This caused
    `ParseRecord` to take the schema-based parsing path, iterating over zero
    schema fields and silently discarding all JSON properties.
    
    The fix checks `targetType.HasSchema` and falls back to
    `VariableType.RecordType` (which has `Schema = null`) when no schema is
    defined, ensuring `ParseRecord` takes the dynamic `ParseValues()` path
    that preserves all JSON properties.
    
    Closes #4195
    
    * test: add regression tests for schema-less JSON array-of-objects parsing (#4195)
    
    Add two regression tests to JsonDocumentExtensionsTests:
    
    1. ParseRecord_ObjectWithArrayOfObjects_NoSchema_PreservesNestedProperties
       - Parses a JSON object containing an array of objects using
         VariableType.RecordType (no schema) and verifies that nested
         object properties (name, role) are preserved in each element.
       - This is the exact scenario from issue #4195 where objects in
         arrays were being returned as empty dictionaries.
    
    2. ParseList_ArrayOfObjects_NoSchema_PreservesProperties
       - Parses a JSON array of objects directly via ParseList with
         VariableType.ListType (no schema) and verifies all properties
         are preserved.
    
    Both tests follow the existing Arrange/Act/Assert pattern and would
    have failed before the DetermineElementType() fix (empty dictionaries
    instead of populated ones).
  • .NET Workflows - Rename agent-provider and add comments (Declarative Workflows) (#3895)
    * Renamed with comments
    
    * Fix rename arcs
    
    * Integration tests
  • .NET: Workflows - Support fidelity when converting to and from ChatMessage in declarative workflows (#3505)
    * Builds locally and tests pass
    
    * Fix typo
    
    * Updated
    
    * Updated
    
    * Fixed tests failing on net472 but not on dotnet10
    
    ---------
    
    Co-authored-by: Chris Rickman <crickman@microsoft.com>
  • .NET - [Breaking]: Update Declarative Object Model + Dependencies (#3017)
    * Builds locally and tests pass
    
    * Fix typo
    
    * Reverted nuget config change to remove internal feed and map to new public object model package with renames.
    
    * Renaming Bot object model in additional sample.
    
    ---------
    
    Co-authored-by: Peter Ibekwe <peibekwe@microsoft.com>
  • .NET: Upgrade to .NET 10 (#2128)
    * Upgrade to .NET 10
    
    - Require .NET 10 SDK
    - Include net10.0 assets in all assemblies
    - Move net9.0-only targets to net10.0
    - Update LangVersion to latest
    - Remove complicated distinctions between debug target TFMs and release target TFMs
    - Remove unnecessary package dependencies when built into netcoreapp
    - Clean up some ifdefs
    - Clean up some analyzer warnings
    
    * Fix CI
  • .NET: Add Microsoft.Agents.AI.AzureAI (Azure.AI.Project 1.2) Support (#1662)
    * WIP
    
    * Fixed build errors (#1638)
    
    Comment and nullable type alignment
    
    * .NET: Azure.AI.Agents Package Split + Initial Extensions (#1657)
    
    * Move packages
    
    * Update nuget.config
    
    * Address Xmldoc
    
    * Remove format from branches checks
    
    * Address Xmldocs
    
    * Add more details to the implementation
    
    * Moving Agent logic to ChatClient
    
    * Adding Name and Id overrides to AzureAIAgent
    
    * Updating extensions
    
    * Add GetAiAgent extensions
    
    * Adding support for version as name can conflict 409 using the Agents API with same name
    
    * Addressing more updates to the extensions
    
    * More improvements
    
    * Remove debugging code from sample
    
    * Address copilot feedback
    
    * Apply suggestions from co-pilot code review
    
    * Update Directory.Packages.props
    
    Fix package version rollback:
    
    Azure.AI.Agents.Persistent (beta-6 => beta-7)
    
    * .NET: Add comprehensive unit tests for Microsoft.Agents.AI.AzureAIAgents extension methods (#1786)
    
    * Initial plan
    
    * Add comprehensive unit test project for Microsoft.Agents.AI.AzureAIAgents
    
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * Add README documenting test project and package dependency requirements
    
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * Fix documentation URL to use learn.microsoft.com
    
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * Bump back AAAP 1.2.0-beta.7
    
    * Address AI generated UT's
    
    * Remove UT Readme
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * .NET: Change model to be required just for prompt agent definition specific extensions (#1812)
    
    * Remove unneeded model from extensions
    
    * Add noop justification
    
    * Update Package Nameing: V1 -> AzureAI.Persistent / V2 -> AzureAI (#1829)
    
    * .NET: Update Extensions for Strict Agent Definitions + Improvements (#1892)
    
    * Update Package Nameing: V1 -> AzureAI.Persistent / V2 -> AzureAI
    
    * Update agents and extensions to comply with strict agent definitions
    
    * More static updates
    
    * Address UT, and ResponseTool support
    
    * Improving reusability extensions
    
    * Addressing ResponseTools Unit Tests and extension setup
    
    * Adapted workaround on breaking AAA with OpenAI 2.6.0
    
    * Small updates
    
    * Remove strictness when retrieving agents, improved XmlDocs
    
    * Improve sample comments
    
    * Update dotnet/tests/Microsoft.Agents.AI.AzureAI.UnitTests/AgentsClientExtensionsTests.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Apply suggestion from @Copilot
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Apply suggestion from @Copilot
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Address PR comments
    
    * Address UT failing
    
    * Address Copilot feedback
    
    * Address Copilot feedback
    
    * Address comment typo
    
    * Address PR feedback
    
    * Address typo
    
    * Add missing Extensions with ChatClientAgentOptions
    
    * Address comments
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Version update (#1901)
    
    * Updated package version (#1906)
    
    * .NET: Allow Declarative AIAgents Extensions (#1931)
    
    * Improve reusability of extension code and additional option to losen the strictiness of in-proc tools
    
    * Add missing UT scenarios
    
    * Add missing UT test scenarios
    
    * Normalize changes
    
    * Updated (#1948)
    
    * .NET: AgentDefinition extensions method simplification (#1967)
    
    * Update extensions methods that accepts AgentDefinition type to not be restrictive
    
    * Update Unit Tests
    
    * Revert yarn/package-lock
    
    * Revert yarn/package-lock
    
    * Address copilot feedback
    
    * Fix bad merge
    
    * .NET Workflows - WIP Declarative action update (#1761)
    
    * WIP
    
    * Fixed build errors (#1638)
    
    Comment and nullable type alignment
    
    * Sync to SDK update
    
    * Checkpoint
    
    * Checkpoint: Tests passing
    
    * Checkpoint: EndWorkflow
    
    * Add trace
    
    * .NET: Azure.AI.Agents Package Split + Initial Extensions (#1657)
    
    * Move packages
    
    * Update nuget.config
    
    * Address Xmldoc
    
    * Remove format from branches checks
    
    * Address Xmldocs
    
    * Add more details to the implementation
    
    * Moving Agent logic to ChatClient
    
    * Adding Name and Id overrides to AzureAIAgent
    
    * Updating extensions
    
    * Add GetAiAgent extensions
    
    * Adding support for version as name can conflict 409 using the Agents API with same name
    
    * Addressing more updates to the extensions
    
    * More improvements
    
    * Remove debugging code from sample
    
    * Address copilot feedback
    
    * Apply suggestions from co-pilot code review
    
    * Checkpoint
    
    * Update Directory.Packages.props
    
    Fix package version rollback:
    
    Azure.AI.Agents.Persistent (beta-6 => beta-7)
    
    * Add project reference
    
    * .NET: Add comprehensive unit tests for Microsoft.Agents.AI.AzureAIAgents extension methods (#1786)
    
    * Initial plan
    
    * Add comprehensive unit test project for Microsoft.Agents.AI.AzureAIAgents
    
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * Add README documenting test project and package dependency requirements
    
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * Fix documentation URL to use learn.microsoft.com
    
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * Bump back AAAP 1.2.0-beta.7
    
    * Address AI generated UT's
    
    * Remove UT Readme
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * .NET: Change model to be required just for prompt agent definition specific extensions (#1812)
    
    * Remove unneeded model from extensions
    
    * Add noop justification
    
    * Update Package Nameing: V1 -> AzureAI.Persistent / V2 -> AzureAI (#1829)
    
    * Checkpoint for merge
    
    * No build errors
    
    * .NET: Update Extensions for Strict Agent Definitions + Improvements (#1892)
    
    * Update Package Nameing: V1 -> AzureAI.Persistent / V2 -> AzureAI
    
    * Update agents and extensions to comply with strict agent definitions
    
    * More static updates
    
    * Address UT, and ResponseTool support
    
    * Improving reusability extensions
    
    * Addressing ResponseTools Unit Tests and extension setup
    
    * Adapted workaround on breaking AAA with OpenAI 2.6.0
    
    * Small updates
    
    * Remove strictness when retrieving agents, improved XmlDocs
    
    * Improve sample comments
    
    * Update dotnet/tests/Microsoft.Agents.AI.AzureAI.UnitTests/AgentsClientExtensionsTests.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Apply suggestion from @Copilot
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Apply suggestion from @Copilot
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Address PR comments
    
    * Address UT failing
    
    * Address Copilot feedback
    
    * Address Copilot feedback
    
    * Address comment typo
    
    * Address PR feedback
    
    * Address typo
    
    * Add missing Extensions with ChatClientAgentOptions
    
    * Address comments
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Updated package version (#1897)
    
    * Version update (#1901)
    
    * Checkpoint
    
    * Updated package version (#1906)
    
    * Checkpoint
    
    * Checkpoint
    
    * Checkpoint
    
    * Align with azure ai agent
    
    * Update dotnet/samples/GettingStarted/Workflows/Declarative/StudentTeacher/Program.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/samples/GettingStarted/Workflows/Declarative/MCPToolApproval/Program.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/samples/GettingStarted/Workflows/Declarative/DeepResearch/Program.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Refactored external input
    
    * Update dotnet/samples/GettingStarted/Workflows/Declarative/MCPToolApproval/Program.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Agent tools patch
    
    * Demos validated
    
    * Checkpoint
    
    * Hygiene
    
    * Checkpoint - Samples
    
    * Update dotnet/samples/GettingStarted/Workflows/Declarative/StudentTeacher/Program.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/samples/GettingStarted/Workflows/Declarative/StudentTeacher/Program.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Checkpoint
    
    * Checkpoint - Deep Research
    
    * Update baseline
    
    * Update
    
    * Typo
    
    * Checkpoint
    
    * Typos
    
    * Sample cleanup
    
    * Update dotnet/src/Microsoft.Agents.AI.Workflows.Declarative/AzureAgentProvider.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/src/Microsoft.Agents.AI.AzureAI/AgentsClientExtensions.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/samples/GettingStarted/Workflows/Declarative/FunctionTools/Program.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/samples/GettingStarted/Workflows/Declarative/StudentTeacher/Program.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/samples/GettingStarted/Workflows/Declarative/ToolApproval/Program.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/samples/GettingStarted/Workflows/Declarative/DeepResearch/Program.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Typo
    
    * Typo
    
    * Fix input loop
    
    * Sample - Function Calling / External Input
    
    * Typo
    
    * Finessed
    
    * Checkpoint
    
    * Fix feed
    
    * Checkpoint - so close
    
    * Ding dong!
    
    * "there" ***
    
    * Fixup comments
    
    * Fix sample
    
    * Code analysis
    
    * Header
    
    * Typo (variableName)
    
    * Remove dead code
    
    * Skip test (agent api ratchet)
    
    * Comment
    
    * Update dotnet/samples/GettingStarted/Workflows/Declarative/StudentTeacher/Program.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Typo
    
    ---------
    
    Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com>
    Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com>
    
    * .NET: Latest updates Pre/Post V2 Bugbash Findings (#2040)
    
    * Improve V2 logic before/after bugbash prep
    
    * Apply suggestions from code review
    
    Co-authored-by: Stephen Toub <stoub@microsoft.com>
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Stephen Toub <stoub@microsoft.com>
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * .NET: Update Foundry Agents to latest 2.0.0 alpha.20251107.3 (#2050)
    
    * Update extensions for new CreateVersionOptions structure
    
    * Update unit tests
    
    * Addresss capitalized
    
    * Update AgentsClientExtensionsTests.cs
    
    Fix invalid cast format failure
    
    * .NET: Feature foundry agent + user agent (#2058)
    
    * Update unit tests
    
    * Add user-agent protocol calls
    
    * Update unit tests
    
    * Update unit tests with http handler confirmation
    
    * UT fix
    
    * Fix xmldoc
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Address copilot feedback
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * .NET: Update Extensions to be less restrictive for GetAIAgents (#2091)
    
    * Update behavior / restrictiveness when retrieving agents
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Address format
    
    * Address copilot feedback
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    
    * .NET Workflows - Support "structured inputs" feature for declarative workflows (#2053)
    
    * Bump version for release
    
    * .NET Workflows - Separate Foundry/AzureAI Provider into its own package (#2078)
    
    * Remove unused using directive in AzureAgentProvider
    
    Removed unused using directive for Extensions.
    
    * .NET: Updates to Foundry Agents Package (#2125)
    
    * Remove the conversation creation always
    
    * Update unit tests + address IL + refactor
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Internalize unused methods
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Fix declarative workflows integration testcase
    
    * .NET: Feature foundry agent/agent reference extension (Python Parity with Name + Version option) (#2147)
    
    * Add agent reference extensions
    
    * Add UT covering AgentReference and ModelId
    
    * .NET: Add GettingStarted Samples for Agents V2. (#2159)
    
    * Add gettingstarted samples for Foundry Agents
    
    * Address structured outputs
    
    * Net 10 -> Net 9 Temporary
    
    * Net 10 -> Net 9 Temporary
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Address missing docs + old
    
    * Drop var for samples
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Apply suggestions from code review
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Address copilot feedback
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * .NET: Foundry Agents V2 - Add CodeInterpreter Sample (#2180)
    
    * Adding Code Interpreter sample and AgentName naming validation
    
    * Add agent name check UT
    
    * Improve sample code
    
    * Apply suggestion
    
    * Apply suggestion
    
    * Fixed (#2190)
    
    * .NET Workflows - Add "CustomerSupport" sample (#2102)
    
    * .NET Workflows - Add sample for hosted declarative workflow (#2199)
    
    * fwiw
    
    * Less blank lines
    
    * Fixed (#2204)
    
    * Update version (#2206)
    
    * .NET: Feature foundry agent/update breaking v2.0 to v1.2 (#2212)
    
    * Migration WIP Checkpoint 1
    
    * Build + UT + Workflow passing
    
    * Address latest commits after break
    
    * Revert rename in unrelated files
    
    * Address PR comments
    
    * Class renames
    
    * Allow dotnet-format workflow on feature branches
    
    Revert unintentional edit
    
    * .NET: Add Conformance Integration Tests for AzureAI Package (#2237)
    
    * Conformance tests added and passing
    
    * Correct namespace
    
    * Update Azure.AI.Project to latest public nuget version
    
    * .NET: Added Computer use tool sample (#2235)
    
    * Initial computer use sample implementation.
    
    * Added background thread to allow polling for long running requests.
    
    * Removed unrequired try-catch block and added missing thread for agent call.
    
    * Removed irrelevant chatOptions and updated code based on feedback.
    
    * Updated image assets and fixed response issue.
    
    * Updated based on PR comments.
    
    * Update to Azure.AI.Project
    
    ---------
    
    Co-authored-by: Roger Barreto <19890735+rogerbarreto@users.noreply.github.com>
    
    * Package descriptions
    
    ---------
    
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
    Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com>
    Co-authored-by: Chris Rickman <crickman@microsoft.com>
    Co-authored-by: Stephen Toub <stoub@microsoft.com>
    Co-authored-by: Mark Wallace <127216156+markwallace-microsoft@users.noreply.github.com>
    Co-authored-by: Peter Ibekwe <109177538+peibekwe@users.noreply.github.com>
  • .NET Workflows - Fix ability of ParseValue action to process list/table types. (#1577)
    * Initial plan
    
    * Add test classes for extension methods
    
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    * Fix test issues and document bug in ExpandoObjectExtensions
    
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    * Address code review feedback - shorten Skip messages and add explanatory comments
    
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    * Replace Fields.ToDictionary with GetField calls and fix ExpandoObjectExtensions bug
    
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    * Update dotnet/tests/Microsoft.Agents.AI.Workflows.Declarative.UnitTests/Extensions/DataValueExtensionsTests.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/tests/Microsoft.Agents.AI.Workflows.Declarative.UnitTests/Extensions/DataValueExtensionsTests.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Remove unused using statement from DialogBaseExtensionsTests
    
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    * Add proper WrapWithBot tests using AdaptiveDialog and OnActivity
    
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    * Cleanup
    
    * Better
    
    * Better
    
    * One more test
    
    * Checkpoint
    
    * Checkpoint
    
    * Finally
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
  • .NET: Add comprehensive test classes for extension methods in Microsoft.Agents.AI.Workflows.Declarative (#1555)
    * Initial plan
    
    * Add test classes for extension methods
    
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    * Fix test issues and document bug in ExpandoObjectExtensions
    
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    * Address code review feedback - shorten Skip messages and add explanatory comments
    
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    * Replace Fields.ToDictionary with GetField calls and fix ExpandoObjectExtensions bug
    
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    * Update dotnet/tests/Microsoft.Agents.AI.Workflows.Declarative.UnitTests/Extensions/DataValueExtensionsTests.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Update dotnet/tests/Microsoft.Agents.AI.Workflows.Declarative.UnitTests/Extensions/DataValueExtensionsTests.cs
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Remove unused using statement from DialogBaseExtensionsTests
    
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    * Add proper WrapWithBot tests using AdaptiveDialog and OnActivity
    
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    
    * Cleanup
    
    * Better
    
    * Better
    
    * One more test
    
    ---------
    
    Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
    Co-authored-by: crickman <66376200+crickman@users.noreply.github.com>
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Chris Rickman <crickman@microsoft.com>
  • .NET Workflows - Update State Serialization for JSON Checkpointing (#1388)
    * Checkpoint
    
    * Checkpoint
    
    * Namespace
    
    * All ready
    
    * Namespace
    
    * Clean
    
    * Fix
  • .NET: Re-enable ImplicitUsings in samples and clean up NoWarns (#1060)
    * Re-enable ImplicitUsings in samples and clean up NoWarns
    
    * Fix dotnet format
    
    * More dotnet format
    
    * More dotnet format
    
    ---------
    
    Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
  • .NET Workflows - Code Generation for Declarative Workflow (#655)
    * Notes
    
    * Readme typo
    
    * Update readme
    
    * Checkpoint
    
    * Namespace fix
    
    * Fix ID and namespace
    
    * Checkpoint
    
    * Verified
    
    * Comments
    
    * Isolate "Kit"
    
    * Address note: static
    
    * Checkpoint
    
    * Checkpoint "Executor<>"
    
    * Prefix and internal executors
    
    * Test passing
    
    * Cleanup
    
    * Rename "session" concept
    
    * Revert workflow debug
    
    * Fix template base / pragma
    
    * Tune system scope
    
    * Update dotnet/src/Microsoft.Agents.Workflows.Declarative/CodeGen/ResetVariableTemplate.tt
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    
    * Fix empty template
    
    * Add validation for codegen ut
    
    * Fix test
    
    * Codegen baselines
    
    * Constant
    
    * Prep
    
    * Mark TODO
    
    * Fix
    
    * Namespace
    
    * One more
    
    * Update baselines
    
    * Checkpoint
    
    * Checkpoint
    
    * Checkpoint
    
    * fme
    
    * Checkpoint
    
    * Another step
    
    * Fixed up
    
    * Roslyn
    
    * Fix
    
    * More cleaning
    
    * Async
    
    * Fix
    
    * Enum checkpoint
    
    * Refine enum
    
    * Checkpoint
    
    * Sync templates
    
    * Checkpoint
    
    * Streamline
    
    * Pre-merge analyzer updates
    
    * Foreach
    
    * Placeholders
    
    * Checkpoint
    
    * Clean-up
    
    * Sample path resolution
    
    * Checkpoint
    
    * Checkpoint - Workflow Code Building
    
    * Validation
    
    * Test cleanup
    
    * Update test basline
    
    * Update test baseline
    
    * Fix DefaultTemplate usage
    
    * Validation checkpoint
    
    * Fix break/continue edges
    
    * Verify generated code builds
    
    * Fix merge
    
    * Fix build validation
    
    * Update template handling of literal string values.
    
    * Test for metadata case
    
    * Update baselines
    
    * Fix merge
    
    * Checkpoint
    
    * Checkpoint: Conditions
    
    * Invoke Agent Checkpoint
    
    * Namespace
    
    * Address code-analysis issues
    
    * Cross platform test support
    
    * Invoke agent checkpoint
    
    * Clean sample
    
    * Checkpoint: Agent Invoke Input Messages
    
    * Checkpoint - Passing
    
    * Checkpoint
    
    * Regenerate all template + port conversation fix
    
    * Checkpoint: Tests good
    
    * Fix test for unbuntu
    
    * Fix build command
    
    * Checkpoint - E2E
    
    * Test fix
    
    * Update integration tests
    
    * Fix merge
    
    * Update
    
    * Checkpoint !!!
    
    * Baby steps
    
    * Checkpoint
    
    * Checkpoint E2E !!!
    
    * So close...
    
    * Integrate test validation
    
    * Fix merge
    
    * Rebase tests
    
    * Namespace
    
    * Namespace
    
    * Test cleanup
    
    * Sample comment cleanup
    
    * Checkpoint: List conversion
    
    * Include these
    
    * CheckPoint: ParseValue
    
    * Namespace
    
    * Fix sampel
    
    * More namspace
    
    * Comments
    
    * Test updates
    
    * Test fix
    
    * Better build
    
    * Shared code
    
    * Sort solution
    
    * Fix build
    
    * Prune solution
    
    * One more
    
    * Conversion matrix
    
    * Final table conversion
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
  • .NET: Rename workflows projects (#975)
    * Renaming Microsoft.Agent.Workflows to Microsoft.Agents.AI.Workflows
    
    * Removing local settings.
    
    * Removing remining old files from merge.