Forge

docs/ / architecture/current-architecture-v1.md · branch develop

Текущая архитектура CascadeIDE (v1)

Этот документ — единая точка входа про то, как устроено сейчас (а не “почему так”).
Контекст решений и альтернативы — в ADR: docs/adr/README.md.
Политика и “куда смотреть” — docs/architecture-policy.md.


1. Модель системы (на одном экране)

CascadeIDE — desktop IDE (Avalonia + MVVM), где семантика “кабины” (PFD / Forward / MFD) задаёт структуру внимания, а MCP делает IDE управляемой агентом.

  • PFD: первичная зона внимания, короткая ситуационная сводка и “командирские” индикаторы.
  • Forward: рабочая зона (редактор/доки), основной поток действий.
  • MFD: вторичный контур — длинные потоки (терминал/сборка/Git/…): страницы стека.

Эталон layout главного окна и имена регионов для MCP:


2. Слои и границы ответственности

Норматив по слоям и “что где живёт”:

Практическая ментальная модель (сверху вниз):

  • UI (Views): Views/*.axaml и связанные *.axaml.cs. Держим простым: layout, биндинги, именование регионов.
  • VM (ViewModels): композиция состояния, команд и связей между зонами внимания.
  • Application / orchestration: use-case координация внутри фичи (как правило Features/<Feature>/Application/*).
  • DAL: вход/выход во внешний мир (процессы, git, LSP, MCP-клиенты, файловая система).
  • Transport / bus / batching: доставка событий/строк в UI (bounded, backpressure).
  • CCU: свёртка событий/сырья в DTO, пригодный для UI и наблюдаемости.

3. Архитектура UI “Flight” (факт, не концепт)

Главное окно — три колонки PFD | Forward | MFD. Длинные потоки (Terminal/Build/Git/…) живут как страницы MFD, а не как нижняя панель на всю ширину.

Подробно:

Ключевые элементы MFD (по текущим именам):

  • MfdShellView + MfdShellPageStack
  • регион “хост стека” (для снимков/темы/контрактов): MfdContourStackHost

4. MCP: IDE как сервер инструментов

Контракт и протокол:

Что важно помнить:

  • MCP ориентирован на наблюдаемость (снимки, диагностики) и управление (команды), а не на “тайные” API.
  • Ключи/имена регионов UI, которые видит агент, должны быть стабильны и задокументированы (см. layout doc выше).

5. Hybrid Index и навигация по коду (вкратце)


6. “Где смотреть в коде” (якоря)

Это не полный список, а “первая десятка” для ориентации.

  • UI layout / регионы: Views/MainWindow.axaml, Views/MfdShellView.axaml
  • VM главного окна: ViewModels/MainWindowViewModel.*.cs (partials)
  • Hybrid Index orchestration: Features/HybridIndex/Application/*
  • CCU / каналы кабины: Cockpit/ComputingUnits/*, Cockpit/Channels/*, Cockpit/Cds/*, Cockpit/Composition/*, Cockpit/Surface/*
  • MCP tool catalog / protocol docs: Services/* (см. ADR 0008 и MCP-PROTOCOL.md)

Если цель — “поймать границу слоёв”, полезны Roslyn анализаторы:


7. Что считать историческим (и не путать с текущим)

В репозитории есть документы и концепты, описывающие старые макеты (например “нижняя панель” на всю ширину).
Смотри явные пометки “старой топологии” в:


8. Как обновлять этот документ

Обновляй, когда меняется хотя бы одно из:

  • топология зон внимания (PFD/Forward/MFD), ключевые регионы и их имена;
  • границы слоёв (DAL/CCU/DataBus/IDS/CDS) или главный “путь данных”;
  • контракт MCP (новые инструменты, смена ключей/форматов).

Версия: v1 (актуальный “срез”).

View only · write via MCP/CIDE