0.32.0

Added

  • P2-O1: ToolAuditHook — hook, пишущий в tool_audit_log при каждом вызове инструмента через CompositeHook. Маскирование чувствительных аргументов (password, api_key, token и др.) перед записью. Ограничения: args_summary ≤ 500, result_summary ≤ 500 символов.
  • P2-O2: Audit APIAuditHandler с методами ListAuditLog и ListToolAudit. Роуты: GET /admin/audit (системный журнал), GET /admin/audit/tools (tool-аудит), GET /agents/{id}/audit/tools (per-agent). Все под RequireGlobalAdmin. Пагинация и фильтрация.
  • P2-O3: Автоматический audit middlewareAuditMiddleware() перехватывает mutation-запросы (POST/PUT/PATCH/DELETE) к /api/v1/. Извлекает agentID из URL, userID из auth-контекста. Исключения: oauth, ws, health, setup, test-эндпоинты.
  • Store расширениеListAuditLogFiltered и ListToolAuditPaginated в SQLite/Postgres/DualStore с пагинацией и фильтрацией по resource_type, resource_id, agentID, tool.
  • WebUI: Settings > Audit — секция «Аудит» с вкладками «Системный журнал» и «Выполнение инструментов». Таблицы с пагинацией, фильтры.
  • WebUI: Agent > Audit — вкладка «Аудит» в агентском sidebar (admin-only). Per-agent tool-аудит + системные события.
  • 16 unit-тестов: ToolAuditHook (5), audit middleware (6), maskSensitiveArgs (9 кейсов), truncate.

Fixed

  • P2-O4: Stream-deltas спамslog.Infoslog.Debug в forwardSystemNotification, убрано поле content_len.
  • P2-O5: PII в session debug logs — из логов ask_user убраны options, content_len, messages_count, buttons.
  • P2-O6: Tool call args маскировкаmaskSensitiveArgs в runner.go маскирует password/token/api_key/key/secret и др. в slog.Info.