@agent-native/core 0.111.2 → 0.111.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -428,6 +428,17 @@ const FAILURE_GUIDANCE = [
428
428
  "Revert those changes if present, fix the app-level compile/runtime error, then re-run:",
429
429
  " npx @agent-native/core@latest upgrade",
430
430
  ].join("\n");
431
+ function applyCodemodDependencyPlan(codemodResult) {
432
+ const dependencyFiles = new Set(codemodResult.dependencyFiles);
433
+ const applied = [];
434
+ for (const change of codemodResult.changes) {
435
+ if (!dependencyFiles.has(change.file))
436
+ continue;
437
+ fs.writeFileSync(change.file, change.after);
438
+ applied.push(change);
439
+ }
440
+ return applied;
441
+ }
431
442
  export async function runUpgrade(argv, io = defaultIo) {
432
443
  const opts = parseUpgradeArgs(argv);
433
444
  if (opts.help || opts.command === "help") {
@@ -535,34 +546,42 @@ export async function runUpgrade(argv, io = defaultIo) {
535
546
  detail: `Updated ${doctor.bumps.length} @agent-native/* dependency pin(s)`,
536
547
  });
537
548
  }
549
+ let codemodPlan;
538
550
  if (opts.codemods) {
539
- const { formatMigrationCodemodDiff, runMigrationCodemods } = await import("./migration-codemod.js");
540
- const codemodResult = runMigrationCodemods({
551
+ const codemodModule = await import("./migration-codemod.js");
552
+ const codemodResult = codemodModule.runMigrationCodemods({
541
553
  root: project.root,
542
- apply: !dryRun,
554
+ targetExists: codemodModule.createMigrationPlanningTargetResolver(project.root),
543
555
  });
544
- const diff = formatMigrationCodemodDiff(codemodResult, project.root);
545
- result.codemod = {
546
- files: codemodResult.changes.map((change) => relativeTo(project.root, change.file)),
547
- warnings: codemodResult.warnings,
548
- diff,
556
+ const diff = codemodModule.formatMigrationCodemodDiff(codemodResult, project.root);
557
+ const dependencyChanges = dryRun
558
+ ? []
559
+ : applyCodemodDependencyPlan(codemodResult);
560
+ codemodPlan = {
561
+ module: codemodModule,
562
+ dependencyChanges,
549
563
  };
550
- result.steps.push({
551
- id: "codemods",
552
- status: codemodResult.changes.length === 0
553
- ? "skipped"
554
- : dryRun
555
- ? "planned"
556
- : "ok",
557
- detail: codemodResult.changes.length === 0
558
- ? "No manifest migrations found"
559
- : `${dryRun ? "Would update" : "Updated"} ${codemodResult.changes.length} file(s)`,
560
- });
561
- if (!opts.json && diff) {
564
+ if (dryRun) {
565
+ result.codemod = {
566
+ files: codemodResult.changes.map((change) => relativeTo(project.root, change.file)),
567
+ warnings: codemodResult.warnings,
568
+ diff,
569
+ };
570
+ }
571
+ if (dryRun) {
572
+ result.steps.push({
573
+ id: "codemods",
574
+ status: codemodResult.changes.length === 0 ? "skipped" : "planned",
575
+ detail: codemodResult.changes.length === 0
576
+ ? "No manifest migrations found"
577
+ : `Would update ${codemodResult.changes.length} file(s)`,
578
+ });
579
+ }
580
+ if (dryRun && !opts.json && diff) {
562
581
  io.log(diff);
563
582
  io.log("");
564
583
  }
565
- if (!opts.json) {
584
+ if (dryRun && !opts.json) {
566
585
  for (const warning of codemodResult.warnings) {
567
586
  io.err(`[codemods] ${warning}`);
568
587
  }
@@ -593,6 +612,23 @@ export async function runUpgrade(argv, io = defaultIo) {
593
612
  result.ok = false;
594
613
  result.exitCode = spawned.status ?? 1;
595
614
  result.message = `${pm} install failed`;
615
+ if (codemodPlan && codemodPlan.dependencyChanges.length > 0) {
616
+ const dependencyResult = {
617
+ changes: codemodPlan.dependencyChanges,
618
+ dependencyFiles: codemodPlan.dependencyChanges.map((change) => change.file),
619
+ warnings: [],
620
+ };
621
+ const diff = codemodPlan.module.formatMigrationCodemodDiff(dependencyResult, project.root);
622
+ result.codemod = {
623
+ files: dependencyResult.changes.map((change) => relativeTo(project.root, change.file)),
624
+ warnings: [],
625
+ diff,
626
+ };
627
+ if (!opts.json && diff) {
628
+ io.log(diff);
629
+ io.log("");
630
+ }
631
+ }
596
632
  result.steps.push({
597
633
  id: "install",
598
634
  status: "failed",
@@ -603,6 +639,44 @@ export async function runUpgrade(argv, io = defaultIo) {
603
639
  }
604
640
  result.steps.push({ id: "install", status: "ok", detail: `${pm} install` });
605
641
  }
642
+ if (codemodPlan && !dryRun) {
643
+ const applied = codemodPlan.module.runMigrationCodemods({
644
+ root: project.root,
645
+ apply: true,
646
+ });
647
+ const actualResult = {
648
+ changes: [...codemodPlan.dependencyChanges, ...applied.changes],
649
+ dependencyFiles: codemodPlan.dependencyChanges.map((change) => change.file),
650
+ warnings: applied.warnings,
651
+ };
652
+ const diff = codemodPlan.module.formatMigrationCodemodDiff(actualResult, project.root);
653
+ const files = [
654
+ ...new Set(actualResult.changes.map((change) => change.file)),
655
+ ];
656
+ result.codemod = {
657
+ files: files.map((file) => relativeTo(project.root, file)),
658
+ warnings: actualResult.warnings,
659
+ diff,
660
+ };
661
+ result.steps.push({
662
+ id: "codemods",
663
+ status: files.length === 0 ? "skipped" : "ok",
664
+ detail: files.length === 0
665
+ ? "No resolvable manifest migrations found"
666
+ : opts.skipInstall
667
+ ? `Updated ${files.length} file(s) without installing dependencies`
668
+ : `Updated ${files.length} file(s) after dependency installation`,
669
+ });
670
+ if (!opts.json && diff) {
671
+ io.log(diff);
672
+ io.log("");
673
+ }
674
+ if (!opts.json) {
675
+ for (const warning of actualResult.warnings) {
676
+ io.err(`[codemods] ${warning}`);
677
+ }
678
+ }
679
+ }
606
680
  // Skills refresh.
607
681
  if (opts.skipSkills) {
608
682
  result.steps.push({
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/cli/upgrade.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `agent-native upgrade` — bring an existing Agent Native app/workspace current.\n *\n * Older branches often break after a core bump. Agents then invent\n * `pnpm.overrides` / patches against `@agent-native/*` (especially dispatch),\n * which makes things worse. This command is the supported path:\n *\n * 1. Doctor: refuse or warn on framework overrides/patches\n * 2. Bump `@agent-native/*` deps to `latest` (unless file:/link:/workspace:)\n * 3. Install\n * 4. Refresh scaffold skills (`skills update scaffold --project`)\n * 5. Verify with typecheck when available\n *\n * On failure: print the error and stop. Do not patch framework packages.\n */\nimport { spawnSync, type SpawnSyncReturns } from \"node:child_process\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst AGENT_NATIVE_SCOPE = \"@agent-native/\";\nconst PINNABLE_VERSION = \"latest\";\n\nexport type UpgradeCommand = \"run\" | \"check\" | \"help\";\n\nexport interface UpgradeCliOptions {\n command: UpgradeCommand;\n cwd?: string;\n dryRun?: boolean;\n codemods?: boolean;\n yes?: boolean;\n skipInstall?: boolean;\n skipVerify?: boolean;\n skipSkills?: boolean;\n json?: boolean;\n help?: boolean;\n /** Force past doctor findings that would otherwise block (not recommended). */\n force?: boolean;\n}\n\nexport interface PackageJsonLike {\n name?: string;\n version?: string;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n optionalDependencies?: Record<string, string>;\n peerDependencies?: Record<string, string>;\n pnpm?: {\n overrides?: Record<string, string>;\n patchedDependencies?: Record<string, string>;\n };\n overrides?: Record<string, string>;\n resolutions?: Record<string, string>;\n scripts?: Record<string, string>;\n}\n\nexport interface FrameworkOverrideFinding {\n file: string;\n field: string;\n key: string;\n value: string;\n}\n\nexport interface AgentNativeDepBump {\n file: string;\n section: \"dependencies\" | \"devDependencies\" | \"optionalDependencies\";\n name: string;\n from: string;\n to: string;\n}\n\nexport interface UpgradeProject {\n root: string;\n kind: \"standalone\" | \"workspace\";\n packageFiles: string[];\n}\n\nexport interface UpgradeDoctorReport {\n project: UpgradeProject;\n findings: FrameworkOverrideFinding[];\n bumps: AgentNativeDepBump[];\n installedCoreVersion: string | null;\n cliCoreVersion: string | null;\n scaffoldStaleHint: boolean;\n}\n\nexport interface UpgradeRunResult {\n ok: boolean;\n dryRun: boolean;\n doctor: UpgradeDoctorReport;\n steps: Array<{\n id: string;\n status: \"ok\" | \"skipped\" | \"failed\" | \"planned\";\n detail?: string;\n }>;\n message: string;\n exitCode: number;\n codemod?: {\n files: string[];\n warnings: string[];\n diff: string;\n };\n}\n\nexport interface UpgradeIo {\n log: (message: string) => void;\n err: (message: string) => void;\n spawn: (\n command: string,\n args: string[],\n options: { cwd: string; stdio?: \"inherit\" | \"pipe\" },\n ) => SpawnSyncReturns<string | Buffer>;\n runSkillsUpdate: (cwd: string) => Promise<void>;\n}\n\nconst defaultIo: UpgradeIo = {\n log: (message) => console.log(message),\n err: (message) => console.error(message),\n spawn: (command, args, options) =>\n spawnSync(command, args, {\n cwd: options.cwd,\n stdio: options.stdio ?? \"inherit\",\n encoding: \"utf-8\",\n shell: process.platform === \"win32\",\n }),\n runSkillsUpdate: async (cwd) => {\n const { runSkills } = await import(\"./skills.js\");\n const previous = process.cwd();\n process.chdir(cwd);\n try {\n await runSkills([\"update\", \"scaffold\", \"--project\"]);\n } finally {\n process.chdir(previous);\n }\n },\n};\n\nexport function parseUpgradeArgs(argv: string[]): UpgradeCliOptions {\n const opts: UpgradeCliOptions = { command: \"run\" };\n for (let i = 0; i < argv.length; i++) {\n const arg = argv[i];\n if (arg === \"check\" || arg === \"doctor\") {\n opts.command = \"check\";\n } else if (arg === \"help\" || arg === \"--help\" || arg === \"-h\") {\n opts.command = \"help\";\n opts.help = true;\n } else if (arg === \"--dry-run\") {\n opts.dryRun = true;\n } else if (arg === \"--codemods\") {\n opts.codemods = true;\n } else if (arg === \"--yes\") {\n opts.yes = true;\n } else if (arg === \"--skip-install\") {\n opts.skipInstall = true;\n } else if (arg === \"--skip-verify\") {\n opts.skipVerify = true;\n } else if (arg === \"--skip-skills\") {\n opts.skipSkills = true;\n } else if (arg === \"--json\") {\n opts.json = true;\n } else if (arg === \"--force\") {\n opts.force = true;\n } else if (arg === \"--cwd\" && argv[i + 1]) {\n opts.cwd = argv[++i];\n } else if (arg.startsWith(\"--cwd=\")) {\n opts.cwd = arg.slice(\"--cwd=\".length);\n } else if (!arg.startsWith(\"-\")) {\n // Ignore unknown positional for forward-compat; help covers usage.\n }\n }\n return opts;\n}\n\nexport function printUpgradeHelp(io: Pick<UpgradeIo, \"log\"> = defaultIo): void {\n io.log(\n [\n \"Usage:\",\n \" agent-native upgrade Bring this app/workspace to current @agent-native/*\",\n \" agent-native upgrade check Doctor only: overrides, patches, pending bumps\",\n \" agent-native upgrade --dry-run Show the plan without writing or installing\",\n \" agent-native upgrade --codemods Preview manifest-driven import migrations\",\n \"\",\n \"Options:\",\n \" --skip-install Bump package.json only; do not run the package manager\",\n \" --codemods Rewrite moved Agent Native imports and exports (preview by default)\",\n \" --yes Apply codemods; without this flag --codemods is a dry run\",\n \" --skip-skills Skip `skills update scaffold --project`\",\n \" --skip-verify Skip typecheck after upgrade\",\n \" --force Continue even when framework overrides/patches are present\",\n \" --json Machine-readable report\",\n \" --cwd <dir> Run against a project root other than the current directory\",\n \"\",\n \"On failure: report the error and stop. Do NOT add pnpm.overrides,\",\n \"patchedDependencies, or local patches against @agent-native/* packages.\",\n \"Do NOT edit node_modules/@agent-native/* or invent dispatch/core behavior\",\n \"overrides. Revert those changes and re-run `agent-native upgrade`.\",\n ].join(\"\\n\"),\n );\n}\n\nfunction readJsonFile(filePath: string): PackageJsonLike | null {\n try {\n return JSON.parse(fs.readFileSync(filePath, \"utf-8\")) as PackageJsonLike;\n } catch {\n return null;\n }\n}\n\nfunction writeJsonFile(filePath: string, value: PackageJsonLike): void {\n fs.writeFileSync(filePath, `${JSON.stringify(value, null, 2)}\\n`);\n}\n\nexport function isAgentNativePackageName(name: string): boolean {\n return name === \"@agent-native\" || name.startsWith(AGENT_NATIVE_SCOPE);\n}\n\nexport function isPinnedOrLocalVersion(version: string): boolean {\n const v = version.trim();\n return (\n v.startsWith(\"file:\") ||\n v.startsWith(\"link:\") ||\n v.startsWith(\"workspace:\") ||\n v.startsWith(\"portal:\") ||\n v.startsWith(\"git+\") ||\n v.startsWith(\"github:\") ||\n v.startsWith(\"http:\") ||\n v.startsWith(\"https:\")\n );\n}\n\nexport function shouldBumpAgentNativeVersion(version: string): boolean {\n if (isPinnedOrLocalVersion(version)) return false;\n return version.trim() !== PINNABLE_VERSION;\n}\n\nfunction collectOverrideFindings(\n file: string,\n pkg: PackageJsonLike,\n): FrameworkOverrideFinding[] {\n const findings: FrameworkOverrideFinding[] = [];\n const tables: Array<{\n field: string;\n map: Record<string, string> | undefined;\n }> = [\n { field: \"pnpm.overrides\", map: pkg.pnpm?.overrides },\n { field: \"pnpm.patchedDependencies\", map: pkg.pnpm?.patchedDependencies },\n { field: \"overrides\", map: pkg.overrides },\n { field: \"resolutions\", map: pkg.resolutions },\n ];\n for (const table of tables) {\n if (!table.map) continue;\n for (const [key, value] of Object.entries(table.map)) {\n // Keys may be bare (`@agent-native/core`) or versioned\n // (`@agent-native/core@1.2.3` for patchedDependencies).\n if (key.includes(AGENT_NATIVE_SCOPE) || isAgentNativePackageName(key)) {\n findings.push({ file, field: table.field, key, value: String(value) });\n }\n }\n }\n return findings;\n}\n\nfunction collectBumps(\n file: string,\n pkg: PackageJsonLike,\n): AgentNativeDepBump[] {\n const bumps: AgentNativeDepBump[] = [];\n const sections = [\n \"dependencies\",\n \"devDependencies\",\n \"optionalDependencies\",\n ] as const;\n for (const section of sections) {\n const deps = pkg[section];\n if (!deps) continue;\n for (const [name, version] of Object.entries(deps)) {\n if (!isAgentNativePackageName(name)) continue;\n if (!shouldBumpAgentNativeVersion(version)) continue;\n bumps.push({\n file,\n section,\n name,\n from: version,\n to: PINNABLE_VERSION,\n });\n }\n }\n return bumps;\n}\n\nfunction applyBumps(pkg: PackageJsonLike, bumps: AgentNativeDepBump[]): void {\n for (const bump of bumps) {\n const section = pkg[bump.section];\n if (!section) continue;\n if (section[bump.name] === bump.from) {\n section[bump.name] = bump.to;\n }\n }\n}\n\nexport function detectUpgradeProject(cwd: string): UpgradeProject | null {\n const start = path.resolve(cwd);\n let dir = start;\n while (true) {\n const pkgPath = path.join(dir, \"package.json\");\n if (fs.existsSync(pkgPath)) {\n const pkg = readJsonFile(pkgPath);\n const hasCore =\n Boolean(pkg?.dependencies?.[\"@agent-native/core\"]) ||\n Boolean(pkg?.devDependencies?.[\"@agent-native/core\"]);\n const workspaceYaml = path.join(dir, \"pnpm-workspace.yaml\");\n const isWorkspace = fs.existsSync(workspaceYaml);\n if (hasCore || isWorkspace) {\n const packageFiles = [pkgPath];\n if (isWorkspace) {\n packageFiles.push(...workspacePackageFiles(dir, workspaceYaml));\n }\n return {\n root: dir,\n kind: isWorkspace ? \"workspace\" : \"standalone\",\n packageFiles: Array.from(new Set(packageFiles)),\n };\n }\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return null;\n}\n\nfunction workspacePackageFiles(root: string, workspaceYaml: string): string[] {\n const patterns = parseWorkspacePackagePatterns(workspaceYaml);\n const included = new Set<string>();\n const excluded = new Set<string>();\n for (const rawPattern of patterns) {\n const exclude = rawPattern.startsWith(\"!\");\n const pattern = exclude ? rawPattern.slice(1) : rawPattern;\n const files = packageFilesForWorkspacePattern(root, pattern);\n for (const file of files) {\n if (exclude) excluded.add(file);\n else included.add(file);\n }\n }\n return Array.from(included)\n .filter((file) => !excluded.has(file))\n .sort();\n}\n\nfunction parseWorkspacePackagePatterns(workspaceYaml: string): string[] {\n let text = \"\";\n try {\n text = fs.readFileSync(workspaceYaml, \"utf-8\");\n } catch {\n return [\"apps/*\", \"packages/*\"];\n }\n const patterns: string[] = [];\n let inPackages = false;\n for (const line of text.split(/\\r?\\n/)) {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith(\"#\")) continue;\n if (/^[A-Za-z0-9_-]+:/.test(trimmed)) {\n inPackages = trimmed === \"packages:\";\n continue;\n }\n if (!inPackages || !trimmed.startsWith(\"-\")) continue;\n const pattern = trimmed\n .slice(1)\n .trim()\n .replace(/^['\"]|['\"]$/g, \"\");\n if (pattern) patterns.push(pattern);\n }\n return patterns.length ? patterns : [\"apps/*\", \"packages/*\"];\n}\n\nfunction packageFilesForWorkspacePattern(\n root: string,\n pattern: string,\n): string[] {\n const normalized = pattern.replace(/\\\\/g, \"/\").replace(/\\/+$/g, \"\");\n if (!normalized || normalized.includes(\"node_modules\")) return [];\n if (normalized.endsWith(\"/**\")) {\n return collectPackageFilesRecursive(\n path.join(root, normalized.slice(0, -3)),\n );\n }\n if (normalized.endsWith(\"/*\")) {\n const base = path.join(root, normalized.slice(0, -2));\n if (!fs.existsSync(base)) return [];\n return fs\n .readdirSync(base, { withFileTypes: true })\n .filter((entry) => entry.isDirectory())\n .map((entry) => path.join(base, entry.name, \"package.json\"))\n .filter((file) => fs.existsSync(file));\n }\n if (normalized.includes(\"*\")) {\n return collectPackageFilesRecursive(\n path.join(root, normalized.split(\"*\")[0]),\n );\n }\n const file = path.join(root, normalized, \"package.json\");\n return fs.existsSync(file) ? [file] : [];\n}\n\nfunction collectPackageFilesRecursive(dir: string): string[] {\n if (!fs.existsSync(dir)) return [];\n const files: string[] = [];\n for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue;\n if (entry.name === \"node_modules\" || entry.name === \".git\") continue;\n const child = path.join(dir, entry.name);\n const pkg = path.join(child, \"package.json\");\n if (fs.existsSync(pkg)) files.push(pkg);\n files.push(...collectPackageFilesRecursive(child));\n }\n return files;\n}\n\nfunction resolveInstalledPackageVersion(\n projectRoot: string,\n packageName: string,\n): string | null {\n let dir = projectRoot;\n while (true) {\n const candidate = path.join(\n dir,\n \"node_modules\",\n ...packageName.split(\"/\"),\n \"package.json\",\n );\n if (fs.existsSync(candidate)) {\n const pkg = readJsonFile(candidate);\n return typeof pkg?.version === \"string\" ? pkg.version : null;\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return null;\n}\n\nfunction readCliCoreVersion(): string | null {\n try {\n const here = path.dirname(fileURLToPath(import.meta.url));\n const pkgPath = path.resolve(here, \"../../package.json\");\n const pkg = readJsonFile(pkgPath);\n return typeof pkg?.version === \"string\" ? pkg.version : null;\n } catch {\n return null;\n }\n}\n\nfunction detectPackageManager(projectRoot: string): \"pnpm\" | \"npm\" | \"yarn\" {\n if (fs.existsSync(path.join(projectRoot, \"pnpm-lock.yaml\"))) return \"pnpm\";\n if (fs.existsSync(path.join(projectRoot, \"yarn.lock\"))) return \"yarn\";\n if (fs.existsSync(path.join(projectRoot, \"package-lock.json\"))) return \"npm\";\n // Prefer pnpm for Agent Native scaffolds.\n return \"pnpm\";\n}\n\nfunction installArgs(pm: \"pnpm\" | \"npm\" | \"yarn\"): string[] {\n if (pm === \"npm\") return [\"install\"];\n if (pm === \"yarn\") return [\"install\"];\n return [\"install\"];\n}\n\nexport function buildUpgradeDoctorReport(\n project: UpgradeProject,\n): UpgradeDoctorReport {\n const findings: FrameworkOverrideFinding[] = [];\n const bumps: AgentNativeDepBump[] = [];\n for (const file of project.packageFiles) {\n const pkg = readJsonFile(file);\n if (!pkg) continue;\n findings.push(...collectOverrideFindings(file, pkg));\n bumps.push(...collectBumps(file, pkg));\n }\n const installedCoreVersion = resolveInstalledPackageVersion(\n project.root,\n \"@agent-native/core\",\n );\n const cliCoreVersion = readCliCoreVersion();\n const skillsUpdateScript = project.packageFiles.some((file) => {\n const pkg = readJsonFile(file);\n return Boolean(pkg?.scripts?.[\"skills:update\"]);\n });\n return {\n project,\n findings,\n bumps,\n installedCoreVersion,\n cliCoreVersion,\n scaffoldStaleHint: skillsUpdateScript || bumps.length > 0,\n };\n}\n\nfunction relativeTo(root: string, file: string): string {\n const rel = path.relative(root, file);\n return rel || \".\";\n}\n\nfunction formatDoctorHuman(report: UpgradeDoctorReport): string {\n const lines: string[] = [];\n lines.push(`Project: ${report.project.root} (${report.project.kind})`);\n if (report.installedCoreVersion) {\n lines.push(`Installed @agent-native/core: ${report.installedCoreVersion}`);\n } else {\n lines.push(\"Installed @agent-native/core: (not found in node_modules)\");\n }\n if (report.cliCoreVersion) {\n lines.push(`CLI package version: ${report.cliCoreVersion}`);\n }\n if (report.findings.length === 0) {\n lines.push(\"Framework overrides/patches: none\");\n } else {\n lines.push(\"Framework overrides/patches:\");\n for (const finding of report.findings) {\n lines.push(\n ` - ${relativeTo(report.project.root, finding.file)} ${finding.field}[\"${finding.key}\"] = ${finding.value}`,\n );\n }\n }\n if (report.bumps.length === 0) {\n lines.push(\"Pending @agent-native/* bumps: none\");\n } else {\n lines.push(\"Pending @agent-native/* bumps:\");\n for (const bump of report.bumps) {\n lines.push(\n ` - ${relativeTo(report.project.root, bump.file)} ${bump.name}: ${bump.from} → ${bump.to}`,\n );\n }\n }\n return lines.join(\"\\n\");\n}\n\nconst FAILURE_GUIDANCE = [\n \"Upgrade failed. Do not paper over this with framework patches.\",\n \"Never add pnpm.overrides / patchedDependencies / resolutions for @agent-native/*.\",\n \"Never edit node_modules/@agent-native/* or invent local dispatch/core behavior overrides.\",\n \"Revert those changes if present, fix the app-level compile/runtime error, then re-run:\",\n \" npx @agent-native/core@latest upgrade\",\n].join(\"\\n\");\n\nexport async function runUpgrade(\n argv: string[],\n io: UpgradeIo = defaultIo,\n): Promise<number> {\n const opts = parseUpgradeArgs(argv);\n if (opts.help || opts.command === \"help\") {\n printUpgradeHelp(io);\n return 0;\n }\n\n const cwd = path.resolve(opts.cwd ?? process.cwd());\n const project = detectUpgradeProject(cwd);\n if (!project) {\n const message =\n \"No Agent Native app/workspace found. Run from an app or workspace root that depends on @agent-native/core.\";\n if (opts.json) {\n io.err(JSON.stringify({ ok: false, message }, null, 2));\n } else {\n io.err(message);\n }\n return 1;\n }\n\n const doctor = buildUpgradeDoctorReport(project);\n if (opts.command === \"check\") {\n if (opts.json) {\n io.log(\n JSON.stringify({ ok: doctor.findings.length === 0, doctor }, null, 2),\n );\n } else {\n io.log(formatDoctorHuman(doctor));\n if (doctor.findings.length > 0) {\n io.err(\"\");\n io.err(FAILURE_GUIDANCE);\n }\n }\n return doctor.findings.length > 0 ? 1 : 0;\n }\n\n const dryRun = Boolean(opts.dryRun || (opts.codemods && !opts.yes));\n const result: UpgradeRunResult = {\n ok: true,\n dryRun,\n doctor,\n steps: [],\n message: \"\",\n exitCode: 0,\n };\n\n if (doctor.findings.length > 0 && !opts.force) {\n result.ok = false;\n result.exitCode = 1;\n result.message =\n \"Blocked: framework overrides/patches for @agent-native/* are present. Remove them, then re-run upgrade (or pass --force to continue unsafely).\";\n result.steps.push({\n id: \"doctor\",\n status: \"failed\",\n detail: result.message,\n });\n if (opts.json) {\n io.err(JSON.stringify(result, null, 2));\n } else {\n io.log(formatDoctorHuman(doctor));\n io.err(\"\");\n io.err(result.message);\n io.err(\"\");\n io.err(FAILURE_GUIDANCE);\n }\n return 1;\n }\n\n result.steps.push({\n id: \"doctor\",\n status: doctor.findings.length > 0 ? \"ok\" : \"ok\",\n detail:\n doctor.findings.length > 0\n ? \"Continuing with --force despite framework overrides/patches\"\n : \"No framework overrides/patches\",\n });\n\n // Apply package.json bumps.\n if (doctor.bumps.length === 0) {\n result.steps.push({\n id: \"bump\",\n status: \"skipped\",\n detail: \"All @agent-native/* deps already use latest or local pins\",\n });\n } else if (dryRun) {\n result.steps.push({\n id: \"bump\",\n status: \"planned\",\n detail: doctor.bumps\n .map(\n (b) =>\n `${relativeTo(project.root, b.file)} ${b.name}: ${b.from} → ${b.to}`,\n )\n .join(\"; \"),\n });\n } else {\n const byFile = new Map<string, AgentNativeDepBump[]>();\n for (const bump of doctor.bumps) {\n const list = byFile.get(bump.file) ?? [];\n list.push(bump);\n byFile.set(bump.file, list);\n }\n for (const [file, bumps] of byFile) {\n const pkg = readJsonFile(file);\n if (!pkg) continue;\n applyBumps(pkg, bumps);\n writeJsonFile(file, pkg);\n }\n result.steps.push({\n id: \"bump\",\n status: \"ok\",\n detail: `Updated ${doctor.bumps.length} @agent-native/* dependency pin(s)`,\n });\n }\n\n if (opts.codemods) {\n const { formatMigrationCodemodDiff, runMigrationCodemods } =\n await import(\"./migration-codemod.js\");\n const codemodResult = runMigrationCodemods({\n root: project.root,\n apply: !dryRun,\n });\n const diff = formatMigrationCodemodDiff(codemodResult, project.root);\n result.codemod = {\n files: codemodResult.changes.map((change) =>\n relativeTo(project.root, change.file),\n ),\n warnings: codemodResult.warnings,\n diff,\n };\n result.steps.push({\n id: \"codemods\",\n status:\n codemodResult.changes.length === 0\n ? \"skipped\"\n : dryRun\n ? \"planned\"\n : \"ok\",\n detail:\n codemodResult.changes.length === 0\n ? \"No manifest migrations found\"\n : `${dryRun ? \"Would update\" : \"Updated\"} ${codemodResult.changes.length} file(s)`,\n });\n if (!opts.json && diff) {\n io.log(diff);\n io.log(\"\");\n }\n if (!opts.json) {\n for (const warning of codemodResult.warnings) {\n io.err(`[codemods] ${warning}`);\n }\n }\n }\n\n // Install.\n if (opts.skipInstall) {\n result.steps.push({\n id: \"install\",\n status: \"skipped\",\n detail: \"--skip-install\",\n });\n } else if (dryRun) {\n result.steps.push({\n id: \"install\",\n status: \"planned\",\n detail: `${detectPackageManager(project.root)} install`,\n });\n } else {\n const pm = detectPackageManager(project.root);\n const spawned = io.spawn(pm, installArgs(pm), {\n cwd: project.root,\n stdio: opts.json ? \"pipe\" : \"inherit\",\n });\n if (spawned.status !== 0) {\n result.ok = false;\n result.exitCode = spawned.status ?? 1;\n result.message = `${pm} install failed`;\n result.steps.push({\n id: \"install\",\n status: \"failed\",\n detail: result.message,\n });\n emitResult(io, opts, result);\n return result.exitCode;\n }\n result.steps.push({ id: \"install\", status: \"ok\", detail: `${pm} install` });\n }\n\n // Skills refresh.\n if (opts.skipSkills) {\n result.steps.push({\n id: \"skills\",\n status: \"skipped\",\n detail: \"--skip-skills\",\n });\n } else if (dryRun) {\n result.steps.push({\n id: \"skills\",\n status: \"planned\",\n detail: \"skills update scaffold --project\",\n });\n } else {\n try {\n await io.runSkillsUpdate(project.root);\n result.steps.push({\n id: \"skills\",\n status: \"ok\",\n detail: \"skills update scaffold --project\",\n });\n } catch (err) {\n result.ok = false;\n result.exitCode = 1;\n result.message = `skills update failed: ${err instanceof Error ? err.message : String(err)}`;\n result.steps.push({\n id: \"skills\",\n status: \"failed\",\n detail: result.message,\n });\n emitResult(io, opts, result);\n return result.exitCode;\n }\n }\n\n // Verify.\n if (opts.skipVerify) {\n result.steps.push({\n id: \"verify\",\n status: \"skipped\",\n detail: \"--skip-verify\",\n });\n } else if (dryRun) {\n result.steps.push({\n id: \"verify\",\n status: \"planned\",\n detail: \"typecheck (when available)\",\n });\n } else {\n const rootPkg = readJsonFile(path.join(project.root, \"package.json\"));\n const hasTypecheck = Boolean(rootPkg?.scripts?.typecheck);\n if (!hasTypecheck) {\n result.steps.push({\n id: \"verify\",\n status: \"skipped\",\n detail: \"no typecheck script\",\n });\n } else {\n const pm = detectPackageManager(project.root);\n const args =\n pm === \"npm\"\n ? [\"run\", \"typecheck\"]\n : pm === \"yarn\"\n ? [\"typecheck\"]\n : [\"typecheck\"];\n const spawned = io.spawn(pm, args, {\n cwd: project.root,\n stdio: opts.json ? \"pipe\" : \"inherit\",\n });\n if (spawned.status !== 0) {\n result.ok = false;\n result.exitCode = spawned.status ?? 1;\n result.message = \"typecheck failed\";\n result.steps.push({\n id: \"verify\",\n status: \"failed\",\n detail: result.message,\n });\n emitResult(io, opts, result);\n return result.exitCode;\n }\n result.steps.push({ id: \"verify\", status: \"ok\", detail: \"typecheck\" });\n }\n }\n\n result.message = dryRun\n ? opts.codemods && !opts.yes\n ? \"Codemod preview complete. Re-run with --codemods --yes to apply.\"\n : \"Dry run complete. Re-run without --dry-run to apply.\"\n : \"Upgrade complete. If the app still fails to run, fix app-level code — do not patch @agent-native/*.\";\n emitResult(io, opts, result);\n return 0;\n}\n\nfunction emitResult(\n io: UpgradeIo,\n opts: UpgradeCliOptions,\n result: UpgradeRunResult,\n): void {\n if (opts.json) {\n const sink = result.ok ? io.log : io.err;\n sink(JSON.stringify(result, null, 2));\n return;\n }\n io.log(formatDoctorHuman(result.doctor));\n io.log(\"\");\n for (const step of result.steps) {\n io.log(\n `[${step.status}] ${step.id}${step.detail ? ` — ${step.detail}` : \"\"}`,\n );\n }\n io.log(\"\");\n if (result.ok) {\n io.log(result.message);\n } else {\n io.err(result.message);\n io.err(\"\");\n io.err(FAILURE_GUIDANCE);\n }\n}\n"]}
1
+ {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../src/cli/upgrade.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * `agent-native upgrade` — bring an existing Agent Native app/workspace current.\n *\n * Older branches often break after a core bump. Agents then invent\n * `pnpm.overrides` / patches against `@agent-native/*` (especially dispatch),\n * which makes things worse. This command is the supported path:\n *\n * 1. Doctor: refuse or warn on framework overrides/patches\n * 2. Bump `@agent-native/*` deps to `latest` (unless file:/link:/workspace:)\n * 3. Install\n * 4. Refresh scaffold skills (`skills update scaffold --project`)\n * 5. Verify with typecheck when available\n *\n * On failure: print the error and stop. Do not patch framework packages.\n */\nimport { spawnSync, type SpawnSyncReturns } from \"node:child_process\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nimport type { MigrationCodemodResult } from \"./migration-codemod.js\";\n\nconst AGENT_NATIVE_SCOPE = \"@agent-native/\";\nconst PINNABLE_VERSION = \"latest\";\n\nexport type UpgradeCommand = \"run\" | \"check\" | \"help\";\n\nexport interface UpgradeCliOptions {\n command: UpgradeCommand;\n cwd?: string;\n dryRun?: boolean;\n codemods?: boolean;\n yes?: boolean;\n skipInstall?: boolean;\n skipVerify?: boolean;\n skipSkills?: boolean;\n json?: boolean;\n help?: boolean;\n /** Force past doctor findings that would otherwise block (not recommended). */\n force?: boolean;\n}\n\nexport interface PackageJsonLike {\n name?: string;\n version?: string;\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n optionalDependencies?: Record<string, string>;\n peerDependencies?: Record<string, string>;\n pnpm?: {\n overrides?: Record<string, string>;\n patchedDependencies?: Record<string, string>;\n };\n overrides?: Record<string, string>;\n resolutions?: Record<string, string>;\n scripts?: Record<string, string>;\n}\n\nexport interface FrameworkOverrideFinding {\n file: string;\n field: string;\n key: string;\n value: string;\n}\n\nexport interface AgentNativeDepBump {\n file: string;\n section: \"dependencies\" | \"devDependencies\" | \"optionalDependencies\";\n name: string;\n from: string;\n to: string;\n}\n\nexport interface UpgradeProject {\n root: string;\n kind: \"standalone\" | \"workspace\";\n packageFiles: string[];\n}\n\nexport interface UpgradeDoctorReport {\n project: UpgradeProject;\n findings: FrameworkOverrideFinding[];\n bumps: AgentNativeDepBump[];\n installedCoreVersion: string | null;\n cliCoreVersion: string | null;\n scaffoldStaleHint: boolean;\n}\n\nexport interface UpgradeRunResult {\n ok: boolean;\n dryRun: boolean;\n doctor: UpgradeDoctorReport;\n steps: Array<{\n id: string;\n status: \"ok\" | \"skipped\" | \"failed\" | \"planned\";\n detail?: string;\n }>;\n message: string;\n exitCode: number;\n codemod?: {\n files: string[];\n warnings: string[];\n diff: string;\n };\n}\n\nexport interface UpgradeIo {\n log: (message: string) => void;\n err: (message: string) => void;\n spawn: (\n command: string,\n args: string[],\n options: { cwd: string; stdio?: \"inherit\" | \"pipe\" },\n ) => SpawnSyncReturns<string | Buffer>;\n runSkillsUpdate: (cwd: string) => Promise<void>;\n}\n\nconst defaultIo: UpgradeIo = {\n log: (message) => console.log(message),\n err: (message) => console.error(message),\n spawn: (command, args, options) =>\n spawnSync(command, args, {\n cwd: options.cwd,\n stdio: options.stdio ?? \"inherit\",\n encoding: \"utf-8\",\n shell: process.platform === \"win32\",\n }),\n runSkillsUpdate: async (cwd) => {\n const { runSkills } = await import(\"./skills.js\");\n const previous = process.cwd();\n process.chdir(cwd);\n try {\n await runSkills([\"update\", \"scaffold\", \"--project\"]);\n } finally {\n process.chdir(previous);\n }\n },\n};\n\nexport function parseUpgradeArgs(argv: string[]): UpgradeCliOptions {\n const opts: UpgradeCliOptions = { command: \"run\" };\n for (let i = 0; i < argv.length; i++) {\n const arg = argv[i];\n if (arg === \"check\" || arg === \"doctor\") {\n opts.command = \"check\";\n } else if (arg === \"help\" || arg === \"--help\" || arg === \"-h\") {\n opts.command = \"help\";\n opts.help = true;\n } else if (arg === \"--dry-run\") {\n opts.dryRun = true;\n } else if (arg === \"--codemods\") {\n opts.codemods = true;\n } else if (arg === \"--yes\") {\n opts.yes = true;\n } else if (arg === \"--skip-install\") {\n opts.skipInstall = true;\n } else if (arg === \"--skip-verify\") {\n opts.skipVerify = true;\n } else if (arg === \"--skip-skills\") {\n opts.skipSkills = true;\n } else if (arg === \"--json\") {\n opts.json = true;\n } else if (arg === \"--force\") {\n opts.force = true;\n } else if (arg === \"--cwd\" && argv[i + 1]) {\n opts.cwd = argv[++i];\n } else if (arg.startsWith(\"--cwd=\")) {\n opts.cwd = arg.slice(\"--cwd=\".length);\n } else if (!arg.startsWith(\"-\")) {\n // Ignore unknown positional for forward-compat; help covers usage.\n }\n }\n return opts;\n}\n\nexport function printUpgradeHelp(io: Pick<UpgradeIo, \"log\"> = defaultIo): void {\n io.log(\n [\n \"Usage:\",\n \" agent-native upgrade Bring this app/workspace to current @agent-native/*\",\n \" agent-native upgrade check Doctor only: overrides, patches, pending bumps\",\n \" agent-native upgrade --dry-run Show the plan without writing or installing\",\n \" agent-native upgrade --codemods Preview manifest-driven import migrations\",\n \"\",\n \"Options:\",\n \" --skip-install Bump package.json only; do not run the package manager\",\n \" --codemods Rewrite moved Agent Native imports and exports (preview by default)\",\n \" --yes Apply codemods; without this flag --codemods is a dry run\",\n \" --skip-skills Skip `skills update scaffold --project`\",\n \" --skip-verify Skip typecheck after upgrade\",\n \" --force Continue even when framework overrides/patches are present\",\n \" --json Machine-readable report\",\n \" --cwd <dir> Run against a project root other than the current directory\",\n \"\",\n \"On failure: report the error and stop. Do NOT add pnpm.overrides,\",\n \"patchedDependencies, or local patches against @agent-native/* packages.\",\n \"Do NOT edit node_modules/@agent-native/* or invent dispatch/core behavior\",\n \"overrides. Revert those changes and re-run `agent-native upgrade`.\",\n ].join(\"\\n\"),\n );\n}\n\nfunction readJsonFile(filePath: string): PackageJsonLike | null {\n try {\n return JSON.parse(fs.readFileSync(filePath, \"utf-8\")) as PackageJsonLike;\n } catch {\n return null;\n }\n}\n\nfunction writeJsonFile(filePath: string, value: PackageJsonLike): void {\n fs.writeFileSync(filePath, `${JSON.stringify(value, null, 2)}\\n`);\n}\n\nexport function isAgentNativePackageName(name: string): boolean {\n return name === \"@agent-native\" || name.startsWith(AGENT_NATIVE_SCOPE);\n}\n\nexport function isPinnedOrLocalVersion(version: string): boolean {\n const v = version.trim();\n return (\n v.startsWith(\"file:\") ||\n v.startsWith(\"link:\") ||\n v.startsWith(\"workspace:\") ||\n v.startsWith(\"portal:\") ||\n v.startsWith(\"git+\") ||\n v.startsWith(\"github:\") ||\n v.startsWith(\"http:\") ||\n v.startsWith(\"https:\")\n );\n}\n\nexport function shouldBumpAgentNativeVersion(version: string): boolean {\n if (isPinnedOrLocalVersion(version)) return false;\n return version.trim() !== PINNABLE_VERSION;\n}\n\nfunction collectOverrideFindings(\n file: string,\n pkg: PackageJsonLike,\n): FrameworkOverrideFinding[] {\n const findings: FrameworkOverrideFinding[] = [];\n const tables: Array<{\n field: string;\n map: Record<string, string> | undefined;\n }> = [\n { field: \"pnpm.overrides\", map: pkg.pnpm?.overrides },\n { field: \"pnpm.patchedDependencies\", map: pkg.pnpm?.patchedDependencies },\n { field: \"overrides\", map: pkg.overrides },\n { field: \"resolutions\", map: pkg.resolutions },\n ];\n for (const table of tables) {\n if (!table.map) continue;\n for (const [key, value] of Object.entries(table.map)) {\n // Keys may be bare (`@agent-native/core`) or versioned\n // (`@agent-native/core@1.2.3` for patchedDependencies).\n if (key.includes(AGENT_NATIVE_SCOPE) || isAgentNativePackageName(key)) {\n findings.push({ file, field: table.field, key, value: String(value) });\n }\n }\n }\n return findings;\n}\n\nfunction collectBumps(\n file: string,\n pkg: PackageJsonLike,\n): AgentNativeDepBump[] {\n const bumps: AgentNativeDepBump[] = [];\n const sections = [\n \"dependencies\",\n \"devDependencies\",\n \"optionalDependencies\",\n ] as const;\n for (const section of sections) {\n const deps = pkg[section];\n if (!deps) continue;\n for (const [name, version] of Object.entries(deps)) {\n if (!isAgentNativePackageName(name)) continue;\n if (!shouldBumpAgentNativeVersion(version)) continue;\n bumps.push({\n file,\n section,\n name,\n from: version,\n to: PINNABLE_VERSION,\n });\n }\n }\n return bumps;\n}\n\nfunction applyBumps(pkg: PackageJsonLike, bumps: AgentNativeDepBump[]): void {\n for (const bump of bumps) {\n const section = pkg[bump.section];\n if (!section) continue;\n if (section[bump.name] === bump.from) {\n section[bump.name] = bump.to;\n }\n }\n}\n\nexport function detectUpgradeProject(cwd: string): UpgradeProject | null {\n const start = path.resolve(cwd);\n let dir = start;\n while (true) {\n const pkgPath = path.join(dir, \"package.json\");\n if (fs.existsSync(pkgPath)) {\n const pkg = readJsonFile(pkgPath);\n const hasCore =\n Boolean(pkg?.dependencies?.[\"@agent-native/core\"]) ||\n Boolean(pkg?.devDependencies?.[\"@agent-native/core\"]);\n const workspaceYaml = path.join(dir, \"pnpm-workspace.yaml\");\n const isWorkspace = fs.existsSync(workspaceYaml);\n if (hasCore || isWorkspace) {\n const packageFiles = [pkgPath];\n if (isWorkspace) {\n packageFiles.push(...workspacePackageFiles(dir, workspaceYaml));\n }\n return {\n root: dir,\n kind: isWorkspace ? \"workspace\" : \"standalone\",\n packageFiles: Array.from(new Set(packageFiles)),\n };\n }\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return null;\n}\n\nfunction workspacePackageFiles(root: string, workspaceYaml: string): string[] {\n const patterns = parseWorkspacePackagePatterns(workspaceYaml);\n const included = new Set<string>();\n const excluded = new Set<string>();\n for (const rawPattern of patterns) {\n const exclude = rawPattern.startsWith(\"!\");\n const pattern = exclude ? rawPattern.slice(1) : rawPattern;\n const files = packageFilesForWorkspacePattern(root, pattern);\n for (const file of files) {\n if (exclude) excluded.add(file);\n else included.add(file);\n }\n }\n return Array.from(included)\n .filter((file) => !excluded.has(file))\n .sort();\n}\n\nfunction parseWorkspacePackagePatterns(workspaceYaml: string): string[] {\n let text = \"\";\n try {\n text = fs.readFileSync(workspaceYaml, \"utf-8\");\n } catch {\n return [\"apps/*\", \"packages/*\"];\n }\n const patterns: string[] = [];\n let inPackages = false;\n for (const line of text.split(/\\r?\\n/)) {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith(\"#\")) continue;\n if (/^[A-Za-z0-9_-]+:/.test(trimmed)) {\n inPackages = trimmed === \"packages:\";\n continue;\n }\n if (!inPackages || !trimmed.startsWith(\"-\")) continue;\n const pattern = trimmed\n .slice(1)\n .trim()\n .replace(/^['\"]|['\"]$/g, \"\");\n if (pattern) patterns.push(pattern);\n }\n return patterns.length ? patterns : [\"apps/*\", \"packages/*\"];\n}\n\nfunction packageFilesForWorkspacePattern(\n root: string,\n pattern: string,\n): string[] {\n const normalized = pattern.replace(/\\\\/g, \"/\").replace(/\\/+$/g, \"\");\n if (!normalized || normalized.includes(\"node_modules\")) return [];\n if (normalized.endsWith(\"/**\")) {\n return collectPackageFilesRecursive(\n path.join(root, normalized.slice(0, -3)),\n );\n }\n if (normalized.endsWith(\"/*\")) {\n const base = path.join(root, normalized.slice(0, -2));\n if (!fs.existsSync(base)) return [];\n return fs\n .readdirSync(base, { withFileTypes: true })\n .filter((entry) => entry.isDirectory())\n .map((entry) => path.join(base, entry.name, \"package.json\"))\n .filter((file) => fs.existsSync(file));\n }\n if (normalized.includes(\"*\")) {\n return collectPackageFilesRecursive(\n path.join(root, normalized.split(\"*\")[0]),\n );\n }\n const file = path.join(root, normalized, \"package.json\");\n return fs.existsSync(file) ? [file] : [];\n}\n\nfunction collectPackageFilesRecursive(dir: string): string[] {\n if (!fs.existsSync(dir)) return [];\n const files: string[] = [];\n for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue;\n if (entry.name === \"node_modules\" || entry.name === \".git\") continue;\n const child = path.join(dir, entry.name);\n const pkg = path.join(child, \"package.json\");\n if (fs.existsSync(pkg)) files.push(pkg);\n files.push(...collectPackageFilesRecursive(child));\n }\n return files;\n}\n\nfunction resolveInstalledPackageVersion(\n projectRoot: string,\n packageName: string,\n): string | null {\n let dir = projectRoot;\n while (true) {\n const candidate = path.join(\n dir,\n \"node_modules\",\n ...packageName.split(\"/\"),\n \"package.json\",\n );\n if (fs.existsSync(candidate)) {\n const pkg = readJsonFile(candidate);\n return typeof pkg?.version === \"string\" ? pkg.version : null;\n }\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return null;\n}\n\nfunction readCliCoreVersion(): string | null {\n try {\n const here = path.dirname(fileURLToPath(import.meta.url));\n const pkgPath = path.resolve(here, \"../../package.json\");\n const pkg = readJsonFile(pkgPath);\n return typeof pkg?.version === \"string\" ? pkg.version : null;\n } catch {\n return null;\n }\n}\n\nfunction detectPackageManager(projectRoot: string): \"pnpm\" | \"npm\" | \"yarn\" {\n if (fs.existsSync(path.join(projectRoot, \"pnpm-lock.yaml\"))) return \"pnpm\";\n if (fs.existsSync(path.join(projectRoot, \"yarn.lock\"))) return \"yarn\";\n if (fs.existsSync(path.join(projectRoot, \"package-lock.json\"))) return \"npm\";\n // Prefer pnpm for Agent Native scaffolds.\n return \"pnpm\";\n}\n\nfunction installArgs(pm: \"pnpm\" | \"npm\" | \"yarn\"): string[] {\n if (pm === \"npm\") return [\"install\"];\n if (pm === \"yarn\") return [\"install\"];\n return [\"install\"];\n}\n\nexport function buildUpgradeDoctorReport(\n project: UpgradeProject,\n): UpgradeDoctorReport {\n const findings: FrameworkOverrideFinding[] = [];\n const bumps: AgentNativeDepBump[] = [];\n for (const file of project.packageFiles) {\n const pkg = readJsonFile(file);\n if (!pkg) continue;\n findings.push(...collectOverrideFindings(file, pkg));\n bumps.push(...collectBumps(file, pkg));\n }\n const installedCoreVersion = resolveInstalledPackageVersion(\n project.root,\n \"@agent-native/core\",\n );\n const cliCoreVersion = readCliCoreVersion();\n const skillsUpdateScript = project.packageFiles.some((file) => {\n const pkg = readJsonFile(file);\n return Boolean(pkg?.scripts?.[\"skills:update\"]);\n });\n return {\n project,\n findings,\n bumps,\n installedCoreVersion,\n cliCoreVersion,\n scaffoldStaleHint: skillsUpdateScript || bumps.length > 0,\n };\n}\n\nfunction relativeTo(root: string, file: string): string {\n const rel = path.relative(root, file);\n return rel || \".\";\n}\n\nfunction formatDoctorHuman(report: UpgradeDoctorReport): string {\n const lines: string[] = [];\n lines.push(`Project: ${report.project.root} (${report.project.kind})`);\n if (report.installedCoreVersion) {\n lines.push(`Installed @agent-native/core: ${report.installedCoreVersion}`);\n } else {\n lines.push(\"Installed @agent-native/core: (not found in node_modules)\");\n }\n if (report.cliCoreVersion) {\n lines.push(`CLI package version: ${report.cliCoreVersion}`);\n }\n if (report.findings.length === 0) {\n lines.push(\"Framework overrides/patches: none\");\n } else {\n lines.push(\"Framework overrides/patches:\");\n for (const finding of report.findings) {\n lines.push(\n ` - ${relativeTo(report.project.root, finding.file)} ${finding.field}[\"${finding.key}\"] = ${finding.value}`,\n );\n }\n }\n if (report.bumps.length === 0) {\n lines.push(\"Pending @agent-native/* bumps: none\");\n } else {\n lines.push(\"Pending @agent-native/* bumps:\");\n for (const bump of report.bumps) {\n lines.push(\n ` - ${relativeTo(report.project.root, bump.file)} ${bump.name}: ${bump.from} → ${bump.to}`,\n );\n }\n }\n return lines.join(\"\\n\");\n}\n\nconst FAILURE_GUIDANCE = [\n \"Upgrade failed. Do not paper over this with framework patches.\",\n \"Never add pnpm.overrides / patchedDependencies / resolutions for @agent-native/*.\",\n \"Never edit node_modules/@agent-native/* or invent local dispatch/core behavior overrides.\",\n \"Revert those changes if present, fix the app-level compile/runtime error, then re-run:\",\n \" npx @agent-native/core@latest upgrade\",\n].join(\"\\n\");\n\nfunction applyCodemodDependencyPlan(\n codemodResult: MigrationCodemodResult,\n): MigrationCodemodResult[\"changes\"] {\n const dependencyFiles = new Set(codemodResult.dependencyFiles);\n const applied: MigrationCodemodResult[\"changes\"] = [];\n for (const change of codemodResult.changes) {\n if (!dependencyFiles.has(change.file)) continue;\n fs.writeFileSync(change.file, change.after);\n applied.push(change);\n }\n return applied;\n}\n\nexport async function runUpgrade(\n argv: string[],\n io: UpgradeIo = defaultIo,\n): Promise<number> {\n const opts = parseUpgradeArgs(argv);\n if (opts.help || opts.command === \"help\") {\n printUpgradeHelp(io);\n return 0;\n }\n\n const cwd = path.resolve(opts.cwd ?? process.cwd());\n const project = detectUpgradeProject(cwd);\n if (!project) {\n const message =\n \"No Agent Native app/workspace found. Run from an app or workspace root that depends on @agent-native/core.\";\n if (opts.json) {\n io.err(JSON.stringify({ ok: false, message }, null, 2));\n } else {\n io.err(message);\n }\n return 1;\n }\n\n const doctor = buildUpgradeDoctorReport(project);\n if (opts.command === \"check\") {\n if (opts.json) {\n io.log(\n JSON.stringify({ ok: doctor.findings.length === 0, doctor }, null, 2),\n );\n } else {\n io.log(formatDoctorHuman(doctor));\n if (doctor.findings.length > 0) {\n io.err(\"\");\n io.err(FAILURE_GUIDANCE);\n }\n }\n return doctor.findings.length > 0 ? 1 : 0;\n }\n\n const dryRun = Boolean(opts.dryRun || (opts.codemods && !opts.yes));\n const result: UpgradeRunResult = {\n ok: true,\n dryRun,\n doctor,\n steps: [],\n message: \"\",\n exitCode: 0,\n };\n\n if (doctor.findings.length > 0 && !opts.force) {\n result.ok = false;\n result.exitCode = 1;\n result.message =\n \"Blocked: framework overrides/patches for @agent-native/* are present. Remove them, then re-run upgrade (or pass --force to continue unsafely).\";\n result.steps.push({\n id: \"doctor\",\n status: \"failed\",\n detail: result.message,\n });\n if (opts.json) {\n io.err(JSON.stringify(result, null, 2));\n } else {\n io.log(formatDoctorHuman(doctor));\n io.err(\"\");\n io.err(result.message);\n io.err(\"\");\n io.err(FAILURE_GUIDANCE);\n }\n return 1;\n }\n\n result.steps.push({\n id: \"doctor\",\n status: doctor.findings.length > 0 ? \"ok\" : \"ok\",\n detail:\n doctor.findings.length > 0\n ? \"Continuing with --force despite framework overrides/patches\"\n : \"No framework overrides/patches\",\n });\n\n // Apply package.json bumps.\n if (doctor.bumps.length === 0) {\n result.steps.push({\n id: \"bump\",\n status: \"skipped\",\n detail: \"All @agent-native/* deps already use latest or local pins\",\n });\n } else if (dryRun) {\n result.steps.push({\n id: \"bump\",\n status: \"planned\",\n detail: doctor.bumps\n .map(\n (b) =>\n `${relativeTo(project.root, b.file)} ${b.name}: ${b.from} → ${b.to}`,\n )\n .join(\"; \"),\n });\n } else {\n const byFile = new Map<string, AgentNativeDepBump[]>();\n for (const bump of doctor.bumps) {\n const list = byFile.get(bump.file) ?? [];\n list.push(bump);\n byFile.set(bump.file, list);\n }\n for (const [file, bumps] of byFile) {\n const pkg = readJsonFile(file);\n if (!pkg) continue;\n applyBumps(pkg, bumps);\n writeJsonFile(file, pkg);\n }\n result.steps.push({\n id: \"bump\",\n status: \"ok\",\n detail: `Updated ${doctor.bumps.length} @agent-native/* dependency pin(s)`,\n });\n }\n\n let codemodPlan:\n | {\n module: typeof import(\"./migration-codemod.js\");\n dependencyChanges: MigrationCodemodResult[\"changes\"];\n }\n | undefined;\n\n if (opts.codemods) {\n const codemodModule = await import(\"./migration-codemod.js\");\n const codemodResult = codemodModule.runMigrationCodemods({\n root: project.root,\n targetExists: codemodModule.createMigrationPlanningTargetResolver(\n project.root,\n ),\n });\n const diff = codemodModule.formatMigrationCodemodDiff(\n codemodResult,\n project.root,\n );\n const dependencyChanges = dryRun\n ? []\n : applyCodemodDependencyPlan(codemodResult);\n codemodPlan = {\n module: codemodModule,\n dependencyChanges,\n };\n\n if (dryRun) {\n result.codemod = {\n files: codemodResult.changes.map((change) =>\n relativeTo(project.root, change.file),\n ),\n warnings: codemodResult.warnings,\n diff,\n };\n }\n if (dryRun) {\n result.steps.push({\n id: \"codemods\",\n status: codemodResult.changes.length === 0 ? \"skipped\" : \"planned\",\n detail:\n codemodResult.changes.length === 0\n ? \"No manifest migrations found\"\n : `Would update ${codemodResult.changes.length} file(s)`,\n });\n }\n if (dryRun && !opts.json && diff) {\n io.log(diff);\n io.log(\"\");\n }\n if (dryRun && !opts.json) {\n for (const warning of codemodResult.warnings) {\n io.err(`[codemods] ${warning}`);\n }\n }\n }\n\n // Install.\n if (opts.skipInstall) {\n result.steps.push({\n id: \"install\",\n status: \"skipped\",\n detail: \"--skip-install\",\n });\n } else if (dryRun) {\n result.steps.push({\n id: \"install\",\n status: \"planned\",\n detail: `${detectPackageManager(project.root)} install`,\n });\n } else {\n const pm = detectPackageManager(project.root);\n const spawned = io.spawn(pm, installArgs(pm), {\n cwd: project.root,\n stdio: opts.json ? \"pipe\" : \"inherit\",\n });\n if (spawned.status !== 0) {\n result.ok = false;\n result.exitCode = spawned.status ?? 1;\n result.message = `${pm} install failed`;\n if (codemodPlan && codemodPlan.dependencyChanges.length > 0) {\n const dependencyResult: MigrationCodemodResult = {\n changes: codemodPlan.dependencyChanges,\n dependencyFiles: codemodPlan.dependencyChanges.map(\n (change) => change.file,\n ),\n warnings: [],\n };\n const diff = codemodPlan.module.formatMigrationCodemodDiff(\n dependencyResult,\n project.root,\n );\n result.codemod = {\n files: dependencyResult.changes.map((change) =>\n relativeTo(project.root, change.file),\n ),\n warnings: [],\n diff,\n };\n if (!opts.json && diff) {\n io.log(diff);\n io.log(\"\");\n }\n }\n result.steps.push({\n id: \"install\",\n status: \"failed\",\n detail: result.message,\n });\n emitResult(io, opts, result);\n return result.exitCode;\n }\n result.steps.push({ id: \"install\", status: \"ok\", detail: `${pm} install` });\n }\n\n if (codemodPlan && !dryRun) {\n const applied = codemodPlan.module.runMigrationCodemods({\n root: project.root,\n apply: true,\n });\n const actualResult: MigrationCodemodResult = {\n changes: [...codemodPlan.dependencyChanges, ...applied.changes],\n dependencyFiles: codemodPlan.dependencyChanges.map(\n (change) => change.file,\n ),\n warnings: applied.warnings,\n };\n const diff = codemodPlan.module.formatMigrationCodemodDiff(\n actualResult,\n project.root,\n );\n const files = [\n ...new Set(actualResult.changes.map((change) => change.file)),\n ];\n result.codemod = {\n files: files.map((file) => relativeTo(project.root, file)),\n warnings: actualResult.warnings,\n diff,\n };\n result.steps.push({\n id: \"codemods\",\n status: files.length === 0 ? \"skipped\" : \"ok\",\n detail:\n files.length === 0\n ? \"No resolvable manifest migrations found\"\n : opts.skipInstall\n ? `Updated ${files.length} file(s) without installing dependencies`\n : `Updated ${files.length} file(s) after dependency installation`,\n });\n if (!opts.json && diff) {\n io.log(diff);\n io.log(\"\");\n }\n if (!opts.json) {\n for (const warning of actualResult.warnings) {\n io.err(`[codemods] ${warning}`);\n }\n }\n }\n\n // Skills refresh.\n if (opts.skipSkills) {\n result.steps.push({\n id: \"skills\",\n status: \"skipped\",\n detail: \"--skip-skills\",\n });\n } else if (dryRun) {\n result.steps.push({\n id: \"skills\",\n status: \"planned\",\n detail: \"skills update scaffold --project\",\n });\n } else {\n try {\n await io.runSkillsUpdate(project.root);\n result.steps.push({\n id: \"skills\",\n status: \"ok\",\n detail: \"skills update scaffold --project\",\n });\n } catch (err) {\n result.ok = false;\n result.exitCode = 1;\n result.message = `skills update failed: ${err instanceof Error ? err.message : String(err)}`;\n result.steps.push({\n id: \"skills\",\n status: \"failed\",\n detail: result.message,\n });\n emitResult(io, opts, result);\n return result.exitCode;\n }\n }\n\n // Verify.\n if (opts.skipVerify) {\n result.steps.push({\n id: \"verify\",\n status: \"skipped\",\n detail: \"--skip-verify\",\n });\n } else if (dryRun) {\n result.steps.push({\n id: \"verify\",\n status: \"planned\",\n detail: \"typecheck (when available)\",\n });\n } else {\n const rootPkg = readJsonFile(path.join(project.root, \"package.json\"));\n const hasTypecheck = Boolean(rootPkg?.scripts?.typecheck);\n if (!hasTypecheck) {\n result.steps.push({\n id: \"verify\",\n status: \"skipped\",\n detail: \"no typecheck script\",\n });\n } else {\n const pm = detectPackageManager(project.root);\n const args =\n pm === \"npm\"\n ? [\"run\", \"typecheck\"]\n : pm === \"yarn\"\n ? [\"typecheck\"]\n : [\"typecheck\"];\n const spawned = io.spawn(pm, args, {\n cwd: project.root,\n stdio: opts.json ? \"pipe\" : \"inherit\",\n });\n if (spawned.status !== 0) {\n result.ok = false;\n result.exitCode = spawned.status ?? 1;\n result.message = \"typecheck failed\";\n result.steps.push({\n id: \"verify\",\n status: \"failed\",\n detail: result.message,\n });\n emitResult(io, opts, result);\n return result.exitCode;\n }\n result.steps.push({ id: \"verify\", status: \"ok\", detail: \"typecheck\" });\n }\n }\n\n result.message = dryRun\n ? opts.codemods && !opts.yes\n ? \"Codemod preview complete. Re-run with --codemods --yes to apply.\"\n : \"Dry run complete. Re-run without --dry-run to apply.\"\n : \"Upgrade complete. If the app still fails to run, fix app-level code — do not patch @agent-native/*.\";\n emitResult(io, opts, result);\n return 0;\n}\n\nfunction emitResult(\n io: UpgradeIo,\n opts: UpgradeCliOptions,\n result: UpgradeRunResult,\n): void {\n if (opts.json) {\n const sink = result.ok ? io.log : io.err;\n sink(JSON.stringify(result, null, 2));\n return;\n }\n io.log(formatDoctorHuman(result.doctor));\n io.log(\"\");\n for (const step of result.steps) {\n io.log(\n `[${step.status}] ${step.id}${step.detail ? ` — ${step.detail}` : \"\"}`,\n );\n }\n io.log(\"\");\n if (result.ok) {\n io.log(result.message);\n } else {\n io.err(result.message);\n io.err(\"\");\n io.err(FAILURE_GUIDANCE);\n }\n}\n"]}
@@ -26,8 +26,8 @@ export declare const getCollabState: import("h3").EventHandlerWithFetch<import("
26
26
  * Body: { update: string (base64), requestSource?: string }
27
27
  */
28
28
  export declare const postCollabUpdate: import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
29
- ok?: undefined;
30
29
  error: string;
30
+ ok?: undefined;
31
31
  } | {
32
32
  error?: undefined;
33
33
  ok: boolean;
@@ -13,13 +13,13 @@
13
13
  export declare function createNotificationsHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<"" | import("./types.js").Notification[] | {
14
14
  count: number;
15
15
  updated?: undefined;
16
- error?: undefined;
17
16
  ok?: undefined;
17
+ error?: undefined;
18
18
  } | {
19
19
  count?: undefined;
20
20
  updated: number;
21
- error?: undefined;
22
21
  ok?: undefined;
22
+ error?: undefined;
23
23
  } | {
24
24
  count?: undefined;
25
25
  updated?: undefined;
@@ -28,7 +28,7 @@ export declare function createNotificationsHandler(): import("h3").EventHandlerW
28
28
  } | {
29
29
  count?: undefined;
30
30
  updated?: undefined;
31
- error?: undefined;
32
31
  ok: boolean;
32
+ error?: undefined;
33
33
  }>>;
34
34
  //# sourceMappingURL=routes.d.ts.map
@@ -62,7 +62,7 @@ export declare function createObservabilityHandler(): import("h3").EventHandlerW
62
62
  summary?: undefined;
63
63
  spans?: undefined;
64
64
  id?: undefined;
65
- error?: undefined;
66
65
  ok: boolean;
66
+ error?: undefined;
67
67
  }>>;
68
68
  //# sourceMappingURL=routes.d.ts.map
@@ -37,17 +37,17 @@ export declare function createWriteSecretHandler(): import("h3").EventHandlerWit
37
37
  ok?: undefined;
38
38
  status?: undefined;
39
39
  } | {
40
+ error?: undefined;
40
41
  ok: boolean;
41
42
  status: string;
42
- error?: undefined;
43
43
  } | {
44
44
  ok?: undefined;
45
45
  error: string;
46
46
  removed?: undefined;
47
47
  } | {
48
+ error?: undefined;
48
49
  ok: boolean;
49
50
  removed: boolean;
50
- error?: undefined;
51
51
  }>>;
52
52
  /**
53
53
  * POST /_agent-native/secrets/:key/test — re-run the validator against the
@@ -58,13 +58,13 @@ export declare function createTestSecretHandler(): import("h3").EventHandlerWith
58
58
  error: string;
59
59
  note?: undefined;
60
60
  } | {
61
+ error?: undefined;
61
62
  ok: boolean;
62
63
  note?: undefined;
63
- error?: undefined;
64
64
  } | {
65
+ error?: undefined;
65
66
  ok: boolean;
66
67
  note: string;
67
- error?: undefined;
68
68
  } | {
69
69
  note?: undefined;
70
70
  ok: boolean;
@@ -95,12 +95,12 @@ export interface AdHocSecretPayload {
95
95
  export declare function createAdHocSecretHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<AdHocSecretPayload[] | {
96
96
  error: string;
97
97
  } | {
98
+ error?: undefined;
98
99
  ok: boolean;
99
100
  key: string;
100
- error?: undefined;
101
101
  } | {
102
+ error?: undefined;
102
103
  ok: boolean;
103
104
  removed: boolean;
104
- error?: undefined;
105
105
  }>>;
106
106
  //# sourceMappingURL=routes.d.ts.map
@@ -27,11 +27,11 @@ export declare function resolveAgentEngineApiKeyWriteTarget(event: H3Event, scop
27
27
  export declare function createAgentEngineApiKeyHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
28
28
  error: any;
29
29
  } | {
30
- error?: undefined;
31
30
  ok: boolean;
32
31
  key: string;
33
32
  baseUrlKey?: string;
34
33
  scope: AgentEngineApiKeyScope;
34
+ error?: undefined;
35
35
  }>>;
36
36
  export {};
37
37
  //# sourceMappingURL=agent-engine-api-key-route.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core",
3
- "version": "0.111.2",
3
+ "version": "0.111.3",
4
4
  "description": "Framework for agent-native application development — where AI agents and UI share SQL state, actions, and context",
5
5
  "homepage": "https://github.com/BuilderIO/agent-native#readme",
6
6
  "bugs": {