Releases: strands-agents/sdk-python
Releases · strands-agents/sdk-python
v1.6.0
What's Changed
- fix: fix non-serializable parameter of agent from toolUse block by @JackYPCOnline in #568
- Add .DS_Store to .gitignore by @vawsgit in #681
- feat(a2a): support A2A FileParts and DataParts by @jer96 in #596
- ci: update pre-commit requirement from <4.2.0,>=3.2.0 to >=3.2.0,<4.4.0 by @dependabot[bot] in #706
- ci: update ruff requirement from <0.5.0,>=0.4.4 to >=0.4.4,<0.13.0 by @dependabot[bot] in #704
- ci: update pytest-asyncio requirement from <0.27.0,>=0.26.0 to >=0.26.0,<1.2.0 by @dependabot[bot] in #708
- fix: add system_prompt to structured_output_span before adding input_messages by @chengweitsai in #709
- feat(multiagent): Add call implementation to MultiAgentBase by @mkmeral in #645
- chore: Update pydantic minimum version by @mehtarac in #723
- tool executors by @pgrayy in #658
- feat: Add support for agent invoke with no input, or Message input by @Unshure in #653
- ci: bump actions/checkout from 4 to 5 by @dependabot[bot] in #711
- ci: bump actions/download-artifact from 4 to 5 by @dependabot[bot] in #712
- ci: update pytest-cov requirement from <5.0.0,>=4.1.0 to >=4.1.0,<7.0.0 by @dependabot[bot] in #705
- fix: prevent path traversal for message_id in file_session_manager by @mehtarac in #728
- fix: Add AgentInput TypeAlias by @Unshure in #738
- fix: Move AgentInput to types submodule by @Unshure in #746
New Contributors
- @vawsgit made their first contribution in #681
- @dependabot[bot] made their first contribution in #706
- @chengweitsai made their first contribution in #709
Full Changelog: v1.5.0...v1.6.0
v1.5.0
What's Changed
- feature(graph): Allow cyclic graphs by @mkmeral in #497
- chore: request to include code snippet section by @poshinchen in #654
- feat: Add configuration option to MCP Client for server init timeout by @fhwilton55 in #657
- fix: Properly handle prompt=None & avoid agent hanging by @zastrowm in #643
- feat: add structured_output_span by @poshinchen in #655
- litellm - set 1.73.1 as minimum version by @pgrayy in #668
- feat: expose tool_use and agent through ToolContext to decorated tools by @dbschmigelski in #557
- session manager - prevent file path injection by @pgrayy in #680
- fix: only set signature in message if signature was provided by the model by @clareliguori in #682
- fix: Add openai dependency to sagemaker dependency group by @zastrowm in #678
- Have [all] group reference the other optional dependency groups by name by @zastrowm in #674
- fix: append blank text content if assistant content is empty by @poshinchen in #677
- feat: add cached token metrics support for Amazon Bedrock by @oaltagar-aws in #531
New Contributors
- @fhwilton55 made their first contribution in #657
- @oaltagar-aws made their first contribution in #531
Full Changelog: v1.4.0...v1.5.0
v1.4.0
What's Changed
- fix(telemetry): added mcp tracing context propagation by @poshinchen in #569
- Change max_tokens type to int to match Anthropic API by @vinc3m1 in #588
- feat: Add additional intructions for contributors to find issues that are ready to be worked on by @mehtarac in #595
- feat(a2a): configurable request handler by @jer96 in #601
- chore(a2a): update host per AppSec recommendation by @jer96 in #619
- fix(event_loop): ensure tool_use content blocks are valid after max_tokens to prevent unrecoverable state by @dbschmigelski in #607
- fix(structured_output): do not modify conversation_history when prompt is passed by @dbschmigelski in #628
New Contributors
Full Changelog: v1.3.0...v1.4.0
v1.3.0
What's Changed
- fix(deps): pin a2a-sdk>=0.2.16 to resolve #572 by @minorun365 in #581
- chore: pin a2a to a minor version while it is still in beta by @dbschmigelski in #586
- fix: sessions code fence, a2a tests & lint by @theagenticguy in #591
- fix(event_loop): raise dedicated exception when encountering max toke… by @dbschmigelski in #576
New Contributors
- @minorun365 made their first contribution in #581
Full Changelog: v1.2.0...v1.3.0
v1.2.0
What's Changed
- Support for Amazon SageMaker AI endpoints as Model Provider by @dgallitelli in #176
- fix: Remove leftover print statement from sagemaker model provider by @mehtarac in #553
- [Feat] Update structured output error message by @Unshure in #563
- feat(mcp): retain structured content in the AgentTool response by @dbschmigelski in #528
- feat(mcp): Add list_prompts, get_prompt methods by @Ketansuhaas in #160
New Contributors
- @dgallitelli made their first contribution in #176
- @mehtarac made their first contribution in #553
- @Ketansuhaas made their first contribution in #160
Full Changelog: v1.1.0...v1.2.0
v1.1.0
What's Changed
- Update to use dedicated github logo by @zastrowm in #505
- deps(a2a): address interface changes and bump min version by @jer96 in #515
- ci: expose STRANDS_TEST_API_KEYS_SECRET_NAME to integration tests by @dbschmigelski in #513
- Don't re-run workflows on un/approvals by @zastrowm in #516
- Doc fixes: suppressing some typos in various texts by @didier-durand in #487
- docs: add hot reloading documentation for load_tools_from_directory by @cagataycali in #517
- ci: enable integ tests for anthropic, cohere, mistral, openai, writer by @dbschmigelski in #510
- Automatically flatten nested tool collections by @zastrowm in #508
- feat(a2a): support mounts for containerized deployments by @jer96 in #524
- fix: include agent trace into tool for agent as tools by @poshinchen in #526
Full Changelog: v1.0.1...v1.1.0
v1.0.1
What's Changed
- Switch readme to use light logo for better display in github dark mode by @zastrowm in #475
- build(pyproject): update development status classifier by @awsarron in #480
- fix: enable parallel execution in graph workflow by @ahmetatalay in #485
- docs: Update README.md with Writer by @samjulien in #474
- fix(agent): prevent JSON serialization errors with non-serializable direct tool parameters by @cagataycali in #498
- fix(telemetry): group traces when using agent as tool in an agent by @poshinchen in #493
New Contributors
- @ahmetatalay made their first contribution in #485
- @samjulien made their first contribution in #474
Full Changelog: v1.0.0...v1.0.1
v1.0.0
What's Changed
- refactor(a2a): configurable host and port and remove excessive logging by @jer96 in #423
- models - bedrock - remove signaling by @pgrayy in #429
- feat(multiagent): Graph - support multi-modal inputs by @awsarron in #430
- deps(a2a): upper bound a2a sdk dep by @jer96 in #432
- models - ollama - init async client per request by @pgrayy in #433
- models - mistral - init client on every request by @pgrayy in #434
- models - ollama - clean up in tests by @pgrayy in #435
- feat!: add pagination to mcp_client list_tools_sync by @dbschmigelski in #436
- Session persistence by @Unshure in #302
- chore: update span names by @poshinchen in #440
- models - openai - null usage by @pgrayy in #442
- feat: redact content from a message in a session by @Unshure in #446
- refactor(a2a): upper bound deps + remove from multiagent submodule by @jer96 in #447
- Expand additional $refs for structured_output by @zastrowm in #439
- fix: session manager tracks all agent last message by @Unshure in #455
- feat: added swarm and graph spans by @poshinchen in #451
- docstrings - fix formatting by @pgrayy in #456
- refactor: add kwargs to multiagent interfaces by @mkmeral in #454
- fix: Fix session manager agent init by @Unshure in #458
- feat: Store conversation manager in session by @Unshure in #441
- feat(multiagent): introduce Swarm multi-agent orchestrator by @awsarron in #416
- multiagent - use invoke_async instead of stream_async by @pgrayy in #463
- feat: add Swarm tracing by @poshinchen in #461
- feat(telemetry): Expose OpenTelemetry exporter init arguments in API by @mrtj in #365
- docs: correct naming in registry.py by @akshseh in #425
- fix: Plumb system_prompt through to structured_output by @zastrowm in #466
- Update default model to be Claude 4 Sonnet by @zastrowm in #467
- feat: Add kwargs to session interfaces for future extensibility by @Unshure in #464
- fix: Fix various docstring issues by @Unshure in #469
- fix(multiagent): raise ValueError for unsupported Graph and Swarm agent features by @awsarron in #472
- refactor(multiagent): Swarm - Remove unnecessary complete_swarm_task tool by @awsarron in #473
- chore: remove preview from README.md by @yonib05 in #459
New Contributors
Full Changelog: v0.3.0...v1.0.0
v0.3.0
Breaking Changes
-
Model Providers:
- OpenAI and LiteLLM model providers no longer accept base64 encoded images. These providers will now handle base64 encoding of image bytes automatically. See issue #252.
- Model providers now implement asynchronous functions. Custom model providers must be updated accordingly. See PR#306.
- The API interface for model providers has been simplified to require only a single stream method implementation. See PR#400.
- Model provider API interfaces have been relocated to the strands.models subpackage for improved organization. See PR#409.
-
Other breaking changes:
- All classes or protocols requiring subclassing or implementation now include an additional kwargs argument for forward compatibility. See PR#413.
- The max_parallel_tools parameter has been removed from the Agent class. Tools are now automatically invoked on thread-pools. See PR#391.
- The load_tools_from_directory parameter of the Agent class now defaults to False meaning. Tools are no longer automatically loaded from the tools directory. To restore the old behavior, explicitly set this parameter to True . See PR#419.
- The event_loop_cycle function is no longer available as a top-level import from strands, reflecting its internal nature. Direct event loop invocation is not recommended. See PR#415.
- Automatic removal of dangling tool messages during Agent lifecycle has been discontinued to support future features. See PR#418.
- AgentTool now implements a stream API instead of invoke and requires asynchronous implementation. See PR#345.
What's Changed
- feat: Implement the core system of typed hooks & callbacks by @zastrowm in #304
- iterative tool handler process by @pgrayy in #340
- remove thread pool wrapper by @pgrayy in #339
- chore: updated scope name, enable setting up meter by @poshinchen in #331
- async model stream interface by @pgrayy in #306
- chore: allow custom agent name by @poshinchen in #347
- Extract hook based tests to a separate file by @zastrowm in #349
- tools - parallel execution - sleep by @pgrayy in #355
- Refactor event loop to use Agent object rather than individual parameters by @zastrowm in #359
- models - openai - async client by @pgrayy in #353
- models - openai - do not accept b64 images by @pgrayy in #368
- iterative tools by @pgrayy in #345
- a2a streaming by @jer96 in #366
- docs(multiagent): Update A2AServer docstrings by @signoredems in #377
- refactor(a2a): move a2a test module by @jer96 in #379
- models - mistral - async by @pgrayy in #375
- models - ollama - async by @pgrayy in #373
- models - anthropic - async by @pgrayy in #371
- feat: Add hooks for before/after tool calls + allow hooks to update values by @zastrowm in #352
- agent tool - remove invoke by @pgrayy in #369
- fix: handle multiple tool calls in Mistral streaming responses by @siddhantwaghjale in #384
- fix: add-threading-instrumentation by @poshinchen in #394
- Add cohere client by @billytrend-cohere in #236
- deps(a2a): upgrade a2a with db support by @jer96 in #395
- Writer model provider by @yanomaly in #228
- Update integ tests to isolate provider-based tests by @zastrowm in #396
- Remove agent.tool_config and update usages to use tool_specs by @zastrowm in #388
- multi modal input by @pgrayy in #367
- Fix: Update mistral tests to avoid shared agents by @zastrowm in #398
- async tools support by @pgrayy in #391
- Add basis for conformance-based tests by @zastrowm in #403
- fix: Allow tool names that start with numbers by @zastrowm in #407
- Add hooks for when new messages are appended to the agent's messages by @zastrowm in #385
- Add Model Invocation Hooks by @zastrowm in #387
- structured output - multi-modal input by @pgrayy in #405
- feat(async): mcp async call tool by @jer96 in #406
- [REFACTOR] Unify Model Interface Around Single Entry Point (model.stream) by @mkmeral in #400
- Rename StartRequestEvent & EndRequestEvent events by @zastrowm in #408
- models - bedrock - threading by @pgrayy in #411
- Mark hooks as non-experimental by @zastrowm in #410
- models - litellm - async by @pgrayy in #414
- models - move abstract class by @pgrayy in #409
- feat(multi-agent): introduce Graph multi-agent orchestrator by @awsarron in #336
- refactor: Remove event_loop_cycle from top level import by @Unshure in #415
- refactor: Remove message processor by @Unshure in #417
- refactor: Update interfaces to include kwargs to enable backwards compatibility by @mkmeral in #413
- refactor: Remove _remove_dangling_messages from SlidingWindowConversationManager by @Unshure in #418
- chore!: set Agent property load_tools_from_directory to default to False by @dbschmigelski in #419
New Contributors
- @signoredems made their first contribution in #377
- @billytrend-cohere made their first contribution in #236
- @yanomaly made their first contribution in #228
- @mkmeral made their first contribution in #400
Full Changelog: v0.2.1...v0.3.0