- Rollebasert arv: edge-roller styrer trait-synlighet per bruker (deltaker ser mikser, lytter ser bare chat) - Mine ting: oversiktspanel i Hjem, dra node inn i verktøy for å koble dem (erstatter mottak som panel) - Chat-merging: dra chat oppå chat → live flettet visning eller snapshot med AI-beriking og brukerprompt Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
4.6 KiB
Proposal: Chat-merging og adapter-visninger
Konsept
Dra én chat oppå en annen for å lage en flettet visning. Originalkildene lever videre uendret. To moduser: live abonnement eller snapshot. AI-beriking som naturlig forlengelse.
Motivasjon
Informasjon er spredt over flere samtaler. En redaksjon har en planleggingschat, en research-chat og en teknisk chat. Når du trenger en helhetlig oversikt over hva som er besluttet må du lese alle tre. Chat-merging gir deg det i én visning.
Interaksjon
Dra chat oppå chat (drag-and-drop):
1. Bruker drar "Planlegging"-noden fra Mine ting
2. Slipper den på "Research"-chatten (åpent panel)
3. Dialog: "Flett samtaler?"
→ [Abonner (live)] [Snapshot] [Avbryt]
4a. Abonner: flettet visning oppdateres i sanntid
4b. Snapshot: ny node med fryst, flettet innhold
Med brukerprompt (AI-beriking):
3. Dialog: "Flett samtaler?"
[Brukerprompt: "Oppsummer hva vi har besluttet om episodetemaet"]
→ [Kjør] [Avbryt]
4. AI leser begge chatter, genererer oppsummering
5. Ny innholds-node med source_material-edges til begge chatter
Moduser
Live abonnement (adapter)
En visning som abonnerer på to eller flere kommunikasjonsnoder. Meldinger flettes kronologisk med kanalmarkør.
┌─ Flettet: Planlegging + Research ──┐
│ │
│ [Planlegging] Vegard 10:03 │
│ Vi bør ta klimatilpasning │
│ │
│ [Research] Trond 10:15 │
│ Fant en god kilde om flom i Oslo │
│ │
│ [Planlegging] Arne 10:22 │
│ Enig, passer med forrige episode │
│ │
│ [Research] Vegard 10:30 │
│ Denne rapporten er gull: ... │
└─────────────────────────────────────┘
Teknisk:
- Ikke en ny node-type — det er en visning (query)
- Chat-panelet mottar en liste av node_ids i stedet for én
- WebSocket abonnerer på alle kilde-chattene
- Meldinger sorteres kronologisk fra alle kilder
- Kanalmarkør viser opprinnelse
Kan lagres som bruker-preferanse (hvilke chatter er flettet) eller som en edge-konfigurasjon.
Snapshot
En fryst kopi av flettede meldinger som ny innholds-node.
snapshot_node (node_kind: 'content')
├── source_material-edge → Chat A
├── source_material-edge → Chat B
└── metadata: { merged_at: "2026-03-19T...", source_count: 2 }
Innholdet er ren tekst med meldingene, formatert med avsender/tidspunkt/kanal. Kan redigeres etterpå.
AI-beriking
Utvidelse av snapshot med AI-prosessering:
1. Hent meldinger fra alle kilde-chatter
2. Send til LLM med brukerens prompt
3. Opprett innholds-node med AI-output
4. source_material-edges tilbake til kildene
5. processed_by-edge til AI-preset som ble brukt
Prompter kan være:
- "Oppsummer beslutningene"
- "Lag en handlingsplan basert på diskusjonen"
- "Hva er vi uenige om?"
- "Skriv et møtereferat"
- Egendefinert fritekst
Ikke-destruktivt
Originalkildene endres aldri. Merging er alltid:
- En visning (live) — ingen ny data
- En ny node (snapshot) — med edges tilbake
- Kildene lever videre uavhengig
Utvidelser
Mer enn to kilder: Dra flere chatter inn — visningen fletter alle kronologisk.
Filtrering i flettet visning: Vis kun meldinger fra én person, eller søk på tvers av alle kildene.
Automatisk merging via orkestrering: "Hver fredag, flett ukens chatter og lag et sammendrag."
Teknisk implementering
Live adapter
Utvid ChatTrait til å akseptere contextIds: string[] i
tillegg til contextId: string. Når flere IDs er gitt:
- Abonner på alle via WebSocket
- Flett meldinger kronologisk i visningen
- Vis kanalmarkør per melding
Snapshot
Ny intensjon merge_chats:
POST /intentions/merge_chats
{
source_ids: ["chat-a-id", "chat-b-id"],
mode: "snapshot" | "ai",
prompt?: "Oppsummer beslutningene"
}
Returnerer { node_id: "snapshot-id" }.
Drop-target
ChatTrait sin BlockReceiver utvides til å akseptere kommunikasjonsnoder. Når en chat droppes på en åpen chat:
- Vis dialog med valg (abonner/snapshot/AI)
- Utfør valgt handling
Hva som eksisterer allerede
- Chat-visning med meldinger fra WebSocket (✓)
- Drag-and-drop mellom paneler (✓)
- BlockReceiver i ChatTrait (✓)
- source_material-edges (✓)
- AI-prosessering via synops-ai (✓)
- Orkestrering (✓)
Hovedsakelig utvidelse av ChatTrait + ny intensjon i maskinrommet.