import { describe, expect, it } from "vitest";
import { createXSearchTool } from "./x-search.js";

const liveEnabled =
  process.env.OPENCLAW_LIVE_TEST === "1" && (process.env.XAI_API_KEY ?? "").trim().length > 0;

const describeLive = liveEnabled ? describe : describe.skip;

describeLive("xai x_search live", () => {
  it("queries X through xAI Responses", async () => {
    const tool = createXSearchTool({
      config: {
        plugins: {
          entries: {
            xai: {
              config: {
                xSearch: {
                  enabled: true,
                  model: "grok-4-1-fast-non-reasoning",
                },
              },
            },
          },
        },
      },
    });

    expect(tool).toBeTruthy();
    const result = await tool!.execute("x-search:live", {
      query: "OpenClaw from:steipete",
      to_date: "2026-03-28",
    });

    const details = (result.details ?? {}) as {
      provider?: string;
      content?: string;
      citations?: string[];
      inlineCitations?: unknown[];
      error?: string;
      message?: string;
    };

    expect(details.error, details.message).toBeUndefined();
    expect(details.provider).toBe("xai");
    expect(details.content?.trim().length ?? 0).toBeGreaterThan(0);

    const citationCount =
      (Array.isArray(details.citations) ? details.citations.length : 0) +
      (Array.isArray(details.inlineCitations) ? details.inlineCitations.length : 0);
    expect(citationCount).toBeGreaterThan(0);
  }, 45_000);
});
