Widget Voice Iterate (preview)
Repositório contém Web Component embeddable que captura instrução digitada ou transcrita pelo navegador, envia a app OpenFactory owned e faz poll do ticket de repair resultante. Integração é só preview.
Origem do pacote está em tools/voice-iterate no monorepo OpenFactory. Não assuma que @openfactory/voice-iterate ou bundle CDN está publicado publicamente; construa e fixe artefato revisado do repositório até release estar explicitamente listada no registry de pacotes.
Limite atual
Endpoint aceita instrução para app com origem Git e despacha workflow de repair compartilhado. Stage 0 altera cópia sandbox deployada e pode redeployar preview. Não garante que mudança seja commitada no repositório upstream. Ticket marcado done prova só resultado registrado da tarefa de agent; revise result e verifique app você mesmo.
Serviço permite no máximo duas iterações in-flight por app. Pedidos adicionais retornam 429 até ticket atingir estado terminal.
Pré-requisitos
- App OpenFactory owned com
source.git_url. - Conta real; sessões guest não podem despachar edições autônomas de código.
- Chave de conta
of_mcp_mantida em servidor, nunca em JavaScript de navegador. - HTTPS ou origem de desenvolvimento localhost se input de microfone for usado.
Construir widget a partir da origem
A partir do monorepo:
cd tools/voice-iterate
npm ci
npm test
npm run lint
npm run buildVendor bundle versionado resultante ou instale de registry controlado próprio. Registre commit de origem e checksum usados pelo aplicativo.
Usar proxy same-origin
Widget voltado ao navegador chama:
POST {endpoint}/iterate
GET {endpoint}/agent-status
GET {endpoint}/agent-status?thread_id={thread_id}Seu servidor deve fixar app ID alvo e encaminhar pedidos para:
POST https://console.openfactory.tech/api/apps/{APP_ID}/iterate
GET https://console.openfactory.tech/api/apps/{APP_ID}/agent-statusAnexe Authorization: Bearer <of_mcp_key> só no servidor. Autentique e rate-limit usuários do proxy; caso contrário todo visitante que alcançar rota pode gastar autoridade da conta em mudanças no app fixado. Permita só três paths e dois methods acima, aplique limites de tamanho de pedido e não encaminhe headers ou app IDs arbitrários.
Monte módulo construído localmente com 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);
},
});Custom element e estilos rodam em Shadow DOM. Fallback de texto default permanece utilizável quando reconhecimento de fala do navegador está indisponível. Serviços de fala do navegador e comportamento de privacidade variam por navegador e deployment; obtenha consentimento e teste conjunto exato de navegadores suportados. OpenFactory recebe texto resultante neste caminho, enquanto navegador ou serviço de fala configurado pode processar áudio separadamente.
Teste de aceitação
- Envie mudança inofensiva e reversível contra app não produção.
- Confirme que proxy não pode mirar outro app e rejeita callers não autenticados.
- Observe
queued/workingaté estado terminaldone,failed,lostoustale. - Inspecione task result e preview manualmente.
- Confirme que repositório Git upstream está inalterado salvo workflow separado revisado de persistência de origem reportar commit ou pull request.
- Reverta ou reconstrua sandbox a partir da origem canônica.
Veja Agent prompt-to-app e App deployment para mesmos limites de persistência e promoção.