Includes fixes found while reviewing the app: - Results: open each result by a type+agent+id key, so a video and a material draft with the same id no longer open each other's popup - AuthGate: clear the query cache during render, before pages build their queries, and remount pages on organization switch (pages no longer stay on skeletons for up to a minute after sign-in or refresh) - Instruction: keep only failed rules after a partial approve, so retrying does not create the successful schedules twice; drop the monthly note once count or frequency is edited - Parser/schedules: never schedule a count below one - Audio: ignore the end event of a cancelled utterance when changing speed - Downloads: revoke the object URL later so Safari/Firefox can read it - Results: refetch SCORM content when any part's revision changes; show a failed video as failed instead of "still rendering" Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Learning Lab Express
UI fase development (index.html, satu file, tanpa dependensi) dengan desain yang sama dengan mockup.html (CSS dipakai apa adanya) tetapi isi/alurnya memakai data engine yang terhubung ke engine learning-lab (FastAPI, /api/v1).
# 1. jalankan engine di ../learning-lab (docker compose up) → http://localhost:8000
# 2. jalankan Express
node server.mjs # http://localhost:3000 ; ENGINE_URL / PORT dapat diubah
server.mjs menyajikan file statis dan mem-proxy /api/* ke engine (tanpa CORS).
engine.js adalah client engine.
| Alur | Engine |
|---|---|
| Login / logout / refresh token | /auth/login, /auth/refresh, /auth/logout |
| Upload materi → Brain | /upload/, /upload/list, DELETE /upload/{id} |
| Knowledge base (Brain) | /upload/{id}/knowledge/build (memakai kredit workspace) |
| Login Clerk (akun organisasi) | clerk-js dari instance Clerk milik engine (key dibaca dari ../learning-lab/backend/.env, atau CLERK_PUBLISHABLE_KEY) |
| Riset konten | agen "Learning Lab Express" di /organizations/current/agents → runs → source-drafts |
| Jadwal riset | PATCH agents/{id} run_schedule (harian/mingguan; bulanan & hari kerja dijalankan harian) |
| Generate Text | /compose/sets + /compose/sets/{id}/generate/summary |
Agents API hanya berjalan dalam konteks organisasi, jadi riset dan jadwal memerlukan tombol Masuk dengan Clerk dengan akun yang menjadi owner organisasi. Dengan login email/password biasa, riset tetap simulasi.
Agen dibuat otomatis (budget 50 kredit/run, 1000/bulan; ubah di Engine.ensureAgent).
Belum ada: video, audio, dan SCORM. Hanya format yang didukung engine yang bisa diunggah.