///|
pub fn default_catalog() -> Array[BookCatalogEntry] {
  [
    BookCatalogEntry::new(
      id="coding",
      name="Moonbook / Coding",
      purpose="Harness engineering for source work, repo memory, and execution policy.",
      workspace_root=default_workspace_root("coding"),
      memory_scope=BookPrivate,
      tags=["moonbit", "git", "review"],
      skills=["analysis", "memory", "review"],
    ),
    BookCatalogEntry::new(
      id="finance",
      name="Moonbook / Finance",
      purpose="Private daily finance operations with isolated memory and task artifacts.",
      workspace_root=default_workspace_root("finance"),
      memory_scope=TaskEphemeral,
      tags=["ledger", "planning", "ops"],
      skills=["planning", "memory", "reporting"],
    ),
  ]
}

///|
pub fn default_workspace_root(book_id : String) -> String {
  @moonsuite.book_root(@storage.moontown_active_workspace_root(), book_id)
}

///|
pub fn default_catalog_path() -> String {
  @storage.moontown_product_artifact("moonbooks.json")
}

///|
pub fn default_moonbook_root() -> String {
  match @sys.get_env_var("MOONTOWN_MOONBOOK_ROOT") {
    Some(root) if !root.is_empty() => root
    _ =>
      match @sys.get_env_var("MOONBOOK_ROOT") {
        Some(root) if !root.is_empty() => root
        _ => default_moonbook_external_root()
      }
  }
}

///|
fn default_moonbook_external_root() -> String {
  @storage.moontown_product_artifact("external/moonbook")
}