/** * Remove-from-pack operation — applies a precomputed manifest-remove delta to a pack manifest. * * Validates manifest precondition (stale check) before writing. * * @experimental This API is unstable and may change without notice. */ import * as FileSystem from "effect/FileSystem"; import * as Path from "effect/Path"; import type { Handle } from "../../extensions/index.js"; import type { OperationHandler } from "../../plan/apply-plan.js"; import type { Operation } from "../../plan/plan.js"; import { WorkspaceMutations } from "../../workspace/service-interface.js"; /** * Args for the remove-from-pack operation. */ export interface RemoveFromPackOperationArgs { /** Pack name (without owner). */ readonly packName: string; /** Pack owner (e.g., "@myorg"). */ readonly packOwner: Handle; /** Precomputed manifest delta: extension names to remove. */ readonly removals: ReadonlyArray; /** Manifest content hash at plan time for stale-check. */ readonly manifestHash: string; } /** * Remove extensions from a pack manifest. * * @experimental This API is unstable and may change without notice. */ export type RemoveFromPackOperation = Operation<"remove-from-pack", RemoveFromPackOperationArgs>; /** * Remove-from-pack operation handler. * * 1. Short-circuit if removals list is empty (no-op) * 2. Read current manifest and compute hash * 3. Compare hash with args.manifestHash (stale check) * 4. Apply removals to manifest * 5. Write updated manifest */ export declare const removeFromPack: OperationHandler; //# sourceMappingURL=remove-from-pack.d.ts.map