feat: YAML workflow definition format with full step type parity#3
Conversation
Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
…DI extension methods Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR adds YAML workflow definition support to WorkflowFramework.Extensions.Configuration with the goal of matching the existing JSON loader/builder capabilities, plus DI registration helpers and a comprehensive YAML-focused test suite.
Changes:
- Introduces
YamlWorkflowDefinitionLoaderand expandsWorkflowDefinitionBuilderto recognize 11 step categories (including nested step structures). - Extends the shared workflow definition model (
WorkflowDefinition/StepDefinition) to support richer YAML/JSON authoring (e.g.,description,class, nestedthenSteps/elseSteps, approval fields). - Adds DI extension methods for registering loaders, the step registry, and the definition builder; adds an end-to-end style test file covering supported YAML step types and DI wiring.
Reviewed changes
Copilot reviewed 31 out of 32 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/WorkflowFramework.Tests/packages.lock.json | Lockfile updates for new/updated transitive dependencies. |
| tests/WorkflowFramework.Tests/Configuration/YamlWorkflowFullTests.cs | New tests covering YAML loading/building for all supported step categories + DI registrations + round-trip checks. |
| tests/WorkflowFramework.Tests.Samples/packages.lock.json | Lockfile updates for new/updated transitive dependencies. |
| tests/WorkflowFramework.Tests.Integration/packages.lock.json | Lockfile updates for new/updated transitive dependencies. |
| tests/WorkflowFramework.Tests.E2E/packages.lock.json | Lockfile updates for new/updated transitive dependencies. |
| tests/WorkflowFramework.Dashboard.UITests/packages.lock.json | Lockfile updates for new/updated transitive dependencies (incl. platform-specific Aspire assets). |
| tests/WorkflowFramework.Dashboard.UITests/Features/SampleWorkflows.feature.cs | Regenerated feature code-behind after dependency/tooling changes. |
| tests/WorkflowFramework.Dashboard.Tests/packages.lock.json | Lockfile updates for new/updated transitive dependencies. |
| tests/WorkflowFramework.Dashboard.Persistence.Tests/packages.lock.json | Lockfile updates for new/updated transitive dependencies. |
| tests/WorkflowFramework.Dashboard.Api.Tests/packages.lock.json | Lockfile updates for new/updated transitive dependencies. |
| src/WorkflowFramework.Extensions.Persistence.SqlServer/packages.lock.json | Lockfile updates for new/updated transitive dependencies. |
| src/WorkflowFramework.Extensions.Persistence.PostgreSQL/packages.lock.json | Lockfile updates for new/updated transitive dependencies. |
| src/WorkflowFramework.Extensions.Distributed.Redis/packages.lock.json | Lockfile updates for new/updated transitive dependencies. |
| src/WorkflowFramework.Extensions.Distributed.PostgreSQL/packages.lock.json | Lockfile updates for new/updated transitive dependencies. |
| src/WorkflowFramework.Extensions.DataMapping.Schema/packages.lock.json | Lockfile updates for new/updated transitive dependencies. |
| src/WorkflowFramework.Extensions.DataMapping.Formats/packages.lock.json | Lockfile updates for new/updated transitive dependencies. |
| src/WorkflowFramework.Extensions.Configuration/packages.lock.json | Lockfile updates reflecting new direct DI abstractions dependency. |
| src/WorkflowFramework.Extensions.Configuration/WorkflowFramework.Extensions.Configuration.csproj | Adds Microsoft.Extensions.DependencyInjection.Abstractions to support DI extension methods. |
| src/WorkflowFramework.Extensions.Configuration/WorkflowDefinition.cs | Extends the definition model with description, class, nested conditional steps, and approval fields. |
| src/WorkflowFramework.Extensions.Configuration/ServiceCollectionExtensions.cs | New DI helper methods to register loaders, registry, and builder. |
| src/WorkflowFramework.Extensions.Configuration/IWorkflowDefinitionLoader.cs | Adds YAML loader and significantly expands WorkflowDefinitionBuilder to handle composite step categories. |
| src/WorkflowFramework.Extensions.Agents.Skills/packages.lock.json | Lockfile updates for new/updated transitive dependencies. |
| src/WorkflowFramework.Extensions.Agents.Mcp/packages.lock.json | Lockfile updates for new/updated transitive dependencies. |
| src/WorkflowFramework.Dashboard/packages.lock.json | Lockfile updates for new/updated transitive dependencies. |
| src/WorkflowFramework.Dashboard.Web/packages.lock.json | Lockfile updates for new/updated transitive dependencies. |
| src/WorkflowFramework.Dashboard.AppHost/packages.lock.json | Lockfile updates for new/updated transitive dependencies (incl. platform-specific Aspire assets). |
| src/WorkflowFramework.Dashboard.Api/packages.lock.json | Lockfile updates for new/updated transitive dependencies. |
| samples/WorkflowFramework.Samples/packages.lock.json | Lockfile updates for new/updated transitive dependencies. |
| samples/WorkflowFramework.Samples.WebApi/packages.lock.json | Lockfile updates for new/updated transitive dependencies. |
| samples/WorkflowFramework.Samples.VoiceWorkflows/packages.lock.json | Lockfile updates for new/updated transitive dependencies. |
| samples/WorkflowFramework.Samples.TaskStream/packages.lock.json | Lockfile updates for new/updated transitive dependencies. |
| benchmarks/WorkflowFramework.Benchmarks/packages.lock.json | Lockfile updates for new/updated transitive dependencies. |
Files not reviewed (1)
- tests/WorkflowFramework.Dashboard.UITests/Features/SampleWorkflows.feature.cs: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
@copilot apply changes based on the comments in this thread |
…ps, foreach IEnumerable, single composite in group, condition doc Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com> Agent-Logs-Url: https://github.com/JerrettDavis/WorkflowFramework/sessions/9d214b01-b342-45fc-9d2a-ddce17697ce0
All five review comments addressed in 835f71c:
|
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 31 out of 32 changed files in this pull request and generated 5 comments.
Files not reviewed (1)
- tests/WorkflowFramework.Dashboard.UITests/Features/SampleWorkflows.feature.cs: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
@copilot apply changes based on the comments in this thread |
…eaf fix for composite types, regenerate lock files Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com> Agent-Logs-Url: https://github.com/JerrettDavis/WorkflowFramework/sessions/301dc8fa-ec98-4d9f-a94d-853554b5d832
All four review comments addressed in a28c10c:
|
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 26 out of 27 changed files in this pull request and generated 3 comments.
Files not reviewed (1)
- tests/WorkflowFramework.Dashboard.UITests/Features/SampleWorkflows.feature.cs: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…uildConditionalStep Agent-Logs-Url: https://github.com/JerrettDavis/WorkflowFramework/sessions/0dc6223b-5592-49fe-be8e-8e42f607d3c6 Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
Applied in 2821f16. Changed |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 33 out of 40 changed files in this pull request and generated 2 comments.
Files not reviewed (7)
- tests/WorkflowFramework.Dashboard.UITests/Features/PropertiesPanel.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/RunAssistant.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/SampleWorkflows.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/Settings.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/Templates.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/WorkflowDesigner.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/WorkflowExecution.feature.cs: Language not supported
|
@copilot apply changes based on the comments in this thread |
…ples and E2E lock files Agent-Logs-Url: https://github.com/JerrettDavis/WorkflowFramework/sessions/d1fb5ad1-ed06-4218-bf4b-777956c2db99 Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
Applied in c608669. Removed the stale |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 33 out of 40 changed files in this pull request and generated 9 comments.
Files not reviewed (7)
- tests/WorkflowFramework.Dashboard.UITests/Features/PropertiesPanel.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/RunAssistant.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/SampleWorkflows.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/Settings.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/Templates.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/WorkflowDesigner.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/WorkflowExecution.feature.cs: Language not supported
|
@copilot apply changes based on the comments in this thread |
… requested minimum across all projects Agent-Logs-Url: https://github.com/JerrettDavis/WorkflowFramework/sessions/2a8d5df2-b6c9-48b5-b7be-0c9feb7f488c Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
Applied in 7601b29. Removed all
All 93 configuration tests continue to pass. |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 38 out of 45 changed files in this pull request and generated 3 comments.
Files not reviewed (7)
- tests/WorkflowFramework.Dashboard.UITests/Features/PropertiesPanel.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/RunAssistant.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/SampleWorkflows.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/Settings.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/Templates.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/WorkflowDesigner.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/WorkflowExecution.feature.cs: Language not supported
…locked-mode restore Packages like Polly.Core, ME.DI, DiagnosticSource, and Microsoft.CodeAnalysis are not part of the .NET shared framework — their lock file entries are required for dotnet restore --locked-mode to succeed. Only System.Text.Json (a .NET 10 shared framework package) can safely be omitted from CentralTransitive entries. Reverts the lock file changes from 7601b29 for all 17 affected projects. Agent-Logs-Url: https://github.com/JerrettDavis/WorkflowFramework/sessions/b53bad8b-79bd-4fd8-ad95-476b9ace0324 Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
Fixed in ddef691. The CI failures were caused by commit 7601b29, which incorrectly removed |
|
@copilot apply changes based on the comments in this thread |
…ditional Agent-Logs-Url: https://github.com/JerrettDavis/WorkflowFramework/sessions/0a753cf2-c02a-49a3-893f-f722d9be8933 Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
Agent-Logs-Url: https://github.com/JerrettDavis/WorkflowFramework/sessions/0a753cf2-c02a-49a3-893f-f722d9be8933 Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
Applied in a3cff18. Three items from the review:
Three new tests added; all 96 configuration tests pass. |
|
@copilot CI fails. https://github.com/JerrettDavis/WorkflowFramework/actions/runs/25747472570/job/75615317340?pr=3 Review and correct. |
…ITests lock files Agent-Logs-Url: https://github.com/JerrettDavis/WorkflowFramework/sessions/7745102f-beba-4978-ab1b-669e12863206 Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
…ePackagesWithLockFile=false) Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
…l commits Agent-Logs-Url: https://github.com/JerrettDavis/WorkflowFramework/sessions/7745102f-beba-4978-ab1b-669e12863206 Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
Root cause: Fix:
|
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 34 out of 42 changed files in this pull request and generated 2 comments.
Files not reviewed (7)
- tests/WorkflowFramework.Dashboard.UITests/Features/PropertiesPanel.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/RunAssistant.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/SampleWorkflows.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/Settings.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/Templates.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/WorkflowDesigner.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/WorkflowExecution.feature.cs: Language not supported
|
@copilot apply changes based on the comments in this thread |
…eoutStepWrapper/TimeoutCompensatingStepWrapper Agent-Logs-Url: https://github.com/JerrettDavis/WorkflowFramework/sessions/dc46b022-a2ad-4a57-bf08-9fb501bba8ba Co-authored-by: JerrettDavis <2610199+JerrettDavis@users.noreply.github.com>
Applied in 6bb107e. Both |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 34 out of 42 changed files in this pull request and generated no new comments.
Files not reviewed (7)
- tests/WorkflowFramework.Dashboard.UITests/Features/PropertiesPanel.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/RunAssistant.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/SampleWorkflows.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/Settings.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/Templates.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/WorkflowDesigner.feature.cs: Language not supported
- tests/WorkflowFramework.Dashboard.UITests/Features/WorkflowExecution.feature.cs: Language not supported
Code Coverage |
cts.IsCancellationRequested && !context.CancellationToken.IsCancellationRequested), preventing inner-step self-cancellations from being misreported as timeoutsOriginal prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.