import * as Context from "effect/Context"; import * as Effect from "effect/Effect"; import { FileSystem } from "effect/FileSystem"; import type { Path } from "effect/Path"; import type { Stdio } from "effect/Stdio"; import type { Terminal } from "effect/Terminal"; import type { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner"; import type { BaseExecutionContext } from "../ExecutionContext.ts"; export type ProcessServices = | ChildProcessSpawner | FileSystem | Path | Stdio | Terminal; export interface ProcessContext extends BaseExecutionContext { run: ( effect: Effect.Effect, ) => Effect.Effect; } /** * Long-running host loop registration (`run`). Provided by `Platform` when the * execution context implements {@link ProcessContext}. */ export class ServerHost extends Context.Service< ServerHost, Pick >()("Alchemy::ServerHost") {}