feat: integrate learning module
This commit is contained in:
@@ -18,6 +18,13 @@ import {
|
||||
lockAdminSession,
|
||||
verifyAdminPassword,
|
||||
} from './admin-access';
|
||||
import { createLearningCourseLibrary } from '../services/learning-course-library';
|
||||
import { getLearningPlayerServer } from '../services/learning-player-server';
|
||||
import { createLearningAgentClient, type LearningAgentRequest } from '../services/learning-agent-client';
|
||||
import { createLearningSpeechClient, type LearningSpeechRequest } from '../services/learning-speech-client';
|
||||
import { createLearningGenerationClient } from '../services/learning-generation-client';
|
||||
import { createLearningRuntimeBridge } from '../services/learning-runtime-bridge';
|
||||
import type { LearningGenerationUploadRequest, LearningRuntimeBridgeRequest } from '../../shared/learning';
|
||||
|
||||
type UnifiedRequest = {
|
||||
id?: string;
|
||||
@@ -245,6 +252,26 @@ export function registerIpcHandlers(
|
||||
): void {
|
||||
registerHostApiProxyHandlers();
|
||||
registerTranscriptExportHandler(mainWindow);
|
||||
const learningCourseLibrary = createLearningCourseLibrary({ rootDirectory: app.getPath('userData') });
|
||||
const learningAgentClient = createLearningAgentClient();
|
||||
const learningSpeechClient = createLearningSpeechClient();
|
||||
const learningGenerationClient = createLearningGenerationClient();
|
||||
const learningRuntimeBridge = createLearningRuntimeBridge();
|
||||
|
||||
ipcMain.handle('learning:startGeneration', (_event, request: LearningGenerationUploadRequest) => learningGenerationClient.start(request));
|
||||
ipcMain.handle('learning:download', (_event, courseId: string) => learningCourseLibrary.download(courseId));
|
||||
ipcMain.handle('learning:listInstalled', () => learningCourseLibrary.listInstalled());
|
||||
ipcMain.handle('learning:readClassroom', (_event, courseId: string, moduleId?: string) => learningCourseLibrary.readClassroom(courseId, moduleId));
|
||||
ipcMain.handle('learning:playerUrl', async () => (await getLearningPlayerServer()).url);
|
||||
ipcMain.handle('learning:agentAsk', (_event, request: LearningAgentRequest) => learningAgentClient.ask(request));
|
||||
ipcMain.handle('learning:agentReset', (_event, courseId?: string, contentHash?: string) => learningAgentClient.reset(courseId, contentHash));
|
||||
ipcMain.handle('learning:transcribe', (_event, request: LearningSpeechRequest) => learningSpeechClient.transcribe(request));
|
||||
ipcMain.handle('learning:runtimeRequest', (event, request: LearningRuntimeBridgeRequest) => learningRuntimeBridge.request(
|
||||
request,
|
||||
(payload) => {
|
||||
if (!event.sender.isDestroyed()) event.sender.send('learning:runtime-event', payload);
|
||||
},
|
||||
));
|
||||
|
||||
ipcMain.handle('app:request', async (_event, request: UnifiedRequest) => (
|
||||
handleUnifiedRequest(request, opencodeManager)
|
||||
|
||||
Reference in New Issue
Block a user