feat: HLS streaming, transcripts, agent course generation & landing-page course previews (#663)

New features:
- HLS video encoding/streaming (hls routes, hls-encoder) and a media
  transcripts pipeline (transcripts route + media-transcript queries)
- AI assistant chat vs. run model: agent-course-generation worker/queue,
  run-monitor pane, chat-changes card, content ask-ai bar
- Per-theme course-page previews across org landing-page themes (bold,
  classic, corporate, editorial, etc.) with a shared course token/component set
- View-as-student mode and login-link / link-invite invite flows

Refactor:
- Extract packages/core consolidating config (env, storage, dashboard-url),
  services and utils previously duplicated under apps/api/src/config
- Remove legacy agent service modules (chat-tools, chat-context,
  context-window, document, fetch-url, lesson-content)
- Relax Cross-Origin-Resource-Policy to allow cross-origin media embedding
- Add format script to tenant-router so turbo run format covers it
This commit is contained in:
Rotimi Best
2026-06-07 18:43:05 +01:00
committed by GitHub
parent a2e70779a0
commit d5b07d356e
496 changed files with 19050 additions and 8312 deletions
-52
View File
@@ -10,61 +10,9 @@
<link rel="icon" type="image/png" sizes="32x32" href="/logo-32.png" />
%sveltekit.head%
<style id="app-loading-styles">
#app-loading-indicator {
position: fixed;
inset: 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
background: #fff;
z-index: 99999;
}
#app-loading-indicator .spinner {
width: 3.5rem;
height: 3.5rem;
color: #1d4ed8;
animation: app-loading-spin 1s linear infinite;
}
@keyframes app-loading-spin {
to {
transform: rotate(360deg);
}
}
#app-loading-indicator p {
margin-top: 16px;
color: #6b7280;
font-family: system-ui, sans-serif;
}
</style>
</head>
<body data-sveltekit-preload-data="hover" class="">
<div id="app-loading-indicator">
<svg
class="spinner"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
role="status"
aria-label="Loading"
>
<path d="M12 2v4" />
<path d="m16.2 7.8 2.9-2.9" />
<path d="M18 12h4" />
<path d="m16.2 16.2 2.9 2.9" />
<path d="M12 18v4" />
<path d="m4.9 19.1 2.9-2.9" />
<path d="M2 12h4" />
<path d="m4.9 4.9 2.9 2.9" />
</svg>
<p>Loading...</p>
</div>
<div style="display: contents" class="theme-container">%sveltekit.body%</div>
</body>
</html>