import type { CustomBlockInitErrorCode } from "../../bridge/messages/init.js" import type { ReadyMessage } from "../../bridge/messages/ready.js" export type ReadyInitFailure = { code: CustomBlockInitErrorCode message?: string } export function getReadyInitFailure( message: ReadyMessage, minBridgeProtocolVersion: number, ): ReadyInitFailure | undefined { if (!isValidBridgeProtocolVersion(message.bridgeProtocolVersion)) { return { code: "invalid_protocol_version", message: `Sandbox reported invalid bridge protocol version ${message.bridgeProtocolVersion}.`, } } if (message.bridgeProtocolVersion < minBridgeProtocolVersion) { return { code: "unsupported_protocol_version", message: `Sandbox bridge protocol version ${message.bridgeProtocolVersion} is below the host minimum ${minBridgeProtocolVersion}.`, } } if (message.status === "error") { return { code: message.error.code, message: message.error.message, } } return undefined } function isValidBridgeProtocolVersion(version: number): boolean { return Number.isFinite(version) && Number.isInteger(version) && version >= 1 }