diff --git a/src/agents/sandbox/registry.ts b/src/agents/sandbox/registry.ts index 7b2998d1d04..1ccac9a9884 100644 --- a/src/agents/sandbox/registry.ts +++ b/src/agents/sandbox/registry.ts @@ -45,8 +45,8 @@ type RegistryEntry = { containerName: string; }; -type RegistryFile = { - entries: T[]; +type RegistryFile = { + entries: RegistryEntry[]; }; // Schemas are shared between the per-entry files (live writes) and the @@ -101,7 +101,7 @@ async function readEntryFile( return parsed ?? null; } -async function writeEntryFile(dir: string, entry: T): Promise { +async function writeEntryFile(dir: string, entry: RegistryEntry): Promise { await fs.mkdir(dir, { recursive: true }); await writeJsonAtomic(entryFilePath(dir, entry.containerName), entry, { trailingNewline: true }); } @@ -148,10 +148,7 @@ async function readAllEntries(dir: string): Promise( - oldPath: string, - newDir: string, -): Promise { +async function migrateMonolithicIfNeeded(oldPath: string, newDir: string): Promise { let raw: string; try { raw = await fs.readFile(oldPath, "utf-8"); @@ -160,7 +157,7 @@ async function migrateMonolithicIfNeeded( // fresh install). Nothing to do. return; } - const parsed = safeParseJsonWithSchema(RegistryFileSchema, raw) as RegistryFile | null; + const parsed = safeParseJsonWithSchema(RegistryFileSchema, raw) as RegistryFile | null; if (!parsed || parsed.entries.length === 0) { // Corrupt or empty — drop it (and its stale lock) so we don't re-attempt // migration every read. @@ -185,10 +182,7 @@ async function migrateMonolithicIfNeeded( // ── Public API: Container Registry ───────────────────────────────────── export async function readRegistry(): Promise { - await migrateMonolithicIfNeeded( - SANDBOX_REGISTRY_PATH, - SANDBOX_CONTAINERS_DIR, - ); + await migrateMonolithicIfNeeded(SANDBOX_REGISTRY_PATH, SANDBOX_CONTAINERS_DIR); const entries = await readAllEntries(SANDBOX_CONTAINERS_DIR); return { entries: entries.map(normalizeSandboxRegistryEntry) }; } @@ -202,19 +196,13 @@ export async function readRegistry(): Promise { export async function readRegistryEntry( containerName: string, ): Promise { - await migrateMonolithicIfNeeded( - SANDBOX_REGISTRY_PATH, - SANDBOX_CONTAINERS_DIR, - ); + await migrateMonolithicIfNeeded(SANDBOX_REGISTRY_PATH, SANDBOX_CONTAINERS_DIR); const entry = await readEntryFile(SANDBOX_CONTAINERS_DIR, containerName); return entry ? normalizeSandboxRegistryEntry(entry) : null; } export async function updateRegistry(entry: SandboxRegistryEntry): Promise { - await migrateMonolithicIfNeeded( - SANDBOX_REGISTRY_PATH, - SANDBOX_CONTAINERS_DIR, - ); + await migrateMonolithicIfNeeded(SANDBOX_REGISTRY_PATH, SANDBOX_CONTAINERS_DIR); const existing = await readEntryFile( SANDBOX_CONTAINERS_DIR, entry.containerName, @@ -238,18 +226,12 @@ export async function removeRegistryEntry(containerName: string): Promise // ── Public API: Browser Registry ─────────────────────────────────────── export async function readBrowserRegistry(): Promise { - await migrateMonolithicIfNeeded( - SANDBOX_BROWSER_REGISTRY_PATH, - SANDBOX_BROWSERS_DIR, - ); + await migrateMonolithicIfNeeded(SANDBOX_BROWSER_REGISTRY_PATH, SANDBOX_BROWSERS_DIR); return { entries: await readAllEntries(SANDBOX_BROWSERS_DIR) }; } export async function updateBrowserRegistry(entry: SandboxBrowserRegistryEntry): Promise { - await migrateMonolithicIfNeeded( - SANDBOX_BROWSER_REGISTRY_PATH, - SANDBOX_BROWSERS_DIR, - ); + await migrateMonolithicIfNeeded(SANDBOX_BROWSER_REGISTRY_PATH, SANDBOX_BROWSERS_DIR); const existing = await readEntryFile( SANDBOX_BROWSERS_DIR, entry.containerName,