feat: enable remote profile, gateway, skills, and toolset management - #861
feat: enable remote profile, gateway, skills, and toolset management#861itsJai42 wants to merge 9 commits into
Conversation
…les-gateway-tools
…es-gateway-tools # Conflicts: # docs/superpowers/plans/2026-07-14-remote-management-parity.md # src/preload/index.d.ts # src/preload/index.ts # src/renderer/src/screens/Layout/Layout.tsx
Greptile SummaryThis PR enables authenticated remote management across the desktop app. The main changes are:
Confidence Score: 4/5Remote profile mutation results need fixes before merging.
src/main/remote-profiles.ts Important Files Changed
|
| await remoteDashboardRequestJson( | ||
| connection, | ||
| `/api/profiles/${encodeURIComponent(name)}`, | ||
| { | ||
| method: "DELETE", | ||
| }, | ||
| ); | ||
| return { success: true }; |
There was a problem hiding this comment.
Rejected Delete Reports Success
When the dashboard returns HTTP 200 with { ok: false }, this path ignores the response and reports { success: true }. The profile remains on the server while the UI treats it as deleted, so it reappears on refresh.
| await remoteDashboardRequestJson( | |
| connection, | |
| `/api/profiles/${encodeURIComponent(name)}`, | |
| { | |
| method: "DELETE", | |
| }, | |
| ); | |
| return { success: true }; | |
| const result = await remoteDashboardRequestJson<{ ok?: boolean }>( | |
| connection, | |
| `/api/profiles/${encodeURIComponent(name)}`, | |
| { | |
| method: "DELETE", | |
| }, | |
| ); | |
| return result?.ok === false | |
| ? { success: false, error: "Remote profile deletion failed." } | |
| : { success: true }; |
| await remoteWriteSoul(connection, DEFAULT_SOUL, profile); | ||
| return DEFAULT_SOUL; |
There was a problem hiding this comment.
Rejected Reset Reports Success
When remoteWriteSoul() receives { ok: false }, it resolves to false, but this function still returns the default Soul. The editor can show a successful reset even though the remote profile kept its previous content.
| await remoteWriteSoul(connection, DEFAULT_SOUL, profile); | |
| return DEFAULT_SOUL; | |
| const written = await remoteWriteSoul(connection, DEFAULT_SOUL, profile); | |
| if (!written) throw new Error("Remote Soul reset was rejected."); | |
| return DEFAULT_SOUL; |
Summary
remote-profiles.ts), rejecting local fallbacksremote-gateway.ts)remote-skills.ts,remote-toolsets.ts)remote-metadata.ts,messaging-platforms.ts)RemoteNoticelat.md/remote-management.mdBuilds on the remote management client from #855. Preserves the readiness boundary: non-remote connections are rejected at the request boundary and probe failures never guess or fall back to local state.
Verification
remote-profiles,remote-gateway,remote-skills,remote-toolsets,remote-metadata-auth,messaging-platforms.remote,remote-management-gates) — 25 passednpm test— 170 files passed; 1,772 tests passed; 3 skippednpm run typecheck— passed (node + web)lat check— passedgit diff --check upstream/main...HEAD— passedNo live remote-dashboard end-to-end session was performed; verification is automated source behavior and repository validation.