the universal sandbox runtime for agents and humans. pocketenv.io
sandbox openclaw agent claude-code vercel-sandbox deno-sandbox cloudflare-sandbox atproto sprites daytona
7
fork

Configure Feed

Select the types of activity you want to include in your feed.

Normalize sandbox IDs to lowercase

Lowercase sandbox IDs when creating/looking up sandboxes and when
saving normalized IDs to the database to ensure consistent handling.
Introduce a local sandboxId variable in ports endpoints and return an
empty JSON body for port delete responses.

+12 -9
+12 -9
apps/cf-sandbox/src/index.ts
··· 250 250 251 251 try { 252 252 sandbox = await createSandbox("cloudflare", { 253 - id: record.sandboxId ?? c.req.param("sandboxId"), 253 + id: (record.sandboxId ?? c.req.param("sandboxId")).toLowerCase(), 254 254 memory: "4GiB", 255 255 }); 256 256 ··· 360 360 .set({ 361 361 status: "RUNNING", 362 362 startedAt: new Date(), 363 - sandboxId: normalizedId ?? record.sandboxId, 363 + sandboxId: (normalizedId ?? record.sandboxId)?.toLowerCase(), 364 364 }) 365 365 .where(eq(sandboxes.id, c.req.param("sandboxId"))) 366 366 .execute(); ··· 390 390 let sandbox: BaseSandbox | null = null; 391 391 392 392 sandbox = await createSandbox("cloudflare", { 393 - id: record.sandboxId ?? c.req.param("sandboxId"), 393 + id: (record.sandboxId ?? c.req.param("sandboxId")).toLowerCase(), 394 394 }); 395 395 396 396 if (!sandbox) { ··· 440 440 let sandbox: BaseSandbox | null = null; 441 441 442 442 sandbox = await createSandbox("cloudflare", { 443 - id: record.sandboxId ?? c.req.param("sandboxId"), 443 + id: (record.sandboxId ?? c.req.param("sandboxId")).toLowerCase(), 444 444 }); 445 445 446 446 const { command } = await c.req.json(); ··· 471 471 let sandbox: BaseSandbox | null = null; 472 472 473 473 sandbox = await createSandbox("cloudflare", { 474 - id: record.sandboxId ?? c.req.param("sandboxId"), 474 + id: (record.sandboxId ?? c.req.param("sandboxId")).toLowerCase(), 475 475 }); 476 476 477 477 await sandbox.delete(); ··· 517 517 518 518 const sandbox = getSandbox( 519 519 c.env.Sandbox, 520 - record.sandboxId ?? c.req.param("sandboxId"), 520 + (record.sandboxId ?? c.req.param("sandboxId")).toLowerCase(), 521 521 ); 522 522 const sessionId = c.req.query("session"); 523 523 524 524 const cfsandbox = await createSandbox("cloudflare", { 525 - id: record.sandboxId ?? c.req.param("sandboxId"), 525 + id: (record.sandboxId ?? c.req.param("sandboxId")).toLowerCase(), 526 526 }); 527 527 528 528 const params = await Promise.all([ ··· 703 703 try { 704 704 let sandbox: BaseSandbox | null = null; 705 705 706 + const sandboxId = (record.sandboxId ?? c.req.param("sandboxId")).toLowerCase(); 706 707 sandbox = await createSandbox("cloudflare", { 707 - id: record.sandboxId ?? c.req.param("sandboxId"), 708 + id: sandboxId, 708 709 }); 709 710 710 711 const { port } = await c.req.json<{ port: number }>(); ··· 744 745 try { 745 746 let sandbox: BaseSandbox | null = null; 746 747 748 + const sandboxId = (record.sandboxId ?? c.req.param("sandboxId")).toLowerCase(); 747 749 sandbox = await createSandbox("cloudflare", { 748 - id: record.sandboxId ?? c.req.param("sandboxId"), 750 + id: sandboxId, 749 751 }); 750 752 751 753 const port = parseInt(c.req.query("port") || "0", 10); ··· 755 757 } 756 758 757 759 await sandbox.unexpose(port); 760 + c.json({}); 758 761 } catch (err) { 759 762 const errorMessage = err instanceof Error ? err.message : "Unknown error"; 760 763 consola.error(