isAvailable function exported ✓ 86.7%

Last updated: 2026-03-03T18:32:34.140Z

Metrics

LOC: 33 Complexity: 8 Params: 0 Coverage: 86.7% (13/15 lines, 3x executed)

Signature

isAvailable(): : Promise<boolean>

Summary

Checks whether the Chrome Built-in AI (Gemini Nano) Prompt API is available in the current browser.

Tags

#@returns `true` when the API exists and readiness is "available" or "downloadable"

Source Code

export async function isAvailable(): Promise<boolean> {
  try {
    const api = getLanguageModelApi();
    if (!api) {
      const context =
        typeof globalThis !== "undefined"
          ? Object.getOwnPropertyNames(globalThis).filter((k) =>
              /ai|language|model|prompt/i.test(k),
            )
          : [];
      log.warn(
        `LanguageModel API não encontrada no globalThis. ` +
          `Contexto: ${typeof self !== "undefined" ? "service-worker" : "unknown"}, ` +
          `AI-related keys: [${context.length > 0 ? context.join(", ") : "nenhuma"}]. ` +
          `Chrome AI indisponível.`,
      );
      return false;
    }
    const result = await api.availability({
      expectedInputs: [{ type: "text", languages: ["en"] }],
      expectedOutputs: [{ type: "text", languages: ["en"] }],
    });
    log.debug(`availability() retornou: "${result}"`);
    const available = result === "available" || result === "downloadable";
    if (!available) {
      log.warn(`AI não disponível (status: "${result}").`);
    }
    return available;
  } catch (err) {
    log.error("Erro ao verificar disponibilidade:", err);
    return false;
  }
}

Dependencies (Outgoing)

graph LR isAvailable["isAvailable"] getLanguageModelApi["getLanguageModelApi"] isAvailable -->|calls| getLanguageModelApi style isAvailable fill:#dbeafe,stroke:#2563eb,stroke-width:2px click isAvailable "483f451ba1bfd393.html" click getLanguageModelApi "410ff2233e0b1dc2.html"
TargetType
getLanguageModelApi calls
k dynamic_call

Impact (Incoming)

graph LR isAvailable["isAvailable"] getLanguageModelApi["getLanguageModelApi"] getLanguageModelApi -->|uses| isAvailable style isAvailable fill:#dbeafe,stroke:#2563eb,stroke-width:2px click isAvailable "483f451ba1bfd393.html" click getLanguageModelApi "64fb30d22107f96b.html"
SourceType
getLanguageModelApi uses