Fighting Game · Guides & deep dives

V2 Mobile Companion App

The model consumes the required per-surface clients directly:

3sections1 minread1table

On this page

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-core for mobile shell tabs and route hrefs.
  • @oshun/auth-client for assistant feature-gating rules.
  • @oshun/concordia-integration for appeal navigation, event, and telemetry wiring.
  • @oshun/trust-safety for assistant-behavior policy categories, severity, and SLA budgets.
  • @iris/agents for the in-app assistant agent catalog and launch readiness.
  • @sophia/client for 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.ts
  • apps/oshun/mobile/v2/V2CompanionApp.test.tsx
  • V2/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.