## Что это
Когда агент эмитит AAP (Agent Artifact Protocol) событие вида `{ type: "design", uri: "design://component/Button" }`, embed должен открыть соответствующий артефакт в правой панели ROX.ONE без перезагрузки сессии. Сейчас навигация ограничена manual-кликом из chat — агент не может перевести фокус автоматически.
Решение: `@rox-one/aap-router` подписывается на AAP-stream, резолвит type через `ArtifactViewerRegistry`, открывает viewer в правой панели с deep-link state. Для design-артефактов специально: проксирует через `RoxDesignViewManager.navigate(uri)`. Если артефакт уже открыт — фокус на него, без дублирования tab.
Компоненты: `@rox-one/aap-router`, `apps/electron/src/embed/RoxDesignViewManager`. Browser-style история навигации (back/forward) в правой панели через Cmd+[ / Cmd+].
## Зачем
AAP loop — это сердце compounding-experience: агент работает, артефакты появляются автоматически в нужной surface. Без AAP navigation пользователь делает 2-3 лишних клика на каждый артефакт, что ломает flow в длинных миссиях.
## Источники вдохновения
- [agisota/meta2d.js](https://github.com/agisota/meta2d.js) — real-time 2D-engine с bidirectional data exchange для AAP wave canvas
- [vercel-labs/tersa](https://github.com/vercel-labs/tersa) — open-source canvas для AI workflows с node-routing
- [LincZero/obsidian-node-flow](https://github.com/LincZero/obsidian-node-flow) — JSON-described node-graph для AAP-navigation viz
## 🔗 Linear
- [PZD-445](https://linear.app/kuhjie/issue/PZD-445) — backing ticket