fix(provider): make LangChainChatProvider name and model_id mutable properties

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
This commit is contained in:
2026-04-02 21:12:08 +00:00
parent d318d92d1f
commit 6a6ce518bf
@@ -79,10 +79,18 @@ class LangChainChatProvider(AIProviderInterface):
def name(self) -> str: # pragma: no cover - simple accessor
return self._name
@name.setter
def name(self, value: str) -> None:
self._name = value
@property
def model_id(self) -> str: # pragma: no cover - simple accessor
return self._model_id
@model_id.setter
def model_id(self, value: str) -> None:
self._model_id = value
def generate_changes(
self,
project: Project,