refactor(remote): remove Sprite-exec managed transport - #543
Merged
Merged
Conversation
Managed VMs are reached only through managed SSH. Removes the remote-sprite-exec and remote-github-clone Edge Functions, the managed_sprite repository transport and its dispatch path, the remote_build_cli_argv Tauri command, the unused remote_bootstrap Rust module, and provider names from repository/workspace APIs and UI copy. Remote mutations in the repository adapter now require an SSH endpoint instead of falling back to local execution when none is set. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MbYSPHBRmDYwPJpHG33Y4t
Ziinc
commented
Sep 27, 2026
Collaborator
Author
There was a problem hiding this comment.
activeForPath now narrows to SSH repositories only.
- The old
managed_spriterepos hadendpoint: null, anddispatchMutation(null, ...)silently ran the mutation locally. Typing the endpoint as required removes that path rather than guarding it. - Mutations call
dispatchMutationOverSshdirectly, so the unused null-tolerantdispatchMutationwrapper inremote-dispatch.tswas deleted.
Generated by Claude Code
Collaborator
Author
There was a problem hiding this comment.
Removed rather than trimmed.
- No frontend caller, and every step (clone,
treq repo inspect) ran through the Sprites exec API, which is the bypass the PRD rules out. - The only reusable part is minting an installation token, which is a one-liner over
getInstallationToken. Handing that token to a VM over managed SSH needs its own design, noted under "Not in this PR".
Generated by Claude Code
Collaborator
Author
There was a problem hiding this comment.
Deleted because nothing in the app or in src-tauri/tests calls it.
- The live bootstrap and SSH-trust scripts are the Edge Function copies in
boot-manifest.tsandssh-vm-config.ts; their "mirrors remote_bootstrap" comments were updated. remote_provider_sprites.rsstays:tests/remote_e2e.rsimports it.
Generated by Claude Code
Collaborator
Author
There was a problem hiding this comment.
These fields were added with the Sprite work and never set anywhere, so the file is back to its pre-#513 shape.
WorkspaceSource = "local" | "sprite"put a provider name into workspace identity, which the PRD says should not leak.
Generated by Claude Code
Ziinc
pushed a commit
that referenced
this pull request
Sep 27, 2026
Resolve conflicts with the removal of the Sprite-exec managed transport (#543): keep the cloud workspace card and copy, drop execManagedSprite, and load cloud workspace usage over managed SSH (dispatchOverSsh against the instance endpoint) rooted at the managed SSH user's home. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012PGXpwptLRetsjFcHkL8x5
Ziinc
pushed a commit
that referenced
this pull request
Sep 27, 2026
Resolve repository-adapter conflicts with the Sprite transport removal (#543): keep the SSH-narrowed activeForPath, drop the managed-Sprite import, and keep main's transportCreateCommit tests with the idempotency key the PR now sends. Refuse SplitCommit hunk selections before the idempotency store opens the repo, so the refusal does not depend on the repo path being writable. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012PGXpwptLRetsjFcHkL8x5
Ziinc
pushed a commit
that referenced
this pull request
Sep 27, 2026
#543 removed the Sprite-exec transport, so the MachineUsage command now goes to the managed endpoint through dispatchOverSsh.
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.
Summary
remote-sprite-execcommand gateway is gone (PRD non-goal: "A public command gateway that bypasses the authenticated remote transport").managed_spriterepositories hadlocation.type: "local"andendpoint: null, sodispatchMutation(null, ...)would run a "remote" mutation on the local machine. That path is removed and repository-adapter mutations now require an SSH endpoint by type.Changes
remote-sprite-exec(only checkedargv[0] === "treq"and passed an arbitrarycwdintobash -lc) andremote-github-clone(no frontend caller; it rangit cloneandtreq repo inspectthrough the Sprites exec API) plus_shared/remote/github-clone.tsand its Deno and vitest tests.execManagedSprite,dispatchOverManagedSprite,remoteBuildCliArgv, the unuseddispatchMutation(null endpoint fell back to local), themanaged_spritetransport,managedSpriteActiveRepository, thesprite:cache-key prefix,WorkspaceSource/WorkspaceIdentityhelpers, the unused terminal type fields added with them, and the unusedCloneManagedRepository*types.activeForPathonly returns SSH repositories, andtransportCreateCommit/transportGitFetchcalldispatchMutationOverSshwithrepo.transport.endpoint.remote_build_cli_argvTauri command (only used by the Sprite-exec path) and the unusedcore::remote_bootstrapmodule (no app or test callers; the Edge Function copies inboot-manifest.ts/ssh-vm-config.tsare the live versions, comments updated).remote_provider_sprites.rsis kept becausesrc-tauri/tests/remote_e2e.rsuses it.sprites-adapter.ts,stub-sprites-adapter.ts,fly_spritesprovider kind,remote-instanceinternals) is unchanged. Migration 020 is unchanged.Testing
npx tsc --noEmit: cleannpx eslint/npx oxlinton changed files: 0 errors (existing warnings only)npx biome formaton changed src files: cleannpx knip: no unused files/exports reportednpx vitest run --config vitest.unit.config.tsonrepository-adapter.test.ts(new),active-repository.test.ts,RemoteSetupDialog.test.tsx,remote-dispatch.test.ts,remote-control-plane.test.ts,AccountSettings.test.tsx: 14/14 passedcargo fmt --check,cargo check --locked --all-targets --features tauri-test,cargo clippy --locked --all-targets --all-features -- -D warnings: cleantest/integration/remote-ssh.test.ts(only its button-name matcher changed).Not in this PR
remote-github-cloneminted a GitHub App installation token but used it only inside a Sprites exec call, so there was no cheap piece to keep. A managed-SSH clone flow needs its own token hand-off design.remote-instance(e.g. "Sprite bootstrap exited ...") still name the provider; they sit behind the provider boundary and are left for a follow-up to avoid overlapping with other remote-instance work.🤖 Generated with Claude Code
https://claude.ai/code/session_01MbYSPHBRmDYwPJpHG33Y4t
Generated by Claude Code