capsule AI-native Unix-like composition layer

capsule.yaml

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

apiVersion: capsule.dev/v0.1
kind: Capsule
name: f4c-scheduled-cleanup
version: 0.1.0
type: subsystem
purpose:
  summary: 'A Cloudflare Scheduled Worker that periodically cleans up expired chat
    rooms from Cloudflare KV and deactivates corresponding RealtimeKit meetings to
    prevent resource leakage.

    '
  owns:
  - Scheduled task execution logic
  - Scanning and deleting expired room records from Cloudflare KV
  - Deactivating RealtimeKit meetings associated with expired rooms
  does_not_own:
  - Real-time communication logic
  - Bot logic
  - Room creation or client-side authentication
interfaces:
  provides:
  - kind: event
    name: scheduled_trigger
    description: Responds to Cloudflare Worker scheduled events to perform cleanup.
  requires:
  - kind: env
    name: ROOMS_KV
    description: Cloudflare KV Namespace containing room metadata.
  - kind: env
    name: CF_API_TOKEN
    description: Cloudflare API token for RealtimeKit API calls.
  - kind: env
    name: CF_ACCOUNT_ID
    description: Cloudflare account ID for RealtimeKit API calls.
  - kind: env
    name: RTK_APP_ID
    description: RealtimeKit application ID for deactivating meetings.
dependencies:
  capsules:
  - name: f4c-room-api
    version: '>=0.1.0'
agent:
  summary_for_ai: 'This capsule is a scheduled cleanup worker. Agents should focus
    on optimizing KV queries, ensuring robust error handling for API calls, and verifying
    that expired rooms are consistently removed. The `ROOM_MAX_AGE_MS` is a critical
    parameter.

    '
  avoid:
  - Introducing any real-time or interactive logic.
  - Modifying the room expiry logic without coordinating with `f4c-room-api`.
verification:
  invariants:
  - Expired rooms must be removed from `ROOMS_KV`.
  - Corresponding RealtimeKit meetings must be deactivated.
x-reuse:
  notes: 'app/src/do/ScheduledHandler.ts: `ROOM_MAX_AGE_MS` is hardcoded. Assumes
    Cloudflare RealtimeKit for meeting deactivation and the specific structure of
    `RoomRecord` in `ROOMS_KV`.

    '
x-reconstruct:
  install: install.json