Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 31 additions & 11 deletions ATTRIBUTIONS-Python.md
Original file line number Diff line number Diff line change
Expand Up @@ -749,7 +749,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```

## anthropic (0.102.0)
## anthropic (0.120.2)

### Licenses
License: `MIT`
Expand Down Expand Up @@ -1074,7 +1074,7 @@ which is also made available under the MIT license. Copyright (c)
Isaac Muse
```

## bracex (2.6)
## bracex (3.0.1)

### Licenses
License: `MIT`
Expand All @@ -1083,7 +1083,7 @@ License: `MIT`
```
MIT License

Copyright (c) 2018 - 2025 Isaac Muse
Copyright (c) 2018 - 2026 Isaac Muse

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down Expand Up @@ -1490,14 +1490,34 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
```

## deepagents (0.6.12)
## deepagents (0.7.4)

### Licenses
License: `MIT`

- `LICENSE`:
```
Comment on lines +1493 to 1499

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Fix the Markdown structure in the new deepagents attribution block.

Change - \LICENSE`:at Line [1498] to a complete lead-in. Add a blank line after### Licensesat Line [1495] and before the opening fence at Line [1499]. Add atextlanguage tag to the fence.markdownlint-cli2` reports MD022, MD031, and MD040 here.

As per coding guidelines: Introduce every code block with a complete sentence; use syntax highlighting when supported.

🧰 Tools
🪛 markdownlint-cli2 (0.23.2)

[warning] 1495-1495: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below

(MD022, blanks-around-headings)


[warning] 1499-1499: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


[warning] 1499-1499: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@ATTRIBUTIONS-Python.md` around lines 1493 - 1499, Update the deepagents 0.7.4
attribution block so the Licenses heading is followed by a blank line, the
LICENSE list item is a complete introductory sentence, and the fenced block is
separated by a blank line and tagged as text. Preserve the existing license
content while satisfying markdownlint MD022, MD031, and MD040.

Sources: Coding guidelines, Linters/SAST tools

(No license file found in locked artifact for deepagents; see package metadata or PyPI.)
MIT License

Copyright (c) LangChain, Inc.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```

## distlib (0.4.0)
Expand Down Expand Up @@ -3759,7 +3779,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```

## langchain-anthropic (1.4.8)
## langchain-anthropic (1.5.3)

### Licenses
License: `MIT`
Expand Down Expand Up @@ -3789,7 +3809,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```

## langchain-core (1.4.9)
## langchain-core (1.5.3)

### Licenses
License: `MIT`
Expand All @@ -3799,7 +3819,7 @@ License: `MIT`
(No license file found in locked artifact for langchain-core; see package metadata or PyPI.)
```

## langchain-google-genai (4.2.7)
## langchain-google-genai (4.3.2)

### Licenses
License: `MIT`
Expand Down Expand Up @@ -4009,7 +4029,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```

## langsmith (0.9.4)
## langsmith (0.10.15)

### Licenses
License: `MIT`
Expand Down Expand Up @@ -7587,7 +7607,7 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
```

## wcmatch (10.1)
## wcmatch (11.0)

### Licenses
License: `MIT`
Expand All @@ -7596,7 +7616,7 @@ License: `MIT`
```
MIT License

Copyright (c) 2018 - 2025 Isaac Muse
Copyright (c) 2018 - 2026 Isaac Muse

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ langgraph = [

deepagents = [
"nemo-relay[langgraph]",
"deepagents>=0.6.12,<0.7.0",
"deepagents>=0.7.4,<0.8.0",
"langchain-anthropic>=1.4.8,<2.0.0",
]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,27 @@ def test_before_agent_emits_configuration_mark(
assert _mark_data(marks[0])["backend"] == "StateBackend"


def test_named_middleware_replaces_deepagents_default():
"""Deep Agents 0.7 replaces a built-in middleware slot by its public name."""
from deepagents import create_deep_agent
from langchain.agents.middleware import AgentMiddleware
from langchain_core.messages import AIMessage

class _ReplacementSummarizationMiddleware(AgentMiddleware):
@property
def name(self) -> str:
return "SummarizationMiddleware"

agent = create_deep_agent(
model=_mock_deepagents_chat_model([AIMessage(content="unused")]),
middleware=[_ReplacementSummarizationMiddleware()],
)

# The built-in summarization middleware owns this state channel. Its
# absence proves the named replacement was used instead of appended.
assert "_summarization_event" not in agent.channels
Comment on lines +218 to +230

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Assert that the replacement middleware is installed.

The assertion at Line [230] proves only that _summarization_event is absent. It also passes if the implementation removes the built-in middleware and ignores _ReplacementSummarizationMiddleware. Add a unique state key or observable hook to the replacement, then assert that marker is present or invoked together with the absence check.

As per path instructions: Tests should cover the behavior promised by the changed API surface and prefer assertions on middleware ordering over shallow smoke tests.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@python/tests/integrations/deepagents_tests/test_deepagents_integration.py`
around lines 218 - 230, Strengthen the test around create_deep_agent and
_ReplacementSummarizationMiddleware by adding a unique state channel or
observable hook to the replacement, then assert that it is installed or invoked
while retaining the _summarization_event absence check. Prefer verifying the
middleware ordering or resulting middleware state so the test distinguishes
replacement from simply removing the built-in middleware.

Source: Path instructions



@pytest.mark.parametrize("use_async", [False, True])
def test_model_call_routes_through_langchain_execution_middleware(
use_async: bool,
Expand Down
53 changes: 27 additions & 26 deletions uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading