feat: widgets and ai chat

This commit is contained in:
Rotimi Best
2026-04-27 11:40:38 +01:00
parent ae1801f85f
commit 5717dd8004
391 changed files with 28177 additions and 22467 deletions
+8 -8
View File
@@ -1,3 +1,9 @@
import type {
TAutomationCourseTagAssignment,
TAutomationDraftTagAssignment,
TAutomationDraftTagParam
} from '@cio/utils/validation/tag';
import type { TCourseContentReorder, TCourseLandingPageUpdate, TCourseUpdateParam } from '@cio/utils/validation/course';
import type {
TCourseImportCourseParam,
TCourseImportDraftCreate,
@@ -6,7 +12,6 @@ import type {
TCourseImportDraftPublishToCourse,
TCourseImportDraftUpdate
} from '@cio/utils/validation/course-import';
import type { TCourseContentReorder, TCourseLandingPageUpdate, TCourseUpdateParam } from '@cio/utils/validation/course';
import type {
TExerciseCreate,
TExerciseFromTemplate,
@@ -14,14 +19,9 @@ import type {
TExerciseListQuery,
TExerciseUpdate
} from '@cio/utils/validation/exercise';
import type { TGetOrganizationCoursesQuery } from '@cio/utils/validation/organization';
import type {
TAutomationCourseTagAssignment,
TAutomationDraftTagAssignment,
TAutomationDraftTagParam
} from '@cio/utils/validation/tag';
import type { McpServerConfig } from './config.js';
import type { McpServerConfig } from './config';
import type { TGetOrganizationCoursesQuery } from '@cio/utils/validation/organization';
type ApiSuccess<T> = {
success: true;
+4 -4
View File
@@ -1,9 +1,9 @@
import { ClassroomIoApiClient, ClassroomIoApiError } from './api-client';
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { ClassroomIoApiClient, ClassroomIoApiError } from './api-client.js';
import { getConfig } from './config.js';
import { registerCourseDraftTools } from './tools/course-drafts.js';
import { getConfig } from './config';
import { registerCourseDraftTools } from './tools/course-drafts';
async function main() {
const config = getConfig();
+27 -20
View File
@@ -3,7 +3,21 @@ import {
ZAutomationDraftTagAssignment,
ZAutomationDraftTagParam
} from '@cio/utils/validation/tag';
import { ZGetOrganizationCoursesQuery } from '@cio/utils/validation/organization';
import {
ZCourseContentReorder,
ZCourseContentReorderBase,
ZCourseLandingPageUpdate
} from '@cio/utils/validation/course';
import {
ZCourseImportCourseParam,
ZCourseImportDraftCreate,
ZCourseImportDraftCreateFromCourse,
ZCourseImportDraftGetParam,
ZCourseImportDraftPublishBase,
ZCourseImportDraftPublishToCourse,
ZCourseImportDraftPublishToCourseBase,
ZCourseImportDraftUpdate
} from '@cio/utils/validation/course-import';
import {
ZExerciseCreate,
ZExerciseFromTemplate,
@@ -11,24 +25,11 @@ import {
ZExerciseListQuery,
ZExerciseUpdate
} from '@cio/utils/validation/exercise';
import {
ZCourseImportCourseParam,
ZCourseImportDraftCreate,
ZCourseImportDraftCreateFromCourse,
ZCourseImportDraftGetParam,
ZCourseImportDraftPublish,
ZCourseImportDraftPublishToCourse,
ZCourseImportDraftUpdate
} from '@cio/utils/validation/course-import';
import {
ZCourseContentReorder,
ZCourseContentReorderBase,
ZCourseLandingPageUpdate
} from '@cio/utils/validation/course';
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import type { ZodRawShapeCompat } from '@modelcontextprotocol/sdk/server/zod-compat.js';
import type { ClassroomIoApiClient } from '../api-client.js';
import type { ClassroomIoApiClient } from '../api-client';
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
import { ZGetOrganizationCoursesQuery } from '@cio/utils/validation/organization';
import type { ZodRawShapeCompat } from '@modelcontextprotocol/sdk/server/zod-compat.js';
export const ZUpdateCourseDraftToolInput = ZCourseImportDraftUpdate.extend({
draftId: ZCourseImportDraftGetParam.shape.draftId
@@ -69,12 +70,18 @@ export const ZReorderCourseContentToolInput = ZCourseContentReorderBase.extend({
courseId: ZCourseImportCourseParam.shape.courseId
});
export const ZPublishCourseDraftToolInput = ZCourseImportDraftPublish.extend({
export const ZPublishCourseDraftToolInput = ZCourseImportDraftPublishBase.extend({
draftId: ZCourseImportDraftGetParam.shape.draftId
}).refine((data) => data.type !== 'COMPLIANCE' || data.compliance !== undefined, {
message: 'Compliance settings are required for COMPLIANCE courses',
path: ['compliance']
});
export const ZPublishCourseDraftToExistingCourseToolInput = ZCourseImportDraftPublishToCourse.extend({
export const ZPublishCourseDraftToExistingCourseToolInput = ZCourseImportDraftPublishToCourseBase.extend({
draftId: ZCourseImportDraftGetParam.shape.draftId
}).refine((data) => data.type !== 'COMPLIANCE' || data.compliance !== undefined, {
message: 'Compliance settings are required for COMPLIANCE courses',
path: ['compliance']
});
const createCourseDraftShape = ZCourseImportDraftCreate.shape as unknown as ZodRawShapeCompat;