{
  "version": 3,
  "sources": ["../index.ts"],
  "sourcesContent": [
    "#!/usr/bin/env bun\n\nimport { Command } from \"commander\";\nimport {\n  access,\n  copyFile,\n  mkdir,\n  readdir,\n  readFile,\n  rename,\n  rm,\n  stat,\n  writeFile,\n} from \"fs/promises\";\nimport { basename, dirname, isAbsolute, join, relative, resolve } from \"path\";\nimport { cwd } from \"process\";\nimport { randomUUID } from \"crypto\";\nimport { fileURLToPath } from \"url\";\n\nimport { spinner as makeSpinner, log } from \"@clack/prompts\";\nimport pc from \"picocolors\";\nimport { parse, stringify } from \"yaml\";\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\nconst DEFAULT_ROOT = \"raven\";\nconst CORE_PACKAGE_NAMES = [\"@ravenjs/core\", \"@raven.js/core\"];\nconst SOURCE_EXTENSIONS = [\".ts\", \".tsx\", \".js\", \".jsx\"];\nconst SYNC_FAIL_AFTER_BACKUP_ENV = \"RAVEN_SYNC_TEST_FAIL_AFTER_BACKUP\";\n\ninterface CLIOptions {\n  verbose?: boolean;\n  root?: string;\n  registry?: string;\n  language?: string;\n}\n\ninterface ManagedDirInfo {\n  files: string[];\n}\n\ninterface SourceManifest {\n  version: string;\n  core: ManagedDirInfo;\n}\n\ninterface RavenYamlConfig {\n  version: string;\n  language?: string;\n}\n\ninterface StatusResult {\n  installed: boolean;\n  installDir: string;\n  rootDir: string;\n  version?: string;\n  language?: string;\n}\n\ninterface ManagedState {\n  coreInstalled: boolean;\n  passthroughFiles: string[];\n  legacyDirs: string[];\n}\n\ninterface SyncBuildResult {\n  stagingDir: string;\n  modifiedFiles: string[];\n}\n\ninterface GitCommandResult {\n  exitCode: number;\n  stdout: string;\n  stderr: string;\n}\n\nfunction loadCliVersion(): string {\n  return process.env.RAVEN_CLI_VERSION ?? \"0.0.0\";\n}\n\nfunction getErrorMessage(error: unknown): string {\n  if (error instanceof Error) {\n    return error.message;\n  }\n  return String(error);\n}\n\nfunction error(message: string): never {\n  console.error(message);\n  process.exit(1);\n}\n\nfunction success(message: string) {\n  log.success(message);\n}\n\nfunction printSectionHeader(title: string) {\n  log.step(title);\n}\n\nfunction printListItem(item: string) {\n  log.message(item, { symbol: pc.dim(\"-\") });\n}\n\nasync function ensureDir(path: string) {\n  try {\n    await mkdir(path, { recursive: true });\n  } catch (e: any) {\n    if (e.code !== \"EEXIST\") {\n      throw e;\n    }\n  }\n}\n\nasync function pathExists(path: string): Promise<boolean> {\n  try {\n    await stat(path);\n    return true;\n  } catch (e: any) {\n    if (e.code === \"ENOENT\") {\n      return false;\n    }\n    throw e;\n  }\n}\n\nasync function isDirEmpty(path: string): Promise<boolean> {\n  try {\n    const entries = await readdir(path);\n    return entries.length === 0;\n  } catch (e: any) {\n    if (e.code === \"ENOENT\") {\n      return true;\n    }\n    throw e;\n  }\n}\n\nfunction runGitCommand(args: string[]): GitCommandResult {\n  const proc = Bun.spawnSync({\n    cmd: [\"git\", ...args],\n    cwd: cwd(),\n    stdout: \"pipe\",\n    stderr: \"pipe\",\n  });\n\n  return {\n    exitCode: proc.exitCode,\n    stdout: Buffer.from(proc.stdout).toString(\"utf-8\"),\n    stderr: Buffer.from(proc.stderr).toString(\"utf-8\"),\n  };\n}\n\nfunction isGitUnavailable(result: GitCommandResult): boolean {\n  const stderr = result.stderr.toLowerCase();\n  return (\n    result.exitCode === 127 ||\n    stderr.includes(\"command not found\") ||\n    stderr.includes(\"no such file or directory\")\n  );\n}\n\nfunction ensureGitWorktreeForSync(): void {\n  const insideWorktree = runGitCommand([\"rev-parse\", \"--is-inside-work-tree\"]);\n  if (insideWorktree.exitCode !== 0) {\n    if (isGitUnavailable(insideWorktree)) {\n      error(\"Git is required for 'raven sync'. Install Git first.\");\n    }\n\n    error(\n      \"raven sync requires a Git worktree. Initialize Git or create a recoverable backup first.\",\n    );\n  }\n}\n\nfunction toGitPathspec(path: string): string {\n  return relative(cwd(), path).replace(/\\\\/g, \"/\");\n}\n\nfunction getManagedGitPathspecs(ravenDir: string, managedState: ManagedState): string[] {\n  const pathspecs = [\n    join(ravenDir, \"raven.yaml\"),\n    getCoreDir(ravenDir),\n    ...managedState.legacyDirs.map((dir) => join(ravenDir, dir)),\n  ];\n\n  return [...new Set(pathspecs.map(toGitPathspec))].sort();\n}\n\nfunction ensureManagedRavenPathsClean(ravenDir: string, managedState: ManagedState): void {\n  const status = runGitCommand([\n    \"status\",\n    \"--porcelain\",\n    \"--untracked-files=all\",\n    \"--\",\n    ...getManagedGitPathspecs(ravenDir, managedState),\n  ]);\n  if (status.exitCode !== 0) {\n    if (isGitUnavailable(status)) {\n      error(\"Git is required for 'raven sync'. Install Git first.\");\n    }\n\n    error(`Failed to inspect Git worktree: ${status.stderr.trim() || \"unknown git error\"}`);\n  }\n\n  if (status.stdout.trim() !== \"\") {\n    const rootLabel = toGitPathspec(ravenDir);\n    error(\n      `raven sync requires clean managed Raven paths. Commit, stash, or back up changes under ${rootLabel}/raven.yaml, ${rootLabel}/core/, and managed legacy directories first.`,\n    );\n  }\n}\n\nfunction getRoot(options: CLIOptions): string {\n  return options.root || process.env.RAVEN_ROOT || DEFAULT_ROOT;\n}\n\nfunction getRavenDir(options: CLIOptions): string {\n  return join(cwd(), getRoot(options));\n}\n\nfunction getCoreDir(rootDir: string): string {\n  return join(rootDir, \"core\");\n}\n\nasync function verboseLog(message: string, options?: CLIOptions) {\n  if (options?.verbose) {\n    console.log(message);\n  }\n}\n\nasync function loadManifest(options?: { registry?: string }): Promise<SourceManifest> {\n  const candidates: string[] = [];\n  if (options?.registry) {\n    candidates.push(\n      isAbsolute(options.registry) ? options.registry : resolve(cwd(), options.registry),\n    );\n  }\n  if (process.env.RAVEN_DEFAULT_REGISTRY_PATH) {\n    const registryPath = process.env.RAVEN_DEFAULT_REGISTRY_PATH;\n    candidates.push(isAbsolute(registryPath) ? registryPath : resolve(cwd(), registryPath));\n  }\n  candidates.push(join(__dirname, \"registry.json\"));\n\n  for (const candidate of candidates) {\n    if (await pathExists(candidate)) {\n      const content = await readFile(candidate, \"utf-8\");\n      return JSON.parse(content) as SourceManifest;\n    }\n  }\n\n  error(\"registry.json not found. Run 'bun run build' in packages/cli first.\");\n}\n\nasync function createRavenYaml(destDir: string, version: string, language?: string) {\n  const data: RavenYamlConfig = { version };\n  if (language !== undefined) {\n    data.language = language;\n  }\n  const content = stringify(data);\n  await writeFile(join(destDir, \"raven.yaml\"), content);\n}\n\nasync function readRavenYamlConfig(ravenDir: string): Promise<RavenYamlConfig> {\n  const yamlPath = join(ravenDir, \"raven.yaml\");\n  const content = await readFile(yamlPath, \"utf-8\");\n  const config = parse(content) as RavenYamlConfig;\n\n  if (!config?.version) {\n    throw new Error(\"Invalid raven.yaml: version field is missing\");\n  }\n\n  return config;\n}\n\nasync function ensureRavenInitialized(\n  options: CLIOptions,\n): Promise<{ ravenDir: string; config: RavenYamlConfig }> {\n  const ravenDir = getRavenDir(options);\n  if (!(await pathExists(ravenDir))) {\n    error(`RavenJS not installed at ${getRoot(options)}/. Run 'raven init' first.`);\n  }\n\n  try {\n    return {\n      ravenDir,\n      config: await readRavenYamlConfig(ravenDir),\n    };\n  } catch (e) {\n    error(`Failed to load raven.yaml: ${getErrorMessage(e)}`);\n  }\n}\n\nfunction isSourceFile(file: string): boolean {\n  return SOURCE_EXTENSIONS.some((extension) => file.endsWith(extension));\n}\n\nfunction normalizeImportPath(path: string): string {\n  const normalized = path.replace(/\\\\/g, \"/\");\n  return normalized.startsWith(\".\") ? normalized : `./${normalized}`;\n}\n\nfunction rewriteCoreImports(content: string, destinationPath: string, ravenDir: string): string {\n  const targetPath = normalizeImportPath(relative(dirname(destinationPath), getCoreDir(ravenDir)));\n  let output = content;\n\n  for (const packageName of CORE_PACKAGE_NAMES) {\n    const escaped = packageName.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n    output = output\n      .replace(new RegExp(`from\\\\s+\"${escaped}\"`, \"g\"), `from \"${targetPath}\"`)\n      .replace(new RegExp(`from\\\\s+'${escaped}'`, \"g\"), `from '${targetPath}'`);\n  }\n\n  return output;\n}\n\nasync function copyManagedFile(\n  sourcePath: string,\n  destinationPath: string,\n  options?: CLIOptions,\n  ravenDir?: string,\n): Promise<void> {\n  await verboseLog(`  Copying ${sourcePath} -> ${destinationPath}`, options);\n\n  if (!(await pathExists(sourcePath))) {\n    throw new Error(`Missing embedded source file: ${sourcePath}`);\n  }\n\n  let content = await readFile(sourcePath, \"utf-8\");\n  if (ravenDir && isSourceFile(destinationPath)) {\n    content = rewriteCoreImports(content, destinationPath, ravenDir);\n  }\n\n  await ensureDir(dirname(destinationPath));\n  await writeFile(destinationPath, content);\n}\n\nasync function installCore(manifest: SourceManifest, ravenDir: string, options?: CLIOptions) {\n  const sourceRoot = join(__dirname, \"source\", \"core\");\n  const coreDir = getCoreDir(ravenDir);\n\n  for (const file of manifest.core.files) {\n    await copyManagedFile(join(sourceRoot, file), join(coreDir, file), options);\n  }\n}\n\nfunction getManagedOutputPaths(manifest: SourceManifest, ravenDir: string): string[] {\n  const corePaths = manifest.core.files.map((file) => join(getCoreDir(ravenDir), file));\n\n  return [join(ravenDir, \"raven.yaml\"), ...corePaths].sort();\n}\n\nasync function installManagedAssets(\n  manifest: SourceManifest,\n  ravenDir: string,\n  options?: CLIOptions,\n): Promise<void> {\n  await installCore(manifest, ravenDir, options);\n}\n\nasync function getManagedState(ravenDir: string): Promise<ManagedState> {\n  const passthroughFiles: string[] = [];\n  const legacyDirs: string[] = [];\n  const coreDir = getCoreDir(ravenDir);\n  const coreInstalled = (await pathExists(coreDir)) && !(await isDirEmpty(coreDir));\n\n  if (!(await pathExists(ravenDir))) {\n    return {\n      coreInstalled: false,\n      passthroughFiles,\n      legacyDirs,\n    };\n  }\n\n  const entries = await readdir(ravenDir, { withFileTypes: true });\n  for (const entry of entries.sort((left, right) => left.name.localeCompare(right.name))) {\n    if (entry.name === \"raven.yaml\") {\n      continue;\n    }\n\n    if (entry.isDirectory()) {\n      if (entry.name === \"core\") {\n        continue;\n      }\n      legacyDirs.push(entry.name);\n      continue;\n    }\n\n    passthroughFiles.push(entry.name);\n  }\n\n  return {\n    coreInstalled,\n    passthroughFiles,\n    legacyDirs,\n  };\n}\n\nasync function copyRootPassthroughFiles(\n  sourceDir: string,\n  destDir: string,\n  passthroughFiles: string[],\n): Promise<void> {\n  await Promise.all(\n    passthroughFiles.map(async (fileName) => {\n      await copyFile(join(sourceDir, fileName), join(destDir, fileName));\n    }),\n  );\n}\n\nfunction createSiblingTempPath(targetDir: string, label: string): string {\n  return join(dirname(targetDir), `.${basename(targetDir)}-${label}-${randomUUID()}`);\n}\n\nasync function buildSyncRoot(\n  ravenDir: string,\n  config: RavenYamlConfig,\n  manifest: SourceManifest,\n  options?: CLIOptions,\n): Promise<SyncBuildResult> {\n  const stagingDir = createSiblingTempPath(ravenDir, \"sync\");\n  const managedState = await getManagedState(ravenDir);\n\n  await ensureDir(stagingDir);\n\n  try {\n    await copyRootPassthroughFiles(ravenDir, stagingDir, managedState.passthroughFiles);\n    await createRavenYaml(stagingDir, manifest.version, config.language);\n    await installManagedAssets(manifest, stagingDir, options);\n\n    return {\n      stagingDir,\n      modifiedFiles: getManagedOutputPaths(manifest, ravenDir),\n    };\n  } catch (e) {\n    await rm(stagingDir, { recursive: true, force: true }).catch(() => {});\n    throw e;\n  }\n}\n\nfunction maybeFailAfterBackupForTests() {\n  if (process.env[SYNC_FAIL_AFTER_BACKUP_ENV] === \"1\") {\n    throw new Error(\"Simulated sync failure after backup\");\n  }\n}\n\nasync function commitStagedRoot(ravenDir: string, stagingDir: string): Promise<void> {\n  const backupDir = createSiblingTempPath(ravenDir, \"backup\");\n  let backupCreated = false;\n  let stagingCommitted = false;\n\n  try {\n    await rename(ravenDir, backupDir);\n    backupCreated = true;\n\n    maybeFailAfterBackupForTests();\n\n    await rename(stagingDir, ravenDir);\n    stagingCommitted = true;\n  } catch (e) {\n    if (backupCreated && !stagingCommitted) {\n      try {\n        if (await pathExists(ravenDir)) {\n          await rm(ravenDir, { recursive: true, force: true });\n        }\n        await rename(backupDir, ravenDir);\n        backupCreated = false;\n      } catch (rollbackError) {\n        throw new Error(\n          `${getErrorMessage(e)}; rollback failed: ${getErrorMessage(rollbackError)}`,\n        );\n      }\n    }\n\n    throw e;\n  } finally {\n    if (!stagingCommitted) {\n      await rm(stagingDir, { recursive: true, force: true }).catch(() => {});\n    }\n\n    if (stagingCommitted && backupCreated) {\n      await rm(backupDir, { recursive: true, force: true }).catch(() => {});\n    }\n  }\n}\n\nasync function getStatus(manifest: SourceManifest, options: CLIOptions): Promise<StatusResult> {\n  const ravenDir = getRavenDir(options);\n  const installDir = resolve(getCoreDir(ravenDir));\n  const rootDir = resolve(ravenDir);\n  let version: string | undefined = manifest.version;\n  let language = \"English (default)\";\n\n  if (await pathExists(ravenDir)) {\n    try {\n      const config = await readRavenYamlConfig(ravenDir);\n      version = config.version;\n      language = config.language ?? language;\n    } catch {\n      // ignore malformed raven.yaml in status; still report expected locations\n    }\n  }\n\n  const installed =\n    (await pathExists(getCoreDir(ravenDir))) && !(await isDirEmpty(getCoreDir(ravenDir)));\n\n  return {\n    installed,\n    installDir,\n    rootDir,\n    version,\n    language,\n  };\n}\n\nasync function cmdInit(options: CLIOptions) {\n  const manifest = await loadManifest(options);\n  const ravenDir = getRavenDir(options);\n  const coreDir = getCoreDir(ravenDir);\n  const modifiedFiles: string[] = [];\n\n  const doInit = async () => {\n    const ravenDirExists = await pathExists(ravenDir);\n    const ravenYamlPath = join(ravenDir, \"raven.yaml\");\n    const yamlExists = await pathExists(ravenYamlPath);\n    const coreInstalled = (await pathExists(coreDir)) && !(await isDirEmpty(coreDir));\n\n    await verboseLog(`Initializing RavenJS in ${cwd()}`, options);\n\n    if (!ravenDirExists) {\n      await ensureDir(ravenDir);\n    }\n\n    if (!yamlExists) {\n      await createRavenYaml(ravenDir, manifest.version, options.language);\n      modifiedFiles.push(ravenYamlPath);\n    }\n\n    if (!coreInstalled) {\n      await installCore(manifest, ravenDir, options);\n      modifiedFiles.push(...manifest.core.files.map((file) => join(coreDir, file)));\n    }\n  };\n\n  if (options.verbose) {\n    await doInit();\n  } else {\n    const spinner = makeSpinner();\n    spinner.start(\"Initializing RavenJS...\");\n    try {\n      await doInit();\n    } catch (e) {\n      spinner.stop(\"Initialization failed\");\n      error(getErrorMessage(e));\n    }\n    spinner.stop(\"Initialization complete\");\n  }\n\n  success(\"RavenJS initialized.\");\n\n  printSectionHeader(\"Managed Paths\");\n  if (modifiedFiles.length === 0) {\n    printListItem(\"No changes (existing Raven core kept as-is)\");\n  } else {\n    for (const file of modifiedFiles) {\n      printListItem(file);\n    }\n  }\n}\n\nasync function cmdSync(options: CLIOptions) {\n  const manifest = await loadManifest(options);\n  ensureGitWorktreeForSync();\n  const { ravenDir, config } = await ensureRavenInitialized(options);\n  const managedState = await getManagedState(ravenDir);\n  ensureManagedRavenPathsClean(ravenDir, managedState);\n\n  try {\n    const syncBuild = await buildSyncRoot(ravenDir, config, manifest, options);\n    await commitStagedRoot(ravenDir, syncBuild.stagingDir);\n\n    console.log(\n      JSON.stringify({\n        success: true,\n        removedDirectories: managedState.legacyDirs,\n        modifiedFiles: syncBuild.modifiedFiles,\n      }),\n    );\n    console.log(JSON.stringify(await getStatus(manifest, options)));\n  } catch (e) {\n    error(getErrorMessage(e));\n  }\n}\n\nasync function cmdStatus(options: CLIOptions) {\n  const manifest = await loadManifest(options);\n  console.log(JSON.stringify(await getStatus(manifest, options)));\n}\n\nconst program = new Command(\"raven\");\nprogram.version(loadCliVersion());\n\nprogram\n  .option(\"--registry <path>\", \"Source manifest json path (default: same dir as CLI)\")\n  .option(\"--root <dir>\", \"RavenJS root directory (default: raven)\")\n  .option(\"-v, --verbose\", \"Verbose output\");\n\nprogram\n  .command(\"init\")\n  .description(\"Initialize RavenJS root and install the managed core reference tree.\")\n  .option(\"--language <lang>\", \"Language (stored in raven.yaml)\")\n  .action(async function (this: { opts: () => CLIOptions }) {\n    const options = this.opts();\n    await cmdInit({ ...program.opts(), language: options.language } as CLIOptions);\n  });\n\nprogram\n  .command(\"sync\")\n  .description(\"Sync the managed Raven core in a Git worktree with clean managed Raven paths.\")\n  .action(async () => {\n    await cmdSync(program.opts() as CLIOptions);\n  });\n\nprogram\n  .command(\"status\")\n  .description(\"Show RavenJS installation status for the managed core tree.\")\n  .action(async () => {\n    await cmdStatus(program.opts() as CLIOptions);\n  });\n\n(async () => {\n  await program.parseAsync();\n})().catch((e) => {\n  error(getErrorMessage(e));\n});\n"
  ],
  "mappings": "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",
  "debugId": "21DD042D27FCCAD464756E2164756E21",
  "names": []
}