Repository navigation
Conversation
…d session expiry The sandbox API no longer takes `idle_timeout_seconds` (CreateSandboxSessionRequest rejects unknown fields) and now returns `expires_at: null` for a session with no lifetime limit, which local mode produces. The hand-written client still sent the removed field and raised on a null expiry. Generated code is unchanged. - stop sending `idle_timeout_seconds` and remove it from `SandboxCreateOptions` - decode `SandboxSession.expires_at` as `datetime | None` on create, get and refresh, and still reject a value that is neither a timestamp nor null; access credentials still require an expiry - cover both with tests and type-checker fixtures - document that `session.expires_at` is None when a session has no lifetime limit BREAKING CHANGE: `idle_timeout_seconds` is removed from `SandboxCreateOptions`, so passing it is now a type error, and an untyped caller's value is ignored. `SandboxSession.expires_at` is now `datetime | None`.
|
|
AI review: no P0-P2 findingsThe hand-written sandbox client is updated to match the API contract already in Not checked: The AI review read the diff, the code, and the PR's text; it ran no tests or builds and read nothing outside this repository.
Human review: needed
The AI review found no P0-P2 problems at 12b82f8, so the code needs no second review for bugs. Decide the points above: approve to accept them, or request changes. Suggested reviewer: |
Change
Stop sending the sandbox idle timeout and accept a session with no expiry. The API (Kong/volcano-hosting#1743) removed
idle_timeout_seconds, andCreateSandboxSessionRequestrejects unknown fields. It also returnsexpires_at: nullfor a session with no lifetime limit, which local mode produces. The hand-written client still sent the removed field and raised on a null expiry. This is the companion to the OpenAPI sync PR #2, which exposes both mismatches. That branch is rebuilt by the sync bot, so the fix lands onmain.idle_timeout_secondsfromSandboxCreateOptionsand stop sending itSandboxSession.expires_atasdatetime | Noneon create, get and refresh; a value that is neither a timestamp nor null is still rejected, and access credentials still require an expirysession.expires_atisNonewhen a session has no lifetime limitBreaking:
idle_timeout_secondsis now a type error, and an untyped caller's value is ignored.SandboxSession.expires_atcan now beNone.Verification
The new tests failed before the fix (2 failing tests and 4 mypy errors) and pass after it.
uv run --locked poe checkspasses: policy, generated, lint, format, mypy, basedpyright, tests (2,679), coverage (100%), and the package checks. I did not runpoe mutation. One unrelated test,test_ruff_rejects_excessive_complexity_with_project_configuration, only passes withoutFORCE_COLORin the environment.Cross-language impact
Classification: wire contract. The client follows a removed request field and a nullable response field.
idle_timeout_secondsand it models the session expiry as optional.tests/sdk-contractdoes not use the removed option.docs/sandboxes.mdin each repo.Follow the contributor workflow. Tooling checks and dry runs
are not live acceptance.