fix: add docker-setup action, runtime Dockerfile, and align release workflow

- Add .github/actions/docker-setup composite action (from rivet)
- Add docker/runtime/Dockerfile for Docker image builds
- Update release.yaml to match rivet patterns:
  - Use corepack enable instead of pnpm/action-setup
  - Add reuse_engine_version input
  - Add Docker job with Depot runners
  - Use --no-frozen-lockfile for pnpm install
  - Add id-token permission for setup job
This commit is contained in:
Nathan Flurry 2026-01-27 19:29:54 -08:00
parent f05389307a
commit b49776145b
82 changed files with 1415 additions and 2430 deletions

View file

@ -2,6 +2,7 @@ import { Daytona } from "@daytonaio/sdk";
import { pathToFileURL } from "node:url";
import {
ensureUrl,
logInspectorUrl,
runPrompt,
waitForHealth,
} from "../shared/sandbox-agent-client.ts";
@ -39,6 +40,7 @@ export async function setupDaytonaSandboxAgent(): Promise<{
const baseUrl = ensureUrl(preview.url);
await waitForHealth({ baseUrl, token, extraHeaders });
logInspectorUrl({ baseUrl, token });
const cleanup = async () => {
try {

View file

@ -2,6 +2,7 @@ import Docker from "dockerode";
import { pathToFileURL } from "node:url";
import {
ensureUrl,
logInspectorUrl,
runPrompt,
waitForHealth,
} from "../shared/sandbox-agent-client.ts";
@ -83,6 +84,7 @@ export async function setupDockerSandboxAgent(): Promise<{
const baseUrl = ensureUrl(`http://127.0.0.1:${hostPort}`);
await waitForHealth({ baseUrl, token });
logInspectorUrl({ baseUrl, token });
const cleanup = async () => {
try {

View file

@ -2,6 +2,7 @@ import { Sandbox } from "@e2b/code-interpreter";
import { pathToFileURL } from "node:url";
import {
ensureUrl,
logInspectorUrl,
runPrompt,
waitForHealth,
} from "../shared/sandbox-agent-client.ts";
@ -45,6 +46,7 @@ export async function setupE2BSandboxAgent(): Promise<{
const baseUrl = ensureUrl(sandbox.getHost(port));
await waitForHealth({ baseUrl, token });
logInspectorUrl({ baseUrl, token });
const cleanup = async () => {
try {

View file

@ -16,6 +16,27 @@ export function ensureUrl(rawUrl: string): string {
return `https://${rawUrl}`;
}
const INSPECTOR_URL = "https://inspect.sandboxagent.dev";
export function buildInspectorUrl({
baseUrl,
token,
}: {
baseUrl: string;
token?: string;
}): string {
const normalized = normalizeBaseUrl(ensureUrl(baseUrl));
const params = new URLSearchParams({ url: normalized });
if (token) {
params.set("token", token);
}
return `${INSPECTOR_URL}?${params.toString()}`;
}
export function logInspectorUrl({ baseUrl, token }: { baseUrl: string; token?: string }): void {
console.log(`Inspector: ${buildInspectorUrl({ baseUrl, token })}`);
}
type HeaderOptions = {
token?: string;
extraHeaders?: Record<string, string>;

View file

@ -2,6 +2,7 @@ import { Sandbox } from "@vercel/sandbox";
import { pathToFileURL } from "node:url";
import {
ensureUrl,
logInspectorUrl,
runPrompt,
waitForHealth,
} from "../shared/sandbox-agent-client.ts";
@ -61,6 +62,7 @@ export async function setupVercelSandboxAgent(): Promise<{
const baseUrl = ensureUrl(sandbox.domain(port));
await waitForHealth({ baseUrl, token });
logInspectorUrl({ baseUrl, token });
const cleanup = async () => {
try {