mirror of
https://github.com/hanzoai/python-sdk.git
synced 2026-10-27 04:20:09 +00:00
DynamicToolRegistry stored getattr(tool_class, 'description'), which for a class-level @property returns the property DESCRIPTOR (not a str). 'tool list' then did len(config.description) → 'object of type property has no len()', breaking the entire tool-catalog command. Add _extract_tool_description (mirrors _extract_tool_name): resolve a @property via a cheap instance, else coerce to str, always returns str. Plus a defensive isinstance guard in the list display path. Regression test covers property/unevaluable-property/plain/ absent + asserts every registered entry's description is len()-safe. 2 passed.