From 076818d63488000d757338649a3dd233cb6e246a Mon Sep 17 00:00:00 2001 From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com> Date: Wed, 22 Jul 2026 07:53:40 +0000 Subject: [PATCH 1/2] [fern-generated] Update SDK Generated by Fern CLI Version: unknown Generators: - fernapi/fern-python-sdk: 4.37.0 --- .fern/metadata.json | 2 +- .gitignore | 2 - src/agora_agent/types/gradium_tts.py | 29 +++++++++++++ src/agora_agent/types/gradium_tts_params.py | 47 +++++++++++++++++++++ src/agora_agent/types/mistral_tts.py | 29 +++++++++++++ src/agora_agent/types/mistral_tts_params.py | 37 ++++++++++++++++ src/agora_agent/types/tts.py | 34 +++++++++++++++ 7 files changed, 177 insertions(+), 3 deletions(-) create mode 100644 src/agora_agent/types/gradium_tts.py create mode 100644 src/agora_agent/types/gradium_tts_params.py create mode 100644 src/agora_agent/types/mistral_tts.py create mode 100644 src/agora_agent/types/mistral_tts_params.py diff --git a/.fern/metadata.json b/.fern/metadata.json index a5a4ca5..bbed517 100644 --- a/.fern/metadata.json +++ b/.fern/metadata.json @@ -13,5 +13,5 @@ }, "exclude_types_from_init_exports": true }, - "originGitCommit": "49d478a59be2201df42d81f839acd1ff3fa3aa59" + "originGitCommit": "7edea35eef2583c1cb4860d7941275b0cd7ce900" } \ No newline at end of file diff --git a/.gitignore b/.gitignore index 3e30921..d2e4ca8 100644 --- a/.gitignore +++ b/.gitignore @@ -3,5 +3,3 @@ __pycache__/ dist/ poetry.toml -.venv/ -docs/superpowers/ diff --git a/src/agora_agent/types/gradium_tts.py b/src/agora_agent/types/gradium_tts.py new file mode 100644 index 0000000..0a22c24 --- /dev/null +++ b/src/agora_agent/types/gradium_tts.py @@ -0,0 +1,29 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +from ..core.unchecked_base_model import UncheckedBaseModel +from .gradium_tts_params import GradiumTtsParams + + +class GradiumTts(UncheckedBaseModel): + """ + Gradium Text-to-Speech configuration. + """ + + params: GradiumTtsParams + skip_patterns: typing.Optional[typing.List[int]] = pydantic.Field(default=None) + """ + Controls whether the TTS module skips bracketed content when reading LLM response text. + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/agora_agent/types/gradium_tts_params.py b/src/agora_agent/types/gradium_tts_params.py new file mode 100644 index 0000000..92b82c5 --- /dev/null +++ b/src/agora_agent/types/gradium_tts_params.py @@ -0,0 +1,47 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +from ..core.unchecked_base_model import UncheckedBaseModel + + +class GradiumTtsParams(UncheckedBaseModel): + """ + Gradium TTS configuration parameters. + """ + + api_key: str = pydantic.Field() + """ + Gradium API key. + """ + + url: typing.Optional[str] = pydantic.Field(default=None) + """ + WebSocket endpoint for streaming TTS output (for example, "wss://api.gradium.ai/api/speech/tts"). + """ + + model_name: typing.Optional[str] = pydantic.Field(default=None) + """ + Gradium TTS model name (for example, "default"). + """ + + voice_id: typing.Optional[str] = pydantic.Field(default=None) + """ + Gradium voice identifier. + """ + + sample_rate: typing.Optional[int] = pydantic.Field(default=None) + """ + Audio sample rate in Hz (for example, 16000). + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/agora_agent/types/mistral_tts.py b/src/agora_agent/types/mistral_tts.py new file mode 100644 index 0000000..d60d853 --- /dev/null +++ b/src/agora_agent/types/mistral_tts.py @@ -0,0 +1,29 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +from ..core.unchecked_base_model import UncheckedBaseModel +from .mistral_tts_params import MistralTtsParams + + +class MistralTts(UncheckedBaseModel): + """ + Mistral Text-to-Speech configuration. + """ + + params: MistralTtsParams + skip_patterns: typing.Optional[typing.List[int]] = pydantic.Field(default=None) + """ + Controls whether the TTS module skips bracketed content when reading LLM response text. + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/agora_agent/types/mistral_tts_params.py b/src/agora_agent/types/mistral_tts_params.py new file mode 100644 index 0000000..f9bf7c0 --- /dev/null +++ b/src/agora_agent/types/mistral_tts_params.py @@ -0,0 +1,37 @@ +# This file was auto-generated by Fern from our API Definition. + +import typing + +import pydantic +from ..core.pydantic_utilities import IS_PYDANTIC_V2 +from ..core.unchecked_base_model import UncheckedBaseModel + + +class MistralTtsParams(UncheckedBaseModel): + """ + Mistral TTS configuration parameters. + """ + + api_key: str = pydantic.Field() + """ + Mistral API key. + """ + + model: typing.Optional[str] = pydantic.Field(default=None) + """ + Mistral TTS model name (for example, "voxtral-mini-tts-2603"). + """ + + voice: typing.Optional[str] = pydantic.Field(default=None) + """ + Mistral voice identifier. + """ + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow diff --git a/src/agora_agent/types/tts.py b/src/agora_agent/types/tts.py index cc0bdc5..fd6538c 100644 --- a/src/agora_agent/types/tts.py +++ b/src/agora_agent/types/tts.py @@ -18,9 +18,11 @@ from .fish_audio_tts_params import FishAudioTtsParams from .generic_http_tts_params import GenericHttpTtsParams from .google_tts_params import GoogleTtsParams +from .gradium_tts_params import GradiumTtsParams from .hume_ai_tts_params import HumeAiTtsParams from .microsoft_tts_params import MicrosoftTtsParams from .minimax_tts_params import MinimaxTtsParams +from .mistral_tts_params import MistralTtsParams from .murf_tts_params import MurfTtsParams from .open_ai_tts_params import OpenAiTtsParams from .rime_tts_credential_mode import RimeTtsCredentialMode @@ -334,6 +336,36 @@ class Config: extra = pydantic.Extra.allow +class Tts_Gradium(UncheckedBaseModel): + vendor: typing.Literal["gradium"] = "gradium" + params: GradiumTtsParams + skip_patterns: typing.Optional[typing.List[int]] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + +class Tts_Mistral(UncheckedBaseModel): + vendor: typing.Literal["mistral"] = "mistral" + params: MistralTtsParams + skip_patterns: typing.Optional[typing.List[int]] = None + + if IS_PYDANTIC_V2: + model_config: typing.ClassVar[pydantic.ConfigDict] = pydantic.ConfigDict(extra="allow", frozen=True) # type: ignore # Pydantic v2 + else: + + class Config: + frozen = True + smart_union = True + extra = pydantic.Extra.allow + + Tts = typing_extensions.Annotated[ typing.Union[ Tts_Tencent, @@ -356,6 +388,8 @@ class Config: Tts_Cosyvoice, Tts_BytedanceDuplex, Tts_Stepfun, + Tts_Gradium, + Tts_Mistral, ], UnionMetadata(discriminant="vendor"), ] From f50997f9530fe011d12ef1808cb9bf6d98d6cee0 Mon Sep 17 00:00:00 2001 From: "fern-api[bot]" <115122769+fern-api[bot]@users.noreply.github.com> Date: Wed, 22 Jul 2026 07:53:40 +0000 Subject: [PATCH 2/2] [fern-replay] Applied customizations Patches applied (1): - patch-13d8e068: chore: ignore local venv and planning docs --- .fern/replay.lock | 10 ++++++++-- .gitignore | 2 ++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.fern/replay.lock b/.fern/replay.lock index 27d2226..3f1540d 100644 --- a/.fern/replay.lock +++ b/.fern/replay.lock @@ -18,14 +18,20 @@ generations: cli_version: unknown generator_versions: fernapi/fern-python-sdk: 4.37.0 -current_generation: ded92fee3f96c394d5f4f8a106c4dfd21cce6105 + - commit_sha: 3b186f61b2dc118550a60bf2af4d8352ee6872b2 + tree_hash: 6b67aab55bdb2ee7fc022abf326154b27bb181d0 + timestamp: 2026-07-22T07:53:37.852Z + cli_version: unknown + generator_versions: + fernapi/fern-python-sdk: 4.37.0 +current_generation: 3b186f61b2dc118550a60bf2af4d8352ee6872b2 patches: - id: patch-13d8e068 content_hash: sha256:97d879ab169016b9abaf1866427a8ebc45af608f69e063a07e5126c9613c329b original_commit: 13d8e0683ffa08bcfc9a381eb9604adf5abdbe0b original_message: "chore: ignore local venv and planning docs" original_author: plutoless - base_generation: ded92fee3f96c394d5f4f8a106c4dfd21cce6105 + base_generation: 3b186f61b2dc118550a60bf2af4d8352ee6872b2 files: - .gitignore patch_content: | diff --git a/.gitignore b/.gitignore index d2e4ca8..3e30921 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ __pycache__/ dist/ poetry.toml +.venv/ +docs/superpowers/