Skip to content

Add read-only package broker policy inspector - #5292

Draft
Benoît Cortier (CBenoit) wants to merge 2 commits into
mainfrom
cbenoit-plan-policy-inspector-ui
Draft

Add read-only package broker policy inspector#5292
Benoît Cortier (CBenoit) wants to merge 2 commits into
mainfrom
cbenoit-plan-policy-inspector-ui

Conversation

@CBenoit

@CBenoit Benoît Cortier (CBenoit) commented Aug 17, 2026

Copy link
Copy Markdown
Member

Summary

  • add a Windows-only Administrator entry and dedicated read-only active package-broker policy inspector
  • consume BrokerClient.GetPolicy and shared PolicyDocument/PolicyJson without raw transport, duplicate DTOs, filesystem access, or mutation
  • present Agent reachability/compatibility states, server and policy metadata, enforcement, ordered rules, all matches/constraints, and canonical JSON with clipboard copy
  • keep inspection independent of UseAgentBroker, cancellable, stale-safe, localized, searchable, accessible, and NativeAOT-safe
  • centralize broker client construction so existing brokered package operations retain their transport/elevation behavior
  • validate required/defaulted policy data against shared schema constraints and classify malformed nested, unknown-property, numeric-enum, and noncanonical-enum payloads as InvalidResponse

Coordinated Phase 1 work

Exact local integration evidence

Validated against now-libraries PR #93 head 61a1af21d6771a1c85d48dcdb033f8e912651d78 using matching local 0.4.0 artifacts supplied through command-line RestoreAdditionalProjectSources and an isolated package cache. No local feed path, NuGet configuration, or cache is committed.

Package SHA-256
Devolutions.Now.Policy.Model.0.4.0.nupkg 59f1d1f2357d4bda83b9a505174fbc14f1ca927ba32cedfcecf2b75b462e734
Devolutions.Now.Policy.Api.0.4.0.nupkg 5204f8dab94bdfbfe4c8e6ed226052f78815a4eb60f94ea38da3978714424d5f
Devolutions.Now.Policy.Client.0.4.0.nupkg 95dc0c3b5503897aec1451839c33e1c0c5528b901ddcc6b73e82476329255be9
  • focused broker/operation regressions: 160 passed
  • focused inspector UI/search tests: 18 passed
  • Windows solution: 1,380 passed
  • win-x64 NativeAOT publish succeeded with no inspector-specific trim/AOT diagnostics
  • final targeted review found no remaining significant issues

Dependency/publication gate

This PR intentionally remains draft. Devolutions.Now.Policy.Model, .Api, and .Client 0.4.0 are not yet published to the configured public NuGet feed. Final readiness is blocked on publishing the exact packages produced from now-libraries#93 head 61a1af21d6771a1c85d48dcdb033f8e912651d78, updating the committed package references if the published identity changes, and rerunning restore/tests/NativeAOT from the public feed.

The non-Windows runtime matrix remains a runner gap; defensive platform guards and Windows-only settings-search filtering are covered by unit tests. Do not mark ready or merge until the coordinated dependency gate is cleared.

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

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a Windows-only, read-only Devolutions Agent package-policy inspector integrated into Administrator settings.

Changes:

  • Adds broker policy retrieval, validation, status mapping, and centralized client creation.
  • Adds searchable, localized UI for policy metadata, rules, constraints, and canonical JSON.
  • Adds coverage for broker responses, cancellation, stale refreshes, and search visibility.

The unpublished 0.4.0 dependencies remain a merge blocker.

Reviewed changes

Copilot reviewed 19 out of 19 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/UniGetUI.Tests/UniGetUI.Tests.csproj Adds inspector test dependencies.
src/UniGetUI.Tests/SettingsSearchIndexTests.cs Tests platform-aware search.
src/UniGetUI.Tests/AgentPolicyInspectorViewModelTests.cs Tests presentation and refresh behavior.
src/UniGetUI.PackageEngine.Tests/BrokerPolicyInspectorTests.cs Tests policy transport and validation.
src/UniGetUI.PackageEngine.Operations/PackageOperations.cs Uses centralized broker creation.
src/UniGetUI.PackageEngine.AgentBroker/UniGetUI.PackageEngine.AgentBroker.csproj Updates policy dependencies.
src/UniGetUI.PackageEngine.AgentBroker/BrokerPolicyInspector.cs Implements policy inspection.
src/UniGetUI.PackageEngine.AgentBroker/BrokerClientFactory.cs Centralizes broker configuration.
src/UniGetUI.Avalonia/Views/Pages/SettingsPages/SettingsBasePage.axaml.cs Registers the inspector page.
src/UniGetUI.Avalonia/Views/Pages/SettingsPages/AgentPolicyInspector.axaml.cs Connects view model and clipboard.
src/UniGetUI.Avalonia/Views/Pages/SettingsPages/AgentPolicyInspector.axaml Defines the inspector UI.
src/UniGetUI.Avalonia/Views/Pages/SettingsPages/Administrator.axaml.cs Forwards inspector navigation.
src/UniGetUI.Avalonia/Views/Pages/SettingsPages/Administrator.axaml Adds the Windows-only entry.
src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/AgentPolicyInspectorViewModel.cs Formats policy data and manages refreshes.
src/UniGetUI.Avalonia/ViewModels/Pages/SettingsPages/AdministratorViewModel.cs Adds navigation command.
src/UniGetUI.Avalonia/UniGetUI.Avalonia.csproj References the broker project.
src/UniGetUI.Avalonia/InternalsVisibleTo.cs Exposes internals to tests.
src/UniGetUI.Avalonia/Infrastructure/SettingsSearchIndex.cs Indexes the Windows-only inspector.
src/Languages/lang_en.json Adds inspector localization strings.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +40 to +51
<Grid ColumnDefinitions="*,Auto" Margin="40,0,40,8">
<TextBlock Text="{t:Translate Active package broker policy}"
FontSize="20"
FontWeight="SemiBold"
VerticalAlignment="Center"
automation:AutomationProperties.HeadingLevel="1"/>
<Button Grid.Column="1"
Command="{Binding RefreshCommand}"
IsEnabled="{Binding !IsLoading}"
Content="{t:Translate Refresh}"
automation:AutomationProperties.Name="{t:Translate Refresh active policy}"/>
</Grid>
Reject malformed required policy data using schema-aligned validation and cover missing, defaulted, nested, and wire-invalid responses.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants