| 1 | namespace AgentForge.Abstractions; |
| 2 | |
| 3 | /// <summary>Human-layer release row (FORGE-ADR-0032 / 0033).</summary> |
| 4 | public sealed record ForgeReleaseListItem( |
| 5 | string Tag, |
| 6 | DateTimeOffset? PublishedAt, |
| 7 | bool IsPrerelease, |
| 8 | string? NotesUrl = null, |
| 9 | string? TargetPlatform = null, |
| 10 | string? PackageFormat = null); |
| 11 | |
| 12 | /// <summary>View state for repo releases tab — mirrors org catalog groupStack (ADR-0027/0028).</summary> |
| 13 | public sealed record ForgeReleaseListViewContext( |
| 14 | string RepoName, |
| 15 | string ListBasePath, |
| 16 | IReadOnlyList<string> GroupStack, |
| 17 | int EditorRowCount = 0); |
| 18 | |
| 19 | /// <summary>Grouping axis for release lists (FORGE-ADR-0033).</summary> |
| 20 | public interface IForgeReleaseGroupingAxis : IForgeGroupingAxis<ForgeReleaseListItem>; |
| 21 | |
| 22 | /// <summary>Release list grouping service — renders via ViewShell <c>ForgeViewGroupedList</c>.</summary> |
| 23 | public interface IForgeReleaseListGrouping |
| 24 | { |
| 25 | IReadOnlyList<string> ParseGroupStack(string? groupStackQuery); |
| 26 | |
| 27 | string BuildListUrl( |
| 28 | in ForgeReleaseListViewContext context, |
| 29 | IReadOnlyList<string>? groupStack = null); |
| 30 | |
| 31 | string RenderToolbar(in ForgeReleaseListViewContext context); |
| 32 | |
| 33 | string RenderListBody( |
| 34 | IReadOnlyList<ForgeReleaseListItem> releases, |
| 35 | in ForgeReleaseListViewContext context); |
| 36 | } |
| 37 | |
View only · write via MCP/CIDE