Skip to Content
TestingVoice Iterate Widget (Preview)

Voice Iterate Widget (Preview)

Depozitul conține o Web Component încorporabilă care capturează o instrucțiune tastată sau transcrisă în browser, o trimite către o aplicație OpenFactory deținută de dvs. și interoghează periodic ticketul de repair rezultat. Integrarea este doar în preview.

Sursa pachetului este în tools/voice-iterate din monorepo-ul OpenFactory. Nu presupuneți că @openfactory/voice-iterate sau bundle-ul său CDN este publicat public; construiți și fixați un artefact revizuit din depozit până când o versiune este listată explicit în registrul de pachete.

Limita actuală

Endpointul acceptă o instrucțiune pentru o aplicație cu sursă Git și lansează workflow-ul partajat de repair. Stage 0 modifică copia sandbox implementată și poate reimplementa acel preview. Nu garantează că modificarea este commitată în depozitul upstream. Un ticket marcat done dovedește doar rezultatul înregistrat al sarcinii agentului; revizuiți rezultatul și verificați aplicația personal.

Serviciul permite cel mult două iterări în curs per aplicație. Cererile suplimentare returnează 429 până când un ticket atinge o stare terminală.

Cerințe prealabile

  • O aplicație OpenFactory deținută cu source.git_url.
  • Cont real; sesiunile guest nu pot declanșa editări autonome de cod.
  • Cheie de cont of_mcp_ păstrată pe server, niciodată în JavaScriptul browserului.
  • HTTPS sau origin de dezvoltare localhost dacă folosiți intrarea de la microfon.

Construirea widgetului din sursă

Din monorepo:

cd tools/voice-iterate npm ci npm test npm run lint npm run build

Includeți bundle-ul versionat rezultat sau instalați-l din propriul registru controlat. Notați commitul sursă și checksum-ul folosit de aplicația dvs.

Proxy cu același origin

Widgetul accesat din browser apelează:

POST {endpoint}/iterate GET {endpoint}/agent-status GET {endpoint}/agent-status?thread_id={thread_id}

Serverul dvs. ar trebui să fixeze ID-ul aplicației țintă și să redirecționeze aceste cereri către:

POST https://console.openfactory.tech/api/apps/{APP_ID}/iterate GET https://console.openfactory.tech/api/apps/{APP_ID}/agent-status

Atașați Authorization: Bearer <of_mcp_key> doar pe server. Autentificați și limitați rata utilizatorilor propriului proxy; altfel, orice vizitator care poate ajunge la route poate cheltui autoritatea contului dvs. pentru modificări ale aplicației fixate. Permiteți doar cele trei căi și cele două metode de mai sus, impuneți limite de dimensiune a cererii și nu redirecționați antete arbitrare sau ID-uri de aplicație.

Montați modulul construit local cu endpointul 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); }, });

Elementul personalizat și stilurile sale rulează într-un Shadow DOM. Fallback-ul text implicit rămâne utilizabil când recunoașterea vocală din browser nu este disponibilă. Serviciile de vorbire din browser și comportamentul de confidențialitate variază după browser și implementare; obțineți consimțământ și testați setul exact de browsere suportate. OpenFactory primește textul rezultat pe această cale, în timp ce browserul sau un serviciu de vorbire configurat poate procesa audio separat.

Test de acceptare

  1. Trimiteți o modificare inofensivă, reversibilă împotriva unei aplicații non-producție.
  2. Confirmați că proxy-ul nu poate ținti altă aplicație și respinge apelanții neautentificați.
  3. Observați queued/working până la o stare terminală done, failed, lost sau stale.
  4. Inspectați manual rezultatul sarcinii și preview-ul.
  5. Confirmați că depozitul Git upstream este neschimbat, dacă un workflow separat, revizuit de persistență a sursei nu raportează un commit sau pull request.
  6. Reveniți sandbox-ul sau reconstruiți-l din sursa canonică.

Consultați Prompt-to-app agent și App deployment pentru aceleași limite de persistență și promovare.