import { SandboxAgent } from "sandbox-agent";
import { detectAgent, buildInspectorUrl } from "@sandbox-agent/example-shared";
import { startDockerSandbox } from "@sandbox-agent/example-shared/docker";

console.log("Starting sandbox...");
const { baseUrl, cleanup } = await startDockerSandbox({
  port: 3001,
});

console.log("Configuring skill source...");
const client = await SandboxAgent.connect({ baseUrl });
await client.setSkillsConfig(
  { directory: "/", skillName: "rivet-dev-skills" },
  { sources: [{ type: "github", source: "rivet-dev/skills", skills: ["sandbox-agent"] }] },
);

console.log("Creating session...");
const session = await client.createSession({ agent: detectAgent(), sessionInit: { cwd: "/root", mcpServers: [] } });
const sessionId = session.id;
console.log(`  UI: ${buildInspectorUrl({ baseUrl, sessionId })}`);
console.log('  Try: "How do I start sandbox-agent?"');
console.log("  Press Ctrl+C to stop.");

const keepAlive = setInterval(() => {}, 60_000);
process.on("SIGINT", () => { clearInterval(keepAlive); cleanup().then(() => process.exit(0)); });
