Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 1x 1x 1x 1x | import { makeStreamTransport, Logger } from '@metamask/logger';
import type { VatId } from '@metamask/ocap-kernel';
import { VatSupervisor } from '@metamask/ocap-kernel';
import { makePlatform } from '@ocap/kernel-platforms/nodejs';
import { fetchBlob } from './fetch-blob.ts';
import { makeStreams } from './streams.ts';
/**
* Create a VatSupervisor for a vat running in a Node.js worker.
*
* @param vatId - The ID of the vat to create a supervisor for.
* @param logTag - The tag to use for the logger.
* @param platformOptions - Options to pass to the makePlatform function.
* @returns A pair of the kernel-connected logger and the supervisor.
*/
export async function makeNodeJsVatSupervisor(
vatId: VatId,
logTag: string,
platformOptions: Record<string, unknown> = {},
): Promise<{ logger: Logger; supervisor: VatSupervisor }> {
const { kernelStream, loggerStream } = await makeStreams();
const logger = new Logger({
tags: [logTag, vatId],
transports: [makeStreamTransport(loggerStream)],
});
const supervisor = new VatSupervisor({
id: vatId,
kernelStream,
logger,
makePlatform,
platformOptions,
fetchBlob,
vatPowers: { logger },
});
return { logger, supervisor };
}
|