import type { WorktreeApi } from "@opencode/client/effect/api" import type { Effect } from "effect" import type { WorktreeCreateInput, WorktreeEntry, WorktreeRemoveInput, WorktreeResult } from "../worktree.js" import type { Transform } from "./registration.js" export interface WorktreeDefinition { readonly id: string readonly create: (input: WorktreeCreateInput) => Effect.Effect readonly remove: (input: WorktreeRemoveInput) => Effect.Effect readonly list: (sourceDirectory: string) => Effect.Effect } export interface WorktreeEditor { /** Registers an implementation and selects it as the default. Later active registrations win. */ add(definition: WorktreeDefinition): void } export interface WorktreeDomain extends WorktreeApi { readonly transform: Transform readonly reload: () => Effect.Effect }