import type { IPlan } from "../plan.ts"; import * as Effect from "effect/Effect"; import * as Context from "effect/Context"; 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.Tag("CLIService")() {}