Widget Voice Iterate (vista previa)
El repositorio contiene un Web Component embebible que captura una instrucción escrita o transcrita en el navegador, la envía a una app OpenFactory de tu propiedad y hace polling del ticket de reparación resultante. La integración es solo vista previa.
El código fuente del paquete está en tools/voice-iterate en el monorepo OpenFactory. No asumas que @openfactory/voice-iterate o su bundle CDN están publicados públicamente; compila y fija un artefacto revisado desde el repositorio hasta que una versión figure explícitamente en el registro de paquetes.
Límite actual
El endpoint acepta una instrucción para una app con fuente Git y despacha el flujo de reparación compartido. La etapa 0 cambia la copia sandbox desplegada y puede redesplegar esa preview. No garantiza que el cambio se confirme en el repositorio upstream. Un ticket marcado done prueba solo el resultado registrado de la tarea del agente; revisa su resultado y verifica la app tú mismo.
El servicio permite como máximo dos iteraciones en vuelo por app. Solicitudes adicionales devuelven 429 hasta que un ticket alcance un estado terminal.
Requisitos previos
- Una app OpenFactory de tu propiedad con
source.git_url. - Una cuenta real; las sesiones de invitado no pueden despachar ediciones de código autónomas.
- Una clave de cuenta
of_mcp_guardada en un servidor, nunca en JavaScript del navegador. - HTTPS u origen de desarrollo localhost si se usa entrada de micrófono.
Compilar el widget desde fuente
Desde el monorepo:
cd tools/voice-iterate
npm ci
npm test
npm run lint
npm run buildIncorpora el bundle versionado resultante o instálalo desde tu propio registro controlado. Registra el commit fuente y checksum usados por tu aplicación.
Usar un proxy same-origin
El widget orientado al navegador llama:
POST {endpoint}/iterate
GET {endpoint}/agent-status
GET {endpoint}/agent-status?thread_id={thread_id}Tu servidor debe fijar el ID de app objetivo y reenviar esas solicitudes a:
POST https://console.openfactory.tech/api/apps/{APP_ID}/iterate
GET https://console.openfactory.tech/api/apps/{APP_ID}/agent-statusAdjunta Authorization: Bearer <of_mcp_key> solo en el servidor. Autentica y limita la tasa de tus propios usuarios del proxy; si no, todo visitante que alcance la ruta puede gastar la autoridad de tu cuenta en cambios de la app fijada. Permite solo las tres rutas y dos métodos anteriores, aplica límites de tamaño de solicitud y no reenvíes headers o ID de app arbitrarios.
Monta el módulo compilado localmente con el endpoint proxy:
import { createVoiceIterate } from './vendor/openfactory-voice-iterate/index.mjs';
const widget = createVoiceIterate({
appId: '550e8400-e29b-41d4-a716-446655440000',
endpoint: '/api/voice-iterate',
fallback: 'text',
onStatusChange: ({ status, thread }) => {
console.log(status, thread.taskResult);
},
});El custom element y sus estilos corren en Shadow DOM. El fallback de texto por defecto sigue utilizable cuando el reconocimiento de voz del navegador no está disponible. Los servicios de voz del navegador y el comportamiento de privacidad varían por navegador y despliegue; obtén consentimiento y prueba el conjunto exacto de navegadores admitidos. OpenFactory recibe el texto resultante en esta ruta, mientras el navegador o un servicio de voz configurado puede procesar audio por separado.
Prueba de aceptación
- Envía un cambio inofensivo y reversible contra una app no productiva.
- Confirma que el proxy no puede apuntar a otra app y rechaza llamadores no autenticados.
- Observa
queued/workinghasta un estado terminaldone,failed,lostostale. - Inspecciona el resultado de la tarea y la preview manualmente.
- Confirma que el repositorio Git upstream no cambió salvo que un flujo separado y revisado de persistencia de fuente reporte commit o pull request.
- Revierte o recompila el sandbox desde la fuente canónica.
Consulta Agente prompt-to-app y Despliegue de app para los mismos límites de persistencia y promoción.