Voice Iterate Widget (Preview)
Das Repository enthält eine embeddable Web Component, die typed oder browser-transcribed instruction erfasst, an owned OpenFactory app submitted und resulting repair ticket pollt. Die Integration ist preview-only.
Der Package-Source liegt in tools/voice-iterate im OpenFactory monorepo. Gehen Sie nicht
davon aus, @openfactory/voice-iterate oder sein CDN bundle ist publicly published;
bauen und pinnen Sie reviewed artifact aus dem Repository, bis release explizit in package
registry gelistet ist.
Aktuelle Grenze
Der Endpoint akzeptiert instruction für app mit Git source und dispatched shared repair
workflow. Stage 0 ändert deployed sandbox copy und kann preview redeployen. Er garantiert
nicht, dass change committed zum upstream repository ist. Ticket marked done beweist
nur recorded agent task outcome; result reviewen und app selbst verifizieren.
Der Service erlaubt höchstens two in-flight iterations per app. Additional requests return
429 until ticket reaches terminal state.
Voraussetzungen
- Owned OpenFactory app mit
source.git_url. - Real account; guest sessions können keine autonomous code edits dispatchen.
of_mcp_account key auf server, never in browser JavaScript.- HTTPS oder localhost development origin wenn microphone input genutzt wird.
Widget aus Source bauen
Aus dem Monorepo:
cd tools/voice-iterate
npm ci
npm test
npm run lint
npm run buildResulting versioned bundle vendoren oder aus own controlled registry installieren. Source commit und checksum dokumentieren, die Ihre application nutzt.
Same-origin proxy nutzen
Das browser-facing widget ruft auf:
POST {endpoint}/iterate
GET {endpoint}/agent-status
GET {endpoint}/agent-status?thread_id={thread_id}Ihr Server soll target app ID pinnen und diese requests forwarden an:
POST https://console.openfactory.tech/api/apps/{APP_ID}/iterate
GET https://console.openfactory.tech/api/apps/{APP_ID}/agent-statusAuthorization: Bearer <of_mcp_key> nur auf server attachieren. Eigene proxy users
authentifizieren und rate-limiten; sonst kann jeder visitor, der route erreicht, Ihrer
account authority auf changes an pinned app ausgeben. Nur die three paths und two methods
oben erlauben, request-size limits enforce, keine arbitrary headers oder app IDs forwarden.
Lokal gebautes module mit proxy endpoint mounten:
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 und styles laufen in Shadow DOM. Default text fallback bleibt usable wenn browser speech recognition unavailable ist. Browser speech services und privacy behavior variieren by browser und deployment; consent einholen und exact supported browser set testen. OpenFactory erhält resulting text on this path, während browser oder configured speech service audio separately verarbeiten kann.
Abnahmetest
- Harmless, reversible change gegen non-production app submiten.
- Bestätigen, proxy cannot target any other app und rejects unauthenticated callers.
queued/workingbis terminaldone,failed,lostoderstalestate beobachten.- Task result und preview manually inspizieren.
- Bestätigen upstream Git repository unchanged, unless separate reviewed source-persistence workflow commit oder pull request meldet.
- Sandbox aus canonical source revertieren oder rebuilden.
Siehe Prompt-to-app agent und App deployment für dieselben persistence und promotion boundaries.