Admins can browse a curated catalog of agent roles, import roles/bundles
into a workspace, and update an imported role when the catalog ships a
newer version.
Catalog: a set of JSON files (index.json manifest + bundles/<id>/<lang>.json)
served from a local folder (dev) or a remote http(s) base URL via
AI_AGENT_ROLES_CATALOG_URL. Seeded with the existing 7 RU roles (editorial +
research bundles) plus EN translations.
Server:
- migration: nullable jsonb `source` column on ai_agent_roles
({ slug, language, version }; null => manually created)
- catalog provider: remote fetch with timeout + streaming size cap, or local
read; ^[a-z0-9-]+$ segment guard against path-traversal/SSRF
- admin endpoints: catalog, catalog/bundle, import, update-from-catalog
- import/update match by slug+language; update preserves `enabled`
Client:
- catalog modal with language selector and Import/Installed/Update states
- "Import from catalog" button + empty-state CTA in the roles settings panel
- en-US/ru-RU strings
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
33 lines
1.2 KiB
JSON
33 lines
1.2 KiB
JSON
{
|
|
"schemaVersion": 1,
|
|
"bundles": [
|
|
{
|
|
"id": "editorial",
|
|
"name": { "ru": "Редакторский набор", "en": "Editorial suite" },
|
|
"description": {
|
|
"ru": "Полный цикл редактуры статьи: структура, стиль, грамматика, факты, корректура и нарратив.",
|
|
"en": "The full article-editing cycle: structure, style, grammar, facts, proofreading, and narrative."
|
|
},
|
|
"languages": ["ru", "en"],
|
|
"roles": [
|
|
{ "slug": "structural-editor", "version": 1 },
|
|
{ "slug": "line-editor", "version": 1 },
|
|
{ "slug": "copy-editor", "version": 1 },
|
|
{ "slug": "fact-checker", "version": 1 },
|
|
{ "slug": "proofreader", "version": 1 },
|
|
{ "slug": "narrator", "version": 1 }
|
|
]
|
|
},
|
|
{
|
|
"id": "research",
|
|
"name": { "ru": "Исследование", "en": "Research" },
|
|
"description": {
|
|
"ru": "Глубокое исследование темы с подготовкой отчёта.",
|
|
"en": "Deep research on a topic with a prepared report."
|
|
},
|
|
"languages": ["ru", "en"],
|
|
"roles": [ { "slug": "researcher", "version": 1 } ]
|
|
}
|
|
]
|
|
}
|