| | | 1 | | namespace UIBlazor.Services; |
| | | 2 | | |
| | 0 | 3 | | public class RuleService(IVsBridge vsBridge) : IRuleService |
| | | 4 | | { |
| | | 5 | | private string? _rulesCache; |
| | 0 | 6 | | private DateTime _lastCacheUpdate = DateTime.MinValue; |
| | | 7 | | private string? _agentsCache; |
| | 0 | 8 | | private DateTime _lastAgentsCacheUpdate = DateTime.MinValue; |
| | | 9 | | |
| | | 10 | | /// <summary> |
| | | 11 | | /// Получить содержимое rules.md (кешируется) |
| | | 12 | | /// </summary> |
| | | 13 | | public async Task<string> GetRulesAsync(CancellationToken cancellationToken) |
| | | 14 | | { |
| | | 15 | | // Проверяем кеш (обновляем раз в 2 минуты) |
| | 0 | 16 | | if (_rulesCache != null && (DateTime.UtcNow - _lastCacheUpdate).TotalMinutes < 2) |
| | | 17 | | { |
| | 0 | 18 | | return _rulesCache; |
| | | 19 | | } |
| | | 20 | | |
| | 0 | 21 | | var result = await vsBridge.ExecuteToolAsync(BasicEnum.GetRules, cancellationToken: cancellationToken); |
| | 0 | 22 | | if (!result.Success) |
| | | 23 | | { |
| | 0 | 24 | | return _rulesCache ?? string.Empty; |
| | | 25 | | } |
| | | 26 | | |
| | 0 | 27 | | _rulesCache = result.Result; |
| | 0 | 28 | | _lastCacheUpdate = DateTime.UtcNow; |
| | 0 | 29 | | return _rulesCache; |
| | 0 | 30 | | } |
| | | 31 | | |
| | | 32 | | /// <summary> |
| | | 33 | | /// Получить содержимое agents.md (кешируется) |
| | | 34 | | /// </summary> |
| | | 35 | | public async Task<string> GetAgentsMdAsync(CancellationToken cancellationToken) |
| | | 36 | | { |
| | | 37 | | // Проверяем кеш (обновляем раз в 2 минуты) |
| | 0 | 38 | | if (_agentsCache != null && (DateTime.UtcNow - _lastAgentsCacheUpdate).TotalMinutes < 2) |
| | | 39 | | { |
| | 0 | 40 | | return _agentsCache; |
| | | 41 | | } |
| | | 42 | | |
| | 0 | 43 | | var result = await vsBridge.ExecuteToolAsync(BasicEnum.GetAgents, cancellationToken: cancellationToken); |
| | 0 | 44 | | if (!result.Success) |
| | | 45 | | { |
| | 0 | 46 | | return _agentsCache ?? string.Empty; |
| | | 47 | | } |
| | | 48 | | |
| | 0 | 49 | | _agentsCache = result.Result; |
| | 0 | 50 | | _lastAgentsCacheUpdate = DateTime.UtcNow; |
| | 0 | 51 | | return _agentsCache; |
| | 0 | 52 | | } |
| | | 53 | | } |