spawn/packages/cli/src/shared
A 606e521f33
fix: complete VM recovery rewrite for spawn fix command (#3178)
* fix: complete VM recovery rewrite for spawn fix command

Fixes #3173

Rewrites spawn fix to use CloudRunner interface for full VM recovery
instead of a flat bash script piped over SSH. Now runs the same
install(), configure(), preLaunch() functions as initial provisioning.

- Added generic SSH CloudRunner (ssh-runner.ts) reusable by other commands
- Exported injectEnvVarsToRunner() from orchestrate.ts for shared use
- Fixed command injection vulnerability via validateIdentifier(binaryName)
- Updated dependency injection: runScript → makeRunner (CloudRunner)
- Updated tests to use CloudRunner-based DI pattern

Agent: code-health
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* test(ssh-runner): add coverage for validation paths

Tests cover the early-exit branches in makeSshRunner methods
(runServer invalid command, uploadFile/downloadFile path traversal)
that throw before any subprocess is spawned.

Agent: team-lead
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 11:27:47 +07:00
..
agent-setup.ts feat: headless promptCmd, link in cloud picker, default headless steps (#3177) 2026-04-05 01:39:39 +00:00
agent-tarball.ts fix: remove local tarball download path (#2970) 2026-03-24 21:42:31 -07:00
agents.ts feat: headless promptCmd, link in cloud picker, default headless steps (#3177) 2026-04-05 01:39:39 +00:00
billing-guidance.ts fix: standardize ESM import extensions across 35 production files (#2827) 2026-03-20 08:51:40 -07:00
cloud-init.ts refactor(test): extract shouldSkipCloudInit helper and add unit tests (#2958) 2026-03-24 22:32:53 +07:00
cursor-proxy.ts fix(cursor): update proxy model list to current models (#3105) 2026-03-29 21:25:58 -07:00
oauth-constants.ts fix: restore hyphens in OAuth code regex + add regression test (#2171) 2026-03-03 22:52:29 -08:00
oauth.ts fix(spawn-fix): load API keys via config file, not just process.env (#3095) 2026-03-31 03:03:47 +07:00
orchestrate.ts fix: complete VM recovery rewrite for spawn fix command (#3178) 2026-04-05 11:27:47 +07:00
parse.ts refactor: remove dead deepMerge export from parse.ts (#2663) 2026-03-15 13:57:47 -07:00
paths.ts fix(update): cache successful update checks for 1 hour (#2755) 2026-03-17 23:08:05 -07:00
result.ts refactor: replace indiscriminate try/catch with guarded Result helpers (#2477) 2026-03-10 18:55:07 -07:00
shell.ts feat: add Windows PowerShell support — remove bash dependency for local execution (#2727) 2026-03-17 16:35:23 -07:00
spawn-config.ts refactor: remove dead exported types from picker.ts and spawn-config.ts (#2553) 2026-03-12 21:43:05 -04:00
spawn-skill.ts fix: add pi agent and daytona cloud to embedded skill lists (#3172) 2026-04-04 14:52:05 +07:00
ssh-keys.ts fix: handle missing ssh-keygen in getSshFingerprint (#2926) 2026-03-24 06:50:45 +07:00
ssh-runner.ts fix: complete VM recovery rewrite for spawn fix command (#3178) 2026-04-05 11:27:47 +07:00
ssh.ts fix(ux): reduce SSH wait verbosity and clarify agent handoff (#3056) 2026-03-27 15:22:46 +07:00
star-prompt.ts feat(cli): add star-the-repo nudge after successful spawns (#3025) 2026-03-27 03:15:12 +07:00
ui.ts fix: resolve ANSI spinner corruption and garbled output (#3001) (#3003) 2026-03-26 15:28:32 +07:00