Skip to content

🌿 Fern Regeneration -- November 12, 2025 - #2

Closed
fern-api[bot] wants to merge 2 commits into
mainfrom
fern-bot/2025-11-12T11-37Z
Closed

🌿 Fern Regeneration -- November 12, 2025#2
fern-api[bot] wants to merge 2 commits into
mainfrom
fern-bot/2025-11-12T11-37Z

Conversation

@fern-api

@fern-api fern-api Bot commented Nov 12, 2025

Copy link
Copy Markdown
Contributor

This PR regenerates code to match the latest API Definition.

@GregHolmes GregHolmes closed this Mar 25, 2026
GregHolmes added a commit that referenced this pull request Aug 12, 2026
…provider + google version (#92)

Regenerates the SDK against the latest Fern generator (`4.10.1` →
`4.16.0`) and API spec (`ff8fd2b` → `03f0677`), reconciles the
hand-maintained patches, and documents the resulting breaking changes
with a migration guide. Supersedes the reverted #89.

## Base
Stacked on the revert branch (#91). Until that merges, this PR's diff
includes the revert commit; merge #91 first (or it rides along).

## ⛔ Blocked / do not merge yet
Regenerated from an **unmerged spec branch**: `.fern/metadata.json`
`originGitCommit` `03f0677` lives only on `origin/jherlihy/flux-tts-ga`,
not on `deepgram-docs` `main`. The launch surface here
(`breaks_applied`, `ConfigureFailure`, `expressivity`, `speed`,
`redact`) exists only on that branch. Kept as a **draft** until it
lands.
- **Blocked-on:** `deepgram-docs#1094` (Flux TTS copy) + the
`jherlihy/flux-tts-ga` spec branch merging to `deepgram-docs` `main`.

## Breaking changes (pre-1.0, source/compile-time only)
All three follow the API definition; on-the-wire payloads for existing
requests are unchanged. Full before/after in
[`docs/Migrating-v0.7-to-v0.8.md`](./docs/Migrating-v0.7-to-v0.8.md).

1. **`AgentV1UpdateListenListen.provider`** retyped
`DeepgramListenProviderV2` → `AgentV1UpdateListenListenProvider` (V1/V2
union). Wrap with `AgentV1UpdateListenListenProvider.v2(...)`; read via
`getV2()`.
2. **`Google.version`** retyped `Optional<String>` →
`Optional<GoogleThinkProviderVersion>`. Use the enum constants
(`V1BETA`, `AI_STUDIO_V1BETA`, `GEMINI_ENTERPRISE_AGENT_V1`).
3. **`SpeakV2SpeechMetadataControlsApplied`** gains a required
`breaksApplied` field (new builder step; new `getBreaksApplied()`). Read
paths unaffected.

Origin verified: #2 and #3 are new in the latest spec; #1's union shape
existed in #89 but was previously hidden behind an in-SDK shim we
intentionally did not carry forward.

## Reconciliation (post-regen review)
Diffed each of the 17 `.bak` patches against the freshly generated
originals — **all 17 still needed**, none dropped. `.fernignore`
restored to its pre-prep state; all `.bak` files deleted.
- **13 restored verbatim** (generator produced no other changes): the 11
fields-less `hashCode()` types, `ReconnectingWebSocketListener`
(override hook / `connectionTimeoutMs` / `maxRetries(0)` semantics), and
the `listen/v1` + `speak/v1` websocket clients (query-param repeats +
`additionalProperties`).
- **2 surgically merged** (`listen/v2` + `speak/v2` websocket clients):
re-applied `QueryStringMapper` array-param serialization, the
`additionalProperties` escape hatch, and the forward-compat
unknown-message no-op, **while keeping the generator's new features**
(speak/v2 `sendInterrupt`/`sendConfigure` +
`onSpeechInterrupted`/`onConfigureSuccess`/`onConfigureFailure`;
listen/v2 `redact`).
- **`ClientOptions`**: kept the new retry-tuning options +
`ResponseDecompressionInterceptor`; re-applied only the two `//
x-release-please-version` header lines (colon SDK-name form), removed
the generator's `getSdkVersion()` helper (build does not stamp the JAR
manifest, so it would drift).

## Additive highlights
Speak V2 interrupt/configure, Listen V2 `redact`, Speak V2
`speed`/`expressivity`, new Deepgram Flux TTS voices, client retry
tuning, automatic response decompression.

## Tests added
- `ListenV2ConnectWireTest`: new `redact` connect param (present as wire
`numbers`, omitted when absent).
- `RegenTypesTest` → "2026-08-11 regen type shapes": the three breaking
shapes (provider union v2 factory/`getV2`/serialization,
`Google.version` enum wire value, `ListenV2Redact` wire values).

## Verification
- `./gradlew unitTest` ✅ · `spotlessCheck` ✅ · `compileExamples` ✅
- `./gradlew integrationTest` ✅ (Tier 1 + Tier 2 against a live key);
opt-in Speak V2 WS integration ✅ (returned audio over the new v2 WS
path)
- Ran all non-`manage` examples: 19 pass, 7 long-running streaming/agent
examples connected and worked, 4 environmental (proxy / file-arg /
callback URL / SageMaker) — no SDK regressions.

## Post-review additions (from #91 review)
- **Re-applied the union default-variant fix** the #89 revert forfeited
(issue #93): `defaultImpl = V2Value` on
`AgentV1UpdateListenListenProvider`,
`AgentV1SettingsAgentListenProvider`,
`AgentV1SettingsAgentContextListenProvider`, so a provider payload
omitting the optional `version` discriminator (what 0.7.x emits)
deserializes as V2 instead of dropping to `{"provider":null}`. Frozen in
`.fernignore` + `AGENTS.md`, guarded by the re-added
`AgentSettingsProviderDefaultTest`. The `getProvider()` return-type shim
is intentionally **not** re-applied — that retype is a deliberate
breaking change (see the migration guide).

## Core behavior changes (generator 4.10.1 → 4.16.0)
Beyond the spec features, the generator upgrade changes core HTTP-client
behavior worth calling out in the release notes:
- **Automatic response decompression** is now installed by default
(`ResponseDecompressionInterceptor`): gzip/deflate-encoded HTTP
responses are transparently decoded. No API change; transparent to
callers.
- **New optional retry tuning** on `ClientOptions.Builder`:
`initialRetryDelayMillis`, `maxRetryDelayMillis`, `retryJitterFactor`.
All defaulted — existing behavior is unchanged unless set.

## Follow-ups
- Once this lands, release-please cuts a fresh release at **0.8.0**
(breaking `feat!`).
- **Changelog needs a manual edit before releasing.** `5b6323a` (#89
`feat(regen)`) is still in release-please's range since `v0.7.1`, and
release-please can't pair a revert with the commit it reverts — so the
generated 0.8.0 notes will re-list the reverted #89 features
(`diarize_info`, force-end-turn) under Features. Hand-edit the release
PR's `CHANGELOG.md` to drop them before merging it.

BREAKING CHANGE: `AgentV1UpdateListenListen.provider` is now
`AgentV1UpdateListenListenProvider` (V1/V2 union); `Google.version` is
now `Optional<GoogleThinkProviderVersion>`;
`SpeakV2SpeechMetadataControlsApplied` has a new required
`breaksApplied` field. See docs/Migrating-v0.7-to-v0.8.md.

---------

Co-authored-by: fern-api[bot] <115122769+fern-api[bot]@users.noreply.github.com>
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.

2 participants