# Media 0.1.0-alpha.29

Direct calls, meetings, large audio stages, and screen sharing for independent web environments.

## Immutable release

- Plugin ID: `plg_media`
- Release ID: `rel_7419a38b-0545-4944-a8bf-5626ca85ef88`
- Version: `0.1.0-alpha.29`

## Package artifacts

The package import specifier is the Registry-reviewed `packageName`; do not substitute a source-workspace package name. `packageSpec` identifies the exact install bytes.

| Provider | packageName | packageSpec | Integrity |
| --- | --- | --- | --- |
| al_amr | `@al-amr-community/al-amr-technical--media` | `https://registry.al-amr.com/v1/packages/sha512/a62c14a64274873147a114f1462846f921627e6a1defa3585cbba44c77268540aa65f225ac3f93019ca1fdd17e3b8c472e40529608b535874c1e5d02bfab1ed0.tgz` | `sha512-piwUpkJ0hzFHoRTxRihG+SFifmod76NYXLukTHcmhUCqZfIlrD+TAZyh/dF+O4xHLkBSlgi1NYdMHl0Cv6se0A==` |

## Declare the exact Plugin installation

Run this from an Al-Amr Environment. This command updates the Environment manifest, `al-amr.lock.json`, and the package dependency together. Do not install the npm package directly.

```sh
alamr add al-amr-technical/media@0.1.0-alpha.29 --integration frontend-adapter --adapter react --yes --json
```

Run the `installCommand` returned by `alamr add`, then verify the complete declaration:

```sh
alamr validate --json
```

## Trust and compatibility preflight

- Runtime class: `trusted_library` (trusted library code in the host Environment; not a JavaScript sandbox)
- Kind: `full_stack`
- Contracts: `^0.1.0-alpha.1`
- SDK: `^0.1.0-alpha.1`
- Platform permissions: `identity:read`, `profile:read`, `settings:read`, `settings:write`, `plugin-grant:request`
- Browser requirements: `microphone` (optional: Requested only when the participant chooses to speak.); `display-capture` (optional: Requested only when the participant explicitly starts screen sharing.)
- Direct network origins: `https://media.al-amr.com`, `wss://rtc.al-amr.com` — Authenticated control traffic and self-hosted LiveKit WebRTC media transport.
- Collected data: `pairwise plugin actor`, `authoritative display profile`, `environment and scope`, `session membership`, `connection diagnostics`
- Shared data: none declared
- Retention: Invitations and session state are ephemeral. Security audit events follow platform retention policy. Media is not recorded or transcribed, and Media does not collect movement or position data.
- Privacy policy: [review policy](https://developer.al-amr.com/legal/privacy)

## Machine-readable release artifacts

- Backend Grant OpenAPI: [openapi.json](./openapi.json)
- Reviewed TypeScript declaration: [types.d.ts](./types.d.ts)

## Frontend adapters

| Adapter ID | Runtime | Export path | Exports | Capabilities |
| --- | --- | --- | --- | --- |
| `react` ([types](./types.d.ts?adapter=react)) | `react` | `.` | `createMediaV2Runtime`, `mediaV2ProblemMessageFa`, `mediaV2MicrophoneMessageFa`, `mediaV2PlaybackMessageFa`, `mediaV2TransportMessageFa`, `mediaV2BootstrapMessageFa`, `mediaV2SelfMember`, `mediaV2IsJoined`, `mediaV2IsModerator`, `mediaV2ActiveMembers`, `mediaV2PendingSpeakerOfferForSelf`, `mediaV2RaisedHandQueue`, `mediaV2MicrophoneButton`, `mediaV2CallableActorKeySet`, `mediaV2RecoveryOffer`, `MediaV2RuntimeProvider`, `useMediaV2`, `mediaPluginManifest`, `MediaV2ClientMessageSchema`, `MediaV2ServerMessageSchema`, `MediaSpacePolicyV2Schema`, `MediaEnvironmentConfigV2Schema`, `MediaV2ActionError`, `mediaV2AudioGate`, `mediaV2MediaTransportMessageFa`, `mediaV2ConnectionQualityMessageFa` | `media:direct-call`, `media:meeting`, `media:stage`, `media:screen-share` |

## Import examples

These imports use the selected Registry artifact package name: `@al-amr-community/al-amr-technical--media`.

### react (react)

```ts
import * as PluginAdapter from "@al-amr-community/al-amr-technical--media";

// Runtime values are available on PluginAdapter. The reviewed declaration
// names (runtime values plus structural TypeScript bindings) are listed above
// and in types.d.ts; type-only declarations do not exist at runtime.
void PluginAdapter;
```


## Verified protocol artifacts

The Managed Store artifact validator recomputes each digest from package bytes. Registry metadata alone is not integrity evidence.

| ID | Kind | Specification | Package path | SHA-256 digest |
| --- | --- | --- | --- | --- |
| `media-v2-data-plane` | `asyncapi` | `3.0.0` | `./protocol/media-v2.asyncapi.json` | `sha256:65a7407f65fedb42a32d93e61d5406473816653b6d8aa73edf39378f4e4327cc` |
| `publisher-authority-api` | `openapi` | `3.1.0` | `./protocol/publisher-authority.openapi.json` | `sha256:db7cb99f3b43fe3e71a8d5849597eb4529fa7a877231e0357ba56d6b8db613ff` |

## Environment backend callbacks

Callbacks are pinned to the owning Environment-backend boundary carried in the Plugin Grant. A declaration grants no additional network authority.

| Component | Callback | Config pointer | Operation | Grant scopes | Timeout | Redirects | Failure |
| --- | --- | --- | --- | --- | --- | --- | --- |
| `control` | `publisher-authority` | `/spaces/*/policy/roleAuthorityUrl` | `authorizePublisher` | `media:publish` | `2000ms` | `error` | `deny` |
