> This page is for SDK.

> For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://buildwithfern.com/learn/llms.txt.

## 0.26.3

**`(fix):`** 在 WebSocket 连接中跳过 `Sec-WebSocket-Protocol` 头部。此头部是为 RFC 6455 子协议协商保留的，由 tungstenite 内部处理。
之前将其作为常规 HTTP 头部包含会导致 tungstenite 在服务器未回显该头部时握手失败。

## 0.26.2

**`(chore):`** 在便利构造函数中将所有可选字段作为 `Option<T>` 参数包含。
之前，`{variant}_with_{field}` 构造函数仅接受提升的字段，并将所有其他可选字段默认为 `None`。现在它们接受所有其他可选字段
作为 `Option<T>` 参数，让调用者完全控制所有字段。例如，
`assistant_with_tool_calls` 现在接受 `(content: Option<Content>, ..., tool_calls: Vec<ToolCall>)`
而不是仅 `(tool_calls: Vec<ToolCall>)`。

## 0.26.1

**`(fix):`** 修复联合变体的便利构造函数，这些变体的可选字段具有嵌套的
可选/可空 IR 包装器（例如来自 OpenAPI 的 `optional<nullable<string>>`）。
之前只解包了一层，将参数保留为 `Option<T>` 而不是 `T`，这导致 `E0308 mismatched types` 编译错误。现在
所有可选/可空层都被剥离以生成正确的裸类型。

## 0.26.0

**`(feat):`** 为具有可选字段的判别联合变体生成便利构造函数。
对于内联变体中的每个可选字段，生成一个 `{variant}_with_{field}` 构造函数，
该构造函数接受字段作为必需参数（从 `Option<T>` 解包）同时
将所有其他可选字段默认为 `None`。例如，具有
可选 `tool_calls` 的 `Assistant` 变体现在获得一个 `assistant_with_tool_calls(tool_calls: Vec<ToolCall>)`
构造函数。

## 0.25.1

**`(fix):`** 停止为仅 WebSocket 的子包生成空的 HTTP 客户端存根。当 AsyncAPI
通道创建没有 HTTP 端点的子包（例如 `realtime`、`tts`）时，生成器
不再在 `resources/` 中发出冗余的空客户端结构。实际的 WebSocket
功能通过 `WebSocketChannelGenerator` 保留在 `src/api/websocket/` 中。这
移除了 resources 中空的基于 HTTP 的 `RealtimeClient` 与 websocket 模块中功能性的基于 WebSocket 的 `RealtimeClient` 之间令人困惑的名称冲突。

**`(fix):`** WebSocket 连接器现在总是从存储的
客户端令牌自动注入 Authorization 头部，匹配 TypeScript SDK 体验，其中 `client.realtime.connect()`
无需手动传递认证即可工作。之前，在 AsyncAPI 规范中具有显式 Authorization
头部的通道要求用户自己传递令牌。

## 0.25.0

**`(feat):`** 改进无判别联合设计，使用 `snake_case` 方法名称、更好的变体命名、
去重类型引用等。

## 0.24.1

**`(fix):`** 修复内联到判别
联合变体中的类型的 `mod.rs` 模块声明未被移除。生成器删除了内联类型的结构文件，但仍然
为它们发出 `pub mod` 和 `pub use` 声明，导致生成的 SDK 中出现 `error[E0583]: file not
found for module` 编译错误。