This client mirrors and verifies upstream-compatible behavior. Upstream runtimes remain the canonical protocol owners.
The registry folder is CAVI's team registry — it turns a runtime-supplied TeamManifest (or explicit team config) into lookup, resolution, and portal/library/session helpers. Everything here is client-side (n/a capability): there is no network call and no gateway RPC. The upstream primitive is the core TeamManifest / MemoryScope contracts; the registry extends them with identity resolution, alias matching, portal↔team mapping, and session-key derivation. The package ships TEAM_REGISTRY_CONFIG.teamsempty — data is runtime-supplied (enforced by the hardening tests) — so none of this is a baked duplicate of upstream data.
n/a Upstream equivalent core TeamManifest (contracts/team-manifest.ts) CAVI value-add Normalizes manifest/snapshot/team config into OperatorRegistryTeam[], asserts unique lookup keys, and returns a registry with team resolution (resolveTeam/requireTeam), portal→team mapping (getPortalTeam*), and library-ref resolution. This is aggregation/normalization over the raw manifest, not a pass-through.
n/a Upstream equivalent core OperatorRegistrySnapshotCAVI value-add Builds a registry directly from a fetched operator registry snapshot; convenience over createTeamRegistry.
n/a Upstream equivalent none (registry-internal identity matching) CAVI value-add Case/underscore/space-insensitive identity matching across id, slug, code, portal id, and legacy aliases — the resolution logic the registry is built on.
n/a Upstream equivalent none (runtime-supplied registry state) CAVI value-add Holds and compiles the runtime-supplied TEAM_REGISTRY_CONFIG (ships empty) into the canonical operator registry used across CAVI surfaces.
n/a Upstream equivalent none CAVI value-add Thin, throwing accessors over getConfiguredTeamRegistry() that resolve a portal or team identity to its PortalLibraryRef — the fleet-vs-team library routing CAVI portals depend on.