import type { HostToKernelMessage, KernelToHostMessage, } from "../../bridge/protocol.ts"; import type { JavaScriptKernelMode } from "./kernel-contract.ts"; import { spawnNodeWorker } from "./worker-host.ts"; export interface WorkerLike { readonly mode: JavaScriptKernelMode; onError: (handler: (error: Error) => void) => () => void; onMessage: (handler: (message: KernelToHostMessage) => void) => () => void; postMessage: (message: HostToKernelMessage) => void; terminate: () => Promise; } export function createInlineWorker( cwd: string, parallelPoolWidth: number, hardenedCells = false ): WorkerLike { return spawnNodeWorker( new URL("./inline-worker-entry.js", import.meta.url), cwd, parallelPoolWidth, "inline", hardenedCells ); }