feat(course-format): markdown extraction, discovery, loading, repository

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Lucas WintherandClaude Opus 5.5 committed 2026-10-30 02:51:26 +01:00
1 parent 7a68800f6f
commit c78c7ec8d8
7 files changed
+558 -2

No files matched your search

+2 -2
View File
@@ -1,3 +1,4 @@
import type { CourseRepository } from "@stc/course-format";
export type Role = "owner" | "author" | "learner";
export interface AuthUser { id: string; email: string; name: string; roles: Role[]; groups: string[] }
export interface RequestContext { user: AuthUser | null; params: Record<string, string>; url: URL }
@@ -13,9 +14,8 @@ export type JobStatus = "queued" | "running" | "done" | "failed";
export interface JobRecord { id: string; kind: string; status: JobStatus; progress: number; message: string | null; payload: unknown; result: unknown; error: string | null; createdAt: string; updatedAt: string }
export interface JobQueue { enqueue(kind: string, payload: unknown): Promise<string>; get(id: string): Promise<JobRecord | null>; list(kind?: string): Promise<JobRecord[]> }
export interface AuthService { userFromRequest(req: Request): Promise<AuthUser | null> }
// Placeholders until Task 4 (@stc/db) and Task 7 (@stc/course-format) exist; switch to the real imports in Task 7.
// Placeholder until Task 7 (@stc/db) exists.
type Db = unknown;
type CourseRepository = unknown;
export interface ServerContext {
config: AppConfig; db: Db; courses: CourseRepository;
jobs: JobQueue; auth: AuthService;