Skip to Content
TestingWidget Voice Iterate (vista previa)

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 build

Incorpora 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-status

Adjunta 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

  1. Envía un cambio inofensivo y reversible contra una app no productiva.
  2. Confirma que el proxy no puede apuntar a otra app y rechaza llamadores no autenticados.
  3. Observa queued/working hasta un estado terminal done, failed, lost o stale.
  4. Inspecciona el resultado de la tarea y la preview manualmente.
  5. Confirma que el repositorio Git upstream no cambió salvo que un flujo separado y revisado de persistencia de fuente reporte commit o pull request.
  6. 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.