The LangChainChatProvider class defined name and model_id as read-only
properties without setters, causing AttributeError when PlanService
attempted to set these properties after provider instantiation.
Root Cause:
- LangChainChatProvider.name and .model_id were @property without @setter
- PlanService._resolve_ai_provider_for_actor() attempts to mutate these
properties at lines 411 and 413
- This caused: AttributeError: property 'name' of 'LangChainChatProvider'
object has no setter
Solution:
Added property setters for both name and model_id:
@name.setter
def name(self, value: str) -> None:
self._name = value
@model_id.setter
def model_id(self, value: str) -> None:
self._model_id = value
This allows PlanService to correctly resolve provider names and model IDs
without raising AttributeError.
Impact:
- Fixes the agents build command crash when using agents tell
- No regression: existing functionality unchanged
- Properties remain type-safe (str -> str)
ISSUES CLOSED: #1553