Forge
markdowndeeb25a2
1# ADR 0146: Intercom Wire — канонический пакет протокола
2
3| Поле | Значение |
4|------|----------|
5| **Статус** | Accepted |
6| **Дата** | 2026-05-24 |
7| **Amend** | 2026-05-24 — wire + reference service в репозитории **cascade-ide** |
8| **Связь** | [0142](0142-intercom-open-wire-pluggable-transports.md) · [0144](0144-intercom-team-transport-cide-sync-and-reference-service.md) · [0145](0145-intercom-web-pwa-team-client.md) |
9
10## Резюме
11
12Протокол Intercom — **`wire/intercom-wire/`** в репозитории **cascade-ide**. Развивается **логически** отдельно от `host/intercom-service` и кода IDE (отдельные PR), но **один git clone** для команды.
13
14## Контекст
15
16Расширения (`relates_to`, code↔doc, …) и новые `event_kind` не должны требовать синхронного PR в сервер. Transport сильно связан с CIDE — отдельный git в `Financial/software/open/` создавал лишние slnx и пути `../../../`.
17
18## Решение
19
20| Артефакт | Путь (в cascade-ide) |
21|----------|-------------------------|
22| **Wire schemas** | `wire/intercom-wire/schemas/v1/` |
23| **Extension registry** | `extension-registry.json`, `extensions/*` |
24| **Event kind registry** | `event-kinds.json` |
25| **HTTP profile** | `wire/intercom-wire/profiles/reference-http-v1/openapi.yaml` |
26| **Reference server** | `host/intercom-service/` |
27| **Указатель из docs** | `docs/intercom-wire/README.md` |
28| **Solution** | `CascadeIDE.slnx` — IDE + IntercomService + Tests |
29| **Путь сервера** | `host/intercom-service/` (не `services/` — коллизия с `Services/` на Windows) |
30
31### Правила эволюции
32
331. **Additive** — optional поля, новые extensions, новые kind → wire minor (`CHANGELOG.md`).
342. **Breaking** — `transport-envelope.schema_version` → `2`.
353. **HTTP** — новый profile или `/api/v2`; wire может остаться v1.
364. Реализации **MAY** отставать: unknown JSON сохраняется.
37
38### relatesTo / code-doc
39
40- `extensions/relates-to-v1` — optional `relates_to[]` на message.
41- `extensions/code-doc-link-v1` — `code_doc_links[]`.
42- `message_range_related` — gutter ordinals ([0137](0137-intercom-message-code-correspondence.md)).
43
44## Последствия
45
46- Один репозиторий для пилота; PR wire vs service по смыслу раздельны.
47- Matrix/MM bridges могут копировать только `wire/` или submodule позже.
48- CI (будущее): validate schemas + OpenAPI в pipeline cascade-ide.
49
50## Потребители вне репо
51
52| Клиент | Репозиторий | Wire |
53|--------|-------------|------|
54| **intercom-web** | Org GitHub, отдельно от cascade-ide ([0145](0145-intercom-web-pwa-team-client.md)) | копия/submodule `wire/intercom-wire` или raw GitHub |
55
56## Не цели
57
58- NuGet / npm publish wire (пока path в cascade-ide).
59- intercom-web **внутри** cascade-ide (отдельный org-репо — норма).
60- CloudEvents mandatory envelope.
61
View only · write via MCP/CIDE