feat(course-format): markdown extraction, discovery, loading, repository
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
7a68800f6f
commit
c78c7ec8d8
7 files changed
+558
-2
No files matched your search
@@ -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;
|
||||
|
||||
Reference in new issue
Block a user