Skip to the content.

Task 76 — ResilientLLMClient per-call provider/model

Phase: 5 Initiative: 45 Status: done Owner: — Slug: resilient-llm-per-call-provider

Goal

ResilientLLMClient.ProviderName и ModelName (LLM/ResilientLLMClient.cs:43-45) — plain public string instance properties с private set. Они записываются из CompleteMainAsync (:151-152), InvokeRoleAsync (:211-212,239-240), и streaming paths (:290-291). Concurrent запроси race на эти записи — last-writer-wins, и reader видит значение от другого запроса. Это портит tracing/metrics/audit (неправильный provider/model в логах и OTel tags).

Acceptance criteria

Sub-tasks

Scope / Likely files

src/agent/LLM/ResilientLLMClient.cs, src/agent/LLM/ILLMClient.cs, src/agent/LLM/LlmResponse.cs (or Models.cs), src/agent/Agent/AgentCore.cs, src/agent/Observability/OtelMetrics.cs

Dependencies

Risks / Rollback

Interface change (LlmResponse получает новые поля) — backward-compatible если поля optional/default. Rollback: вернуть instance properties (но race останется).

Implementation notes

Validation

Commit