Search by

spora-ai / spora-plugin-media-archive

fabeat

Admin UI for browsing, filtering, and downloading media archived by Spora agents.

Package info

github.com/spora-ai/spora-plugin-media-archive

Type:spora-plugin

pkg:composer/spora-ai/spora-plugin-media-archive

Statistics

Installs: 253

Dependents: 0

Suggesters: 3

Stars: 0

Open Issues: 0

v0.4.0 2026-09-10 12:46 UTC

README

Admin UI for browsing, filtering, and downloading media archived by Spora agents.

This plugin contributes the Media Archive app to the host's Apps dropdown. The panel is a pre-built Vue SPA delivered as a separate Composer package (spora-ai/spora-plugin-media-archive-frontend, type spora-plugin-frontend). The two-package split lets the frontend evolve on its own release cadence and lets backend-only operators skip the bundle entirely.

Install

composer require spora-ai/spora-plugin-media-archive
composer require spora-ai/spora-plugin-media-archive-frontend

Both packages are required: the PHP package contributes the admin-panel metadata (MediaArchiveAppVueAppInterface), and the frontend package ships the Vue IIFE bundle that the host SPA lazy-loads at runtime.

Requires spora-ai/spora-core ≥ 0.20.0 (ships MediaDerivativeService and the two-arg MediaAssetSerializer used to surface persisted derivatives on the detail page; versions prior to 0.20.0 leave the VersionsStrip empty on reload).

What it does

  • Surfaces rows from the media_assets table (indexed by MediaArchiveService) as a filterable grid in the admin UI.
  • Filters by media type, plugin, tool, agent, and date range.
  • Scope chip row (mirrors the dashboard's ALL / My Media / Group pattern) so a user with multiple groups can isolate each group's media. The chip row reads /principals/me + /groups to populate the labels; the controller intersects ?principal_id= with the caller's visiblePrincipalIds() so an out-of-scope principal id is silently dropped.
  • Click-through detail drawer with metadata (dimensions, duration, mime type, source URL).
  • A derivatives strip below the asset row (format chip + producer + asset URL). Populated from the media_derivatives join table; the controller reads it via MediaDerivativeService::listFor() so chips survive a hard reload, not just the in-memory splice on derivative production.
  • One-click download via the existing AssetController::show() route.

The plugin itself adds no tools, drivers, recipes, or migrations — it is purely presentational.

Companion plugins

Listed in composer.json under suggest:

  • spora-ai/spora-plugin-minimax — image, speech, music, and video generation. Rows produced by these tools show up here.
  • spora-ai/spora-plugin-email — email send/receive. Outbound attachments surface as archived documents.

Reference

The canonical reference (REST contract, ingestion API, retention guidance, configuration flags) lives on the docs site:

docs.spora-ai.com/develop/plugins/reference/media-archive

License

MIT — see LICENSE.