mirror of
https://github.com/harivansh-afk/sandbox-agent.git
synced 2026-04-15 05:02:11 +00:00
feat: switch foundry backend from Bun to Node.js
- Replace Bun.serve() with @hono/node-server (already a dependency) - Replace Bun-specific debug APIs (Bun.gc, Bun.heapStats, Bun.generateHeapSnapshot) with Node.js equivalents (globalThis.gc) - Update all three Dockerfiles from oven/bun base images to node:22-bookworm-slim - Remove @types/bun devDependency - Update package.json scripts to use node/npx instead of bun Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
62d56fae64
commit
bc872da6f2
6 changed files with 37 additions and 86 deletions
|
|
@ -16,7 +16,7 @@ RUN SKIP_OPENAPI_GEN=1 pnpm --filter sandbox-agent build
|
||||||
RUN pnpm --filter @sandbox-agent/foundry-backend build
|
RUN pnpm --filter @sandbox-agent/foundry-backend build
|
||||||
RUN pnpm --filter @sandbox-agent/foundry-backend deploy --prod /out
|
RUN pnpm --filter @sandbox-agent/foundry-backend deploy --prod /out
|
||||||
|
|
||||||
FROM oven/bun:1.2 AS runtime
|
FROM node:22-bookworm-slim AS runtime
|
||||||
ENV NODE_ENV=production
|
ENV NODE_ENV=production
|
||||||
ENV HOME=/home/task
|
ENV HOME=/home/task
|
||||||
ENV RIVET_RUNNER_VERSION_FILE=/etc/foundry/rivet-runner-version
|
ENV RIVET_RUNNER_VERSION_FILE=/etc/foundry/rivet-runner-version
|
||||||
|
|
@ -37,4 +37,4 @@ RUN mkdir -p /etc/foundry \
|
||||||
COPY --from=build /out ./
|
COPY --from=build /out ./
|
||||||
USER task
|
USER task
|
||||||
EXPOSE 7741
|
EXPOSE 7741
|
||||||
CMD ["bun", "dist/index.js", "start", "--host", "0.0.0.0"]
|
CMD ["node", "dist/index.js", "start", "--host", "0.0.0.0"]
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# syntax=docker/dockerfile:1.7
|
# syntax=docker/dockerfile:1.7
|
||||||
|
|
||||||
FROM oven/bun:1.3
|
FROM node:22-bookworm-slim
|
||||||
|
|
||||||
ARG SANDBOX_AGENT_VERSION=0.3.0
|
ARG SANDBOX_AGENT_VERSION=0.3.0
|
||||||
|
|
||||||
|
|
@ -10,8 +10,6 @@ RUN apt-get update \
|
||||||
curl \
|
curl \
|
||||||
git \
|
git \
|
||||||
gh \
|
gh \
|
||||||
nodejs \
|
|
||||||
npm \
|
|
||||||
openssh-client \
|
openssh-client \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
|
@ -27,8 +25,4 @@ RUN mkdir -p /etc/foundry \
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# NOTE: Do NOT use `bun --hot` here. Bun's hot reloading re-initializes the
|
CMD ["bash", "-lc", "git config --global --add safe.directory /app >/dev/null 2>&1 || true; pnpm install --frozen-lockfile --filter @sandbox-agent/foundry-backend... && pnpm --filter @sandbox-agent/foundry-shared build && pnpm --filter @sandbox-agent/foundry-backend build && exec node foundry/packages/backend/dist/index.js start --host 0.0.0.0 --port 7741"]
|
||||||
# server on a new port (e.g. 6421 instead of 6420) while the container still
|
|
||||||
# exposes the original port, breaking all client connections. Restart the
|
|
||||||
# backend container instead: `just foundry-dev-down && just foundry-dev`
|
|
||||||
CMD ["bash", "-lc", "git config --global --add safe.directory /app >/dev/null 2>&1 || true; pnpm install --frozen-lockfile --filter @sandbox-agent/foundry-backend... && exec bun foundry/packages/backend/src/index.ts start --host 0.0.0.0 --port 7741"]
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
# syntax=docker/dockerfile:1.7
|
# syntax=docker/dockerfile:1.7
|
||||||
|
|
||||||
FROM oven/bun:1.3
|
FROM node:22-bookworm-slim
|
||||||
|
|
||||||
ARG SANDBOX_AGENT_VERSION=0.3.0
|
ARG SANDBOX_AGENT_VERSION=0.3.0
|
||||||
|
|
||||||
|
|
@ -10,8 +10,6 @@ RUN apt-get update \
|
||||||
curl \
|
curl \
|
||||||
git \
|
git \
|
||||||
gh \
|
gh \
|
||||||
nodejs \
|
|
||||||
npm \
|
|
||||||
openssh-client \
|
openssh-client \
|
||||||
&& npm install -g pnpm@10.28.2 \
|
&& npm install -g pnpm@10.28.2 \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
@ -33,4 +31,4 @@ RUN pnpm --filter @sandbox-agent/foundry-shared build
|
||||||
RUN pnpm --filter @sandbox-agent/foundry-client build
|
RUN pnpm --filter @sandbox-agent/foundry-client build
|
||||||
RUN pnpm --filter @sandbox-agent/foundry-backend build
|
RUN pnpm --filter @sandbox-agent/foundry-backend build
|
||||||
|
|
||||||
CMD ["bash", "-lc", "git config --global --add safe.directory /workspace/quebec >/dev/null 2>&1 || true; exec bun packages/backend/dist/index.js start --host 0.0.0.0 --port 7841"]
|
CMD ["bash", "-lc", "git config --global --add safe.directory /workspace/quebec >/dev/null 2>&1 || true; exec node packages/backend/dist/index.js start --host 0.0.0.0 --port 7841"]
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,10 @@
|
||||||
"types": "dist/index.d.ts",
|
"types": "dist/index.d.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "tsup src/index.ts --format esm",
|
"build": "tsup src/index.ts --format esm",
|
||||||
"db:generate": "find src/actors -name drizzle.config.ts -exec pnpm exec drizzle-kit generate --config {} \\; && \"$HOME/.bun/bin/bun\" src/actors/_scripts/generate-actor-migrations.ts",
|
"db:generate": "find src/actors -name drizzle.config.ts -exec pnpm exec drizzle-kit generate --config {} \\; && npx tsx src/actors/_scripts/generate-actor-migrations.ts",
|
||||||
"typecheck": "tsc --noEmit",
|
"typecheck": "tsc --noEmit",
|
||||||
"test": "$HOME/.bun/bin/bun x vitest run",
|
"test": "npx vitest run",
|
||||||
"start": "bun dist/index.js start"
|
"start": "node dist/index.js start"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@e2b/code-interpreter": "^2.3.3",
|
"@e2b/code-interpreter": "^2.3.3",
|
||||||
|
|
@ -31,7 +31,6 @@
|
||||||
"zod": "^4.1.5"
|
"zod": "^4.1.5"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/bun": "^1.3.9",
|
|
||||||
"tsup": "^8.5.0"
|
"tsup": "^8.5.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import { Hono } from "hono";
|
import { Hono } from "hono";
|
||||||
import { cors } from "hono/cors";
|
import { cors } from "hono/cors";
|
||||||
|
import { serve } from "@hono/node-server";
|
||||||
import { randomUUID } from "node:crypto";
|
import { randomUUID } from "node:crypto";
|
||||||
import { initActorRuntimeContext } from "./actors/context.js";
|
import { initActorRuntimeContext } from "./actors/context.js";
|
||||||
import { registry } from "./actors/index.js";
|
import { registry } from "./actors/index.js";
|
||||||
|
|
@ -145,16 +146,13 @@ export async function startBackend(options: BackendStartOptions = {}): Promise<v
|
||||||
// On-demand memory snapshot endpoint for diagnosing spikes (dev only).
|
// On-demand memory snapshot endpoint for diagnosing spikes (dev only).
|
||||||
// Usage: curl http://127.0.0.1:7741/debug/memory
|
// Usage: curl http://127.0.0.1:7741/debug/memory
|
||||||
// Trigger GC first: curl http://127.0.0.1:7741/debug/memory?gc=1
|
// Trigger GC first: curl http://127.0.0.1:7741/debug/memory?gc=1
|
||||||
// Write JSC heap snapshot: curl http://127.0.0.1:7741/debug/memory?heap=1
|
|
||||||
// (writes /tmp/foundry-heap-<timestamp>.json, inspect with chrome://tracing)
|
|
||||||
app.get("/debug/memory", async (c) => {
|
app.get("/debug/memory", async (c) => {
|
||||||
if (process.env.NODE_ENV !== "development") {
|
if (process.env.NODE_ENV !== "development") {
|
||||||
return c.json({ error: "debug endpoints disabled in production" }, 403);
|
return c.json({ error: "debug endpoints disabled in production" }, 403);
|
||||||
}
|
}
|
||||||
const wantGc = c.req.query("gc") === "1";
|
const wantGc = c.req.query("gc") === "1";
|
||||||
if (wantGc && typeof Bun !== "undefined") {
|
if (wantGc && globalThis.gc) {
|
||||||
// Bun.gc(true) triggers a synchronous full GC sweep in JavaScriptCore.
|
globalThis.gc();
|
||||||
Bun.gc(true);
|
|
||||||
}
|
}
|
||||||
const mem = process.memoryUsage();
|
const mem = process.memoryUsage();
|
||||||
const rssMb = Math.round(mem.rss / 1024 / 1024);
|
const rssMb = Math.round(mem.rss / 1024 / 1024);
|
||||||
|
|
@ -162,12 +160,6 @@ export async function startBackend(options: BackendStartOptions = {}): Promise<v
|
||||||
const heapTotalMb = Math.round(mem.heapTotal / 1024 / 1024);
|
const heapTotalMb = Math.round(mem.heapTotal / 1024 / 1024);
|
||||||
const externalMb = Math.round(mem.external / 1024 / 1024);
|
const externalMb = Math.round(mem.external / 1024 / 1024);
|
||||||
const nonHeapMb = rssMb - heapUsedMb - externalMb;
|
const nonHeapMb = rssMb - heapUsedMb - externalMb;
|
||||||
// Bun.heapStats() gives JSC-specific breakdown: object counts, typed array
|
|
||||||
// bytes, extra memory (native allocations tracked by JSC). Useful for
|
|
||||||
// distinguishing JS object bloat from native/WASM memory.
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
||||||
const BunAny = Bun as any;
|
|
||||||
const heapStats = typeof BunAny.heapStats === "function" ? BunAny.heapStats() : null;
|
|
||||||
const snapshot = {
|
const snapshot = {
|
||||||
rssMb,
|
rssMb,
|
||||||
heapUsedMb,
|
heapUsedMb,
|
||||||
|
|
@ -179,19 +171,9 @@ export async function startBackend(options: BackendStartOptions = {}): Promise<v
|
||||||
heapUsedBytes: mem.heapUsed,
|
heapUsedBytes: mem.heapUsed,
|
||||||
heapTotalBytes: mem.heapTotal,
|
heapTotalBytes: mem.heapTotal,
|
||||||
externalBytes: mem.external,
|
externalBytes: mem.external,
|
||||||
...(heapStats ? { bunHeapStats: heapStats } : {}),
|
|
||||||
};
|
};
|
||||||
// Optionally write a full JSC heap snapshot for offline analysis.
|
|
||||||
let heapSnapshotPath: string | null = null;
|
|
||||||
const wantHeap = c.req.query("heap") === "1";
|
|
||||||
if (wantHeap && typeof Bun !== "undefined") {
|
|
||||||
heapSnapshotPath = `/tmp/foundry-heap-${Date.now()}.json`;
|
|
||||||
// Bun.generateHeapSnapshot("v8") returns a V8-compatible JSON string.
|
|
||||||
const heapJson = Bun.generateHeapSnapshot("v8");
|
|
||||||
await Bun.write(heapSnapshotPath, heapJson);
|
|
||||||
}
|
|
||||||
logger.info(snapshot, "memory_usage_debug");
|
logger.info(snapshot, "memory_usage_debug");
|
||||||
return c.json({ ...snapshot, ...(heapSnapshotPath ? { heapSnapshotPath } : {}) });
|
return c.json(snapshot);
|
||||||
});
|
});
|
||||||
|
|
||||||
app.use("*", async (c, next) => {
|
app.use("*", async (c, next) => {
|
||||||
|
|
@ -398,20 +380,16 @@ export async function startBackend(options: BackendStartOptions = {}): Promise<v
|
||||||
return c.json({ ok: true });
|
return c.json({ ok: true });
|
||||||
});
|
});
|
||||||
|
|
||||||
const server = Bun.serve({
|
// Combine RivetKit registry handler with Hono app
|
||||||
fetch: (request) => {
|
const combinedApp = new Hono();
|
||||||
if (isRivetRequest(request)) {
|
combinedApp.all("/v1/rivet/*", (c) => registry.handler(c.req.raw));
|
||||||
return registry.handler(request);
|
combinedApp.all("/v1/rivet", (c) => registry.handler(c.req.raw));
|
||||||
}
|
combinedApp.route("/", app);
|
||||||
return app.fetch(request);
|
|
||||||
},
|
const server = serve({
|
||||||
|
fetch: combinedApp.fetch,
|
||||||
hostname: config.backend.host,
|
hostname: config.backend.host,
|
||||||
port: config.backend.port,
|
port: config.backend.port,
|
||||||
// Bun defaults to 10s idle timeout. Actor RPCs go through the gateway
|
|
||||||
// tunnel (not direct HTTP), and the SSE stream has a 1s ping interval
|
|
||||||
// (RUNNER_SSE_PING_INTERVAL in rivetkit), so the idle timeout likely
|
|
||||||
// never fires in practice. Set high as a safety net regardless.
|
|
||||||
idleTimeout: 255,
|
|
||||||
});
|
});
|
||||||
|
|
||||||
logger.info(
|
logger.info(
|
||||||
|
|
@ -424,7 +402,7 @@ export async function startBackend(options: BackendStartOptions = {}): Promise<v
|
||||||
|
|
||||||
// Periodic memory usage reporting for diagnosing memory spikes (dev only).
|
// Periodic memory usage reporting for diagnosing memory spikes (dev only).
|
||||||
// Logs JS heap, RSS, and external (native/WASM) separately so we can tell
|
// Logs JS heap, RSS, and external (native/WASM) separately so we can tell
|
||||||
// whether spikes come from JS objects, Bun/JSC internals, or native addons
|
// whether spikes come from JS objects, V8 internals, or native addons
|
||||||
// like SQLite/WASM.
|
// like SQLite/WASM.
|
||||||
if (process.env.NODE_ENV === "development") {
|
if (process.env.NODE_ENV === "development") {
|
||||||
let prevRss = 0;
|
let prevRss = 0;
|
||||||
|
|
@ -436,7 +414,7 @@ export async function startBackend(options: BackendStartOptions = {}): Promise<v
|
||||||
const externalMb = Math.round(mem.external / 1024 / 1024);
|
const externalMb = Math.round(mem.external / 1024 / 1024);
|
||||||
// Non-heap RSS: memory not accounted for by JS heap or external buffers.
|
// Non-heap RSS: memory not accounted for by JS heap or external buffers.
|
||||||
// Large values here point to native allocations (WASM, mmap, child process
|
// Large values here point to native allocations (WASM, mmap, child process
|
||||||
// bookkeeping, Bun's internal arena, etc.).
|
// bookkeeping, etc.).
|
||||||
const nonHeapMb = rssMb - heapUsedMb - externalMb;
|
const nonHeapMb = rssMb - heapUsedMb - externalMb;
|
||||||
const deltaRss = rssMb - prevRss;
|
const deltaRss = rssMb - prevRss;
|
||||||
prevRss = rssMb;
|
prevRss = rssMb;
|
||||||
|
|
@ -459,12 +437,12 @@ export async function startBackend(options: BackendStartOptions = {}): Promise<v
|
||||||
}
|
}
|
||||||
|
|
||||||
process.on("SIGINT", async () => {
|
process.on("SIGINT", async () => {
|
||||||
server.stop();
|
server.close();
|
||||||
process.exit(0);
|
process.exit(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
process.on("SIGTERM", async () => {
|
process.on("SIGTERM", async () => {
|
||||||
server.stop();
|
server.close();
|
||||||
process.exit(0);
|
process.exit(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
42
pnpm-lock.yaml
generated
42
pnpm-lock.yaml
generated
|
|
@ -494,7 +494,7 @@ importers:
|
||||||
version: link:../shared
|
version: link:../shared
|
||||||
better-auth:
|
better-auth:
|
||||||
specifier: ^1.5.5
|
specifier: ^1.5.5
|
||||||
version: 1.5.5(@cloudflare/workers-types@4.20260317.1)(drizzle-kit@0.31.9)(drizzle-orm@0.44.7(@cloudflare/workers-types@4.20260317.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(bun-types@1.3.10)(kysely@0.28.11)(pg@8.20.0))(pg@8.20.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(solid-js@1.9.11)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.5.0)(jiti@1.21.7)(jsdom@26.1.0)(tsx@4.21.0)(yaml@2.8.2))
|
version: 1.5.5(@cloudflare/workers-types@4.20260317.1)(drizzle-kit@0.31.9)(drizzle-orm@0.44.7(@cloudflare/workers-types@4.20260317.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(kysely@0.28.11)(pg@8.20.0))(pg@8.20.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(solid-js@1.9.11)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.5.0)(jiti@1.21.7)(jsdom@26.1.0)(tsx@4.21.0)(yaml@2.8.2))
|
||||||
dockerode:
|
dockerode:
|
||||||
specifier: ^4.0.9
|
specifier: ^4.0.9
|
||||||
version: 4.0.9
|
version: 4.0.9
|
||||||
|
|
@ -503,7 +503,7 @@ importers:
|
||||||
version: 0.31.9
|
version: 0.31.9
|
||||||
drizzle-orm:
|
drizzle-orm:
|
||||||
specifier: ^0.44.5
|
specifier: ^0.44.5
|
||||||
version: 0.44.7(@cloudflare/workers-types@4.20260317.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(better-sqlite3@11.10.0)(bun-types@1.3.10)(kysely@0.28.11)(pg@8.20.0)
|
version: 0.44.7(@cloudflare/workers-types@4.20260317.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(better-sqlite3@11.10.0)(kysely@0.28.11)(pg@8.20.0)
|
||||||
hono:
|
hono:
|
||||||
specifier: ^4.11.9
|
specifier: ^4.11.9
|
||||||
version: 4.12.2
|
version: 4.12.2
|
||||||
|
|
@ -512,7 +512,7 @@ importers:
|
||||||
version: 10.3.1
|
version: 10.3.1
|
||||||
rivetkit:
|
rivetkit:
|
||||||
specifier: https://pkg.pr.new/rivet-dev/rivet/rivetkit@fc5f3b4
|
specifier: https://pkg.pr.new/rivet-dev/rivet/rivetkit@fc5f3b4
|
||||||
version: https://pkg.pr.new/rivet-dev/rivet/rivetkit@fc5f3b4(@cloudflare/sandbox@0.7.18(@opencode-ai/sdk@1.2.24))(@e2b/code-interpreter@2.3.3)(@standard-schema/spec@1.1.0)(@vercel/sandbox@1.8.1)(computesdk@2.5.1)(dockerode@4.0.9)(drizzle-kit@0.31.9)(drizzle-orm@0.44.7(@cloudflare/workers-types@4.20260317.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(better-sqlite3@11.10.0)(bun-types@1.3.10)(kysely@0.28.11)(pg@8.20.0))(modal@0.7.3)(ws@8.19.0)
|
version: https://pkg.pr.new/rivet-dev/rivet/rivetkit@fc5f3b4(@cloudflare/sandbox@0.7.18(@opencode-ai/sdk@1.2.24))(@e2b/code-interpreter@2.3.3)(@standard-schema/spec@1.1.0)(@vercel/sandbox@1.8.1)(computesdk@2.5.1)(dockerode@4.0.9)(drizzle-kit@0.31.9)(drizzle-orm@0.44.7(@cloudflare/workers-types@4.20260317.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(better-sqlite3@11.10.0)(kysely@0.28.11)(pg@8.20.0))(modal@0.7.3)(ws@8.19.0)
|
||||||
sandbox-agent:
|
sandbox-agent:
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../../sdks/typescript
|
version: link:../../../sdks/typescript
|
||||||
|
|
@ -526,9 +526,6 @@ importers:
|
||||||
specifier: ^4.1.5
|
specifier: ^4.1.5
|
||||||
version: 4.3.6
|
version: 4.3.6
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/bun':
|
|
||||||
specifier: ^1.3.9
|
|
||||||
version: 1.3.10
|
|
||||||
tsup:
|
tsup:
|
||||||
specifier: ^8.5.0
|
specifier: ^8.5.0
|
||||||
version: 8.5.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)
|
version: 8.5.1(jiti@1.21.7)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)
|
||||||
|
|
@ -543,7 +540,7 @@ importers:
|
||||||
version: 19.2.4
|
version: 19.2.4
|
||||||
rivetkit:
|
rivetkit:
|
||||||
specifier: https://pkg.pr.new/rivet-dev/rivet/rivetkit@fc5f3b4
|
specifier: https://pkg.pr.new/rivet-dev/rivet/rivetkit@fc5f3b4
|
||||||
version: https://pkg.pr.new/rivet-dev/rivet/rivetkit@fc5f3b4(@cloudflare/sandbox@0.7.18(@opencode-ai/sdk@1.2.24))(@e2b/code-interpreter@2.3.3)(@standard-schema/spec@1.1.0)(@vercel/sandbox@1.8.1)(computesdk@2.5.1)(dockerode@4.0.9)(drizzle-kit@0.31.9)(drizzle-orm@0.44.7(@cloudflare/workers-types@4.20260317.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(better-sqlite3@11.10.0)(bun-types@1.3.10)(kysely@0.28.11)(pg@8.20.0))(modal@0.7.3)(ws@8.19.0)
|
version: https://pkg.pr.new/rivet-dev/rivet/rivetkit@fc5f3b4(@cloudflare/sandbox@0.7.18(@opencode-ai/sdk@1.2.24))(@e2b/code-interpreter@2.3.3)(@standard-schema/spec@1.1.0)(@vercel/sandbox@1.8.1)(computesdk@2.5.1)(dockerode@4.0.9)(drizzle-kit@0.31.9)(drizzle-orm@0.44.7(@cloudflare/workers-types@4.20260317.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(better-sqlite3@11.10.0)(kysely@0.28.11)(pg@8.20.0))(modal@0.7.3)(ws@8.19.0)
|
||||||
sandbox-agent:
|
sandbox-agent:
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../../sdks/typescript
|
version: link:../../../sdks/typescript
|
||||||
|
|
@ -3539,9 +3536,6 @@ packages:
|
||||||
'@types/better-sqlite3@7.6.13':
|
'@types/better-sqlite3@7.6.13':
|
||||||
resolution: {integrity: sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==}
|
resolution: {integrity: sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==}
|
||||||
|
|
||||||
'@types/bun@1.3.10':
|
|
||||||
resolution: {integrity: sha512-0+rlrUrOrTSskibryHbvQkDOWRJwJZqZlxrUs1u4oOoTln8+WIXBPmAuCF35SWB2z4Zl3E84Nl/D0P7803nigQ==}
|
|
||||||
|
|
||||||
'@types/chai@5.2.3':
|
'@types/chai@5.2.3':
|
||||||
resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==}
|
resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==}
|
||||||
|
|
||||||
|
|
@ -3975,9 +3969,6 @@ packages:
|
||||||
resolution: {integrity: sha512-lHblz4ahamxpTmnsk+MNTRWsjYKv965MwOrSJyeD588rR3Jcu7swE+0wN5F+PbL5cjgu/9ObkhfzEPuofEMwLA==}
|
resolution: {integrity: sha512-lHblz4ahamxpTmnsk+MNTRWsjYKv965MwOrSJyeD588rR3Jcu7swE+0wN5F+PbL5cjgu/9ObkhfzEPuofEMwLA==}
|
||||||
engines: {node: '>=10.0.0'}
|
engines: {node: '>=10.0.0'}
|
||||||
|
|
||||||
bun-types@1.3.10:
|
|
||||||
resolution: {integrity: sha512-tcpfCCl6XWo6nCVnpcVrxQ+9AYN1iqMIzgrSKYMB/fjLtV2eyAVEg7AxQJuCq/26R6HpKWykQXuSOq/21RYcbg==}
|
|
||||||
|
|
||||||
bundle-require@5.1.0:
|
bundle-require@5.1.0:
|
||||||
resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==}
|
resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==}
|
||||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||||
|
|
@ -8319,12 +8310,12 @@ snapshots:
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@cloudflare/workers-types': 4.20260317.1
|
'@cloudflare/workers-types': 4.20260317.1
|
||||||
|
|
||||||
'@better-auth/drizzle-adapter@1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@cloudflare/workers-types@4.20260317.1)(better-call@1.3.2(zod@4.3.6))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(drizzle-orm@0.44.7(@cloudflare/workers-types@4.20260317.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(bun-types@1.3.10)(kysely@0.28.11)(pg@8.20.0))':
|
'@better-auth/drizzle-adapter@1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@cloudflare/workers-types@4.20260317.1)(better-call@1.3.2(zod@4.3.6))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(drizzle-orm@0.44.7(@cloudflare/workers-types@4.20260317.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(kysely@0.28.11)(pg@8.20.0))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@better-auth/core': 1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@cloudflare/workers-types@4.20260317.1)(better-call@1.3.2(zod@4.3.6))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.1)
|
'@better-auth/core': 1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@cloudflare/workers-types@4.20260317.1)(better-call@1.3.2(zod@4.3.6))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.1)
|
||||||
'@better-auth/utils': 0.3.1
|
'@better-auth/utils': 0.3.1
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
drizzle-orm: 0.44.7(@cloudflare/workers-types@4.20260317.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(better-sqlite3@11.10.0)(bun-types@1.3.10)(kysely@0.28.11)(pg@8.20.0)
|
drizzle-orm: 0.44.7(@cloudflare/workers-types@4.20260317.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(better-sqlite3@11.10.0)(kysely@0.28.11)(pg@8.20.0)
|
||||||
|
|
||||||
'@better-auth/kysely-adapter@1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@cloudflare/workers-types@4.20260317.1)(better-call@1.3.2(zod@4.3.6))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(kysely@0.28.11)':
|
'@better-auth/kysely-adapter@1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@cloudflare/workers-types@4.20260317.1)(better-call@1.3.2(zod@4.3.6))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(kysely@0.28.11)':
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
@ -10168,10 +10159,6 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 24.10.9
|
'@types/node': 24.10.9
|
||||||
|
|
||||||
'@types/bun@1.3.10':
|
|
||||||
dependencies:
|
|
||||||
bun-types: 1.3.10
|
|
||||||
|
|
||||||
'@types/chai@5.2.3':
|
'@types/chai@5.2.3':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/deep-eql': 4.0.2
|
'@types/deep-eql': 4.0.2
|
||||||
|
|
@ -10648,10 +10635,10 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
tweetnacl: 0.14.5
|
tweetnacl: 0.14.5
|
||||||
|
|
||||||
better-auth@1.5.5(@cloudflare/workers-types@4.20260317.1)(drizzle-kit@0.31.9)(drizzle-orm@0.44.7(@cloudflare/workers-types@4.20260317.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(bun-types@1.3.10)(kysely@0.28.11)(pg@8.20.0))(pg@8.20.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(solid-js@1.9.11)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.5.0)(jiti@1.21.7)(jsdom@26.1.0)(tsx@4.21.0)(yaml@2.8.2)):
|
better-auth@1.5.5(@cloudflare/workers-types@4.20260317.1)(drizzle-kit@0.31.9)(drizzle-orm@0.44.7(@cloudflare/workers-types@4.20260317.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(kysely@0.28.11)(pg@8.20.0))(pg@8.20.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(solid-js@1.9.11)(vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.5.0)(jiti@1.21.7)(jsdom@26.1.0)(tsx@4.21.0)(yaml@2.8.2)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@better-auth/core': 1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@cloudflare/workers-types@4.20260317.1)(better-call@1.3.2(zod@4.3.6))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.1)
|
'@better-auth/core': 1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@cloudflare/workers-types@4.20260317.1)(better-call@1.3.2(zod@4.3.6))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.1)
|
||||||
'@better-auth/drizzle-adapter': 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@cloudflare/workers-types@4.20260317.1)(better-call@1.3.2(zod@4.3.6))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(drizzle-orm@0.44.7(@cloudflare/workers-types@4.20260317.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(bun-types@1.3.10)(kysely@0.28.11)(pg@8.20.0))
|
'@better-auth/drizzle-adapter': 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@cloudflare/workers-types@4.20260317.1)(better-call@1.3.2(zod@4.3.6))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(drizzle-orm@0.44.7(@cloudflare/workers-types@4.20260317.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(kysely@0.28.11)(pg@8.20.0))
|
||||||
'@better-auth/kysely-adapter': 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@cloudflare/workers-types@4.20260317.1)(better-call@1.3.2(zod@4.3.6))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(kysely@0.28.11)
|
'@better-auth/kysely-adapter': 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@cloudflare/workers-types@4.20260317.1)(better-call@1.3.2(zod@4.3.6))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.1))(@better-auth/utils@0.3.1)(kysely@0.28.11)
|
||||||
'@better-auth/memory-adapter': 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@cloudflare/workers-types@4.20260317.1)(better-call@1.3.2(zod@4.3.6))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.1))(@better-auth/utils@0.3.1)
|
'@better-auth/memory-adapter': 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@cloudflare/workers-types@4.20260317.1)(better-call@1.3.2(zod@4.3.6))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.1))(@better-auth/utils@0.3.1)
|
||||||
'@better-auth/mongo-adapter': 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@cloudflare/workers-types@4.20260317.1)(better-call@1.3.2(zod@4.3.6))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.1))(@better-auth/utils@0.3.1)
|
'@better-auth/mongo-adapter': 1.5.5(@better-auth/core@1.5.5(@better-auth/utils@0.3.1)(@better-fetch/fetch@1.1.21)(@cloudflare/workers-types@4.20260317.1)(better-call@1.3.2(zod@4.3.6))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.1))(@better-auth/utils@0.3.1)
|
||||||
|
|
@ -10669,7 +10656,7 @@ snapshots:
|
||||||
zod: 4.3.6
|
zod: 4.3.6
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
drizzle-kit: 0.31.9
|
drizzle-kit: 0.31.9
|
||||||
drizzle-orm: 0.44.7(@cloudflare/workers-types@4.20260317.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(better-sqlite3@11.10.0)(bun-types@1.3.10)(kysely@0.28.11)(pg@8.20.0)
|
drizzle-orm: 0.44.7(@cloudflare/workers-types@4.20260317.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(better-sqlite3@11.10.0)(kysely@0.28.11)(pg@8.20.0)
|
||||||
pg: 8.20.0
|
pg: 8.20.0
|
||||||
react: 19.2.4
|
react: 19.2.4
|
||||||
react-dom: 19.2.4(react@19.2.4)
|
react-dom: 19.2.4(react@19.2.4)
|
||||||
|
|
@ -10773,10 +10760,6 @@ snapshots:
|
||||||
buildcheck@0.0.7:
|
buildcheck@0.0.7:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
bun-types@1.3.10:
|
|
||||||
dependencies:
|
|
||||||
'@types/node': 24.10.9
|
|
||||||
|
|
||||||
bundle-require@5.1.0(esbuild@0.27.3):
|
bundle-require@5.1.0(esbuild@0.27.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
esbuild: 0.27.3
|
esbuild: 0.27.3
|
||||||
|
|
@ -11290,14 +11273,13 @@ snapshots:
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
drizzle-orm@0.44.7(@cloudflare/workers-types@4.20260317.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(better-sqlite3@11.10.0)(bun-types@1.3.10)(kysely@0.28.11)(pg@8.20.0):
|
drizzle-orm@0.44.7(@cloudflare/workers-types@4.20260317.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(better-sqlite3@11.10.0)(kysely@0.28.11)(pg@8.20.0):
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@cloudflare/workers-types': 4.20260317.1
|
'@cloudflare/workers-types': 4.20260317.1
|
||||||
'@opentelemetry/api': 1.9.0
|
'@opentelemetry/api': 1.9.0
|
||||||
'@types/better-sqlite3': 7.6.13
|
'@types/better-sqlite3': 7.6.13
|
||||||
'@types/pg': 8.18.0
|
'@types/pg': 8.18.0
|
||||||
better-sqlite3: 11.10.0
|
better-sqlite3: 11.10.0
|
||||||
bun-types: 1.3.10
|
|
||||||
kysely: 0.28.11
|
kysely: 0.28.11
|
||||||
pg: 8.20.0
|
pg: 8.20.0
|
||||||
|
|
||||||
|
|
@ -13433,7 +13415,7 @@ snapshots:
|
||||||
|
|
||||||
reusify@1.1.0: {}
|
reusify@1.1.0: {}
|
||||||
|
|
||||||
rivetkit@https://pkg.pr.new/rivet-dev/rivet/rivetkit@fc5f3b4(@cloudflare/sandbox@0.7.18(@opencode-ai/sdk@1.2.24))(@e2b/code-interpreter@2.3.3)(@standard-schema/spec@1.1.0)(@vercel/sandbox@1.8.1)(computesdk@2.5.1)(dockerode@4.0.9)(drizzle-kit@0.31.9)(drizzle-orm@0.44.7(@cloudflare/workers-types@4.20260317.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(better-sqlite3@11.10.0)(bun-types@1.3.10)(kysely@0.28.11)(pg@8.20.0))(modal@0.7.3)(ws@8.19.0):
|
rivetkit@https://pkg.pr.new/rivet-dev/rivet/rivetkit@fc5f3b4(@cloudflare/sandbox@0.7.18(@opencode-ai/sdk@1.2.24))(@e2b/code-interpreter@2.3.3)(@standard-schema/spec@1.1.0)(@vercel/sandbox@1.8.1)(computesdk@2.5.1)(dockerode@4.0.9)(drizzle-kit@0.31.9)(drizzle-orm@0.44.7(@cloudflare/workers-types@4.20260317.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(better-sqlite3@11.10.0)(kysely@0.28.11)(pg@8.20.0))(modal@0.7.3)(ws@8.19.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@hono/node-server': 1.19.9(hono@4.12.2)
|
'@hono/node-server': 1.19.9(hono@4.12.2)
|
||||||
'@hono/node-ws': 1.3.0(@hono/node-server@1.19.9(hono@4.12.2))(hono@4.12.2)
|
'@hono/node-ws': 1.3.0(@hono/node-server@1.19.9(hono@4.12.2))(hono@4.12.2)
|
||||||
|
|
@ -13464,7 +13446,7 @@ snapshots:
|
||||||
'@e2b/code-interpreter': 2.3.3
|
'@e2b/code-interpreter': 2.3.3
|
||||||
dockerode: 4.0.9
|
dockerode: 4.0.9
|
||||||
drizzle-kit: 0.31.9
|
drizzle-kit: 0.31.9
|
||||||
drizzle-orm: 0.44.7(@cloudflare/workers-types@4.20260317.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(better-sqlite3@11.10.0)(bun-types@1.3.10)(kysely@0.28.11)(pg@8.20.0)
|
drizzle-orm: 0.44.7(@cloudflare/workers-types@4.20260317.1)(@opentelemetry/api@1.9.0)(@types/better-sqlite3@7.6.13)(@types/pg@8.18.0)(better-sqlite3@11.10.0)(kysely@0.28.11)(pg@8.20.0)
|
||||||
ws: 8.19.0
|
ws: 8.19.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@cloudflare/sandbox'
|
- '@cloudflare/sandbox'
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue