import type { ManagedReasoningChoice } from './managed-model-capabilities'; import type { PublicUsage } from './coding-conversation-contracts'; export interface TeacherDefinition { schema_version: 1; teacher_id: 'coding-teacher'; name: string; description: string; avatar_id: string; welcome_message: string; suggested_questions: string[]; system_prompt: string; skills: Array<{ id: string; name: string; description: string; instructions_markdown: string; enabled: boolean; }>; model: { model_id: string | null; reasoning_choice: ManagedReasoningChoice }; limits: { max_input_tokens: number; max_output_tokens: number }; } export interface TeacherAvailability { enabled: boolean; published_version: number | null; revision: number; } export interface TeacherReference { kind: 'message' | 'code'; text: string; messageId?: string; path?: string; startLine?: number; } export interface TeacherSourceMessage { id: string; role: 'user' | 'assistant'; text: string; } export interface TeacherSourceContext { messages: TeacherSourceMessage[]; cursor: { workerGeneration: number; seq: number; leafEntryId?: string }; capturedAt: string; } export type TeacherRequestStatus = | 'preparing' | 'running' | 'completed' | 'failed' | 'cancelled' | 'interrupted'; export interface TeacherRequest { id: string; text: string; references: TeacherReference[]; createdAt: string; sourceCursor: TeacherSourceContext['cursor']; sourceCapturedAt: string; includedSourceMessageIds: string[]; omittedMessages: number; status: TeacherRequestStatus; response: string; error?: string; usage?: PublicUsage; } export interface TeacherTopic { revision: number; schemaVersion: 1; id: string; accountId: string; projectId: string; sourceConversationId: string; version: number; draftRevision?: number; definition: TeacherDefinition; createdAt: string; updatedAt: string; requests: TeacherRequest[]; unsaved?: boolean; } export interface TeacherTopicList { items: Array<{ id: string; title: string; updatedAt: string; version: number }>; lastSelectedTopicId: string | null; } export interface TeacherSend { requestId: string; text: string; references?: TeacherReference[]; }