May 20th, 2026

AAP loop: рендерер подписан на agent-answer:received IPC

Что изменилось

Завершён фронт AAP loop: renderer подписывается на IPC-push от main и автоматически отображает структурированные ответы в чате.

  • AgentAnswerAttachment компонент: читает designAttachmentAtomFamily(turnId) и рендерит соответствующий компонент по kind: design-artifactDesignArtifactCard; viewer-artifactArtifactViewer; text/code → пустой fragment (rendered основным сообщением).
  • useAgentAnswerStream хук: подписывается на agent-answer:received IPC push на mount, отписывается на unmount; нет memory leaks при переключении сессий.
  • Jotai atoms: состояние хранится в atomFamily по turnId — multiple AAP per session без коллизий.
  • Discriminated narrowing: TS-narrowing через kind поле гарантирует type-safe доступ к payload-полям без runtime-checks.
  • E2E smoke test: 6-тестовый bun:test harness валидирует полный путь emitter → router → IPC bridge без xvfb и packaged app.

Где попробовать

Любое сообщение ассистента с структурированным контентом (код-блоки, артефакты, дизайн-команды) автоматически отображается через AAP-pipeline. Откройте DevTools, чтобы увидеть agent-answer:received события.

Связано

PR #347 — DesignArtifactCard wire-up. PR #348 — e2e smoke test.