@burdenoff/mcp-libs 2026.627.1 → 2026.627.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/modules/artistrybase/index.cjs +2112 -0
- package/dist/modules/artistrybase/index.cjs.map +1 -0
- package/dist/modules/artistrybase/index.d.cts +8 -0
- package/dist/modules/artistrybase/index.d.ts +8 -0
- package/dist/modules/artistrybase/index.js +2051 -0
- package/dist/modules/artistrybase/index.js.map +1 -0
- package/dist/modules/assethandler/index.cjs +1601 -0
- package/dist/modules/assethandler/index.cjs.map +1 -0
- package/dist/modules/assethandler/index.d.cts +8 -0
- package/dist/modules/assethandler/index.d.ts +8 -0
- package/dist/modules/assethandler/index.js +1540 -0
- package/dist/modules/assethandler/index.js.map +1 -0
- package/dist/modules/brainyrich/index.cjs +2148 -0
- package/dist/modules/brainyrich/index.cjs.map +1 -0
- package/dist/modules/brainyrich/index.d.cts +8 -0
- package/dist/modules/brainyrich/index.d.ts +8 -0
- package/dist/modules/brainyrich/index.js +2087 -0
- package/dist/modules/brainyrich/index.js.map +1 -0
- package/dist/modules/buildmyiq/index.cjs +1562 -0
- package/dist/modules/buildmyiq/index.cjs.map +1 -0
- package/dist/modules/buildmyiq/index.d.cts +8 -0
- package/dist/modules/buildmyiq/index.d.ts +8 -0
- package/dist/modules/buildmyiq/index.js +1501 -0
- package/dist/modules/buildmyiq/index.js.map +1 -0
- package/dist/modules/collabkin/index.cjs +1577 -0
- package/dist/modules/collabkin/index.cjs.map +1 -0
- package/dist/modules/collabkin/index.d.cts +8 -0
- package/dist/modules/collabkin/index.d.ts +8 -0
- package/dist/modules/collabkin/index.js +1516 -0
- package/dist/modules/collabkin/index.js.map +1 -0
- package/dist/modules/comradecircle/index.cjs +1817 -0
- package/dist/modules/comradecircle/index.cjs.map +1 -0
- package/dist/modules/comradecircle/index.d.cts +8 -0
- package/dist/modules/comradecircle/index.d.ts +8 -0
- package/dist/modules/comradecircle/index.js +1756 -0
- package/dist/modules/comradecircle/index.js.map +1 -0
- package/dist/modules/eventfullymanaged/index.cjs +3364 -0
- package/dist/modules/eventfullymanaged/index.cjs.map +1 -0
- package/dist/modules/eventfullymanaged/index.d.cts +8 -0
- package/dist/modules/eventfullymanaged/index.d.ts +8 -0
- package/dist/modules/eventfullymanaged/index.js +3303 -0
- package/dist/modules/eventfullymanaged/index.js.map +1 -0
- package/dist/modules/headshotmarketing/index.cjs +5031 -0
- package/dist/modules/headshotmarketing/index.cjs.map +1 -0
- package/dist/modules/headshotmarketing/index.d.cts +8 -0
- package/dist/modules/headshotmarketing/index.d.ts +8 -0
- package/dist/modules/headshotmarketing/index.js +4970 -0
- package/dist/modules/headshotmarketing/index.js.map +1 -0
- package/dist/modules/movethewheels/index.cjs +3915 -0
- package/dist/modules/movethewheels/index.cjs.map +1 -0
- package/dist/modules/movethewheels/index.d.cts +8 -0
- package/dist/modules/movethewheels/index.d.ts +8 -0
- package/dist/modules/movethewheels/index.js +3854 -0
- package/dist/modules/movethewheels/index.js.map +1 -0
- package/dist/modules/planmagnet/index.cjs +6171 -0
- package/dist/modules/planmagnet/index.cjs.map +1 -0
- package/dist/modules/planmagnet/index.d.cts +8 -0
- package/dist/modules/planmagnet/index.d.ts +8 -0
- package/dist/modules/planmagnet/index.js +6110 -0
- package/dist/modules/planmagnet/index.js.map +1 -0
- package/dist/modules/proserviceworld/index.cjs +1404 -0
- package/dist/modules/proserviceworld/index.cjs.map +1 -0
- package/dist/modules/proserviceworld/index.d.cts +8 -0
- package/dist/modules/proserviceworld/index.d.ts +8 -0
- package/dist/modules/proserviceworld/index.js +1343 -0
- package/dist/modules/proserviceworld/index.js.map +1 -0
- package/dist/modules/timecampus/index.cjs +6482 -0
- package/dist/modules/timecampus/index.cjs.map +1 -0
- package/dist/modules/timecampus/index.d.cts +8 -0
- package/dist/modules/timecampus/index.d.ts +8 -0
- package/dist/modules/timecampus/index.js +6421 -0
- package/dist/modules/timecampus/index.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/modules/buildmyiq/operations.ts","../../../src/modules/buildmyiq/tools/shared.ts","../../../src/modules/buildmyiq/tools/courses.ts","../../../src/modules/buildmyiq/tools/modules.ts","../../../src/modules/buildmyiq/tools/lessons.ts","../../../src/modules/buildmyiq/tools/skills.ts","../../../src/modules/buildmyiq/tools/enrollments.ts","../../../src/modules/buildmyiq/tools/cohorts.ts","../../../src/modules/buildmyiq/tools/certificates.ts","../../../src/modules/buildmyiq/tools/assessments.ts","../../../src/modules/buildmyiq/tools/submissions.ts","../../../src/modules/buildmyiq/tools/health.ts","../../../src/modules/buildmyiq/resources.ts","../../../src/modules/buildmyiq/prompts.ts","../../../src/modules/buildmyiq/index.ts"],"names":["z"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Centralized GraphQL operations for the BuildMyIQ MCP module.\n *\n * BuildMyIQ is the AI-native Education, Learning & Development platform —\n * the federated system of record for courses, modules, lessons, skills,\n * enrollments, lesson progress, cohorts, certificates, assessments,\n * questions, and submissions. Backend subgraph:\n * ~/products/wspace/buildmyiq/wspace-buildmyiq-svc/ (Hive service name `buildmyiq`).\n *\n * All operations run against the WORKSPACE gateway. Workspace scoping is\n * carried by the gateway headers (x-workspace-id / X-Workspace-Authorization)\n * issued by the auth module — BuildMyIQ inputs do NOT carry a workspaceId.\n *\n * Every product-owned root field is prefixed `bui` and every type/enum/input is\n * prefixed `Bui` (the workspaces-supergraph collision-avoidance contract); the\n * real names are used verbatim here. Uses template-string interpolation (not gql\n * tagged fragments) to match the canonical kadaikodi/vibecontrols modules.\n */\n\n// ---------------------------------------------------------------------------\n// Field fragments\n// ---------------------------------------------------------------------------\n\nexport const PAGE_INFO_FIELDS = `cursor hasMore`;\n\nexport const COURSE_FIELDS = `\n id title slug summary description level status language tags estimatedHours\n isPublic instructorId skillId publishedAt workspaceId createdAt updatedAt\n cover { id }\n`;\n\nexport const MODULE_FIELDS = `\n id courseId title description position workspaceId createdAt updatedAt\n`;\n\nexport const LESSON_FIELDS = `\n id courseId moduleId title type content durationMin isPreview position\n workspaceId createdAt updatedAt media { id }\n`;\n\nexport const SKILL_FIELDS = `\n id name description category isActive workspaceId createdAt updatedAt\n`;\n\nexport const ENROLLMENT_FIELDS = `\n id courseId learnerId cohortId status progressPct enrolledAt startedAt\n completedAt lastActiveAt expiresAt workspaceId createdAt updatedAt\n`;\n\nexport const LESSON_PROGRESS_FIELDS = `\n id enrollmentId lessonId status secondsSpent completedAt workspaceId\n createdAt updatedAt\n`;\n\nexport const COHORT_FIELDS = `\n id courseId name status capacity facilitatorId startDate endDate\n workspaceId createdAt updatedAt\n`;\n\nexport const CERTIFICATE_FIELDS = `\n id courseId enrollmentId learnerId serial status finalScore issuedAt\n expiresAt revokedAt workspaceId createdAt updatedAt file { id }\n`;\n\nexport const ASSESSMENT_FIELDS = `\n id courseId title description type status passingScore maxAttempts\n timeLimitMin isGraded workspaceId createdAt updatedAt\n`;\n\nexport const QUESTION_FIELDS = `\n id assessmentId type prompt options points position explanation\n workspaceId createdAt updatedAt\n`;\n\nexport const SUBMISSION_FIELDS = `\n id assessmentId enrollmentId learnerId attempt status answers score passed\n feedback gradedById gradedAt submittedAt workspaceId createdAt updatedAt\n`;\n\n// ---------------------------------------------------------------------------\n// Courses\n// ---------------------------------------------------------------------------\n\nexport const GET_COURSE = `\n query BuildmyiqGetCourse($id: ID!) {\n buiCourse(id: $id) {\n ${COURSE_FIELDS}\n skill { ${SKILL_FIELDS} }\n modules { ${MODULE_FIELDS} lessons { ${LESSON_FIELDS} } }\n lessons { ${LESSON_FIELDS} }\n }\n }\n`;\n\nexport const LIST_COURSES = `\n query BuildmyiqListCourses(\n $level: BuiCourseLevel\n $status: BuiCourseStatus\n $pagination: PaginationInput\n ) {\n buiListCourses(level: $level, status: $status, pagination: $pagination) {\n items { ${COURSE_FIELDS} }\n pageInfo { ${PAGE_INFO_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_COURSE = `\n mutation BuildmyiqCreateCourse($input: BuiCreateCourseInput!) {\n buiCreateCourse(input: $input) {\n ${COURSE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_COURSE = `\n mutation BuildmyiqUpdateCourse($id: ID!, $input: BuiUpdateCourseInput!) {\n buiUpdateCourse(id: $id, input: $input) {\n ${COURSE_FIELDS}\n }\n }\n`;\n\nexport const PUBLISH_COURSE = `\n mutation BuildmyiqPublishCourse($id: ID!) {\n buiPublishCourse(id: $id) {\n ${COURSE_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_COURSE = `\n mutation BuildmyiqArchiveCourse($id: ID!) {\n buiArchiveCourse(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Modules\n// ---------------------------------------------------------------------------\n\nexport const LIST_MODULES = `\n query BuildmyiqListModules($courseId: ID!) {\n buiListModules(courseId: $courseId) {\n ${MODULE_FIELDS}\n lessons { ${LESSON_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_MODULE = `\n mutation BuildmyiqCreateModule($input: BuiCreateModuleInput!) {\n buiCreateModule(input: $input) {\n ${MODULE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Lessons\n// ---------------------------------------------------------------------------\n\nexport const LIST_LESSONS = `\n query BuildmyiqListLessons($courseId: ID!, $moduleId: ID) {\n buiListLessons(courseId: $courseId, moduleId: $moduleId) {\n ${LESSON_FIELDS}\n }\n }\n`;\n\nexport const CREATE_LESSON = `\n mutation BuildmyiqCreateLesson($input: BuiCreateLessonInput!) {\n buiCreateLesson(input: $input) {\n ${LESSON_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Skills\n// ---------------------------------------------------------------------------\n\nexport const LIST_SKILLS = `\n query BuildmyiqListSkills($category: BuiSkillCategory) {\n buiListSkills(category: $category) {\n ${SKILL_FIELDS}\n }\n }\n`;\n\nexport const CREATE_SKILL = `\n mutation BuildmyiqCreateSkill($input: BuiCreateSkillInput!) {\n buiCreateSkill(input: $input) {\n ${SKILL_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Enrollments + lesson progress\n// ---------------------------------------------------------------------------\n\nexport const GET_ENROLLMENT = `\n query BuildmyiqGetEnrollment($id: ID!) {\n buiEnrollment(id: $id) {\n ${ENROLLMENT_FIELDS}\n cohort { ${COHORT_FIELDS} }\n lessonProgress { ${LESSON_PROGRESS_FIELDS} }\n }\n }\n`;\n\nexport const LIST_ENROLLMENTS = `\n query BuildmyiqListEnrollments(\n $courseId: ID\n $learnerId: ID\n $status: BuiEnrollmentStatus\n $pagination: PaginationInput\n ) {\n buiListEnrollments(\n courseId: $courseId\n learnerId: $learnerId\n status: $status\n pagination: $pagination\n ) {\n items { ${ENROLLMENT_FIELDS} }\n pageInfo { ${PAGE_INFO_FIELDS} }\n }\n }\n`;\n\nexport const ENROLL = `\n mutation BuildmyiqEnroll($input: BuiEnrollInput!) {\n buiEnroll(input: $input) {\n ${ENROLLMENT_FIELDS}\n }\n }\n`;\n\nexport const TRANSITION_ENROLLMENT = `\n mutation BuildmyiqTransitionEnrollment($id: ID!, $status: BuiEnrollmentStatus!) {\n buiTransitionEnrollment(id: $id, status: $status) {\n ${ENROLLMENT_FIELDS}\n }\n }\n`;\n\nexport const RECORD_LESSON_PROGRESS = `\n mutation BuildmyiqRecordLessonProgress($input: BuiRecordLessonProgressInput!) {\n buiRecordLessonProgress(input: $input) {\n ${LESSON_PROGRESS_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Cohorts\n// ---------------------------------------------------------------------------\n\nexport const LIST_COHORTS = `\n query BuildmyiqListCohorts($courseId: ID, $status: BuiCohortStatus) {\n buiListCohorts(courseId: $courseId, status: $status) {\n ${COHORT_FIELDS}\n }\n }\n`;\n\nexport const CREATE_COHORT = `\n mutation BuildmyiqCreateCohort($input: BuiCreateCohortInput!) {\n buiCreateCohort(input: $input) {\n ${COHORT_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Certificates\n// ---------------------------------------------------------------------------\n\nexport const LIST_CERTIFICATES = `\n query BuildmyiqListCertificates($courseId: ID, $learnerId: ID) {\n buiListCertificates(courseId: $courseId, learnerId: $learnerId) {\n ${CERTIFICATE_FIELDS}\n }\n }\n`;\n\nexport const ISSUE_CERTIFICATE = `\n mutation BuildmyiqIssueCertificate($input: BuiIssueCertificateInput!) {\n buiIssueCertificate(input: $input) {\n ${CERTIFICATE_FIELDS}\n }\n }\n`;\n\nexport const REVOKE_CERTIFICATE = `\n mutation BuildmyiqRevokeCertificate($id: ID!) {\n buiRevokeCertificate(id: $id) {\n ${CERTIFICATE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Assessments + questions\n// ---------------------------------------------------------------------------\n\nexport const GET_ASSESSMENT = `\n query BuildmyiqGetAssessment($id: ID!) {\n buiAssessment(id: $id) {\n ${ASSESSMENT_FIELDS}\n questions { ${QUESTION_FIELDS} }\n }\n }\n`;\n\nexport const LIST_ASSESSMENTS = `\n query BuildmyiqListAssessments($courseId: ID!, $status: BuiAssessmentStatus) {\n buiListAssessments(courseId: $courseId, status: $status) {\n ${ASSESSMENT_FIELDS}\n }\n }\n`;\n\nexport const CREATE_ASSESSMENT = `\n mutation BuildmyiqCreateAssessment($input: BuiCreateAssessmentInput!) {\n buiCreateAssessment(input: $input) {\n ${ASSESSMENT_FIELDS}\n }\n }\n`;\n\nexport const PUBLISH_ASSESSMENT = `\n mutation BuildmyiqPublishAssessment($id: ID!) {\n buiPublishAssessment(id: $id) {\n ${ASSESSMENT_FIELDS}\n }\n }\n`;\n\nexport const CREATE_QUESTION = `\n mutation BuildmyiqCreateQuestion($input: BuiCreateQuestionInput!) {\n buiCreateQuestion(input: $input) {\n ${QUESTION_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Submissions\n// ---------------------------------------------------------------------------\n\nexport const LIST_SUBMISSIONS = `\n query BuildmyiqListSubmissions(\n $assessmentId: ID\n $learnerId: ID\n $status: BuiSubmissionStatus\n $pagination: PaginationInput\n ) {\n buiListSubmissions(\n assessmentId: $assessmentId\n learnerId: $learnerId\n status: $status\n pagination: $pagination\n ) {\n items { ${SUBMISSION_FIELDS} }\n pageInfo { ${PAGE_INFO_FIELDS} }\n }\n }\n`;\n\nexport const SUBMIT_ASSESSMENT = `\n mutation BuildmyiqSubmitAssessment($input: BuiSubmitAssessmentInput!) {\n buiSubmitAssessment(input: $input) {\n ${SUBMISSION_FIELDS}\n }\n }\n`;\n\nexport const GRADE_SUBMISSION = `\n mutation BuildmyiqGradeSubmission($id: ID!, $input: BuiGradeSubmissionInput!) {\n buiGradeSubmission(id: $id, input: $input) {\n ${SUBMISSION_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Health\n// ---------------------------------------------------------------------------\n\nexport const HEALTH = `\n query BuildmyiqHealth {\n buiHealth\n }\n`;\n","/**\n * Shared zod schemas for the BuildMyIQ tool surface.\n *\n * Every backend enum (the `Bui*` enums in .hive-schema.graphql) is mirrored as\n * a tight zod enum so Claude Desktop grounds tool calls against the exact\n * allowed values. JSON scalar inputs (question options/answerKey, submission\n * answers) are modelled as permissive records — the backend accepts arbitrary\n * JSON, but a record shape gives the LLM a typed hint.\n */\n\nimport { z } from 'zod';\n\nexport const CourseLevelEnum = z\n .enum(['BEGINNER', 'INTERMEDIATE', 'ADVANCED', 'EXPERT'])\n .describe('Difficulty level of a course');\n\nexport const CourseStatusEnum = z\n .enum(['DRAFT', 'IN_REVIEW', 'PUBLISHED', 'ARCHIVED'])\n .describe('Authoring lifecycle status of a course');\n\nexport const SkillCategoryEnum = z\n .enum(['BUSINESS', 'COGNITIVE', 'CREATIVE', 'LANGUAGE', 'SOCIAL', 'TECHNICAL'])\n .describe('Category of a skill/competency');\n\nexport const LessonTypeEnum = z\n .enum(['ARTICLE', 'ASSIGNMENT', 'INTERACTIVE', 'LIVE_SESSION', 'QUIZ', 'VIDEO'])\n .describe('Delivery type of a lesson');\n\nexport const EnrollmentStatusEnum = z\n .enum(['ENROLLED', 'IN_PROGRESS', 'COMPLETED', 'DROPPED', 'EXPIRED'])\n .describe('Lifecycle status of a learner enrollment');\n\nexport const ProgressStatusEnum = z\n .enum(['NOT_STARTED', 'IN_PROGRESS', 'COMPLETED'])\n .describe('Per-lesson progress status within an enrollment');\n\nexport const CohortStatusEnum = z\n .enum(['SCHEDULED', 'ENROLLING', 'ACTIVE', 'COMPLETED', 'CANCELLED'])\n .describe('Lifecycle status of a cohort');\n\nexport const AssessmentTypeEnum = z\n .enum(['ASSIGNMENT', 'EXAM', 'PRACTICAL', 'QUIZ', 'SURVEY'])\n .describe('Type of an assessment');\n\nexport const AssessmentStatusEnum = z\n .enum(['DRAFT', 'PUBLISHED', 'ARCHIVED'])\n .describe('Lifecycle status of an assessment');\n\nexport const QuestionTypeEnum = z\n .enum(['CODE', 'ESSAY', 'MULTIPLE_CHOICE', 'SHORT_ANSWER', 'SINGLE_CHOICE', 'TRUE_FALSE'])\n .describe('Type of an assessment question');\n\nexport const SubmissionStatusEnum = z\n .enum(['IN_PROGRESS', 'SUBMITTED', 'GRADING', 'GRADED', 'RETURNED'])\n .describe('Lifecycle status of an assessment submission');\n\n/** Permissive JSON-object schema for `JSON` scalar inputs. */\nexport const JsonObject = z.record(z.string(), z.unknown());\n\n/** `JSON` scalar that may be an object or an array (options/answers payloads). */\nexport const JsonValue = z\n .union([JsonObject, z.array(z.unknown())])\n .describe('Arbitrary JSON value (object or array)');\n","/**\n * BuildMyIQ course tools — catalog authoring + lifecycle.\n *\n * Surface (6): courses_{get,list,create,update,publish,archive}.\n * Backend root fields: buiCourse / buiListCourses / buiCreateCourse /\n * buiUpdateCourse / buiPublishCourse / buiArchiveCourse — called by their real\n * (Bui-prefixed) names in operations.ts. buiListCourses returns a\n * BuiCourseConnection ({ items, pageInfo }); pagination uses PaginationInput\n * ({ cursor, limit, offset }).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { CourseLevelEnum, CourseStatusEnum } from './shared.js';\n\nexport function registerCourseTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'courses_get')),\n {\n title: 'Get Course',\n description:\n 'Fetch a single BuildMyIQ course by ID, including its skill, modules (with lessons), and flat lesson list.',\n inputSchema: { id: z.string().describe('Course ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n buiCourse: Record<string, unknown> | null;\n }>(ops.GET_COURSE, { id });\n if (!data.buiCourse) return errorResult(`Course ${id} not found`);\n return jsonResult(data.buiCourse);\n } catch (error) {\n ctx.logger.error('buildmyiq courses_get failed', { error: String(error) });\n return errorResult(\n `Failed to get course: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'courses_list')),\n {\n title: 'List Courses',\n description:\n 'List courses in the bound workspace with optional level/status filters and cursor/limit/offset pagination. Returns { items, pageInfo }.',\n inputSchema: {\n level: CourseLevelEnum.optional().describe('Filter by difficulty level'),\n status: CourseStatusEnum.optional().describe('Filter by authoring lifecycle status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ level, status, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n buiListCourses: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_COURSES, {\n level,\n status,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.buiListCourses);\n } catch (error) {\n ctx.logger.error('buildmyiq courses_list failed', { error: String(error) });\n return errorResult(\n `Failed to list courses: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'courses_create')),\n {\n title: 'Create Course',\n description:\n 'Create a draft course. `slug` must be unique within the workspace. Reference a cover image by `coverFileId` (a wspace-files-svc File) rather than uploading a blob.',\n inputSchema: {\n title: z.string().min(1).describe('Course title'),\n slug: z.string().min(1).describe('URL slug, unique within the workspace'),\n summary: z.string().optional().describe('Short marketing summary'),\n description: z.string().optional().describe('Full course description'),\n level: CourseLevelEnum.optional().describe('Difficulty level (default BEGINNER)'),\n language: z.string().optional().describe('Primary language (e.g. \"en\")'),\n estimatedHours: z.number().int().optional().describe('Estimated completion hours'),\n isPublic: z.boolean().optional().describe('Whether the course is publicly discoverable'),\n instructorId: z.string().optional().describe('User ID of the primary instructor'),\n skillId: z.string().optional().describe('Linked skill ID'),\n coverFileId: z.string().optional().describe('wspace-files-svc File ID for the cover image'),\n tags: z.array(z.string()).optional().describe('Discovery tags (default [])'),\n },\n },\n async ({\n title,\n slug,\n summary,\n description,\n level,\n language,\n estimatedHours,\n isPublic,\n instructorId,\n skillId,\n coverFileId,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { title, slug };\n if (summary !== undefined) input.summary = summary;\n if (description !== undefined) input.description = description;\n if (level !== undefined) input.level = level;\n if (language !== undefined) input.language = language;\n if (estimatedHours !== undefined) input.estimatedHours = estimatedHours;\n if (isPublic !== undefined) input.isPublic = isPublic;\n if (instructorId !== undefined) input.instructorId = instructorId;\n if (skillId !== undefined) input.skillId = skillId;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n buiCreateCourse: Record<string, unknown>;\n }>(ops.CREATE_COURSE, { input });\n return jsonResult(data.buiCreateCourse);\n } catch (error) {\n ctx.logger.error('buildmyiq courses_create failed', { error: String(error) });\n return errorResult(\n `Failed to create course: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'courses_update')),\n {\n title: 'Update Course',\n description:\n 'Update a course. At least one mutable field must be provided. Use courses_publish/courses_archive for lifecycle transitions rather than setting status here.',\n inputSchema: {\n id: z.string().describe('Course ID'),\n title: z.string().optional().describe('Updated title'),\n summary: z.string().optional().describe('Updated summary'),\n description: z.string().optional().describe('Updated description'),\n level: CourseLevelEnum.optional().describe('Updated difficulty level'),\n language: z.string().optional().describe('Updated language'),\n estimatedHours: z.number().int().optional().describe('Updated estimated hours'),\n isPublic: z.boolean().optional().describe('Updated public visibility'),\n instructorId: z.string().optional().describe('Updated instructor user ID'),\n skillId: z.string().optional().describe('Updated linked skill ID'),\n coverFileId: z.string().optional().describe('Updated cover File ID'),\n tags: z.array(z.string()).optional().describe('Updated discovery tags'),\n },\n },\n async ({\n id,\n title,\n summary,\n description,\n level,\n language,\n estimatedHours,\n isPublic,\n instructorId,\n skillId,\n coverFileId,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (summary !== undefined) input.summary = summary;\n if (description !== undefined) input.description = description;\n if (level !== undefined) input.level = level;\n if (language !== undefined) input.language = language;\n if (estimatedHours !== undefined) input.estimatedHours = estimatedHours;\n if (isPublic !== undefined) input.isPublic = isPublic;\n if (instructorId !== undefined) input.instructorId = instructorId;\n if (skillId !== undefined) input.skillId = skillId;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n if (tags !== undefined) input.tags = tags;\n\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable course field');\n }\n\n const data = await ctx.gql.workspace.request<{\n buiUpdateCourse: Record<string, unknown>;\n }>(ops.UPDATE_COURSE, { id, input });\n return jsonResult(data.buiUpdateCourse);\n } catch (error) {\n ctx.logger.error('buildmyiq courses_update failed', { error: String(error) });\n return errorResult(\n `Failed to update course: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'courses_publish')),\n {\n title: 'Publish Course',\n description:\n 'Publish a course through its authoring lifecycle (validated DRAFT → IN_REVIEW → PUBLISHED transitions).',\n inputSchema: { id: z.string().describe('Course ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n buiPublishCourse: Record<string, unknown>;\n }>(ops.PUBLISH_COURSE, { id });\n return jsonResult(data.buiPublishCourse);\n } catch (error) {\n ctx.logger.error('buildmyiq courses_publish failed', { error: String(error) });\n return errorResult(\n `Failed to publish course: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'courses_archive')),\n {\n title: 'Archive Course',\n description: 'Archive a course (soft-retire). Returns true on success.',\n inputSchema: { id: z.string().describe('Course ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{ buiArchiveCourse: boolean }>(\n ops.ARCHIVE_COURSE,\n { id },\n );\n return jsonResult({ archived: data.buiArchiveCourse });\n } catch (error) {\n ctx.logger.error('buildmyiq courses_archive failed', { error: String(error) });\n return errorResult(\n `Failed to archive course: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * BuildMyIQ course-module tools — the structural sections of a course.\n *\n * Surface (2): modules_list, modules_create.\n * Backend root fields: buiListModules / buiCreateModule.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\n\nexport function registerModuleTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'modules_list')),\n {\n title: 'List Course Modules',\n description:\n 'List the modules (sections) of a course in position order, each with its lessons.',\n inputSchema: { courseId: z.string().describe('Course ID') },\n },\n async ({ courseId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n buiListModules: Array<Record<string, unknown>>;\n }>(ops.LIST_MODULES, { courseId });\n return jsonResult(data.buiListModules);\n } catch (error) {\n ctx.logger.error('buildmyiq modules_list failed', { error: String(error) });\n return errorResult(\n `Failed to list modules: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'modules_create')),\n {\n title: 'Create Course Module',\n description: 'Add a module (section) to a course. `position` orders it within the course.',\n inputSchema: {\n courseId: z.string().min(1).describe('Owning course ID'),\n title: z.string().min(1).describe('Module title'),\n description: z.string().optional().describe('Module description'),\n position: z.number().int().optional().describe('Ordering position within the course'),\n },\n },\n async ({ courseId, title, description, position }) => {\n try {\n const input: Record<string, unknown> = { courseId, title };\n if (description !== undefined) input.description = description;\n if (position !== undefined) input.position = position;\n\n const data = await ctx.gql.workspace.request<{\n buiCreateModule: Record<string, unknown>;\n }>(ops.CREATE_MODULE, { input });\n return jsonResult(data.buiCreateModule);\n } catch (error) {\n ctx.logger.error('buildmyiq modules_create failed', { error: String(error) });\n return errorResult(\n `Failed to create module: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * BuildMyIQ lesson tools — the learning units inside a course/module.\n *\n * Surface (2): lessons_list, lessons_create.\n * Backend root fields: buiListLessons / buiCreateLesson.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { LessonTypeEnum } from './shared.js';\n\nexport function registerLessonTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'lessons_list')),\n {\n title: 'List Lessons',\n description:\n 'List the lessons of a course in position order, optionally narrowed to a single module.',\n inputSchema: {\n courseId: z.string().describe('Course ID'),\n moduleId: z.string().optional().describe('Filter to a single module'),\n },\n },\n async ({ courseId, moduleId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n buiListLessons: Array<Record<string, unknown>>;\n }>(ops.LIST_LESSONS, { courseId, moduleId });\n return jsonResult(data.buiListLessons);\n } catch (error) {\n ctx.logger.error('buildmyiq lessons_list failed', { error: String(error) });\n return errorResult(\n `Failed to list lessons: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'lessons_create')),\n {\n title: 'Create Lesson',\n description:\n 'Add a lesson to a course (optionally within a module). Reference media (video/asset) by `mediaFileId` (a wspace-files-svc File) rather than uploading a blob.',\n inputSchema: {\n courseId: z.string().min(1).describe('Owning course ID'),\n title: z.string().min(1).describe('Lesson title'),\n type: LessonTypeEnum.optional().describe('Lesson delivery type (default ARTICLE)'),\n moduleId: z.string().optional().describe('Owning module ID (optional)'),\n content: z.string().optional().describe('Lesson body content (markdown/HTML/text)'),\n durationMin: z.number().int().optional().describe('Estimated duration in minutes'),\n isPreview: z.boolean().optional().describe('Whether the lesson is a free preview'),\n position: z\n .number()\n .int()\n .optional()\n .describe('Ordering position within the course/module'),\n mediaFileId: z\n .string()\n .optional()\n .describe('wspace-files-svc File ID for the lesson media'),\n },\n },\n async ({\n courseId,\n title,\n type,\n moduleId,\n content,\n durationMin,\n isPreview,\n position,\n mediaFileId,\n }) => {\n try {\n const input: Record<string, unknown> = { courseId, title };\n if (type !== undefined) input.type = type;\n if (moduleId !== undefined) input.moduleId = moduleId;\n if (content !== undefined) input.content = content;\n if (durationMin !== undefined) input.durationMin = durationMin;\n if (isPreview !== undefined) input.isPreview = isPreview;\n if (position !== undefined) input.position = position;\n if (mediaFileId !== undefined) input.mediaFileId = mediaFileId;\n\n const data = await ctx.gql.workspace.request<{\n buiCreateLesson: Record<string, unknown>;\n }>(ops.CREATE_LESSON, { input });\n return jsonResult(data.buiCreateLesson);\n } catch (error) {\n ctx.logger.error('buildmyiq lessons_create failed', { error: String(error) });\n return errorResult(\n `Failed to create lesson: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * BuildMyIQ skill tools — the competency taxonomy courses map to.\n *\n * Surface (2): skills_list, skills_create.\n * Backend root fields: buiListSkills / buiCreateSkill.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { SkillCategoryEnum } from './shared.js';\n\nexport function registerSkillTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'skills_list')),\n {\n title: 'List Skills',\n description: 'List skills in the bound workspace, optionally filtered by category.',\n inputSchema: {\n category: SkillCategoryEnum.optional().describe('Filter by skill category'),\n },\n },\n async ({ category }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n buiListSkills: Array<Record<string, unknown>>;\n }>(ops.LIST_SKILLS, { category });\n return jsonResult(data.buiListSkills);\n } catch (error) {\n ctx.logger.error('buildmyiq skills_list failed', { error: String(error) });\n return errorResult(\n `Failed to list skills: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'skills_create')),\n {\n title: 'Create Skill',\n description: 'Create a skill/competency that courses can be tagged against.',\n inputSchema: {\n name: z.string().min(1).describe('Skill name'),\n category: SkillCategoryEnum.optional().describe('Skill category (default TECHNICAL)'),\n description: z.string().optional().describe('Skill description'),\n },\n },\n async ({ name, category, description }) => {\n try {\n const input: Record<string, unknown> = { name };\n if (category !== undefined) input.category = category;\n if (description !== undefined) input.description = description;\n\n const data = await ctx.gql.workspace.request<{\n buiCreateSkill: Record<string, unknown>;\n }>(ops.CREATE_SKILL, { input });\n return jsonResult(data.buiCreateSkill);\n } catch (error) {\n ctx.logger.error('buildmyiq skills_create failed', { error: String(error) });\n return errorResult(\n `Failed to create skill: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * BuildMyIQ enrollment tools — learner enrollment + lesson-progress tracking.\n *\n * Surface (5): enrollments_{get,list,enroll,transition,record_progress}.\n * Backend root fields: buiEnrollment / buiListEnrollments / buiEnroll /\n * buiTransitionEnrollment / buiRecordLessonProgress. buiListEnrollments returns\n * a BuiEnrollmentConnection ({ items, pageInfo }).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { EnrollmentStatusEnum, ProgressStatusEnum } from './shared.js';\n\nexport function registerEnrollmentTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'enrollments_get')),\n {\n title: 'Get Enrollment',\n description:\n 'Fetch a single enrollment by ID, including its cohort and per-lesson progress records.',\n inputSchema: { id: z.string().describe('Enrollment ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n buiEnrollment: Record<string, unknown> | null;\n }>(ops.GET_ENROLLMENT, { id });\n if (!data.buiEnrollment) return errorResult(`Enrollment ${id} not found`);\n return jsonResult(data.buiEnrollment);\n } catch (error) {\n ctx.logger.error('buildmyiq enrollments_get failed', { error: String(error) });\n return errorResult(\n `Failed to get enrollment: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'enrollments_list')),\n {\n title: 'List Enrollments',\n description:\n 'List enrollments, optionally filtered by course, learner, and/or status, with cursor/limit/offset pagination. Returns { items, pageInfo }.',\n inputSchema: {\n courseId: z.string().optional().describe('Filter by course ID'),\n learnerId: z.string().optional().describe('Filter by learner user ID'),\n status: EnrollmentStatusEnum.optional().describe('Filter by enrollment status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ courseId, learnerId, status, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n buiListEnrollments: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_ENROLLMENTS, {\n courseId,\n learnerId,\n status,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.buiListEnrollments);\n } catch (error) {\n ctx.logger.error('buildmyiq enrollments_list failed', { error: String(error) });\n return errorResult(\n `Failed to list enrollments: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'enrollments_enroll')),\n {\n title: 'Enroll Learner',\n description:\n 'Enroll a learner in a course (optionally within a cohort). If `learnerId` is omitted the calling actor is enrolled. `expiresAt` is an optional access-expiry timestamp.',\n inputSchema: {\n courseId: z.string().min(1).describe('Course to enroll into'),\n learnerId: z.string().optional().describe('Learner user ID (defaults to the caller)'),\n cohortId: z.string().optional().describe('Cohort to enroll within'),\n expiresAt: z.string().optional().describe('Access-expiry timestamp (ISO-8601 DateTime)'),\n },\n },\n async ({ courseId, learnerId, cohortId, expiresAt }) => {\n try {\n const input: Record<string, unknown> = { courseId };\n if (learnerId !== undefined) input.learnerId = learnerId;\n if (cohortId !== undefined) input.cohortId = cohortId;\n if (expiresAt !== undefined) input.expiresAt = expiresAt;\n\n const data = await ctx.gql.workspace.request<{\n buiEnroll: Record<string, unknown>;\n }>(ops.ENROLL, { input });\n return jsonResult(data.buiEnroll);\n } catch (error) {\n ctx.logger.error('buildmyiq enrollments_enroll failed', { error: String(error) });\n return errorResult(\n `Failed to enroll: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'enrollments_transition')),\n {\n title: 'Transition Enrollment',\n description:\n 'Advance an enrollment through its lifecycle via validated transitions (ENROLLED → IN_PROGRESS → COMPLETED, or DROPPED/EXPIRED).',\n inputSchema: {\n id: z.string().describe('Enrollment ID'),\n status: EnrollmentStatusEnum.describe('Target enrollment status'),\n },\n },\n async ({ id, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n buiTransitionEnrollment: Record<string, unknown>;\n }>(ops.TRANSITION_ENROLLMENT, { id, status });\n return jsonResult(data.buiTransitionEnrollment);\n } catch (error) {\n ctx.logger.error('buildmyiq enrollments_transition failed', { error: String(error) });\n return errorResult(\n `Failed to transition enrollment: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'enrollments_record_progress')),\n {\n title: 'Record Lesson Progress',\n description:\n 'Record (upsert) a learner’s progress on a lesson within an enrollment — sets status and accumulates time spent.',\n inputSchema: {\n enrollmentId: z.string().min(1).describe('Enrollment ID'),\n lessonId: z.string().min(1).describe('Lesson ID'),\n status: ProgressStatusEnum.optional().describe('Progress status (default IN_PROGRESS)'),\n secondsSpent: z.number().int().optional().describe('Seconds spent to add to the total'),\n },\n },\n async ({ enrollmentId, lessonId, status, secondsSpent }) => {\n try {\n const input: Record<string, unknown> = { enrollmentId, lessonId };\n if (status !== undefined) input.status = status;\n if (secondsSpent !== undefined) input.secondsSpent = secondsSpent;\n\n const data = await ctx.gql.workspace.request<{\n buiRecordLessonProgress: Record<string, unknown>;\n }>(ops.RECORD_LESSON_PROGRESS, { input });\n return jsonResult(data.buiRecordLessonProgress);\n } catch (error) {\n ctx.logger.error('buildmyiq enrollments_record_progress failed', { error: String(error) });\n return errorResult(\n `Failed to record lesson progress: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * BuildMyIQ cohort tools — scheduled, facilitated groups of a course.\n *\n * Surface (2): cohorts_list, cohorts_create.\n * Backend root fields: buiListCohorts / buiCreateCohort.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { CohortStatusEnum } from './shared.js';\n\nexport function registerCohortTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'cohorts_list')),\n {\n title: 'List Cohorts',\n description: 'List cohorts, optionally filtered by course and/or status.',\n inputSchema: {\n courseId: z.string().optional().describe('Filter by course ID'),\n status: CohortStatusEnum.optional().describe('Filter by cohort status'),\n },\n },\n async ({ courseId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n buiListCohorts: Array<Record<string, unknown>>;\n }>(ops.LIST_COHORTS, { courseId, status });\n return jsonResult(data.buiListCohorts);\n } catch (error) {\n ctx.logger.error('buildmyiq cohorts_list failed', { error: String(error) });\n return errorResult(\n `Failed to list cohorts: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'cohorts_create')),\n {\n title: 'Create Cohort',\n description:\n 'Create a scheduled cohort for a course with an optional facilitator, capacity, and start/end dates.',\n inputSchema: {\n courseId: z.string().min(1).describe('Owning course ID'),\n name: z.string().min(1).describe('Cohort name'),\n capacity: z.number().int().optional().describe('Maximum number of learners'),\n facilitatorId: z.string().optional().describe('Facilitator user ID'),\n startDate: z.string().optional().describe('Start date (ISO-8601 DateTime)'),\n endDate: z.string().optional().describe('End date (ISO-8601 DateTime)'),\n },\n },\n async ({ courseId, name, capacity, facilitatorId, startDate, endDate }) => {\n try {\n const input: Record<string, unknown> = { courseId, name };\n if (capacity !== undefined) input.capacity = capacity;\n if (facilitatorId !== undefined) input.facilitatorId = facilitatorId;\n if (startDate !== undefined) input.startDate = startDate;\n if (endDate !== undefined) input.endDate = endDate;\n\n const data = await ctx.gql.workspace.request<{\n buiCreateCohort: Record<string, unknown>;\n }>(ops.CREATE_COHORT, { input });\n return jsonResult(data.buiCreateCohort);\n } catch (error) {\n ctx.logger.error('buildmyiq cohorts_create failed', { error: String(error) });\n return errorResult(\n `Failed to create cohort: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * BuildMyIQ certificate tools — issuance + revocation of completion certs.\n *\n * Surface (3): certificates_{list,issue,revoke}.\n * Backend root fields: buiListCertificates / buiIssueCertificate /\n * buiRevokeCertificate.\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\n\nexport function registerCertificateTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'certificates_list')),\n {\n title: 'List Certificates',\n description: 'List issued certificates, optionally filtered by course and/or learner.',\n inputSchema: {\n courseId: z.string().optional().describe('Filter by course ID'),\n learnerId: z.string().optional().describe('Filter by learner user ID'),\n },\n },\n async ({ courseId, learnerId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n buiListCertificates: Array<Record<string, unknown>>;\n }>(ops.LIST_CERTIFICATES, { courseId, learnerId });\n return jsonResult(data.buiListCertificates);\n } catch (error) {\n ctx.logger.error('buildmyiq certificates_list failed', { error: String(error) });\n return errorResult(\n `Failed to list certificates: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'certificates_issue')),\n {\n title: 'Issue Certificate',\n description:\n 'Issue a completion certificate to a learner for a course. `serial` must be unique. Reference the rendered PDF by `fileId` (a wspace-files-svc File).',\n inputSchema: {\n courseId: z.string().min(1).describe('Course the certificate is for'),\n learnerId: z.string().min(1).describe('Recipient learner user ID'),\n serial: z.string().min(1).describe('Unique certificate serial number'),\n enrollmentId: z.string().optional().describe('Source enrollment ID'),\n finalScore: z.number().optional().describe('Final score recorded on the certificate'),\n fileId: z.string().optional().describe('wspace-files-svc File ID for the rendered PDF'),\n expiresAt: z.string().optional().describe('Expiry timestamp (ISO-8601 DateTime)'),\n },\n },\n async ({ courseId, learnerId, serial, enrollmentId, finalScore, fileId, expiresAt }) => {\n try {\n const input: Record<string, unknown> = { courseId, learnerId, serial };\n if (enrollmentId !== undefined) input.enrollmentId = enrollmentId;\n if (finalScore !== undefined) input.finalScore = finalScore;\n if (fileId !== undefined) input.fileId = fileId;\n if (expiresAt !== undefined) input.expiresAt = expiresAt;\n\n const data = await ctx.gql.workspace.request<{\n buiIssueCertificate: Record<string, unknown>;\n }>(ops.ISSUE_CERTIFICATE, { input });\n return jsonResult(data.buiIssueCertificate);\n } catch (error) {\n ctx.logger.error('buildmyiq certificates_issue failed', { error: String(error) });\n return errorResult(\n `Failed to issue certificate: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'certificates_revoke')),\n {\n title: 'Revoke Certificate',\n description: 'Revoke a previously issued certificate (sets status REVOKED).',\n inputSchema: { id: z.string().describe('Certificate ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n buiRevokeCertificate: Record<string, unknown>;\n }>(ops.REVOKE_CERTIFICATE, { id });\n return jsonResult(data.buiRevokeCertificate);\n } catch (error) {\n ctx.logger.error('buildmyiq certificates_revoke failed', { error: String(error) });\n return errorResult(\n `Failed to revoke certificate: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * BuildMyIQ assessment + question tools.\n *\n * Surface (5): assessments_{get,list,create,publish}, questions_create.\n * Backend root fields: buiAssessment / buiListAssessments / buiCreateAssessment\n * / buiPublishAssessment / buiCreateQuestion. Questions belong to an assessment\n * (read via the assessment's `questions` field; created standalone here).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { AssessmentTypeEnum, AssessmentStatusEnum, QuestionTypeEnum, JsonValue } from './shared.js';\n\nexport function registerAssessmentTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'assessments_get')),\n {\n title: 'Get Assessment',\n description:\n 'Fetch a single assessment by ID, including its ordered questions (with options and points).',\n inputSchema: { id: z.string().describe('Assessment ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n buiAssessment: Record<string, unknown> | null;\n }>(ops.GET_ASSESSMENT, { id });\n if (!data.buiAssessment) return errorResult(`Assessment ${id} not found`);\n return jsonResult(data.buiAssessment);\n } catch (error) {\n ctx.logger.error('buildmyiq assessments_get failed', { error: String(error) });\n return errorResult(\n `Failed to get assessment: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'assessments_list')),\n {\n title: 'List Assessments',\n description: 'List the assessments of a course, optionally filtered by status.',\n inputSchema: {\n courseId: z.string().describe('Course ID'),\n status: AssessmentStatusEnum.optional().describe('Filter by assessment status'),\n },\n },\n async ({ courseId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n buiListAssessments: Array<Record<string, unknown>>;\n }>(ops.LIST_ASSESSMENTS, { courseId, status });\n return jsonResult(data.buiListAssessments);\n } catch (error) {\n ctx.logger.error('buildmyiq assessments_list failed', { error: String(error) });\n return errorResult(\n `Failed to list assessments: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'assessments_create')),\n {\n title: 'Create Assessment',\n description:\n 'Create a draft assessment (quiz/exam/assignment/practical/survey) for a course. Add questions with questions_create, then publish with assessments_publish.',\n inputSchema: {\n courseId: z.string().min(1).describe('Owning course ID'),\n title: z.string().min(1).describe('Assessment title'),\n type: AssessmentTypeEnum.optional().describe('Assessment type (default QUIZ)'),\n description: z.string().optional().describe('Assessment description/instructions'),\n passingScore: z.number().optional().describe('Passing score threshold'),\n maxAttempts: z.number().int().optional().describe('Maximum allowed attempts'),\n timeLimitMin: z.number().int().optional().describe('Time limit in minutes'),\n isGraded: z.boolean().optional().describe('Whether the assessment is graded'),\n },\n },\n async ({\n courseId,\n title,\n type,\n description,\n passingScore,\n maxAttempts,\n timeLimitMin,\n isGraded,\n }) => {\n try {\n const input: Record<string, unknown> = { courseId, title };\n if (type !== undefined) input.type = type;\n if (description !== undefined) input.description = description;\n if (passingScore !== undefined) input.passingScore = passingScore;\n if (maxAttempts !== undefined) input.maxAttempts = maxAttempts;\n if (timeLimitMin !== undefined) input.timeLimitMin = timeLimitMin;\n if (isGraded !== undefined) input.isGraded = isGraded;\n\n const data = await ctx.gql.workspace.request<{\n buiCreateAssessment: Record<string, unknown>;\n }>(ops.CREATE_ASSESSMENT, { input });\n return jsonResult(data.buiCreateAssessment);\n } catch (error) {\n ctx.logger.error('buildmyiq assessments_create failed', { error: String(error) });\n return errorResult(\n `Failed to create assessment: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'assessments_publish')),\n {\n title: 'Publish Assessment',\n description: 'Publish a draft assessment so learners can take it (sets status PUBLISHED).',\n inputSchema: { id: z.string().describe('Assessment ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n buiPublishAssessment: Record<string, unknown>;\n }>(ops.PUBLISH_ASSESSMENT, { id });\n return jsonResult(data.buiPublishAssessment);\n } catch (error) {\n ctx.logger.error('buildmyiq assessments_publish failed', { error: String(error) });\n return errorResult(\n `Failed to publish assessment: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'questions_create')),\n {\n title: 'Create Question',\n description:\n 'Add a question to an assessment. `options` and `answerKey` are JSON (e.g. choices array + correct-answer key); `points` weights grading.',\n inputSchema: {\n assessmentId: z.string().min(1).describe('Owning assessment ID'),\n prompt: z.string().min(1).describe('Question prompt/text'),\n type: QuestionTypeEnum.optional().describe('Question type (default SINGLE_CHOICE)'),\n options: JsonValue.optional().describe('Answer options JSON (choices array/object)'),\n answerKey: JsonValue.optional().describe('Correct-answer key JSON'),\n points: z.number().optional().describe('Points the question is worth'),\n position: z.number().int().optional().describe('Ordering position within the assessment'),\n explanation: z.string().optional().describe('Post-answer explanation/rationale'),\n },\n },\n async ({ assessmentId, prompt, type, options, answerKey, points, position, explanation }) => {\n try {\n const input: Record<string, unknown> = { assessmentId, prompt };\n if (type !== undefined) input.type = type;\n if (options !== undefined) input.options = options;\n if (answerKey !== undefined) input.answerKey = answerKey;\n if (points !== undefined) input.points = points;\n if (position !== undefined) input.position = position;\n if (explanation !== undefined) input.explanation = explanation;\n\n const data = await ctx.gql.workspace.request<{\n buiCreateQuestion: Record<string, unknown>;\n }>(ops.CREATE_QUESTION, { input });\n return jsonResult(data.buiCreateQuestion);\n } catch (error) {\n ctx.logger.error('buildmyiq questions_create failed', { error: String(error) });\n return errorResult(\n `Failed to create question: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * BuildMyIQ submission tools — learner attempts + grading.\n *\n * Surface (3): submissions_{list,submit,grade}.\n * Backend root fields: buiListSubmissions / buiSubmitAssessment /\n * buiGradeSubmission. buiListSubmissions returns a BuiSubmissionConnection\n * ({ items, pageInfo }).\n */\n\nimport { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\nimport { SubmissionStatusEnum, JsonValue } from './shared.js';\n\nexport function registerSubmissionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'submissions_list')),\n {\n title: 'List Submissions',\n description:\n 'List assessment submissions, optionally filtered by assessment, learner, and/or status, with cursor/limit/offset pagination. Returns { items, pageInfo }.',\n inputSchema: {\n assessmentId: z.string().optional().describe('Filter by assessment ID'),\n learnerId: z.string().optional().describe('Filter by learner user ID'),\n status: SubmissionStatusEnum.optional().describe('Filter by submission status'),\n limit: z.number().int().optional().describe('Page size (default 50)'),\n offset: z.number().int().optional().describe('Pagination offset (default 0)'),\n cursor: z.string().optional().describe('Opaque pagination cursor'),\n },\n },\n async ({ assessmentId, learnerId, status, limit, offset, cursor }) => {\n try {\n const pagination: Record<string, unknown> = {};\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n if (cursor !== undefined) pagination.cursor = cursor;\n\n const data = await ctx.gql.workspace.request<{\n buiListSubmissions: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_SUBMISSIONS, {\n assessmentId,\n learnerId,\n status,\n pagination: Object.keys(pagination).length > 0 ? pagination : undefined,\n });\n return jsonResult(data.buiListSubmissions);\n } catch (error) {\n ctx.logger.error('buildmyiq submissions_list failed', { error: String(error) });\n return errorResult(\n `Failed to list submissions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'submissions_submit')),\n {\n title: 'Submit Assessment',\n description:\n 'Submit a learner’s answers to an assessment. `answers` is JSON keyed by question. If `learnerId` is omitted the calling actor is used; `attempt` defaults to the next attempt number.',\n inputSchema: {\n assessmentId: z.string().min(1).describe('Assessment being submitted'),\n answers: JsonValue.optional().describe('Answers JSON (keyed by question)'),\n learnerId: z.string().optional().describe('Learner user ID (defaults to the caller)'),\n enrollmentId: z.string().optional().describe('Source enrollment ID'),\n attempt: z.number().int().optional().describe('Attempt number'),\n },\n },\n async ({ assessmentId, answers, learnerId, enrollmentId, attempt }) => {\n try {\n const input: Record<string, unknown> = { assessmentId };\n if (answers !== undefined) input.answers = answers;\n if (learnerId !== undefined) input.learnerId = learnerId;\n if (enrollmentId !== undefined) input.enrollmentId = enrollmentId;\n if (attempt !== undefined) input.attempt = attempt;\n\n const data = await ctx.gql.workspace.request<{\n buiSubmitAssessment: Record<string, unknown>;\n }>(ops.SUBMIT_ASSESSMENT, { input });\n return jsonResult(data.buiSubmitAssessment);\n } catch (error) {\n ctx.logger.error('buildmyiq submissions_submit failed', { error: String(error) });\n return errorResult(\n `Failed to submit assessment: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'submissions_grade')),\n {\n title: 'Grade Submission',\n description:\n 'Grade a submission: record a score, an optional pass/fail flag, and optional feedback. Moves the submission to GRADED.',\n inputSchema: {\n id: z.string().describe('Submission ID'),\n score: z.number().describe('Awarded score'),\n passed: z.boolean().optional().describe('Whether the learner passed'),\n feedback: z.string().optional().describe('Grader feedback'),\n },\n },\n async ({ id, score, passed, feedback }) => {\n try {\n const input: Record<string, unknown> = { score };\n if (passed !== undefined) input.passed = passed;\n if (feedback !== undefined) input.feedback = feedback;\n\n const data = await ctx.gql.workspace.request<{\n buiGradeSubmission: Record<string, unknown>;\n }>(ops.GRADE_SUBMISSION, { id, input });\n return jsonResult(data.buiGradeSubmission);\n } catch (error) {\n ctx.logger.error('buildmyiq submissions_grade failed', { error: String(error) });\n return errorResult(\n `Failed to grade submission: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * BuildMyIQ health tool.\n *\n * Surface (1): health. Maps to the @public buiHealth query (no auth required) —\n * the schema exposes a real `buiHealth: String!` @rbac(public: true) field, so a\n * health tool is warranted (unlike subgraphs that only expose `_empty`).\n */\n\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { jsonResult, errorResult, mcpToolName, type McpContext } from '../../../core/index.js';\nimport * as ops from '../operations.js';\n\nexport function registerHealthTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'health')),\n {\n title: 'BuildMyIQ Health Check',\n description:\n 'Public liveness/identity probe for the BuildMyIQ subgraph (buiHealth). Requires no authentication.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ buiHealth: string }>(ops.HEALTH, {});\n return jsonResult({ ok: true, status: data.buiHealth });\n } catch (error) {\n ctx.logger.error('buildmyiq health failed', { error: String(error) });\n return errorResult(\n `BuildMyIQ health check failed: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpResourceUri, type McpContext } from '../../core/index.js';\nimport { LIST_COURSES, LIST_SKILLS, HEALTH } from './operations.js';\n\n/**\n * Read-only BuildMyIQ MCP resources. URIs are product-prefixed via\n * mcpResourceUri so they don't collide when multiple MCP servers run side by\n * side. Each is tracked at function entry so the shell manifest reflects what\n * was registered even though registration is imperative.\n */\nexport function registerBuildmyiqResources(\n server: McpServer,\n ctx: McpContext,\n track: (uri: string) => string,\n): void {\n const schemaUri = track(mcpResourceUri(ctx.productName, 'schema'));\n const coursesUri = track(mcpResourceUri(ctx.productName, 'courses'));\n const skillsUri = track(mcpResourceUri(ctx.productName, 'skills'));\n const healthUri = track(mcpResourceUri(ctx.productName, 'health'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'buildmyiq-schema',\n schemaUri,\n {\n title: 'BuildMyIQ Domain Schema',\n description:\n 'Overview of the BuildMyIQ learning-platform domain — entities, enums, and the per-entity tool surface.',\n mimeType: 'text/plain',\n },\n async () => {\n ctx.logger.debug(`Resource ${schemaUri} requested`);\n const schema = `# BuildMyIQ Domain (Overview)\n\nAI-native Education, Learning & Development platform — courses, learning,\nand assessment for schools, universities, and teams.\n\n## Entities\n- BuiCourse (+BuiCourseConnection) — a course (modules, lessons, skill, cover File)\n- BuiModule — a structural section of a course (has lessons)\n- BuiLesson — a learning unit (ARTICLE/VIDEO/QUIZ/... , media File)\n- BuiSkill — a competency a course maps to\n- BuiEnrollment (+BuiEnrollmentConnection) — a learner's enrollment (cohort, progress)\n- BuiLessonProgress — per-lesson progress within an enrollment\n- BuiCohort — a scheduled, facilitated group of a course\n- BuiCertificate — a completion certificate (rendered PDF File)\n- BuiAssessment — a quiz/exam/assignment (has questions)\n- BuiQuestion — a question within an assessment\n- BuiSubmission (+BuiSubmissionConnection) — a learner attempt + grading\n\n## Enums\n- BuiCourseLevel: BEGINNER, INTERMEDIATE, ADVANCED, EXPERT\n- BuiCourseStatus: DRAFT, IN_REVIEW, PUBLISHED, ARCHIVED\n- BuiSkillCategory: BUSINESS, COGNITIVE, CREATIVE, LANGUAGE, SOCIAL, TECHNICAL\n- BuiLessonType: ARTICLE, ASSIGNMENT, INTERACTIVE, LIVE_SESSION, QUIZ, VIDEO\n- BuiEnrollmentStatus: ENROLLED, IN_PROGRESS, COMPLETED, DROPPED, EXPIRED\n- BuiProgressStatus: NOT_STARTED, IN_PROGRESS, COMPLETED\n- BuiCohortStatus: SCHEDULED, ENROLLING, ACTIVE, COMPLETED, CANCELLED\n- BuiAssessmentType: ASSIGNMENT, EXAM, PRACTICAL, QUIZ, SURVEY\n- BuiAssessmentStatus: DRAFT, PUBLISHED, ARCHIVED\n- BuiQuestionType: CODE, ESSAY, MULTIPLE_CHOICE, SHORT_ANSWER, SINGLE_CHOICE, TRUE_FALSE\n- BuiSubmissionStatus: IN_PROGRESS, SUBMITTED, GRADING, GRADED, RETURNED\n\n## Tool groups\ncourses, modules, lessons, skills, enrollments, cohorts, certificates,\nassessments (+questions), submissions, health.\nAll run against the WORKSPACE gateway (workspace-scoped) except the public\nbuiHealth probe.\n`;\n return {\n contents: [{ uri: schemaUri, text: schema, mimeType: 'text/plain' }],\n };\n },\n );\n\n // <product>://courses — published-or-draft course catalog (first page)\n server.registerResource(\n 'buildmyiq-courses',\n coursesUri,\n {\n title: 'BuildMyIQ Course Catalog',\n description: 'The first 50 courses in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${coursesUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ buiListCourses: unknown }>(LIST_COURSES, {\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: coursesUri,\n text: JSON.stringify(data.buiListCourses, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: coursesUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // <product>://skills — the competency taxonomy\n server.registerResource(\n 'buildmyiq-skills',\n skillsUri,\n {\n title: 'BuildMyIQ Skill Taxonomy',\n description: 'The skills/competencies defined in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${skillsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ buiListSkills: unknown }>(LIST_SKILLS, {});\n return {\n contents: [\n {\n uri: skillsUri,\n text: JSON.stringify(data.buiListSkills, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: skillsUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n\n // <product>://health — subgraph liveness probe\n server.registerResource(\n 'buildmyiq-health',\n healthUri,\n {\n title: 'BuildMyIQ Health',\n description: 'Live liveness/identity probe for the BuildMyIQ subgraph (buiHealth).',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${healthUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ buiHealth: string }>(HEALTH, {});\n return {\n contents: [\n {\n uri: healthUri,\n text: JSON.stringify({ ok: true, status: data.buiHealth }, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: healthUri,\n text: JSON.stringify({\n error: error instanceof Error ? error.message : String(error),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n },\n );\n}\n","import { z } from 'zod';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { mcpPromptName, type McpContext } from '../../core/index.js';\n\n/**\n * BuildMyIQ MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n */\nexport function registerBuildmyiqPrompts(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n const p = ctx.productName;\n const authoringName = track(mcpPromptName(p, 'course-authoring'));\n const opsName = track(mcpPromptName(p, 'cohort-operations'));\n\n // <product>-course-authoring — build and publish a course end to end\n server.registerPrompt(\n authoringName,\n {\n title: 'Course Authoring',\n description:\n 'Guide for authoring a BuildMyIQ course end to end: create the course, structure it into modules and lessons, add an assessment with questions, and publish.',\n argsSchema: {\n title: z.string().optional().describe('Course title'),\n level: z\n .string()\n .optional()\n .describe('Course level (BEGINNER/INTERMEDIATE/ADVANCED/EXPERT)'),\n },\n },\n ({ title, level }) => {\n ctx.logger.debug(`Prompt ${authoringName} called`, { title, level });\n const titleNote = title ? `Use the title \"${title}\".` : 'Ask the user for the course title.';\n const levelNote = level ? `Use level ${level}.` : 'Help the user pick a BuiCourseLevel.';\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me author a new BuildMyIQ course.\n\n1. **Create Course**: Use ${p}_courses_create. ${titleNote} ${levelNote} Provide a unique slug; optionally link a skill (${p}_skills_list / ${p}_skills_create) and a cover File.\n2. **Structure**: Use ${p}_modules_create to add sections, then ${p}_lessons_create for each lesson (set type=ARTICLE/VIDEO/QUIZ/... and position).\n3. **Assess**: Use ${p}_assessments_create to add a quiz/exam, then ${p}_questions_create for each question. Publish it with ${p}_assessments_publish.\n4. **Review Structure**: Use ${p}_courses_get to verify modules + lessons, and ${p}_assessments_list for the course.\n5. **Publish**: Use ${p}_courses_publish to move the course through DRAFT → IN_REVIEW → PUBLISHED.\n\nShow results at each step and confirm before publishing.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-cohort-operations — run a cohort + grading\n server.registerPrompt(\n opsName,\n {\n title: 'Cohort Operations',\n description:\n 'Operations workflow for running a course cohort: enroll learners, track progress, grade submissions, and issue certificates.',\n argsSchema: {\n courseId: z.string().optional().describe('Course ID to operate'),\n },\n },\n ({ courseId }) => {\n ctx.logger.debug(`Prompt ${opsName} called`, { courseId });\n const courseNote = courseId\n ? `Operate course \"${courseId}\".`\n : `First list courses with ${p}_courses_list and pick one.`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Run BuildMyIQ cohort operations. ${courseNote}\n\n1. **Cohort**: Use ${p}_cohorts_list (or ${p}_cohorts_create) to find/open a cohort for the course.\n2. **Enroll**: Use ${p}_enrollments_enroll for each learner (optionally within the cohort).\n3. **Progress**: Use ${p}_enrollments_list filtered by courseId/status to see who is IN_PROGRESS vs COMPLETED; drill in with ${p}_enrollments_get.\n4. **Grade**: Use ${p}_submissions_list filtered by status=SUBMITTED, then ${p}_submissions_grade (score, passed, feedback) for each.\n5. **Advance**: Use ${p}_enrollments_transition to mark finished learners COMPLETED.\n6. **Certify**: For passing learners use ${p}_certificates_issue (unique serial), and ${p}_certificates_list to confirm.\n\nSummarize what needs attention after each step.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * BuildMyIQ module — domain module for the future-products ecosystem program.\n *\n * Covers the 11 @key entities of wspace-buildmyiq-svc (course, module, lesson,\n * skill, enrollment, lessonProgress, cohort, certificate, assessment, question,\n * submission) grouped into per-entity sub-APIs: courses, modules, lessons,\n * skills, enrollments, cohorts, certificates, assessments (+questions),\n * submissions, health. Mirrors the kadaikodi module's structure\n * (tools/<entity>.ts + resources.ts + prompts.ts) and the canonical tags\n * module's typing discipline.\n *\n * Backend: ~/products/wspace/buildmyiq/wspace-buildmyiq-svc/\n * (Hive service name `buildmyiq`). All operations run against the WORKSPACE\n * gateway; the @public buiHealth probe is exposed as `<product>_health`.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { McpContext, McpModule, ModuleRegistration } from '../../core/index.js';\nimport { registerCourseTools } from './tools/courses.js';\nimport { registerModuleTools } from './tools/modules.js';\nimport { registerLessonTools } from './tools/lessons.js';\nimport { registerSkillTools } from './tools/skills.js';\nimport { registerEnrollmentTools } from './tools/enrollments.js';\nimport { registerCohortTools } from './tools/cohorts.js';\nimport { registerCertificateTools } from './tools/certificates.js';\nimport { registerAssessmentTools } from './tools/assessments.js';\nimport { registerSubmissionTools } from './tools/submissions.js';\nimport { registerHealthTools } from './tools/health.js';\nimport { registerBuildmyiqResources } from './resources.js';\nimport { registerBuildmyiqPrompts } from './prompts.js';\n\nconst buildmyiqModule: McpModule = {\n id: 'buildmyiq',\n version: '0.0.1',\n displayName: 'BuildMyIQ',\n dependsOn: ['auth'],\n capabilities: { tools: {}, resources: {}, prompts: {} },\n\n register(server: McpServer, ctx: McpContext): ModuleRegistration {\n const tools: string[] = [];\n const resources: string[] = [];\n const prompts: string[] = [];\n\n const trackTool = (n: string): string => {\n tools.push(n);\n return n;\n };\n const trackResource = (uri: string): string => {\n resources.push(uri);\n return uri;\n };\n const trackPrompt = (n: string): string => {\n prompts.push(n);\n return n;\n };\n\n registerCourseTools(server, ctx, trackTool);\n registerModuleTools(server, ctx, trackTool);\n registerLessonTools(server, ctx, trackTool);\n registerSkillTools(server, ctx, trackTool);\n registerEnrollmentTools(server, ctx, trackTool);\n registerCohortTools(server, ctx, trackTool);\n registerCertificateTools(server, ctx, trackTool);\n registerAssessmentTools(server, ctx, trackTool);\n registerSubmissionTools(server, ctx, trackTool);\n registerHealthTools(server, ctx, trackTool);\n\n registerBuildmyiqResources(server, ctx, trackResource);\n registerBuildmyiqPrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default buildmyiqModule;\n"]}
|