python/v1.55.0
Auto-drafted from commits in python/v1.54.0..python/v1.55.0, grouped by conventional-commit type. Edit on the release page after publish if you want a polished writeup; the canonical release notes live on the website.
🚀 Features
- feat: export context manager types as experimental (#4231) (ec6eb54)
- feat: accept cache_config on Ollama, Writer, and SageMaker (#4232) (42aedfc)
- feat(context-py): port stash integration (#4187) (a642b41)
- feat(mcp): add prefix_with_server_name and continue_on_error defaults to load_servers (#4177) (def3be9)
- feat(context-py): port offloading stratgies (#4146) (e3f3ee4)
- feat(bidi): add AudioCapable and typed model config (#4144) (d835251)
- feat(mcp-py): relax mcp version to <2.2 (#4151) (24e556b)
- feat(context-manager): add session support for L1 (#4118) (3f2ee2f)
- feat(mcp/py): support SEP-2663 tasks (#4125) (83982c2)
- feat(python): add internal in-process task engine / manager (#4115) (726478d)
- feat!: require Node.js 22+, drop Node 20 support (#4145) (24bc5c3)
- feat(py): add web_fetch vended tool (#4001) (8cd82e6)
- feat(bidi): implement LocalAgent (#4108) (d1da8a0)
- feat: add cache config to llama.cpp (#4127) (9be952f)
- feat: support caching for vercel provider (#4055) (a02c1db)
- feat(mcp-py): extend MRTR to prompts and resources, scope hand-sent cancel to 1.x (#4121) (582bb48)
- feat(mcp-py): refresh tools on list-changed notifications for 2.x (#4112) (27a30e0)
- feat(mcp-py): added MRTR input-required support for 2.x (#4094) (47b9dad)
- feat(bidi): add reconnect() for openai (#4104) (48d360d)
- feat(agent): add LocalAgent protocol (#4091) (577a9d6)
- feat(models): add tools_ttl to CacheConfig and deprecate cache_tools (#3893) (#3985) (8e403d7)
- feat(mcp): added call_tool support for 2.x (#4090) (b0ff900)
- feat(context-manager): add L1 stash for durable storage of offloaded content (#3924) (1f059ff)
- feat(bidi): add reconnect() for gemini google live (#4078) (c1a8884)
- feat(ts): porting classifier routing strategy from python (#3987) (f2f15f4)
- feat(py): support multiple continuation inputs (#3953) (4705f0c)
- feat(ts): add backgroundTasks to Agent (#4026) (c1d5e4e)
- feat(mcp): added server/discover for SEP-2575 (#3821) (00dd3c5)
- feat: mcp v2 compatible changes under a flag (#3708) (534692a)
- feat(storage): add QmdSearchStrategy with BM25 full-text search (#3897) (3d15419)
- feat(models): add cache_config to Mistral (#3986) (eabcb13)
- feat(bidi): proactive session reconnect for bidi session (#3874) (23d39ac)
- feat(ts): add internal BackgroundTaskManager interface + InProcessTaskManager impl (#3876) (45bcea8)
- feat(bedrock): support API key authentication (#3601) (01a5aad)
🐛 Fixes
- fix(file-editor): stop str_replace and insert from expanding tabs on the write path (#4182) (332a148)
- fix: handle empty input for zero-argument tools without warning (#4195) (f86a170)
- fix(context-offloader): preserve non-bytes image/document blocks (#4017) (#4059) (0bce4ed)
- fix(vercel): emit tool results before user text to preserve tool_use/tool_result adjacency (#4138) (3b4ca85)
- fix(session): remove orphaned toolResults at any index, not only the first (#4154) (ca188fe)
- fix(mcp-py): added httpx2 adapter (#4183) (c956822)
- fix: gate the deprecated cache_tools point on the resolved cache strategy (#4186) (55803bc)
- fix(typescript): remove @tobilu/qmd from optional dependencies (#4178) (6cdd21b)
- fix(bidi): rename reconnect to restart (#4143) (34d0362)
- fix(openai): report max_tokens when a Responses function call is cut off (#4139) (4bddde6)
- fix(mcp-py): resolve the OAuth scope keyword rename on mcp 2.x (#4147) (61deac5)
- fix(bidi): internal renames for bidi constants and private class (#4140) (10a9b37)
- fix(ts): close the model invoke span when the consumer breaks the stream (#3898) (2c18d8f)
- fix(storage): reject backslashes in storage keys (#4126) (d00fed6)
- fix(bedrock): handle missing reasoningText in non-streaming conversion (#4124) (26ee1a1)
- fix: include cached tokens in input_tokens (#4080) (33f139b)
- fix(sagemaker): parse each SSE event within a PayloadPart (#4036) (f51718e)
- fix(bidi): bedrock nova sonic reconnect (#4082) (7b0f874)
- fix(ts-telemetry): close cycle telemetry when the stream iterator exits early (#4054) (d51ad20)
- fix(mcp): pass list pagination as params for the mcp 2.x version (#3984) (7cec80d)
- fix(python): close agent trace span on BaseException cancellation (#4013) (ed05dcf)
- fix(file-editor): stop str_replace and insert from rewriting untouched bytes (#4014) (e448bea)
♻️ Refactoring
- refactor(bidi): make BidiModel extend Model (#4081) (df837aa)
- refactor(bidi): refine audio processing configuration (#3952) (1872856)
- refactor(bidi): rename model providers (#3956) (3f1e99b)
- refactor(python): port pending tool execution state (#3894) (29dfce6)
📚 Documentation
- docs: add Lelu to the integrations catalog (#4196) (b31169e)
- docs: blog post on hitting 99.95% on ARC-AGI-3 with Strands harness (#4048) (e5b6b6d)
- docs: add model routing guide (#4092) (f271cab)
- docs: recommend snapshot session manager (#4116) (85d3b88)
- docs(changelog): sync strands-agents/harness-sdk typescript/v1.16.0 (#4085) (1adf5f1)
- docs: add mem0-strands (memory-store) (#4003) (5bf5d66)
- docs(site): name the SDK and install packages on agent-retrieved pages (#4044) (9062527)
- docs(blog): add Agents for Humans hackathon challenge post (#3927) (02bbf0a)
- docs(design): align 0016 with shipped ClassifierStrategy (#4046) (717f7e4)
- docs: lead README and llms.txt with when to choose Strands (#4045) (3289148)
- docs: blog post on Strands Robots networking and the Model Hardware Standard (#4024) (1941a72)
- docs(changelog): sync strands-agents/harness-sdk python/v1.54.0 (#4023) (b506d6a)
✅ Tests
- test(mcp): added mcp 2.x integ tests (#4129) (0b2597a)
- test(bedrock): stabilize the cache-point-after-document integ test (#4119) (e13bfcd)
👷 CI
- ci(typescript): add install-size guard to pack test (#4179) (e1f35db)
- ci(docs): bump typedoc-plugin-markdown from 4.12.0 to 4.13.0 in /site (#4073) (aba32d9)
- ci(docs): bump p-limit from 7.3.1 to 7.3.2 in /site (#4163) (103642b)
- ci: move codecov config to repo root so Codecov discovers it again (#4174) (f4a3191)
- ci: use strands-agents 4-core runner pool (#4141) (0918098)
- ci: cancel superseded PR runs to reduce runner concurrency (#4134) (022e5a5)
- ci(docs): bump node-html-parser from 9.0.1 to 9.0.2 in /site (#4099) (6d325ef)
- ci(docs): bump markdown-it from 15.0.0 to 15.0.1 in /site (#4075) (d8f250d)
- ci(docs): bump @astrojs/starlight from 0.41.7 to 0.41.9 in /site (#4072) (55cd79a)
- ci(docs): bump astro from 7.2.2 to 7.2.6 in /site (#4030) (c2d2d4f)
- ci(docs): bump @types/markdown-it from 14.1.2 to 14.2.0 in /site (#3908) (7848cd9)
- ci(docs): bump satteri from 0.9.5 to 0.10.5 in /site (#3939) (82f5c6c)
🔧 Chores
- chore(bidi): upgrade pywebrtc audio to 0.2 (#4149) (2acc974)
- chore(python): deprecate LlamaAPI model provider (#4011) (36c9e41)