The V2 companion surface now lives inside the existing Expo mobile app at
apps/oshun/mobile/v2/, with a routed screen at apps/oshun/mobile/app/v2.tsx
and an Explore launch tile in apps/oshun/mobile/app/(tabs)/explore.tsx.
Runtime Contract#
| Surface | Implementation |
|---|---|
| Companion app | apps/oshun/mobile/v2/V2CompanionApp.tsx |
| Launch tile | apps/oshun/mobile/v2/V2CompanionLaunchTile.tsx |
| Shell model | apps/oshun/mobile/v2/companionAppModel.ts |
| Route | apps/oshun/mobile/app/v2.tsx |
| Tests | apps/oshun/mobile/v2/V2CompanionApp.test.tsx |
| Agent package | libs/iris/agents/src/index.ts (@iris/agents) |
The model consumes the required per-surface clients directly:
@oshun/shell-corefor mobile shell tabs and route hrefs.@oshun/auth-clientfor assistant feature-gating rules.@oshun/concordia-integrationfor appeal navigation, event, and telemetry wiring.@oshun/trust-safetyfor assistant-behavior policy categories, severity, and SLA budgets.@iris/agentsfor the in-app assistant agent catalog and launch readiness.@sophia/clientfor frame-data, codex, and wiki query client wiring.
Launch Gate#
The historical blocker was the missing root @iris/agents package. That package
now exists at libs/iris/agents/ as a mobile-safe umbrella catalog over the
existing Iris agent implementation packages. The V2 companion model calls
resolveIrisAgentsLaunchReadiness() and renders a blocked state if the package
or required built-in agents are missing.
Verification#
The migration is guarded by:
libs/iris/agents/src/agents.test.tsapps/oshun/mobile/v2/V2CompanionApp.test.tsxV2/ue/Tools/check-v2-mobile-companion.py
The checker validates the @iris/agents landing, mobile package dependencies,
route/tile wiring, docs, and CI workflow wiring.