feat(setup): own desktop provider lifecycle in Rust - #219
Merged
Conversation
Add native Linux provider discovery, Secret Service custody, guarded activation, receipt verification and recovery. Keep QML as a versioned command client and remove the need for a separate setup runtime. [design:WF-ADR-0088]
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Omarchy first run starts a service but needs a complete path to a working provider. The initial plugin PR put this orchestration in Python; this change moves it into the existing Rust CLI, consistent with WF-ADR-0046 and the requested native architecture.
wayfinder-router setupowns OpenAI discovery, Linux Secret Service credential storage, explicit model activation, verified request delivery, repair and disconnect. QML sends explicit commands and renders schema-versioned results. Configuration validation uses the existing Rust parsers. No setup work enters the deterministic routing path, and no extra executable or Python runtime ships.Only the exact local starter or unchanged generated policy is eligible for replacement. A non-secret journal preserves interrupted activation and cleanup, credentials travel over stdin, child process groups and network work are bounded/cancellable, and success requires the exact successful Router receipt. Older consumers can check setup_schema_version; Linux is the supported credential platform in this change. Existing macOS setup and Keychain integration are unchanged.
Validation: full Rust workspace/all-features tests passed; full workspace Clippy with warnings denied and formatting passed; JavaScript parity passed. New Rust tests cover key storage failures, custom-file preservation, restart recovery, cleanup failures, receipt mismatch, real gateway handlers across restart, locking, bounded output and cancellation. A process-level test verifies cancellation with stdin left open and lock release. No real provider account or desktop keyring was used.
Companion: asdecided/omarchy-wayfinder#23. That PR removes the Python implementation and remains draft until this command is released and both Linux archive checksums are pinned. Live OpenAI, Secret Service login/unlock and XPS reboot/agent acceptance remain pending. See WF-ADR-0088 and docs/desktop-provider-setup.md.