spawn/cli/src
A 01c6fda39f
feat: convert daytona/ cloud provider from Bash to TypeScript (#1691)
* feat: convert daytona/ cloud provider from Bash to TypeScript

Replaces fragile bash SSH workarounds with structured TypeScript.
Converts 341-line lib/common.sh and 6 agent scripts to TS/Bun.

Fixes #1679

Agent: ux-engineer
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* fix: update test assertions for daytona TypeScript conversion

Add daytona to TS_CLOUDS set and lower cloud count thresholds since
daytona no longer has a bash lib/common.sh.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* fix: address security review - path traversal, command injection, test counts

- Add path traversal rejection (reject '..') in uploadConfigFile and uploadFile
- Use single quotes around remotePath in shell commands to prevent expansion
- Add strict remotePath validation to uploadConfigFile (allowlist regex)
- Update TS_CLOUDS sets across all test files for daytona TS conversion
- Adjust upload-file-security test count expectations for TS migrations

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

* fix: update test assertions for TS-converted cloud providers

After converting daytona and digitalocean from Bash to TypeScript, the
number of bash-based cloud libs dropped. Updated expected counts:
- cloud-lib-source-chain: >= 6 to >= 5
- cloud-error-guidance create_server: >= 5 to >= 4
- upload-file-security SSH clouds: >= 4 to >= 3
- shared-common-post-session SSH clouds: >= 4 to >= 3

Agent: pr-maintainer
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

---------

Co-authored-by: B <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-22 07:53:33 -05:00
..
__tests__ feat: convert daytona/ cloud provider from Bash to TypeScript (#1691) 2026-02-22 07:53:33 -05:00
aws feat: convert aws/ cloud provider from Bash to TypeScript (#1693) 2026-02-22 07:50:54 -05:00
daytona feat: convert daytona/ cloud provider from Bash to TypeScript (#1691) 2026-02-22 07:53:33 -05:00
digitalocean feat: convert digitalocean/ cloud provider from Bash to TypeScript (#1690) 2026-02-22 06:43:05 -05:00
fly feat: convert local/ cloud provider from Bash to TypeScript (#1688) 2026-02-22 10:49:40 +00:00
hetzner feat: convert hetzner/ cloud provider from Bash to TypeScript (#1689) 2026-02-22 03:49:26 -08:00
local feat: convert local/ cloud provider from Bash to TypeScript (#1688) 2026-02-22 10:49:40 +00:00
shared feat: convert local/ cloud provider from Bash to TypeScript (#1688) 2026-02-22 10:49:40 +00:00
commands.ts fix: pass spawn name through cmdRun and headless flows (#1674) 2026-02-21 21:52:52 -08:00
guidance-data.ts refactor: extract error guidance data structures into separate module (#1335) 2026-02-16 19:45:28 -08:00
history.ts feat: add "Enter agent" option to spawn ls (#1662) 2026-02-21 19:40:05 -08:00
index.ts fix: pass spawn name through cmdRun and headless flows (#1674) 2026-02-21 21:52:52 -08:00
manifest.ts fix: unbreak spawn delete and align error handling conventions (#1534) 2026-02-20 18:17:29 -05:00
picker.ts feat: add spawn pick command and interactive GCP project/zone/machine-type pickers (#1443) 2026-02-18 11:30:52 -05:00
security.ts fix: replace require("path") with ESM import in security.ts (#1657) 2026-02-21 20:44:57 -05:00
unicode-detect.ts fix: Switch build target from node to bun to fix UTF-8 mojibake 2026-02-10 09:36:28 +00:00
update-check.ts fix: validate RAW_BASE URL in update-check to prevent future injection (#1533) 2026-02-20 12:52:02 -05:00