// src/lib/pages/actions.ts — Server Actions du module Pages (crawl, inventaire,
// assignation manuelle, picker). "use server" : ces wrappers sont appelés
// directement par l'UI et n'exposent DÉLIBÉRÉMENT aucun paramètre `deps` — les
// arguments d'une Server Action sont contrôlés par le client (surface réseau) ;
// injecter la garde de tenancy (`assertSite`) ou l'`enqueue` contournerait
// `assertSiteInActiveOrg` (leçon sécurité). La DI vit dans actions-core.ts
// (server-only, jamais exposé au réseau).
"use server";
import {
  fetchPageDetail,
  fetchSitePages,
  getActiveSiteCrawl,
  searchSitePages,
  setKeywordTargetPage,
  startSiteCrawl,
} from "./actions-core";

export type {
  PageDetail,
  SitePageRow,
  StartSiteCrawlResult,
} from "./actions-core";

export async function startSiteCrawlAction(siteId: string) {
  return startSiteCrawl(siteId);
}

export async function getActiveSiteCrawlAction(siteId: string) {
  return getActiveSiteCrawl(siteId);
}

export async function fetchSitePagesAction(
  siteId: string,
  opts?: { q?: string; issue?: string; limit?: number },
) {
  return fetchSitePages(siteId, opts);
}

export async function fetchPageDetailAction(siteId: string, pageId: string) {
  return fetchPageDetail(siteId, pageId);
}

export async function setKeywordTargetPageAction(
  siteId: string,
  keywordId: string,
  pageId: string | null,
) {
  return setKeywordTargetPage(siteId, keywordId, pageId);
}

export async function searchSitePagesAction(siteId: string, q: string) {
  return searchSitePages(siteId, q);
}
