Back

langchain #35033

feat: support state updates from `wrap_model_call` with command(s)

by sydney-runkle · Feb 06, 2026 at 19:27 UTC · scan-2b341c69bede409e

High Risk (65%)

Get this automatically on every PR

Install the Axiomo GitHub App to get Signals as check runs and PR comments on every pull request.

Install App

Risk Assessment

Risk level: High (65%)

Risk Drivers

  • large_diff: Large change: 1391 lines modified
  • multiple_concerns: Spans 6 directories
  • api_surface_change: API surface changed in 3 file(s)

Intent

3/4 criteria met

Support state updates from wrap_model_call with Command for middleware.

Acceptance Criteria

  • โœ“
    Add ExtendedModelResponse dataclass allowing wrap_model_call to return Command.

    libs/langchain_v1/langchain/agents/middleware/types.py adds ExtendedModelResponse dataclass.

  • โœ“
    Ensure extended responses can compose naturally across middleware layers.

    libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_wrap_model_call_state_update.py has tests for composition.

  • โœ“
    Maintain backwards compatibility with existing middleware.

    PR description notes backwards compatibility and the diff does not alter existing middleware.

  • ?
    Inner commands flow into LangGraph reducers correctly.

    Details are mentioned in the PR, but evidence in diff is limited.

Confidence: 90.0% Source: pr description AI: openai

Contributors

sydney-runkle PR Author 16 commits + Trusted
Account Age: 2362 days
Prior PRs: 221
Merged: 167

Trusted contributor with 167 merged PRs. has 518 followers. unfamiliar with 2 files.

Evidence

Evidence Completeness: 90.0%
ci_passing Passing
security_scan_clean Passing
tests_passing Passing
build_successful Passing
lint_passing Passing
Missing: coverage_maintained

Supply Chain

Low Risk
Modifies dependencies
Modifies lockfile
Modifies CI config
Modifies build scripts

Focus Files

Focus on 1 critical file(s)

libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_wrap_model_call_state_update.py +917

917 lines changed; New file; Source code

critical
libs/langchain_v1/langchain/agents/factory.py +354

354 lines changed; Source code

high
libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_composition.py +71

71 lines changed; Source code

medium
libs/langchain_v1/langchain/agents/middleware/types.py +42

Source code

medium
libs/langchain_v1/langchain/agents/middleware/__init__.py +4

Source code

medium
libs/langchain/tests/unit_tests/chat_models/test_base.py +1

Source code

medium
libs/langchain_v1/tests/unit_tests/chat_models/test_chat_models.py +1

Source code

medium
libs/langchain_v1/pyproject.toml +1

Configuration

low

Triage

165

minutes to review

extensive

effort level

none

staleness risk

Schedule dedicated review time; consider pair review

Recommendation

APPROVE 71.0% readiness

Good evidence, acceptable risk, ready for merge

Next Steps

Concern

Consider breaking into smaller PRs

Question

Why is coverage_maintained missing? Consider adding this check.

Concern libs/langchain_v1/tests/unit_tests/agents/middleware/core/test_wrap_model_call_state_update.py

Critical file: 917 lines changed; New file; Source code