| 1 | # Текущая архитектура CascadeIDE (v1) |
| 2 | |
| 3 | Этот документ — **единая точка входа** про то, **как устроено сейчас** (а не “почему так”). |
| 4 | Контекст решений и альтернативы — в **ADR**: [`docs/adr/README.md`](../adr/README.md). |
| 5 | Политика и “куда смотреть” — [`docs/architecture-policy.md`](../architecture-policy.md). |
| 6 | |
| 7 | --- |
| 8 | |
| 9 | ## 1. Модель системы (на одном экране) |
| 10 | |
| 11 | CascadeIDE — desktop IDE (Avalonia + MVVM), где **семантика “кабины”** (PFD / Forward / MFD) задаёт структуру внимания, а MCP делает IDE управляемой агентом. |
| 12 | |
| 13 | - **PFD**: первичная зона внимания, короткая ситуационная сводка и “командирские” индикаторы. |
| 14 | - **Forward**: рабочая зона (редактор/доки), основной поток действий. |
| 15 | - **MFD**: вторичный контур — **длинные потоки** (терминал/сборка/Git/…): **страницы** стека. |
| 16 | |
| 17 | Эталон layout главного окна и имена регионов для MCP: |
| 18 | - [`docs/ui-ux/cascade-ide-ui-layout-v1.md`](../ui-ux/cascade-ide-ui-layout-v1.md) |
| 19 | |
| 20 | --- |
| 21 | |
| 22 | ## 2. Слои и границы ответственности |
| 23 | |
| 24 | Норматив по слоям и “что где живёт”: |
| 25 | - **ADR 0006**: слои, срезы фич, роль `MainWindowViewModel` — [`docs/adr/0006-presentation-layers-and-feature-slices.md`](../adr/0006-presentation-layers-and-feature-slices.md) |
| 26 | - **ADR 0102**: DAL (граница внешних адаптеров) — [`docs/adr/0102-data-acquisition-layer-boundary-and-contract.md`](../adr/0102-data-acquisition-layer-boundary-and-contract.md) |
| 27 | - **ADR 0097**: CCU (свёртка сырья → DTO/снимок) — [`docs/adr/0097-cockpit-compute-units-transport-to-channel-dto.md`](../adr/0097-cockpit-compute-units-transport-to-channel-dto.md) |
| 28 | - **ADR 0099**: IDE DataBus (типизированные события) — [`docs/adr/0099-ide-databus-typed-events-and-projections.md`](../adr/0099-ide-databus-typed-events-and-projections.md) |
| 29 | - **ADR 0036**: CDS → композитор → поверхность (кабина как домен смысла) — [`docs/adr/0036-cds-channel-compositor-surface-pipeline.md`](../adr/0036-cds-channel-compositor-surface-pipeline.md) |
| 30 | - **ADR 0079**: IDS (IDE overlays) как отдельный домен от CDS — [`docs/adr/0079-ide-display-system-ids-overlay-pipeline.md`](../adr/0079-ide-display-system-ids-overlay-pipeline.md) |
| 31 | |
| 32 | Практическая ментальная модель (сверху вниз): |
| 33 | |
| 34 | - **UI (Views)**: `Views/*.axaml` и связанные `*.axaml.cs`. Держим простым: layout, биндинги, именование регионов. |
| 35 | - **VM (ViewModels)**: композиция состояния, команд и связей между зонами внимания. |
| 36 | - **Application / orchestration**: use-case координация внутри фичи (как правило `Features/<Feature>/Application/*`). |
| 37 | - **DAL**: вход/выход во внешний мир (процессы, git, LSP, MCP-клиенты, файловая система). |
| 38 | - **Transport / bus / batching**: доставка событий/строк в UI (bounded, backpressure). |
| 39 | - **CCU**: свёртка событий/сырья в DTO, пригодный для UI и наблюдаемости. |
| 40 | |
| 41 | --- |
| 42 | |
| 43 | ## 3. Архитектура UI “Flight” (факт, не концепт) |
| 44 | |
| 45 | Главное окно — **три колонки** PFD | Forward | MFD. Длинные потоки (Terminal/Build/Git/…) живут как **страницы MFD**, а не как нижняя панель на всю ширину. |
| 46 | |
| 47 | Подробно: |
| 48 | - [`docs/ui-ux/cascade-ide-ui-layout-v1.md`](../ui-ux/cascade-ide-ui-layout-v1.md) |
| 49 | - Карта “концепт → код” (что историческое, что актуальное): [`docs/ui-ux/concept-to-implementation-map-v1.md`](../ui-ux/concept-to-implementation-map-v1.md) |
| 50 | |
| 51 | Ключевые элементы MFD (по текущим именам): |
| 52 | - `MfdShellView` + `MfdShellPageStack` |
| 53 | - регион “хост стека” (для снимков/темы/контрактов): `MfdContourStackHost` |
| 54 | |
| 55 | --- |
| 56 | |
| 57 | ## 4. MCP: IDE как сервер инструментов |
| 58 | |
| 59 | Контракт и протокол: |
| 60 | - [`docs/MCP-PROTOCOL.md`](../MCP-PROTOCOL.md) |
| 61 | - **ADR 0008** (контракты и тестируемая инфраструктура): [`docs/adr/0008-mcp-contracts-and-testable-infrastructure.md`](../adr/0008-mcp-contracts-and-testable-infrastructure.md) |
| 62 | - **ADR 0052** (CLI контракта и снапшот-тесты): [`docs/adr/0052-agent-contract-cli-and-snapshot-tests.md`](../adr/0052-agent-contract-cli-and-snapshot-tests.md) |
| 63 | |
| 64 | Что важно помнить: |
| 65 | - MCP ориентирован на **наблюдаемость** (снимки, диагностики) и **управление** (команды), а не на “тайные” API. |
| 66 | - Ключи/имена регионов UI, которые видит агент, должны быть стабильны и задокументированы (см. layout doc выше). |
| 67 | |
| 68 | --- |
| 69 | |
| 70 | ## 5. Hybrid Index и навигация по коду (вкратце) |
| 71 | |
| 72 | - **Hybrid index (FTS + vec)** как локальная БД контекста: |
| 73 | [`docs/adr/0105-hybrid-codebase-index-for-csharp-web.md`](../adr/0105-hybrid-codebase-index-for-csharp-web.md) (Accepted · Implemented) |
| 74 | [`docs/adr/0106-hybrid-codebase-index-cascadeide-integration-and-semantic-map.md`](../adr/0106-hybrid-codebase-index-cascadeide-integration-and-semantic-map.md) (Proposed) |
| 75 | - Навигационный MCP (`get_code_navigation_context`) и presets: |
| 76 | [`docs/adr/0039-workspace-navigation-affordances.md`](../adr/0039-workspace-navigation-affordances.md) |
| 77 | |
| 78 | --- |
| 79 | |
| 80 | ## 6. “Где смотреть в коде” (якоря) |
| 81 | |
| 82 | Это не полный список, а “первая десятка” для ориентации. |
| 83 | |
| 84 | - **UI layout / регионы**: `Views/MainWindow.axaml`, `Views/MfdShellView.axaml` |
| 85 | - **VM главного окна**: `ViewModels/MainWindowViewModel.*.cs` (partials) |
| 86 | - **Hybrid Index orchestration**: `Features/HybridIndex/Application/*` |
| 87 | - **CCU / каналы кабины**: `Cockpit/ComputingUnits/*`, `Cockpit/Channels/*`, `Cockpit/Cds/*`, `Cockpit/Composition/*`, `Cockpit/Surface/*` |
| 88 | - **MCP tool catalog / protocol docs**: `Services/*` (см. ADR 0008 и `MCP-PROTOCOL.md`) |
| 89 | |
| 90 | Если цель — “поймать границу слоёв”, полезны Roslyn анализаторы: |
| 91 | - [`CascadeIDE.ArchitectureAnalyzers/README.md`](../../CascadeIDE.ArchitectureAnalyzers/README.md) |
| 92 | |
| 93 | --- |
| 94 | |
| 95 | ## 7. Что считать историческим (и не путать с текущим) |
| 96 | |
| 97 | В репозитории есть документы и концепты, описывающие старые макеты (например “нижняя панель” на всю ширину). |
| 98 | Смотри явные пометки “старой топологии” в: |
| 99 | - [`docs/ui-ux/cascade-ide-ui-layout-v1.md`](../ui-ux/cascade-ide-ui-layout-v1.md) |
| 100 | - [`docs/architecture-migration.md`](../architecture-migration.md) |
| 101 | |
| 102 | --- |
| 103 | |
| 104 | ## 8. Как обновлять этот документ |
| 105 | |
| 106 | Обновляй, когда меняется хотя бы одно из: |
| 107 | - топология зон внимания (PFD/Forward/MFD), ключевые регионы и их имена; |
| 108 | - границы слоёв (DAL/CCU/DataBus/IDS/CDS) или главный “путь данных”; |
| 109 | - контракт MCP (новые инструменты, смена ключей/форматов). |
| 110 | |
| 111 | Версия: **v1** (актуальный “срез”). |
| 112 | |