/** * `agent-native upgrade` — bring an existing Agent Native app/workspace current. * * Older branches often break after a core bump. Agents then invent * `pnpm.overrides` / patches against `@agent-native/*` (especially dispatch), * which makes things worse. This command is the supported path: * * 1. Doctor: refuse or warn on framework overrides/patches * 2. Bump `@agent-native/*` deps to `latest` (unless file:/link:/workspace:) * 3. Install * 4. Refresh scaffold skills (`skills update scaffold --project`) * 5. Verify with typecheck when available * * On failure: print the error and stop. Do not patch framework packages. */ import { type SpawnSyncReturns } from "node:child_process"; export type UpgradeCommand = "run" | "check" | "help"; export interface UpgradeCliOptions { command: UpgradeCommand; cwd?: string; dryRun?: boolean; codemods?: boolean; yes?: boolean; skipInstall?: boolean; skipVerify?: boolean; skipSkills?: boolean; json?: boolean; help?: boolean; /** Force past doctor findings that would otherwise block (not recommended). */ force?: boolean; } export interface PackageJsonLike { name?: string; version?: string; dependencies?: Record; devDependencies?: Record; optionalDependencies?: Record; peerDependencies?: Record; pnpm?: { overrides?: Record; patchedDependencies?: Record; }; overrides?: Record; resolutions?: Record; scripts?: Record; } export interface FrameworkOverrideFinding { file: string; field: string; key: string; value: string; } export interface AgentNativeDepBump { file: string; section: "dependencies" | "devDependencies" | "optionalDependencies"; name: string; from: string; to: string; } export interface UpgradeProject { root: string; kind: "standalone" | "workspace"; packageFiles: string[]; } export interface UpgradeDoctorReport { project: UpgradeProject; findings: FrameworkOverrideFinding[]; bumps: AgentNativeDepBump[]; installedCoreVersion: string | null; cliCoreVersion: string | null; scaffoldStaleHint: boolean; } export interface UpgradeRunResult { ok: boolean; dryRun: boolean; doctor: UpgradeDoctorReport; steps: Array<{ id: string; status: "ok" | "skipped" | "failed" | "planned"; detail?: string; }>; message: string; exitCode: number; codemod?: { files: string[]; warnings: string[]; diff: string; }; } export interface UpgradeIo { log: (message: string) => void; err: (message: string) => void; spawn: (command: string, args: string[], options: { cwd: string; stdio?: "inherit" | "pipe"; }) => SpawnSyncReturns; runSkillsUpdate: (cwd: string) => Promise; } export declare function parseUpgradeArgs(argv: string[]): UpgradeCliOptions; export declare function printUpgradeHelp(io?: Pick): void; export declare function isAgentNativePackageName(name: string): boolean; export declare function isPinnedOrLocalVersion(version: string): boolean; export declare function shouldBumpAgentNativeVersion(version: string): boolean; export declare function detectUpgradeProject(cwd: string): UpgradeProject | null; export declare function buildUpgradeDoctorReport(project: UpgradeProject): UpgradeDoctorReport; export declare function runUpgrade(argv: string[], io?: UpgradeIo): Promise; //# sourceMappingURL=upgrade.d.ts.map