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