Skip to content

Conversation

@yyf0101
Copy link

@yyf0101 yyf0101 commented Jan 18, 2026

Why are these changes needed?

What This PR fixes a ValidationError when round-tripping a StaticStreamWorkbench containing an HttpTool created with headers=None via _to_config() / _from_config() .

Why Component.dump_component() serializes configs with exclude_none=True , which drops fields whose value is None . HttpToolConfig.headers was annotated as Optional[...] but had no default, making it required under Pydantic v2. As a result, the serialized config omitted headers , and loading failed with: headers: Field required [type=missing] .

Changes

  • Set defaults in HttpToolConfig :

    • headers: Optional[dict[str, Any]] = None
    • description: Optional[str] = None (consistency with “optional” semantics)
  • Add regression test to ensure workbench config round-trip works when headers is None .
    Tests

  • python -m pytest packages/autogen-ext/tests/tools/http/test_http_tool.py -k test_workbench_from_config_with_missing_headers_field

Related issue number

Closes #7172

Checks

@yyf0101
Copy link
Author

yyf0101 commented Jan 18, 2026

@microsoft-github-policy-service agree

@yyf0101
Copy link
Author

yyf0101 commented Jan 18, 2026

@ekzhu hi Eric ,could you please take a look at this PR (fix for #7172)? When an HttpTool is created with headers=None and put into a StaticStreamWorkbench , dump_component() uses exclude_none=True and drops headers from the serialized config, then _from_config() fails under Pydantic v2 with headers missing . This breaks workbench save/restore and config round-trips. The PR makes HttpToolConfig.headers default to None (so missing is OK) and adds a regression test for the round-trip. Thanks!

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.

Failed to call _from_config() when HttpTool in StaticStreamWorkbench

1 participant