Skip to content

feat(regen): agent force-end-turn and Flux expressivity controls - #783

Open
GregHolmes wants to merge 10 commits into
mainfrom
gh/sdk-gen-2026-09-03
Open

feat(regen): agent force-end-turn and Flux expressivity controls#783
GregHolmes wants to merge 10 commits into
mainfrom
gh/sdk-gen-2026-09-03

Conversation

@GregHolmes

@GregHolmes GregHolmes commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Summary

  • regenerate the Python SDK from the latest API definition with fern-python-sdk 5.27.1
  • add Agent ForceEndTurn request/response types and no-payload send_force_end_turn() helpers
  • add Agent TTS expressivity and update the generated Flux speed documentation to 0.5-1.5
  • clarify that Nova-3 does not support keywords and recommends keyterm
  • reapply all required compatibility, credential-redaction, WebSocket query-encoding, and regression-test patches
  • preserve new generated exports while restoring legacy alias exports
  • remove the SpeakV2Speed patch and freeze entry because Fern now correctly generates float
  • align the frozen reference with Agent ForceEndTurn, Agent expressivity, Nova-3 keyword guidance, and the Flux speed range
  • add sync/async regression coverage for Agent ForceEndTurn, Agent expressivity settings, Listen V2 EOT controls, and Speak V2 REST speed/expressivity serialization
  • add a Voice Agent ForceEndTurn example that uses the required Flux listen provider

Unsupported voice removal

  • Removed invalid aura-2-perseo-it from src/deepgram/types/speak_v1model.py.
  • Removed invalid aura-2-perseo-it from src/deepgram/speak/v1/audio/types/audio_generate_request_model.py.

Compatibility

  • existing Agent Settings, singular language_hint, Agent UpdateListen, Listen V2 subscript access, no-payload control sends, and custom transport behavior remain supported
  • restored wire coverage retains query serialization checks for Manage requests and Listen V1 media
  • generated Speak V1 model literals no longer list aura-2-perseo-it; this removal is intentional because it is not a valid Aura-2 Italian voice

Validation

  • poetry run mypy src/ tests/typecheck/compat_aliases.py: 904 source files passed
  • unit suite: 967 passed, 1 skipped
  • non-management WireMock integration suite: 21 passed
  • focused new-control suite: 72 passed
  • 24 non-management examples completed against the configured API key, including Listen V1/V2, ForceEndTurn, reconnection, Speak V1/V2, Voice Agent, Read, request options, error handling, and microphone capture with controlled SIGINT shutdown
  • ruff check on changed tests and examples, and git diff --check

Live control verification

  • Listen V2 with eot_threshold=1.0 and eot_timeout_ms=60000 accepted ForceEndTurn and returned trigger=manual.
  • Speak V2 REST accepted speed 0.5 and 1.5; speed 1.03 returned HTTP 400 with an increment error.
  • Agent settings accepted Flux expressivity=2.
  • Agent ForceEndTurn with a V1/Nova listen provider returned FORCE_END_TURN_UNSUPPORTED; with a V2/Flux listen provider it proceeded through a user transcript, assistant response, and AgentAudioDone without a warning or disconnect.

Intentionally not run

  • management/state-changing examples 50 through 56 and 60, per review scope
  • callback example 12, which requires an externally reachable callback URL
  • SageMaker example 27, which requires AWS credentials and a deployed compatible endpoint

Generation metadata

originGitCommitIsDirty is expected: Fern ran after an uncommitted fern/generators.yml change that switched only the Python output mode and target branch to this regeneration branch. No API specification or Python code-generation setting was uncommitted, so the generated SDK contract is unchanged by that marker.

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Code Coverage

Package Line Rate Branch Rate Complexity Health
src.deepgram 97% 94% 0
src.deepgram.agent 100% 100% 0
src.deepgram.agent.v1 98% 100% 0
src.deepgram.agent.v1.settings 100% 100% 0
src.deepgram.agent.v1.settings.think 100% 100% 0
src.deepgram.agent.v1.settings.think.models 97% 100% 0
src.deepgram.auth 100% 100% 0
src.deepgram.auth.v1 100% 100% 0
src.deepgram.auth.v1.tokens 97% 100% 0
src.deepgram.core 88% 81% 0
src.deepgram.errors 100% 100% 0
src.deepgram.helpers 100% 95% 0
src.deepgram.listen 100% 100% 0
src.deepgram.listen.v1 98% 93% 0
src.deepgram.listen.v1.media 97% 100% 0
src.deepgram.listen.v2 98% 93% 0
src.deepgram.manage 100% 100% 0
src.deepgram.manage.v1 100% 100% 0
src.deepgram.manage.v1.models 96% 100% 0
src.deepgram.manage.v1.projects 97% 100% 0
src.deepgram.manage.v1.projects.billing 100% 100% 0
src.deepgram.manage.v1.projects.billing.balances 96% 100% 0
src.deepgram.manage.v1.projects.billing.breakdown 97% 100% 0
src.deepgram.manage.v1.projects.billing.fields 97% 100% 0
src.deepgram.manage.v1.projects.billing.purchases 97% 100% 0
src.deepgram.manage.v1.projects.keys 96% 100% 0
src.deepgram.manage.v1.projects.members 97% 100% 0
src.deepgram.manage.v1.projects.members.invites 96% 100% 0
src.deepgram.manage.v1.projects.members.scopes 96% 100% 0
src.deepgram.manage.v1.projects.models 96% 100% 0
src.deepgram.manage.v1.projects.usage 98% 100% 0
src.deepgram.manage.v1.projects.usage.breakdown 97% 100% 0
src.deepgram.manage.v1.projects.usage.fields 97% 100% 0
src.deepgram.read 100% 100% 0
src.deepgram.read.v1 100% 100% 0
src.deepgram.read.v1.text 98% 100% 0
src.deepgram.self_hosted 100% 100% 0
src.deepgram.self_hosted.v1 100% 100% 0
src.deepgram.self_hosted.v1.distribution_credentials 96% 100% 0
src.deepgram.speak 100% 100% 0
src.deepgram.speak.v1 98% 97% 0
src.deepgram.speak.v1.audio 91% 80% 0
src.deepgram.speak.v2 98% 93% 0
src.deepgram.speak.v2.audio 100% 100% 0
src.deepgram.voice_agent 100% 100% 0
src.deepgram.voice_agent.configurations 95% 100% 0
src.deepgram.voice_agent.variables 95% 100% 0
Summary 95% (6503 / 6818) 91% (1419 / 1552) 0

Scope: hand-maintained SDK logic. Fern-generated data models (types/, requests/), package __init__.py files, version.py, and the unused core/http_sse/ scaffolding are excluded — see .coveragerc. Unscoped whole-package coverage is ~70%.

@GregHolmes GregHolmes changed the title chore: SDK regeneration 2026-09-03 chore: sdk regeneration 2026-09-03 Sep 4, 2026
@GregHolmes GregHolmes changed the title chore: sdk regeneration 2026-09-03 feat(regen): agent force-end-turn and Flux expressivity controls Sep 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant