Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## cursor/uap-installer-sdk-adapter-6c84 #183 +/- ##
=========================================================================
+ Coverage 65.26% 66.96% +1.69%
=========================================================================
Files 181 194 +13
Lines 18657 23601 +4944
=========================================================================
+ Hits 12177 15804 +3627
- Misses 4676 5517 +841
- Partials 1804 2280 +476 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Plan §14.2 requires omitted uninstall to remove managed units, explicit false to keep a unit, and uninstall without a package download or delivery/permission proof. Keep readiness permission=unsupported. Co-authored-by: Илия <iliyazelenkog@gmail.com>
…ending matchingReservation accepted any owner reservation, so uninstall could resume an install handoff. Compare the stored intent action, keep the pending install, and return conflict with the original retry command. Co-authored-by: Илия <iliyazelenkog@gmail.com>
Action-only comparison let a Codex install reservation be resumed for Claude. Require the stored target client before attaching the reservation. Co-authored-by: Илия <iliyazelenkog@gmail.com>
…sume Store source digest on the install intent. A matching resume may omit it; an explicit different digest is conflict. Wizard passes release version and package SHA-256 through materialize. Co-authored-by: Илия <iliyazelenkog@gmail.com>
Resume fills agents, units, profile, digest, and installation ID from the stored handoff intent after the action uniquely matches. Explicit mismatches stay conflict. Matching pending intent is confirmation, so --yes is not required again. Persist the resolved client profile on the published intent. Co-authored-by: Илия <iliyazelenkog@gmail.com>
Confirmed portable remove now writes the handoff reservation and resolved profile before locator revoke. A matching resume can omit agents/--yes; install during a pending uninstall stays conflict. Successful remove still clears the reservation. Co-authored-by: Илия <iliyazelenkog@gmail.com>
UAP Codex remove requires a host attestation that the native plugin is already gone or was never activated. Wizard --yes no longer invents that fact. Uninstall without --external-uninstalled holds the removal reservation, returns incomplete, and keeps the portable binding. Co-authored-by: Илия <iliyazelenkog@gmail.com>
Portable install/remove always take the setup coordinator lease and run kernel Recover before UAP Recover. Wizard uninstall no longer restores a retired direct MCP, even when --mcp-config is still on the request. Co-authored-by: Илия <iliyazelenkog@gmail.com>
Confirmed wizard install/uninstall now records the normalized SetupIntent and kernel reservation before hooks or portable MCP effects. The wizard keeps that reservation across clients and clears it only after the whole operation completes. Incomplete Codex uninstall still leaves the intent. Observe `codex plugin list --json` and, when that contract is recognized, run `plugin remove` so --yes no longer has to invent ExternalUninstalled. Unknown list output still holds the removal and asks for attestation. Co-authored-by: Илия <iliyazelenkog@gmail.com>
TTY confirmation now shows the resolved plan (action, agents, units, and any mixed per-client flags) before mutation. Completed install/inspect results offer restart, request-permission, and notify as explicit next actions. Delivery stays not_verified until that test runs; uninstall does not offer those setup steps. Co-authored-by: Илия <iliyazelenkog@gmail.com>
TTY FillInteractive now asks for hooks, agent-notify, or both before showing the resolved plan. Confirmed install/uninstall reports coarse phases to a host callback; the CLI writes those lines to stderr so JSON stdout stays one result. Co-authored-by: Илия <iliyazelenkog@gmail.com>
Plan §9.1.5: the application service preflights without publishing intent or applying hooks/MCP, then TTY shows agents, profiles, revision, and required follow-up actions before confirmation. Mutation still requires --yes; Plan does not mutate the ledger. Co-authored-by: Илия <iliyazelenkog@gmail.com>
TTY Plan now runs a read-only UAP Prepare for agent-notify when a local package root is present, shows the canonical source TreeDigest, and closes the handle without Apply, Recover, or ledger mutation. Co-authored-by: Илия <iliyazelenkog@gmail.com>
Co-authored-by: Илия <iliyazelenkog@gmail.com>
Plan now fetches the version-bound portable asset for notify preflight and shows source-digest without leaving the temp root on Request. Inspect reports pending UAP journals as recovery_required without running Recover. Co-authored-by: Илия <iliyazelenkog@gmail.com>
Co-authored-by: Илия <iliyazelenkog@gmail.com>
Co-authored-by: Илия <iliyazelenkog@gmail.com>
Plan stays ready so confirmed install can Recover, but the preflight text and next actions now name pending journals. Recover itself still does not invoke the helper runner or committed-binding callback. Co-authored-by: Илия <iliyazelenkog@gmail.com>
Co-authored-by: Илия <iliyazelenkog@gmail.com>
Co-authored-by: Илия <iliyazelenkog@gmail.com>
Co-authored-by: Илия <iliyazelenkog@gmail.com>
Co-authored-by: Илия <iliyazelenkog@gmail.com>
Co-authored-by: Илия <iliyazelenkog@gmail.com>
Co-authored-by: Илия <iliyazelenkog@gmail.com>
Hybrid Install both with one live behind sibling keeps Update then Add. Mixed live stays Update-only. Absent-second-client stays two-phase. Co-authored-by: Илия <iliyazelenkog@gmail.com>
Noninteractive mutation with --yes but no --agents returned cancelled/empty_selection (exit 0). §9.2 requires an explicit selection or a matching pending intent; TTY empty choice is still canceled in FillInteractive. Also lock remaining §5.5.1 NextAction mappings and skip delivery offers after retained metadata-only Update. Co-authored-by: Илия <iliyazelenkog@gmail.com>
Cover update/repair/uninstall and Plan, keep inspect of both clients working without --agents, and skip delivery next-actions after uninstall. Co-authored-by: Илия <iliyazelenkog@gmail.com>
Inspect without --agents still reports both clients as JSON exit 0. Co-authored-by: Илия <iliyazelenkog@gmail.com>
Co-authored-by: Илия <iliyazelenkog@gmail.com>
Explicit --mcp-config/--claude-mcp-config still win. Otherwise a regular file already present in the selected profile ($CodexHome/config.toml, $ClaudeConfig/.claude.json) is used so bootstrap/TTY install can retire existing direct MCP. Missing files stay empty so fresh installs skip handoff; HOME/cwd are not guessed. Co-authored-by: Илия <iliyazelenkog@gmail.com>
Cheap all-platform coverage for missing/regular/directory/relative/env and explicit-wins. Unix install+inspect without --mcp-config retires direct Codex MCP from the selected profile config.toml. Co-authored-by: Илия <iliyazelenkog@gmail.com>
Co-authored-by: Илия <iliyazelenkog@gmail.com>
Flag --codex-home still wins. Otherwise the already-selected CODEX_HOME env is forwarded so retry argv keeps the profile. HOME/.codex is not guessed, and --mcp-config is still omitted so handoff uses an existing selected-profile config.toml. Co-authored-by: Илия <iliyazelenkog@gmail.com>
Co-authored-by: Илия <iliyazelenkog@gmail.com>
Windows 1.26 on a214b0d died in test_force_preserves_symlinks with exit 3840 (SIGTERM) about five seconds into a run_with_timeout 5 install against 127.0.0.1:1. GNU timeout without --foreground can signal the Git Bash test process; Windows timeout.exe is not a command wrapper. Use --foreground, and otherwise watch only the child PID. Co-authored-by: Илия <iliyazelenkog@gmail.com>
TTY confirmation already listed selected profiles. Existing config.toml/.claude.json handoff was easy to miss unless --mcp-config was set. Plan now prints codex-mcp/claude-mcp from the same discovery path Run uses. Co-authored-by: Илия <iliyazelenkog@gmail.com>
Co-authored-by: Илия <iliyazelenkog@gmail.com>
Co-authored-by: Илия <iliyazelenkog@gmail.com>
Co-authored-by: Илия <iliyazelenkog@gmail.com>
Co-authored-by: Илия <iliyazelenkog@gmail.com>
Omitted --mcp-config is resolved from the selected profile before the intent is written. Resume restores that path, and a different explicit flag conflicts. Hooks-only targets do not record MCPConfig. Co-authored-by: Илия <iliyazelenkog@gmail.com>
Co-authored-by: Илия <iliyazelenkog@gmail.com>
Co-authored-by: Илия <iliyazelenkog@gmail.com>
Read-only inspect already discovers the selected-profile MCP file; include that path on the direct-mcp TargetResult so --json reports the file that was observed. Co-authored-by: Илия <iliyazelenkog@gmail.com>
Co-authored-by: Илия <iliyazelenkog@gmail.com>
Co-authored-by: Илия <iliyazelenkog@gmail.com>
Omitted --agents inspect still observes both selected-profile files. Co-authored-by: Илия <iliyazelenkog@gmail.com>
TargetResult now matches Result/ReadinessFact/NextAction field names so --json reports client/unit/outcome/configPath instead of PascalCase. Co-authored-by: Илия <iliyazelenkog@gmail.com>
Co-authored-by: Илия <iliyazelenkog@gmail.com>
Co-authored-by: Илия <iliyazelenkog@gmail.com>
Inspect and uninstall results now surface PLUGIN_DATA retention when the last live binding is gone. Absent inspect rows stay absent; the flag is not a license to run the deleted binding. Co-authored-by: Илия <iliyazelenkog@gmail.com>
Retained reinstall needs the existing Result.InstallationID. Inspect of a single installation and uninstall of its last binding now copy that id; empty inspect still omits it. Text output prints installation-id= when the field is set. Co-authored-by: Илия <iliyazelenkog@gmail.com>
…data After last uninstall the TTY sees no live bindings, so reinstall omits --installation-id. The unique retained installation must still be reused. Co-authored-by: Илия <iliyazelenkog@gmail.com>
Partial setup already records InstallationID on the result. The retry command now copies that reserved id so a later run does not allocate a different installation. Co-authored-by: Илия <iliyazelenkog@gmail.com>
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.
Stacked on P4 (#182). Unified TTY/non-interactive wizard for install, inspect, update, repair, and uninstall of Claude and Codex through the hosted UAP installer.
This head (
a77c333):--jsonreports camelCase target fields (client,unit,outcome,configPath) matching Result/ReadinessFact/NextActionConfigPathondirect-mcptargets for both Claude and Codex, including omitted--agentsmcp=(andprofile=/digest=when set) so the read-only report shows the observed fileConfigPathand textmcp=for a selected-profileconfig.tomlEarlier on this PR:
codex-mcp=/claude-mcp=from an existing selected-profile file--mcp-configmcpConfigfor agent-notify targets; resume restores omitted--mcp-config; a different explicit flag ispending_intent_conflict--mcp-configon first argv; explicit--mcp-config/--claude-mcp-configstill wininstall.shE2E uses GNUtimeout --foreground(or a child-PID watchdog) so a 5s unreachable-download timeout cannot SIGTERM the Git Bash test script--mcp-config/--claude-mcp-configstill win; otherwise a regular file already present in the selected profile ($CodexHome/config.toml,$ClaudeConfig/.claude.json) is handed offCODEX_HOMEas--codex-homewhen the flag is omitted--agentsstill reports both clients and does not offerrequest-permission; omitted--agentswith--yesstaysinvalid/agents_required(exit 2) unless a matching pending intent restores themupdate_requiredinstall.shE2E is capped at 10 minutes; Ubuntu/macOSgo test -raceuses a 20m package timeoutNative/reboot product E2E, Windows managedstdio 0111, unpublished UAP repository P1–P3/P5, group mixed rematerialize-after-delete (NativeObserver unset), and Cursor GitHub App write access to universal-agent-plugins remain out of this PR.