Files
agent-framework/dotnet/src/Microsoft.Agents.AI.Workflows.Declarative
T
Copilot 88ea9d08c7 .NET: Update to OpenAI 2.9.1, Azure.AI.OpenAI 2.9.0-beta.1, Microsoft.Extensions.AI 10.4.0, and Azure.AI.Projects 2.0.0-beta.2 (#4613)
* Initial plan

* Update code for Microsoft.Extensions.AI.Abstractions 10.4.0 breaking changes

- Rename FunctionApprovalRequestContent → ToolApprovalRequestContent
- Rename FunctionApprovalResponseContent → ToolApprovalResponseContent
- Rename UserInputRequestContent → ToolApprovalRequestContent
- Rename UserInputResponseContent → ToolApprovalResponseContent
- Update .FunctionCall property → .ToolCall with FunctionCallContent casts where needed
- Update .Id property → .RequestId on the renamed types
- Rename FunctionApprovalRequestEventGenerator → ToolApprovalRequestEventGenerator
- Rename FunctionApprovalResponseEventGenerator → ToolApprovalResponseEventGenerator

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Update OpenAI 2.9.1, ME.AI 10.4.0, fix breaking API changes

Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>

* Fix remaining ME.AI 10.4.0 breaking changes: MCP approval types, .Output→.Outputs

Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>

* Use pattern matching with `when` for ToolApprovalRequestContent/FunctionCallContent

Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>

* Update Azure.AI.OpenAI to 2.9.0-beta.1

Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>

* Fix remaining GetResponsesClient(model) build failures for Azure.AI.OpenAI 2.9.0-beta.1

Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>

* Address review feedback: remove redundant type checks in TestRequestAgent.cs and fix error message in AIAgentHostExecutor.cs

Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>

* Update Azure.AI.Projects to 2.0.0-beta.2 with namespace migration

- Azure.AI.Projects 2.0.0-beta.1 → 2.0.0-beta.2
- Azure.AI.Projects.OpenAI → Azure.AI.Extensions.OpenAI (transitive)
- Agent types moved to Azure.AI.Projects.Agents namespace
- AgentRecord.Versions.Latest → AgentRecord.GetLatestVersion()
- OpenAPIFunctionDefinition → OpenApiFunctionDefinition
- BingCustomSearchToolParameters → BingCustomSearchToolOptions
- MemorySearchPreviewTool.UpdateDelay → UpdateDelayInSecs
- Azure.Identity 1.17.1 → 1.19.0
- Microsoft.Identity.Client.Extensions.Msal 4.78.0 → 4.83.1

Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>

* Fix remaining type renames for Azure.AI.Projects 2.0.0-beta.2

- BrowserAutomationToolParameters → BrowserAutomationToolOptions
- MemoryUpdateOptions.UpdateDelay stays as UpdateDelay (not renamed)
- WaitForMemoriesUpdateAsync parameter order: pollingInterval before options
- AIProjectAgentsOperations → AgentsClient

Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>

* Fix format errors and OpenTelemetry test for ME.AI 10.4.0

- Remove unused 'using Azure.AI.Extensions.OpenAI' and fix import ordering
  in Agent_With_AzureAIProject/Program.cs
- Update OpenTelemetryAgentTests: gen_ai.tool.definitions is now always
  emitted regardless of EnableSensitiveData per ME.AI 10.4.0 change
  (dotnet/extensions#7346). Tool definitions are not considered sensitive.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix GetRepoFolder() to work in git worktrees

Use 'workflow-samples' directory as repo root marker instead of '.git',
which fails in worktrees (.git is a file) and also matches too early
when a '.github' folder exists in subdirectories.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix formatting: remove unused usings and fix import ordering

dotnet format applied across 59 impacted projects. Primarily removes
unnecessary 'using Azure.AI.Projects' where Azure.AI.Projects.Agents
provides all needed types, and fixes import ordering per editorconfig.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Disable AzureAIAgentsPersistent integration tests (#4769)

Azure.AI.Agents.Persistent 1.2.0-beta.9 references McpServerToolApprovalResponseContent
which was removed in ME.AI 10.4.0 (renamed to ToolApprovalResponseContent), causing
TypeLoadException at runtime. Mark all 6 test classes with IntegrationDisabled trait
until Persistent ships a version targeting ME.AI 10.4.0+.

Upstream fix: https://github.com/Azure/azure-sdk-for-net/pull/56929

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Add README with compatibility note for AzureAI.Persistent (#4769)

Documents that Azure.AI.Agents.Persistent 1.2.0-beta.9 is only compatible
with ME.AI ≤10.3.0 and OpenAI ≤2.8.0 due to type renames in ME.AI 10.4.0.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix file encoding: restore UTF-8 BOM on Persistent test files

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Mark AzureAI.Persistent as IsPackable=false (#4769)

Prevent shipping until Azure.AI.Agents.Persistent targets ME.AI 10.4.0+.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Moving IsPackable after import

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
Co-authored-by: rogerbarreto <19890735+rogerbarreto@users.noreply.github.com>
88ea9d08c7 · 2026-03-20 14:29:29 +00:00
History
..

Declarative Workflows

Declarative Workflows is a no-code platform for orchestrating AI agents to accomplish complex, multi-step tasks with ease. It allows users to design, execute, and monitor workflows using simple declarative configurations—no coding required. By connecting multiple AI agents and services, it enables automation of sophisticated processes that traditionally require custom engineering.

We've provided a set of Sample Workflows within the agent-framework repository.

Please refer to the README for setup instructions to run the sample workflows in your environment.

As part of our Getting Started with Declarative Workflows, we've provided a console application that is able to execute any declarative workflow.

Actions

⚙️ Foundry Actions

Action Description
AddConversationMessage Adds a message to the current conversation thread. Useful for dynamically appending information or system responses.
CopyConversationMessages Duplicates messages from one conversation or context to another. Helps maintain continuity across related interactions.
CreateConversation Starts a new conversation instance. Used when initiating separate dialogues or workflows.
DeleteConversation Permanently removes an existing conversation. Helps manage storage and ensure privacy compliance.
InvokeAzureAgent Triggers an Azure-based AI agent to perform a task or return a response. Useful for leveraging external cognitive services.
RetrieveConversationMessage Fetches a single message from a conversation history. Enables referencing or reusing specific past exchanges.
RetrieveConversationMessages Retrieves multiple messages from the conversation history. Useful for context reconstruction or auditing.

🧑‍💼 Human Input

Action Description
Question Presents a query or prompt requiring human input. Integrates human decision-making into automated processes.

🧩 State Management

Action Description
ClearAllVariables Resets all variables in the current context. Ensures a clean state before starting new logic or sessions.
EditTableV2 Modifies data in a structured table format. Useful for updating variable sets or configuration data dynamically.
ParseValue Extracts or converts data into a usable format. Often used for transforming input before assignment or evaluation.
ResetVariable Restores a specific variable to its default or initial value. Helps maintain predictable state transitions.
SendActivity Sends an activity or message to another system or user. Facilitates communication between components or external services.
SetMultipleVariables Assigns values to multiple variables simultaneously. Useful for batch initialization or updates.
SetTextVariable Assigns text-based data to a variable. Commonly used for string operations or message composition.
SetVariable Sets or updates the value of a single variable. Fundamental for maintaining and controlling state within workflows.

🧭 Control Flow

Action Description
BreakLoop Exits the current loop prematurely when a specified condition is met. Useful for preventing unnecessary iterations once a goal is achieved.
ConditionGroup Defines a set of conditional statements that can be evaluated together. It allows complex decision logic to be grouped for readability and maintainability.
ConditionItem Represents a single conditional statement within a group. It evaluates a specific logical condition and determines the next step in the flow.
ContinueLoop Skips the remaining steps in the current iteration and continues with the next loop cycle. Commonly used to bypass specific cases without exiting the loop entirely.
EndConversation Terminates the current conversation session. It ensures any necessary cleanup or final actions are performed before closing.
EndWorkflow Ends the current workflow or sub-workflow within a broader conversation flow. This helps modularize complex interactions.
Foreach Iterates through a collection of items, executing a set of actions for each. Ideal for processing lists or batch operations.
GotoAction Jumps directly to a specified action within the workflow. Enables non-linear navigation in the logic flow.