SIGN IN SIGN UP
crewAIInc / crewAI UNCLAIMED

Framework for orchestrating role-playing, autonomous AI agents. By fostering collaborative intelligence, CrewAI empowers agents to work together seamlessly, tackling complex tasks.

0 0 39 Python

refactor: replace hardcoded denylist with dynamic BaseTool field exclusion in spec gen (#5347)

The spec generator previously used a hardcoded list of field names to
exclude from init_params_schema. Any new field or computed_field added
to BaseTool (like tool_type from 86ce54f) would silently leak into
tool.specs.json unless someone remembered to update that list.

Now _extract_init_params() dynamically computes BaseTool's fields at
import time via model_fields + model_computed_fields, so any future
additions to BaseTool are automatically excluded.

Fields from intermediate base classes (RagTool, BraveSearchToolBase,
SerpApiBaseTool) are correctly preserved since they're not on BaseTool.

TDD:
- RED: 3 new tests confirming BaseTool field leak, intermediate base
  preservation, and future-proofing — all failed before the fix
- GREEN: Dynamic allowlist applied — all 10 tests pass
- Regenerated tool.specs.json (tool_type removed from all tools)
I
iris-clawd committed
1ae237a287304cdc72605db56d0a24fdc5e8c110
Parent: 0e8ed75
Committed by GitHub <noreply@github.com> on 4/8/2026, 3:49:16 PM