Forge
csharpdeeb25a2
1using CascadeIDE.Cockpit.DataBus;
2using CascadeIDE.Contracts;
3using HybridCodebaseIndex.Core;
4
5namespace CascadeIDE.Cockpit.ComputingUnits.HybridIndex;
6
7/// <summary>
8/// CCU: свёртка <see cref="IndexStatus"/> ядра HCI в типизированное событие <see cref="HybridIndexStateChanged"/> для IDE DataBus
9/// (ADR 0097, 0106). Единая точка маппинга для watcher, reindex/MCP и будущих потребителей (Semantic Map).
10/// <para>
11/// Не смешивать с JSON ответами <c>ide_execute</c> и
12/// <see cref="CascadeIDE.Features.HybridIndex.McpParity.CodebaseIndexIdeJsonResponses.SerializeStatus(HybridCodebaseIndex.Core.IndexStatus)"/>:
13/// там <see cref="IndexStatus"/> целиком (включая настройки, reindex state); здесь только поля, нужные проекции MFD/UI.
14/// </para>
15/// </summary>
16[ComputingUnit]
17public sealed class HybridIndexStateChangedUnit : ICockpitComputeUnit
18{
19 /// <summary>
20 /// Строит событие шины из снимка ядра; <paramref name="workspaceRootNormalizedOrFallback"/> подставляется, если ядро не нормализовало корень.
21 /// </summary>
22 public static HybridIndexStateChanged FromCoreStatus(
23 IndexStatus status,
24 string workspaceRootNormalizedOrFallback,
25 string? solutionPathTrimmedOrNull) =>
26 new(
27 WorkspaceRoot: status.WorkspaceRootNormalized ?? workspaceRootNormalizedOrFallback,
28 SolutionPath: solutionPathTrimmedOrNull,
29 DatabasePath: status.DatabasePath,
30 DocumentCount: status.DocumentCount,
31 IndexedAtIso: status.IndexedAtIso,
32 LastError: status.LastReindexError,
33 LastErrorAtIso: status.LastReindexErrorAtIso);
34}
35
View only · write via MCP/CIDE