sandbox-agent/examples/persist-memory/src/index.ts
Nathan Flurry 110e969f98 Add full Docker image defaults, fix actor deadlocks, and improve dev experience
- Add Dockerfile.full and --all flag to install-agent CLI for pre-built images
- Centralize Docker image constant (FULL_IMAGE) pinned to 0.3.1-full
- Remove examples/shared/Dockerfile{,.dev} and daytona snapshot example
- Expand Docker docs with full runnable Dockerfile
- Fix self-deadlock in createWorkbenchSession (fire-and-forget provisioning)
- Audit and convert 12 task actions from wait:true to wait:false
- Add bun --hot for dev backend hot reload
- Remove --force from pnpm install in dev Dockerfile for faster startup
- Add env_file support to compose.dev.yaml for automatic credential loading
- Add mock frontend compose config and dev panel
- Update CLAUDE.md with wait:true policy and dev environment setup

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 18:31:55 -07:00

33 lines
1.1 KiB
TypeScript

import { SandboxAgent, InMemorySessionPersistDriver } from "sandbox-agent";
import { startDockerSandbox } from "@sandbox-agent/example-shared/docker";
import { detectAgent } from "@sandbox-agent/example-shared";
const persist = new InMemorySessionPersistDriver();
console.log("Starting sandbox...");
const sandbox = await startDockerSandbox({
port: 3000,
});
const sdk = await SandboxAgent.connect({ baseUrl: sandbox.baseUrl, persist });
const session = await sdk.createSession({ agent: detectAgent() });
console.log(`Created session ${session.id}`);
await session.prompt([{ type: "text", text: "Say hello in one sentence." }]);
console.log("Prompt complete.");
const sessions = await sdk.listSessions();
console.log(`\nSessions (${sessions.items.length}):`);
for (const s of sessions.items) {
console.log(` ${s.id} agent=${s.agent}`);
}
const events = await sdk.getEvents({ sessionId: session.id });
console.log(`\nSession history (${events.items.length} events):`);
for (const e of events.items) {
console.log(` [${e.eventIndex}] ${e.sender}: ${JSON.stringify(e.payload).slice(0, 120)}`);
}
await sdk.dispose();
await sandbox.cleanup();