export type PackageActionMode = 'install' | 'uninstall' | 'mixed'; /** * Classify a set of npm package operations. `action` defaults to 'install' * when unset, matching the tool schema (omitted action ⇒ install). */ export function getPackageActionMode( packages: ReadonlyArray<{ action?: string } | null | undefined>, ): PackageActionMode { const hasUninstall = packages.some((p) => p?.action === 'uninstall'); const hasInstall = packages.some((p) => p != null && p.action !== 'uninstall'); return hasInstall && hasUninstall ? 'mixed' : hasUninstall ? 'uninstall' : 'install'; }