Skip to content

Conversation

@cagataycali
Copy link
Member

Tool Interoperability Improvements and Dependency Removal

This PR enhances multiple tool components to better work together by improving interoperability and removing unnecessary dependencies.

Key Changes

  • think.py: Now inherits parent agent's traces and tools to maintain context
  • load_tool.py: Removed unnecessary hot_reload_tools dependency check
  • use_llm.py: Now properly passes trace_attributes from parent agent
  • mem0_memory.py: Code formatting and readability improvements
  • tests: Updated to match new implementation patterns

Architecture Changes

Before

flowchart TD
    A[Parent Agent] -->|Create| B[think tool]
    B -->|Call| C[use_llm]
    C -->|Create new| D[Agent]
    D -->|No access to parent tools| E[Limited functionality]
    
    F[load_tool] -->|Check| G[hot_reload_tools flag]
    G -->|Must be true| H[Load tool]
Loading

After

flowchart TD
    A[Parent Agent] -->|Create with context| B[think tool]
    B -->|Inherits| C[Parent tools]
    B -->|Inherits| D[trace_attributes]
    B -->|Create directly| E[New Agent]
    E -->|Has parent context| F[Enhanced functionality]
    
    G[load_tool] -->|Only checks| H[STRANDS_DISABLE_LOAD_TOOL]
    H -->|If not true| I[Load tool]
Loading

Technical Benefits

graph LR
    subgraph "Improved Interoperability"
        A[Trace Attribute Passing]
        B[Tool Inheritance]
        C[Context Preservation]
    end
    
    subgraph "Dependency Reduction"
        D[Removed hot_reload_tools]
        E[Simplified Loading Logic]
    end
    
    subgraph "Code Quality"
        F[Better Formatting]
        G[Condensed Logic]
        H[Improved Testing]
    end
    
    A --> X[Enhanced User Experience]
    B --> X
    C --> X
    D --> Y[Reduced Complexity]
    E --> Y
    F --> Z[Better Maintainability]
    G --> Z
    H --> Z
Loading
  • By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Cagatay Cali and others added 3 commits May 18, 2025 20:40
This commit enhances multiple tool components to better work together:

- feat(think): inherit parent agent's traces and tools to maintain context
- fix(load_tool): remove unnecessary hot_reload_tools dependency check
- fix(use_llm): properly pass trace_attributes from parent agent to new instances
- style(mem0_memory): improve code formatting and readability
- test: update tests to match new implementation patterns
@cagataycali cagataycali requested a review from a team as a code owner May 19, 2025 04:17
@cagataycali cagataycali changed the title main fix: improve tool interoperability and remove dependencies May 19, 2025
@cagataycali cagataycali merged commit c4e5cc2 into strands-agents:main May 19, 2025
6 checks passed
Unshure pushed a commit to Unshure/tools that referenced this pull request May 21, 2025
…gents#14)

* chore: bump version from 0.1.0 to 0.1.1

* fix: improve tool interoperability and remove dependencies

This commit enhances multiple tool components to better work together:

- feat(think): inherit parent agent's traces and tools to maintain context
- fix(load_tool): remove unnecessary hot_reload_tools dependency check
- fix(use_llm): properly pass trace_attributes from parent agent to new instances
- style(mem0_memory): improve code formatting and readability
- test: update tests to match new implementation patterns

* fix(slack): add missing trace_attributes to Agent initialization

---------

Co-authored-by: Cagatay Cali <[email protected]>
awsarron pushed a commit that referenced this pull request May 21, 2025
* Add GitHub actions to run tests on Windows/MacOS & handle failures on Windows (#18)

Per #17 - Windows compatibility is currently unknown and all changes are currently only tested on Linux.  For [parity with the SDK](https://github.com/strands-agents/sdk-python/blob/912e1104fd52e3da99767a644b90b22b7eb606de/.github/workflows/test-lint-pr.yml#L59), start running tests on MacOS & Windows.

On MacOS all tests were already passing.  On Windows I:

 - added [`tzdata` as a dependency](https://pypi.org/project/tzdata/) to make the `current_time` work
 - lazy loaded `session: PromptSession` in `get_user_input` to avoid import errors as part of the tests 
 - updated [test_file_write.py](main...zastrowm:tools:windows_support#diff-a2998f18449d69766944a95d9058de448de22c38443a848876abaf22674df84a) to not use a permissions check, as the GitHub action runners seemingly run as super-admin and can write to the provided folders
 - disabled tests that were not trivial to fix - `test_shell`, `test_python_repl`
 - disabled some environment tests to better mock `get_user_input` - the two tests are failing on windows because of the lack of an interactive console.  I'd like to fix these two tests to properly mock `get_user_input` but I'm going to break that out into a separate PR to keep this one more focused.

To get linting to pass, I formatted the mem0 tool.

* fix: improve tool interoperability and remove dependencies (#14)

* chore: bump version from 0.1.0 to 0.1.1

* fix: improve tool interoperability and remove dependencies

This commit enhances multiple tool components to better work together:

- feat(think): inherit parent agent's traces and tools to maintain context
- fix(load_tool): remove unnecessary hot_reload_tools dependency check
- fix(use_llm): properly pass trace_attributes from parent agent to new instances
- style(mem0_memory): improve code formatting and readability
- test: update tests to match new implementation patterns

* fix(slack): add missing trace_attributes to Agent initialization

---------

Co-authored-by: Cagatay Cali <[email protected]>

* docs: update memory examples to use agent.tool.X syntax (#22)

* fix: Rewrite environment tests to properly mock dependencies (#19)

Mock os.environ for test_environment by using a fixture, eliminating the need to worry about the real os environment.

Properly mock the get_user_input function by using a fixture as well and having environment import user_input as a module rather than importing the function directly.  This is the more an important change as previously the user input wasn't being mocked in the tests - all tests were passing as the code paths didn't actually need "y".

Co-authored-by: Mackenzie Zastrow <[email protected]>

* Update version to v0.1.2 (#23)

---------

Co-authored-by: Mackenzie Zastrow <[email protected]>
Co-authored-by: ./c² <[email protected]>
Co-authored-by: Cagatay Cali <[email protected]>
Co-authored-by: Mackenzie Zastrow <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants