import * as Context from "effect/Context"; import * as Effect from "effect/Effect"; import type { Plan } from "../Plan.ts"; import type { ApplyEvent } from "./Event.ts"; export interface PlanStatusSession { emit: (event: ApplyEvent) => Effect.Effect; done: () => Effect.Effect; } export interface ScopedPlanStatusSession extends PlanStatusSession { note: (note: string) => Effect.Effect; } export interface CLIService { approvePlan:

(plan: P) => Effect.Effect; displayPlan:

(plan: P) => Effect.Effect; startApplySession:

( plan: P, ) => Effect.Effect; } export class Cli extends Context.Service()("CLI") {}