A decentralized music tracking and discovery platform built on AT Protocol 🎵 rocksky.app
spotify atproto lastfm musicbrainz scrobbling listenbrainz

chore: create sandbox from snapshot and check tools

Pass process.env.SNAPSHOT_ID into Sandbox.create as a snapshot source.
Replace the installer curl with 'which' checks for openclaw and claude.
Re-enable sandbox.stop() and remove the old install log.

+20 -6
+20 -6
.sandbox/vercel/index.ts
··· 2 2 import consola from "consola"; 3 3 import chalk from "chalk"; 4 4 5 - const sandbox = await Sandbox.create(); 5 + const sandbox = await Sandbox.create( 6 + process.env.SNAPSHOT_ID 7 + ? { 8 + source: { 9 + type: "snapshot", 10 + snapshotId: process.env.SNAPSHOT_ID, 11 + }, 12 + } 13 + : undefined, 14 + ); 15 + 6 16 consola.info( 7 17 "Vercel Sandbox created with ID:", 8 18 chalk.greenBright(sandbox.sandboxId), ··· 25 35 26 36 consola.info("SSH keys uploaded to sandbox."); 27 37 28 - consola.info("Installing openclaw..."); 38 + await sandbox.runCommand({ 39 + cmd: "which", 40 + args: ["openclaw"], 41 + stdout: process.stdout, 42 + stderr: process.stderr, 43 + }); 29 44 30 45 await sandbox.runCommand({ 31 - cmd: "sh", 32 - args: ["-c", "curl -fsSL https://openclaw.ai/install.sh | bash || true"], 46 + cmd: "which", 47 + args: ["claude"], 33 48 stdout: process.stdout, 34 49 stderr: process.stderr, 35 50 }); ··· 88 103 }); 89 104 90 105 try { 91 - // await sandbox.snapshot(); 92 - // await sandbox.stop(); 106 + await sandbox.stop(); 93 107 } catch (e) { 94 108 consola.error("Error stopping Vercel Sandbox:", e); 95 109 }