Conversation
…tart to config again
There was a problem hiding this comment.
Pull request overview
This PR adds significant new functionality to the Aspire Project Commander library, enabling projects to define their own commands and startup forms through JSON manifests. The changes introduce a declarative approach where projects can specify interactive configuration requirements via a projectcommander.json file, complementing the existing code-based command registration.
Changes:
- Added project-defined commands via JSON manifest with schema validation
- Implemented startup forms that block project execution until user provides configuration
- Updated package dependencies from Aspire 9.x/ASP.NET 9.x to 13.x/10.x versions
- Refactored DI registration to avoid anti-pattern of calling BuildServiceProvider during registration
Reviewed changes
Copilot reviewed 27 out of 28 changed files in this pull request and generated 20 comments.
Show a summary per file
| File | Description |
|---|---|
| schemas/projectcommander-v1.schema.json | JSON schema defining manifest structure for commands and startup forms |
| Src/Nivot.Aspire.Hosting.ProjectCommander/StartupFormAnnotation.cs | Resource annotation tracking startup form state and completion |
| Src/Nivot.Aspire.Hosting.ProjectCommander/ProjectCommandManifest.cs | Model types for deserializing manifest JSON |
| Src/Nivot.Aspire.Hosting.ProjectCommander/ManifestReader.cs | Manifest parsing and conversion to Aspire InteractionInput types |
| Src/Nivot.Aspire.Hosting.ProjectCommander/ResourceBuilderProjectCommanderExtensions.cs | Added WithProjectManifest method and startup form command registration |
| Src/Nivot.Aspire.Hosting.ProjectCommander/ProjectCommanderHub.cs | Hub methods for startup form lifecycle management |
| Src/Nivot.Aspire.ProjectCommander/IAspireProjectCommanderClient.cs | Extended interface with startup form support and command arguments |
| Src/Nivot.Aspire.ProjectCommander/AspireProjectCommanderClientWorker.cs | Implemented startup form handling and blocking until completion |
| Src/Nivot.Aspire.ProjectCommander/ServiceCollectionAspireProjectCommanderExtensions.cs | Refactored DI registration to avoid BuildServiceProvider anti-pattern |
| Sample/DataGenerator/projectcommander.json | Example manifest demonstrating startup forms and parameterized commands |
| Sample/DataGenerator/Program.cs | Updated to use startup form data and handle command arguments |
| README.md | Comprehensive documentation of new manifest and startup form features |
| CHANGELOG.md | Detailed changelog documenting breaking changes and new features |
| Multiple .csproj files | Package version updates across the solution |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Src/Nivot.Aspire.Hosting.ProjectCommander/ResourceBuilderProjectCommanderExtensions.cs
Outdated
Show resolved
Hide resolved
Src/Nivot.Aspire.Hosting.ProjectCommander/ResourceBuilderProjectCommanderExtensions.cs
Outdated
Show resolved
Hide resolved
Src/Nivot.Aspire.ProjectCommander/AspireProjectCommanderClientWorker.cs
Outdated
Show resolved
Hide resolved
Src/Nivot.Aspire.ProjectCommander/ServiceCollectionAspireProjectCommanderExtensions.cs
Outdated
Show resolved
Hide resolved
Src/Nivot.Aspire.Hosting.ProjectCommander/ProjectCommanderHub.cs
Outdated
Show resolved
Hide resolved
* Initial plan * Fix: Return Success=false for cancelled operations Co-authored-by: oising <1844001+oising@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: oising <1844001+oising@users.noreply.github.com>
…10) * Initial plan * Add xUnit 2 test project with startup form tests and extract logic into services Co-authored-by: oising <1844001+oising@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: oising <1844001+oising@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 39 out of 40 changed files in this pull request and generated 4 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Src/Nivot.Aspire.Hosting.ProjectCommander/ResourceNameParser.cs
Outdated
Show resolved
Hide resolved
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
… tuple (#11) * Initial plan * Fix CHANGELOG to accurately document WithProjectManifest return type Co-authored-by: oising <1844001+oising@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: oising <1844001+oising@users.noreply.github.com>
* Initial plan * Fix thread-safe access to StartupFormService fields using volatile Co-authored-by: oising <1844001+oising@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: oising <1844001+oising@users.noreply.github.com> Co-authored-by: Oisin Grehan <oising@gmail.com>
Changes: