Changelog
New Features:
- Knowledge Retrieval Pipeline:
Knowledge.search()now runs a knowledge level retrieval pipeline that can widen the candidate pool before a reranker reorders it, so rerankers no longer need to be implemented per vector db. - MMR Reranker: Added
MMRReranker(Maximal Marginal Relevance) as a retrieval strategy that balances relevance against diversity so near-duplicate chunks do not crowd out the result set. - Page Source Relocation: Added
Knowledge.inspect_page_source/ainspect_page_sourceand guardedmigrate_page_source/amigrate_page_sourceto move an indexed documentation source to a new hostname. Migration is a dry run by default. - Recency Reranker: Added
RecencyReranker, which blends the search score with an exponential decay on a timestamp so newer revisions outrank superseded ones. Built on the knowledge level pipeline, focused on pgvector. - Typed Page Tool Results: Added
PageCommandResultandPageFileSystem.run_command_result/arun_command_resultwith explicit error, completeness and truncation metadata.Knowledge.get_tools(page_results=True)returns rankedSearchResultobjects, including as MCP structured output. - Y-API: Added
YAPIas an OpenAI-compatible model provider. - Cancellation Stage: Added a machine-readable
cancellation_stage(PENDING,EXECUTING,INTERRUPTED, or unknown) toRunOutput,TeamRunOutput,WorkflowRunOutputand the run API schemas, so clients no longer match on the cancellation message text. - OpenAIResponses: Added
use_previous_response_idsostore=Trueno longer forces automaticprevious_response_idchaining.
Improvements:
- MCP Tool Schemas: Every argument on the AgentOS MCP tools now carries a description in its
inputSchema, andget_sessionsboundslimitandpageto a minimum of 1. - Reasoning Detection: DeepSeek thinking-mode model IDs are recognised as reasoning models when served through any
OpenAILikeprovider such asDashScope. - Tools: Removed phantom
Argsentries from tool docstrings and corrected streaming docstring parameter names in two model classes.
Bug Fixes:
- Tool Hooks: Sync hooks that return
function_call(**arguments)now work in the async execution path. Previously the chain treated the unawaited coroutine as the tool result and the tool body never ran. - MCP Server Card: Bare
mcp=Truenow installs the same routing layer asMCPConfig, so the Host check and mount prefix apply on both spellings. Dropped the unimplementedETag/If-None-MatchCORS headers. - MCP Tools: Tool discovery over a raw
ClientSessionnow collects everytools/listpage instead of only the first. - AG-UI: Support
ag-ui-protocol1.0, including list-valued tool result content on resume. - Workflows over WebSocket: Version-pinned submissions are no longer queued without their pin, session ownership is checked on the write path, and a missing session id mints a new session like HTTP.
- JSONReader: Preserve scalar JSON roots.
- CSVReader: Read text streams, not only byte streams.
- CSVReader & FieldLabeledCSVReader: Validate
page_sizebefore reading, so zero or negative values raiseValueErrorinstead of silently returning no documents. - Structured Output Parsing: Ignore unmatched closing braces in prose when extracting JSON objects from model output.
- GoogleDriveTools: Read text inside grouped shapes and honour line breaks when extracting
.pptxtext. - UTF-8 Files:
read_yaml_file/write_yaml_file,AntigravityToolsandAirflowToolsnow read and write files as UTF-8 regardless of locale. - DuckDbTools: Escape CSV delimiters.
- TavilyTools: Forward extract options.
- Cookbooks & Docs: Replaced dead links in knowledge sources and fixed a duplicated word in the V3 migration guide. Added Inspeximus memory and Confident AI observability examples.
Deprecations:
- Vector DB Reranker: The
rerankerparameter on vector databases is deprecated in favour of the reranker onKnowledge, which applies to every vector db and supports async.
What's Changed
- chore: remove phantom Args entries in the tool docstrings by @simpleqt in #10229
- cookbook: add Confident AI observability example by @kausmeows in #10257
- fix: correct streaming docstring parameter names in two model classes by @simpleqt in #10228
- feat: add knowledge level retrieval pipeline and MMR reranker by @sannya-singal in #10115
- fix: bring WebSocket workflow submissions in line with the HTTP admission rules by @ysolanky in #10179
- [fix] Paginate MCP tool discovery for ClientSession by @sicauzxl in #10012
- fix: support ag-ui-protocol 1.0 in the AG-UI interface by @Himanshu040604 in #10283
- [feat] Add Y-API as an OpenAI-compatible model provider by @jiweiyeah in #10326
- [fix] Correct duplicated word in V3 migration guide by @yetuge in #10315
- [fix] replace dead links in cookbook knowledge sources and docs references by @Theater-ahyeon in #10160
- [cookbook] Add inspeximus memory integration example by @DanceNitra in #10146
- fix: recognize DeepSeek thinking-mode IDs in OpenAILike reasoning detection by @yetuge in #10342
- [fix] Validate page_size in FieldLabeledCSVReader by @tdog54646 in #10358
- fix: decouple OpenAI response storage from automatic chaining by @ashpreetbedi in #10075
- feat: deprecate the vector db level reranker by @sannya-singal in #10385
- feat: add guarded documentation source relocation API by @ashpreetbedi in #10096
- feat: expose typed page command and search tool results by @ashpreetbedi in #10097
- [fix] read text streams in CSVReader instead of only byte streams by @harbinresearcher in #10355
- [fix] Escape CSV delimiters in DuckDbTools by @imexlovery in #10415
- [fix] Forward Tavily extract options by @daleselaji-dev in #10403
- [fix] Preserve scalar JSON roots in JSONReader by @daleselaji-dev in #10402
- fix: route bare mcp=True like MCPConfig for the MCP server card by @ysolanky in #10418
- fix: describe and bound the MCP tool arguments by @ysolanky in #10419
- [fix] Validate CSVReader page sizes before reading by @emme1t in #10437
- feat: add cancellation_stage to cancelled runs by @ysolanky in #10411
- fix: read and write YAML, Antigravity and Airflow files as UTF-8 by @MohammadHijjawi97 in #10242
- fix: read grouped shapes and line breaks in Drive pptx text by @devYRPauli in #10473
- [fix] Ignore unmatched closing braces when extracting JSON objects by @makiaveli1 in #10421
- feat: add recency reranker by @sannya-singal in #10396
- fix: await sync hook continuations in async chains by @kausmeows in #10481
- fix: drop IMDB CSV from knowledge URL tests to stop CI timeouts by @sannya-singal in #10498
- chore: Release v3.0.11 by @kausmeows in #10444
New Contributors
- @sicauzxl made their first contribution in #10012
- @jiweiyeah made their first contribution in #10326
- @yetuge made their first contribution in #10315
- @Theater-ahyeon made their first contribution in #10160
- @DanceNitra made their first contribution in #10146
- @tdog54646 made their first contribution in #10358
- @harbinresearcher made their first contribution in #10355
- @imexlovery made their first contribution in #10415
- @emme1t made their first contribution in #10437
- @MohammadHijjawi97 made their first contribution in #10242
- @makiaveli1 made their first contribution in #10421
Full Changelog: v3.0.10...v3.0.11