[DRAFT][WIP] Feature/unigetui package broker#1797
[DRAFT][WIP] Feature/unigetui package broker#1797Vladyslav Nikonov (vnikonov-devolutions) wants to merge 20 commits into
Conversation
Implements the UniGetUI package broker protocol: - Policy evaluation engine matching the spec in UniGetUI policies/ - WinGet command-line builder from validated request fields - HTTP/1.1 server over named pipe transport (Windows) - Dry-run executor for testing, real executor for production - Standalone test binary for development without the full agent service The broker validates requests against admin-authored policies before constructing elevated package manager commands. It never executes client-supplied command text directly. Supported: WinGet install/update/uninstall operations. Other managers return 'not supported' for now.
Let maintainers know that an action is required on their side
|
Refactor the broker HTTP server from raw hyper to axum + aide served over the named pipe (matching the PEDM pattern), preserving all behavior: header validation, audit mode, policy validity window, the kill/pre/main/post execution plan, operation tracker, media types and status codes. server::openapi() emits an OpenAPI 3.1 document from the existing schemars schemas (no duplication), and injects PolicyDocument as a component so the generated C# client also gets strongly-typed policy models. Wire the broker into tools/generate-openapi (target "unigetui-broker") and add crates/unigetui-broker/openapi/ with the committed spec and the C# generator config mirroring PEDM (openapi-generator-cli csharp, httpclient). Generating the C# client itself requires a JRE (openapi-generator-cli is a Java tool); run openapi/generate_all.ps1 on a machine with Java. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Implements UniGetUI package broker (Also see UniGetUI WIP branch Devolutions/UniGetUI#4826)
This is still in early DRAFT, but can be compiled/tested for further development.
Implemented
winget; needs refining but implements most of the functionalityNot implemented yet
wingetSteps to run this branch:
"PackageBroker":{"Enabled":true, "PolicyPath": "C:/path/to/policy.json"}UseAgentBrokerfile at%LOCALAPPDATA%/UniGetUI/Configuration(UniGetUI uses file-based config)