learngraph 0.5.0 → 0.7.0

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 (235) hide show
  1. package/dist/cjs/api/routes/analytics.js +288 -0
  2. package/dist/cjs/api/routes/analytics.js.map +1 -0
  3. package/dist/cjs/api/routes/assessments.js +269 -0
  4. package/dist/cjs/api/routes/assessments.js.map +1 -0
  5. package/dist/cjs/api/routes/curriculum.js +345 -0
  6. package/dist/cjs/api/routes/curriculum.js.map +1 -0
  7. package/dist/cjs/api/routes/edges.js +162 -0
  8. package/dist/cjs/api/routes/edges.js.map +1 -0
  9. package/dist/cjs/api/routes/explore.js +224 -0
  10. package/dist/cjs/api/routes/explore.js.map +1 -0
  11. package/dist/cjs/api/routes/learners.js +324 -0
  12. package/dist/cjs/api/routes/learners.js.map +1 -0
  13. package/dist/cjs/api/routes/me.js +404 -0
  14. package/dist/cjs/api/routes/me.js.map +1 -0
  15. package/dist/cjs/api/routes/skills.js +319 -0
  16. package/dist/cjs/api/routes/skills.js.map +1 -0
  17. package/dist/cjs/api/server.js +185 -0
  18. package/dist/cjs/api/server.js.map +1 -0
  19. package/dist/cjs/api/types.js +10 -0
  20. package/dist/cjs/api/types.js.map +1 -0
  21. package/dist/cjs/assessment/adaptive.js +390 -0
  22. package/dist/cjs/assessment/adaptive.js.map +1 -0
  23. package/dist/cjs/assessment/bkt.js +362 -0
  24. package/dist/cjs/assessment/bkt.js.map +1 -0
  25. package/dist/cjs/assessment/index.js +54 -0
  26. package/dist/cjs/assessment/index.js.map +1 -0
  27. package/dist/cjs/assessment/irt.js +420 -0
  28. package/dist/cjs/assessment/irt.js.map +1 -0
  29. package/dist/cjs/assessment/mastery-engine.js +411 -0
  30. package/dist/cjs/assessment/mastery-engine.js.map +1 -0
  31. package/dist/cjs/components/LearningPathView.js +320 -0
  32. package/dist/cjs/components/LearningPathView.js.map +1 -0
  33. package/dist/cjs/components/ProgressDashboard.js +308 -0
  34. package/dist/cjs/components/ProgressDashboard.js.map +1 -0
  35. package/dist/cjs/components/SkillCard.js +264 -0
  36. package/dist/cjs/components/SkillCard.js.map +1 -0
  37. package/dist/cjs/components/SkillExplorer.js +401 -0
  38. package/dist/cjs/components/SkillExplorer.js.map +1 -0
  39. package/dist/cjs/components/SkillGraph.js +435 -0
  40. package/dist/cjs/components/SkillGraph.js.map +1 -0
  41. package/dist/cjs/components/hooks.js +510 -0
  42. package/dist/cjs/components/hooks.js.map +1 -0
  43. package/dist/cjs/components/index.js +77 -0
  44. package/dist/cjs/components/index.js.map +1 -0
  45. package/dist/cjs/components/types.js +34 -0
  46. package/dist/cjs/components/types.js.map +1 -0
  47. package/dist/cjs/index.js +35 -1
  48. package/dist/cjs/index.js.map +1 -1
  49. package/dist/cjs/llm/adapters/anthropic.js +91 -3
  50. package/dist/cjs/llm/adapters/anthropic.js.map +1 -1
  51. package/dist/cjs/llm/adapters/gemini.js +101 -8
  52. package/dist/cjs/llm/adapters/gemini.js.map +1 -1
  53. package/dist/cjs/llm/adapters/index.js +42 -1
  54. package/dist/cjs/llm/adapters/index.js.map +1 -1
  55. package/dist/cjs/llm/adapters/ollama.js +120 -3
  56. package/dist/cjs/llm/adapters/ollama.js.map +1 -1
  57. package/dist/cjs/llm/adapters/openai.js +108 -2
  58. package/dist/cjs/llm/adapters/openai.js.map +1 -1
  59. package/dist/cjs/mcp/cli.js +302 -0
  60. package/dist/cjs/mcp/cli.js.map +1 -0
  61. package/dist/cjs/mcp/index.js +79 -0
  62. package/dist/cjs/mcp/index.js.map +1 -0
  63. package/dist/cjs/mcp/prompts.js +425 -0
  64. package/dist/cjs/mcp/prompts.js.map +1 -0
  65. package/dist/cjs/mcp/resources.js +371 -0
  66. package/dist/cjs/mcp/resources.js.map +1 -0
  67. package/dist/cjs/mcp/server.js +410 -0
  68. package/dist/cjs/mcp/server.js.map +1 -0
  69. package/dist/cjs/mcp/tools.js +612 -0
  70. package/dist/cjs/mcp/tools.js.map +1 -0
  71. package/dist/cjs/mcp/types.js +10 -0
  72. package/dist/cjs/mcp/types.js.map +1 -0
  73. package/dist/cjs/types/assessment.js +46 -0
  74. package/dist/cjs/types/assessment.js.map +1 -0
  75. package/dist/cjs/types/bloom.js +12 -1
  76. package/dist/cjs/types/bloom.js.map +1 -1
  77. package/dist/cjs/types/index.js +7 -1
  78. package/dist/cjs/types/index.js.map +1 -1
  79. package/dist/esm/api/routes/analytics.js +285 -0
  80. package/dist/esm/api/routes/analytics.js.map +1 -0
  81. package/dist/esm/api/routes/assessments.js +266 -0
  82. package/dist/esm/api/routes/assessments.js.map +1 -0
  83. package/dist/esm/api/routes/curriculum.js +342 -0
  84. package/dist/esm/api/routes/curriculum.js.map +1 -0
  85. package/dist/esm/api/routes/edges.js +159 -0
  86. package/dist/esm/api/routes/edges.js.map +1 -0
  87. package/dist/esm/api/routes/explore.js +221 -0
  88. package/dist/esm/api/routes/explore.js.map +1 -0
  89. package/dist/esm/api/routes/learners.js +321 -0
  90. package/dist/esm/api/routes/learners.js.map +1 -0
  91. package/dist/esm/api/routes/me.js +401 -0
  92. package/dist/esm/api/routes/me.js.map +1 -0
  93. package/dist/esm/api/routes/skills.js +316 -0
  94. package/dist/esm/api/routes/skills.js.map +1 -0
  95. package/dist/esm/api/server.js +179 -0
  96. package/dist/esm/api/server.js.map +1 -0
  97. package/dist/esm/api/types.js +9 -0
  98. package/dist/esm/api/types.js.map +1 -0
  99. package/dist/esm/assessment/adaptive.js +384 -0
  100. package/dist/esm/assessment/adaptive.js.map +1 -0
  101. package/dist/esm/assessment/bkt.js +354 -0
  102. package/dist/esm/assessment/bkt.js.map +1 -0
  103. package/dist/esm/assessment/index.js +21 -0
  104. package/dist/esm/assessment/index.js.map +1 -0
  105. package/dist/esm/assessment/irt.js +406 -0
  106. package/dist/esm/assessment/irt.js.map +1 -0
  107. package/dist/esm/assessment/mastery-engine.js +406 -0
  108. package/dist/esm/assessment/mastery-engine.js.map +1 -0
  109. package/dist/esm/components/LearningPathView.js +316 -0
  110. package/dist/esm/components/LearningPathView.js.map +1 -0
  111. package/dist/esm/components/ProgressDashboard.js +304 -0
  112. package/dist/esm/components/ProgressDashboard.js.map +1 -0
  113. package/dist/esm/components/SkillCard.js +260 -0
  114. package/dist/esm/components/SkillCard.js.map +1 -0
  115. package/dist/esm/components/SkillExplorer.js +397 -0
  116. package/dist/esm/components/SkillExplorer.js.map +1 -0
  117. package/dist/esm/components/SkillGraph.js +398 -0
  118. package/dist/esm/components/SkillGraph.js.map +1 -0
  119. package/dist/esm/components/hooks.js +502 -0
  120. package/dist/esm/components/hooks.js.map +1 -0
  121. package/dist/esm/components/index.js +61 -0
  122. package/dist/esm/components/index.js.map +1 -0
  123. package/dist/esm/components/types.js +31 -0
  124. package/dist/esm/components/types.js.map +1 -0
  125. package/dist/esm/index.js +12 -0
  126. package/dist/esm/index.js.map +1 -1
  127. package/dist/esm/llm/adapters/anthropic.js +88 -2
  128. package/dist/esm/llm/adapters/anthropic.js.map +1 -1
  129. package/dist/esm/llm/adapters/gemini.js +98 -7
  130. package/dist/esm/llm/adapters/gemini.js.map +1 -1
  131. package/dist/esm/llm/adapters/index.js +15 -4
  132. package/dist/esm/llm/adapters/index.js.map +1 -1
  133. package/dist/esm/llm/adapters/ollama.js +117 -2
  134. package/dist/esm/llm/adapters/ollama.js.map +1 -1
  135. package/dist/esm/llm/adapters/openai.js +105 -1
  136. package/dist/esm/llm/adapters/openai.js.map +1 -1
  137. package/dist/esm/mcp/cli.js +267 -0
  138. package/dist/esm/mcp/cli.js.map +1 -0
  139. package/dist/esm/mcp/index.js +39 -0
  140. package/dist/esm/mcp/index.js.map +1 -0
  141. package/dist/esm/mcp/prompts.js +419 -0
  142. package/dist/esm/mcp/prompts.js.map +1 -0
  143. package/dist/esm/mcp/resources.js +359 -0
  144. package/dist/esm/mcp/resources.js.map +1 -0
  145. package/dist/esm/mcp/server.js +372 -0
  146. package/dist/esm/mcp/server.js.map +1 -0
  147. package/dist/esm/mcp/tools.js +598 -0
  148. package/dist/esm/mcp/tools.js.map +1 -0
  149. package/dist/esm/mcp/types.js +9 -0
  150. package/dist/esm/mcp/types.js.map +1 -0
  151. package/dist/esm/types/assessment.js +40 -0
  152. package/dist/esm/types/assessment.js.map +1 -0
  153. package/dist/esm/types/bloom.js +11 -0
  154. package/dist/esm/types/bloom.js.map +1 -1
  155. package/dist/esm/types/index.js +2 -1
  156. package/dist/esm/types/index.js.map +1 -1
  157. package/dist/types/api/routes/analytics.d.ts +14 -0
  158. package/dist/types/api/routes/analytics.d.ts.map +1 -0
  159. package/dist/types/api/routes/assessments.d.ts +14 -0
  160. package/dist/types/api/routes/assessments.d.ts.map +1 -0
  161. package/dist/types/api/routes/curriculum.d.ts +14 -0
  162. package/dist/types/api/routes/curriculum.d.ts.map +1 -0
  163. package/dist/types/api/routes/edges.d.ts +14 -0
  164. package/dist/types/api/routes/edges.d.ts.map +1 -0
  165. package/dist/types/api/routes/explore.d.ts +14 -0
  166. package/dist/types/api/routes/explore.d.ts.map +1 -0
  167. package/dist/types/api/routes/learners.d.ts +14 -0
  168. package/dist/types/api/routes/learners.d.ts.map +1 -0
  169. package/dist/types/api/routes/me.d.ts +14 -0
  170. package/dist/types/api/routes/me.d.ts.map +1 -0
  171. package/dist/types/api/routes/skills.d.ts +14 -0
  172. package/dist/types/api/routes/skills.d.ts.map +1 -0
  173. package/dist/types/api/server.d.ts +147 -0
  174. package/dist/types/api/server.d.ts.map +1 -0
  175. package/dist/types/api/types.d.ts +443 -0
  176. package/dist/types/api/types.d.ts.map +1 -0
  177. package/dist/types/assessment/adaptive.d.ts +155 -0
  178. package/dist/types/assessment/adaptive.d.ts.map +1 -0
  179. package/dist/types/assessment/bkt.d.ts +185 -0
  180. package/dist/types/assessment/bkt.d.ts.map +1 -0
  181. package/dist/types/assessment/index.d.ts +18 -0
  182. package/dist/types/assessment/index.d.ts.map +1 -0
  183. package/dist/types/assessment/irt.d.ts +159 -0
  184. package/dist/types/assessment/irt.d.ts.map +1 -0
  185. package/dist/types/assessment/mastery-engine.d.ts +178 -0
  186. package/dist/types/assessment/mastery-engine.d.ts.map +1 -0
  187. package/dist/types/components/LearningPathView.d.ts +40 -0
  188. package/dist/types/components/LearningPathView.d.ts.map +1 -0
  189. package/dist/types/components/ProgressDashboard.d.ts +49 -0
  190. package/dist/types/components/ProgressDashboard.d.ts.map +1 -0
  191. package/dist/types/components/SkillCard.d.ts +34 -0
  192. package/dist/types/components/SkillCard.d.ts.map +1 -0
  193. package/dist/types/components/SkillExplorer.d.ts +39 -0
  194. package/dist/types/components/SkillExplorer.d.ts.map +1 -0
  195. package/dist/types/components/SkillGraph.d.ts +38 -0
  196. package/dist/types/components/SkillGraph.d.ts.map +1 -0
  197. package/dist/types/components/hooks.d.ts +187 -0
  198. package/dist/types/components/hooks.d.ts.map +1 -0
  199. package/dist/types/components/index.d.ts +59 -0
  200. package/dist/types/components/index.d.ts.map +1 -0
  201. package/dist/types/components/types.d.ts +410 -0
  202. package/dist/types/components/types.d.ts.map +1 -0
  203. package/dist/types/index.d.ts +1 -0
  204. package/dist/types/index.d.ts.map +1 -1
  205. package/dist/types/llm/adapters/anthropic.d.ts +84 -1
  206. package/dist/types/llm/adapters/anthropic.d.ts.map +1 -1
  207. package/dist/types/llm/adapters/gemini.d.ts +93 -6
  208. package/dist/types/llm/adapters/gemini.d.ts.map +1 -1
  209. package/dist/types/llm/adapters/index.d.ts +13 -4
  210. package/dist/types/llm/adapters/index.d.ts.map +1 -1
  211. package/dist/types/llm/adapters/ollama.d.ts +126 -1
  212. package/dist/types/llm/adapters/ollama.d.ts.map +1 -1
  213. package/dist/types/llm/adapters/openai.d.ts +104 -1
  214. package/dist/types/llm/adapters/openai.d.ts.map +1 -1
  215. package/dist/types/mcp/cli.d.ts +15 -0
  216. package/dist/types/mcp/cli.d.ts.map +1 -0
  217. package/dist/types/mcp/index.d.ts +32 -0
  218. package/dist/types/mcp/index.d.ts.map +1 -0
  219. package/dist/types/mcp/prompts.d.ts +27 -0
  220. package/dist/types/mcp/prompts.d.ts.map +1 -0
  221. package/dist/types/mcp/resources.d.ts +59 -0
  222. package/dist/types/mcp/resources.d.ts.map +1 -0
  223. package/dist/types/mcp/server.d.ts +136 -0
  224. package/dist/types/mcp/server.d.ts.map +1 -0
  225. package/dist/types/mcp/tools.d.ts +344 -0
  226. package/dist/types/mcp/tools.d.ts.map +1 -0
  227. package/dist/types/mcp/types.d.ts +137 -0
  228. package/dist/types/mcp/types.d.ts.map +1 -0
  229. package/dist/types/types/assessment.d.ts +512 -0
  230. package/dist/types/types/assessment.d.ts.map +1 -0
  231. package/dist/types/types/bloom.d.ts +4 -0
  232. package/dist/types/types/bloom.d.ts.map +1 -1
  233. package/dist/types/types/index.d.ts +3 -1
  234. package/dist/types/types/index.d.ts.map +1 -1
  235. package/package.json +48 -3
@@ -0,0 +1,612 @@
1
+ "use strict";
2
+ /**
3
+ * MCP Tool Definitions
4
+ *
5
+ * Tool implementations for LearnGraph MCP server.
6
+ * These tools enable Claude to interact with knowledge graphs.
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.TOOL_DEFINITIONS = exports.ValidateCurriculumSchema = exports.GetGraphStatsSchema = exports.CreatePrerequisiteSchema = exports.GetZpdSkillsSchema = exports.GetLearningPathSchema = exports.GetDependentsSchema = exports.GetPrerequisitesSchema = exports.SearchSkillsSchema = exports.CreateSkillSchema = exports.GetSkillSchema = exports.ListSkillsSchema = void 0;
12
+ exports.listSkills = listSkills;
13
+ exports.getSkill = getSkill;
14
+ exports.createSkill = createSkill;
15
+ exports.searchSkills = searchSkills;
16
+ exports.getPrerequisites = getPrerequisites;
17
+ exports.getDependents = getDependents;
18
+ exports.getLearningPath = getLearningPath;
19
+ exports.getZpdSkills = getZpdSkills;
20
+ exports.createPrerequisite = createPrerequisite;
21
+ exports.getGraphStats = getGraphStats;
22
+ exports.validateCurriculum = validateCurriculum;
23
+ const zod_1 = require("zod");
24
+ const index_js_1 = require("../types/index.js");
25
+ // ─────────────────────────────────────────────────────────────────────────────
26
+ // Tool Schemas
27
+ // ─────────────────────────────────────────────────────────────────────────────
28
+ exports.ListSkillsSchema = zod_1.z.object({
29
+ limit: zod_1.z.number().optional().default(50).describe('Maximum number of skills to return'),
30
+ offset: zod_1.z.number().optional().default(0).describe('Number of skills to skip'),
31
+ bloomLevel: zod_1.z.enum(['remember', 'understand', 'apply', 'analyze', 'evaluate', 'create']).optional().describe('Filter by Bloom\'s Taxonomy level'),
32
+ tag: zod_1.z.string().optional().describe('Filter by tag'),
33
+ });
34
+ exports.GetSkillSchema = zod_1.z.object({
35
+ skillId: zod_1.z.string().describe('The unique skill ID'),
36
+ });
37
+ exports.CreateSkillSchema = zod_1.z.object({
38
+ name: zod_1.z.string().describe('Name of the skill'),
39
+ description: zod_1.z.string().optional().describe('Description of what the skill covers'),
40
+ bloomLevel: zod_1.z.enum(['remember', 'understand', 'apply', 'analyze', 'evaluate', 'create']).describe('Bloom\'s Taxonomy level'),
41
+ estimatedMinutes: zod_1.z.number().optional().default(30).describe('Estimated time to learn in minutes'),
42
+ tags: zod_1.z.array(zod_1.z.string()).optional().default([]).describe('Tags for categorization'),
43
+ });
44
+ exports.SearchSkillsSchema = zod_1.z.object({
45
+ query: zod_1.z.string().describe('Search query for skill names and descriptions'),
46
+ limit: zod_1.z.number().optional().default(20).describe('Maximum results to return'),
47
+ });
48
+ exports.GetPrerequisitesSchema = zod_1.z.object({
49
+ skillId: zod_1.z.string().describe('The skill ID to get prerequisites for'),
50
+ depth: zod_1.z.number().optional().default(1).describe('How many levels of prerequisites to fetch'),
51
+ });
52
+ exports.GetDependentsSchema = zod_1.z.object({
53
+ skillId: zod_1.z.string().describe('The skill ID to get dependents for'),
54
+ depth: zod_1.z.number().optional().default(1).describe('How many levels of dependents to fetch'),
55
+ });
56
+ exports.GetLearningPathSchema = zod_1.z.object({
57
+ targetSkillId: zod_1.z.string().describe('The target skill to learn'),
58
+ masteredSkillIds: zod_1.z.array(zod_1.z.string()).optional().default([]).describe('Skills already mastered'),
59
+ });
60
+ exports.GetZpdSkillsSchema = zod_1.z.object({
61
+ masteredSkillIds: zod_1.z.array(zod_1.z.string()).describe('Skills the learner has already mastered'),
62
+ limit: zod_1.z.number().optional().default(10).describe('Maximum skills to return'),
63
+ });
64
+ exports.CreatePrerequisiteSchema = zod_1.z.object({
65
+ sourceSkillId: zod_1.z.string().describe('The prerequisite skill ID'),
66
+ targetSkillId: zod_1.z.string().describe('The skill that requires the prerequisite'),
67
+ strength: zod_1.z.number().min(0).max(1).optional().default(0.8).describe('Strength of the relationship (0-1)'),
68
+ type: zod_1.z.enum(['hard', 'soft', 'recommended']).optional().default('hard').describe('Type of prerequisite relationship'),
69
+ });
70
+ exports.GetGraphStatsSchema = zod_1.z.object({});
71
+ exports.ValidateCurriculumSchema = zod_1.z.object({
72
+ checkCycles: zod_1.z.boolean().optional().default(true).describe('Check for circular dependencies'),
73
+ checkOrphans: zod_1.z.boolean().optional().default(true).describe('Check for disconnected skills'),
74
+ });
75
+ // ─────────────────────────────────────────────────────────────────────────────
76
+ // Tool Implementations
77
+ // ─────────────────────────────────────────────────────────────────────────────
78
+ /**
79
+ * Create a success result
80
+ */
81
+ function successResult(data) {
82
+ return {
83
+ content: [{
84
+ type: 'text',
85
+ text: JSON.stringify(data, null, 2),
86
+ }],
87
+ };
88
+ }
89
+ /**
90
+ * Create an error result
91
+ */
92
+ function errorResult(message) {
93
+ return {
94
+ content: [{
95
+ type: 'text',
96
+ text: JSON.stringify({ error: message }),
97
+ }],
98
+ isError: true,
99
+ };
100
+ }
101
+ /**
102
+ * List skills in the graph
103
+ */
104
+ async function listSkills(storage, params) {
105
+ try {
106
+ // Build query with filters
107
+ const filters = [];
108
+ if (params.bloomLevel) {
109
+ filters.push({ field: 'bloomLevel', operator: 'eq', value: params.bloomLevel });
110
+ }
111
+ if (params.tag) {
112
+ filters.push({ field: 'tags', operator: 'contains', value: params.tag });
113
+ }
114
+ const query = filters.length > 0 ? { filters } : {};
115
+ const skills = await storage.findSkills(query);
116
+ const paginated = skills.slice(params.offset, params.offset + params.limit);
117
+ return successResult({
118
+ skills: paginated.map((s) => ({
119
+ id: s.id,
120
+ name: s.name,
121
+ bloomLevel: s.bloomLevel,
122
+ estimatedMinutes: s.estimatedMinutes,
123
+ tags: s.tags,
124
+ })),
125
+ total: skills.length,
126
+ offset: params.offset,
127
+ limit: params.limit,
128
+ });
129
+ }
130
+ catch (err) {
131
+ return errorResult(`Failed to list skills: ${err instanceof Error ? err.message : 'Unknown error'}`);
132
+ }
133
+ }
134
+ /**
135
+ * Get a single skill by ID
136
+ */
137
+ async function getSkill(storage, params) {
138
+ try {
139
+ const skill = await storage.getSkill((0, index_js_1.createSkillId)(params.skillId));
140
+ if (!skill) {
141
+ return errorResult(`Skill not found: ${params.skillId}`);
142
+ }
143
+ const prerequisites = await storage.getPrerequisitesOf(skill.id);
144
+ const dependents = await storage.getDependentsOf(skill.id);
145
+ return successResult({
146
+ ...skill,
147
+ prerequisites: prerequisites.map((p) => ({ id: p.id, name: p.name })),
148
+ dependents: dependents.map((d) => ({ id: d.id, name: d.name })),
149
+ });
150
+ }
151
+ catch (err) {
152
+ return errorResult(`Failed to get skill: ${err instanceof Error ? err.message : 'Unknown error'}`);
153
+ }
154
+ }
155
+ /**
156
+ * Create a new skill
157
+ */
158
+ async function createSkill(storage, params) {
159
+ try {
160
+ const skill = await storage.createSkill({
161
+ name: params.name,
162
+ bloomLevel: params.bloomLevel,
163
+ description: params.description ?? '',
164
+ estimatedMinutes: params.estimatedMinutes,
165
+ tags: params.tags,
166
+ difficulty: 0.5, // Default to intermediate difficulty
167
+ isThresholdConcept: false,
168
+ masteryThreshold: 0.8,
169
+ metadata: {},
170
+ });
171
+ return successResult({
172
+ message: `Created skill: ${skill.name}`,
173
+ skill: {
174
+ id: skill.id,
175
+ name: skill.name,
176
+ bloomLevel: skill.bloomLevel,
177
+ estimatedMinutes: skill.estimatedMinutes,
178
+ tags: skill.tags,
179
+ },
180
+ });
181
+ }
182
+ catch (err) {
183
+ return errorResult(`Failed to create skill: ${err instanceof Error ? err.message : 'Unknown error'}`);
184
+ }
185
+ }
186
+ /**
187
+ * Search skills by name/description
188
+ */
189
+ async function searchSkills(storage, params) {
190
+ try {
191
+ const allSkills = await storage.findSkills({});
192
+ const query = params.query.toLowerCase();
193
+ const matched = allSkills
194
+ .map((skill) => {
195
+ const nameMatch = skill.name.toLowerCase().includes(query);
196
+ const descMatch = skill.description?.toLowerCase().includes(query) ?? false;
197
+ const tagMatch = skill.tags.some((t) => t.toLowerCase().includes(query));
198
+ let score = 0;
199
+ if (nameMatch)
200
+ score += 3;
201
+ if (descMatch)
202
+ score += 2;
203
+ if (tagMatch)
204
+ score += 1;
205
+ return { skill, score };
206
+ })
207
+ .filter(({ score }) => score > 0)
208
+ .sort((a, b) => b.score - a.score)
209
+ .slice(0, params.limit);
210
+ const result = {
211
+ skills: matched.map(({ skill, score }) => ({
212
+ id: String(skill.id),
213
+ name: skill.name,
214
+ description: skill.description,
215
+ bloomLevel: skill.bloomLevel,
216
+ tags: skill.tags,
217
+ matchScore: score,
218
+ })),
219
+ totalCount: matched.length,
220
+ };
221
+ return successResult(result);
222
+ }
223
+ catch (err) {
224
+ return errorResult(`Failed to search skills: ${err instanceof Error ? err.message : 'Unknown error'}`);
225
+ }
226
+ }
227
+ /**
228
+ * Get prerequisites for a skill
229
+ */
230
+ async function getPrerequisites(storage, params) {
231
+ try {
232
+ const skillId = (0, index_js_1.createSkillId)(params.skillId);
233
+ const skill = await storage.getSkill(skillId);
234
+ if (!skill) {
235
+ return errorResult(`Skill not found: ${params.skillId}`);
236
+ }
237
+ const prerequisites = await storage.getPrerequisitesOf(skillId);
238
+ // For depth > 1, recursively get prerequisites
239
+ const allPrereqs = new Map();
240
+ const visited = new Set();
241
+ async function collectPrereqs(skills, currentDepth) {
242
+ if (currentDepth >= params.depth)
243
+ return;
244
+ for (const s of skills) {
245
+ const id = String(s.id);
246
+ if (visited.has(id))
247
+ continue;
248
+ visited.add(id);
249
+ allPrereqs.set(id, s);
250
+ if (currentDepth + 1 < params.depth) {
251
+ const nested = await storage.getPrerequisitesOf(s.id);
252
+ await collectPrereqs(nested, currentDepth + 1);
253
+ }
254
+ }
255
+ }
256
+ await collectPrereqs(prerequisites, 0);
257
+ return successResult({
258
+ skillId: params.skillId,
259
+ skillName: skill.name,
260
+ prerequisites: Array.from(allPrereqs.values()).map((p) => ({
261
+ id: p.id,
262
+ name: p.name,
263
+ bloomLevel: p.bloomLevel,
264
+ estimatedMinutes: p.estimatedMinutes,
265
+ })),
266
+ depth: params.depth,
267
+ });
268
+ }
269
+ catch (err) {
270
+ return errorResult(`Failed to get prerequisites: ${err instanceof Error ? err.message : 'Unknown error'}`);
271
+ }
272
+ }
273
+ /**
274
+ * Get dependents for a skill
275
+ */
276
+ async function getDependents(storage, params) {
277
+ try {
278
+ const skillId = (0, index_js_1.createSkillId)(params.skillId);
279
+ const skill = await storage.getSkill(skillId);
280
+ if (!skill) {
281
+ return errorResult(`Skill not found: ${params.skillId}`);
282
+ }
283
+ const dependents = await storage.getDependentsOf(skillId);
284
+ return successResult({
285
+ skillId: params.skillId,
286
+ skillName: skill.name,
287
+ dependents: dependents.map((d) => ({
288
+ id: d.id,
289
+ name: d.name,
290
+ bloomLevel: d.bloomLevel,
291
+ estimatedMinutes: d.estimatedMinutes,
292
+ })),
293
+ });
294
+ }
295
+ catch (err) {
296
+ return errorResult(`Failed to get dependents: ${err instanceof Error ? err.message : 'Unknown error'}`);
297
+ }
298
+ }
299
+ /**
300
+ * Get learning path to a target skill
301
+ */
302
+ async function getLearningPath(storage, params) {
303
+ try {
304
+ const targetId = (0, index_js_1.createSkillId)(params.targetSkillId);
305
+ const target = await storage.getSkill(targetId);
306
+ if (!target) {
307
+ return errorResult(`Target skill not found: ${params.targetSkillId}`);
308
+ }
309
+ const masteredSet = new Set(params.masteredSkillIds);
310
+ // Collect all prerequisites recursively
311
+ const path = [];
312
+ const visited = new Set();
313
+ async function collectPath(skillId) {
314
+ const id = String(skillId);
315
+ if (visited.has(id) || masteredSet.has(id))
316
+ return;
317
+ visited.add(id);
318
+ const prerequisites = await storage.getPrerequisitesOf(skillId);
319
+ for (const prereq of prerequisites) {
320
+ await collectPath(prereq.id);
321
+ }
322
+ const skill = await storage.getSkill(skillId);
323
+ if (skill && !masteredSet.has(id)) {
324
+ path.push(skill);
325
+ }
326
+ }
327
+ await collectPath(targetId);
328
+ const result = {
329
+ path: path.map((s, index) => ({
330
+ skillId: String(s.id),
331
+ skillName: s.name,
332
+ bloomLevel: s.bloomLevel,
333
+ estimatedMinutes: s.estimatedMinutes,
334
+ isPrerequisite: index < path.length - 1,
335
+ })),
336
+ totalEstimatedMinutes: path.reduce((sum, s) => sum + s.estimatedMinutes, 0),
337
+ totalSkills: path.length,
338
+ };
339
+ return successResult(result);
340
+ }
341
+ catch (err) {
342
+ return errorResult(`Failed to get learning path: ${err instanceof Error ? err.message : 'Unknown error'}`);
343
+ }
344
+ }
345
+ /**
346
+ * Get skills in the Zone of Proximal Development
347
+ */
348
+ async function getZpdSkills(storage, params) {
349
+ try {
350
+ const masteredSet = new Set(params.masteredSkillIds);
351
+ const allSkills = await storage.findSkills({});
352
+ const readyToLearn = [];
353
+ const almostReady = [];
354
+ for (const skill of allSkills) {
355
+ const id = String(skill.id);
356
+ if (masteredSet.has(id))
357
+ continue;
358
+ const prerequisites = await storage.getPrerequisitesOf(skill.id);
359
+ const missingPrereqs = prerequisites.filter((p) => !masteredSet.has(String(p.id)));
360
+ if (missingPrereqs.length === 0) {
361
+ // All prerequisites mastered - ready to learn
362
+ readyToLearn.push({
363
+ skillId: id,
364
+ skillName: skill.name,
365
+ bloomLevel: skill.bloomLevel,
366
+ readinessScore: 1.0,
367
+ missingPrerequisites: [],
368
+ });
369
+ }
370
+ else if (missingPrereqs.length <= 2) {
371
+ // Almost ready - just needs 1-2 more prerequisites
372
+ almostReady.push({
373
+ skillId: id,
374
+ skillName: skill.name,
375
+ prerequisitesNeeded: missingPrereqs.length,
376
+ });
377
+ }
378
+ }
379
+ // Sort by readiness and limit
380
+ const result = {
381
+ readyToLearn: readyToLearn.slice(0, params.limit),
382
+ almostReady: almostReady.slice(0, params.limit),
383
+ };
384
+ return successResult(result);
385
+ }
386
+ catch (err) {
387
+ return errorResult(`Failed to get ZPD skills: ${err instanceof Error ? err.message : 'Unknown error'}`);
388
+ }
389
+ }
390
+ /**
391
+ * Create a prerequisite relationship
392
+ */
393
+ async function createPrerequisite(storage, params) {
394
+ try {
395
+ const sourceId = (0, index_js_1.createSkillId)(params.sourceSkillId);
396
+ const targetId = (0, index_js_1.createSkillId)(params.targetSkillId);
397
+ // Check both skills exist
398
+ const source = await storage.getSkill(sourceId);
399
+ const target = await storage.getSkill(targetId);
400
+ if (!source) {
401
+ return errorResult(`Source skill not found: ${params.sourceSkillId}`);
402
+ }
403
+ if (!target) {
404
+ return errorResult(`Target skill not found: ${params.targetSkillId}`);
405
+ }
406
+ const edge = await storage.createPrerequisite({
407
+ sourceId,
408
+ targetId,
409
+ strength: params.strength,
410
+ type: params.type,
411
+ metadata: {},
412
+ });
413
+ return successResult({
414
+ message: `Created prerequisite: ${source.name} → ${target.name}`,
415
+ edge: {
416
+ id: edge.id,
417
+ sourceId: String(edge.sourceId),
418
+ targetId: String(edge.targetId),
419
+ strength: edge.strength,
420
+ type: edge.type,
421
+ },
422
+ });
423
+ }
424
+ catch (err) {
425
+ return errorResult(`Failed to create prerequisite: ${err instanceof Error ? err.message : 'Unknown error'}`);
426
+ }
427
+ }
428
+ /**
429
+ * Get graph statistics
430
+ */
431
+ async function getGraphStats(storage, _params) {
432
+ try {
433
+ const skills = await storage.findSkills({});
434
+ const edges = await storage.findPrerequisites({});
435
+ // Calculate statistics
436
+ const bloomDistribution = {};
437
+ for (const level of index_js_1.BLOOM_LEVELS) {
438
+ bloomDistribution[level] = 0;
439
+ }
440
+ const inDegree = new Map();
441
+ const outDegree = new Map();
442
+ for (const skill of skills) {
443
+ const level = skill.bloomLevel;
444
+ if (level in bloomDistribution) {
445
+ bloomDistribution[level] = (bloomDistribution[level] ?? 0) + 1;
446
+ }
447
+ inDegree.set(String(skill.id), 0);
448
+ outDegree.set(String(skill.id), 0);
449
+ }
450
+ for (const edge of edges) {
451
+ const sourceStr = String(edge.sourceId);
452
+ const targetStr = String(edge.targetId);
453
+ outDegree.set(sourceStr, (outDegree.get(sourceStr) || 0) + 1);
454
+ inDegree.set(targetStr, (inDegree.get(targetStr) || 0) + 1);
455
+ }
456
+ const rootSkills = Array.from(inDegree.entries()).filter(([_, deg]) => deg === 0).length;
457
+ const leafSkills = Array.from(outDegree.entries()).filter(([_, deg]) => deg === 0).length;
458
+ const result = {
459
+ totalSkills: skills.length,
460
+ totalEdges: edges.length,
461
+ averagePrerequisites: skills.length > 0 ? edges.length / skills.length : 0,
462
+ maxDepth: 0, // Would require graph traversal to calculate
463
+ rootSkills,
464
+ leafSkills,
465
+ bloomDistribution,
466
+ };
467
+ return successResult(result);
468
+ }
469
+ catch (err) {
470
+ return errorResult(`Failed to get graph stats: ${err instanceof Error ? err.message : 'Unknown error'}`);
471
+ }
472
+ }
473
+ /**
474
+ * Validate curriculum structure
475
+ */
476
+ async function validateCurriculum(storage, params) {
477
+ try {
478
+ const issues = [];
479
+ const skills = await storage.findSkills({});
480
+ const edges = await storage.findPrerequisites({});
481
+ // Check for orphaned skills (no incoming or outgoing edges)
482
+ if (params.checkOrphans) {
483
+ const connectedSkills = new Set();
484
+ for (const edge of edges) {
485
+ connectedSkills.add(String(edge.sourceId));
486
+ connectedSkills.add(String(edge.targetId));
487
+ }
488
+ const orphans = skills.filter((s) => !connectedSkills.has(String(s.id)));
489
+ if (orphans.length > 0) {
490
+ issues.push({
491
+ type: 'orphan',
492
+ message: `Found ${orphans.length} disconnected skill(s)`,
493
+ skillIds: orphans.map((s) => String(s.id)),
494
+ });
495
+ }
496
+ }
497
+ // Check for cycles (simplified DFS-based check)
498
+ if (params.checkCycles) {
499
+ const adjacency = new Map();
500
+ for (const edge of edges) {
501
+ const source = String(edge.sourceId);
502
+ const target = String(edge.targetId);
503
+ if (!adjacency.has(source)) {
504
+ adjacency.set(source, []);
505
+ }
506
+ adjacency.get(source).push(target);
507
+ }
508
+ const visited = new Set();
509
+ const recursionStack = new Set();
510
+ function hasCycle(node) {
511
+ visited.add(node);
512
+ recursionStack.add(node);
513
+ for (const neighbor of adjacency.get(node) || []) {
514
+ if (!visited.has(neighbor)) {
515
+ if (hasCycle(neighbor))
516
+ return true;
517
+ }
518
+ else if (recursionStack.has(neighbor)) {
519
+ return true;
520
+ }
521
+ }
522
+ recursionStack.delete(node);
523
+ return false;
524
+ }
525
+ for (const skill of skills) {
526
+ const id = String(skill.id);
527
+ if (!visited.has(id)) {
528
+ if (hasCycle(id)) {
529
+ issues.push({
530
+ type: 'cycle',
531
+ message: 'Circular dependency detected in prerequisite graph',
532
+ });
533
+ break;
534
+ }
535
+ }
536
+ }
537
+ }
538
+ return successResult({
539
+ valid: issues.length === 0,
540
+ issueCount: issues.length,
541
+ issues,
542
+ summary: {
543
+ totalSkills: skills.length,
544
+ totalEdges: edges.length,
545
+ },
546
+ });
547
+ }
548
+ catch (err) {
549
+ return errorResult(`Failed to validate curriculum: ${err instanceof Error ? err.message : 'Unknown error'}`);
550
+ }
551
+ }
552
+ /**
553
+ * Export all tool definitions for MCP registration
554
+ */
555
+ exports.TOOL_DEFINITIONS = {
556
+ list_skills: {
557
+ description: 'List all skills in the knowledge graph with optional filtering by Bloom\'s Taxonomy level or tags.',
558
+ inputSchema: exports.ListSkillsSchema,
559
+ handler: listSkills,
560
+ },
561
+ get_skill: {
562
+ description: 'Get detailed information about a specific skill including its prerequisites and dependents.',
563
+ inputSchema: exports.GetSkillSchema,
564
+ handler: getSkill,
565
+ },
566
+ create_skill: {
567
+ description: 'Create a new skill in the knowledge graph with name, Bloom\'s level, and optional metadata.',
568
+ inputSchema: exports.CreateSkillSchema,
569
+ handler: createSkill,
570
+ },
571
+ search_skills: {
572
+ description: 'Search for skills by name, description, or tags using fuzzy matching.',
573
+ inputSchema: exports.SearchSkillsSchema,
574
+ handler: searchSkills,
575
+ },
576
+ get_prerequisites: {
577
+ description: 'Get all prerequisite skills for a given skill, optionally traversing multiple levels deep.',
578
+ inputSchema: exports.GetPrerequisitesSchema,
579
+ handler: getPrerequisites,
580
+ },
581
+ get_dependents: {
582
+ description: 'Get all skills that depend on a given skill as a prerequisite.',
583
+ inputSchema: exports.GetDependentsSchema,
584
+ handler: getDependents,
585
+ },
586
+ get_learning_path: {
587
+ description: 'Generate an optimal learning path to a target skill, considering already mastered skills.',
588
+ inputSchema: exports.GetLearningPathSchema,
589
+ handler: getLearningPath,
590
+ },
591
+ get_zpd_skills: {
592
+ description: 'Get skills in the learner\'s Zone of Proximal Development - skills they\'re ready to learn based on mastered prerequisites.',
593
+ inputSchema: exports.GetZpdSkillsSchema,
594
+ handler: getZpdSkills,
595
+ },
596
+ create_prerequisite: {
597
+ description: 'Create a prerequisite relationship between two skills (source skill is required before target skill).',
598
+ inputSchema: exports.CreatePrerequisiteSchema,
599
+ handler: createPrerequisite,
600
+ },
601
+ get_graph_stats: {
602
+ description: 'Get statistics about the knowledge graph including skill counts, edge counts, and Bloom\'s Taxonomy distribution.',
603
+ inputSchema: exports.GetGraphStatsSchema,
604
+ handler: getGraphStats,
605
+ },
606
+ validate_curriculum: {
607
+ description: 'Validate the curriculum structure checking for cycles and orphaned skills.',
608
+ inputSchema: exports.ValidateCurriculumSchema,
609
+ handler: validateCurriculum,
610
+ },
611
+ };
612
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ /**
3
+ * MCP Server Type Definitions
4
+ *
5
+ * Types for the LearnGraph MCP server integration.
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/mcp/types.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG"}