{"version":3,"file":"scaffold.mjs","names":[],"sources":["../../../src/cli/commands/scaffold.ts"],"sourcesContent":["import { colors, icons } from \"../../utils/theme\";\nimport { exitCodeFor } from \"../exit-codes\";\nimport { printSyncOutcome, UPSTREAM_ISSUE_URL } from \"../render/sync\";\nimport type { ResultRenderer } from \"./context\";\n\nexport const scaffoldRenderers: Record<string, ResultRenderer> = {\n  import: async (result, ctx) => {\n    const input = ctx.input;\n    if ((input as any).json) {\n      console.log(JSON.stringify(result, null, 2));\n      return;\n    }\n    console.log();\n    if (exitCodeFor(result) === 1) {\n      console.error(`[CLI] ${result.error || \"Unknown error\"}`);\n      if (result.reportPath) console.error(`  Report: ${result.reportPath}`);\n      process.exit(1);\n    }\n    if (result.sourceRepository) {\n      console.log(\n        `  ${colors.dim(\"Upstream:\")} ${result.sourceRepository} @ ${\n          result.ref || \"default branch\"\n        }${result.resolvedSha ? colors.dim(` (commit ${result.resolvedSha})`) : \"\"}`,\n      );\n    }\n    for (const warning of result.warnings ?? []) {\n      console.log(`  ${colors.yellow(\"Note:\")} ${warning}`);\n    }\n    if (result.status === \"dry-run\") {\n      console.log(colors.cyan(`${icons.ok} Dry run — no files written`));\n    } else if (result.status === \"imported\") {\n      console.log(colors.green(`${icons.ok} Imported ${result.workspace} from ${result.from}`));\n    } else {\n      console.log(colors.yellow(`${icons.err} Conflicts — nothing written`));\n    }\n    console.log(\n      `  ${colors.dim(\"Results:\")} ${result.updated.length} updated, ${result.added.length} added, ${result.merged.length} merged, ${result.conflicts.length} conflicted, ${result.preservedLocal.length} local-only preserved, ${result.unchanged.length} unchanged`,\n    );\n    if (result.conflicts.length > 0) {\n      const heldSet: Set<string> = new Set(result.heldBackMigrations ?? []);\n      console.log(\n        `  ${colors.yellow(\"Conflicts\")} (unresolvable — manual-port checklist${\n          result.status === \"conflicts\"\n            ? \"; re-run with --yes to apply upstream\"\n            : result.backupDir\n              ? `, upstream applied, local copies at ${result.backupDir}`\n              : \"\"\n        }):`,\n      );\n      for (const file of result.conflicts) {\n        console.log(\n          `    ${colors.dim(heldSet.has(file) ? `${file} (held — migration chain)` : file)}`,\n        );\n      }\n    }\n    if (result.heldBackMigrations?.length > 0) {\n      console.log(`  ${colors.yellow(\"Migration chain held back\")}:`);\n      for (const file of result.heldBackMigrations) console.log(`    ${colors.dim(file)}`);\n    }\n    if (result.migrationCollisions.length > 0) {\n      console.log(`  ${colors.yellow(\"Unresolvable migration collisions\")}:`);\n      for (const collision of result.migrationCollisions) {\n        console.log(`    ${colors.dim(collision.message)}`);\n      }\n    }\n    if (result.migrationReconciliation && result.migrationReconciliation.appended.length > 0) {\n      console.log(\n        `  ${colors.green(\"Migration chain reconciled\")}: ${result.migrationReconciliation.kept.length} applied migration(s) kept, ${result.migrationReconciliation.appended.length} appended:`,\n      );\n      for (const append of result.migrationReconciliation.appended) {\n        console.log(`    ${colors.dim(`${append.fromTag} → ${append.toTag} (idx ${append.idx})`)}`);\n      }\n      console.log(\n        `  ${colors.dim(\"Next boot applies the appended migration(s); renamed snapshots should be reviewed against `drizzle-kit generate` before generating new migrations.\")}`,\n      );\n    } else if (\n      result.migrationReconciliation &&\n      result.migrationReconciliation.contentMatched.length > 0\n    ) {\n      console.log(\n        `  ${colors.dim(\"Migration chain:\")} every upstream migration is already applied (kept: ${result.migrationReconciliation.kept.length}, matched by content: ${result.migrationReconciliation.contentMatched.length})`,\n      );\n    }\n    if (\n      result.routeDelta &&\n      (result.routeDelta.oursOnly.length > 0 || result.routeDelta.theirsOnly.length > 0)\n    ) {\n      console.log(\n        `  ${colors.dim(\"Route delta:\")} ${result.routeDelta.oursOnly.length} ours-only, ${result.routeDelta.theirsOnly.length} theirs-only`,\n      );\n      for (const route of result.routeDelta.oursOnly)\n        console.log(`    ${colors.dim(`ours:   ${route}`)}`);\n      for (const route of result.routeDelta.theirsOnly)\n        console.log(`    ${colors.dim(`theirs: ${route}`)}`);\n    }\n    if (result.reportPath) {\n      console.log(`  Report: ${colors.dim(result.reportPath)}`);\n    }\n    if (result.status === \"conflicts\") {\n      console.log();\n      console.error(\n        `[CLI] ${result.conflicts.length} unresolvable conflict(s)${\n          result.migrationCollisions.length > 0\n            ? ` and ${result.migrationCollisions.length} migration collision(s)`\n            : \"\"\n        } — nothing was written. Re-run with --yes to apply upstream (local copies are backed up first).`,\n      );\n      process.exit(1);\n    }\n    console.log();\n    return;\n  },\n\n  upgrade: async (result, ctx) => {\n    const input = ctx.input;\n    if ((input as any).json) {\n      console.log(JSON.stringify(result, null, 2));\n      return;\n    }\n    console.log();\n    if (result.status === \"already-upgraded\") {\n      console.log(colors.green(`${icons.ok} Already upgraded · v2 — nothing to do`));\n      for (const note of result.notes ?? []) console.log(`  ${colors.dim(note)}`);\n      console.log();\n      return;\n    }\n    if (result.status === \"audit\") {\n      type AuditFinding = {\n        check: string;\n        path: string;\n        severity: \"blocker\" | \"warn\";\n        message: string;\n      };\n      const audit = result.audit;\n      const findings: AuditFinding[] = audit?.findings ?? [];\n      const blockers = findings.filter((f) => f.severity === \"blocker\");\n      const warns = findings.filter((f) => f.severity === \"warn\");\n      console.log(colors.cyan(`v1 upgrade audit — Tier ${audit?.tier ?? \"?\"}`));\n      console.log(`  ${colors.dim(`blockers: ${blockers.length}, warns: ${warns.length}`)}`);\n      const formatFinding = (f: AuditFinding) =>\n        `  [${f.severity}] ${f.check} ${f.path}: ${f.message}`;\n      for (const f of blockers) console.log(colors.error(formatFinding(f)));\n      for (const f of warns) console.log(colors.yellow(formatFinding(f)));\n      console.log(`  ${colors.dim(\"manifest: .bos/v2-upgrade-manifest.json\")}`);\n      console.log();\n      return;\n    }\n    if (result.status === \"gate-blocked\") {\n      console.error(colors.error(\"\\nGATE BLOCKED — normalize in v1 before upgrading to v2.\"));\n      for (const blocker of (result.blockers ?? []) as Array<{\n        check: string;\n        path: string;\n        severity: string;\n        message: string;\n      }>) {\n        console.error(\n          `  [${blocker.severity}] ${blocker.check} ${blocker.path}: ${blocker.message}`,\n        );\n      }\n      console.error();\n      process.exit(1);\n    }\n    if (exitCodeFor(result) === 1) {\n      console.error(`[CLI] ${result.error || \"Unknown error\"}`);\n      process.exit(1);\n    }\n    if (result.status === \"dry-run\") {\n      console.log(colors.cyan(`${icons.ok} Dry run — no changes applied`));\n    } else {\n      console.log(colors.green(`${icons.ok} Upgrade complete`));\n    }\n    if (result.platform) {\n      console.log(\n        `  ${colors.dim(`Platform ${result.platform.resolved}${result.platform.fromCache ? \" (cached)\" : \"\"} — ${result.platform.source}`)}`,\n      );\n    }\n    const mainPkg = result.packages.find(\n      (p: { name: string; from?: string; to: string }) => p.name === \"everything-dev\",\n    );\n    const versionDelta =\n      mainPkg?.from && mainPkg.from !== mainPkg.to ? `${mainPkg.from} → ${mainPkg.to}` : null;\n    if (versionDelta) {\n      console.log(`  ${colors.dim(`Upgraded everything-dev ${versionDelta}`)}`);\n    }\n    for (const pkg of result.packages) {\n      if (pkg.name === \"everything-dev\") continue;\n      if (pkg.from && pkg.from !== pkg.to) {\n        console.log(`  ${colors.dim(`${pkg.name}  ${pkg.from} → ${pkg.to}`)}`);\n      } else if (!pkg.from) {\n        console.log(`  ${colors.dim(`${pkg.name}  ${pkg.to} (new)`)}`);\n      } else if (result.status !== \"dry-run\") {\n        console.log(`  ${colors.dim(`${pkg.name}  ${pkg.to} (up to date)`)}`);\n      }\n    }\n    if (result.changelogUrl) {\n      console.log(`  Changelog: ${result.changelogUrl}`);\n    }\n    for (const note of result.notes ?? []) {\n      console.log(`  ${colors.dim(`note: ${note}`)}`);\n    }\n    // CI drift alarm (ADR 0034): --check exits 1 when updates are available —\n    // after the drift details are printed, never silently.\n    if (result.status === \"dry-run\" && (input as any).check) {\n      if (result.updatesAvailable) {\n        console.log(colors.yellow(`${icons.err} Updates available — run \\`bos upgrade\\``));\n        console.log();\n        process.exit(1);\n      }\n      console.log(colors.green(`${icons.ok} Up to date`));\n      console.log();\n      process.exit(0);\n    }\n    if (result.sync) {\n      console.log(`  ${colors.dim(\"Sync results:\")}`);\n      printSyncOutcome(result.sync);\n    }\n    if (result.migrated && result.migrated.length > 0) {\n      console.log(`  Migrated: ${result.migrated.length} file(s)`);\n      for (const f of result.migrated) console.log(`    ${colors.dim(f)}`);\n    }\n    if (versionDelta || (result.sync && result.sync.conflicted.length > 0)) {\n      console.log();\n      console.log(colors.dim(\"  For AI agents:\"));\n      const somedelta =\n        mainPkg?.from && mainPkg.to\n          ? `v${mainPkg.from.replace(/^[\\^~>=v]+/, \"\")}...v${mainPkg.to.replace(/^[\\^~>=v]+/, \"\")}`\n          : \"\";\n      console.log(\n        colors.dim(`  This upgrade applied template changes${somedelta ? ` (${somedelta})` : \"\"}.`),\n      );\n      if (result.sync && result.sync.conflicted.length > 0) {\n        console.log(\n          colors.dim(\n            `  ${result.sync.conflicted.length} file(s) were applied over local conflicts — backups at ${result.sync.backupDir || \".bos/sync-backup/\"}.`,\n          ),\n        );\n        console.log(\n          colors.dim(\n            `  If local changes should be preserved upstream, file an issue: ${UPSTREAM_ISSUE_URL} (or open a PR).`,\n          ),\n        );\n      }\n      console.log(\n        colors.dim(\n          \"  Load matching intent skills: pnpm dlx @tanstack/intent@latest load everything-dev#...\",\n        ),\n      );\n      console.log(colors.dim(\"  Review AGENTS.md — local updates may need merging.\"));\n    } else if (!versionDelta) {\n      console.log(\n        colors.dim(\n          \"  Framework version unchanged — template files untouched; changes land on the next release.\",\n        ),\n      );\n    }\n    console.log();\n    return;\n  },\n};\n"],"mappings":"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"}