[codex] fix binary-safe cloud sandbox sync uploads (#3188)
## What changed
- switch the cloud sandbox upload client to a multipart
manifest-plus-file request instead of JSON `Record<string, string>`
payloads
- read synced files as raw bytes for both full and incremental uploads
while preserving `replaceAll`, `deletedFiles`, and queued incremental
sync behavior
- update the fake cloud sandbox server and desktop-side tests to
validate multipart uploads and binary byte preservation
## Why
The previous upload path decoded files as UTF-8 strings before sending
them to the engine, which corrupted binary assets and broke cloud
previews for files like images, fonts, and wasm.
## Impact
Desktop cloud sandbox syncs now send byte-exact file contents to the
engine, including incremental syncs.
## Compatibility
- depends on the engine multipart upload support in
dyad-sh/dyad-llm-engine#146
- the engine PR keeps legacy JSON uploads available for older desktop
clients, but this desktop change is required for binary-safe uploads
## Validation
- `npm test -- src/ipc/utils/cloud_sandbox_provider.test.ts`
- `npm run ts`
- `npm run lint`
- `npm run fmt:check`
<!-- devin-review-badge-begin -->
---
<a href="https://app.devin.ai/review/dyad-sh/dyad/pull/3188"
target="_blank">
<picture>
<source media="(prefers-color-scheme: dark)"
srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1">
<img
src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1"
alt="Open with Devin">
</picture>
</a>
<!-- devin-review-badge-end -->
Co-authored-by:
Will Chen <7344640+wwwillchen@users.noreply.github.com>
正在显示
请
注册
或者
登录
后发表评论