Conversation
8aa528f to
d0c11f8
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: bcf07e7e7c
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
bcf07e7 to
a80c2eb
Compare
06c0f93 to
379b038
Compare
379b038 to
68dc65f
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 68dc65f9fe
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
|
||
| resp = httpx.get(url, headers=headers, params=params, timeout=timeout) | ||
| client = obj.get_devops_client() | ||
| resp = client.get(f"/sandboxes/{sandbox_id}/diagnostics/{endpoint}", params=params) |
There was a problem hiding this comment.
Use relative diagnostics path to preserve API prefix
_fetch_plain_text now calls client.get with a leading /, which turns the request path into an absolute path and drops the /v1 suffix embedded in ClientContext.get_devops_client() base URL. That sends DevOps requests to /sandboxes/... instead of /v1/sandboxes/..., so these commands fail behind gateways/proxies that expose only the versioned API prefix.
Useful? React with 👍 / 👎.
| "id": sandbox.id, | ||
| "image": image, | ||
| "status": "created", | ||
| "timeout": "manual-cleanup" if timeout is None else str(timeout), |
There was a problem hiding this comment.
Report timeout based on whether timeout was actually set
The success payload always prints "manual-cleanup" when local timeout is None, but this command only passes timeout to SandboxSync.create when timeout_is_set is true. If the user omits --timeout and has no default timeout configured, the SDK default TTL still applies, yet the CLI reports manual cleanup mode, which misrepresents the sandbox lifetime and can mislead automation.
Useful? React with 👍 / 👎.
Summary
What Changed
1. Reworked the core CLI surface
--request-timeout.--use-server-proxy/--no-use-server-proxy.execshortcut and consolidated command execution underosb command ....codecommand group.2. Expanded task-oriented command groups
commandcommand run.run/status/logs/interrupt.command session create|run|delete.sandboxfileegressdevops3. Tightened config and output semantics
--confignow acts as the single config-file selector for the entire invocation.config initandconfig setno longer take subcommand-local--path; use root--configinstead.config shownow reports the effectiveconfig_pathand whether the file exists.config setnow fails with a non-zero exit on invalid keys or missing config files instead of silently printing guidance.4. Rebuilt the bundled skills system
osb skillsinto a fuller management surface with:listshowinstalluninstallsandbox-lifecyclecommand-executionfile-operationsnetwork-egresssandbox-troubleshootingsandbox-troubleshootingskill.config-bootstrapas a standalone built-in skill and folded that guidance into the task skills.-o jsonor-o raw.5. Docs, help text, and release validation
uv sync --frozenuv run ruff check .uv run pyrightuv run pytest6. Test coverage refresh
Breaking Changes
osb exec ...has been removed.Migration: use
osb command run ... -- <cmd>.codecommand group has been removed.--timeouthas been renamed to--request-timeout.osb config init --path ...andosb config set --path ...have been removed.Migration: use root
--config, for exampleosb --config /path/to/config.toml config set ....Migration: use the new built-ins listed above, especially
sandbox-troubleshootingin place of the previous troubleshooting split.Testing
uv run pytest tests/test_skills.pyuv run pytest tests/test_skills.py tests/test_cli_help.py tests/test_commands.py -k 'Skills or TestConfig'uv run pytest tests/test_cli_help.pyuv run pytest tests/test_commands.py -k 'TestConfig'uv run osb skills --helpuv run osb skills install --helpuv run osb config --helpuv run osb config init --helpuv run osb config set --helpChecklist