Skip to content

feat(tools): add replace method to ToolRegistry#1182

Merged
zastrowm merged 3 commits intostrands-agents:mainfrom
Ratish1:feat-registry
Dec 17, 2025
Merged

feat(tools): add replace method to ToolRegistry#1182
zastrowm merged 3 commits intostrands-agents:mainfrom
Ratish1:feat-registry

Conversation

@Ratish1
Copy link
Contributor

@Ratish1 Ratish1 commented Nov 14, 2025

Description

This pull request introduces a replace() method to the ToolRegistry, enabling the dynamic replacement of tool implementations at runtime. This is a feature for supporting zero-downtime updates, fixing tool bugs mid-session, or rolling out performance optimizations without breaking agent execution.

This PR:

  • Added a new replace(tool_name, new_tool) method to src/strands/tools/registry.py.
  • The method includes validation to prevent replacing a non-existent tool or using a new tool with a mismatched name.
  • Updated both the main registry and the dynamic_tools dictionaries to ensure the registry's internal state remains consistent.
  • The method's docstring clarifies that the replacement takes effect on the next agent invocation.
  • Added unit tests in test_registry.py to validate the success path, error conditions, and state transitions for dynamic tools.

Related Issues

Closes #1131

Documentation PR

N/A

Type of Change

New feature

Testing

How have you tested the change? Verify that the changes do not break functionality or introduce warnings in consuming repositories: agents-docs, agents-tools, agents-cli

  • I ran hatch run prepare
  • I ran formatters,linters and precommit checks
  • I ran unit tests

Checklist

  • I have read the CONTRIBUTING document
  • I have added any necessary tests that prove my fix is effective or my feature works
  • I have updated the documentation accordingly
  • I have added an appropriate example to the documentation to outline the feature, or no new docs are needed
  • My changes generate no new warnings
  • Any dependent changes have been merged and published

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@Ratish1
Copy link
Contributor Author

Ratish1 commented Dec 9, 2025

Hello, I would like to follow up on this. Thanks

@github-actions github-actions bot added size/m and removed size/m labels Dec 10, 2025
@Ratish1 Ratish1 requested a review from zastrowm December 10, 2025 16:14
zastrowm
zastrowm previously approved these changes Dec 10, 2025
@codecov
Copy link

codecov bot commented Dec 10, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

dbschmigelski
dbschmigelski previously approved these changes Dec 17, 2025
@Ratish1 Ratish1 dismissed stale reviews from dbschmigelski and zastrowm via dec61a1 December 17, 2025 19:53
@Ratish1 Ratish1 requested a review from zastrowm December 17, 2025 19:53
@github-actions github-actions bot added size/m and removed size/m labels Dec 17, 2025
@zastrowm zastrowm enabled auto-merge (squash) December 17, 2025 19:55
@zastrowm zastrowm merged commit bb46ab7 into strands-agents:main Dec 17, 2025
13 of 14 checks passed
@zastrowm
Copy link
Member

Thanks @Ratish1!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEATURE] Tool Replacement

4 participants