Když Orca orchestruje několik AI agentů a mise běží hodiny, nemůžete pořád sedět u dashboardu. Dřív nebo později potřebujete odejít od počítače — a přesto zůstat v obraze.
Nově Orca podporuje web push notifikace přímo na telefon. Nejen upozornění „něco se stalo” — ale notifikace s inline akcemi, které lze spustit přímo z notifikace bez otevření prohlížeče.
Jak to vypadá v praxi
Agent dokončí fázi a Orca vyhodnotí, že potřebuje lidské review. V tu chvíli přijde na telefon notifikace:
Mise potřebuje vaše rozhodnutí Refaktor endpointu: agent navrhl změnu, která mění API contract.
Na výběr jsou dvě tlačítka: Schválit a Spustit znovu. Žádné otevírání browseru, žádné přihlašování — akce se provede přímo.
Podobně to funguje u dalších situací:
- Agent čeká na odpověď — notifikace s Povolit / Odmítnout (pokud jde o jednoduchý permission prompt)
- Mise se zastavila — upozornění, že něco potřebuje pozornost
- Mise dokončena — informace o hotovém výsledku, případně odkaz na PR
Architektura celého toku
Celý systém má tři vrstvy:
1. VAPID + subscriptions
Při prvním spuštění Orca automaticky vygeneruje VAPID klíčový pár (Web Push Authorization). Ten se používá k ověření, že notifikace skutečně přichází z vaší instance Orca.
Uživatel se přihlásí k odběru v nastavení účtu (přepínač „Push notifikace”). Browser zaregistruje service worker, získá push subscription a tu Orca uloží — včetně vazby na majitele mise a adminy.
2. Event-bus dispatcher
Jádro systému je PushDispatcher — jediný subscriber na interním event busu. Ten mapuje životní události Orca na push payload:
| Událost | Typ notifikace | Inline akce |
|---|---|---|
| Review eskalace | „Mise potřebuje rozhodnutí” | Schválit / Spustit znovu |
| Agent čeká na odpověď | „Agent čeká na odpověď” | Povolit / Odmítnout |
| Mise zastavená | „Mise se zastavila” | Otevřít |
| Úkol blokovaný | „Mise se zastavila” | Otevřít |
| Mise dokončena | „Mise dokončena” | (tap → otevřít app) |
Každý typ notifikace se collapses na zařízení pomocí tag — opakované notifikace o té samé misi se nepřekrývají.
3. Service worker s inline akcemi
Notifikace se zobrazuje service worker (sw.js), který běží nezávisle na prohlížeči. Na rozdíl od standardních notifikací Orca worker nejen zobrazuje text, ale umí provést akce:
- Approve →
POST /tasks/:id/approve-gate - Rerun →
PATCH /tasks/:id+PATCH /missions/:id(reset fáze + resume mise) - Allow/Reject →
POST /sessions/:id/keyss klávesou Enter/Escape
Worker provádí HTTP požadavky přímo ze service worker kontextu — bez nutnosti otevírat prohlížeč. Selže-li akce, zobrazí se notifikace „Akce se nezdařila, otevřete aplikaci.”
Bezpečnost a hranice
Service worker nepřijímá žádná data z payloadu jako URL k otevření bez validace — vše prochází přes safeOpenUrl, která akceptuje pouze same-origin cesty nebo https:// URL. Žádné javascript:, žádné data:, žádné off-origin přesměrování.
Dead endpointy (404/410) se automaticky čistí — pokud uživatel přestal push odebírat nebo změnil zařízení, Orca subscription bez hlášení odebere.
Před odesláním se kontroluje, jestli existují VAPID klíče a alespoň jedna subscription. Pokud ne, push se nekoná — žádný crash, žádný noise.
Proč to děláme přes Web Push místo jiného řešení
Alternativ bylo hodně — mobilní app, Telegram bot, e-mail. Web Push vyhrál, protože:
- Žádná app — stačí přidat na plochu z prohlížeče (PWA manifest je součástí)
- Funguje na iOS i Androidu — Apple podporuje Web Push od iOS 16.4
- Stejná instance — push chodí z toho samého serveru, žádný třetí service
- Inline akce — to je klíčové. Standardní notifikace jen informují, Orca vám umožní jednat přímo
Co to mění
Dřív jste museli sledovat dashboard, abyste věděli, jestli agent potřebuje vaši pomoc. Teď vás Orca kontaktuje — a vy můžete rozhodnout z mobilu, z gauče, z vlaku.
Nejde o to být neustále online. Jde o to, aby vás agent mohl oslovit ve správný okamžik — a vy abyste mohli odpovědět, aniž byste museli přepínat kontext.
Tohle je posun od „dashboard, který sledujete” k „systém, který vás oslovuje”. A to je přesně ten typ interakce, který dělá AI agenty použitelnými v reálném provozu.