API de JavaScript de AI-Kit para WordPress

AI‑Kit expone una interfaz pública en tiempo de ejecución bajo el objeto global de WP Suite:

  • globalThis.WpSuite.plugins.aiKit — objeto del plugin (registrado por el plugin AI‑Kit)
  • globalThis.WpSuite.plugins.aiKit.features — métodos de funciones y utilidades de interfaz

Todos los métodos de funciones son asíncronos y devuelven una Promise.

Acceso defensivo

Use siempre el encadenamiento opcional (?.) por si AI‑Kit no está instalado en el sitio o la página actual.


Utilidades de tiempo de ejecución (contrato compartido de WP Suite)

Los plugins de WP Suite comparten un pequeño contrato común de tiempo de ejecución (procedente de @smart-cloud/wpsuite-core), que incluye:

Funciones de acceso auxiliares

Si incluye @smart-cloud/wpsuite-core en su paquete, también puede usar:

  • getWpSuite() → devuelve el objeto global WpSuite (o undefined)
  • getPlugin("gatey" | "aiKit" | "...") → devuelve un objeto de plugin del registro

(Son envoltorios ligeros de globalThis.WpSuite.)

Estado del plugin

WpSuite.plugins.aiKit.status puede tener uno de estos valores:

  • unavailable — el plugin no está presente o aún no se ha inicializado
  • initializing — se está iniciando
  • available — está listo para usarse
  • error — no se pudo inicializar

Esperar hasta que AI‑Kit esté listo

Puede esperar de tres formas habituales:

1) onReady(cb)

globalThis.WpSuite?.plugins?.aiKit?.onReady?.(() => {
console.log("AI‑Kit is ready");
});

2) availability() (espera asíncrona con tiempo límite)

Devuelve available, unavailable o error (nunca devuelve initializing).

const res = await globalThis.WpSuite?.plugins?.aiKit?.availability?.();
if (res !== "available") {
console.warn("AI‑Kit not available:", res);
}

3) Envoltorios del núcleo de AI‑Kit (waitForAiKitReady)

Si su compilación incluye el paquete principal de AI‑Kit, puede usar sus envoltorios prácticos:

  • getAiKitPlugin()
  • waitForAiKitReady(timeoutMs = 8000)
  • getStore(timeoutMs = 10000) (espera a que esté listo y devuelve la promesa del almacén)

Son funciones auxiliares ligeras basadas en los eventos que aparecen a continuación.

Eventos de disponibilidad y error

AI‑Kit emite eventos del DOM que puede escuchar:

  • wpsuite:ai-kit:ready
  • wpsuite:ai-kit:error
window.addEventListener("wpsuite:ai-kit:ready", () => console.log("ready"));
window.addEventListener("wpsuite:ai-kit:error", () => console.log("error"));
wp.events de WordPress

Algunas compilaciones también vuelven a emitir estos eventos mediante WpSuite.events / wp.events. Los eventos del DOM anteriores son la opción más segura entre contextos.


API de funciones (llamadas programáticas)

Las funciones auxiliares asíncronas de WpSuite.plugins.aiKit.features reflejan las funciones exportadas desde @smart-cloud/ai-kit-core.

Opciones compartidas (FeatureOptions)

  • context: "admin" | "frontend" (valor predeterminado: "admin"; los envoltorios del frontend pasan "frontend" automáticamente)
  • modeOverride: fuerza un modo de capacidad para una sola llamada — "local-only" | "backend-fallback" | "backend-only"
  • onDeviceTimeoutOverride: sustituye el tiempo límite predeterminado de 45 s (o 5 s para las funciones rápidas) en el dispositivo al usar las API de Chrome
  • signal, headers, query: se envían al distribuidor del backend
  • onStatus(event): recibe pasos del progreso como decide, on-device:download, backend:request, done
  • El mismo objeto puede contener opciones adicionales específicas de cada función (por ejemplo, maxCandidates para la detección de idioma en el backend)

Métodos

write(args, options?){ result: string }

  • args: { prompt, context?, sharedContext?, tone?, format?, length?, outputLanguage? }
  • Las llamadas al backend también respetan knowledgeBaseId / disableKB

rewrite(args, options?){ result: string }

  • args: { text, context?, sharedContext?, tone?, format?, length?, outputLanguage? }

summarize(args, options?){ result: string }

  • args: { text, context?, sharedContext?, type?, format?, length?, outputLanguage? }

translate(args, options?){ result: string }

  • args: { text, sourceLanguage, targetLanguage }

detectLanguage(args, options?){ result: { candidates: LanguageDetectionResult[] } }

  • args: { text }
  • Para los flujos que solo usan el backend, puede añadir options.maxCandidates

proofread(args, options?){ result: ProofreadResult }

  • args: { text, expectedInputLanguages?, includeCorrectionTypes?, includeCorrectionExplanations?, correctionExplanationLanguage? }

prompt(args, options?){ result: string, sessionId?, metadata? }

  • args: { messages, sharedContext?, outputLanguage?, images?, responseConstraint?, topK?, temperature?, maxTokens?, knowledgeBaseId?, disableKB? }
  • metadata.stopReason === "max_tokens" significa que el modelo alcanzó el límite de salida; metadata.maxTokens muestra el límite aplicado en el backend.

sendChatMessage(args, options?){ result: string, sessionId?, metadata? }

  • args: { sessionId?, message, sharedContext?, images?, topK?, temperature?, maxTokens?, knowledgeBaseId?, disableKB? }
  • Guarde automáticamente el historial del chat cuando se omite sessionId

sendFeedbackMessage(args, options?){ result: string, sessionId?, metadata? }

  • args: { feedbackType: "accepted" | "rejected", feedbackMessageId, sessionId }

sendSearchMessage(args, options?){ result: string, sessionId?, citations?, metadata? }

  • args: { query, sessionId?, sharedContext?, knowledgeBaseId?, topK?, temperature?, maxTokens? }
  • Devuelve una respuesta o resumen breve en result, además de citations opcionales (docs + chunks) cuando están disponibles.

Funciones auxiliares para las opciones de las funciones

Cuando necesite las opciones create() sin procesar de la API de Chrome (por ejemplo, para almacenar modelos en caché previamente), usa:

  • getWriteOptions(partialArgs) / getRewriteOptions(partialArgs)
  • getSummarizeOptions(partialArgs) / getTranslateOptions(partialArgs)
  • getProofreadOptions() / getPromptOptions(partialArgs)

Cada función auxiliar devuelve la estructura *CreateCoreOptions correspondiente de las API de IA integradas en Chrome.

Ejemplo: traducir una cadena

const f = globalThis.WpSuite?.plugins?.aiKit?.features;
if (!f) return;

const { result } = await f.translate({
text: "Hello world",
sourceLanguage: "en",
targetLanguage: "de",
});

console.log(result);

Ejemplo: resumir el contenido actual (con progreso)

const aiKit = globalThis.WpSuite?.plugins?.aiKit;
const f = aiKit?.features;
if (!aiKit || !f) return;

const ok = (await aiKit.availability?.()) === "available";
if (!ok) return;

const { result } = await f.summarize(
{ text: "Long article text...", type: "tldr", length: "short" },
{
onStatus: (ev) => {
// ev.step: "decide" | "on-device:download" | "backend:request" | ...
console.log(ev.step, ev.progress);
},
},
);

console.log(result);

Inserción de interfaz (renderFeature)

Para temas y plugins personalizados, AI‑Kit puede representar su interfaz interactiva dentro de un elemento de destino:

  • WpSuite.plugins.aiKit.features.renderFeature(args) → devuelve un AiWorkerHandle

Así es como el bloque o shortcode AI‑Kit Feature puede crear una interfaz en el frontend.

Ejemplo mínimo: representar una interfaz modal de traducción

const f = globalThis.WpSuite?.plugins?.aiKit?.features;
if (!f) return;

let handle;
handle = await f.renderFeature({
mode: "translate",
title: "Translate",
variation: "modal",
onClose: () => handle?.close?.(),
autoRun: false,
default: {
text: "Hello world",
inputLanguage: "en",
outputLanguage: "de",
},
});

Limpieza

El identificador devuelto suele incluir:

  • container — elemento raíz
  • close() — cierra la interfaz (si corresponde)
  • unmount() — desmonta y limpia

Para temas y plugins personalizados, AI‑Kit también puede representar la interfaz Doc Search dentro de un elemento de destino:

  • WpSuite.plugins.aiKit.features.renderSearchComponent(args) → devuelve un AiWorkerHandle

Esto es lo que usan el bloque y el shortcode AI‑Kit Doc Search en el frontend.

Ejemplo mínimo: representar Doc Search en un contenedor

const f = globalThis.WpSuite?.plugins?.aiKit?.features;
if (!f) return;

let handle;
handle = await f.renderSearchComponent({
target: "#doc-search",
title: "Search docs",
autoRun: false,
topK: 10,
snippetMaxChars: 160,
});

Acceso al almacén (avanzado)

AI‑Kit expone un almacén de creación diferida:

  • WpSuite.plugins.aiKit.features.storePromise<Store>

Resulta útil si creas una interfaz personalizada y quiere observar ajustes o diagnósticos.

const storePromise = globalThis.WpSuite?.plugins?.aiKit?.features?.store;
const store = storePromise ? await storePromise : null;