From bc6501105ae37c7428f4a5d586a60b1be4cbf906 Mon Sep 17 00:00:00 2001 From: Arun Wongprommoon Date: Fri, 4 Sep 2026 14:12:23 -0700 Subject: [PATCH 1/2] plugins/phonic: add enableWatermarking realtime config option Mirrors enableRedaction (option type, constructor, opts, and the config message sent to Phonic) + README. Gates Phonic's inaudible provenance watermark on generated TTS audio (adds a very small amount of latency). Co-Authored-By: Claude Opus 4.8 (1M context) --- .changeset/phonic-enable-watermarking.md | 5 +++++ plugins/phonic/README.md | 1 + plugins/phonic/src/realtime/realtime_model.ts | 7 +++++++ 3 files changed, 13 insertions(+) create mode 100644 .changeset/phonic-enable-watermarking.md diff --git a/.changeset/phonic-enable-watermarking.md b/.changeset/phonic-enable-watermarking.md new file mode 100644 index 000000000..7c6d3f2be --- /dev/null +++ b/.changeset/phonic-enable-watermarking.md @@ -0,0 +1,5 @@ +--- +'@livekit/agents-plugin-phonic': patch +--- + +Add `enableWatermarking` realtime config option to gate Phonic's inaudible provenance watermark on generated audio. diff --git a/plugins/phonic/README.md b/plugins/phonic/README.md index 49224e61c..0f3519011 100644 --- a/plugins/phonic/README.md +++ b/plugins/phonic/README.md @@ -109,6 +109,7 @@ Set the `PHONIC_API_KEY` environment variable, or pass `apiKey` directly to `Rea | `pronunciationDictionary` | `{ word, pronunciation }[]` | Pronunciation entries; words must be unique | | `templateVariables` | `Record` | Variables substituted into the system prompt and welcome message | | `enableRedaction` | `boolean` | Redact PII/PHI from transcripts and bleep it from audio after the conversation | +| `enableWatermarking` | `boolean` | Embed an inaudible provenance watermark in generated audio. Adds a very small amount of latency | | `mcpServers` | `string[]` | Names of pre-configured MCP servers to make available (must be unique) | | `observabilityIntegrations` | `'braintrust'[]` | Observability integrations to forward traces to | | `configurationEndpoint` | `{ url, headers?, timeout_ms? }` \| `null` | Endpoint the agent calls to fetch per-conversation configuration | diff --git a/plugins/phonic/src/realtime/realtime_model.ts b/plugins/phonic/src/realtime/realtime_model.ts index d75740d93..0aaf583eb 100644 --- a/plugins/phonic/src/realtime/realtime_model.ts +++ b/plugins/phonic/src/realtime/realtime_model.ts @@ -65,6 +65,7 @@ export interface RealtimeModelOptions { pronunciationDictionary?: Phonic.ConfigOptions['pronunciation_dictionary']; templateVariables?: Phonic.ConfigOptions['template_variables']; enableRedaction?: boolean; + enableWatermarking?: boolean; mcpServers?: string[]; observabilityIntegrations?: Phonic.ConfigOptions['observability_integrations']; configurationEndpoint?: Phonic.ConfigOptions['configuration_endpoint']; @@ -277,6 +278,10 @@ export class RealtimeModel extends llm.RealtimeModel { * When true, PII/PHI is redacted from transcripts and bleeped from audio after the conversation ends */ enableRedaction?: boolean; + /** + * When true, embeds an inaudible provenance watermark in the agent's generated audio. Adds a very small amount of latency + */ + enableWatermarking?: boolean; /** * Names of pre-configured MCP servers to make available to the assistant. Names must be unique */ @@ -378,6 +383,7 @@ export class RealtimeModel extends llm.RealtimeModel { pronunciationDictionary: options.pronunciationDictionary, templateVariables: options.templateVariables, enableRedaction: options.enableRedaction, + enableWatermarking: options.enableWatermarking, mcpServers: options.mcpServers, observabilityIntegrations: options.observabilityIntegrations, configurationEndpoint: options.configurationEndpoint, @@ -1273,6 +1279,7 @@ export class RealtimeSession extends llm.RealtimeSession { pronunciation_dictionary: this.options.pronunciationDictionary, template_variables: this.options.templateVariables, enable_redaction: this.options.enableRedaction, + enable_watermarking: this.options.enableWatermarking, mcp_servers: this.options.mcpServers, observability_integrations: this.options.observabilityIntegrations, configuration_endpoint: this.options.configurationEndpoint, From 8076e3662e89551b15f7a8e8a77a5c71c0d6bb12 Mon Sep 17 00:00:00 2001 From: Arun Wongprommoon Date: Fri, 4 Sep 2026 17:42:28 -0700 Subject: [PATCH 2/2] plugins/phonic: link voice IDs to Phonic docs instead of hardcoding Co-Authored-By: Claude Opus 4.8 (1M context) --- plugins/phonic/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/phonic/README.md b/plugins/phonic/README.md index 0f3519011..f9963fc8c 100644 --- a/plugins/phonic/README.md +++ b/plugins/phonic/README.md @@ -82,7 +82,7 @@ Set the `PHONIC_API_KEY` environment variable, or pass `apiKey` directly to `Rea | `apiKey` | `string` | Phonic API key. Falls back to `PHONIC_API_KEY` environment variable | | `model` | `string` | Model name (default: `merritt`) | | `phonicAgent` | `string` | Phonic agent name. Options set explicitly here override agent settings | -| `voice` | `string` | Voice ID — `sabrina`, `grant`, `virginia`, `landon`, `eleanor`, `shelby`, `nolan` | +| `voice` | `string` | Voice ID — see [available voices](https://docs.phonic.ai/docs/build/agents/voices) | | `welcomeMessage` | `string` | Message the agent says when the conversation starts. Ignored when `generateWelcomeMessage` is true | | `generateWelcomeMessage` | `boolean` | Auto-generate the welcome message (ignores `welcomeMessage`) | | `project` | `string` | Project name (default: `main`) |