Files
classroomio/packages/ai-assistant/src/tools/index.ts
T

93 lines
2.8 KiB
TypeScript

import { AgentRole, ToolName } from '../types';
import type { ZodType } from 'zod';
import { getCourseStructureSchema, getLessonContentSchema, getExerciseDetailsSchema } from './shared';
import {
createSectionSchema,
updateSectionSchema,
createLessonSchema,
updateLessonSchema,
updateLessonContentSchema,
createExerciseSchema,
createExerciseSectionSchema,
updateExerciseSchema,
updateExerciseSectionSchema,
addQuestionsSchema,
updateQuestionsSchema,
updateCourseLandingPageSchema,
checkCourseGoLiveReadinessSchema,
goLiveCourseSchema,
generateCoursePlanSchema
} from './teacher';
export type ToolSchema = {
description: string;
parameters: ZodType;
};
type ToolRegistry = Record<string, ToolSchema>;
const sharedTools: ToolRegistry = {
[ToolName.GET_COURSE_STRUCTURE]: getCourseStructureSchema,
[ToolName.GET_LESSON_CONTENT]: getLessonContentSchema,
[ToolName.GET_EXERCISE_DETAILS]: getExerciseDetailsSchema
};
const teacherTools: ToolRegistry = {
[ToolName.CREATE_SECTION]: createSectionSchema,
[ToolName.UPDATE_SECTION]: updateSectionSchema,
[ToolName.CREATE_LESSON]: createLessonSchema,
[ToolName.UPDATE_LESSON]: updateLessonSchema,
[ToolName.UPDATE_LESSON_CONTENT]: updateLessonContentSchema,
[ToolName.CREATE_EXERCISE]: createExerciseSchema,
[ToolName.CREATE_EXERCISE_SECTION]: createExerciseSectionSchema,
[ToolName.UPDATE_EXERCISE]: updateExerciseSchema,
[ToolName.UPDATE_EXERCISE_SECTION]: updateExerciseSectionSchema,
[ToolName.ADD_QUESTIONS]: addQuestionsSchema,
[ToolName.UPDATE_QUESTIONS]: updateQuestionsSchema,
[ToolName.UPDATE_COURSE_LANDING_PAGE]: updateCourseLandingPageSchema,
[ToolName.CHECK_COURSE_GO_LIVE_READINESS]: checkCourseGoLiveReadinessSchema,
[ToolName.GO_LIVE_COURSE]: goLiveCourseSchema,
[ToolName.GENERATE_COURSE_PLAN]: generateCoursePlanSchema
};
// v2: student tools will be added here
const studentTools: ToolRegistry = {};
/**
* Returns tool schemas available for a given role.
* Teachers get shared + teacher tools.
* Students get shared + student tools (v2).
*/
export function getToolSchemas(role: AgentRole): ToolRegistry {
switch (role) {
case AgentRole.TEACHER:
return { ...sharedTools, ...teacherTools };
case AgentRole.STUDENT:
return { ...sharedTools, ...studentTools };
default:
return sharedTools;
}
}
// Re-export individual schemas for direct access
export {
getCourseStructureSchema,
getLessonContentSchema,
getExerciseDetailsSchema,
createSectionSchema,
updateSectionSchema,
createLessonSchema,
updateLessonSchema,
updateLessonContentSchema,
createExerciseSchema,
createExerciseSectionSchema,
updateExerciseSchema,
updateExerciseSectionSchema,
addQuestionsSchema,
updateQuestionsSchema,
updateCourseLandingPageSchema,
checkCourseGoLiveReadinessSchema,
goLiveCourseSchema,
generateCoursePlanSchema
};