Gjør mindmap til et offisielt trait som kan velges ved opprettelse av samlingsnoder. Frontend-komponenten (27.1) og BlockShell-panelet (27.2) var allerede på plass — dette kobler traiten inn i backend- validering og pakke-definisjoner. Endringer: - Lagt til "mindmap" i VALID_TRAITS (intentions.rs) - Validering av konfig: default_depth 1-3, layout radial/tree - Inkludert mindmap i Podcaststudio- og Wiki-pakker (traits.ts) - Oppdatert trait-katalog i docs/primitiver/traits.md
217 lines
4.8 KiB
TypeScript
217 lines
4.8 KiB
TypeScript
/**
|
|
* Shared trait catalog and package definitions.
|
|
* Used by collection/new (package selector) and TraitAdmin (trait management).
|
|
*/
|
|
|
|
export interface TraitCategory {
|
|
label: string;
|
|
traits: string[];
|
|
}
|
|
|
|
export const traitCatalog: TraitCategory[] = [
|
|
{ label: 'Innhold & redigering', traits: ['editor', 'versioning', 'collaboration', 'translation', 'templates'] },
|
|
{ label: 'Publisering & distribusjon', traits: ['publishing', 'rss', 'newsletter', 'custom_domain', 'analytics', 'embed', 'api'] },
|
|
{ label: 'Lyd & video', traits: ['podcast', 'recording', 'transcription', 'tts', 'clips', 'playlist'] },
|
|
{ label: 'Kommunikasjon', traits: ['chat', 'forum', 'comments', 'guest_input', 'announcements', 'polls', 'qa'] },
|
|
{ label: 'Organisering', traits: ['kanban', 'calendar', 'timeline', 'table', 'gallery', 'bookmarks', 'tags'] },
|
|
{ label: 'Kunnskap', traits: ['knowledge_graph', 'mindmap', 'wiki', 'glossary', 'faq', 'bibliography'] },
|
|
{ label: 'Automatisering & AI', traits: ['auto_tag', 'auto_summarize', 'digest', 'bridge', 'moderation'] },
|
|
{ label: 'Tilgang & fellesskap', traits: ['membership', 'roles', 'invites', 'paywall', 'directory'] },
|
|
{ label: 'Ekstern integrasjon', traits: ['webhook', 'import', 'export', 'ical_sync'] },
|
|
];
|
|
|
|
export interface Package {
|
|
id: string;
|
|
name: string;
|
|
description: string;
|
|
icon: string;
|
|
traits: Record<string, Record<string, unknown>>;
|
|
}
|
|
|
|
export const packages: Package[] = [
|
|
{
|
|
id: 'nettmagasin',
|
|
name: 'Nettmagasin',
|
|
description: 'Publiser artikler med RSS, kommentarer og nyhetsbrev',
|
|
icon: '📰',
|
|
traits: {
|
|
editor: { preset: 'longform' },
|
|
publishing: {},
|
|
rss: {},
|
|
comments: {},
|
|
analytics: {},
|
|
custom_domain: {},
|
|
newsletter: {},
|
|
},
|
|
},
|
|
{
|
|
id: 'podcaststudio',
|
|
name: 'Podcaststudio',
|
|
description: 'Podcast med opptak, transkripsjon og kunnskapsgraf',
|
|
icon: '🎙️',
|
|
traits: {
|
|
podcast: {},
|
|
recording: {},
|
|
transcription: {},
|
|
editor: { preset: 'shownotes' },
|
|
rss: {},
|
|
analytics: {},
|
|
clips: {},
|
|
knowledge_graph: {},
|
|
mindmap: { default_depth: 2, layout: 'radial' },
|
|
},
|
|
},
|
|
{
|
|
id: 'nyhetsbrev',
|
|
name: 'Nyhetsbrev',
|
|
description: 'Skriv og distribuer nyhetsbrev med analyse',
|
|
icon: '✉️',
|
|
traits: {
|
|
editor: { preset: 'longform' },
|
|
newsletter: {},
|
|
analytics: {},
|
|
versioning: {},
|
|
},
|
|
},
|
|
{
|
|
id: 'wiki',
|
|
name: 'Wiki',
|
|
description: 'Samarbeidende kunnskapsbase med versjonering',
|
|
icon: '📚',
|
|
traits: {
|
|
wiki: {},
|
|
editor: { preset: 'longform' },
|
|
collaboration: {},
|
|
versioning: {},
|
|
knowledge_graph: {},
|
|
mindmap: { default_depth: 2, layout: 'tree' },
|
|
glossary: {},
|
|
},
|
|
},
|
|
{
|
|
id: 'diskusjonsklubb',
|
|
name: 'Diskusjonsklubb',
|
|
description: 'Forum, chat og avstemninger for en gruppe',
|
|
icon: '💬',
|
|
traits: {
|
|
forum: {},
|
|
chat: {},
|
|
polls: {},
|
|
membership: {},
|
|
roles: {},
|
|
directory: {},
|
|
},
|
|
},
|
|
{
|
|
id: 'kursplattform',
|
|
name: 'Kursplattform',
|
|
description: 'Kursinnhold med spillelister, Q&A og betaling',
|
|
icon: '🎓',
|
|
traits: {
|
|
editor: { preset: 'longform' },
|
|
playlist: {},
|
|
qa: {},
|
|
membership: {},
|
|
paywall: {},
|
|
templates: {},
|
|
},
|
|
},
|
|
{
|
|
id: 'moteplass',
|
|
name: 'Møteplass',
|
|
description: 'Opptak, chat, kanban og kalender for møter',
|
|
icon: '🤝',
|
|
traits: {
|
|
recording: {},
|
|
chat: {},
|
|
kanban: {},
|
|
calendar: {},
|
|
auto_summarize: {},
|
|
guest_input: {},
|
|
},
|
|
},
|
|
{
|
|
id: 'fotoblogg',
|
|
name: 'Fotoblogg',
|
|
description: 'Bildegalleri med publisering og kommentarer',
|
|
icon: '📷',
|
|
traits: {
|
|
gallery: {},
|
|
publishing: {},
|
|
comments: {},
|
|
custom_domain: {},
|
|
rss: {},
|
|
},
|
|
},
|
|
{
|
|
id: 'prosjektstyring',
|
|
name: 'Prosjektstyring',
|
|
description: 'Kanban, kalender og chat for teamarbeid',
|
|
icon: '📋',
|
|
traits: {
|
|
kanban: {},
|
|
calendar: {},
|
|
chat: {},
|
|
table: {},
|
|
tags: {},
|
|
roles: {},
|
|
},
|
|
},
|
|
{
|
|
id: 'forskning',
|
|
name: 'Åpen forskning',
|
|
description: 'Akademisk publisering med versjonering og bibliografi',
|
|
icon: '🔬',
|
|
traits: {
|
|
editor: { preset: 'longform' },
|
|
versioning: {},
|
|
bibliography: {},
|
|
publishing: {},
|
|
comments: {},
|
|
collaboration: {},
|
|
api: {},
|
|
},
|
|
},
|
|
{
|
|
id: 'community-radio',
|
|
name: 'Community radio',
|
|
description: 'Opptak, podcast, chat og avstemninger',
|
|
icon: '📻',
|
|
traits: {
|
|
recording: {},
|
|
podcast: {},
|
|
chat: {},
|
|
polls: {},
|
|
membership: {},
|
|
clips: {},
|
|
playlist: {},
|
|
},
|
|
},
|
|
{
|
|
id: 'bokmerke-vegg',
|
|
name: 'Bokmerke-vegg',
|
|
description: 'Kuraterte lenker med tags og kommentarer',
|
|
icon: '🔖',
|
|
traits: {
|
|
bookmarks: {},
|
|
tags: {},
|
|
publishing: {},
|
|
rss: {},
|
|
comments: {},
|
|
},
|
|
},
|
|
{
|
|
id: 'redaksjon',
|
|
name: 'Redaksjon',
|
|
description: 'Redaksjonelt arbeid med chat, kanban og kalender',
|
|
icon: '🗞️',
|
|
traits: {
|
|
chat: {},
|
|
kanban: {},
|
|
calendar: {},
|
|
editor: { preset: 'longform' },
|
|
knowledge_graph: {},
|
|
guest_input: {},
|
|
},
|
|
},
|
|
];
|