Komponenter
Chattklienten
Pratar med en chattplattform: delegerad inloggning, läsa och skicka, Markdown till plattformens märkspråk. Vet ingenting om valv.

Den här komponenten står på sidan av ett skäl som är lätt att missa: den vet ingenting om resten av det här.
Den vet inte vad ett valv är. Den har aldrig hört talas om ett manifest, en uppgiftsliggare eller en mappkonfiguration. Den loggar in för användarens räkning, läser de samtal användaren redan tillhör, skickar ett meddelande och konverterar Markdown till vad plattformen nu talar.
Varför det gör den till en egen komponent i stället för en del av instrumentpanelen
För att alternativet var sämre. Att vika in en chattklient i ytan som använder den betyder att varje framtida anropare antingen dubblerar integrationen eller importerar instrumentpanelen för att komma åt den. Att hålla den okunnig håller den återanvändbar: den är ett beroende för valvmedveten kod, inte en instans av den.
Det är också gränsen där nyckeln bor. Autentiseringen är delegerad — användaren loggar in själv, och token hålls av plattformens egen mekanism i stället för att kopieras in i en konfigurationsfil. En komponent som lånar en befintlig inloggning är en komponent som inte lägger till en till sak att rotera.
Den här delen är inte publicerad
Det är ett bibliotek och ett kommandoradsverktyg i ett privat repo. Det som går att ta med är formen: håll integrationen okunnig om din domän, delegera inloggningen, och låt översättningen mellan ditt format och deras bo på exakt ett ställe.
Deklarerat i kontraktet Inte publicerad
- Sort
- library plus CLI
- Roll
- Talks to a chat platform: delegated auth, read and send messages, Markdown to the platform's markup
- Läser
-
chats the signed-in user belongs to
- Skriver
-
<venture>/.teamschats/ — the archive, the one implementation today<venture>/.teamschats/_fetch.json — the fetch record (CR-088)chat messages
- Beror på
-
- an auth library
- an HTTP library
- Dokumentationen hör hemma i
- komponentens eget repo
Att veta. Knows nothing about vaults or manifests. A dependency of vault-aware code, not an instance of it — which is why it is its own component rather than part of the dashboard. ONE ROLE, SEVERAL IMPLEMENTATIONS (CR-081): the archive is a pattern, <venture>/.<provider>chats/, and .teamschats/ is one instance of it that does not move. A new channel names its provider in its folder (CR-068's rule, applied forward) instead of inventing a generic name. external_systems.chats stays generic: the config key names a class of system, the path names a writer. OPEN, deliberately: whether a personal channel (SMS, iMessage) sits per venture or per person — to be settled by a real case, not in advance
Citerat ur kontraktet, som är engelskt. Ett citat i original kan inte drifta från sin källa; en översättning här hade blivit en andra kopia att hålla sann.
Ur ecosystem.yaml, kontrakt 41 · core-skills 1.89.4 · läst vid bygge 2026-10-08