fix(js-sdk): use commands.run in Sandbox.getHost() example (#1531)#1550
fix(js-sdk): use commands.run in Sandbox.getHost() example (#1531)#1550mishushakov wants to merge 1 commit into
Conversation
The JSDoc `@example` on the public `Sandbox.getHost()` method calls `sandbox.commands.exec(...)`, but the `Commands` class has no `exec` method. It exposes `run`. Copy-pasting the documented snippet therefore throws: ``` TypeError: sandbox.commands.exec is not a function ``` ### Where `packages/js-sdk/src/sandbox/index.ts`, in the `getHost()` doc comment: ```ts /** * ... * @example * ```ts * const sandbox = await Sandbox.create() * // Start an HTTP server * await sandbox.commands.exec('python3 -m http.server 3000') // <- no such method * // Get the hostname of the HTTP server * const serverURL = sandbox.getHost(3000) * ``` */ ``` The `Commands` class (`packages/js-sdk/src/sandbox/commands/index.ts`) exposes `list`, `sendStdin`, `closeStdin`, `kill`, `connect`, and `run` (four `run` overloads), plus a private `start`. There is no `exec`. The correct method here is `run`, which is what every other example already uses, including the sibling `@example` in this same file (the `commands.run(...)` snippet a few methods up) and both Python SDK mirrors (`get_host` in `sandbox_sync/main.py` and `sandbox_async/main.py` already use `commands.run`). ### Fix One token, `exec` -> `run`: ```ts - await sandbox.commands.exec('python3 -m http.server 3000') + await sandbox.commands.run('python3 -m http.server 3000') ``` Documentation only. No behavior or type change. ### Parity with the Python SDK The repo guidelines ask that SDK changes be mirrored across the JS and Python SDKs. Here the Python `get_host` examples already use `commands.run` correctly, so this defect exists only in the JS SDK doc comment and no Python change is needed to reach parity. ### Tests This is a JSDoc `@example` correction with no runtime code path to exercise, so it adds no test, matching the repo's existing precedent for documentation-only fixes (e.g. `.changeset/sandbox-list-docstring.md`, and merged doc-fix PRs such as #1511 / #1500 / #1260, none of which added a regression test). Correctness is that the example now names the real public API: after the change, `commands.exec` no longer appears anywhere in the SDK source, and `commands.run` matches the `Commands` class and the sibling examples. Offline gates run locally (Node 20, pnpm 9.15.5): ``` pnpm --filter e2b run lint # oxlint, clean pnpm --filter e2b run typecheck # tsc --noEmit, clean pnpm --filter e2b run build # tsc + tsup, ESM/CJS/DTS built prettier --check src/sandbox/index.ts # clean ``` A changeset (`e2b`, patch) is included. --- ## Linked issues - None. There is no existing GitHub issue for this; it is a self-evident public doc-example defect (the documented snippet throws at runtime). Not filing a separate issue for a one-token doc fix. ## Pre-flight checklist (repo AGENTS.md / CLAUDE.md gates) - [x] `pnpm run format` - `prettier --check` clean on the changed file - [x] `pnpm run lint` - oxlint clean (exit 0) - [x] `pnpm run typecheck` - tsc --noEmit clean (exit 0) - [x] `pnpm run build` - tsc + tsup clean - [x] Changeset generated - `.changeset/fix-gethost-example-command.md` (`e2b`: patch) - [x] Conventional Commit message (`fix(js-sdk): ...`, reuses `js-sdk` scope) - [ ] Test added - not applicable (doc-only `@example`; see Tests section for precedent) - [ ] DCO / CLA - no sign-off required by this repo; CLA is signed via `@cla-bot` on the PR after opening (as on prior PRs #1518 / #1519 / #1507) Signed-off-by: Anas Khan <83116240+anxkhn@users.noreply.github.com>
PR SummaryLow Risk Overview A patch changeset for Reviewed by Cursor Bugbot for commit d7f676b. Bugbot is set up for automated code reviews on this repo. Configure here. |
🦋 Changeset detectedLatest commit: d7f676b The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
Package ArtifactsBuilt from b2abe29. Download artifacts from this workflow run. JS SDK ( npm install ./e2b-2.33.1-fix-js-sdk-gethost-example-base.0.tgzCLI ( npm install ./e2b-cli-2.13.3-fix-js-sdk-gethost-example-base.0.tgzPython SDK ( pip install ./e2b-2.32.0+fix.js.sdk.gethost.example.base-py3-none-any.whl |
There was a problem hiding this comment.
LGTM — one-token doc fix, verified correct.
Extended reasoning...
Overview
Documentation-only change to the @example JSDoc on Sandbox.getHost() in packages/js-sdk/src/sandbox/index.ts, plus a changeset. Replaces a nonexistent sandbox.commands.exec(...) call with sandbox.commands.run(..., { background: true }), matching the real Commands API (confirmed run accepts a background option in commands/index.ts) and the sibling example a few methods above in the same file.
Security risks
None. No runtime code paths are touched — only a comment string.
Level of scrutiny
Minimal scrutiny warranted: single-line doc comment edit with no type or behavior change, verified against the actual Commands class API surface. Build/lint/typecheck are unaffected by definition.
Other factors
No Python SDK change needed since the Python examples already used commands.run, keeping SDK parity intact. No test needed since JSDoc examples aren't executed.
The JSDoc
@exampleon the publicSandbox.getHost()method callssandbox.commands.exec(...), but theCommandsclass has noexecmethod. Itexposes
run. Copy-pasting the documented snippet therefore throws:Where
packages/js-sdk/src/sandbox/index.ts, in thegetHost()doc comment:The
Commandsclass (packages/js-sdk/src/sandbox/commands/index.ts) exposeslist,sendStdin,closeStdin,kill,connect, andrun(fourrunoverloads), plus a private
start. There is noexec. The correct method hereis
run, which is what every other example already uses, including the sibling@examplein this same file (thecommands.run(...)snippet a few methods up)and both Python SDK mirrors (
get_hostinsandbox_sync/main.pyandsandbox_async/main.pyalready usecommands.run).Fix
One token,
exec->run:Documentation only. No behavior or type change.
Parity with the Python SDK
The repo guidelines ask that SDK changes be mirrored across the JS and Python
SDKs. Here the Python
get_hostexamples already usecommands.runcorrectly,so this defect exists only in the JS SDK doc comment and no Python change is
needed to reach parity.
Tests
This is a JSDoc
@examplecorrection with no runtime code path to exercise, soit adds no test, matching the repo's existing precedent for documentation-only
fixes (e.g.
.changeset/sandbox-list-docstring.md, and merged doc-fix PRs suchas #1511 / #1500 / #1260, none of which added a regression test). Correctness is
that the example now names the real public API: after the change,
commands.execno longer appears anywhere in the SDK source, and
commands.runmatches theCommandsclass and the sibling examples.Offline gates run locally (Node 20, pnpm 9.15.5):
A changeset (
e2b, patch) is included.Linked issues
doc-example defect (the documented snippet throws at runtime). Not filing a
separate issue for a one-token doc fix.
Pre-flight checklist (repo AGENTS.md / CLAUDE.md gates)
pnpm run format-prettier --checkclean on the changed filepnpm run lint- oxlint clean (exit 0)pnpm run typecheck- tsc --noEmit clean (exit 0)pnpm run build- tsc + tsup clean.changeset/fix-gethost-example-command.md(e2b: patch)fix(js-sdk): ..., reusesjs-sdkscope)@example; see Tests section for precedent)@cla-boton the PR after opening (as on prior PRs fix(js-sdk): don't treat "detached" in a branch name as a detached HEAD #1518 / fix(python-sdk): strip colon-separated SGR escape codes in build logs #1519 / fix(python-sdk): percent-encode git credentials in with_credentials #1507)