feat(convex): add Daytona Convex component (@daytona/convex) - #64
Merged
Merged
Conversation
Signed-off-by: Mislav Ivanda <mislavivanda454@gmail.com>
mislavivanda
force-pushed
the
feat/convex-component
branch
from
September 23, 2026 22:43
0714b63 to
92921fe
Compare
There was a problem hiding this comment.
All reported issues were addressed across 45 files
Heads up: you’re close to your included review allowance. Set a flex budget so reviews don’t pause.
Re-trigger cubic
The convex job was written before #62 landed and missed the allow-unsafe-pr-checkout opt-in (fork PRs would fail at checkout) and persist-credentials: false (GITHUB_TOKEN hygiene) that every other suite job carries. Signed-off-by: Mislav Ivanda <mislavivanda454@gmail.com>
- stop: treat 404 / destroyed as a successful terminal outcome (a sandbox created with autoDeleteInterval 0 is deleted the moment it stops) and persist state "destroyed" - start/stop: record failures via setSandboxError so the reactive record never silently goes stale - create: on wait failure, best-effort fetch the observed remote state (e.g. build_failed) so the record doesn't stay "creating" forever - list/listExecutions: clamp caller-provided limits to a sane 1..500 integer range Signed-off-by: Mislav Ivanda <mislavivanda454@gmail.com>
- treat a blank DAYTONA_API_URL as unset (fall back to Daytona Cloud instead of producing relative request URLs) - bound command/code timeouts below Convex's 10-minute action ceiling (default 540s, cap 570s) so an execution row can't be orphaned in "running" by a hard action timeout - cap output returned across the function boundary at 4 MB so oversized results can't fail the action after the execution was marked completed - make truncate() a hard bound (marker length reserved) Signed-off-by: Mislav Ivanda <mislavivanda454@gmail.com>
…giene - assert the Authorization: Bearer header and bounded default timeout on the toolbox execute call - cover stop() on an already-deleted sandbox (404 -> destroyed) - restore any pre-existing DAYTONA_API_KEY in the client options test - spawn npx via its .cmd shim + shell on Windows in the live E2E script Signed-off-by: Mislav Ivanda <mislavivanda454@gmail.com>
… bounds Signed-off-by: Mislav Ivanda <mislavivanda454@gmail.com>
There was a problem hiding this comment.
All reported issues were addressed across 10 files (changes from recent commits).
Requires human review: Auto-approval blocked because this review re-detected 1 unresolved issue already reported by Cubic.
Fix all with cubic | Re-trigger cubic
…n live script - reject non-finite/non-positive timeoutSeconds before any remote call or execution row is created - live.mjs: invoke the local convex CLI via process.execPath instead of npx (the Windows .cmd+shell route re-parsed JSON args through cmd.exe) Signed-off-by: Mislav Ivanda <mislavivanda454@gmail.com>
aprojic
previously approved these changes
Sep 24, 2026
File names are the component's public API namespaces, so 'lib' leaked a meaningless name into consumer-facing paths. Per Convex team review: - sandboxes.ts now owns sandbox queries (get, list) and bookkeeping mutations alongside the lifecycle actions -> sandboxes.get/list - new executions.ts owns execution queries and bookkeeping -> executions.list/get (was lib.listExecutions/getExecution) - clampLimit moved to types.ts; lib.ts deleted; client paths updated Pre-0.1.0, so no published API surface breaks. Verified offline (24 tests) and with the live E2E suite against a real Convex deployment. Signed-off-by: Mislav Ivanda <mislavivanda454@gmail.com>
aprojic
approved these changes
Sep 25, 2026
This branch was successfully deployed
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
Summary by cubic
Adds the
@daytona/convexConvex component for running Daytona sandboxes from a Convex backend: create sandboxes, execute shell commands and code, read and write files, and get live preview URLs, with sandbox and execution state tracked in reactive Convex tables the UI can subscribe to.Daytonaclient that resolves API credentials (from options or the deployment'sDAYTONA_API_KEY/DAYTONA_API_URLenv vars) and forwards them on each call.sandboxes.get/list,executions.list/get) rather than a shared lib module.DAYTONA_API_URLfalls back to Daytona Cloud. Reject non-finite or non-positivetimeoutSecondsbefore creating an execution record.@daytona/convex/testhelper that registers the component withconvex-test, alongside an example app and a live end-to-end test script, and wire the package into CI, the integration workflow, and release-please npm publishing.Written for commit ab119db. Summary will update on new commits.