mirror of
https://github.com/paperclipai/paperclip.git
synced 2026-11-02 08:28:48 +01:00
Move native sandbox snapshot captures off the controller callback queue while preserving the existing capture and restore contract. Keep legacy adapters inline, bound captures to two workers, and verify cleanup and reordered worker completion. Validation: 461 affected cases, full typecheck/build, exact-head CI/E2E/Superagent and Apex 5/5. The full local canonical suite remains running; no full local pass or under-30-second staging response is claimed. Co-Authored-By: Paperclip <noreply@paperclip.ing>
30 lines
1.1 KiB
TypeScript
30 lines
1.1 KiB
TypeScript
import { parentPort, workerData } from "node:worker_threads";
|
|
import { captureDirectorySnapshot, serializeDirectorySnapshot } from "./workspace-restore-merge.js";
|
|
import type { SnapshotThreadRequest, SnapshotThreadResponse } from "./workspace-snapshot-thread.js";
|
|
|
|
if (!parentPort) throw new Error("Workspace snapshot worker requires a parent");
|
|
const port = parentPort;
|
|
const request = workerData as SnapshotThreadRequest;
|
|
|
|
async function run() {
|
|
let response: SnapshotThreadResponse;
|
|
try {
|
|
const snapshot = await captureDirectorySnapshot(request.rootDir, {
|
|
exclude: request.exclude,
|
|
ignoredPaths: request.ignoredPaths,
|
|
diskBacked: true,
|
|
});
|
|
response = { snapshot: serializeDirectorySnapshot(snapshot) };
|
|
} catch (value) {
|
|
const error = value as NodeJS.ErrnoException;
|
|
response = { error: {
|
|
name: error.name ?? "Error", message: error.message ?? String(value), stack: error.stack,
|
|
code: error.code, errno: error.errno, syscall: error.syscall, path: error.path,
|
|
} };
|
|
}
|
|
port.postMessage(response);
|
|
port.close();
|
|
}
|
|
|
|
void run();
|