0.17.0
Итерация 13 плана аудита: LLM-провайдеры — stream/retry/error-flow.
Changed
- OpenAI stream idle-timeout: переписан на
context.WithCancel+time.NewTimerвместо блокирующегоstream.Next()— теперь таймаут реально срабатывает при молчании сервера - Anthropic stream: добавлена обработка
input_json_deltaдля корректного накопления tool_use arguments errorFromOpenAI/errorFromAnthropicзаменены наwrapOpenAIError/wrapAnthropicError— возвращают(nil, *ProviderError)вместо фейковогоLLMResponse{FinishReason:"error"}ChatWithRetryобновлён для работы сProviderError— retry на основеShouldRetry, delay черезRetryAfterfactory.go:HasPrefix("localhost")заменён наurl.Parse+net.ParseIP.IsLoopback(); default provider →FindByName("openai")вместо&PROVIDERS[0]- DREAM/AutoCompact/Consolidator: динамический provider resolver через
SetResolveProvider()вместо захвата при init - Heartbeat LLM вызовы (
decide,shouldNotify) обёрнуты вChatWithRetry(standard mode)
Fixed
- Provider testCache: TTL 5 минут + cleanup при List/Delete; устаревшие записи автоматически удаляются
- Удаление default провайдера: возвращает 409 Conflict вместо тихой потери дефолта
Added
- Тип
ProviderErrorсStatusCode,Type,Code,Kind,ShouldRetry— структурная обработка ошибок провайдеров - Функции
IsProviderError,AsProviderErrorдля type-safe извлечения ошибки - 22 unit-теста в
internal/providers/iter13_test.go(retry logic, factory resolution, transient errors)