Add CreateOS Sandbox provider - #9
Open
pratikbin wants to merge 6 commits into
Open
Conversation
Contributor
|
@BhautikChudasama is attempting to deploy a commit to the OpenCore Team on Vercel. A member of the Team first needs to authorize it. |
Greptile SummaryAdds CreateOS as a supported sandbox provider.
Confidence Score: 5/5The PR appears safe to merge. No blocking failures remain within the scope of the reviewed changes.
What T-Rex did
Important Files Changed
Reviews (6): Last reviewed commit: "Classify symlinks correctly in files.lis..." | Re-trigger Greptile |
…igin preview fix) # Conflicts: # packages/sdk/package.json # packages/sdk/src/core/types.ts # packages/sdk/src/metadata.ts # packages/sdk/src/providers/capabilities.ts # packages/sdk/tsdown.config.ts
…ping - Use AbortController to cancel remote streamCommand on kill() - Replace ls -1apL with find -printf using null-byte delimiters to handle filenames with newlines and avoid symlink dereferencing - Quote env keys with shellQuote() in export statements to prevent shell injection via metacharacters in both run() and start()
- Catch abort errors in stream iterator so wait() resolves with exit code 137 instead of rejecting when kill() is called - Replace export with env command prefix to support non-identifier env keys like MY-KEY in both run() and start()
- Check combinedSignal.aborted instead of only killController so caller-provided signal aborts also resolve wait() gracefully - Make kill() await the completed promise so it only returns after the remote stream has actually terminated
Map find type char 'l' to 'symlink' instead of falling through to 'file'.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Adds CreateOS Sandbox as a provider:
createos()runs sandboxes on NodeOps' VM-based CreateOS platform via the official@nodeops-createos/sandboxSDK, giving agent workloads normalized files/commands/lifecycle/preview access through the same Sandbox SDK surface as the existing providers.CreateOS currently ranks #2 of 21 providers on the independent ComputeSDK Sandbox Benchmark — Sequential TTI, composite score 99.5 — and #2 on the Dax benchmark (7/7 phases completed, 47.92s median total duration).
What changed
createosprovider adapter (packages/sdk/src/providers/createos/index.ts), package export (@opencoredev/sandbox-sdk/createos), capability metadata, example, and unit + live test coverageCreateosSandbox*error classes (auth, permission, not-found, timeout, rate-limit, validation, server, connection) onto normalizedSandboxErrorcodes, with timeout/rate-limit/server/connection marked retryablefiles.list/mkdir/remove/existsimplemented over shell (ls -1apL,mkdir -p,rm -rf,test -e) since the underlying SDK only exposes upload/downloadrun()/start()wrap commands inbash -c, injecting per-callcwd/envvia shell export/cd prefixing;start()bridges the SDK's async-iterator stream into the SDK's process/output contractexpose()lazily enables ingress on first call and returns the provider's preview URLunsupportedSnapshots("createos")); pause/resume/fork are reachable viasandbox.rawcreateosinproviderNames,metadata.ts,capabilities.ts,tsdown.config.ts, and package.json exports/dependencies (@nodeops-createos/sandboxas an optional peer, pinned^0.7.1)Testing
bun installbun run lint— 0 warnings/errorsbun run typecheckbun run buildbun run test— 49 pass, 0 fail (includes 5 newcreateosunit tests mocking the SDK client); 26 skipped, including 9createoslive tests gated onCREATEOS_SANDBOX_API_KEY/CREATEOS_SANDBOX_BASE_URLnpm pack --dry-runinpackages/sdkNotes
CREATEOS_SANDBOX_API_KEY+CREATEOS_SANDBOX_BASE_URLand was not run in this environment; the live suite skips cleanly without them.stdinis not available on exec, matching the underlying platform'srunCommandAPI —process.write()throwsunsupported.