@burdenoff/mcp-libs 2026.627.3 → 2026.627.5

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.
Files changed (61) hide show
  1. package/dist/modules/cosmicintersection/index.cjs +1984 -0
  2. package/dist/modules/cosmicintersection/index.cjs.map +1 -0
  3. package/dist/modules/cosmicintersection/index.d.cts +8 -0
  4. package/dist/modules/cosmicintersection/index.d.ts +8 -0
  5. package/dist/modules/cosmicintersection/index.js +1923 -0
  6. package/dist/modules/cosmicintersection/index.js.map +1 -0
  7. package/dist/modules/ecoimpacthub/index.cjs +2042 -0
  8. package/dist/modules/ecoimpacthub/index.cjs.map +1 -0
  9. package/dist/modules/ecoimpacthub/index.d.cts +8 -0
  10. package/dist/modules/ecoimpacthub/index.d.ts +8 -0
  11. package/dist/modules/ecoimpacthub/index.js +1981 -0
  12. package/dist/modules/ecoimpacthub/index.js.map +1 -0
  13. package/dist/modules/govcitizenhub/index.cjs +1686 -0
  14. package/dist/modules/govcitizenhub/index.cjs.map +1 -0
  15. package/dist/modules/govcitizenhub/index.d.cts +8 -0
  16. package/dist/modules/govcitizenhub/index.d.ts +8 -0
  17. package/dist/modules/govcitizenhub/index.js +1625 -0
  18. package/dist/modules/govcitizenhub/index.js.map +1 -0
  19. package/dist/modules/intelwatchtower/index.cjs +1919 -0
  20. package/dist/modules/intelwatchtower/index.cjs.map +1 -0
  21. package/dist/modules/intelwatchtower/index.d.cts +8 -0
  22. package/dist/modules/intelwatchtower/index.d.ts +8 -0
  23. package/dist/modules/intelwatchtower/index.js +1858 -0
  24. package/dist/modules/intelwatchtower/index.js.map +1 -0
  25. package/dist/modules/manufacturedops/index.cjs +1884 -0
  26. package/dist/modules/manufacturedops/index.cjs.map +1 -0
  27. package/dist/modules/manufacturedops/index.d.cts +8 -0
  28. package/dist/modules/manufacturedops/index.d.ts +8 -0
  29. package/dist/modules/manufacturedops/index.js +1823 -0
  30. package/dist/modules/manufacturedops/index.js.map +1 -0
  31. package/dist/modules/mybodyshield/index.cjs +1834 -0
  32. package/dist/modules/mybodyshield/index.cjs.map +1 -0
  33. package/dist/modules/mybodyshield/index.d.cts +8 -0
  34. package/dist/modules/mybodyshield/index.d.ts +8 -0
  35. package/dist/modules/mybodyshield/index.js +1773 -0
  36. package/dist/modules/mybodyshield/index.js.map +1 -0
  37. package/dist/modules/semanticfed/index.cjs +1846 -0
  38. package/dist/modules/semanticfed/index.cjs.map +1 -0
  39. package/dist/modules/semanticfed/index.d.cts +8 -0
  40. package/dist/modules/semanticfed/index.d.ts +8 -0
  41. package/dist/modules/semanticfed/index.js +1785 -0
  42. package/dist/modules/semanticfed/index.js.map +1 -0
  43. package/dist/modules/technospam/index.cjs +1962 -0
  44. package/dist/modules/technospam/index.cjs.map +1 -0
  45. package/dist/modules/technospam/index.d.cts +8 -0
  46. package/dist/modules/technospam/index.d.ts +8 -0
  47. package/dist/modules/technospam/index.js +1901 -0
  48. package/dist/modules/technospam/index.js.map +1 -0
  49. package/dist/modules/theculturepost/index.cjs +1587 -0
  50. package/dist/modules/theculturepost/index.cjs.map +1 -0
  51. package/dist/modules/theculturepost/index.d.cts +8 -0
  52. package/dist/modules/theculturepost/index.d.ts +8 -0
  53. package/dist/modules/theculturepost/index.js +1526 -0
  54. package/dist/modules/theculturepost/index.js.map +1 -0
  55. package/dist/modules/theglobalfuel/index.cjs +1678 -0
  56. package/dist/modules/theglobalfuel/index.cjs.map +1 -0
  57. package/dist/modules/theglobalfuel/index.d.cts +8 -0
  58. package/dist/modules/theglobalfuel/index.d.ts +8 -0
  59. package/dist/modules/theglobalfuel/index.js +1617 -0
  60. package/dist/modules/theglobalfuel/index.js.map +1 -0
  61. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/core/errors.ts","../../../src/core/result.ts","../../../src/core/tool-name.ts","../../../src/modules/technospam/operations.ts","../../../src/modules/technospam/tools/shared.ts","../../../src/modules/technospam/tools/courses.ts","../../../src/modules/technospam/tools/lessons.ts","../../../src/modules/technospam/tools/enrollments.ts","../../../src/modules/technospam/tools/certificates.ts","../../../src/modules/technospam/tools/problems.ts","../../../src/modules/technospam/tools/submissions.ts","../../../src/modules/technospam/tools/mentors.ts","../../../src/modules/technospam/tools/sessions.ts","../../../src/modules/technospam/tools/hackathons.ts","../../../src/modules/technospam/tools/teams.ts","../../../src/modules/technospam/tools/health.ts","../../../src/modules/technospam/resources.ts","../../../src/modules/technospam/prompts.ts","../../../src/modules/technospam/index.ts"],"names":["z"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Error classes for MCP SDK.\n *\n * Modules MUST throw these instead of throwing raw Errors. The registerTool\n * wrapper in result.ts catches and maps them to MCP-protocol-compliant\n * `{ isError: true, content: [...] }` responses.\n *\n * Throwing past the wrapper to the protocol surfaces as JSON-RPC -32603 to\n * the client and is a protocol bug.\n */\n\nexport class McpUserError extends Error {\n public readonly hint: string | undefined;\n\n constructor(message: string, opts?: { hint?: string }) {\n super(message);\n this.name = 'McpUserError';\n this.hint = opts?.hint;\n }\n}\n\nexport class McpAuthError extends McpUserError {\n constructor(message: string, opts?: { hint?: string }) {\n super(message, {\n hint: opts?.hint ?? 'Run the auth_login tool to authenticate.',\n });\n this.name = 'McpAuthError';\n }\n}\n\nexport class McpInternalError extends Error {\n public override readonly cause: unknown;\n\n constructor(message: string, cause?: unknown) {\n super(message);\n this.name = 'McpInternalError';\n this.cause = cause;\n }\n}\n","/**\n * MCP tool result helpers + central handler.\n *\n * Modules NEVER call server.registerTool directly — they use registerTool()\n * from this module so the central try/catch wraps the handler and:\n * - maps thrown McpUserError / McpAuthError / McpInternalError to\n * MCP-protocol-compliant `{ isError: true, content: [...] }` shapes\n * - threads `_meta.progressToken` into ctx.progress for long ops\n * - emits a structured log line on every error\n * - never leaks `cause` from McpInternalError to the client\n *\n * This is the analog of cli-sdk's createProgram() central error handler.\n */\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { ZodRawShape } from 'zod';\nimport type { McpContext } from './context.js';\nimport { McpAuthError, McpInternalError, McpUserError } from './errors.js';\n\nexport interface ToolTextContent {\n type: 'text';\n text: string;\n [k: string]: unknown;\n}\n\nexport interface ToolResult {\n content: ToolTextContent[];\n isError?: boolean;\n structuredContent?: Record<string, unknown>;\n [k: string]: unknown;\n}\n\nexport interface ToolMeta {\n progressToken?: string | number;\n}\n\n/**\n * Build a successful tool result with JSON content (pretty-printed).\n */\nexport function jsonResult(data: unknown, structured?: Record<string, unknown>): ToolResult {\n const result: ToolResult = {\n content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],\n };\n if (structured !== undefined) {\n result.structuredContent = structured;\n }\n return result;\n}\n\n/**\n * Build a successful tool result with plain text content.\n */\nexport function textResult(text: string): ToolResult {\n return { content: [{ type: 'text', text }] };\n}\n\n/**\n * Build an error tool result. Honors MCP's `{ isError: true, content }` shape.\n * Optional hint is appended on a new line so the LLM can react.\n */\nexport function errorResult(message: string, hint?: string): ToolResult {\n const text = hint ? `${message}\\n\\nHint: ${hint}` : message;\n return { content: [{ type: 'text', text }], isError: true };\n}\n\nexport interface ToolMetadata {\n title: string;\n description: string;\n inputSchema?: ZodRawShape;\n}\n\nexport type ToolHandler<TArgs = Record<string, unknown>> = (\n args: TArgs,\n ctx: McpContext,\n meta: ToolMeta,\n) => Promise<unknown>;\n\n/**\n * Register a tool with the central error wrapper.\n *\n * The handler returns a plain value or void. The wrapper:\n * - wraps non-undefined returns in jsonResult()\n * - if the value already looks like a ToolResult (has `content`), passes through\n * - catches McpAuthError / McpUserError / McpInternalError / generic Error\n * - logs every error via ctx.logger.error\n */\nexport function registerTool<TArgs extends Record<string, unknown>>(\n server: McpServer,\n ctx: McpContext,\n name: string,\n metadata: ToolMetadata,\n handler: ToolHandler<TArgs>,\n): void {\n const sdkConfig = {\n title: metadata.title,\n description: metadata.description,\n ...(metadata.inputSchema ? { inputSchema: metadata.inputSchema } : {}),\n };\n\n // The MCP SDK's registerTool signature is `(name, config, handler)`. The\n // handler arity depends on whether inputSchema is present (1-arg without,\n // 2-arg with). We accept a unified handler shape and dispatch at runtime.\n // The SDK's typing is strict and conditional on the inputSchema generic;\n // bypass with a cast since runtime acceptance is unconditional.\n const wrapped = async (...callbackArgs: unknown[]): Promise<ToolResult> => {\n const hasArgs = callbackArgs.length === 2;\n const args = (hasArgs ? callbackArgs[0] : {}) as TArgs;\n const extra = (hasArgs ? callbackArgs[1] : callbackArgs[0]) as\n | { _meta?: { progressToken?: string | number } }\n | undefined;\n\n const progressToken = extra?._meta?.progressToken;\n const meta: ToolMeta = progressToken !== undefined ? { progressToken } : {};\n\n try {\n const result = await handler(args, ctx, meta);\n if (isToolResult(result)) return result;\n if (result === undefined) return textResult('OK');\n return jsonResult(result);\n } catch (error) {\n return mapErrorToResult(error, ctx, name);\n }\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (server as any).registerTool(name, sdkConfig, wrapped);\n}\n\nfunction isToolResult(value: unknown): value is ToolResult {\n return (\n !!value &&\n typeof value === 'object' &&\n 'content' in value &&\n Array.isArray((value as ToolResult).content)\n );\n}\n\nfunction mapErrorToResult(error: unknown, ctx: McpContext, toolName: string): ToolResult {\n if (error instanceof McpAuthError) {\n ctx.logger.warn(`${toolName}: auth required`, { message: error.message });\n return errorResult(error.message, error.hint);\n }\n if (error instanceof McpUserError) {\n ctx.logger.info(`${toolName}: user error`, { message: error.message });\n return errorResult(error.message, error.hint);\n }\n if (error instanceof McpInternalError) {\n ctx.logger.error(`${toolName}: internal error`, {\n message: error.message,\n cause: stringifyCause(error.cause),\n });\n return errorResult(`Internal error in ${toolName}.`);\n }\n const message = error instanceof Error ? error.message : String(error);\n ctx.logger.error(`${toolName}: unhandled error`, { message });\n return errorResult(`${toolName}: ${message}`);\n}\n\nfunction stringifyCause(cause: unknown): string | undefined {\n if (cause === undefined || cause === null) return undefined;\n if (cause instanceof Error) return cause.message;\n try {\n return JSON.stringify(cause);\n } catch {\n return String(cause);\n }\n}\n","/**\n * Tool / resource / prompt naming helpers.\n *\n * Mandatory product prefix avoids collisions when Claude Desktop runs\n * multiple MCP servers concurrently (typical setup is ~6).\n *\n * Tool names are capped at 63 characters — Claude Desktop pre-1.x\n * truncated at 64 in some versions.\n */\n\nimport { McpInternalError } from './errors.js';\n\nconst MAX_TOOL_NAME_LENGTH = 63;\n\nfunction assertSafeName(name: string, kind: 'tool' | 'resource' | 'prompt'): string {\n if (kind === 'tool' && name.length > MAX_TOOL_NAME_LENGTH) {\n throw new McpInternalError(\n `Tool name '${name}' exceeds ${MAX_TOOL_NAME_LENGTH} characters (some MCP clients truncate at 64).`,\n );\n }\n return name;\n}\n\n/**\n * Build a tool name. Format: `<productName>_<...parts>` (snake_case).\n * Example: mcpToolName('vibecontrols', 'vibes', 'list') -> 'vibecontrols_vibes_list'\n */\nexport function mcpToolName(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpToolName: productName is required');\n }\n const name = [productName, ...parts].filter(Boolean).join('_');\n return assertSafeName(name, 'tool');\n}\n\n/**\n * Build a resource URI. Format: `<productName>://<...parts>`.\n * Example: mcpResourceUri('vibecontrols', 'schema') -> 'vibecontrols://schema'\n */\nexport function mcpResourceUri(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpResourceUri: productName is required');\n }\n return `${productName}://${parts.filter(Boolean).join('/')}`;\n}\n\n/**\n * Build a prompt name. Format: `<productName>-<...parts>` (kebab-case).\n * Example: mcpPromptName('vibecontrols', 'setup') -> 'vibecontrols-setup'\n */\nexport function mcpPromptName(productName: string, ...parts: string[]): string {\n if (!productName) {\n throw new McpInternalError('mcpPromptName: productName is required');\n }\n return [productName, ...parts].filter(Boolean).join('-');\n}\n\nexport const TOOL_NAME_LIMIT = MAX_TOOL_NAME_LENGTH;\n","/**\n * Centralized GraphQL operations for the Technospam MCP module.\n *\n * Technospam is the technical-learning platform (future-products ecosystem):\n * courses + lessons + enrollments + certificates, a competitive-programming\n * practice surface (problems + submissions), 1:1 mentorship (mentors +\n * sessions), and hackathons (events + teams). Backend subgraph:\n * ~/products/wspace/technospam/wspace-technospam-svc/ (Hive service name\n * `technospam`).\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 — Technospam inputs do NOT carry a workspaceId.\n *\n * Every root field carries the inconsistent server `tec` prefix and is called\n * by its REAL name here (tecCourse, tecListCourses, tecCreateCourse, …). List\n * queries split between Connection types ({ items, pageInfo }) and plain\n * arrays — matched per the real schema below.\n *\n * Uses template-string interpolation (not gql tagged fragments) to match the\n * canonical kadaikodi/crewfoundry modules' operations files.\n */\n\n// ---------------------------------------------------------------------------\n// Field fragments\n// ---------------------------------------------------------------------------\n\nexport const COURSE_FIELDS = `\n id slug title summary topic level status estimatedMinutes instructorId\n tags publishedAt workspaceId createdAt updatedAt\n cover { id }\n`;\n\nexport const LESSON_FIELDS = `\n id courseId title kind content position estimatedMinutes isPreview\n file { id } workspaceId createdAt updatedAt\n`;\n\nexport const ENROLLMENT_FIELDS = `\n id courseId learnerId status progressPct lessonsCompleted\n startedAt lastActiveAt completedAt workspaceId createdAt updatedAt\n`;\n\nexport const CERTIFICATE_FIELDS = `\n id courseId learnerId serial score status issuedAt revokedAt revokeReason\n workspaceId createdAt updatedAt\n`;\n\nexport const PROBLEM_FIELDS = `\n id slug title statement topic difficulty status points languages tags\n publishedAt workspaceId createdAt updatedAt\n`;\n\nexport const SUBMISSION_FIELDS = `\n id problemId learnerId code language verdict pointsAwarded runtimeMs\n judgedAt workspaceId createdAt updatedAt\n`;\n\nexport const MENTOR_FIELDS = `\n id userId headline bio expertise hourlyRate currency status\n isAcceptingMentees ratingAvg sessionsCount workspaceId createdAt updatedAt\n`;\n\nexport const SESSION_FIELDS = `\n id mentorId menteeId topic agenda status scheduledAt durationMinutes\n meetingUrl rating feedback cancelledAt completedAt workspaceId createdAt updatedAt\n`;\n\nexport const HACKATHON_FIELDS = `\n id slug title theme description status startAt endAt submissionDeadline\n prizePool currency maxTeamSize tags workspaceId createdAt updatedAt\n`;\n\nexport const TEAM_FIELDS = `\n id hackathonId name captainId memberIds status score projectName projectUrl\n repoUrl pitch submittedAt workspaceId createdAt updatedAt\n`;\n\nexport const PAGE_INFO_FIELDS = `cursor hasMore`;\n\n// ---------------------------------------------------------------------------\n// Courses\n// ---------------------------------------------------------------------------\n\nexport const GET_COURSE = `\n query TechnospamGetCourse($id: ID!) {\n tecCourse(id: $id) {\n ${COURSE_FIELDS}\n lessons { ${LESSON_FIELDS} }\n enrollments { ${ENROLLMENT_FIELDS} }\n }\n }\n`;\n\nexport const LIST_COURSES = `\n query TechnospamListCourses(\n $level: TecCourseLevel\n $status: TecCourseStatus\n $pagination: PaginationInput\n ) {\n tecListCourses(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 TechnospamCreateCourse($input: TecCreateCourseInput!) {\n tecCreateCourse(input: $input) {\n ${COURSE_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_COURSE = `\n mutation TechnospamUpdateCourse($id: ID!, $input: TecUpdateCourseInput!) {\n tecUpdateCourse(id: $id, input: $input) {\n ${COURSE_FIELDS}\n }\n }\n`;\n\nexport const PUBLISH_COURSE = `\n mutation TechnospamPublishCourse($id: ID!) {\n tecPublishCourse(id: $id) {\n ${COURSE_FIELDS}\n }\n }\n`;\n\nexport const ARCHIVE_COURSE = `\n mutation TechnospamArchiveCourse($id: ID!) {\n tecArchiveCourse(id: $id)\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Lessons\n// ---------------------------------------------------------------------------\n\nexport const LIST_LESSONS = `\n query TechnospamListLessons($courseId: ID!) {\n tecListLessons(courseId: $courseId) {\n ${LESSON_FIELDS}\n }\n }\n`;\n\nexport const CREATE_LESSON = `\n mutation TechnospamCreateLesson($input: TecCreateLessonInput!) {\n tecCreateLesson(input: $input) {\n ${LESSON_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_LESSON = `\n mutation TechnospamUpdateLesson($id: ID!, $input: TecUpdateLessonInput!) {\n tecUpdateLesson(id: $id, input: $input) {\n ${LESSON_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Enrollments\n// ---------------------------------------------------------------------------\n\nexport const LIST_ENROLLMENTS = `\n query TechnospamListEnrollments(\n $courseId: ID\n $learnerId: ID\n $pagination: PaginationInput\n ) {\n tecListEnrollments(courseId: $courseId, learnerId: $learnerId, pagination: $pagination) {\n items { ${ENROLLMENT_FIELDS} }\n pageInfo { ${PAGE_INFO_FIELDS} }\n }\n }\n`;\n\nexport const ENROLL = `\n mutation TechnospamEnroll($input: TecEnrollInput!) {\n tecEnroll(input: $input) {\n ${ENROLLMENT_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_PROGRESS = `\n mutation TechnospamUpdateProgress($input: TecUpdateProgressInput!) {\n tecUpdateProgress(input: $input) {\n ${ENROLLMENT_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Certificates\n// ---------------------------------------------------------------------------\n\nexport const LIST_CERTIFICATES = `\n query TechnospamListCertificates($courseId: ID, $learnerId: ID) {\n tecListCertificates(courseId: $courseId, learnerId: $learnerId) {\n ${CERTIFICATE_FIELDS}\n }\n }\n`;\n\nexport const ISSUE_CERTIFICATE = `\n mutation TechnospamIssueCertificate($courseId: ID!, $learnerId: ID!, $score: Int!) {\n tecIssueCertificate(courseId: $courseId, learnerId: $learnerId, score: $score) {\n ${CERTIFICATE_FIELDS}\n }\n }\n`;\n\nexport const REVOKE_CERTIFICATE = `\n mutation TechnospamRevokeCertificate($id: ID!, $reason: String) {\n tecRevokeCertificate(id: $id, reason: $reason) {\n ${CERTIFICATE_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Problems\n// ---------------------------------------------------------------------------\n\nexport const GET_PROBLEM = `\n query TechnospamGetProblem($id: ID!) {\n tecProblem(id: $id) {\n ${PROBLEM_FIELDS}\n submissions { ${SUBMISSION_FIELDS} }\n }\n }\n`;\n\nexport const LIST_PROBLEMS = `\n query TechnospamListProblems(\n $difficulty: TecProblemDifficulty\n $status: TecProblemStatus\n $topic: String\n $pagination: PaginationInput\n ) {\n tecListProblems(\n difficulty: $difficulty\n status: $status\n topic: $topic\n pagination: $pagination\n ) {\n items { ${PROBLEM_FIELDS} }\n pageInfo { ${PAGE_INFO_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_PROBLEM = `\n mutation TechnospamCreateProblem($input: TecCreateProblemInput!) {\n tecCreateProblem(input: $input) {\n ${PROBLEM_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_PROBLEM = `\n mutation TechnospamUpdateProblem($id: ID!, $input: TecUpdateProblemInput!) {\n tecUpdateProblem(id: $id, input: $input) {\n ${PROBLEM_FIELDS}\n }\n }\n`;\n\nexport const PUBLISH_PROBLEM = `\n mutation TechnospamPublishProblem($id: ID!) {\n tecPublishProblem(id: $id) {\n ${PROBLEM_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Submissions\n// ---------------------------------------------------------------------------\n\nexport const LIST_SUBMISSIONS = `\n query TechnospamListSubmissions(\n $learnerId: ID\n $problemId: ID\n $pagination: PaginationInput\n ) {\n tecListSubmissions(learnerId: $learnerId, problemId: $problemId, pagination: $pagination) {\n items { ${SUBMISSION_FIELDS} }\n pageInfo { ${PAGE_INFO_FIELDS} }\n }\n }\n`;\n\nexport const SUBMIT_SOLUTION = `\n mutation TechnospamSubmitSolution($input: TecSubmitSolutionInput!) {\n tecSubmitSolution(input: $input) {\n ${SUBMISSION_FIELDS}\n }\n }\n`;\n\nexport const GRADE_SUBMISSION = `\n mutation TechnospamGradeSubmission(\n $id: ID!\n $verdict: TecSubmissionVerdict!\n $runtimeMs: Int\n ) {\n tecGradeSubmission(id: $id, verdict: $verdict, runtimeMs: $runtimeMs) {\n ${SUBMISSION_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Mentors\n// ---------------------------------------------------------------------------\n\nexport const GET_MENTOR = `\n query TechnospamGetMentor($id: ID!) {\n tecMentor(id: $id) {\n ${MENTOR_FIELDS}\n sessions { ${SESSION_FIELDS} }\n }\n }\n`;\n\nexport const LIST_MENTORS = `\n query TechnospamListMentors($status: TecMentorStatus, $pagination: PaginationInput) {\n tecListMentors(status: $status, pagination: $pagination) {\n items { ${MENTOR_FIELDS} }\n pageInfo { ${PAGE_INFO_FIELDS} }\n }\n }\n`;\n\nexport const BECOME_MENTOR = `\n mutation TechnospamBecomeMentor($input: TecCreateMentorInput!) {\n tecBecomeMentor(input: $input) {\n ${MENTOR_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_MENTOR = `\n mutation TechnospamUpdateMentor($id: ID!, $input: TecUpdateMentorInput!) {\n tecUpdateMentor(id: $id, input: $input) {\n ${MENTOR_FIELDS}\n }\n }\n`;\n\nexport const APPROVE_MENTOR = `\n mutation TechnospamApproveMentor($id: ID!) {\n tecApproveMentor(id: $id) {\n ${MENTOR_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Sessions\n// ---------------------------------------------------------------------------\n\nexport const LIST_SESSIONS = `\n query TechnospamListSessions($mentorId: ID, $menteeId: ID, $status: TecSessionStatus) {\n tecListSessions(mentorId: $mentorId, menteeId: $menteeId, status: $status) {\n ${SESSION_FIELDS}\n }\n }\n`;\n\nexport const BOOK_SESSION = `\n mutation TechnospamBookSession($input: TecBookSessionInput!) {\n tecBookSession(input: $input) {\n ${SESSION_FIELDS}\n }\n }\n`;\n\nexport const CONFIRM_SESSION = `\n mutation TechnospamConfirmSession($id: ID!, $meetingUrl: String) {\n tecConfirmSession(id: $id, meetingUrl: $meetingUrl) {\n ${SESSION_FIELDS}\n }\n }\n`;\n\nexport const CANCEL_SESSION = `\n mutation TechnospamCancelSession($id: ID!) {\n tecCancelSession(id: $id) {\n ${SESSION_FIELDS}\n }\n }\n`;\n\nexport const COMPLETE_SESSION = `\n mutation TechnospamCompleteSession($id: ID!, $rating: Int, $feedback: String) {\n tecCompleteSession(id: $id, rating: $rating, feedback: $feedback) {\n ${SESSION_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Hackathons\n// ---------------------------------------------------------------------------\n\nexport const GET_HACKATHON = `\n query TechnospamGetHackathon($id: ID!) {\n tecHackathon(id: $id) {\n ${HACKATHON_FIELDS}\n teams { ${TEAM_FIELDS} }\n }\n }\n`;\n\nexport const LIST_HACKATHONS = `\n query TechnospamListHackathons($status: TecHackathonStatus, $pagination: PaginationInput) {\n tecListHackathons(status: $status, pagination: $pagination) {\n items { ${HACKATHON_FIELDS} }\n pageInfo { ${PAGE_INFO_FIELDS} }\n }\n }\n`;\n\nexport const CREATE_HACKATHON = `\n mutation TechnospamCreateHackathon($input: TecCreateHackathonInput!) {\n tecCreateHackathon(input: $input) {\n ${HACKATHON_FIELDS}\n }\n }\n`;\n\nexport const UPDATE_HACKATHON = `\n mutation TechnospamUpdateHackathon($id: ID!, $input: TecUpdateHackathonInput!) {\n tecUpdateHackathon(id: $id, input: $input) {\n ${HACKATHON_FIELDS}\n }\n }\n`;\n\nexport const OPEN_REGISTRATION = `\n mutation TechnospamOpenRegistration($id: ID!) {\n tecOpenRegistration(id: $id) {\n ${HACKATHON_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Hackathon teams\n// ---------------------------------------------------------------------------\n\nexport const LIST_TEAMS = `\n query TechnospamListTeams($hackathonId: ID!) {\n tecListTeams(hackathonId: $hackathonId) {\n ${TEAM_FIELDS}\n }\n }\n`;\n\nexport const REGISTER_TEAM = `\n mutation TechnospamRegisterTeam($input: TecRegisterTeamInput!) {\n tecRegisterTeam(input: $input) {\n ${TEAM_FIELDS}\n }\n }\n`;\n\nexport const SUBMIT_PROJECT = `\n mutation TechnospamSubmitProject($input: TecSubmitProjectInput!) {\n tecSubmitProject(input: $input) {\n ${TEAM_FIELDS}\n }\n }\n`;\n\nexport const SCORE_TEAM = `\n mutation TechnospamScoreTeam($id: ID!, $score: Int!, $winner: Boolean) {\n tecScoreTeam(id: $id, score: $score, winner: $winner) {\n ${TEAM_FIELDS}\n }\n }\n`;\n\n// ---------------------------------------------------------------------------\n// Health\n// ---------------------------------------------------------------------------\n\nexport const HEALTH = `\n query TechnospamHealth {\n tecHealth\n }\n`;\n","/**\n * Shared zod schemas for the Technospam tool surface.\n *\n * Every backend enum is mirrored as a tight zod enum so Claude Desktop grounds\n * tool calls against the exact allowed values. Technospam carries no free-form\n * JSON-scalar inputs on its mutations (unlike kadaikodi), so this file is\n * purely the enum mirror plus a pagination helper.\n */\n\nimport { z } from 'zod';\n\nexport const CourseLevelEnum = z\n .enum(['ADVANCED', 'BEGINNER', 'EXPERT', 'INTERMEDIATE'])\n .describe('Difficulty level of a course');\n\nexport const CourseStatusEnum = z\n .enum(['ARCHIVED', 'DRAFT', 'PUBLISHED'])\n .describe('Lifecycle status of a course');\n\nexport const LessonKindEnum = z\n .enum(['ARTICLE', 'INTERACTIVE', 'PROJECT', 'QUIZ', 'VIDEO'])\n .describe('Content type of a lesson');\n\nexport const EnrollmentStatusEnum = z\n .enum(['COMPLETED', 'DROPPED', 'ENROLLED', 'IN_PROGRESS'])\n .describe('Lifecycle status of a learner enrollment');\n\nexport const ProblemDifficultyEnum = z\n .enum(['EASY', 'HARD', 'MEDIUM'])\n .describe('Difficulty of a practice problem');\n\nexport const ProblemStatusEnum = z\n .enum(['ARCHIVED', 'DRAFT', 'PUBLISHED'])\n .describe('Lifecycle status of a practice problem');\n\nexport const SubmissionVerdictEnum = z\n .enum([\n 'ACCEPTED',\n 'COMPILE_ERROR',\n 'PENDING',\n 'RUNTIME_ERROR',\n 'TIME_LIMIT_EXCEEDED',\n 'WRONG_ANSWER',\n ])\n .describe('Grader verdict for a submission');\n\nexport const MentorStatusEnum = z\n .enum(['ACTIVE', 'INACTIVE', 'PAUSED', 'PENDING'])\n .describe('Lifecycle/moderation status of a mentor profile');\n\nexport const SessionStatusEnum = z\n .enum(['CANCELLED', 'COMPLETED', 'CONFIRMED', 'NO_SHOW', 'REQUESTED'])\n .describe('Status of a 1:1 mentor session');\n\nexport const HackathonStatusEnum = z\n .enum(['CANCELLED', 'COMPLETED', 'DRAFT', 'IN_PROGRESS', 'JUDGING', 'REGISTRATION_OPEN'])\n .describe('Lifecycle status of a hackathon');\n\n/** Build the backend PaginationInput from flat limit/offset/cursor tool args. */\nexport function buildPagination(\n limit?: number,\n offset?: number,\n cursor?: string,\n): Record<string, unknown> | undefined {\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 return Object.keys(pagination).length > 0 ? pagination : undefined;\n}\n","/**\n * Technospam course tools — course catalog CRUD + lifecycle.\n *\n * Surface (6): courses_{get,list,create,update,publish,archive}.\n * Backend root fields carry the `tec` prefix (tecCourse, tecListCourses,\n * tecCreateCourse, tecUpdateCourse, tecPublishCourse, tecArchiveCourse) — all\n * called by their REAL names in operations.ts. tecListCourses returns a\n * TecCourseConnection ({ items, pageInfo }); tecArchiveCourse returns Boolean.\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, buildPagination } 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: 'Fetch a single Technospam course by ID, including its lessons and enrollments.',\n inputSchema: { id: z.string().describe('Course ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tecCourse: Record<string, unknown> | null;\n }>(ops.GET_COURSE, { id });\n if (!data.tecCourse) return errorResult(`Course ${id} not found`);\n return jsonResult(data.tecCourse);\n } catch (error) {\n ctx.logger.error('technospam 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 pagination. Returns { items, pageInfo }.',\n inputSchema: {\n level: CourseLevelEnum.optional().describe('Filter by difficulty level'),\n status: CourseStatusEnum.optional().describe('Filter by 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 data = await ctx.gql.workspace.request<{\n tecListCourses: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_COURSES, {\n level,\n status,\n pagination: buildPagination(limit, offset, cursor),\n });\n return jsonResult(data.tecListCourses);\n } catch (error) {\n ctx.logger.error('technospam 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 course (DRAFT). `slug` must be unique within the workspace; `title` is required. Defaults level to BEGINNER.',\n inputSchema: {\n slug: z.string().min(1).describe('URL slug, unique within the workspace'),\n title: z.string().min(1).describe('Course title'),\n summary: z.string().optional().describe('Short course summary'),\n topic: z.string().optional().describe('Primary topic/subject'),\n level: CourseLevelEnum.optional().describe('Difficulty level (default BEGINNER)'),\n estimatedMinutes: z\n .number()\n .int()\n .optional()\n .describe('Estimated total completion time in minutes'),\n instructorId: z.string().optional().describe('User ID of the instructor'),\n coverFileId: z.string().optional().describe('wspace-files File ID for the cover image'),\n tags: z.array(z.string()).optional().describe('Discovery tags'),\n },\n },\n async ({\n slug,\n title,\n summary,\n topic,\n level,\n estimatedMinutes,\n instructorId,\n coverFileId,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { slug, title };\n if (summary !== undefined) input.summary = summary;\n if (topic !== undefined) input.topic = topic;\n if (level !== undefined) input.level = level;\n if (estimatedMinutes !== undefined) input.estimatedMinutes = estimatedMinutes;\n if (instructorId !== undefined) input.instructorId = instructorId;\n if (coverFileId !== undefined) input.coverFileId = coverFileId;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n tecCreateCourse: Record<string, unknown>;\n }>(ops.CREATE_COURSE, { input });\n return jsonResult(data.tecCreateCourse);\n } catch (error) {\n ctx.logger.error('technospam 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.',\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 topic: z.string().optional().describe('Updated topic'),\n level: CourseLevelEnum.optional().describe('Updated difficulty level'),\n estimatedMinutes: z.number().int().optional().describe('Updated estimated minutes'),\n instructorId: z.string().optional().describe('Updated instructor user 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 topic,\n level,\n estimatedMinutes,\n instructorId,\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 (topic !== undefined) input.topic = topic;\n if (level !== undefined) input.level = level;\n if (estimatedMinutes !== undefined) input.estimatedMinutes = estimatedMinutes;\n if (instructorId !== undefined) input.instructorId = instructorId;\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 tecUpdateCourse: Record<string, unknown>;\n }>(ops.UPDATE_COURSE, { id, input });\n return jsonResult(data.tecUpdateCourse);\n } catch (error) {\n ctx.logger.error('technospam 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: 'Publish a course (DRAFT -> PUBLISHED), making it visible to learners.',\n inputSchema: { id: z.string().describe('Course ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tecPublishCourse: Record<string, unknown>;\n }>(ops.PUBLISH_COURSE, { id });\n return jsonResult(data.tecPublishCourse);\n } catch (error) {\n ctx.logger.error('technospam 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 (-> ARCHIVED). 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<{ tecArchiveCourse: boolean }>(\n ops.ARCHIVE_COURSE,\n { id },\n );\n return jsonResult({ archived: data.tecArchiveCourse });\n } catch (error) {\n ctx.logger.error('technospam 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 * Technospam lesson tools — per-course lesson authoring.\n *\n * Surface (3): lessons_{list,create,update}.\n * tecListLessons returns a plain [TecLesson!]! array (not a Connection).\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 { LessonKindEnum } 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: 'List all lessons for a course, ordered by position.',\n inputSchema: { courseId: z.string().describe('Course ID') },\n },\n async ({ courseId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tecListLessons: Array<Record<string, unknown>>;\n }>(ops.LIST_LESSONS, { courseId });\n return jsonResult(data.tecListLessons);\n } catch (error) {\n ctx.logger.error('technospam 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. Defaults kind to ARTICLE and isPreview to false. Use `fileId` to attach a video/file from wspace-files.',\n inputSchema: {\n courseId: z.string().min(1).describe('Owning course ID'),\n title: z.string().min(1).describe('Lesson title'),\n kind: LessonKindEnum.optional().describe('Lesson content type (default ARTICLE)'),\n content: z.string().optional().describe('Lesson body / article content'),\n position: z.number().int().optional().describe('Ordering position within the course'),\n estimatedMinutes: z.number().int().optional().describe('Estimated completion time'),\n isPreview: z.boolean().optional().describe('Free preview lesson (default false)'),\n fileId: z.string().optional().describe('wspace-files File ID (video/attachment)'),\n },\n },\n async ({ courseId, title, kind, content, position, estimatedMinutes, isPreview, fileId }) => {\n try {\n const input: Record<string, unknown> = { courseId, title };\n if (kind !== undefined) input.kind = kind;\n if (content !== undefined) input.content = content;\n if (position !== undefined) input.position = position;\n if (estimatedMinutes !== undefined) input.estimatedMinutes = estimatedMinutes;\n if (isPreview !== undefined) input.isPreview = isPreview;\n if (fileId !== undefined) input.fileId = fileId;\n\n const data = await ctx.gql.workspace.request<{\n tecCreateLesson: Record<string, unknown>;\n }>(ops.CREATE_LESSON, { input });\n return jsonResult(data.tecCreateLesson);\n } catch (error) {\n ctx.logger.error('technospam 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 server.registerTool(\n track(mcpToolName(ctx.productName, 'lessons_update')),\n {\n title: 'Update Lesson',\n description: 'Update a lesson. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Lesson ID'),\n title: z.string().optional().describe('Updated title'),\n kind: LessonKindEnum.optional().describe('Updated content type'),\n content: z.string().optional().describe('Updated body content'),\n position: z.number().int().optional().describe('Updated ordering position'),\n estimatedMinutes: z.number().int().optional().describe('Updated estimated minutes'),\n isPreview: z.boolean().optional().describe('Toggle free-preview flag'),\n fileId: z.string().optional().describe('Updated attached File ID'),\n },\n },\n async ({ id, title, kind, content, position, estimatedMinutes, isPreview, fileId }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (kind !== undefined) input.kind = kind;\n if (content !== undefined) input.content = content;\n if (position !== undefined) input.position = position;\n if (estimatedMinutes !== undefined) input.estimatedMinutes = estimatedMinutes;\n if (isPreview !== undefined) input.isPreview = isPreview;\n if (fileId !== undefined) input.fileId = fileId;\n\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable lesson field');\n }\n\n const data = await ctx.gql.workspace.request<{\n tecUpdateLesson: Record<string, unknown>;\n }>(ops.UPDATE_LESSON, { id, input });\n return jsonResult(data.tecUpdateLesson);\n } catch (error) {\n ctx.logger.error('technospam lessons_update failed', { error: String(error) });\n return errorResult(\n `Failed to update lesson: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Technospam enrollment tools — learner enrollment + progress.\n *\n * Surface (3): enrollments_{list,enroll,update_progress}.\n * tecListEnrollments returns a TecEnrollmentConnection ({ items, pageInfo }).\n * tecEnroll enrolls the calling user (input carries only courseId).\n * tecUpdateProgress auto-completes the enrollment at progressPct 100.\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 { buildPagination } 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_list')),\n {\n title: 'List Enrollments',\n description:\n 'List enrollments, optionally filtered by course and/or learner, with 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 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, limit, offset, cursor }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tecListEnrollments: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_ENROLLMENTS, {\n courseId,\n learnerId,\n pagination: buildPagination(limit, offset, cursor),\n });\n return jsonResult(data.tecListEnrollments);\n } catch (error) {\n ctx.logger.error('technospam 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 In Course',\n description:\n 'Enroll the calling user in a course. The learner identity comes from the gateway-issued actor — only courseId is supplied.',\n inputSchema: { courseId: z.string().min(1).describe('Course ID to enroll in') },\n },\n async ({ courseId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tecEnroll: Record<string, unknown>;\n }>(ops.ENROLL, { input: { courseId } });\n return jsonResult(data.tecEnroll);\n } catch (error) {\n ctx.logger.error('technospam 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_update_progress')),\n {\n title: 'Update Enrollment Progress',\n description:\n \"Update a learner's enrollment progress. Auto-completes the enrollment at progressPct 100.\",\n inputSchema: {\n enrollmentId: z.string().min(1).describe('Enrollment ID'),\n progressPct: z.number().int().min(0).max(100).describe('Progress percentage (0-100)'),\n lessonsCompleted: z.number().int().optional().describe('Count of lessons completed'),\n },\n },\n async ({ enrollmentId, progressPct, lessonsCompleted }) => {\n try {\n const input: Record<string, unknown> = { enrollmentId, progressPct };\n if (lessonsCompleted !== undefined) input.lessonsCompleted = lessonsCompleted;\n\n const data = await ctx.gql.workspace.request<{\n tecUpdateProgress: Record<string, unknown>;\n }>(ops.UPDATE_PROGRESS, { input });\n return jsonResult(data.tecUpdateProgress);\n } catch (error) {\n ctx.logger.error('technospam enrollments_update_progress failed', { error: String(error) });\n return errorResult(\n `Failed to update progress: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Technospam certificate tools — verifiable completion certificates.\n *\n * Surface (3): certificates_{list,issue,revoke}.\n * tecListCertificates returns a plain [TecCertificate!]! array.\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 tecListCertificates: Array<Record<string, unknown>>;\n }>(ops.LIST_CERTIFICATES, { courseId, learnerId });\n return jsonResult(data.tecListCertificates);\n } catch (error) {\n ctx.logger.error('technospam 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 verifiable completion certificate for a learner on a course, with a score.',\n inputSchema: {\n courseId: z.string().min(1).describe('Course ID'),\n learnerId: z.string().min(1).describe('Learner (user) ID'),\n score: z.number().int().min(0).max(100).describe('Final score (0-100)'),\n },\n },\n async ({ courseId, learnerId, score }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tecIssueCertificate: Record<string, unknown>;\n }>(ops.ISSUE_CERTIFICATE, { courseId, learnerId, score });\n return jsonResult(data.tecIssueCertificate);\n } catch (error) {\n ctx.logger.error('technospam 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, with an optional reason.',\n inputSchema: {\n id: z.string().describe('Certificate ID'),\n reason: z.string().optional().describe('Reason for revocation'),\n },\n },\n async ({ id, reason }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tecRevokeCertificate: Record<string, unknown>;\n }>(ops.REVOKE_CERTIFICATE, { id, reason });\n return jsonResult(data.tecRevokeCertificate);\n } catch (error) {\n ctx.logger.error('technospam 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 * Technospam problem tools — competitive-programming practice problems.\n *\n * Surface (5): problems_{get,list,create,update,publish}.\n * tecProblem(id) returns the problem with its submissions; tecListProblems\n * returns a TecProblemConnection ({ 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 { ProblemDifficultyEnum, ProblemStatusEnum, buildPagination } from './shared.js';\n\nexport function registerProblemTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'problems_get')),\n {\n title: 'Get Problem',\n description: 'Fetch a single practice problem by ID, including its submissions.',\n inputSchema: { id: z.string().describe('Problem ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tecProblem: Record<string, unknown> | null;\n }>(ops.GET_PROBLEM, { id });\n if (!data.tecProblem) return errorResult(`Problem ${id} not found`);\n return jsonResult(data.tecProblem);\n } catch (error) {\n ctx.logger.error('technospam problems_get failed', { error: String(error) });\n return errorResult(\n `Failed to get problem: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'problems_list')),\n {\n title: 'List Problems',\n description:\n 'List practice problems with optional difficulty/status/topic filters and pagination. Returns { items, pageInfo }.',\n inputSchema: {\n difficulty: ProblemDifficultyEnum.optional().describe('Filter by difficulty'),\n status: ProblemStatusEnum.optional().describe('Filter by lifecycle status'),\n topic: z.string().optional().describe('Filter by topic'),\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 ({ difficulty, status, topic, limit, offset, cursor }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tecListProblems: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_PROBLEMS, {\n difficulty,\n status,\n topic,\n pagination: buildPagination(limit, offset, cursor),\n });\n return jsonResult(data.tecListProblems);\n } catch (error) {\n ctx.logger.error('technospam problems_list failed', { error: String(error) });\n return errorResult(\n `Failed to list problems: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'problems_create')),\n {\n title: 'Create Problem',\n description:\n 'Create a practice problem (DRAFT). `slug` is unique within the workspace; `title` is required. Defaults difficulty to EASY.',\n inputSchema: {\n slug: z.string().min(1).describe('URL slug, unique within the workspace'),\n title: z.string().min(1).describe('Problem title'),\n statement: z.string().optional().describe('Problem statement / description'),\n topic: z.string().optional().describe('Topic/tag area'),\n difficulty: ProblemDifficultyEnum.optional().describe('Difficulty (default EASY)'),\n points: z.number().int().optional().describe('Points awarded on acceptance'),\n languages: z.array(z.string()).optional().describe('Allowed languages'),\n starterCode: z.string().optional().describe('Starter code template'),\n tags: z.array(z.string()).optional().describe('Discovery tags'),\n },\n },\n async ({ slug, title, statement, topic, difficulty, points, languages, starterCode, tags }) => {\n try {\n const input: Record<string, unknown> = { slug, title };\n if (statement !== undefined) input.statement = statement;\n if (topic !== undefined) input.topic = topic;\n if (difficulty !== undefined) input.difficulty = difficulty;\n if (points !== undefined) input.points = points;\n if (languages !== undefined) input.languages = languages;\n if (starterCode !== undefined) input.starterCode = starterCode;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n tecCreateProblem: Record<string, unknown>;\n }>(ops.CREATE_PROBLEM, { input });\n return jsonResult(data.tecCreateProblem);\n } catch (error) {\n ctx.logger.error('technospam problems_create failed', { error: String(error) });\n return errorResult(\n `Failed to create problem: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'problems_update')),\n {\n title: 'Update Problem',\n description: 'Update a practice problem. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Problem ID'),\n title: z.string().optional().describe('Updated title'),\n statement: z.string().optional().describe('Updated statement'),\n topic: z.string().optional().describe('Updated topic'),\n difficulty: ProblemDifficultyEnum.optional().describe('Updated difficulty'),\n points: z.number().int().optional().describe('Updated points'),\n languages: z.array(z.string()).optional().describe('Updated allowed languages'),\n starterCode: z.string().optional().describe('Updated starter code'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({ id, title, statement, topic, difficulty, points, languages, starterCode, tags }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (statement !== undefined) input.statement = statement;\n if (topic !== undefined) input.topic = topic;\n if (difficulty !== undefined) input.difficulty = difficulty;\n if (points !== undefined) input.points = points;\n if (languages !== undefined) input.languages = languages;\n if (starterCode !== undefined) input.starterCode = starterCode;\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 problem field');\n }\n\n const data = await ctx.gql.workspace.request<{\n tecUpdateProblem: Record<string, unknown>;\n }>(ops.UPDATE_PROBLEM, { id, input });\n return jsonResult(data.tecUpdateProblem);\n } catch (error) {\n ctx.logger.error('technospam problems_update failed', { error: String(error) });\n return errorResult(\n `Failed to update problem: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'problems_publish')),\n {\n title: 'Publish Problem',\n description: 'Publish a practice problem (DRAFT -> PUBLISHED).',\n inputSchema: { id: z.string().describe('Problem ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tecPublishProblem: Record<string, unknown>;\n }>(ops.PUBLISH_PROBLEM, { id });\n return jsonResult(data.tecPublishProblem);\n } catch (error) {\n ctx.logger.error('technospam problems_publish failed', { error: String(error) });\n return errorResult(\n `Failed to publish problem: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Technospam submission tools — problem solution submission + grading.\n *\n * Surface (3): submissions_{list,submit,grade}.\n * tecListSubmissions returns a TecSubmissionConnection ({ items, pageInfo }).\n * tecSubmitSolution creates a PENDING submission; tecGradeSubmission records\n * the grader verdict (awards points if ACCEPTED).\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 { SubmissionVerdictEnum, buildPagination } 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 problem submissions, optionally filtered by learner and/or problem, with pagination. Returns { items, pageInfo }.',\n inputSchema: {\n learnerId: z.string().optional().describe('Filter by learner (user) ID'),\n problemId: z.string().optional().describe('Filter by problem ID'),\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 ({ learnerId, problemId, limit, offset, cursor }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tecListSubmissions: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_SUBMISSIONS, {\n learnerId,\n problemId,\n pagination: buildPagination(limit, offset, cursor),\n });\n return jsonResult(data.tecListSubmissions);\n } catch (error) {\n ctx.logger.error('technospam 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 Solution',\n description:\n 'Submit a solution to a problem. Created PENDING then graded into a verdict. The learner identity comes from the gateway-issued actor.',\n inputSchema: {\n problemId: z.string().min(1).describe('Problem ID'),\n language: z.string().min(1).describe('Solution language'),\n code: z.string().min(1).describe('Solution source code'),\n },\n },\n async ({ problemId, language, code }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tecSubmitSolution: Record<string, unknown>;\n }>(ops.SUBMIT_SOLUTION, { input: { problemId, language, code } });\n return jsonResult(data.tecSubmitSolution);\n } catch (error) {\n ctx.logger.error('technospam submissions_submit failed', { error: String(error) });\n return errorResult(\n `Failed to submit solution: ${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 'Record the grader verdict for a submission (awards points if ACCEPTED). Optionally record runtimeMs.',\n inputSchema: {\n id: z.string().describe('Submission ID'),\n verdict: SubmissionVerdictEnum.describe('Grader verdict'),\n runtimeMs: z.number().int().optional().describe('Execution runtime in milliseconds'),\n },\n },\n async ({ id, verdict, runtimeMs }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tecGradeSubmission: Record<string, unknown>;\n }>(ops.GRADE_SUBMISSION, { id, verdict, runtimeMs });\n return jsonResult(data.tecGradeSubmission);\n } catch (error) {\n ctx.logger.error('technospam 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 * Technospam mentor tools — mentor profiles + moderation.\n *\n * Surface (5): mentors_{get,list,become,update,approve}.\n * tecMentor(id) returns the mentor with its sessions; tecListMentors returns a\n * TecMentorConnection ({ items, pageInfo }). tecBecomeMentor creates the\n * calling user's profile (PENDING); tecApproveMentor moves PENDING -> ACTIVE.\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 { MentorStatusEnum, buildPagination } from './shared.js';\n\nexport function registerMentorTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'mentors_get')),\n {\n title: 'Get Mentor',\n description: 'Fetch a single mentor profile by ID, including its sessions.',\n inputSchema: { id: z.string().describe('Mentor ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tecMentor: Record<string, unknown> | null;\n }>(ops.GET_MENTOR, { id });\n if (!data.tecMentor) return errorResult(`Mentor ${id} not found`);\n return jsonResult(data.tecMentor);\n } catch (error) {\n ctx.logger.error('technospam mentors_get failed', { error: String(error) });\n return errorResult(\n `Failed to get mentor: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'mentors_list')),\n {\n title: 'List Mentors',\n description:\n 'List mentor profiles with optional status filter and pagination. Returns { items, pageInfo }.',\n inputSchema: {\n status: MentorStatusEnum.optional().describe('Filter by 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 ({ status, limit, offset, cursor }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tecListMentors: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_MENTORS, {\n status,\n pagination: buildPagination(limit, offset, cursor),\n });\n return jsonResult(data.tecListMentors);\n } catch (error) {\n ctx.logger.error('technospam mentors_list failed', { error: String(error) });\n return errorResult(\n `Failed to list mentors: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'mentors_become')),\n {\n title: 'Become Mentor',\n description:\n \"Create the calling user's mentor profile (one per user per workspace). Starts PENDING until approved.\",\n inputSchema: {\n headline: z.string().min(1).describe('Short professional headline'),\n bio: z.string().optional().describe('Longer mentor bio'),\n expertise: z.array(z.string()).optional().describe('Areas of expertise'),\n hourlyRate: z.number().int().optional().describe('Hourly rate (minor units / whole)'),\n currency: z.string().optional().describe('Currency code for the hourly rate'),\n },\n },\n async ({ headline, bio, expertise, hourlyRate, currency }) => {\n try {\n const input: Record<string, unknown> = { headline };\n if (bio !== undefined) input.bio = bio;\n if (expertise !== undefined) input.expertise = expertise;\n if (hourlyRate !== undefined) input.hourlyRate = hourlyRate;\n if (currency !== undefined) input.currency = currency;\n\n const data = await ctx.gql.workspace.request<{\n tecBecomeMentor: Record<string, unknown>;\n }>(ops.BECOME_MENTOR, { input });\n return jsonResult(data.tecBecomeMentor);\n } catch (error) {\n ctx.logger.error('technospam mentors_become failed', { error: String(error) });\n return errorResult(\n `Failed to become mentor: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'mentors_update')),\n {\n title: 'Update Mentor',\n description:\n 'Update a mentor profile. At least one mutable field must be provided. Use `isAcceptingMentees` to toggle availability.',\n inputSchema: {\n id: z.string().describe('Mentor ID'),\n headline: z.string().optional().describe('Updated headline'),\n bio: z.string().optional().describe('Updated bio'),\n expertise: z.array(z.string()).optional().describe('Updated expertise areas'),\n hourlyRate: z.number().int().optional().describe('Updated hourly rate'),\n currency: z.string().optional().describe('Updated currency code'),\n isAcceptingMentees: z.boolean().optional().describe('Toggle accepting new mentees'),\n },\n },\n async ({ id, headline, bio, expertise, hourlyRate, currency, isAcceptingMentees }) => {\n try {\n const input: Record<string, unknown> = {};\n if (headline !== undefined) input.headline = headline;\n if (bio !== undefined) input.bio = bio;\n if (expertise !== undefined) input.expertise = expertise;\n if (hourlyRate !== undefined) input.hourlyRate = hourlyRate;\n if (currency !== undefined) input.currency = currency;\n if (isAcceptingMentees !== undefined) input.isAcceptingMentees = isAcceptingMentees;\n\n if (Object.keys(input).length === 0) {\n return errorResult('No updates specified — provide at least one mutable mentor field');\n }\n\n const data = await ctx.gql.workspace.request<{\n tecUpdateMentor: Record<string, unknown>;\n }>(ops.UPDATE_MENTOR, { id, input });\n return jsonResult(data.tecUpdateMentor);\n } catch (error) {\n ctx.logger.error('technospam mentors_update failed', { error: String(error) });\n return errorResult(\n `Failed to update mentor: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'mentors_approve')),\n {\n title: 'Approve Mentor',\n description: 'Approve a pending mentor profile (PENDING -> ACTIVE).',\n inputSchema: { id: z.string().describe('Mentor ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tecApproveMentor: Record<string, unknown>;\n }>(ops.APPROVE_MENTOR, { id });\n return jsonResult(data.tecApproveMentor);\n } catch (error) {\n ctx.logger.error('technospam mentors_approve failed', { error: String(error) });\n return errorResult(\n `Failed to approve mentor: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Technospam mentor-session tools — 1:1 session booking + lifecycle.\n *\n * Surface (5): sessions_{list,book,confirm,cancel,complete}.\n * tecListSessions returns a plain [TecMentorSession!]! array. tecBookSession\n * books as the calling mentee; confirm/cancel/complete drive the lifecycle.\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 { SessionStatusEnum } from './shared.js';\n\nexport function registerSessionTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_list')),\n {\n title: 'List Sessions',\n description: 'List mentor sessions, optionally filtered by mentor, mentee, and/or status.',\n inputSchema: {\n mentorId: z.string().optional().describe('Filter by mentor ID'),\n menteeId: z.string().optional().describe('Filter by mentee (user) ID'),\n status: SessionStatusEnum.optional().describe('Filter by session status'),\n },\n },\n async ({ mentorId, menteeId, status }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tecListSessions: Array<Record<string, unknown>>;\n }>(ops.LIST_SESSIONS, { mentorId, menteeId, status });\n return jsonResult(data.tecListSessions);\n } catch (error) {\n ctx.logger.error('technospam sessions_list failed', { error: String(error) });\n return errorResult(\n `Failed to list sessions: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_book')),\n {\n title: 'Book Session',\n description:\n 'Book a 1:1 session with a mentor as the calling mentee. `scheduledAt` is an ISO-8601 DateTime.',\n inputSchema: {\n mentorId: z.string().min(1).describe('Mentor ID'),\n topic: z.string().min(1).describe('Session topic'),\n scheduledAt: z.string().min(1).describe('ISO-8601 DateTime of the session start'),\n agenda: z.string().optional().describe('Session agenda / goals'),\n durationMinutes: z.number().int().optional().describe('Session duration in minutes'),\n },\n },\n async ({ mentorId, topic, scheduledAt, agenda, durationMinutes }) => {\n try {\n const input: Record<string, unknown> = { mentorId, topic, scheduledAt };\n if (agenda !== undefined) input.agenda = agenda;\n if (durationMinutes !== undefined) input.durationMinutes = durationMinutes;\n\n const data = await ctx.gql.workspace.request<{\n tecBookSession: Record<string, unknown>;\n }>(ops.BOOK_SESSION, { input });\n return jsonResult(data.tecBookSession);\n } catch (error) {\n ctx.logger.error('technospam sessions_book failed', { error: String(error) });\n return errorResult(\n `Failed to book session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_confirm')),\n {\n title: 'Confirm Session',\n description: 'Confirm a requested session, optionally attaching a meeting URL.',\n inputSchema: {\n id: z.string().describe('Session ID'),\n meetingUrl: z.string().optional().describe('Meeting/video-call URL'),\n },\n },\n async ({ id, meetingUrl }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tecConfirmSession: Record<string, unknown>;\n }>(ops.CONFIRM_SESSION, { id, meetingUrl });\n return jsonResult(data.tecConfirmSession);\n } catch (error) {\n ctx.logger.error('technospam sessions_confirm failed', { error: String(error) });\n return errorResult(\n `Failed to confirm session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_cancel')),\n {\n title: 'Cancel Session',\n description: 'Cancel a session.',\n inputSchema: { id: z.string().describe('Session ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tecCancelSession: Record<string, unknown>;\n }>(ops.CANCEL_SESSION, { id });\n return jsonResult(data.tecCancelSession);\n } catch (error) {\n ctx.logger.error('technospam sessions_cancel failed', { error: String(error) });\n return errorResult(\n `Failed to cancel session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'sessions_complete')),\n {\n title: 'Complete Session',\n description:\n 'Mark a session complete, optionally recording a rating (1-5) and feedback from the mentee.',\n inputSchema: {\n id: z.string().describe('Session ID'),\n rating: z.number().int().min(1).max(5).optional().describe('Mentee rating (1-5)'),\n feedback: z.string().optional().describe('Mentee feedback'),\n },\n },\n async ({ id, rating, feedback }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tecCompleteSession: Record<string, unknown>;\n }>(ops.COMPLETE_SESSION, { id, rating, feedback });\n return jsonResult(data.tecCompleteSession);\n } catch (error) {\n ctx.logger.error('technospam sessions_complete failed', { error: String(error) });\n return errorResult(\n `Failed to complete session: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Technospam hackathon tools — hackathon events + lifecycle.\n *\n * Surface (5): hackathons_{get,list,create,update,open_registration}.\n * tecHackathon(id) returns the hackathon with its teams; tecListHackathons\n * returns a TecHackathonConnection ({ 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 { HackathonStatusEnum, buildPagination } from './shared.js';\n\nexport function registerHackathonTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'hackathons_get')),\n {\n title: 'Get Hackathon',\n description: 'Fetch a single hackathon by ID, including its registered teams.',\n inputSchema: { id: z.string().describe('Hackathon ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tecHackathon: Record<string, unknown> | null;\n }>(ops.GET_HACKATHON, { id });\n if (!data.tecHackathon) return errorResult(`Hackathon ${id} not found`);\n return jsonResult(data.tecHackathon);\n } catch (error) {\n ctx.logger.error('technospam hackathons_get failed', { error: String(error) });\n return errorResult(\n `Failed to get hackathon: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'hackathons_list')),\n {\n title: 'List Hackathons',\n description:\n 'List hackathons with optional status filter and pagination. Returns { items, pageInfo }.',\n inputSchema: {\n status: HackathonStatusEnum.optional().describe('Filter by 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 ({ status, limit, offset, cursor }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tecListHackathons: { items: Array<Record<string, unknown>>; pageInfo: unknown };\n }>(ops.LIST_HACKATHONS, {\n status,\n pagination: buildPagination(limit, offset, cursor),\n });\n return jsonResult(data.tecListHackathons);\n } catch (error) {\n ctx.logger.error('technospam hackathons_list failed', { error: String(error) });\n return errorResult(\n `Failed to list hackathons: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'hackathons_create')),\n {\n title: 'Create Hackathon',\n description:\n 'Create a hackathon (DRAFT). `slug`/`title` required; `startAt`/`endAt` are ISO-8601 DateTimes.',\n inputSchema: {\n slug: z.string().min(1).describe('URL slug, unique within the workspace'),\n title: z.string().min(1).describe('Hackathon title'),\n startAt: z.string().min(1).describe('ISO-8601 DateTime start'),\n endAt: z.string().min(1).describe('ISO-8601 DateTime end'),\n theme: z.string().optional().describe('Hackathon theme'),\n description: z.string().optional().describe('Hackathon description'),\n submissionDeadline: z.string().optional().describe('ISO-8601 DateTime submission deadline'),\n prizePool: z.number().int().optional().describe('Total prize pool amount'),\n currency: z.string().optional().describe('Prize-pool currency code'),\n maxTeamSize: z.number().int().optional().describe('Maximum team size'),\n tags: z.array(z.string()).optional().describe('Discovery tags'),\n },\n },\n async ({\n slug,\n title,\n startAt,\n endAt,\n theme,\n description,\n submissionDeadline,\n prizePool,\n currency,\n maxTeamSize,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = { slug, title, startAt, endAt };\n if (theme !== undefined) input.theme = theme;\n if (description !== undefined) input.description = description;\n if (submissionDeadline !== undefined) input.submissionDeadline = submissionDeadline;\n if (prizePool !== undefined) input.prizePool = prizePool;\n if (currency !== undefined) input.currency = currency;\n if (maxTeamSize !== undefined) input.maxTeamSize = maxTeamSize;\n if (tags !== undefined) input.tags = tags;\n\n const data = await ctx.gql.workspace.request<{\n tecCreateHackathon: Record<string, unknown>;\n }>(ops.CREATE_HACKATHON, { input });\n return jsonResult(data.tecCreateHackathon);\n } catch (error) {\n ctx.logger.error('technospam hackathons_create failed', { error: String(error) });\n return errorResult(\n `Failed to create hackathon: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'hackathons_update')),\n {\n title: 'Update Hackathon',\n description: 'Update a hackathon. At least one mutable field must be provided.',\n inputSchema: {\n id: z.string().describe('Hackathon ID'),\n title: z.string().optional().describe('Updated title'),\n theme: z.string().optional().describe('Updated theme'),\n description: z.string().optional().describe('Updated description'),\n startAt: z.string().optional().describe('Updated ISO-8601 DateTime start'),\n endAt: z.string().optional().describe('Updated ISO-8601 DateTime end'),\n submissionDeadline: z.string().optional().describe('Updated submission deadline'),\n prizePool: z.number().int().optional().describe('Updated prize pool'),\n currency: z.string().optional().describe('Updated currency code'),\n maxTeamSize: z.number().int().optional().describe('Updated max team size'),\n tags: z.array(z.string()).optional().describe('Updated tags'),\n },\n },\n async ({\n id,\n title,\n theme,\n description,\n startAt,\n endAt,\n submissionDeadline,\n prizePool,\n currency,\n maxTeamSize,\n tags,\n }) => {\n try {\n const input: Record<string, unknown> = {};\n if (title !== undefined) input.title = title;\n if (theme !== undefined) input.theme = theme;\n if (description !== undefined) input.description = description;\n if (startAt !== undefined) input.startAt = startAt;\n if (endAt !== undefined) input.endAt = endAt;\n if (submissionDeadline !== undefined) input.submissionDeadline = submissionDeadline;\n if (prizePool !== undefined) input.prizePool = prizePool;\n if (currency !== undefined) input.currency = currency;\n if (maxTeamSize !== undefined) input.maxTeamSize = maxTeamSize;\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 hackathon field');\n }\n\n const data = await ctx.gql.workspace.request<{\n tecUpdateHackathon: Record<string, unknown>;\n }>(ops.UPDATE_HACKATHON, { id, input });\n return jsonResult(data.tecUpdateHackathon);\n } catch (error) {\n ctx.logger.error('technospam hackathons_update failed', { error: String(error) });\n return errorResult(\n `Failed to update hackathon: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'hackathons_open_registration')),\n {\n title: 'Open Hackathon Registration',\n description: 'Open registration for a hackathon (DRAFT -> REGISTRATION_OPEN).',\n inputSchema: { id: z.string().describe('Hackathon ID') },\n },\n async ({ id }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tecOpenRegistration: Record<string, unknown>;\n }>(ops.OPEN_REGISTRATION, { id });\n return jsonResult(data.tecOpenRegistration);\n } catch (error) {\n ctx.logger.error('technospam hackathons_open_registration failed', {\n error: String(error),\n });\n return errorResult(\n `Failed to open registration: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Technospam hackathon-team tools — team registration + judging.\n *\n * Surface (4): teams_{list,register,submit_project,score}.\n * tecListTeams returns a plain [TecHackathonTeam!]! array. tecRegisterTeam\n * registers a team with the calling user as captain; tecSubmitProject submits\n * for judging; tecScoreTeam records a judge score (optionally WINNER).\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 registerTeamTools(\n server: McpServer,\n ctx: McpContext,\n track: (n: string) => string,\n): void {\n server.registerTool(\n track(mcpToolName(ctx.productName, 'teams_list')),\n {\n title: 'List Teams',\n description: 'List all teams registered for a hackathon.',\n inputSchema: { hackathonId: z.string().describe('Hackathon ID') },\n },\n async ({ hackathonId }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tecListTeams: Array<Record<string, unknown>>;\n }>(ops.LIST_TEAMS, { hackathonId });\n return jsonResult(data.tecListTeams);\n } catch (error) {\n ctx.logger.error('technospam teams_list failed', { error: String(error) });\n return errorResult(\n `Failed to list teams: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'teams_register')),\n {\n title: 'Register Team',\n description:\n 'Register a team for a hackathon with the calling user as captain. `memberIds` are additional team member user IDs.',\n inputSchema: {\n hackathonId: z.string().min(1).describe('Hackathon ID'),\n name: z.string().min(1).describe('Team name'),\n memberIds: z.array(z.string()).optional().describe('Additional member user IDs'),\n },\n },\n async ({ hackathonId, name, memberIds }) => {\n try {\n const input: Record<string, unknown> = { hackathonId, name };\n if (memberIds !== undefined) input.memberIds = memberIds;\n\n const data = await ctx.gql.workspace.request<{\n tecRegisterTeam: Record<string, unknown>;\n }>(ops.REGISTER_TEAM, { input });\n return jsonResult(data.tecRegisterTeam);\n } catch (error) {\n ctx.logger.error('technospam teams_register failed', { error: String(error) });\n return errorResult(\n `Failed to register team: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'teams_submit_project')),\n {\n title: 'Submit Team Project',\n description: \"Submit a team's project for judging (sets status SUBMITTED).\",\n inputSchema: {\n teamId: z.string().min(1).describe('Team ID'),\n projectName: z.string().min(1).describe('Project name'),\n projectUrl: z.string().optional().describe('Live project / demo URL'),\n repoUrl: z.string().optional().describe('Source repository URL'),\n pitch: z.string().optional().describe('Project pitch / description'),\n },\n },\n async ({ teamId, projectName, projectUrl, repoUrl, pitch }) => {\n try {\n const input: Record<string, unknown> = { teamId, projectName };\n if (projectUrl !== undefined) input.projectUrl = projectUrl;\n if (repoUrl !== undefined) input.repoUrl = repoUrl;\n if (pitch !== undefined) input.pitch = pitch;\n\n const data = await ctx.gql.workspace.request<{\n tecSubmitProject: Record<string, unknown>;\n }>(ops.SUBMIT_PROJECT, { input });\n return jsonResult(data.tecSubmitProject);\n } catch (error) {\n ctx.logger.error('technospam teams_submit_project failed', { error: String(error) });\n return errorResult(\n `Failed to submit project: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n\n server.registerTool(\n track(mcpToolName(ctx.productName, 'teams_score')),\n {\n title: 'Score Team',\n description: 'Record a judge score for a team and optionally mark it WINNER.',\n inputSchema: {\n id: z.string().describe('Team ID'),\n score: z.number().int().describe('Judge score'),\n winner: z.boolean().optional().describe('Mark the team as a WINNER'),\n },\n },\n async ({ id, score, winner }) => {\n try {\n const data = await ctx.gql.workspace.request<{\n tecScoreTeam: Record<string, unknown>;\n }>(ops.SCORE_TEAM, { id, score, winner });\n return jsonResult(data.tecScoreTeam);\n } catch (error) {\n ctx.logger.error('technospam teams_score failed', { error: String(error) });\n return errorResult(\n `Failed to score team: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n },\n );\n}\n","/**\n * Technospam health tool.\n *\n * Surface (1): health.\n * Maps to the @public tecHealth query (no auth required) — the\n * liveness/identity probe for the Technospam subgraph.\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: 'Technospam Health Check',\n description:\n 'Public health probe for the Technospam subgraph (tecHealth). Requires no authentication.',\n inputSchema: {},\n },\n async () => {\n try {\n const data = await ctx.gql.workspace.request<{ tecHealth: string }>(ops.HEALTH, {});\n return jsonResult({ ok: true, status: data.tecHealth });\n } catch (error) {\n ctx.logger.error('technospam health failed', { error: String(error) });\n return errorResult(\n `Technospam 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_HACKATHONS, LIST_MENTORS } from './operations.js';\n\n/**\n * Read-only Technospam 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 registerTechnospamResources(\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 hackathonsUri = track(mcpResourceUri(ctx.productName, 'hackathons'));\n const mentorsUri = track(mcpResourceUri(ctx.productName, 'mentors'));\n\n // <product>://schema — domain overview\n server.registerResource(\n 'technospam-schema',\n schemaUri,\n {\n title: 'Technospam Domain Schema',\n description:\n 'Overview of the Technospam 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 = `# Technospam Domain (Overview)\n\nTechnical-learning platform: courses, competitive-programming practice,\n1:1 mentorship, and hackathons.\n\n## Entities\n- TecCourse (+TecLesson) — a course and its ordered lessons\n- TecEnrollment — a learner's progress through a course\n- TecCertificate — a verifiable completion certificate\n- TecProblem (+TecSubmission) — a practice problem and its graded submissions\n- TecMentor (+TecMentorSession) — a mentor profile and its 1:1 sessions\n- TecHackathon (+TecHackathonTeam) — a hackathon event and its teams\n\n## Enums\n- TecCourseLevel: BEGINNER, INTERMEDIATE, ADVANCED, EXPERT\n- TecCourseStatus: DRAFT, PUBLISHED, ARCHIVED\n- TecLessonKind: ARTICLE, VIDEO, QUIZ, PROJECT, INTERACTIVE\n- TecEnrollmentStatus: ENROLLED, IN_PROGRESS, COMPLETED, DROPPED\n- TecCertificateStatus: ISSUED, REVOKED\n- TecProblemDifficulty: EASY, MEDIUM, HARD\n- TecProblemStatus: DRAFT, PUBLISHED, ARCHIVED\n- TecSubmissionVerdict: PENDING, ACCEPTED, WRONG_ANSWER, TIME_LIMIT_EXCEEDED, RUNTIME_ERROR, COMPILE_ERROR\n- TecMentorStatus: PENDING, ACTIVE, PAUSED, INACTIVE\n- TecSessionStatus: REQUESTED, CONFIRMED, COMPLETED, CANCELLED, NO_SHOW\n- TecHackathonStatus: DRAFT, REGISTRATION_OPEN, IN_PROGRESS, JUDGING, COMPLETED, CANCELLED\n- TecTeamSubmissionStatus: DRAFT, SUBMITTED, WINNER, DISQUALIFIED\n\n## Tool groups\ncourses, lessons, enrollments, certificates, problems, submissions, mentors,\nsessions, hackathons, teams. All run against the WORKSPACE gateway\n(workspace-scoped) except the public health probe.\n`;\n return {\n contents: [{ uri: schemaUri, text: schema, mimeType: 'text/plain' }],\n };\n },\n );\n\n // <product>://courses — published-course catalog\n server.registerResource(\n 'technospam-courses',\n coursesUri,\n {\n title: 'Technospam 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<{ tecListCourses: unknown }>(LIST_COURSES, {\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: coursesUri,\n text: JSON.stringify(data.tecListCourses, 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>://hackathons — hackathon directory\n server.registerResource(\n 'technospam-hackathons',\n hackathonsUri,\n {\n title: 'Technospam Hackathon Directory',\n description: 'The first 50 hackathons in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${hackathonsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ tecListHackathons: unknown }>(\n LIST_HACKATHONS,\n { pagination: { limit: 50, offset: 0 } },\n );\n return {\n contents: [\n {\n uri: hackathonsUri,\n text: JSON.stringify(data.tecListHackathons, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: hackathonsUri,\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>://mentors — mentor directory\n server.registerResource(\n 'technospam-mentors',\n mentorsUri,\n {\n title: 'Technospam Mentor Directory',\n description: 'The first 50 mentor profiles in the bound workspace.',\n mimeType: 'application/json',\n },\n async () => {\n ctx.logger.debug(`Resource ${mentorsUri} requested`);\n try {\n const data = await ctx.gql.workspace.request<{ tecListMentors: unknown }>(LIST_MENTORS, {\n pagination: { limit: 50, offset: 0 },\n });\n return {\n contents: [\n {\n uri: mentorsUri,\n text: JSON.stringify(data.tecListMentors, null, 2),\n mimeType: 'application/json',\n },\n ],\n };\n } catch (error) {\n return {\n contents: [\n {\n uri: mentorsUri,\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 * Technospam MCP prompts — guided multi-step workflows. Names are\n * product-prefixed via mcpPromptName and tracked at function entry.\n */\nexport function registerTechnospamPrompts(\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, 'learning-ops'));\n\n // <product>-course-authoring — stand up a course + lessons + publish\n server.registerPrompt(\n authoringName,\n {\n title: 'Course Authoring',\n description:\n 'Guide for authoring a new Technospam course end to end: create the course, add lessons, publish it, and (optionally) issue completion certificates.',\n argsSchema: {\n title: z.string().optional().describe('Course title'),\n topic: z.string().optional().describe('Course topic/subject'),\n },\n },\n ({ title, topic }) => {\n ctx.logger.debug(`Prompt ${authoringName} called`, { title, topic });\n const titleNote = title ? `Use the title \"${title}\".` : 'Ask the user for the course title.';\n const topicNote = topic ? `Use topic \"${topic}\".` : 'Help the user pick a topic.';\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Help me author a new Technospam course.\n\n1. **Create Course**: Use ${p}_courses_create. ${titleNote} ${topicNote} Provide a unique slug, a level (BEGINNER/INTERMEDIATE/ADVANCED/EXPERT), and optional estimatedMinutes.\n2. **Add Lessons**: Use ${p}_lessons_create for each lesson — set kind (ARTICLE/VIDEO/QUIZ/PROJECT/INTERACTIVE), position, and optional content or a fileId (video/attachment).\n3. **Verify Outline**: Use ${p}_lessons_list for the new courseId to confirm ordering.\n4. **Publish**: Use ${p}_courses_publish when the outline is complete (DRAFT -> PUBLISHED).\n5. **(Optional) Certificates**: After learners finish, use ${p}_certificates_issue (courseId, learnerId, score).\n\nShow results at each step and confirm before publishing.`,\n },\n },\n ],\n };\n },\n );\n\n // <product>-learning-ops — practice, mentorship, hackathon operations\n server.registerPrompt(\n opsName,\n {\n title: 'Learning Operations',\n description:\n 'Operations workflow across the Technospam learning surfaces: triage practice submissions, manage mentor sessions, and run hackathon judging.',\n argsSchema: {\n problemId: z.string().optional().describe('Problem ID to triage submissions for'),\n hackathonId: z.string().optional().describe('Hackathon ID to operate'),\n },\n },\n ({ problemId, hackathonId }) => {\n ctx.logger.debug(`Prompt ${opsName} called`, { problemId, hackathonId });\n const problemNote = problemId\n ? `Triage submissions for problem \"${problemId}\".`\n : `First list problems with ${p}_problems_list and pick one.`;\n const hackathonNote = hackathonId\n ? `Operate hackathon \"${hackathonId}\".`\n : `List hackathons with ${p}_hackathons_list and pick one.`;\n return {\n messages: [\n {\n role: 'user' as const,\n content: {\n type: 'text' as const,\n text: `Run Technospam learning operations.\n\n1. **Practice Queue**: ${problemNote} Use ${p}_submissions_list filtered by problemId and grade PENDING ones with ${p}_submissions_grade (verdict + runtimeMs).\n2. **Mentorship**: Use ${p}_mentors_list (status=PENDING) and approve qualified mentors with ${p}_mentors_approve. Use ${p}_sessions_list (status=REQUESTED) and confirm them with ${p}_sessions_confirm; complete finished sessions with ${p}_sessions_complete.\n3. **Hackathon Judging**: ${hackathonNote} Use ${p}_teams_list for the hackathon; for each SUBMITTED team record a score with ${p}_teams_score (set winner=true for the winner). Move the hackathon through its lifecycle with ${p}_hackathons_update / ${p}_hackathons_open_registration as needed.\n\nSummarize what needs attention after each step.`,\n },\n },\n ],\n };\n },\n );\n}\n","/**\n * Technospam module — domain module for the future-products ecosystem program.\n *\n * Covers all 10 @key entities of wspace-technospam-svc grouped into per-entity\n * sub-APIs: courses, lessons, enrollments, certificates, problems, submissions,\n * mentors, sessions, hackathons, teams (+ a public health probe). Mirrors the\n * kadaikodi/crewfoundry modules' structure (tools/<entity>.ts + resources.ts +\n * prompts.ts) and the canonical tags module's typing discipline.\n *\n * Backend: ~/products/wspace/technospam/wspace-technospam-svc/\n * (Hive service name `technospam`). All operations run against the WORKSPACE\n * gateway; the @public tecHealth 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 { registerLessonTools } from './tools/lessons.js';\nimport { registerEnrollmentTools } from './tools/enrollments.js';\nimport { registerCertificateTools } from './tools/certificates.js';\nimport { registerProblemTools } from './tools/problems.js';\nimport { registerSubmissionTools } from './tools/submissions.js';\nimport { registerMentorTools } from './tools/mentors.js';\nimport { registerSessionTools } from './tools/sessions.js';\nimport { registerHackathonTools } from './tools/hackathons.js';\nimport { registerTeamTools } from './tools/teams.js';\nimport { registerHealthTools } from './tools/health.js';\nimport { registerTechnospamResources } from './resources.js';\nimport { registerTechnospamPrompts } from './prompts.js';\n\nconst technospamModule: McpModule = {\n id: 'technospam',\n version: '0.0.1',\n displayName: 'Technospam',\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 registerLessonTools(server, ctx, trackTool);\n registerEnrollmentTools(server, ctx, trackTool);\n registerCertificateTools(server, ctx, trackTool);\n registerProblemTools(server, ctx, trackTool);\n registerSubmissionTools(server, ctx, trackTool);\n registerMentorTools(server, ctx, trackTool);\n registerSessionTools(server, ctx, trackTool);\n registerHackathonTools(server, ctx, trackTool);\n registerTeamTools(server, ctx, trackTool);\n registerHealthTools(server, ctx, trackTool);\n\n registerTechnospamResources(server, ctx, trackResource);\n registerTechnospamPrompts(server, ctx, trackPrompt);\n\n return { tools, resources, prompts };\n },\n};\n\nexport default technospamModule;\n"]}
@@ -0,0 +1,8 @@
1
+ import { c as McpModule } from '../../module-DFQBZNK6.cjs';
2
+ import '@modelcontextprotocol/sdk/server/mcp.js';
3
+ import '../../context-1jV4NsLv.cjs';
4
+ import 'graphql-request';
5
+
6
+ declare const technospamModule: McpModule;
7
+
8
+ export { technospamModule as default };
@@ -0,0 +1,8 @@
1
+ import { c as McpModule } from '../../module-DBcfA-i3.js';
2
+ import '@modelcontextprotocol/sdk/server/mcp.js';
3
+ import '../../context-1jV4NsLv.js';
4
+ import 'graphql-request';
5
+
6
+ declare const technospamModule: McpModule;
7
+
8
+ export { technospamModule as default };