e54cbb96b6
- Import `hqt.sandbox` module and `SandboxPolicy` in service.py - Add `_sandbox_policy` helper to decode persisted JSON policy from a session row - Add `_wrap_command` helper that calls `sandbox.is_available` / `sandbox.wrap` and raises `ServiceError` when bwrap is unavailable for a sandboxed session - Add `sandbox: SandboxPolicy | None = None` parameter to `create_session`; persist as `sandbox_json`, pass `sandboxed=` to `build_spawn_config`, wrap command before spawning - Update `_get_resume_config` to pass `sandboxed=` to `build_resume_config` and wrap the resulting command - Update rung-2 path in `_respawn_with_fallback` to pass `sandboxed=` and wrap the fresh-spawn command - Add three new tests covering: sandboxed create wraps command, unsandboxed create does not wrap, and ServiceError on missing bwrap Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>