0.134.15

Changed

Реализованы 4 из 8 задач Группы 2 (большие рефакторинги) из аудита docs/audit/web-2026-06-06.md. Остальные 4 (W-015 chat, W-016 profile, W-019 memory, W-020 permissions) выполнены частично или отложены — требуют больших поэтапных декомпозиций, см. отчёт в аудите.

  • W-014: lib/api/client.ts (2113 строк) → 3 файла + re-export — монолитный client.ts разделён на:
  • client.ts (195 строк) — ядро: request/rawRequest/tryRefresh/onAuthRefresh/initAuth/getAccessToken/setAccessToken/loginRequest, без интерфейсов.
  • types.ts (1190 строк) — все 50+ интерфейсов API (User, Agent, ChatMessage, Memory*, KG*, etc.).
  • endpoints.ts (841 строка) — объект api со всеми эндпоинтами, импортирует request/types из client.ts.
  • index.ts — re-export api и * из типов для удобства.
  • client.ts остаётся точкой входа (re-export api и *), все 50+ импортов from '$lib/api/client' работают без изменений.
  • W-025: ChatStore владеет messages как $state<ChatMessage[]>([]) — добавлены мутаторы setMessages/appendMessage/prependMessages/clearMessages. Из интерфейса ChatStoreCallbacks удалены getCurrentMessages/setCurrentMessages/getAgentId/getStickToBottom/setStickToBottom/resyncMessages (теперь это часть store). Остались только DOM-зависимые callbacks: getAgentDisplayName, setupResizeObserver, scrollToBottom. В routes/chat/+page.svelte добавлен $effect для двусторонней синхронизации chatStore.messagesmessages (для scroll-логики).
  • W-018: routes/settings/providers/+page.svelte (504 → 374 строк) + lib/features/providers/ProviderFormModal.svelte (150 строк) — модалка создания/редактирования извлечена в отдельный компонент, страница потеряла ~130 строк inline-разметки. Создана директория lib/features/providers/ для будущих подкомпонентов.
  • W-017 (частично): lib/features/system/SystemActions.svelte (внешний компонент) — извлечены кнопки restart/shutdown, polling cleanup и их модалки подтверждения. routes/settings/system/+page.svelte остаётся ~600 строк, секции Info/Updates/Diagnostics не вынесены.