Forge
markdowndeeb25a2
1# ADR 0145: Intercom Web — PWA team client
2
3| Поле | Значение |
4|------|----------|
5| **Статус** | Accepted |
6| **Дата** | 2026-05-24 |
7| **Amend** | 2026-05-24 — отдельный репозиторий org GitHub; wire/server — в [cascade-ide](https://github.com/AI-Guiders/cascade-ide) |
8| **Связь** | [0144](0144-intercom-team-transport-cide-sync-and-reference-service.md) transport · [0146](0146-intercom-wire-canonical-protocol-package.md) wire · [0132](0132-intercom-federated-transport-and-multi-client-boundary.md) multi-client |
9
10## Резюме
11
12**`intercom-web`** — браузерный team client (PWA): read+compose human channel через **reference** `host/intercom-service` и wire v1. Живёт в **отдельном репозитории** org GitHub, не в `cascade-ide`.
13
14## Контекст
15
16CIDE покрывает разработчика; PO/Lead/QA — браузер ([0132](0132-intercom-federated-transport-and-multi-client-boundary.md) фаза 3). IDE, wire и reference server — один продуктовый репо **cascade-ide**; web — другой runtime (браузер), другой релизный цикл, отдельный deploy — логично вынести в org.
17
18## Решения
19
20| Тема | Решение |
21|------|---------|
22| **Репозиторий** | **[AI-Guiders/intercom-web](https://github.com/AI-Guiders/intercom-web)** (MIT) |
23| **Не в cascade-ide** | Не смешивать Node/Blazor web с Avalonia IDE в одном git |
24| **Wire** | Канон: `cascade-ide/wire/intercom-wire/` — потребление через копию схем в CI, submodule, или raw URL на `main` (без NuGet на v1) |
25| **API** | HTTP+SSE к развёрнутому `intercom-service` ([profile](../../wire/intercom-wire/profiles/reference-http-v1/openapi.yaml)); BFF не обязателен в v1 |
26| **Стек (v1)** | SPA: Vite + React + TS + `vite-plugin-pwa` **или** Blazor WASM — выбор в репо web; ADR не диктует, если соблюдён wire |
27| **Auth** | OAuth Authorization Code + **PKCE**; `redirect_uri` = `{origin}/auth/callback`; JWT + refresh (storage — решение web-репо) |
28| **SSE** | `fetch` + stream parser + `Authorization: Bearer` (не голый `EventSource` без заголовка) |
29| **CORS** | `Cors:AllowedOrigins` на сервере включает origin PWA |
30| **Не v1** | Skia-лента, полный slash, agent BFF, attach re-resolve, team-console + Mission |
31
32## Граница репозиториев
33
34```mermaid
35flowchart LR
36 subgraph cide_repo ["cascade-ide (AI-Guiders)"]
37 CIDE[CIDE]
38 Wire[wire/intercom-wire]
39 Host[host/intercom-service]
40 end
41 subgraph web_repo ["intercom-web (org, отдельный)"]
42 PWA[PWA / Blazor]
43 end
44 Wire -.->|schemas copy / submodule| PWA
45 PWA -->|HTTPS + SSE| Host
46 CIDE --> Host
47```
48
49| Компонент | Репозиторий |
50|-----------|-------------|
51| Wire, ADR, reference server, IDE transport | **cascade-ide** |
52| Browser client | **intercom-web** (org) |
53| NuGet wire | Не v1 |
54
55## Последствия
56
57- Web-релизы без пересборки IDE.
58- В web-репо — свой CI (build PWA, lint, e2e).
59- Нужны TLS + OAuth redirect URI production для домена PWA.
60- Deep link в CIDE: `cascade-ide://` или документированный URL.
61
62## Не цели (v1)
63
64- MCC / SA dashboard ([0132](0132-intercom-federated-transport-and-multi-client-boundary.md) фаза 4).
65- Fan-out `message_stream_delta`, clarification events.
66- E2EE, read receipts.
67
View only · write via MCP/CIDE