- Worker slår opp faktisk modellnavn (f.eks. google/gemini-2.5-flash-lite)
fra providers-tabellen og lagrer det i model_actual
- Stripper openrouter/gemini-prefiks for lesbarhet
- Tokenforbruk-tabellen bruker faste kolonnebredder for korrekt justering
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fjerner hardkodet «sidelinja/rutine» — henter alias dynamisk fra
ai_job_routing-tabellen slik at endringer i admin-grensesnittet
(alias-rename, ny ruting) fungerer uten å endre worker-kode.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Før: worker skrev body til både PG og SpacetimeDB (dobbelt-skriving),
og sync.rs skrev den samme endringen tilbake fra SpacetimeDB til PG.
Nå: worker skriver body-endring KUN til SpacetimeDB, sync.rs synker
til PG som vanlig. Worker skriver kun PG-only data direkte (metadata,
revisjoner, tokenforbruk).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
edit_message reducer forventer workspace_id og new_body,
ikke workspaceId og newBody. TypeScript SDK bruker camelCase,
men HTTP API-et bruker snake_case.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Frontend leser fra SpacetimeDB, men workeren skrev kun til PG.
Nå kalles edit_message-reduceren i SpacetimeDB etter vellykket
AI-behandling, slik at resultatet vises umiddelbart i chatten.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Uten nøkkelen returnerte LiteLLM 401, og AI-jobber feilet etter 3 forsøk.
Ny CLI-param --ai-gateway-key (env: AI_GATEWAY_KEY). dev.sh leser
LITELLM_MASTER_KEY fra .env.local og eksporterer som AI_GATEWAY_KEY.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Migrasjon 0007: ai_model_aliases, ai_model_providers, ai_job_routing, ai_usage_log
- Worker: token-logging fra AI Gateway-respons til ai_usage_log
- Config-generering: POST /api/admin/ai/generate-config bygger config.yaml fra PG
- Admin-panel /admin/ai: aliaser, leverandører, jobbruting, tokenforbruk
- CRUD API for aliaser, providers og routing
- Workspace-forbruk API: GET /api/ai/usage?days=30
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
messages-modus: hent de N nyeste trådene (sortert etter siste
aktivitet), inkludert alle svar. Ingen orphan-replies.
days-modus: finn alle tråder med minst én melding innenfor
tidsvinduet, last hele tråden (også eldre trådstartere).
all-modus: uendret, henter alt.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- channels.config får warmup_mode (all/messages/days/none) og warmup_value
- Migrasjon setter default til "all" for eksisterende kanaler
- Admin-side /admin/channels med oversikt og inline-redigering
- API PATCH /api/channels/:id/config for å oppdatere konfig
- Worker respekterer per-kanal konfig ved warmup
- Sidebar-lenke til kanaler-admin
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Admin-side for merge av duplikate entiteter med edge-migrering.
Entitetsside med inline redigering, slett, relasjoner og mentions.
AI text process worker-handler (fix_text, extract_facts, rewrite,
translate) med API-endepunkt som oppretter jobbkø-oppgaver.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>