Automatiseringer
Automatiseringer kører en instruktion efter en tidsplan og leverer resultatet som en almindelig chatsession. En daglig nyhedsoversigt, ugentlig gennemgang eller månedsrapport kører uden brugerflade på serveren, vises i chatlisten og kan åbnes og fortsættes som enhver anden samtale.
Opbygning
En automatisering har et navn, fritekstinstruktioner, en eller flere udløsere, en valgfri model (tomt betyder Auto: din standardmodel på kørselstidspunktet), et kørselsmål og en notifikationsindstilling. Målet bestemmer resultatet: Chat session (standard) sætter instruktionen i kø som en samtale, mens Work task starter en isoleret Work-sandbox med instruktionen som første besked og eventuelt en navngiven Work-policy. Med notifikationer aktiveret vises mislykkede kørsler også i notifikationsindbakken. Navne og instruktioner krypteres i hvile. Hver automatisering tilhører den bruger, der oprettede den.
Udløsere genbruger kalenderens model – once, hourly, daily, weekly, monthly, yearly – og en automatisering kan have op til fem. Næste kørsel er den tidligste kommende forekomst blandt alle udløsere, beregnet i serverens lokale tidszone.
Udførelse
En scheduler-tick kører hvert minut bag en koordineringslease, så præcis én replika flytter tidsplanerne. Når en automatisering forfalder, registrerer tick'et en kørsel, sætter et vedvarende automation.run.v1-job i kø og flytter next_run_at med compare-and-set, så hver forekomst udløses højst én gang. Jobbet opretter en chatsession med automatiseringens navn og køer instruktionen gennem samme vedvarende chatpipeline som andre samtaler, inklusive udbyderrute, personastandarder og lagring.
Hvis serveren var nede, kører næste tick den seneste forfaldne forekomst én gang og springer ældre tider over. Pause rydder tidsplanen; genoptagelse eller redigering beregner den igen fra nu. Sletning fjerner kørselsloggen gennem en foreign-key cascade.
Kørsler afgøres fra den vedvarende joblog: succes når chatgenereringen er afsluttet, fejl når et job dead-lettered, og fejl som stalled hvis en køet kørsel ikke starter inden for 30 minutter.
Work-kørsler bruger Work-livscyklussen i stedet for chatjobbet. Kørslen registrerer opgaven og linker til den, lykkes når agenten afslutter eller stopper for at bede om input og mislykkes ved fejl eller annullering. Work-adgang håndhæves, når tidsplanen udløses; tilbagekaldt adgang giver work-access-denied. En valgt policy valideres ved lagring, og dens netværks- og ressourcegrænser gælder alle opgaver. Kun direkte modeludbydere kører i Work, og modellen skal understøtte værktøjer.
Agentrutiner
En Work-automatisering kan bindes til en eksisterende Work-opgave via workTaskId, som bruges af Routines på agentens detaljepanel. Hver forekomst starter en kørsel i opgavens eksisterende arbejdsområde og samtale med dens model, udbyder og runtime-policy; automatiseringens model- og policyfelter gælder ikke. Bindingen valideres ved lagring. En slettet opgave giver work-task-missing; en opgave, der allerede kører eller har en aktiv preview, giver work-task-busy i stedet for at blive køet.
Webhook-udløsere
Ud over tidsplanen kan en automatisering udløses af et eksternt system — en CI-pipeline, en cron-tjeneste, husautomation. I automatiseringens redigeringsdialog genererer Webhook trigger → Enable en hemmelighed pr. automatisering; kun dens SHA-256 gemmes, så klarteksten vises præcis én gang. Rotation af hemmeligheden ugyldiggør den forrige med det samme, og deaktivering af webhooken lukker endpointet igen.
Det eksterne system udløser automatiseringen med:
curl -X POST https://your-host/api/automations/<automationId>/webhook \
-H "Authorization: Bearer lwh_..."
(X-Libre-Webhook-Secret: lwh_... fungerer som alternativ header.) Svaret er 202 med id'et på den køede kørsel — den samme manuelle kørselssti som Run now, så kørsler afgøres, notificerer og vises i historikken på nøjagtig samme måde. Sammenligningen af hemmeligheden er konstant tid, en manglende automatisering og en forkert hemmelighed svarer ens (intet orakel for automatiserings-id), og en automatisering på pause svarer 409: i modsætning til ejerens Run now kan en ekstern kalder ikke udløse hen over en pause.
API
Alle endpoints undtagen webhook-udløsningen kræver autentificering og virker kun på kalderens egne automatiseringer; webhook-udløsningen autentificerer i stedet med hemmeligheden pr. automatisering.
| Metode | Sti | Formål |
|---|---|---|
GET | /api/automations | Vis automatiseringer |
POST | /api/automations | Opret en automatisering |
GET | /api/automations/occurrences?from=&to= | Beregnede kommende forekomster |
GET | /api/automations/runs | Kørselslog (kan filtreres) |
GET | /api/automations/runs/summary | Usynligt antal + 30-dages grupper |
POST | /api/automations/runs/seen | Markér afsluttede kørsler som set |
GET | /api/automations/:automationId | Læs én automatisering |
PUT | /api/automations/:automationId | Opdater en automatisering |
DELETE | /api/automations/:automationId | Slet en automatisering |
POST | /api/automations/:automationId/pause | Sæt tidsplanen på pause |
POST | /api/automations/:automationId/resume | Genoptag tidsplanen |
POST | /api/automations/:automationId/run | Kør nu (202 med kørsels-id) |
POST | /api/automations/:automationId/webhook | Udløs via hemmelighed (202) |
POST | /api/automations/:automationId/webhook-secret | Opret/rotér hemmeligheden |
DELETE | /api/automations/:automationId/webhook-secret | Deaktivér webhooken |
En bruger kan have op til 50 automatiseringer. Navne er begrænset til 200 tegn og instruktioner til 20.000.