Merge Yuxi teacher support with classroom discussions
Some checks failed
Electron E2E / Electron E2E (macos-latest) (push) Has been cancelled
Electron E2E / Electron E2E (ubuntu-latest) (push) Has been cancelled
Electron E2E / Electron E2E (windows-latest) (push) Has been cancelled

This commit is contained in:
鲨鱼辣椒
2026-09-24 10:27:36 +08:00
34 changed files with 2333 additions and 105 deletions

View File

@@ -1,5 +1,4 @@
import type { TeacherDiscussion, TeacherDiscussionContent } from './teacher-discussion';
import type { ManagedReasoningChoice } from './managed-model-capabilities';
import type { PublicUsage } from './coding-conversation-contracts';
export type ConsultationRole = 'teacher' | 'friend';
@@ -8,6 +7,9 @@ export const TEACHER_UNCHANGED_CHECK_IN_INTERVAL_MS = 15 * 60 * 1000;
export type TeacherRequestIntent = 'question' | 'suggestions' | 'guided-help' | 'check-in';
export interface TeacherDefinition {
config_id?: string;
runtime?: 'local' | 'yuxi';
yuxi?: { agent_slug: string; agent_version: number };
schema_version: 1;
teacher_id: 'coding-teacher' | 'coding-friend';
name: string;
@@ -23,7 +25,12 @@ export interface TeacherDefinition {
instructions_markdown: string;
enabled: boolean;
}>;
model: { model_id: string | null; reasoning_choice: ManagedReasoningChoice };
model: {
model_id: string | null;
reasoning_choice:
| { mode: 'default' | 'disabled'; effort?: null }
| { mode: 'enabled'; effort?: string | null };
};
limits: { max_input_tokens: number; max_output_tokens: number };
}
export interface TeacherAvailability {
@@ -31,6 +38,9 @@ export interface TeacherAvailability {
published_version: number | null;
revision: number;
}
export interface TeacherCatalog {
items: Array<{ teacher_id: string; version: number; definition: TeacherDefinition; is_default: boolean }>;
}
export interface TeacherReference {
kind: 'message' | 'code';
text: string;
@@ -85,11 +95,14 @@ export interface TeacherRequest {
sourceCapturedAt: string;
includedSourceMessageIds: string[];
omittedMessages: number;
truncatedMessages?: number;
status: TeacherRequestStatus;
response: string;
suggestedQuestions?: string[];
error?: string;
usage?: PublicUsage;
cloudRequestId?: string;
progress?: string;
}
export interface TeacherTopic {
discussion?: TeacherDiscussion;