Repository navigation
Highlights
- Mistral voice for
ag2.live: offline and realtime speech-to-text (MistralTranscriber,MistralRealtimeTranscriber) and text-to-speech (MistralTTSConfig,MistralStreamingTTSConfig), on top ofmistralai3.2 with its new chat parameters. OpenAIResponsesConfigaccepts areasoningoption for effort and summaries.- New search toolkits:
FirecrawlToolkitandKeenableSearchToolkit. - New
compaction_verifierextension: measures whether aCompactStrategymakes the agent's next actions worse, not just how many tokens it saves. - TypeSafe can locate objects in images:
ResponseSchema(BoundingBox)sends a Box question. - ACP and the network layer keep multimodal input parts instead of flattening them to text.
- Fixes for Ollama, Gemini and xAI history, paginated file listings, and atomic SQLite and Redis knowledge appends.
Upgrade notes
- Mistral uses
httpx2.mistralai3.x moved fromhttpxtohttpx2, soMistralConfig.async_clientis now anhttpx2.AsyncClientand the extra requiresmistralai>=3.2.0,<4. Anhttpx.AsyncClientstill works at runtime but no longer type-checks, andhttpx.HTTPErrordoes not catchhttpx2errors. - ElevenLabs now requires
elevenlabs>=2.73.0,<3. - Input parts are no longer joined into one string in ACP and the network layer. ACP sends each part as its own content block, based on what the agent advertises; before, every non-text part was dropped.
ChannelAdapter.render_envelopeandextract_turn_inputcan now return anInputor a sequence of them, so check custom channel adapters. - MCP tool calls are pinned to the configuration used for discovery, so a
Variable(default_factory=...)can no longer route a call to a different server than the one that advertised the tool. - OpenAI Chat Completions rejects files uploaded to another provider with
UnsupportedInputError, like the Responses, Anthropic and Gemini mappers.
What's Changed
- chore(deps): bump j178/prek-action from 3.0.0 to 3.0.1 in the github-actions group by @dependabot[bot] in #3405
- chore(deps): bump the uv group with 16 updates by @dependabot[bot] in #3406
- fix(ollama): serialize multipart tool results as text by @ch-z-hc in #3374
- feat(openai): add reasoning option to OpenAIResponsesConfig by @vvlrff in #3407
- feat(mistral): bump mistralai to 3.2 and expose new chat parameters by @vvlrff in #3408
- fix: keep input parts separate instead of joining them into a string by @vvlrff in #3413
- fix(annotations): resolve falsy Variable and Inject values from context by @kabishou11 in #3414
- fix(events): fall back to media type for unknown binary kinds in sizing by @kabishou11 in #3416
- fix(eval): apply threshold keys to passthrough feedback by @BichengWang in #3423
- fix(gemini): preserve function call IDs in history by @ch-z-hc in #3417
- fix(shell): check paths after '=' against the ignore list by @kabishou11 in #3415
- fix(xai): preserve conversation history order by @ch-z-hc in #3418
- feat(extensions/search): add Firecrawl search and scrape toolkit by @JuampiHernandez in #3362
- feat(live): add MistralTranscriber for offline speech-to-text by @vvlrff in #3419
- feat(live): add Mistral TTS configs by @vvlrff in #3420
- fix(typesafe): bump typesafe-sdk to 0.7.5 and handle unexpected answe… by @vvlrff in #3424
- fix(elevenlabs): support elevenlabs 2.73 and expose Scribe/TTS options by @vvlrff in #3437
- fix(files): enumerate all file listing pages by @ch-z-hc in #3429
- fix(a2a): accept empty text, raw and url parts in part_to_input by @kabishou11 in #3440
- fix(openai): reject files from another provider in Chat Completions messages by @kabishou11 in #3441
- test(ag-ui): make the pre-question client call test deterministic by @vvlrff in #3444
- fix(knowledge): remove empty parent directories after DiskKnowledgeStore.delete by @kabishou11 in #3439
- fix(mcp): pin tool calls to the discovered configuration by @ch-z-hc in #3435
- feat(typesafe): support Box questions with a BoundingBox response schema by @vvlrff in #3436
- fix(events): honor explicit media types for local paths by @ch-z-hc in #3430
- fix(xai): preserve file creation timestamps by @ch-z-hc in #3431
- fix(gemini): honor the configured HTTP client for files by @ch-z-hc in #3427
- fix: make SQLite knowledge append atomic across stores by @liangzhechen655 in #3388
- fix(eval): accept os.PathLike in human_labels by @BichengWang in #3376
- fix: notify knowledge watchers of both renamed paths by @liangzhechen655 in #3389
- fix: normalize knowledge store lock paths by @liangzhechen655 in #3390
- fix: make Redis knowledge appends atomic across connections by @liangzhechen655 in #3391
- fix(response): accept Literal schemas by @ch-z-hc in #3432
- test(config): cover ToolSearchTool rejection in unsupported-provider tests by @BichengWang in #3375
- chore(deps): bump the github-actions group with 4 updates by @dependabot[bot] in #3453
- test(xai): share one gRPC Files server helper across file tests by @vvlrff in #3448
- feat(live): add Mistral realtime transcriber by @vvlrff in #3421
- chore(deps): bump aiohttp from 3.14.3 to 3.14.4 by @dependabot[bot] in #3458
- feat(extensions): add mi4afa probing failure attribution by @wuliang211 in #3277
- feat(extensions/search): add Keenable search toolkit by @ilya-bogin-keenable in #3373
- docs(extensions/search): link Keenable API docs for request and response fields by @vvlrff in #3463
- feat(extensions): add compaction_verifier — measure whether a CompactStrategy makes the agent's next actions worse by @wuliang211 in #3306
- fix(ollama): keep tool call IDs unique across turns by @ch-z-hc in #3426
- chore: bump version to 1.2.1 by @vvlrff in #3467
New Contributors
- @ch-z-hc made their first contribution in #3374
- @JuampiHernandez made their first contribution in #3362
- @wuliang211 made their first contribution in #3277
- @ilya-bogin-keenable made their first contribution in #3373
Full Changelog: v1.2.0...v1.2.1