Core:
- ModelCatalog: periodic background sync of provider models + fuzzy resolve.
Misspelled model ids map to the nearest match (cheapest on ties); no match
raises ModelResolutionError with cheapest-first suggestions for the agent.
mcp-server:
- nexus_stt now writes the transcript to a Markdown file in the media dir so it
appears in the gallery and is readable in the modal.
- media handler resolves model via catalog before generating; returns a note
when substituting, or a BAD_REQUEST with available models when nothing fits.
- context wires a ModelCatalog per media provider with auto-sync.
admin:
- /media serves correct Content-Type (incl. text/markdown for transcripts).
- Gallery: audio play button on cards, dedicated audio player in modal,
text/transcript tiles that fetch and render the .md in the modal.
- Header: auto-refresh toggle (5/10/30s) that refreshes the active tab
without a full page reload; pauses while a modal is open.
Fastify + single-page frontend on shared @nexusai/core. Reads the same SQLite
journal and media dir. Features: usage stats (by provider/capability/day),
content gallery (image/audio/video with local file serving + path-traversal
guard), provider CRUD with encrypted keys (masked in UI), enable/disable,
set-default, and real key validation via zero-cost /media/models call.
Adds Journal.getById and NordRouterMediaProvider.checkKey to core.