import { join } from "node:path"; import type { BridgeConnectionConfig, KernelToHostMessage, } from "../../bridge/protocol.ts"; import { SubprocessKernel, type SubprocessSpawn, } from "../shared/subprocess-kernel.ts"; export interface RubyKernelStartOptions { readonly command?: string; readonly connection: BridgeConnectionConfig; readonly cwd: string; readonly onMessage?: (message: KernelToHostMessage) => void; readonly sessionId: string; readonly spawn?: SubprocessSpawn; } export class RubyKernel extends SubprocessKernel { static start(options: RubyKernelStartOptions): RubyKernel { return new RubyKernel({ command: options.command ?? "ruby", args: [join(import.meta.dirname, "runner.rb")], cwd: options.cwd, sessionId: options.sessionId, connection: options.connection, spawn: options.spawn, onMessage: options.onMessage, }); } }