* feat: add specification and quality checklist for Shell Reload API endpoints * feat: implement Shell Reload API endpoints and associated documentation * feat: enhance Shell Reload API documentation and add tasks for implementation phases * feat: implement Shell Reload API features with endpoints, interface contracts, models, and component tests * feat: update Shell Reload API responses and tests to reflect changes in error handling and response structure * Fix shell reload follow-up review issues (#7354) * Initial plan * Address shell reload review feedback Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com> * Dispose shell reload semaphore Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com> * Harden shell reload follow-up fixes Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com> * Update src/modules/Elsa.Workflows.Api/Endpoints/Shells/Reload/Endpoint.cs Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> * Potential fix for pull request finding 'Missed opportunity to use Where' Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com> * Update src/modules/Elsa.Workflows.Api/Endpoints/Shells/Reload/Endpoint.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: sfmskywalker <938393+sfmskywalker@users.noreply.github.com> Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
3.4 KiB
Data Model: Shell Reload API Endpoints
Entity: Shell Reload Command
- Purpose: Represents an administrative request to refresh shell runtime state.
- Fields:
Scope:AllorTargeted.RequestedShellId: optional shell identifier; required when scope isTargeted.RequestedAt: execution timestamp captured for result reporting and diagnostics.
- Validation rules:
RequestedShellIdis required for targeted commands.- Shell identifiers are matched case-insensitively to align with
ShellIdsemantics in CShells.
Entity: Shell Reload Result
- Purpose: Represents the top-level outcome returned by either reload endpoint.
- Fields:
Status: one ofCompleted,Partial,Failed,Busy,NotFound, orRequestedShellFailed.RequestedShellId: optional shell identifier echoed for targeted requests.Shells: collection ofShell Reload Item Resultrecords for each affected shell.ReloadedAt: timestamp indicating when the orchestration completed.
- Validation rules:
Shellsmust be populated forCompleted,Partial, andRequestedShellFailedoutcomes.RequestedShellIdmust be populated forTargetedrequests.
Entity: Shell Reload Item Result
- Purpose: Describes the shell-level result used to explain a full or targeted reload outcome.
- Fields:
ShellId: shell identifier.Outcome: one ofReloaded,Unchanged,Removed,InvalidConfiguration,Unknown, orSkipped.Requested: boolean indicating whether this item is the caller’s explicitly requested shell.Message: optional human-readable detail describing why the shell remained unchanged or failed.
- Validation rules:
- Each
ShellIdappears at most once per response. Requestedis true for at most one item.
- Each
Entity: Shell Reload Scope Snapshot
- Purpose: Internal planning concept representing the latest provider settings compared with the current cache before orchestration runs.
- Fields:
CurrentShellIds: current in-memory shell identifiers from the settings cache.LatestShellSettings: latest shell settings from the provider.MissingShellIds: current shells absent from the latest provider view.
- Why it matters: The orchestration needs this snapshot to distinguish updates, additions, removals, unknown shell requests, and unchanged shells.
State Transitions
Full Reload Command
Pending → Completed
when all affected shells refresh successfully.
Pending → Partial
when at least one shell refreshes successfully and at least one shell remains unchanged because of invalid configuration or a shell-specific failure.
Pending → Busy
when another reload is already in progress.
Pending → Failed
when the shell settings provider cannot supply usable configuration for the operation.
Targeted Reload Command
Pending → NotFound
when the requested shell ID does not exist in the authoritative configuration view.
Pending → Busy
when another reload is already in progress.
Pending → Completed
when the current full-reload fallback completes and the requested shell refreshes successfully.
Pending → RequestedShellFailed
when the fallback full reload updates some shells but the requested shell remains unchanged because its updated configuration could not be applied.
Pending → Failed
when the shell settings provider cannot supply usable configuration for the operation.