python/v1.46.0
Auto-drafted from commits in python/v1.45.0..python/v1.46.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(ts): preserve MCP output schemas (#3109) (b07fadb)
- feat(designs-storage): add storage design doc proposal (#3080) (2e3dfff)
- feat(memory): pass per-message sequence numbers to add_messages (#3030) (e050fc8)
- feat(mcp/py): load MCP servers from JSON (#3053) (eb654d5)
- feat(mcp/ts): load MCP servers from JSON (#2947) (49f3a21)
- feat(issue-template): add Port Request template (#3009) (712ab53)
- feat(changelog): add changelog page and per-release pages to docs site (#2717) (2b84b9e)
- feat: add local memory store (#2859) (84fff9a)
- feat(middleware): result handling, model-state isolation, and system-prompt fidelity (#2812) (bc3d96a)
- feat: telemetry for memory manager (#2858) (d9b9061)
🐛 Fixes
- fix(ci): create release tag via git push instead of gh release --target (#3115) (f148778)
- fix(bidi): validate transcript message roles (#3037) (b8d03ea)
- fix(context-offloader): confine retrieved paths to the artifact directory (#3035) (861a1e4)
- fix(ci): guard upload-metrics on integration-test job result (#3102) (238e1de)
- fix(session): repair mid-iteration skip of orphaned toolUse (#3026) (f282b61)
- fix(multiagent): preserve failed status reported by graph nodes (#3028) (7b37466)
- fix(graph): exclude edges from bypassed nodes in resume AND-join (#3069) (3755b68)
- fix(model): drop blank text content blocks before send (#3029) (f9fe1dc)
- fix(multiagent): buffer graph node printer output to prevent interleaving (#3077) (ad0061c)
- fix(otel): record tool_trace on interrupted tool calls (#3031) (531d526)
- fix(event_loop): log exception type instead of full traceback on cycle failure (#2989) (7cc8c53)
- fix(context-offloader): preserve body when search output exceeds max_chars (#3064) (4c4d50f)
- fix(ts-offloader): preserve body when search output exceeds max_chars (#3065) (093f1e5)
- fix(telemetry): drop misleading gen_ai.agent.name from multiagent spans (#3023) (54a8948)
- fix(openai): route gpt-5 mantle traffic through /openai/v1 base path (#3032) (2399728)
- fix(py-anthropic): surface cache_read/write input tokens in metadata chunk (#2302) (0da9ba6)
- fix(bedrock): treat guardContent qualifiers as optional (#3027) (6ab71c6)
- fix(typescript): emit valid json for null/undefined tool returns (#3024) (50f3e60)
- fix(typescript): allow interface return types from tool callbacks (#3025) (9b2a8da)
- fix: fixed memory test failure (#3020) (fba46e6)
- fix: add missing parameter doc for concurrent invocations (#3017) (2bfbc5c)
- fix: update outdated document url of exception note (#2049) (4809e9d)
- fix(models): raise ContextWindowOverflowException for ollama/llama/mistral/writer (#2958) (6960e81)
- fix(graph): prevent reset_executor_state from corrupting MultiAgentBase state (#1988) (dab7bcd)
- fix(anthropic): map webp images explicitly (#2304) (ba30078)
- fix(bedrock): normalize 3gp video format (#2306) (7bf4393)
- fix: raise specific error for interrupt responses without active interrupt state (#1979) (99b5446)
♻️ Refactoring
- refactor(checkpoint): drop unused snapshot and app_data fields (#3104) (d1f5480)
- refactor(site): centralize language storage key and clipboard helper (#2779) (520ee9d)
📚 Documentation
- docs: update sonnet 4 model ids to sonnet 4.6 (#3081) (d6f1cb9)
- docs(site): add "New" badge to interventions section (#3062) (6384888)
- docs(porting): add TypeScript-to-Python porting guide (#3010) (d55fc0d)
- docs: move strandslator design docs into team/designs (#3006) (6605b52)
- docs(changelog): backfill historical changelog data (#2761) (315cb95)
- docs: improve agent guidance (#2959) (2349304)
- docs: add Strandslator design doc (#2790) (b29ebe0)
- docs: clarify memory behavior in the memory example (#2979) (9f95695)
✅ Tests
- test(ts): change-based selective integration testing (#2921) (8b5dfd3)
- test: fix two broken main tests (#2982) (b1c6008)
- test: revert pinning virtualenv now that hatch 1.16.5 is out (#1780) (d09de30)
👷 CI
- ci: fix integration test runs (#3112) (a2c3c05)
- ci(docs): bump astro from 7.0.5 to 7.0.6 in /site (c56e8b6)
- ci(typescript): bump the development-dependencies group across 1 directory with 10 updates (06bafa0)
- ci(docs): bump @astrojs/starlight from 0.41.2 to 0.41.3 in /site (87f3db2)
- ci(python): update litellm requirement from <=1.90.2,>=1.75.9 to >=1.75.9,<=1.91.0 in /strands-py (927b471)
- ci(docs): bump typedoc from 0.28.19 to 0.28.20 in /site (3b1ffb9)
- ci: bump astral-sh/setup-uv from 8.2.0 to 8.3.0 (7b9cffe)
- ci(docs): bump @astrojs/markdown-satteri from 0.3.2 to 0.3.3 in /site (ca43703)
- ci: bump dorny/paths-filter from 4.0.1 to 4.0.2 (cd35af4)
- ci(typescript): bump commander from 14.0.3 to 15.0.0 (4ab0cb3)
- ci(python): update litellm requirement from <=1.89.4,>=1.75.9 to >=1.75.9,<=1.90.2 (a6a42d6)
- ci(typescript): bump the development-dependencies group across 1 directory with 9 updates (9d0c0cd)
- ci(docs): bump prettier from 3.8.4 to 3.9.4 in /site (5c4b438)
- ci(python): bump cedarpy from 4.8.5 to 4.8.6 in /strands-py (c407c53)
- ci(python): update google-genai requirement from <2.0.0,>=1.32.0 to >=1.32.0,<3.0.0 in /strands-py (698adc6)
- ci: bump astral-sh/setup-uv from 7.6.0 to 8.2.0 (d3c6bd8)
- ci(docs): bump @astrojs/rss from 4.0.18 to 4.0.19 in /site (#3059) (c17b211)
- ci(docs): bump markdown-it from 14.2.0 to 14.3.0 in /site (#3072) (d66fd6b)
- ci: restrict issue responder to collaborators and pin action version (#2991) (fe69313)
- ci(docs): bump satteri from 0.9.3 to 0.9.4 in /site (#3012) (41eb913)
- ci(docs): bump node-html-parser from 8.0.3 to 8.0.4 in /site (#3013) (d299690)
- ci(docs): bump satteri from 0.9.2 to 0.9.3 in /site (#2976) (c5d043d)
- ci(typescript): bump uuid from 14.0.0 to 14.0.1 in the production-minor group across 1 directory (#2957) (a986f10)
- ci(python): update litellm requirement from <=1.89.3,>=1.75.9 to >=1.75.9,<=1.89.4 in /strands-py (#2960) (7903da9)
- ci(docs): bump satteri from 0.9.1 to 0.9.2 in /site (#2926) (0db8ca8)