aYOUne

Changelog

What changed — grouped by release, filterable by component and repository.

No milestone 2
New voice

Anbieter-Wahl je Anruf statt eines festen Adapters fuer den Dienst

`stream.ts` erzeugte beim Modul-Laden EINEN `DeepgramSttProvider` fuer den
ganzen Dienst; der `ICallAgent.sttProvider`-Feldwert wurde NIRGENDS gelesen.
'deepgram' war damit blosser Zufall — es war der einzige Wert, der je vorkam,
nicht eine getroffene Wahl. Ein Agent mit `sttProvider: 'whisper'` bekam
trotzdem Deepgram.

- Der Handler waehlt den Adapter jetzt je Anruf ueber `sttProviderFor(name)`
aus dem Feldwert des Agenten. Das macht auch 'deepgram' erstmals zu einer
echten Wahl.
- `deps.stt` bleibt und SCHLAEGT die Wahl — das ist der Injektionspunkt der
bestehenden 617 Proben, die damit unveraendert gruen bleiben.
- Ohne Feldwert (und ohne Agenten am Anruf) bleibt es bei 'deepgram': die zwei
heutigen Agenten verhalten sich unveraendert, keine Migration noetig.
- Die Mandanten-Kennung reist bis zum Adapter durch — der Whisper-Weg loest
seinen Schluessel aus dem Tresor DIESES Mandanten auf.

6 neue Proben; zwei Flip-Proben belegen, dass sie beissen (Feldwert ignorieren
bzw. Mandanten-Kennung weglassen -> je genau die zugehoerige Probe faellt).

BEZUG: braucht @tolinax/ayoune-core mit `ISttOpenOptions._customerID`. Bis zu
dessen Veroeffentlichung schlaegt der Bau fehl — das ist die sichere Richtung,
kein stiller Schaden.
New voice

Whisper-Spracherkennung als echter stroemender Adapter

Der `WhisperSttProvider` war ein Platzhalter, der beim ersten Verbinden warf
("TODO post-W2") — ein Agent mit `sttProvider: 'whisper'` brach jeden Anruf ab.

ANBIETER-ENTSCHEIDUNG (gemessen, nicht stillschweigend): das rohe Whisper-
Endpunkt ist Batch und kann `interim` per Bauart nicht liefern; die gehosteten
Stapel-Beschleuniger (Groq/Fireworks/Replicate) puffern die volle Aeusserung;
Selbstbetrieb verlangte einen eigenen Dienst samt GPU. Gewaehlt ist die
stroemende Transkriptions-Betriebsart der OpenAI-Realtime-Schnittstelle — der
einzige Weg, der `interim` bedient UND dessen Anbieter (`openai`) BEREITS im
Zugangsdaten-Katalog des Fundaments steht.

- Ton-Format g711_ulaw: Twilios mu-law 8 kHz reist ohne Umrechnung durch.
- Schluessel AUSSCHLIESSLICH aus dem Tresor des Mandanten, ausdruecklich OHNE
Rueckfall auf eine Umgebungsvariable — anders als die Praezedenz
`resolveElevenLabsKey`. Ein stiller Rueckfall rechnete den Anruf eines
Mandanten ueber den Schluessel eines anderen ab.
- `ISttOpenOptions` traegt dafuer `_customerID`/`requestingUserId` (optional,
der Deepgram-Weg bleibt unberuehrt).
- Fehlende Anbieter-Angaben (Guete, Zeitachse) bleiben `undefined` bzw. werden
aus der Sitzungs-Uhr abgeleitet und als Naeherung kommentiert.

15 neue Proben; zwei Flip-Proben belegen, dass sie beissen (ENV-Rueckfall
eingebaut -> genau die Tresor-Probe faellt; roher Rahmen statt base64 -> genau
die Uebertragungs-Probe faellt), je ohne Kollateral.