capsule AI-native Unix-like composition layer

capsule.yaml

2,348 bytes · 63 lines · capsule://quake0day/[email protected] raw on github

apiVersion: capsule.dev/v0.1
kind: Capsule
name: lkmeet-video-conference-core
version: 0.1.0
type: subsystem
purpose:
  summary: 'Encapsulates the core client-side logic and UI components for a LiveKit
    video conference. This includes handling room connection, E2EE setup, and rendering
    the main conference view, providing a robust foundation for any LiveKit video
    application.

    '
  owns:
  - LiveKit room connection and management
  - E2EE setup and integration
  - Main video conference UI rendering
  does_not_own:
  - Pre-join UI
  - Landing page or room selection logic
interfaces:
  provides:
  - kind: library
    name: VideoConferenceClientImpl
    description: React component for connecting to a LiveKit room with custom parameters.
  - kind: library
    name: PageClientImpl
    description: React component for connecting to a LiveKit room with pre-join and
      dynamic parameters.
  requires:
  - kind: http_api
    name: /api/connection-details
    from_capsule: lkmeet-livekit-auth-api
    description: Required by PageClientImpl to fetch connection details.
dependencies:
  capsules:
  - name: lkmeet-livekit-client-utils
    version: '>=0.1.0'
  - name: lkmeet-livekit-ui-components
    version: '>=0.1.0'
agent:
  summary_for_ai: 'This capsule contains the core client-side video conference logic.
    Focus on robust LiveKit room connection, E2EE integration, and handling user choices.
    Ensure seamless integration with `livekit-client` and `@livekit/components-react`.
    Error handling for connection and media device access is crucial.

    '
verification:
  invariants:
  - Room connection must be stable and handle disconnections gracefully.
  - E2EE setup must correctly initialize the worker and key provider.
  - Video and audio tracks must be enabled based on user choices.
  - Error messages must be user-friendly and actionable.
x-reuse:
  notes: 'The `CONN_DETAILS_ENDPOINT` is hardcoded to `/api/connection-details`. This
    will need to be updated if the API route changes in a different project. The `alert`
    messages for `DeviceUnsupportedError` and other errors are hardcoded and might
    need to be customized or replaced with a more generic notification system. The
    default `videoCodec` ''vp9'' is hardcoded in `PageClientImpl.tsx`.

    '
x-reconstruct:
  install: install.json