mirror of
https://github.com/harivansh-afk/sandbox-agent.git
synced 2026-04-19 07:03:48 +00:00
chore: simplify cloudflare compatibility (#191)
This commit is contained in:
parent
03e06e956d
commit
4201bd204b
10 changed files with 418 additions and 249 deletions
|
|
@ -31,18 +31,23 @@ RUN sandbox-agent install-agent claude && sandbox-agent install-agent codex
|
||||||
EXPOSE 8000
|
EXPOSE 8000
|
||||||
```
|
```
|
||||||
|
|
||||||
## TypeScript proxy example
|
## TypeScript example
|
||||||
|
|
||||||
```typescript
|
```typescript
|
||||||
import { getSandbox, type Sandbox } from "@cloudflare/sandbox";
|
import { getSandbox, type Sandbox } from "@cloudflare/sandbox";
|
||||||
|
import { Hono } from "hono";
|
||||||
|
import { SandboxAgent } from "sandbox-agent";
|
||||||
|
|
||||||
export { Sandbox } from "@cloudflare/sandbox";
|
export { Sandbox } from "@cloudflare/sandbox";
|
||||||
|
|
||||||
type Env = {
|
type Bindings = {
|
||||||
Sandbox: DurableObjectNamespace<Sandbox>;
|
Sandbox: DurableObjectNamespace<Sandbox>;
|
||||||
|
ASSETS: Fetcher;
|
||||||
ANTHROPIC_API_KEY?: string;
|
ANTHROPIC_API_KEY?: string;
|
||||||
OPENAI_API_KEY?: string;
|
OPENAI_API_KEY?: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const app = new Hono<{ Bindings: Bindings }>();
|
||||||
const PORT = 8000;
|
const PORT = 8000;
|
||||||
|
|
||||||
async function isServerRunning(sandbox: Sandbox): Promise<boolean> {
|
async function isServerRunning(sandbox: Sandbox): Promise<boolean> {
|
||||||
|
|
@ -54,64 +59,50 @@ async function isServerRunning(sandbox: Sandbox): Promise<boolean> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function ensureRunning(sandbox: Sandbox, env: Env): Promise<void> {
|
async function getReadySandbox(name: string, env: Bindings): Promise<Sandbox> {
|
||||||
if (await isServerRunning(sandbox)) return;
|
const sandbox = getSandbox(env.Sandbox, name);
|
||||||
|
if (!(await isServerRunning(sandbox))) {
|
||||||
const envVars: Record<string, string> = {};
|
const envVars: Record<string, string> = {};
|
||||||
if (env.ANTHROPIC_API_KEY) envVars.ANTHROPIC_API_KEY = env.ANTHROPIC_API_KEY;
|
if (env.ANTHROPIC_API_KEY) envVars.ANTHROPIC_API_KEY = env.ANTHROPIC_API_KEY;
|
||||||
if (env.OPENAI_API_KEY) envVars.OPENAI_API_KEY = env.OPENAI_API_KEY;
|
if (env.OPENAI_API_KEY) envVars.OPENAI_API_KEY = env.OPENAI_API_KEY;
|
||||||
await sandbox.setEnvVars(envVars);
|
await sandbox.setEnvVars(envVars);
|
||||||
|
await sandbox.startProcess(`sandbox-agent server --no-token --host 0.0.0.0 --port ${PORT}`);
|
||||||
await sandbox.startProcess(`sandbox-agent server --no-token --host 0.0.0.0 --port ${PORT}`);
|
|
||||||
|
|
||||||
for (let i = 0; i < 30; i++) {
|
|
||||||
if (await isServerRunning(sandbox)) return;
|
|
||||||
await new Promise((r) => setTimeout(r, 200));
|
|
||||||
}
|
}
|
||||||
|
return sandbox;
|
||||||
throw new Error("sandbox-agent failed to start");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export default {
|
app.post("/sandbox/:name/prompt", async (c) => {
|
||||||
async fetch(request: Request, env: Env): Promise<Response> {
|
const sandbox = await getReadySandbox(c.req.param("name"), c.env);
|
||||||
const url = new URL(request.url);
|
|
||||||
const match = url.pathname.match(/^\/sandbox\/([^/]+)(\/.*)?$/);
|
|
||||||
|
|
||||||
if (!match) {
|
const sdk = await SandboxAgent.connect({
|
||||||
return new Response("Not found", { status: 404 });
|
fetch: (input, init) => sandbox.containerFetch(input as Request | string | URL, init, PORT),
|
||||||
}
|
});
|
||||||
|
|
||||||
const [, name, path = "/"] = match;
|
const session = await sdk.createSession({ agent: "codex" });
|
||||||
const sandbox = getSandbox(env.Sandbox, name);
|
const response = await session.prompt([{ type: "text", text: "Summarize this repository" }]);
|
||||||
await ensureRunning(sandbox, env);
|
await sdk.destroySession(session.id);
|
||||||
|
await sdk.dispose();
|
||||||
|
|
||||||
return sandbox.containerFetch(
|
return c.json(response);
|
||||||
new Request(`http://localhost${path}${url.search}`, request),
|
|
||||||
PORT,
|
|
||||||
);
|
|
||||||
},
|
|
||||||
};
|
|
||||||
```
|
|
||||||
|
|
||||||
## Connect from a client
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
import { SandboxAgent } from "sandbox-agent";
|
|
||||||
|
|
||||||
const sdk = await SandboxAgent.connect({
|
|
||||||
baseUrl: "http://localhost:8787/sandbox/my-sandbox",
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const session = await sdk.createSession({ agent: "claude" });
|
app.all("/sandbox/:name/proxy/*", async (c) => {
|
||||||
|
const sandbox = await getReadySandbox(c.req.param("name"), c.env);
|
||||||
|
const wildcard = c.req.param("*");
|
||||||
|
const path = wildcard ? `/${wildcard}` : "/";
|
||||||
|
const query = new URL(c.req.raw.url).search;
|
||||||
|
|
||||||
const off = session.onEvent((event) => {
|
return sandbox.containerFetch(new Request(`http://localhost${path}${query}`, c.req.raw), PORT);
|
||||||
console.log(event.sender, event.payload);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
await session.prompt([{ type: "text", text: "Summarize this repository" }]);
|
app.all("*", (c) => c.env.ASSETS.fetch(c.req.raw));
|
||||||
off();
|
|
||||||
|
export default app;
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Create the SDK client inside the Worker using custom `fetch` backed by `sandbox.containerFetch(...)`.
|
||||||
|
This keeps all Sandbox Agent calls inside the Cloudflare sandbox routing path and does not require a `baseUrl`.
|
||||||
|
|
||||||
## Local development
|
## Local development
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|
@ -121,7 +112,7 @@ npm run dev
|
||||||
Test health:
|
Test health:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl http://localhost:8787/sandbox/demo/v1/health
|
curl http://localhost:8787/sandbox/demo/proxy/v1/health
|
||||||
```
|
```
|
||||||
|
|
||||||
## Production deployment
|
## Production deployment
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,14 @@ const sdk = await SandboxAgent.connect({
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
|
With a custom fetch handler (for example, proxying requests inside Workers):
|
||||||
|
|
||||||
|
```ts
|
||||||
|
const sdk = await SandboxAgent.connect({
|
||||||
|
fetch: (input, init) => customFetch(input, init),
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
With persistence:
|
With persistence:
|
||||||
|
|
||||||
```ts
|
```ts
|
||||||
|
|
@ -158,9 +166,10 @@ console.log(url);
|
||||||
|
|
||||||
Parameters:
|
Parameters:
|
||||||
|
|
||||||
- `baseUrl` (required): Sandbox Agent server URL
|
- `baseUrl` (required unless `fetch` is provided): Sandbox Agent server URL
|
||||||
- `token` (optional): Bearer token for authenticated servers
|
- `token` (optional): Bearer token for authenticated servers
|
||||||
- `headers` (optional): Additional request headers
|
- `headers` (optional): Additional request headers
|
||||||
|
- `fetch` (optional): Custom fetch implementation used by SDK HTTP and ACP calls
|
||||||
|
|
||||||
## Types
|
## Types
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,16 @@ Test the endpoint:
|
||||||
curl http://localhost:8787
|
curl http://localhost:8787
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Test prompt routing through the SDK with a custom sandbox fetch handler:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -X POST "http://localhost:8787/sandbox/demo/prompt" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{"agent":"codex","prompt":"Reply with one short sentence."}'
|
||||||
|
```
|
||||||
|
|
||||||
|
The response includes `events`, an array of all recorded session events for that prompt.
|
||||||
|
|
||||||
## Deploy
|
## Deploy
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ export function App() {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// Connect via proxy endpoint (need full URL for SDK)
|
// Connect via proxy endpoint (need full URL for SDK)
|
||||||
const baseUrl = `${window.location.origin}/sandbox/${encodeURIComponent(sandboxName)}`;
|
const baseUrl = `${window.location.origin}/sandbox/${encodeURIComponent(sandboxName)}/proxy`;
|
||||||
log(`Connecting to sandbox: ${sandboxName}`);
|
log(`Connecting to sandbox: ${sandboxName}`);
|
||||||
|
|
||||||
const client = await SandboxAgent.connect({ baseUrl });
|
const client = await SandboxAgent.connect({ baseUrl });
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,7 @@
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@cloudflare/sandbox": "latest",
|
"@cloudflare/sandbox": "latest",
|
||||||
|
"hono": "^4.12.2",
|
||||||
"react": "^19.1.0",
|
"react": "^19.1.0",
|
||||||
"react-dom": "^19.1.0",
|
"react-dom": "^19.1.0",
|
||||||
"sandbox-agent": "workspace:*"
|
"sandbox-agent": "workspace:*"
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,20 @@
|
||||||
import { getSandbox, type Sandbox } from "@cloudflare/sandbox";
|
import { getSandbox, type Sandbox } from "@cloudflare/sandbox";
|
||||||
|
import { Hono } from "hono";
|
||||||
|
import { HTTPException } from "hono/http-exception";
|
||||||
|
import { runPromptTest, type PromptTestRequest } from "./prompt-test";
|
||||||
|
|
||||||
export { Sandbox } from "@cloudflare/sandbox";
|
export { Sandbox } from "@cloudflare/sandbox";
|
||||||
|
|
||||||
type Env = {
|
type Bindings = {
|
||||||
Bindings: {
|
Sandbox: DurableObjectNamespace<Sandbox>;
|
||||||
Sandbox: DurableObjectNamespace<Sandbox>;
|
ASSETS: Fetcher;
|
||||||
ASSETS: Fetcher;
|
ANTHROPIC_API_KEY?: string;
|
||||||
ANTHROPIC_API_KEY?: string;
|
OPENAI_API_KEY?: string;
|
||||||
OPENAI_API_KEY?: string;
|
CODEX_API_KEY?: string;
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
type AppEnv = { Bindings: Bindings };
|
||||||
|
|
||||||
const PORT = 8000;
|
const PORT = 8000;
|
||||||
|
|
||||||
/** Check if sandbox-agent is already running by probing its health endpoint */
|
/** Check if sandbox-agent is already running by probing its health endpoint */
|
||||||
|
|
@ -23,54 +27,60 @@ async function isServerRunning(sandbox: Sandbox): Promise<boolean> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Ensure sandbox-agent is running in the container */
|
async function getReadySandbox(name: string, env: Bindings): Promise<Sandbox> {
|
||||||
async function ensureRunning(sandbox: Sandbox, env: Env["Bindings"]): Promise<void> {
|
const sandbox = getSandbox(env.Sandbox, name);
|
||||||
if (await isServerRunning(sandbox)) return;
|
|
||||||
|
|
||||||
// Set environment variables for agents
|
|
||||||
const envVars: Record<string, string> = {};
|
const envVars: Record<string, string> = {};
|
||||||
if (env.ANTHROPIC_API_KEY) envVars.ANTHROPIC_API_KEY = env.ANTHROPIC_API_KEY;
|
if (env.ANTHROPIC_API_KEY) envVars.ANTHROPIC_API_KEY = env.ANTHROPIC_API_KEY;
|
||||||
if (env.OPENAI_API_KEY) envVars.OPENAI_API_KEY = env.OPENAI_API_KEY;
|
if (env.OPENAI_API_KEY) envVars.OPENAI_API_KEY = env.OPENAI_API_KEY;
|
||||||
|
if (env.CODEX_API_KEY) envVars.CODEX_API_KEY = env.CODEX_API_KEY;
|
||||||
|
if (!envVars.CODEX_API_KEY && envVars.OPENAI_API_KEY) envVars.CODEX_API_KEY = envVars.OPENAI_API_KEY;
|
||||||
await sandbox.setEnvVars(envVars);
|
await sandbox.setEnvVars(envVars);
|
||||||
|
|
||||||
// Start sandbox-agent server as background process
|
if (!(await isServerRunning(sandbox))) {
|
||||||
await sandbox.startProcess(`sandbox-agent server --no-token --host 0.0.0.0 --port ${PORT}`);
|
await sandbox.startProcess(`sandbox-agent server --no-token --host 0.0.0.0 --port ${PORT}`);
|
||||||
|
|
||||||
// Poll health endpoint until server is ready (max ~6 seconds)
|
for (let i = 0; i < 30; i++) {
|
||||||
for (let i = 0; i < 30; i++) {
|
if (await isServerRunning(sandbox)) break;
|
||||||
if (await isServerRunning(sandbox)) return;
|
await new Promise((r) => setTimeout(r, 200));
|
||||||
await new Promise((r) => setTimeout(r, 200));
|
}
|
||||||
}
|
}
|
||||||
|
return sandbox;
|
||||||
}
|
}
|
||||||
|
|
||||||
export default {
|
async function proxyToSandbox(sandbox: Sandbox, request: Request, path: string): Promise<Response> {
|
||||||
async fetch(request: Request, env: Env["Bindings"]): Promise<Response> {
|
const query = new URL(request.url).search;
|
||||||
const url = new URL(request.url);
|
return sandbox.containerFetch(new Request(`http://localhost${path}${query}`, request), PORT);
|
||||||
|
}
|
||||||
|
|
||||||
// Proxy requests to sandbox-agent: /sandbox/:name/v1/...
|
const app = new Hono<AppEnv>();
|
||||||
const match = url.pathname.match(/^\/sandbox\/([^/]+)(\/.*)?$/);
|
|
||||||
if (match) {
|
|
||||||
if (!env.ANTHROPIC_API_KEY && !env.OPENAI_API_KEY) {
|
|
||||||
return Response.json(
|
|
||||||
{ error: "ANTHROPIC_API_KEY or OPENAI_API_KEY must be set" },
|
|
||||||
{ status: 500 }
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
const name = match[1];
|
app.onError((error) => {
|
||||||
const path = match[2] || "/";
|
return new Response(String(error), { status: 500 });
|
||||||
const sandbox = getSandbox(env.Sandbox, name);
|
});
|
||||||
|
|
||||||
await ensureRunning(sandbox, env);
|
app.post("/sandbox/:name/prompt", async (c) => {
|
||||||
|
if (!(c.req.header("content-type") ?? "").includes("application/json")) {
|
||||||
|
throw new HTTPException(400, { message: "Content-Type must be application/json" });
|
||||||
|
}
|
||||||
|
|
||||||
// Proxy request to container
|
let payload: PromptTestRequest;
|
||||||
return sandbox.containerFetch(
|
try {
|
||||||
new Request(`http://localhost${path}${url.search}`, request),
|
payload = await c.req.json<PromptTestRequest>();
|
||||||
PORT
|
} catch {
|
||||||
);
|
throw new HTTPException(400, { message: "Invalid JSON body" });
|
||||||
}
|
}
|
||||||
|
|
||||||
// Serve frontend assets
|
const sandbox = await getReadySandbox(c.req.param("name"), c.env);
|
||||||
return env.ASSETS.fetch(request);
|
return c.json(await runPromptTest(sandbox, payload, PORT));
|
||||||
},
|
});
|
||||||
} satisfies ExportedHandler<Env["Bindings"]>;
|
|
||||||
|
app.all("/sandbox/:name/proxy/*", async (c) => {
|
||||||
|
const sandbox = await getReadySandbox(c.req.param("name"), c.env);
|
||||||
|
const wildcard = c.req.param("*");
|
||||||
|
const path = wildcard ? `/${wildcard}` : "/";
|
||||||
|
return proxyToSandbox(sandbox, c.req.raw, path);
|
||||||
|
});
|
||||||
|
|
||||||
|
app.all("*", (c) => c.env.ASSETS.fetch(c.req.raw));
|
||||||
|
|
||||||
|
export default app;
|
||||||
|
|
|
||||||
66
examples/cloudflare/src/prompt-test.ts
Normal file
66
examples/cloudflare/src/prompt-test.ts
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
import type { Sandbox } from "@cloudflare/sandbox";
|
||||||
|
import { SandboxAgent } from "sandbox-agent";
|
||||||
|
|
||||||
|
export type PromptTestRequest = {
|
||||||
|
agent?: string;
|
||||||
|
prompt?: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type PromptTestResponse = {
|
||||||
|
sessionId: string;
|
||||||
|
agent: string;
|
||||||
|
prompt: string;
|
||||||
|
events: unknown[];
|
||||||
|
};
|
||||||
|
|
||||||
|
export async function runPromptTest(
|
||||||
|
sandbox: Sandbox,
|
||||||
|
request: PromptTestRequest,
|
||||||
|
port: number,
|
||||||
|
): Promise<PromptTestResponse> {
|
||||||
|
const client = await SandboxAgent.connect({
|
||||||
|
fetch: (req, init) =>
|
||||||
|
sandbox.containerFetch(req, init, port),
|
||||||
|
});
|
||||||
|
|
||||||
|
let sessionId: string | null = null;
|
||||||
|
try {
|
||||||
|
const session = await client.createSession({
|
||||||
|
agent: request.agent ?? "codex",
|
||||||
|
});
|
||||||
|
sessionId = session.id;
|
||||||
|
|
||||||
|
const promptText =
|
||||||
|
request.prompt?.trim() || "Reply with a short confirmation.";
|
||||||
|
await session.prompt([{ type: "text", text: promptText }]);
|
||||||
|
|
||||||
|
const events: unknown[] = [];
|
||||||
|
let cursor: string | undefined;
|
||||||
|
while (true) {
|
||||||
|
const page = await client.getEvents({
|
||||||
|
sessionId: session.id,
|
||||||
|
cursor,
|
||||||
|
limit: 200,
|
||||||
|
});
|
||||||
|
events.push(...page.items);
|
||||||
|
if (!page.nextCursor) break;
|
||||||
|
cursor = page.nextCursor;
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
sessionId: session.id,
|
||||||
|
agent: session.agent,
|
||||||
|
prompt: promptText,
|
||||||
|
events,
|
||||||
|
};
|
||||||
|
} finally {
|
||||||
|
if (sessionId) {
|
||||||
|
try {
|
||||||
|
await client.destroySession(sessionId);
|
||||||
|
} catch {
|
||||||
|
// Ignore cleanup failures; session teardown is best-effort.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
await client.dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
310
pnpm-lock.yaml
generated
310
pnpm-lock.yaml
generated
|
|
@ -17,13 +17,16 @@ importers:
|
||||||
version: 2.7.6
|
version: 2.7.6
|
||||||
vitest:
|
vitest:
|
||||||
specifier: ^3.0.0
|
specifier: ^3.0.0
|
||||||
version: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
version: 3.2.4(@types/debug@4.1.12)(@types/node@25.3.0)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
||||||
|
|
||||||
examples/cloudflare:
|
examples/cloudflare:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@cloudflare/sandbox':
|
'@cloudflare/sandbox':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 0.7.2
|
version: 0.7.5
|
||||||
|
hono:
|
||||||
|
specifier: ^4.12.2
|
||||||
|
version: 4.12.2
|
||||||
react:
|
react:
|
||||||
specifier: ^19.1.0
|
specifier: ^19.1.0
|
||||||
version: 19.2.4
|
version: 19.2.4
|
||||||
|
|
@ -36,10 +39,10 @@ importers:
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@cloudflare/workers-types':
|
'@cloudflare/workers-types':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 4.20260210.0
|
version: 4.20260302.0
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 25.2.3
|
version: 25.3.0
|
||||||
'@types/react':
|
'@types/react':
|
||||||
specifier: ^18.3.3
|
specifier: ^18.3.3
|
||||||
version: 18.3.27
|
version: 18.3.27
|
||||||
|
|
@ -48,19 +51,19 @@ importers:
|
||||||
version: 18.3.7(@types/react@18.3.27)
|
version: 18.3.7(@types/react@18.3.27)
|
||||||
'@vitejs/plugin-react':
|
'@vitejs/plugin-react':
|
||||||
specifier: ^4.5.0
|
specifier: ^4.5.0
|
||||||
version: 4.7.0(vite@6.4.1(@types/node@25.2.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2))
|
version: 4.7.0(vite@6.4.1(@types/node@25.3.0)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2))
|
||||||
typescript:
|
typescript:
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 5.9.3
|
version: 5.9.3
|
||||||
vite:
|
vite:
|
||||||
specifier: ^6.2.0
|
specifier: ^6.2.0
|
||||||
version: 6.4.1(@types/node@25.2.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
version: 6.4.1(@types/node@25.3.0)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
||||||
vitest:
|
vitest:
|
||||||
specifier: ^3.0.0
|
specifier: ^3.0.0
|
||||||
version: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
version: 3.2.4(@types/debug@4.1.12)(@types/node@25.3.0)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
||||||
wrangler:
|
wrangler:
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 4.64.0(@cloudflare/workers-types@4.20260210.0)
|
version: 4.67.1(@cloudflare/workers-types@4.20260302.0)
|
||||||
|
|
||||||
examples/computesdk:
|
examples/computesdk:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
@ -69,14 +72,14 @@ importers:
|
||||||
version: link:../shared
|
version: link:../shared
|
||||||
computesdk:
|
computesdk:
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 2.2.0
|
version: 2.2.1
|
||||||
sandbox-agent:
|
sandbox-agent:
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../sdks/typescript
|
version: link:../../sdks/typescript
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 25.2.3
|
version: 25.3.0
|
||||||
tsx:
|
tsx:
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 4.21.0
|
version: 4.21.0
|
||||||
|
|
@ -85,13 +88,13 @@ importers:
|
||||||
version: 5.9.3
|
version: 5.9.3
|
||||||
vitest:
|
vitest:
|
||||||
specifier: ^3.0.0
|
specifier: ^3.0.0
|
||||||
version: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
version: 3.2.4(@types/debug@4.1.12)(@types/node@25.3.0)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
||||||
|
|
||||||
examples/daytona:
|
examples/daytona:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@daytonaio/sdk':
|
'@daytonaio/sdk':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 0.141.0(ws@8.19.0)
|
version: 0.144.0(ws@8.19.0)
|
||||||
'@sandbox-agent/example-shared':
|
'@sandbox-agent/example-shared':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../shared
|
version: link:../shared
|
||||||
|
|
@ -101,7 +104,7 @@ importers:
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 25.2.3
|
version: 25.3.0
|
||||||
tsx:
|
tsx:
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 4.21.0
|
version: 4.21.0
|
||||||
|
|
@ -126,7 +129,7 @@ importers:
|
||||||
version: 4.0.1
|
version: 4.0.1
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 25.2.3
|
version: 25.3.0
|
||||||
tsx:
|
tsx:
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 4.21.0
|
version: 4.21.0
|
||||||
|
|
@ -135,7 +138,7 @@ importers:
|
||||||
version: 5.9.3
|
version: 5.9.3
|
||||||
vitest:
|
vitest:
|
||||||
specifier: ^3.0.0
|
specifier: ^3.0.0
|
||||||
version: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
version: 3.2.4(@types/debug@4.1.12)(@types/node@25.3.0)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
||||||
|
|
||||||
examples/e2b:
|
examples/e2b:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
@ -151,7 +154,7 @@ importers:
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 25.2.3
|
version: 25.3.0
|
||||||
tsx:
|
tsx:
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 4.21.0
|
version: 4.21.0
|
||||||
|
|
@ -160,7 +163,7 @@ importers:
|
||||||
version: 5.9.3
|
version: 5.9.3
|
||||||
vitest:
|
vitest:
|
||||||
specifier: ^3.0.0
|
specifier: ^3.0.0
|
||||||
version: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
version: 3.2.4(@types/debug@4.1.12)(@types/node@25.3.0)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
||||||
|
|
||||||
examples/file-system:
|
examples/file-system:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
@ -176,7 +179,7 @@ importers:
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 25.2.3
|
version: 25.3.0
|
||||||
tsx:
|
tsx:
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 4.21.0
|
version: 4.21.0
|
||||||
|
|
@ -195,7 +198,7 @@ importers:
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 25.2.3
|
version: 25.3.0
|
||||||
tsx:
|
tsx:
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 4.21.0
|
version: 4.21.0
|
||||||
|
|
@ -220,7 +223,7 @@ importers:
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 25.2.3
|
version: 25.3.0
|
||||||
esbuild:
|
esbuild:
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 0.27.3
|
version: 0.27.3
|
||||||
|
|
@ -235,7 +238,7 @@ importers:
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 25.2.3
|
version: 25.3.0
|
||||||
typescript:
|
typescript:
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 5.9.3
|
version: 5.9.3
|
||||||
|
|
@ -251,7 +254,7 @@ importers:
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 25.2.3
|
version: 25.3.0
|
||||||
tsx:
|
tsx:
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 4.21.0
|
version: 4.21.0
|
||||||
|
|
@ -276,7 +279,7 @@ importers:
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 25.2.3
|
version: 25.3.0
|
||||||
'@types/pg':
|
'@types/pg':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 8.16.0
|
version: 8.16.0
|
||||||
|
|
@ -301,7 +304,7 @@ importers:
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 25.2.3
|
version: 25.3.0
|
||||||
tsx:
|
tsx:
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 4.21.0
|
version: 4.21.0
|
||||||
|
|
@ -323,7 +326,7 @@ importers:
|
||||||
version: 4.0.1
|
version: 4.0.1
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 25.2.3
|
version: 25.3.0
|
||||||
typescript:
|
typescript:
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 5.9.3
|
version: 5.9.3
|
||||||
|
|
@ -339,7 +342,7 @@ importers:
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 25.2.3
|
version: 25.3.0
|
||||||
tsx:
|
tsx:
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 4.21.0
|
version: 4.21.0
|
||||||
|
|
@ -358,7 +361,7 @@ importers:
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 25.2.3
|
version: 25.3.0
|
||||||
esbuild:
|
esbuild:
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 0.27.3
|
version: 0.27.3
|
||||||
|
|
@ -376,14 +379,14 @@ importers:
|
||||||
version: link:../shared
|
version: link:../shared
|
||||||
'@vercel/sandbox':
|
'@vercel/sandbox':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 1.5.0
|
version: 1.6.0
|
||||||
sandbox-agent:
|
sandbox-agent:
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../sdks/typescript
|
version: link:../../sdks/typescript
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 25.2.3
|
version: 25.3.0
|
||||||
tsx:
|
tsx:
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 4.21.0
|
version: 4.21.0
|
||||||
|
|
@ -392,7 +395,7 @@ importers:
|
||||||
version: 5.9.3
|
version: 5.9.3
|
||||||
vitest:
|
vitest:
|
||||||
specifier: ^3.0.0
|
specifier: ^3.0.0
|
||||||
version: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
version: 3.2.4(@types/debug@4.1.12)(@types/node@25.3.0)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
||||||
|
|
||||||
frontend/packages/inspector:
|
frontend/packages/inspector:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
@ -417,7 +420,7 @@ importers:
|
||||||
version: 18.3.7(@types/react@18.3.27)
|
version: 18.3.7(@types/react@18.3.27)
|
||||||
'@vitejs/plugin-react':
|
'@vitejs/plugin-react':
|
||||||
specifier: ^4.3.1
|
specifier: ^4.3.1
|
||||||
version: 4.7.0(vite@5.4.21(@types/node@25.2.3))
|
version: 4.7.0(vite@5.4.21(@types/node@25.3.0))
|
||||||
fake-indexeddb:
|
fake-indexeddb:
|
||||||
specifier: ^6.2.4
|
specifier: ^6.2.4
|
||||||
version: 6.2.5
|
version: 6.2.5
|
||||||
|
|
@ -429,25 +432,25 @@ importers:
|
||||||
version: 5.9.3
|
version: 5.9.3
|
||||||
vite:
|
vite:
|
||||||
specifier: ^5.4.7
|
specifier: ^5.4.7
|
||||||
version: 5.4.21(@types/node@25.2.3)
|
version: 5.4.21(@types/node@25.3.0)
|
||||||
vitest:
|
vitest:
|
||||||
specifier: ^3.0.0
|
specifier: ^3.0.0
|
||||||
version: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
version: 3.2.4(@types/debug@4.1.12)(@types/node@25.3.0)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
||||||
|
|
||||||
frontend/packages/website:
|
frontend/packages/website:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@astrojs/react':
|
'@astrojs/react':
|
||||||
specifier: ^4.2.0
|
specifier: ^4.2.0
|
||||||
version: 4.4.2(@types/node@25.2.3)(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(jiti@1.21.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tsx@4.21.0)(yaml@2.8.2)
|
version: 4.4.2(@types/node@25.3.0)(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(jiti@1.21.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tsx@4.21.0)(yaml@2.8.2)
|
||||||
'@astrojs/sitemap':
|
'@astrojs/sitemap':
|
||||||
specifier: ^3.2.0
|
specifier: ^3.2.0
|
||||||
version: 3.7.0
|
version: 3.7.0
|
||||||
'@astrojs/tailwind':
|
'@astrojs/tailwind':
|
||||||
specifier: ^6.0.0
|
specifier: ^6.0.0
|
||||||
version: 6.0.2(astro@5.16.15(@types/node@25.2.3)(jiti@1.21.7)(rollup@4.56.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2))
|
version: 6.0.2(astro@5.16.15(@types/node@25.3.0)(aws4fetch@1.0.20)(jiti@1.21.7)(rollup@4.56.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2))
|
||||||
astro:
|
astro:
|
||||||
specifier: ^5.1.0
|
specifier: ^5.1.0
|
||||||
version: 5.16.15(@types/node@25.2.3)(jiti@1.21.7)(rollup@4.56.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)
|
version: 5.16.15(@types/node@25.3.0)(aws4fetch@1.0.20)(jiti@1.21.7)(rollup@4.56.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)
|
||||||
framer-motion:
|
framer-motion:
|
||||||
specifier: ^12.0.0
|
specifier: ^12.0.0
|
||||||
version: 12.29.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
version: 12.29.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
|
||||||
|
|
@ -531,14 +534,14 @@ importers:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@daytonaio/sdk':
|
'@daytonaio/sdk':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 0.141.0(ws@8.19.0)
|
version: 0.144.0(ws@8.19.0)
|
||||||
'@e2b/code-interpreter':
|
'@e2b/code-interpreter':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 2.3.3
|
version: 2.3.3
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 25.2.3
|
version: 25.3.0
|
||||||
tsx:
|
tsx:
|
||||||
specifier: latest
|
specifier: latest
|
||||||
version: 4.21.0
|
version: 4.21.0
|
||||||
|
|
@ -589,7 +592,7 @@ importers:
|
||||||
devDependencies:
|
devDependencies:
|
||||||
vitest:
|
vitest:
|
||||||
specifier: ^3.0.0
|
specifier: ^3.0.0
|
||||||
version: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
version: 3.2.4(@types/debug@4.1.12)(@types/node@25.3.0)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
||||||
|
|
||||||
sdks/cli-shared:
|
sdks/cli-shared:
|
||||||
devDependencies:
|
devDependencies:
|
||||||
|
|
@ -637,7 +640,7 @@ importers:
|
||||||
devDependencies:
|
devDependencies:
|
||||||
vitest:
|
vitest:
|
||||||
specifier: ^3.0.0
|
specifier: ^3.0.0
|
||||||
version: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
version: 3.2.4(@types/debug@4.1.12)(@types/node@25.3.0)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
||||||
|
|
||||||
sdks/gigacode/platforms/darwin-arm64: {}
|
sdks/gigacode/platforms/darwin-arm64: {}
|
||||||
|
|
||||||
|
|
@ -1142,11 +1145,11 @@ packages:
|
||||||
resolution: {integrity: sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==}
|
resolution: {integrity: sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==}
|
||||||
engines: {node: '>=18.0.0'}
|
engines: {node: '>=18.0.0'}
|
||||||
|
|
||||||
'@cloudflare/sandbox@0.7.2':
|
'@cloudflare/sandbox@0.7.5':
|
||||||
resolution: {integrity: sha512-q0dn6RUBLZ8CD4g99sVJbxoQK/BjJ3luw0T03mvTrUbRicjyzdFWP7dlEYzhvqpyd6TWpTsYr+TSHf/95bVuWw==}
|
resolution: {integrity: sha512-lOegEUL6eDsHrsxEMxqRcftsp46hn+ilQryCLuSDghHvnCdDAenzyN/E3nVjQdYAZnoh5xsLzis/G295LcZr1w==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@openai/agents': ^0.3.3
|
'@openai/agents': ^0.3.3
|
||||||
'@opencode-ai/sdk': ^1.0.137
|
'@opencode-ai/sdk': ^1.1.40
|
||||||
'@xterm/xterm': '>=5.0.0'
|
'@xterm/xterm': '>=5.0.0'
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
'@openai/agents':
|
'@openai/agents':
|
||||||
|
|
@ -1156,47 +1159,47 @@ packages:
|
||||||
'@xterm/xterm':
|
'@xterm/xterm':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@cloudflare/unenv-preset@2.12.1':
|
'@cloudflare/unenv-preset@2.14.0':
|
||||||
resolution: {integrity: sha512-tP/Wi+40aBJovonSNJSsS7aFJY0xjuckKplmzDs2Xat06BJ68B6iG7YDUWXJL8gNn0gqW7YC5WhlYhO3QbugQA==}
|
resolution: {integrity: sha512-XKAkWhi1nBdNsSEoNG9nkcbyvfUrSjSf+VYVPfOto3gLTZVc3F4g6RASCMh6IixBKCG2yDgZKQIHGKtjcnLnKg==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
unenv: 2.0.0-rc.24
|
unenv: 2.0.0-rc.24
|
||||||
workerd: ^1.20260115.0
|
workerd: ^1.20260218.0
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
workerd:
|
workerd:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@cloudflare/workerd-darwin-64@1.20260210.0':
|
'@cloudflare/workerd-darwin-64@1.20260302.0':
|
||||||
resolution: {integrity: sha512-e3vMgzr8ZM6VjpJVFrnMBhjvFhlMIkhT+BLpBk3pKaWsrXao+azDlmzzxB3Zf4CZ8LmCEtaP7n5d2mNGL6Dqww==}
|
resolution: {integrity: sha512-cGtxPByeVrgoqxbmd8qs631wuGwf8yTm/FY44dEW4HdoXrb5jhlE4oWYHFafedkQCvGjY1Vbs3puAiKnuMxTXQ==}
|
||||||
engines: {node: '>=16'}
|
engines: {node: '>=16'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@cloudflare/workerd-darwin-arm64@1.20260210.0':
|
'@cloudflare/workerd-darwin-arm64@1.20260302.0':
|
||||||
resolution: {integrity: sha512-ng2uLJVMrI5VrcAS26gDGM+qxCuWD4ZA8VR4i88RdyM8TLn+AqPFisrvn7AMA+QSv0+ck+ZdFtXek7qNp2gNuA==}
|
resolution: {integrity: sha512-WRGqV6RNXM3xoQblJJw1EHKwx9exyhB18cdnToSCUFPObFhk3fzMLoQh7S+nUHUpto6aUrXPVj6R/4G3UPjCxw==}
|
||||||
engines: {node: '>=16'}
|
engines: {node: '>=16'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@cloudflare/workerd-linux-64@1.20260210.0':
|
'@cloudflare/workerd-linux-64@1.20260302.0':
|
||||||
resolution: {integrity: sha512-frn2/+6DV59h13JbGSk9ATvJw3uORWssFIKZ/G/to+WRrIDQgCpSrjLtGbFSSn5eBEhYOvwxPKc7IrppkmIj/w==}
|
resolution: {integrity: sha512-gG423mtUjrmlQT+W2+KisLc6qcGcBLR+QcK5x1gje3bu/dF3oNiYuqY7o58A+sQk6IB849UC4UyNclo1RhP2xw==}
|
||||||
engines: {node: '>=16'}
|
engines: {node: '>=16'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@cloudflare/workerd-linux-arm64@1.20260210.0':
|
'@cloudflare/workerd-linux-arm64@1.20260302.0':
|
||||||
resolution: {integrity: sha512-0fmxEHaDcAF+7gcqnBcQdBCOzNvGz3mTMwqxEYJc5xZgFwQf65/dYK5fnV8z56GVNqu88NEnLMG3DD2G7Ey1vw==}
|
resolution: {integrity: sha512-7M25noGI4WlSBOhrIaY8xZrnn87OQKtJg9YWAO2EFqGjF1Su5QXGaLlQVF4fAKbqTywbHnI8BAuIsIlUSNkhCg==}
|
||||||
engines: {node: '>=16'}
|
engines: {node: '>=16'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@cloudflare/workerd-windows-64@1.20260210.0':
|
'@cloudflare/workerd-windows-64@1.20260302.0':
|
||||||
resolution: {integrity: sha512-G/Apjk/QLNnwbu8B0JO9FuAJKHNr+gl8X3G/7qaUrpwIkPx5JFQElVE6LKk4teSrycvAy5AzLFAL0lOB1xsUIQ==}
|
resolution: {integrity: sha512-jK1L3ADkiWxFzlqZTq2iHW1Bd2Nzu1fmMWCGZw4sMZ2W1B2WCm2wHwO2SX/py4BgylyEN3wuF+5zagbkNKht9A==}
|
||||||
engines: {node: '>=16'}
|
engines: {node: '>=16'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@cloudflare/workers-types@4.20260210.0':
|
'@cloudflare/workers-types@4.20260302.0':
|
||||||
resolution: {integrity: sha512-zHaF0RZVYUQwNCJCECnNAJdMur72Lk3FMiD6wU78Dx3Bv7DQRcuXNmPNuJmsGnosVZCcWintHlPTQ/4BEiDG5w==}
|
resolution: {integrity: sha512-mbFRnlu1lNCScMpXZk/X/uBPufYx5OSbq+euGonGRcY+DgOwm2kczGdK401rUh52NB0fFMEcOy/zqwxv7CdDNA==}
|
||||||
|
|
||||||
'@computesdk/cmd@0.4.1':
|
'@computesdk/cmd@0.4.1':
|
||||||
resolution: {integrity: sha512-hhcYrwMnOpRSwWma3gkUeAVsDFG56nURwSaQx8vCepv0IuUv39bK4mMkgszolnUQrVjBDdW7b3lV+l5B2S8fRA==}
|
resolution: {integrity: sha512-hhcYrwMnOpRSwWma3gkUeAVsDFG56nURwSaQx8vCepv0IuUv39bK4mMkgszolnUQrVjBDdW7b3lV+l5B2S8fRA==}
|
||||||
|
|
@ -1216,14 +1219,14 @@ packages:
|
||||||
resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
|
resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
'@daytonaio/api-client@0.141.0':
|
'@daytonaio/api-client@0.144.0':
|
||||||
resolution: {integrity: sha512-DSPCurIEjfFyXCd07jkDgfsoFppVhTLyIJdvfb0LgG1EgV75BPqqzk2WM4ragBFJUuK2URF5CK7qkaHW0AXKMA==}
|
resolution: {integrity: sha512-qr9c6YLntqmxbGAwYNIvHqZxA5zWl0nGY5aH3oK++1x03uDc5YnCwfcX7M7WCemt2iBUtLjQshdRKwFv0sDYsA==}
|
||||||
|
|
||||||
'@daytonaio/sdk@0.141.0':
|
'@daytonaio/sdk@0.144.0':
|
||||||
resolution: {integrity: sha512-JUopkS9SkO7h4WN8CjparOrP9k954euOF5KG//PeCEFOxUWTPFOME70GrmHXQKa1qkdZiF/4tz9jtZ744B1I2w==}
|
resolution: {integrity: sha512-Le8auU/h4xOlcTBQZWEx8jJwDEHeyKT/7oTUzkvONCp50agcuKjd5CDf79wsR9IqMuoCtlYcvhWXCNsdEuWkYg==}
|
||||||
|
|
||||||
'@daytonaio/toolbox-api-client@0.141.0':
|
'@daytonaio/toolbox-api-client@0.144.0':
|
||||||
resolution: {integrity: sha512-KGkCLDLAltd9FCic3PhSJGrTp3RwGsUwWEGp5vyWZFQGWpJV8CVp08CH5SBdo4YhuqFUVlyQcwha1HpzpVH++A==}
|
resolution: {integrity: sha512-ll5IXlH3nzhFtN+sW5fbAvT0mculP/GZCKnhHge/UlyG0cXKvlb3aoG2xWE1qpl5xWv2aQJbVdGhyuiGG/kPsQ==}
|
||||||
|
|
||||||
'@e2b/code-interpreter@2.3.3':
|
'@e2b/code-interpreter@2.3.3':
|
||||||
resolution: {integrity: sha512-WOpSwc1WpvxyOijf6WMbR76BUuvd2O9ddXgCHHi65lkuy6YgQGq7oyd8PNsT331O9Tqbccjy6uF4xanSdLX1UA==}
|
resolution: {integrity: sha512-WOpSwc1WpvxyOijf6WMbR76BUuvd2O9ddXgCHHi65lkuy6YgQGq7oyd8PNsT331O9Tqbccjy6uF4xanSdLX1UA==}
|
||||||
|
|
@ -2780,8 +2783,8 @@ packages:
|
||||||
'@types/node@24.10.9':
|
'@types/node@24.10.9':
|
||||||
resolution: {integrity: sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==}
|
resolution: {integrity: sha512-ne4A0IpG3+2ETuREInjPNhUGis1SFjv1d5asp8MzEAGtOZeTeHVDOYqOgqfhvseqg/iXty2hjBf1zAOb7RNiNw==}
|
||||||
|
|
||||||
'@types/node@25.2.3':
|
'@types/node@25.3.0':
|
||||||
resolution: {integrity: sha512-m0jEgYlYz+mDJZ2+F4v8D1AyQb+QzsNqRuI7xg1VQX/KlKS0qT9r1Mo16yo5F/MtifXFgaofIFsdFMox2SxIbQ==}
|
resolution: {integrity: sha512-4K3bqJpXpqfg2XKGK9bpDTc6xO/xoUP/RBWS7AtRMug6zZFaRekiLzjVtAoZMquxoAbzBvy5nxQ7veS5eYzf8A==}
|
||||||
|
|
||||||
'@types/pg@8.16.0':
|
'@types/pg@8.16.0':
|
||||||
resolution: {integrity: sha512-RmhMd/wD+CF8Dfo+cVIy3RR5cl8CyfXQ0tGgW6XBL8L4LM/UTEbNXYRbLwU6w+CgrKBNbrQWt4FUtTfaU5jSYQ==}
|
resolution: {integrity: sha512-RmhMd/wD+CF8Dfo+cVIy3RR5cl8CyfXQ0tGgW6XBL8L4LM/UTEbNXYRbLwU6w+CgrKBNbrQWt4FUtTfaU5jSYQ==}
|
||||||
|
|
@ -2819,8 +2822,8 @@ packages:
|
||||||
resolution: {integrity: sha512-Fw28YZpRnA3cAHHDlkt7xQHiJ0fcL+NRcIqsocZQUSmbzeIKRpwttJjik5ZGanXP+vlA4SbTg+AbA3bP363l+w==}
|
resolution: {integrity: sha512-Fw28YZpRnA3cAHHDlkt7xQHiJ0fcL+NRcIqsocZQUSmbzeIKRpwttJjik5ZGanXP+vlA4SbTg+AbA3bP363l+w==}
|
||||||
engines: {node: '>= 20'}
|
engines: {node: '>= 20'}
|
||||||
|
|
||||||
'@vercel/sandbox@1.5.0':
|
'@vercel/sandbox@1.6.0':
|
||||||
resolution: {integrity: sha512-+czegl5FtCCNV0EOkJFTf3XX5Pfds/QyysA1HfYMbnePYiypZJW9rWYGDEfYTLC4oyNsp/9d3hmmV8FvYMhLwA==}
|
resolution: {integrity: sha512-T204S3RZIdo+BCR5gpErTQBYz+ruXjTMRiZyf+HV/UQeKjPKAVKWu27T65kahDvVvJrbadHhxR2Cds28rXXF/Q==}
|
||||||
|
|
||||||
'@vitejs/plugin-react@4.7.0':
|
'@vitejs/plugin-react@4.7.0':
|
||||||
resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==}
|
resolution: {integrity: sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==}
|
||||||
|
|
@ -2954,6 +2957,9 @@ packages:
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
postcss: ^8.1.0
|
postcss: ^8.1.0
|
||||||
|
|
||||||
|
aws4fetch@1.0.20:
|
||||||
|
resolution: {integrity: sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g==}
|
||||||
|
|
||||||
axios@1.13.5:
|
axios@1.13.5:
|
||||||
resolution: {integrity: sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==}
|
resolution: {integrity: sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==}
|
||||||
|
|
||||||
|
|
@ -3190,8 +3196,8 @@ packages:
|
||||||
compare-versions@6.1.1:
|
compare-versions@6.1.1:
|
||||||
resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==}
|
resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==}
|
||||||
|
|
||||||
computesdk@2.2.0:
|
computesdk@2.2.1:
|
||||||
resolution: {integrity: sha512-gAAL8vMLkYUFH138OwbebTG9AYMh4RudhRvYboJvRdc9NQAafVHfvZtPwg4YVKPB3VpsfK5m9pkgv60Xr2cE1g==}
|
resolution: {integrity: sha512-u4xAtvuTNTquaN57hJq030aeGJtmxQ6Pzd/8kXB7uaCgwyyePK4W0hPDeDOFzyNd9QgoDDUD9r1j1sdO+UqVXg==}
|
||||||
|
|
||||||
confbox@0.1.8:
|
confbox@0.1.8:
|
||||||
resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==}
|
resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==}
|
||||||
|
|
@ -3744,6 +3750,10 @@ packages:
|
||||||
resolution: {integrity: sha512-eVkB/CYCCei7K2WElZW9yYQFWssG0DhaDhVvr7wy5jJ22K+ck8fWW0EsLpB0sITUTvPnc97+rrbQqIr5iqiy9Q==}
|
resolution: {integrity: sha512-eVkB/CYCCei7K2WElZW9yYQFWssG0DhaDhVvr7wy5jJ22K+ck8fWW0EsLpB0sITUTvPnc97+rrbQqIr5iqiy9Q==}
|
||||||
engines: {node: '>=16.9.0'}
|
engines: {node: '>=16.9.0'}
|
||||||
|
|
||||||
|
hono@4.12.2:
|
||||||
|
resolution: {integrity: sha512-gJnaDHXKDayjt8ue0n8Gs0A007yKXj4Xzb8+cNjZeYsSzzwKc0Lr+OZgYwVfB0pHfUs17EPoLvrOsEaJ9mj+Tg==}
|
||||||
|
engines: {node: '>=16.9.0'}
|
||||||
|
|
||||||
html-escaper@3.0.3:
|
html-escaper@3.0.3:
|
||||||
resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==}
|
resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==}
|
||||||
|
|
||||||
|
|
@ -4137,8 +4147,8 @@ packages:
|
||||||
resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
|
resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
|
||||||
miniflare@4.20260210.0:
|
miniflare@4.20260302.0:
|
||||||
resolution: {integrity: sha512-HXR6m53IOqEzq52DuGF1x7I1K6lSIqzhbCbQXv/cTmPnPJmNkr7EBtLDm4nfSkOvlDtnwDCLUjWII5fyGJI5Tw==}
|
resolution: {integrity: sha512-joGFywlo7HdfHXXGOkc6tDCVkwjEncM0mwEsMOLWcl+vDVJPj9HRV7JtEa0+lCpNOLdYw7mZNHYe12xz9KtJOw==}
|
||||||
engines: {node: '>=18.0.0'}
|
engines: {node: '>=18.0.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
|
@ -4518,6 +4528,7 @@ packages:
|
||||||
prebuild-install@7.1.3:
|
prebuild-install@7.1.3:
|
||||||
resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==}
|
resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
deprecated: No longer maintained. Please contact the author of the relevant native addon; alternatives are available.
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
prismjs@1.30.0:
|
prismjs@1.30.0:
|
||||||
|
|
@ -4962,6 +4973,7 @@ packages:
|
||||||
tar@7.5.7:
|
tar@7.5.7:
|
||||||
resolution: {integrity: sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==}
|
resolution: {integrity: sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
|
deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me
|
||||||
|
|
||||||
text-decoder@1.2.3:
|
text-decoder@1.2.3:
|
||||||
resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==}
|
resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==}
|
||||||
|
|
@ -5139,6 +5151,9 @@ packages:
|
||||||
undici-types@7.16.0:
|
undici-types@7.16.0:
|
||||||
resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
|
resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==}
|
||||||
|
|
||||||
|
undici-types@7.18.2:
|
||||||
|
resolution: {integrity: sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==}
|
||||||
|
|
||||||
undici@5.29.0:
|
undici@5.29.0:
|
||||||
resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==}
|
resolution: {integrity: sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==}
|
||||||
engines: {node: '>=14.0'}
|
engines: {node: '>=14.0'}
|
||||||
|
|
@ -5426,17 +5441,17 @@ packages:
|
||||||
resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==}
|
resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
|
|
||||||
workerd@1.20260210.0:
|
workerd@1.20260302.0:
|
||||||
resolution: {integrity: sha512-Sb0WXhrvf+XHQigP2trAxQnXo7wxZFC4PWnn6I7LhFxiTvzxvOAqMEiLkIz58wggRCb54T/KAA8hdjkTniR5FA==}
|
resolution: {integrity: sha512-FhNdC8cenMDllI6bTktFgxP5Bn5ZEnGtofgKipY6pW9jtq708D1DeGI6vGad78KQLBGaDwFy1eThjCoLYgFfog==}
|
||||||
engines: {node: '>=16'}
|
engines: {node: '>=16'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
wrangler@4.64.0:
|
wrangler@4.67.1:
|
||||||
resolution: {integrity: sha512-0PBiVEbshQT4Av/KLHbOAks4ioIKp/eAO7Xr2BgAX5v7cFYYgeOvudBrbtZa/hDDIA6858QuJnTQ8mI+cm8Vqw==}
|
resolution: {integrity: sha512-5GXz8cQNN/2KCMQ/22oe9Vf9xwVNillOowhKq6W2+ZuveU4/IrTm61K4iIUOsBYmrhYGopSfk0GmyCTuNh2rsA==}
|
||||||
engines: {node: '>=20.0.0'}
|
engines: {node: '>=20.0.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
'@cloudflare/workers-types': ^4.20260210.0
|
'@cloudflare/workers-types': ^4.20260302.0
|
||||||
peerDependenciesMeta:
|
peerDependenciesMeta:
|
||||||
'@cloudflare/workers-types':
|
'@cloudflare/workers-types':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
@ -5607,15 +5622,15 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
prismjs: 1.30.0
|
prismjs: 1.30.0
|
||||||
|
|
||||||
'@astrojs/react@4.4.2(@types/node@25.2.3)(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(jiti@1.21.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tsx@4.21.0)(yaml@2.8.2)':
|
'@astrojs/react@4.4.2(@types/node@25.3.0)(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(jiti@1.21.7)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tsx@4.21.0)(yaml@2.8.2)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/react': 18.3.27
|
'@types/react': 18.3.27
|
||||||
'@types/react-dom': 18.3.7(@types/react@18.3.27)
|
'@types/react-dom': 18.3.7(@types/react@18.3.27)
|
||||||
'@vitejs/plugin-react': 4.7.0(vite@6.4.1(@types/node@25.2.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2))
|
'@vitejs/plugin-react': 4.7.0(vite@6.4.1(@types/node@25.3.0)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2))
|
||||||
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)
|
||||||
ultrahtml: 1.6.0
|
ultrahtml: 1.6.0
|
||||||
vite: 6.4.1(@types/node@25.2.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
vite: 6.4.1(@types/node@25.3.0)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@types/node'
|
- '@types/node'
|
||||||
- jiti
|
- jiti
|
||||||
|
|
@ -5636,9 +5651,9 @@ snapshots:
|
||||||
stream-replace-string: 2.0.0
|
stream-replace-string: 2.0.0
|
||||||
zod: 3.25.76
|
zod: 3.25.76
|
||||||
|
|
||||||
'@astrojs/tailwind@6.0.2(astro@5.16.15(@types/node@25.2.3)(jiti@1.21.7)(rollup@4.56.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2))':
|
'@astrojs/tailwind@6.0.2(astro@5.16.15(@types/node@25.3.0)(aws4fetch@1.0.20)(jiti@1.21.7)(rollup@4.56.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2))(tailwindcss@3.4.19(tsx@4.21.0)(yaml@2.8.2))':
|
||||||
dependencies:
|
dependencies:
|
||||||
astro: 5.16.15(@types/node@25.2.3)(jiti@1.21.7)(rollup@4.56.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)
|
astro: 5.16.15(@types/node@25.3.0)(aws4fetch@1.0.20)(jiti@1.21.7)(rollup@4.56.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2)
|
||||||
autoprefixer: 10.4.23(postcss@8.5.6)
|
autoprefixer: 10.4.23(postcss@8.5.6)
|
||||||
postcss: 8.5.6
|
postcss: 8.5.6
|
||||||
postcss-load-config: 4.0.2(postcss@8.5.6)
|
postcss-load-config: 4.0.2(postcss@8.5.6)
|
||||||
|
|
@ -6344,32 +6359,33 @@ snapshots:
|
||||||
|
|
||||||
'@cloudflare/kv-asset-handler@0.4.2': {}
|
'@cloudflare/kv-asset-handler@0.4.2': {}
|
||||||
|
|
||||||
'@cloudflare/sandbox@0.7.2':
|
'@cloudflare/sandbox@0.7.5':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@cloudflare/containers': 0.0.30
|
'@cloudflare/containers': 0.0.30
|
||||||
|
aws4fetch: 1.0.20
|
||||||
|
|
||||||
'@cloudflare/unenv-preset@2.12.1(unenv@2.0.0-rc.24)(workerd@1.20260210.0)':
|
'@cloudflare/unenv-preset@2.14.0(unenv@2.0.0-rc.24)(workerd@1.20260302.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
unenv: 2.0.0-rc.24
|
unenv: 2.0.0-rc.24
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
workerd: 1.20260210.0
|
workerd: 1.20260302.0
|
||||||
|
|
||||||
'@cloudflare/workerd-darwin-64@1.20260210.0':
|
'@cloudflare/workerd-darwin-64@1.20260302.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@cloudflare/workerd-darwin-arm64@1.20260210.0':
|
'@cloudflare/workerd-darwin-arm64@1.20260302.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@cloudflare/workerd-linux-64@1.20260210.0':
|
'@cloudflare/workerd-linux-64@1.20260302.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@cloudflare/workerd-linux-arm64@1.20260210.0':
|
'@cloudflare/workerd-linux-arm64@1.20260302.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@cloudflare/workerd-windows-64@1.20260210.0':
|
'@cloudflare/workerd-windows-64@1.20260302.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@cloudflare/workers-types@4.20260210.0': {}
|
'@cloudflare/workers-types@4.20260302.0': {}
|
||||||
|
|
||||||
'@computesdk/cmd@0.4.1': {}
|
'@computesdk/cmd@0.4.1': {}
|
||||||
|
|
||||||
|
|
@ -6386,18 +6402,18 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@jridgewell/trace-mapping': 0.3.9
|
'@jridgewell/trace-mapping': 0.3.9
|
||||||
|
|
||||||
'@daytonaio/api-client@0.141.0':
|
'@daytonaio/api-client@0.144.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
axios: 1.13.5
|
axios: 1.13.5
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- debug
|
- debug
|
||||||
|
|
||||||
'@daytonaio/sdk@0.141.0(ws@8.19.0)':
|
'@daytonaio/sdk@0.144.0(ws@8.19.0)':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@aws-sdk/client-s3': 3.975.0
|
'@aws-sdk/client-s3': 3.975.0
|
||||||
'@aws-sdk/lib-storage': 3.975.0(@aws-sdk/client-s3@3.975.0)
|
'@aws-sdk/lib-storage': 3.975.0(@aws-sdk/client-s3@3.975.0)
|
||||||
'@daytonaio/api-client': 0.141.0
|
'@daytonaio/api-client': 0.144.0
|
||||||
'@daytonaio/toolbox-api-client': 0.141.0
|
'@daytonaio/toolbox-api-client': 0.144.0
|
||||||
'@iarna/toml': 2.2.5
|
'@iarna/toml': 2.2.5
|
||||||
'@opentelemetry/api': 1.9.0
|
'@opentelemetry/api': 1.9.0
|
||||||
'@opentelemetry/exporter-trace-otlp-http': 0.207.0(@opentelemetry/api@1.9.0)
|
'@opentelemetry/exporter-trace-otlp-http': 0.207.0(@opentelemetry/api@1.9.0)
|
||||||
|
|
@ -6423,7 +6439,7 @@ snapshots:
|
||||||
- supports-color
|
- supports-color
|
||||||
- ws
|
- ws
|
||||||
|
|
||||||
'@daytonaio/toolbox-api-client@0.141.0':
|
'@daytonaio/toolbox-api-client@0.144.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
axios: 1.13.5
|
axios: 1.13.5
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
|
|
@ -7766,7 +7782,7 @@ snapshots:
|
||||||
|
|
||||||
'@types/better-sqlite3@7.6.13':
|
'@types/better-sqlite3@7.6.13':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 25.2.3
|
'@types/node': 24.10.9
|
||||||
|
|
||||||
'@types/chai@5.2.3':
|
'@types/chai@5.2.3':
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
@ -7781,13 +7797,13 @@ snapshots:
|
||||||
|
|
||||||
'@types/docker-modem@3.0.6':
|
'@types/docker-modem@3.0.6':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 25.2.3
|
'@types/node': 25.3.0
|
||||||
'@types/ssh2': 1.15.5
|
'@types/ssh2': 1.15.5
|
||||||
|
|
||||||
'@types/dockerode@4.0.1':
|
'@types/dockerode@4.0.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/docker-modem': 3.0.6
|
'@types/docker-modem': 3.0.6
|
||||||
'@types/node': 25.2.3
|
'@types/node': 25.3.0
|
||||||
'@types/ssh2': 1.15.5
|
'@types/ssh2': 1.15.5
|
||||||
|
|
||||||
'@types/estree@1.0.8': {}
|
'@types/estree@1.0.8': {}
|
||||||
|
|
@ -7822,13 +7838,13 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
undici-types: 7.16.0
|
undici-types: 7.16.0
|
||||||
|
|
||||||
'@types/node@25.2.3':
|
'@types/node@25.3.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
undici-types: 7.16.0
|
undici-types: 7.18.2
|
||||||
|
|
||||||
'@types/pg@8.16.0':
|
'@types/pg@8.16.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 25.2.3
|
'@types/node': 24.10.9
|
||||||
pg-protocol: 1.11.0
|
pg-protocol: 1.11.0
|
||||||
pg-types: 2.2.0
|
pg-types: 2.2.0
|
||||||
|
|
||||||
|
|
@ -7847,7 +7863,7 @@ snapshots:
|
||||||
|
|
||||||
'@types/sax@1.2.7':
|
'@types/sax@1.2.7':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/node': 25.2.3
|
'@types/node': 24.10.9
|
||||||
|
|
||||||
'@types/semver@7.7.1': {}
|
'@types/semver@7.7.1': {}
|
||||||
|
|
||||||
|
|
@ -7861,7 +7877,7 @@ snapshots:
|
||||||
|
|
||||||
'@vercel/oidc@3.1.0': {}
|
'@vercel/oidc@3.1.0': {}
|
||||||
|
|
||||||
'@vercel/sandbox@1.5.0':
|
'@vercel/sandbox@1.6.0':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vercel/oidc': 3.1.0
|
'@vercel/oidc': 3.1.0
|
||||||
async-retry: 1.3.3
|
async-retry: 1.3.3
|
||||||
|
|
@ -7876,7 +7892,7 @@ snapshots:
|
||||||
- bare-abort-controller
|
- bare-abort-controller
|
||||||
- react-native-b4a
|
- react-native-b4a
|
||||||
|
|
||||||
'@vitejs/plugin-react@4.7.0(vite@5.4.21(@types/node@25.2.3))':
|
'@vitejs/plugin-react@4.7.0(vite@5.4.21(@types/node@25.3.0))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/core': 7.28.6
|
'@babel/core': 7.28.6
|
||||||
'@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.6)
|
'@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.6)
|
||||||
|
|
@ -7884,11 +7900,11 @@ snapshots:
|
||||||
'@rolldown/pluginutils': 1.0.0-beta.27
|
'@rolldown/pluginutils': 1.0.0-beta.27
|
||||||
'@types/babel__core': 7.20.5
|
'@types/babel__core': 7.20.5
|
||||||
react-refresh: 0.17.0
|
react-refresh: 0.17.0
|
||||||
vite: 5.4.21(@types/node@25.2.3)
|
vite: 5.4.21(@types/node@25.3.0)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@vitejs/plugin-react@4.7.0(vite@6.4.1(@types/node@25.2.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2))':
|
'@vitejs/plugin-react@4.7.0(vite@6.4.1(@types/node@25.3.0)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/core': 7.28.6
|
'@babel/core': 7.28.6
|
||||||
'@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.6)
|
'@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.6)
|
||||||
|
|
@ -7896,7 +7912,7 @@ snapshots:
|
||||||
'@rolldown/pluginutils': 1.0.0-beta.27
|
'@rolldown/pluginutils': 1.0.0-beta.27
|
||||||
'@types/babel__core': 7.20.5
|
'@types/babel__core': 7.20.5
|
||||||
react-refresh: 0.17.0
|
react-refresh: 0.17.0
|
||||||
vite: 6.4.1(@types/node@25.2.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
vite: 6.4.1(@types/node@25.3.0)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
|
|
@ -7916,13 +7932,13 @@ snapshots:
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
vite: 5.4.21(@types/node@22.19.7)
|
vite: 5.4.21(@types/node@22.19.7)
|
||||||
|
|
||||||
'@vitest/mocker@3.2.4(vite@5.4.21(@types/node@25.2.3))':
|
'@vitest/mocker@3.2.4(vite@5.4.21(@types/node@25.3.0))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vitest/spy': 3.2.4
|
'@vitest/spy': 3.2.4
|
||||||
estree-walker: 3.0.3
|
estree-walker: 3.0.3
|
||||||
magic-string: 0.30.21
|
magic-string: 0.30.21
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
vite: 5.4.21(@types/node@25.2.3)
|
vite: 5.4.21(@types/node@25.3.0)
|
||||||
|
|
||||||
'@vitest/pretty-format@3.2.4':
|
'@vitest/pretty-format@3.2.4':
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
@ -8009,7 +8025,7 @@ snapshots:
|
||||||
|
|
||||||
assertion-error@2.0.1: {}
|
assertion-error@2.0.1: {}
|
||||||
|
|
||||||
astro@5.16.15(@types/node@25.2.3)(jiti@1.21.7)(rollup@4.56.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2):
|
astro@5.16.15(@types/node@25.3.0)(aws4fetch@1.0.20)(jiti@1.21.7)(rollup@4.56.0)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@astrojs/compiler': 2.13.0
|
'@astrojs/compiler': 2.13.0
|
||||||
'@astrojs/internal-helpers': 0.7.5
|
'@astrojs/internal-helpers': 0.7.5
|
||||||
|
|
@ -8064,10 +8080,10 @@ snapshots:
|
||||||
ultrahtml: 1.6.0
|
ultrahtml: 1.6.0
|
||||||
unifont: 0.7.3
|
unifont: 0.7.3
|
||||||
unist-util-visit: 5.1.0
|
unist-util-visit: 5.1.0
|
||||||
unstorage: 1.17.4
|
unstorage: 1.17.4(aws4fetch@1.0.20)
|
||||||
vfile: 6.0.3
|
vfile: 6.0.3
|
||||||
vite: 6.4.1(@types/node@25.2.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
vite: 6.4.1(@types/node@25.3.0)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
||||||
vitefu: 1.1.1(vite@6.4.1(@types/node@25.2.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2))
|
vitefu: 1.1.1(vite@6.4.1(@types/node@25.3.0)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2))
|
||||||
xxhash-wasm: 1.1.0
|
xxhash-wasm: 1.1.0
|
||||||
yargs-parser: 21.1.1
|
yargs-parser: 21.1.1
|
||||||
yocto-spinner: 0.2.3
|
yocto-spinner: 0.2.3
|
||||||
|
|
@ -8128,6 +8144,8 @@ snapshots:
|
||||||
postcss: 8.5.6
|
postcss: 8.5.6
|
||||||
postcss-value-parser: 4.2.0
|
postcss-value-parser: 4.2.0
|
||||||
|
|
||||||
|
aws4fetch@1.0.20: {}
|
||||||
|
|
||||||
axios@1.13.5:
|
axios@1.13.5:
|
||||||
dependencies:
|
dependencies:
|
||||||
follow-redirects: 1.15.11
|
follow-redirects: 1.15.11
|
||||||
|
|
@ -8360,7 +8378,7 @@ snapshots:
|
||||||
|
|
||||||
compare-versions@6.1.1: {}
|
compare-versions@6.1.1: {}
|
||||||
|
|
||||||
computesdk@2.2.0:
|
computesdk@2.2.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@computesdk/cmd': 0.4.1
|
'@computesdk/cmd': 0.4.1
|
||||||
|
|
||||||
|
|
@ -9065,6 +9083,8 @@ snapshots:
|
||||||
|
|
||||||
hono@4.11.8: {}
|
hono@4.11.8: {}
|
||||||
|
|
||||||
|
hono@4.12.2: {}
|
||||||
|
|
||||||
html-escaper@3.0.3: {}
|
html-escaper@3.0.3: {}
|
||||||
|
|
||||||
html-void-elements@3.0.0: {}
|
html-void-elements@3.0.0: {}
|
||||||
|
|
@ -9582,12 +9602,12 @@ snapshots:
|
||||||
|
|
||||||
mimic-response@3.1.0: {}
|
mimic-response@3.1.0: {}
|
||||||
|
|
||||||
miniflare@4.20260210.0:
|
miniflare@4.20260302.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@cspotcode/source-map-support': 0.8.1
|
'@cspotcode/source-map-support': 0.8.1
|
||||||
sharp: 0.34.5
|
sharp: 0.34.5
|
||||||
undici: 7.18.2
|
undici: 7.18.2
|
||||||
workerd: 1.20260210.0
|
workerd: 1.20260302.0
|
||||||
ws: 8.18.0
|
ws: 8.18.0
|
||||||
youch: 4.1.0-beta.10
|
youch: 4.1.0-beta.10
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
|
|
@ -9969,7 +9989,7 @@ snapshots:
|
||||||
'@protobufjs/path': 1.1.2
|
'@protobufjs/path': 1.1.2
|
||||||
'@protobufjs/pool': 1.1.0
|
'@protobufjs/pool': 1.1.0
|
||||||
'@protobufjs/utf8': 1.1.0
|
'@protobufjs/utf8': 1.1.0
|
||||||
'@types/node': 25.2.3
|
'@types/node': 25.3.0
|
||||||
long: 5.3.2
|
long: 5.3.2
|
||||||
|
|
||||||
proxy-addr@2.0.7:
|
proxy-addr@2.0.7:
|
||||||
|
|
@ -10735,6 +10755,8 @@ snapshots:
|
||||||
|
|
||||||
undici-types@7.16.0: {}
|
undici-types@7.16.0: {}
|
||||||
|
|
||||||
|
undici-types@7.18.2: {}
|
||||||
|
|
||||||
undici@5.29.0:
|
undici@5.29.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@fastify/busboy': 2.1.1
|
'@fastify/busboy': 2.1.1
|
||||||
|
|
@ -10807,7 +10829,7 @@ snapshots:
|
||||||
|
|
||||||
unpipe@1.0.0: {}
|
unpipe@1.0.0: {}
|
||||||
|
|
||||||
unstorage@1.17.4:
|
unstorage@1.17.4(aws4fetch@1.0.20):
|
||||||
dependencies:
|
dependencies:
|
||||||
anymatch: 3.1.3
|
anymatch: 3.1.3
|
||||||
chokidar: 5.0.0
|
chokidar: 5.0.0
|
||||||
|
|
@ -10817,6 +10839,8 @@ snapshots:
|
||||||
node-fetch-native: 1.6.7
|
node-fetch-native: 1.6.7
|
||||||
ofetch: 1.5.1
|
ofetch: 1.5.1
|
||||||
ufo: 1.6.3
|
ufo: 1.6.3
|
||||||
|
optionalDependencies:
|
||||||
|
aws4fetch: 1.0.20
|
||||||
|
|
||||||
update-browserslist-db@1.2.3(browserslist@4.28.1):
|
update-browserslist-db@1.2.3(browserslist@4.28.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
@ -10870,13 +10894,13 @@ snapshots:
|
||||||
- tsx
|
- tsx
|
||||||
- yaml
|
- yaml
|
||||||
|
|
||||||
vite-node@3.2.4(@types/node@25.2.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2):
|
vite-node@3.2.4(@types/node@25.3.0)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2):
|
||||||
dependencies:
|
dependencies:
|
||||||
cac: 6.7.14
|
cac: 6.7.14
|
||||||
debug: 4.4.3
|
debug: 4.4.3
|
||||||
es-module-lexer: 1.7.0
|
es-module-lexer: 1.7.0
|
||||||
pathe: 2.0.3
|
pathe: 2.0.3
|
||||||
vite: 6.4.1(@types/node@25.2.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
vite: 6.4.1(@types/node@25.3.0)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@types/node'
|
- '@types/node'
|
||||||
- jiti
|
- jiti
|
||||||
|
|
@ -10900,13 +10924,13 @@ snapshots:
|
||||||
'@types/node': 22.19.7
|
'@types/node': 22.19.7
|
||||||
fsevents: 2.3.3
|
fsevents: 2.3.3
|
||||||
|
|
||||||
vite@5.4.21(@types/node@25.2.3):
|
vite@5.4.21(@types/node@25.3.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
esbuild: 0.21.5
|
esbuild: 0.21.5
|
||||||
postcss: 8.5.6
|
postcss: 8.5.6
|
||||||
rollup: 4.56.0
|
rollup: 4.56.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@types/node': 25.2.3
|
'@types/node': 25.3.0
|
||||||
fsevents: 2.3.3
|
fsevents: 2.3.3
|
||||||
|
|
||||||
vite@6.4.1(@types/node@22.19.7)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2):
|
vite@6.4.1(@types/node@22.19.7)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2):
|
||||||
|
|
@ -10924,7 +10948,7 @@ snapshots:
|
||||||
tsx: 4.21.0
|
tsx: 4.21.0
|
||||||
yaml: 2.8.2
|
yaml: 2.8.2
|
||||||
|
|
||||||
vite@6.4.1(@types/node@25.2.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2):
|
vite@6.4.1(@types/node@25.3.0)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2):
|
||||||
dependencies:
|
dependencies:
|
||||||
esbuild: 0.25.12
|
esbuild: 0.25.12
|
||||||
fdir: 6.5.0(picomatch@4.0.3)
|
fdir: 6.5.0(picomatch@4.0.3)
|
||||||
|
|
@ -10933,15 +10957,15 @@ snapshots:
|
||||||
rollup: 4.56.0
|
rollup: 4.56.0
|
||||||
tinyglobby: 0.2.15
|
tinyglobby: 0.2.15
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@types/node': 25.2.3
|
'@types/node': 25.3.0
|
||||||
fsevents: 2.3.3
|
fsevents: 2.3.3
|
||||||
jiti: 1.21.7
|
jiti: 1.21.7
|
||||||
tsx: 4.21.0
|
tsx: 4.21.0
|
||||||
yaml: 2.8.2
|
yaml: 2.8.2
|
||||||
|
|
||||||
vitefu@1.1.1(vite@6.4.1(@types/node@25.2.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)):
|
vitefu@1.1.1(vite@6.4.1(@types/node@25.3.0)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)):
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
vite: 6.4.1(@types/node@25.2.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
vite: 6.4.1(@types/node@25.3.0)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
||||||
|
|
||||||
vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.19.7)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2):
|
vitest@3.2.4(@types/debug@4.1.12)(@types/node@22.19.7)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2):
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
@ -10985,11 +11009,11 @@ snapshots:
|
||||||
- tsx
|
- tsx
|
||||||
- yaml
|
- yaml
|
||||||
|
|
||||||
vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2):
|
vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.3.0)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/chai': 5.2.3
|
'@types/chai': 5.2.3
|
||||||
'@vitest/expect': 3.2.4
|
'@vitest/expect': 3.2.4
|
||||||
'@vitest/mocker': 3.2.4(vite@5.4.21(@types/node@25.2.3))
|
'@vitest/mocker': 3.2.4(vite@5.4.21(@types/node@25.3.0))
|
||||||
'@vitest/pretty-format': 3.2.4
|
'@vitest/pretty-format': 3.2.4
|
||||||
'@vitest/runner': 3.2.4
|
'@vitest/runner': 3.2.4
|
||||||
'@vitest/snapshot': 3.2.4
|
'@vitest/snapshot': 3.2.4
|
||||||
|
|
@ -11007,12 +11031,12 @@ snapshots:
|
||||||
tinyglobby: 0.2.15
|
tinyglobby: 0.2.15
|
||||||
tinypool: 1.1.1
|
tinypool: 1.1.1
|
||||||
tinyrainbow: 2.0.0
|
tinyrainbow: 2.0.0
|
||||||
vite: 5.4.21(@types/node@25.2.3)
|
vite: 5.4.21(@types/node@25.3.0)
|
||||||
vite-node: 3.2.4(@types/node@25.2.3)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
vite-node: 3.2.4(@types/node@25.3.0)(jiti@1.21.7)(tsx@4.21.0)(yaml@2.8.2)
|
||||||
why-is-node-running: 2.3.0
|
why-is-node-running: 2.3.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@types/debug': 4.1.12
|
'@types/debug': 4.1.12
|
||||||
'@types/node': 25.2.3
|
'@types/node': 25.3.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- jiti
|
- jiti
|
||||||
- less
|
- less
|
||||||
|
|
@ -11048,26 +11072,26 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
string-width: 7.2.0
|
string-width: 7.2.0
|
||||||
|
|
||||||
workerd@1.20260210.0:
|
workerd@1.20260302.0:
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@cloudflare/workerd-darwin-64': 1.20260210.0
|
'@cloudflare/workerd-darwin-64': 1.20260302.0
|
||||||
'@cloudflare/workerd-darwin-arm64': 1.20260210.0
|
'@cloudflare/workerd-darwin-arm64': 1.20260302.0
|
||||||
'@cloudflare/workerd-linux-64': 1.20260210.0
|
'@cloudflare/workerd-linux-64': 1.20260302.0
|
||||||
'@cloudflare/workerd-linux-arm64': 1.20260210.0
|
'@cloudflare/workerd-linux-arm64': 1.20260302.0
|
||||||
'@cloudflare/workerd-windows-64': 1.20260210.0
|
'@cloudflare/workerd-windows-64': 1.20260302.0
|
||||||
|
|
||||||
wrangler@4.64.0(@cloudflare/workers-types@4.20260210.0):
|
wrangler@4.67.1(@cloudflare/workers-types@4.20260302.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@cloudflare/kv-asset-handler': 0.4.2
|
'@cloudflare/kv-asset-handler': 0.4.2
|
||||||
'@cloudflare/unenv-preset': 2.12.1(unenv@2.0.0-rc.24)(workerd@1.20260210.0)
|
'@cloudflare/unenv-preset': 2.14.0(unenv@2.0.0-rc.24)(workerd@1.20260302.0)
|
||||||
blake3-wasm: 2.1.5
|
blake3-wasm: 2.1.5
|
||||||
esbuild: 0.27.3
|
esbuild: 0.27.3
|
||||||
miniflare: 4.20260210.0
|
miniflare: 4.20260302.0
|
||||||
path-to-regexp: 6.3.0
|
path-to-regexp: 6.3.0
|
||||||
unenv: 2.0.0-rc.24
|
unenv: 2.0.0-rc.24
|
||||||
workerd: 1.20260210.0
|
workerd: 1.20260302.0
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@cloudflare/workers-types': 4.20260210.0
|
'@cloudflare/workers-types': 4.20260302.0
|
||||||
fsevents: 2.3.3
|
fsevents: 2.3.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- bufferutil
|
- bufferutil
|
||||||
|
|
|
||||||
|
|
@ -48,22 +48,36 @@ import {
|
||||||
|
|
||||||
const API_PREFIX = "/v1";
|
const API_PREFIX = "/v1";
|
||||||
const FS_PATH = `${API_PREFIX}/fs`;
|
const FS_PATH = `${API_PREFIX}/fs`;
|
||||||
|
const DEFAULT_BASE_URL = "http://sandbox-agent";
|
||||||
|
|
||||||
const DEFAULT_REPLAY_MAX_EVENTS = 50;
|
const DEFAULT_REPLAY_MAX_EVENTS = 50;
|
||||||
const DEFAULT_REPLAY_MAX_CHARS = 12_000;
|
const DEFAULT_REPLAY_MAX_CHARS = 12_000;
|
||||||
const EVENT_INDEX_SCAN_EVENTS_LIMIT = 500;
|
const EVENT_INDEX_SCAN_EVENTS_LIMIT = 500;
|
||||||
|
|
||||||
export interface SandboxAgentConnectOptions {
|
interface SandboxAgentConnectCommonOptions {
|
||||||
baseUrl: string;
|
headers?: HeadersInit;
|
||||||
|
persist?: SessionPersistDriver;
|
||||||
|
replayMaxEvents?: number;
|
||||||
|
replayMaxChars?: number;
|
||||||
token?: string;
|
token?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type SandboxAgentConnectOptions =
|
||||||
|
| (SandboxAgentConnectCommonOptions & {
|
||||||
|
baseUrl: string;
|
||||||
|
fetch?: typeof fetch;
|
||||||
|
})
|
||||||
|
| (SandboxAgentConnectCommonOptions & {
|
||||||
|
fetch: typeof fetch;
|
||||||
|
baseUrl?: string;
|
||||||
|
});
|
||||||
|
|
||||||
|
export interface SandboxAgentStartOptions {
|
||||||
fetch?: typeof fetch;
|
fetch?: typeof fetch;
|
||||||
headers?: HeadersInit;
|
headers?: HeadersInit;
|
||||||
persist?: SessionPersistDriver;
|
persist?: SessionPersistDriver;
|
||||||
replayMaxEvents?: number;
|
replayMaxEvents?: number;
|
||||||
replayMaxChars?: number;
|
replayMaxChars?: number;
|
||||||
}
|
|
||||||
|
|
||||||
export interface SandboxAgentStartOptions extends Omit<SandboxAgentConnectOptions, "baseUrl" | "token"> {
|
|
||||||
spawn?: SandboxAgentSpawnOptions | boolean;
|
spawn?: SandboxAgentSpawnOptions | boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -443,18 +457,22 @@ export class SandboxAgent {
|
||||||
private readonly seedSessionEventIndexBySession = new Map<string, Promise<void>>();
|
private readonly seedSessionEventIndexBySession = new Map<string, Promise<void>>();
|
||||||
|
|
||||||
constructor(options: SandboxAgentConnectOptions) {
|
constructor(options: SandboxAgentConnectOptions) {
|
||||||
this.baseUrl = options.baseUrl.replace(/\/$/, "");
|
const baseUrl = options.baseUrl?.trim();
|
||||||
|
if (!baseUrl && !options.fetch) {
|
||||||
|
throw new Error("baseUrl is required unless fetch is provided.");
|
||||||
|
}
|
||||||
|
this.baseUrl = (baseUrl || DEFAULT_BASE_URL).replace(/\/$/, "");
|
||||||
this.token = options.token;
|
this.token = options.token;
|
||||||
this.fetcher = options.fetch ?? globalThis.fetch.bind(globalThis);
|
const resolvedFetch = options.fetch ?? globalThis.fetch?.bind(globalThis);
|
||||||
|
if (!resolvedFetch) {
|
||||||
|
throw new Error("Fetch API is not available; provide a fetch implementation.");
|
||||||
|
}
|
||||||
|
this.fetcher = resolvedFetch;
|
||||||
this.defaultHeaders = options.headers;
|
this.defaultHeaders = options.headers;
|
||||||
this.persist = options.persist ?? new InMemorySessionPersistDriver();
|
this.persist = options.persist ?? new InMemorySessionPersistDriver();
|
||||||
|
|
||||||
this.replayMaxEvents = normalizePositiveInt(options.replayMaxEvents, DEFAULT_REPLAY_MAX_EVENTS);
|
this.replayMaxEvents = normalizePositiveInt(options.replayMaxEvents, DEFAULT_REPLAY_MAX_EVENTS);
|
||||||
this.replayMaxChars = normalizePositiveInt(options.replayMaxChars, DEFAULT_REPLAY_MAX_CHARS);
|
this.replayMaxChars = normalizePositiveInt(options.replayMaxChars, DEFAULT_REPLAY_MAX_CHARS);
|
||||||
|
|
||||||
if (!this.fetcher) {
|
|
||||||
throw new Error("Fetch API is not available; provide a fetch implementation.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static async connect(options: SandboxAgentConnectOptions): Promise<SandboxAgent> {
|
static async connect(options: SandboxAgentConnectOptions): Promise<SandboxAgent> {
|
||||||
|
|
@ -468,7 +486,8 @@ export class SandboxAgent {
|
||||||
}
|
}
|
||||||
|
|
||||||
const { spawnSandboxAgent } = await import("./spawn.js");
|
const { spawnSandboxAgent } = await import("./spawn.js");
|
||||||
const handle = await spawnSandboxAgent(spawnOptions, options.fetch ?? globalThis.fetch);
|
const resolvedFetch = options.fetch ?? globalThis.fetch?.bind(globalThis);
|
||||||
|
const handle = await spawnSandboxAgent(spawnOptions, resolvedFetch);
|
||||||
|
|
||||||
const client = new SandboxAgent({
|
const client = new SandboxAgent({
|
||||||
baseUrl: handle.baseUrl,
|
baseUrl: handle.baseUrl,
|
||||||
|
|
|
||||||
|
|
@ -137,6 +137,45 @@ describe("Integration: TypeScript SDK flat session API", () => {
|
||||||
await sdk.dispose();
|
await sdk.dispose();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("uses custom fetch for both HTTP helpers and ACP session traffic", async () => {
|
||||||
|
const defaultFetch = globalThis.fetch;
|
||||||
|
if (!defaultFetch) {
|
||||||
|
throw new Error("Global fetch is not available in this runtime.");
|
||||||
|
}
|
||||||
|
|
||||||
|
const seenPaths: string[] = [];
|
||||||
|
const customFetch: typeof fetch = async (input, init) => {
|
||||||
|
const outgoing = new Request(input, init);
|
||||||
|
const parsed = new URL(outgoing.url);
|
||||||
|
seenPaths.push(parsed.pathname);
|
||||||
|
|
||||||
|
const forwardedUrl = new URL(`${parsed.pathname}${parsed.search}`, baseUrl);
|
||||||
|
const forwarded = new Request(forwardedUrl.toString(), outgoing);
|
||||||
|
return defaultFetch(forwarded);
|
||||||
|
};
|
||||||
|
|
||||||
|
const sdk = await SandboxAgent.connect({
|
||||||
|
token,
|
||||||
|
fetch: customFetch,
|
||||||
|
});
|
||||||
|
|
||||||
|
await sdk.getHealth();
|
||||||
|
const session = await sdk.createSession({ agent: "mock" });
|
||||||
|
const prompt = await session.prompt([{ type: "text", text: "custom fetch integration test" }]);
|
||||||
|
expect(prompt.stopReason).toBe("end_turn");
|
||||||
|
|
||||||
|
expect(seenPaths).toContain("/v1/health");
|
||||||
|
expect(seenPaths.some((path) => path.startsWith("/v1/acp/"))).toBe(true);
|
||||||
|
|
||||||
|
await sdk.dispose();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("requires baseUrl when fetch is not provided", async () => {
|
||||||
|
await expect(SandboxAgent.connect({ token } as any)).rejects.toThrow(
|
||||||
|
"baseUrl is required unless fetch is provided.",
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
it("restores a session on stale connection by recreating and replaying history on first prompt", async () => {
|
it("restores a session on stale connection by recreating and replaying history on first prompt", async () => {
|
||||||
const persist = new InMemorySessionPersistDriver({
|
const persist = new InMemorySessionPersistDriver({
|
||||||
maxEventsPerSession: 200,
|
maxEventsPerSession: 200,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue