java/sandbox/v1.0.14
phiresky/ripgrep-alljava/sandbox/v1.0.14Jun 22, 2026by Pangjiping
AI Summary
Adds a polling method for snapshot readiness and fixes a crash when replacing contents.
Key Highlights
- New `SandboxManager.waitForSnapshotReady()` method
- Fixes `NullPointerException` in `replaceContents()`
New Features
- Snapshot readiness polling
Full Release Notes
## What's New ### ✨ Features - **Snapshot readiness polling** — New `SandboxManager.waitForSnapshotReady(snapshotId, timeout, pollingInterval)` method lets callers block until a snapshot reaches `Ready` state, replacing hand-rolled polling loops. Throws `SnapshotFailedException` on terminal failure and `SandboxReadyTimeoutException` on timeout. Java-friendly via `@JvmOverloads` with sensible defaults (15 min timeout, 2 s interval). Also introduces `SnapshotState` constants (`Creating` / `Ready` / `Failed` / `Deleting` / `Unknown`) so callers can compare states without magic strings. Pure client-side convenience — no server or spec changes required. (#1051) ### 🐛 Bug Fixes - **`replaceContents()` empty-body crash** — Fixed `NullPointerException` when calling `replaceContents()` (verbose=false). The execd endpoint returns an empty HTTP 200 body in non-verbose mode, which the generated OpenAPI client failed to deserialize. The SDK adapter layer now catches the null cast so the replacement result is correctly treated as successful. Also refactored `replaceContentsDetailed()` to use the generated API client instead of hand-rolled HTTP. (#1094) ### 📦 Misc - Added batch multi-file `replaceContent` e2e test coverage for both verbose and non-verbose paths (Go, Java, C# — matching existing Python/JS coverage). (#1094) ### 👥 Contributors - @Pangjiping - @ferponse