Update AI checking

This commit is contained in:
Dustin Brett 2025-03-15 10:05:12 -07:00
parent cb4ab0ecdf
commit 8bdc0c308c
2 changed files with 25 additions and 7 deletions

View File

@ -14,6 +14,7 @@ import {
type ConvoStyles,
type Prompt,
} from "components/system/Taskbar/AI/types";
import { isAvailable } from "hooks/useWindowAI";
const MARKED_LIBS = [
"/Program Files/Marked/marked.min.js",
@ -140,8 +141,7 @@ globalThis.addEventListener(
data.hasWindowAI &&
data.summarizeText &&
"summarizer" in globalThis.ai &&
(await globalThis.ai.summarizer.capabilities())?.available ===
"readily"
(await isAvailable(globalThis.ai.summarizer))
) {
summarizer = await globalThis.ai.summarizer.create();
}

View File

@ -1,5 +1,26 @@
import { useCallback, useEffect, useState } from "react";
type AIAvailability = {
availability?: () => Promise<"available" | "unavailable">;
capabilities?: () => Promise<{ available: AICapabilityAvailability }>;
};
export const isAvailable = async (ai: AIAvailability): Promise<boolean> => {
try {
if (typeof ai.availability === "function") {
return (await ai.availability()) === "available";
}
if (typeof ai.capabilities === "function") {
return (await ai.capabilities()).available === "readily";
}
} catch {
return false;
}
return false;
};
let HAS_WINDOW_AI = false;
const supportsAI = async (): Promise<boolean> => {
@ -7,16 +28,13 @@ const supportsAI = async (): Promise<boolean> => {
typeof window === "undefined" ||
!("ai" in window) ||
!("languageModel" in window.ai) ||
typeof window.ai.languageModel !== "object" ||
!("capabilities" in window.ai.languageModel) ||
typeof window.ai.languageModel.capabilities !== "function"
typeof window.ai.languageModel !== "object"
) {
return false;
}
try {
HAS_WINDOW_AI =
(await window.ai.languageModel.capabilities()).available === "readily";
HAS_WINDOW_AI = await isAvailable(globalThis.ai.languageModel);
return HAS_WINDOW_AI;
} catch {