@vibeuniv/mcp-server 0.3.4 β 0.3.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.
- package/dist/index.js +7 -5
- package/dist/index.js.map +1 -1
- package/dist/lib/api-client.d.ts +19 -14
- package/dist/lib/api-client.d.ts.map +1 -1
- package/dist/lib/api-client.js +17 -20
- package/dist/lib/api-client.js.map +1 -1
- package/dist/tools/create-curriculum.d.ts +13 -0
- package/dist/tools/create-curriculum.d.ts.map +1 -0
- package/dist/tools/create-curriculum.js +81 -0
- package/dist/tools/create-curriculum.js.map +1 -0
- package/dist/tools/generate-curriculum.d.ts.map +1 -1
- package/dist/tools/generate-curriculum.js +370 -61
- package/dist/tools/generate-curriculum.js.map +1 -1
- package/dist/tools/submit-curriculum.d.ts.map +1 -1
- package/dist/tools/submit-curriculum.js +6 -8
- package/dist/tools/submit-curriculum.js.map +1 -1
- package/dist/tools/submit-module.d.ts +16 -0
- package/dist/tools/submit-module.d.ts.map +1 -0
- package/dist/tools/submit-module.js +152 -0
- package/dist/tools/submit-module.js.map +1 -0
- package/dist/types.d.ts +11 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -12,10 +12,11 @@ import { registerAskTutor } from "./tools/ask-tutor.js";
|
|
|
12
12
|
import { registerSubmitAnalysis } from "./tools/submit-analysis.js";
|
|
13
13
|
import { registerSubmitTechStacks } from "./tools/submit-tech-stacks.js";
|
|
14
14
|
import { registerGenerateCurriculum } from "./tools/generate-curriculum.js";
|
|
15
|
-
import { registerGenerateModuleContent } from "./tools/generate-module-content.js";
|
|
16
15
|
import { registerSubmitCurriculum } from "./tools/submit-curriculum.js";
|
|
16
|
+
import { registerCreateCurriculum } from "./tools/create-curriculum.js";
|
|
17
|
+
import { registerSubmitModule } from "./tools/submit-module.js";
|
|
17
18
|
async function main() {
|
|
18
|
-
console.error("[vibeuniv] Starting VibeUniv MCP Server v0.3.
|
|
19
|
+
console.error("[vibeuniv] Starting VibeUniv MCP Server v0.3.5...");
|
|
19
20
|
const config = loadConfig();
|
|
20
21
|
const client = new VibeUnivClient(config.apiKey, config.apiUrl);
|
|
21
22
|
if (config.apiKey) {
|
|
@@ -23,7 +24,7 @@ async function main() {
|
|
|
23
24
|
}
|
|
24
25
|
const server = new McpServer({
|
|
25
26
|
name: "vibeuniv-mcp-server",
|
|
26
|
-
version: "0.3.
|
|
27
|
+
version: "0.3.5",
|
|
27
28
|
});
|
|
28
29
|
registerSyncProject(server, client);
|
|
29
30
|
registerUploadFiles(server, client);
|
|
@@ -34,9 +35,10 @@ async function main() {
|
|
|
34
35
|
registerSubmitAnalysis(server, client);
|
|
35
36
|
registerSubmitTechStacks(server, client);
|
|
36
37
|
registerGenerateCurriculum(server, client);
|
|
37
|
-
registerGenerateModuleContent(server, client);
|
|
38
38
|
registerSubmitCurriculum(server, client);
|
|
39
|
-
|
|
39
|
+
registerCreateCurriculum(server, client);
|
|
40
|
+
registerSubmitModule(server, client);
|
|
41
|
+
console.error("[vibeuniv] 12 tools registered");
|
|
40
42
|
const transport = new StdioServerTransport();
|
|
41
43
|
await server.connect(transport);
|
|
42
44
|
console.error("[vibeuniv] MCP Server running on stdio");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;IAEnE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAEhE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,2CAA2C,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErC,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAEhD,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAC1D,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/lib/api-client.d.ts
CHANGED
|
@@ -1,22 +1,9 @@
|
|
|
1
|
-
import type { AnalysisResult, CreateProjectInput, CurriculumContext, CurriculumSubmitResult, EducationalAnalysisData, KnowledgeHintsResult, LearningPath, Locale, Project, ProjectDetail, ProjectFile, SessionLog, TechStackItem, TechStackSubmission, TechStackSubmitResult, TutorContext, TutorResponse } from "../types.js";
|
|
1
|
+
import type { AnalysisResult, CreateProjectInput, CurriculumContext, CurriculumStartResult, CurriculumSubmitResult, EducationalAnalysisData, KnowledgeHintsResult, LearningPath, Locale, ModuleSubmitResult, Project, ProjectDetail, ProjectFile, SessionLog, TechStackItem, TechStackSubmission, TechStackSubmitResult, TutorContext, TutorResponse } from "../types.js";
|
|
2
2
|
export declare class VibeUnivClient {
|
|
3
3
|
private apiKey;
|
|
4
4
|
private baseUrl;
|
|
5
5
|
private cachedLocale;
|
|
6
|
-
private static CURRICULUM_CACHE_TTL;
|
|
7
|
-
private _curriculumCache;
|
|
8
6
|
constructor(apiKey: string, baseUrl: string);
|
|
9
|
-
getCachedCurriculumData(projectId: string): {
|
|
10
|
-
context: CurriculumContext;
|
|
11
|
-
localFiles: Array<{
|
|
12
|
-
file_path: string;
|
|
13
|
-
content: string;
|
|
14
|
-
}>;
|
|
15
|
-
} | null;
|
|
16
|
-
setCachedCurriculumData(projectId: string, context: CurriculumContext, localFiles: Array<{
|
|
17
|
-
file_path: string;
|
|
18
|
-
content: string;
|
|
19
|
-
}>): void;
|
|
20
7
|
getUserLocale(): Promise<Locale>;
|
|
21
8
|
private request;
|
|
22
9
|
createProject(data: CreateProjectInput): Promise<Project>;
|
|
@@ -35,5 +22,23 @@ export declare class VibeUnivClient {
|
|
|
35
22
|
submitTechStacks(projectId: string, submission: TechStackSubmission): Promise<TechStackSubmitResult>;
|
|
36
23
|
getTutorContext(projectId: string): Promise<TutorContext>;
|
|
37
24
|
getCurriculumContext(projectId: string): Promise<CurriculumContext>;
|
|
25
|
+
createCurriculum(projectId: string, data: {
|
|
26
|
+
title: string;
|
|
27
|
+
description: string;
|
|
28
|
+
difficulty: string;
|
|
29
|
+
total_modules: number;
|
|
30
|
+
estimated_hours?: number;
|
|
31
|
+
}): Promise<CurriculumStartResult>;
|
|
32
|
+
submitModule(projectId: string, pathId: string, module: {
|
|
33
|
+
module_order: number;
|
|
34
|
+
title: string;
|
|
35
|
+
description: string;
|
|
36
|
+
module_type: string;
|
|
37
|
+
tech_name: string;
|
|
38
|
+
estimated_minutes?: number;
|
|
39
|
+
content: {
|
|
40
|
+
sections: unknown[];
|
|
41
|
+
};
|
|
42
|
+
}): Promise<ModuleSubmitResult>;
|
|
38
43
|
}
|
|
39
44
|
//# sourceMappingURL=api-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,cAAc,EAEd,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,YAAY,EACZ,MAAM,EACN,OAAO,EACP,aAAa,EACb,WAAW,EACX,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACd,MAAM,aAAa,CAAC;AA2DrB,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAuB;
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/api-client.js
CHANGED
|
@@ -4,30 +4,10 @@ export class VibeUnivClient {
|
|
|
4
4
|
apiKey;
|
|
5
5
|
baseUrl;
|
|
6
6
|
cachedLocale = null;
|
|
7
|
-
// Curriculum context cache for 2-pass generation (TTL: 30 min)
|
|
8
|
-
static CURRICULUM_CACHE_TTL = 30 * 60 * 1000;
|
|
9
|
-
_curriculumCache = new Map();
|
|
10
7
|
constructor(apiKey, baseUrl) {
|
|
11
8
|
this.apiKey = apiKey;
|
|
12
9
|
this.baseUrl = baseUrl.replace(/\/$/, "");
|
|
13
10
|
}
|
|
14
|
-
getCachedCurriculumData(projectId) {
|
|
15
|
-
const entry = this._curriculumCache.get(projectId);
|
|
16
|
-
if (!entry)
|
|
17
|
-
return null;
|
|
18
|
-
if (Date.now() - entry.timestamp > VibeUnivClient.CURRICULUM_CACHE_TTL) {
|
|
19
|
-
this._curriculumCache.delete(projectId);
|
|
20
|
-
return null;
|
|
21
|
-
}
|
|
22
|
-
return { context: entry.context, localFiles: entry.localFiles };
|
|
23
|
-
}
|
|
24
|
-
setCachedCurriculumData(projectId, context, localFiles) {
|
|
25
|
-
this._curriculumCache.set(projectId, {
|
|
26
|
-
context,
|
|
27
|
-
localFiles,
|
|
28
|
-
timestamp: Date.now(),
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
11
|
async getUserLocale() {
|
|
32
12
|
if (this.cachedLocale)
|
|
33
13
|
return this.cachedLocale;
|
|
@@ -219,5 +199,22 @@ export class VibeUnivClient {
|
|
|
219
199
|
async getCurriculumContext(projectId) {
|
|
220
200
|
return this.request("GET", `/projects/${projectId}/curriculum-context`);
|
|
221
201
|
}
|
|
202
|
+
async createCurriculum(projectId, data) {
|
|
203
|
+
const raw = await this.request("POST", `/projects/${projectId}/curriculum/start`, data);
|
|
204
|
+
return {
|
|
205
|
+
learningPathId: raw.learning_path_id,
|
|
206
|
+
status: raw.status,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
async submitModule(projectId, pathId, module) {
|
|
210
|
+
const raw = await this.request("POST", `/projects/${projectId}/curriculum/${pathId}/modules`, module);
|
|
211
|
+
return {
|
|
212
|
+
moduleId: raw.module_id,
|
|
213
|
+
moduleOrder: raw.module_order,
|
|
214
|
+
submitted: raw.submitted,
|
|
215
|
+
total: raw.total,
|
|
216
|
+
status: raw.status,
|
|
217
|
+
};
|
|
218
|
+
}
|
|
222
219
|
}
|
|
223
220
|
//# sourceMappingURL=api-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
|
+
import { VibeUnivClient } from "../lib/api-client.js";
|
|
4
|
+
export declare const createCurriculumSchema: {
|
|
5
|
+
project_id: z.ZodString;
|
|
6
|
+
title: z.ZodString;
|
|
7
|
+
description: z.ZodString;
|
|
8
|
+
difficulty: z.ZodEnum<["beginner", "intermediate", "advanced"]>;
|
|
9
|
+
total_modules: z.ZodNumber;
|
|
10
|
+
estimated_hours: z.ZodOptional<z.ZodNumber>;
|
|
11
|
+
};
|
|
12
|
+
export declare function registerCreateCurriculum(server: McpServer, client: VibeUnivClient): void;
|
|
13
|
+
//# sourceMappingURL=create-curriculum.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-curriculum.d.ts","sourceRoot":"","sources":["../../src/tools/create-curriculum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,eAAO,MAAM,sBAAsB;;;;;;;CAiBlC,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAqExF"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const createCurriculumSchema = {
|
|
3
|
+
project_id: z.string().describe("The VibeUniv project ID"),
|
|
4
|
+
title: z.string().describe("Curriculum title"),
|
|
5
|
+
description: z.string().describe("Curriculum description"),
|
|
6
|
+
difficulty: z
|
|
7
|
+
.enum(["beginner", "intermediate", "advanced"])
|
|
8
|
+
.describe("Target difficulty level"),
|
|
9
|
+
total_modules: z
|
|
10
|
+
.number()
|
|
11
|
+
.int()
|
|
12
|
+
.min(1)
|
|
13
|
+
.max(50)
|
|
14
|
+
.describe("Total number of modules that will be submitted"),
|
|
15
|
+
estimated_hours: z
|
|
16
|
+
.number()
|
|
17
|
+
.optional()
|
|
18
|
+
.describe("Estimated total hours to complete the curriculum"),
|
|
19
|
+
};
|
|
20
|
+
export function registerCreateCurriculum(server, client) {
|
|
21
|
+
server.tool("vibeuniv_create_curriculum", "Create a draft learning curriculum (learning path) for the project. This creates the curriculum shell β then submit each module individually with vibeuniv_submit_module. The curriculum auto-activates when all modules are submitted.", createCurriculumSchema, { readOnlyHint: false, openWorldHint: true }, async ({ project_id, title, description, difficulty, total_modules, estimated_hours }) => {
|
|
22
|
+
try {
|
|
23
|
+
console.error(`[vibeuniv] Creating draft curriculum for project ${project_id}...`);
|
|
24
|
+
const result = await client.createCurriculum(project_id, {
|
|
25
|
+
title,
|
|
26
|
+
description,
|
|
27
|
+
difficulty,
|
|
28
|
+
total_modules,
|
|
29
|
+
estimated_hours,
|
|
30
|
+
});
|
|
31
|
+
const locale = await client.getUserLocale();
|
|
32
|
+
const en = locale === "en";
|
|
33
|
+
const message = en
|
|
34
|
+
? [
|
|
35
|
+
`Draft curriculum created successfully!`,
|
|
36
|
+
``,
|
|
37
|
+
`- Learning Path ID: ${result.learningPathId}`,
|
|
38
|
+
`- Status: ${result.status}`,
|
|
39
|
+
`- Total modules to submit: ${total_modules}`,
|
|
40
|
+
``,
|
|
41
|
+
`Next steps:`,
|
|
42
|
+
`For each module, generate content with vibeuniv_generate_module_content, then submit immediately with vibeuniv_submit_module.`,
|
|
43
|
+
``,
|
|
44
|
+
`The curriculum will auto-activate when all ${total_modules} modules are submitted.`,
|
|
45
|
+
]
|
|
46
|
+
: [
|
|
47
|
+
`컀리νλΌ μ΄μμ΄ μμ±λμμ΅λλ€!`,
|
|
48
|
+
``,
|
|
49
|
+
`- Learning Path ID: ${result.learningPathId}`,
|
|
50
|
+
`- μν: ${result.status}`,
|
|
51
|
+
`- μ μΆν λͺ¨λ μ: ${total_modules}`,
|
|
52
|
+
``,
|
|
53
|
+
`λ€μ λ¨κ³:`,
|
|
54
|
+
`κ° λͺ¨λλ§λ€ vibeuniv_generate_module_contentλ‘ μ½ν
μΈ λ₯Ό μμ±ν ν, μ¦μ vibeuniv_submit_moduleλ‘ μ μΆνμΈμ.`,
|
|
55
|
+
``,
|
|
56
|
+
`${total_modules}κ° λͺ¨λμ΄ λͺ¨λ μ μΆλλ©΄ 컀리νλΌμ΄ μλμΌλ‘ νμ±νλ©λλ€.`,
|
|
57
|
+
];
|
|
58
|
+
return {
|
|
59
|
+
content: [
|
|
60
|
+
{
|
|
61
|
+
type: "text",
|
|
62
|
+
text: message.join("\n"),
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
69
|
+
return {
|
|
70
|
+
content: [
|
|
71
|
+
{
|
|
72
|
+
type: "text",
|
|
73
|
+
text: `Failed to create curriculum: ${message}`,
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
isError: true,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=create-curriculum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-curriculum.js","sourceRoot":"","sources":["../../src/tools/create-curriculum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC1D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;IAC9C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAC1D,UAAU,EAAE,CAAC;SACV,IAAI,CAAC,CAAC,UAAU,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;SAC9C,QAAQ,CAAC,yBAAyB,CAAC;IACtC,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,CAAC,gDAAgD,CAAC;IAC7D,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,kDAAkD,CAAC;CAChE,CAAC;AAEF,MAAM,UAAU,wBAAwB,CAAC,MAAiB,EAAE,MAAsB;IAChF,MAAM,CAAC,IAAI,CACT,4BAA4B,EAC5B,yOAAyO,EACzO,sBAAsB,EACtB,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,EAC5C,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,EAAE,EAAE;QACvF,IAAI,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,oDAAoD,UAAU,KAAK,CAAC,CAAC;YAEnF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE;gBACvD,KAAK;gBACL,WAAW;gBACX,UAAU;gBACV,aAAa;gBACb,eAAe;aAChB,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;YAC5C,MAAM,EAAE,GAAG,MAAM,KAAK,IAAI,CAAC;YAE3B,MAAM,OAAO,GAAG,EAAE;gBAChB,CAAC,CAAC;oBACE,wCAAwC;oBACxC,EAAE;oBACF,uBAAuB,MAAM,CAAC,cAAc,EAAE;oBAC9C,aAAa,MAAM,CAAC,MAAM,EAAE;oBAC5B,8BAA8B,aAAa,EAAE;oBAC7C,EAAE;oBACF,aAAa;oBACb,+HAA+H;oBAC/H,EAAE;oBACF,8CAA8C,aAAa,yBAAyB;iBACrF;gBACH,CAAC,CAAC;oBACE,mBAAmB;oBACnB,EAAE;oBACF,uBAAuB,MAAM,CAAC,cAAc,EAAE;oBAC9C,SAAS,MAAM,CAAC,MAAM,EAAE;oBACxB,eAAe,aAAa,EAAE;oBAC9B,EAAE;oBACF,QAAQ;oBACR,wFAAwF;oBACxF,EAAE;oBACF,GAAG,aAAa,kCAAkC;iBACnD,CAAC;YAEN,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;qBACzB;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,gCAAgC,OAAO,EAAE;qBAChD;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-curriculum.d.ts","sourceRoot":"","sources":["../../src/tools/generate-curriculum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"generate-curriculum.d.ts","sourceRoot":"","sources":["../../src/tools/generate-curriculum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAItD,eAAO,MAAM,wBAAwB;;;CAMpC,CAAC;AAoPF,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAgZ1F"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { scanTeachingCriticalFiles } from "../lib/file-scanner.js";
|
|
3
|
-
import { formatTechStack, formatKBHints, formatEducationalAnalysis, buildLevelGuidance, } from "../lib/curriculum-helpers.js";
|
|
4
3
|
export const generateCurriculumSchema = {
|
|
5
4
|
project_id: z.string().describe("The VibeUniv project ID"),
|
|
6
5
|
difficulty: z
|
|
@@ -8,11 +7,222 @@ export const generateCurriculumSchema = {
|
|
|
8
7
|
.default("beginner")
|
|
9
8
|
.describe("Target difficulty level for the curriculum"),
|
|
10
9
|
};
|
|
10
|
+
// βββ Formatting helpers βββββββββββββββββββββββββββββββββββββββββββββ
|
|
11
|
+
function formatTechStack(t) {
|
|
12
|
+
return `- **${t.name}**${t.version ? ` v${t.version}` : ""} (${t.category})`;
|
|
13
|
+
}
|
|
14
|
+
function formatKBHints(kbHints, locale) {
|
|
15
|
+
const sections = [];
|
|
16
|
+
for (const [techName, hints] of Object.entries(kbHints)) {
|
|
17
|
+
if (hints.length === 0)
|
|
18
|
+
continue;
|
|
19
|
+
const conceptLines = locale === "en"
|
|
20
|
+
? hints.map((h) => `#### ${h.concept_name} (\`${h.concept_key}\`)
|
|
21
|
+
- **Key Points:**
|
|
22
|
+
${h.key_points.map((p) => ` - ${p}`).join("\n")}
|
|
23
|
+
- **Good Quiz Topics:** ${h.common_quiz_topics.join(", ")}
|
|
24
|
+
- **Prerequisites:** ${h.prerequisite_concepts.length > 0 ? h.prerequisite_concepts.join(", ") : "(none)"}`).join("\n\n")
|
|
25
|
+
: hints.map((h) => `#### ${h.concept_name} (\`${h.concept_key}\`)
|
|
26
|
+
- **ν΅μ¬ ν¬μΈνΈ:**
|
|
27
|
+
${h.key_points.map((p) => ` - ${p}`).join("\n")}
|
|
28
|
+
- **μ’μ ν΄μ¦ μ£Όμ :** ${h.common_quiz_topics.join(", ")}
|
|
29
|
+
- **μ ν κ°λ
:** ${h.prerequisite_concepts.length > 0 ? h.prerequisite_concepts.join(", ") : "(μμ)"}`).join("\n\n");
|
|
30
|
+
const heading = locale === "en"
|
|
31
|
+
? `### ${techName} Core Concept Guide`
|
|
32
|
+
: `### ${techName} ν΅μ¬ κ°λ
κ°μ΄λ`;
|
|
33
|
+
sections.push(`${heading}\n\n${conceptLines}`);
|
|
34
|
+
}
|
|
35
|
+
if (sections.length === 0)
|
|
36
|
+
return "";
|
|
37
|
+
const header = locale === "en"
|
|
38
|
+
? `## Educational Key Points (Knowledge Base)
|
|
39
|
+
|
|
40
|
+
Below are **core educational key points** for each technology.
|
|
41
|
+
Include these points in the curriculum, reference quiz topics, and follow prerequisite ordering.`
|
|
42
|
+
: `## κ΅μ‘ ν΅μ¬ ν¬μΈνΈ (Knowledge Base)
|
|
43
|
+
|
|
44
|
+
μλλ κ° κΈ°μ μ **ν΅μ¬ κ΅μ‘ ν¬μΈνΈ**μ
λλ€.
|
|
45
|
+
컀리νλΌμ λ°λμ μ΄ ν¬μΈνΈλ€μ ν¬ν¨νκ³ , ν΄μ¦ μ£Όμ λ₯Ό μ°Έκ³ νμΈμ.
|
|
46
|
+
μ ν κ°λ
μμμ λ§κ² λͺ¨λμ λ°°μΉνμΈμ.`;
|
|
47
|
+
return `${header}\n\n${sections.join("\n\n")}`;
|
|
48
|
+
}
|
|
49
|
+
function formatEducationalAnalysis(analysis, difficulty, locale) {
|
|
50
|
+
const sections = [];
|
|
51
|
+
const en = locale === "en";
|
|
52
|
+
// Project Overview
|
|
53
|
+
const ov = analysis.project_overview;
|
|
54
|
+
sections.push(en
|
|
55
|
+
? `### Project Overview (AI Analysis)
|
|
56
|
+
- **App Description:** ${ov.one_liner}
|
|
57
|
+
- **App Type:** ${ov.app_type}
|
|
58
|
+
- **Target Users:** ${ov.target_users}
|
|
59
|
+
- **Core Features:** ${ov.core_features.join(", ")}`
|
|
60
|
+
: `### νλ‘μ νΈ κ°μ (AI λΆμ κ²°κ³Ό)
|
|
61
|
+
- **μ± μ€λͺ
:** ${ov.one_liner}
|
|
62
|
+
- **μ± μ ν:** ${ov.app_type}
|
|
63
|
+
- **λμ μ¬μ©μ:** ${ov.target_users}
|
|
64
|
+
- **ν΅μ¬ κΈ°λ₯:** ${ov.core_features.join(", ")}`);
|
|
65
|
+
// User Flows
|
|
66
|
+
if (analysis.user_flows.length > 0) {
|
|
67
|
+
const flowLines = analysis.user_flows.map((f) => {
|
|
68
|
+
const steps = f.steps
|
|
69
|
+
.map((s) => ` - ${s.description} (\`${s.file}\`:${s.line_range})`)
|
|
70
|
+
.join("\n");
|
|
71
|
+
return en
|
|
72
|
+
? `- **${f.name}** (difficulty: ${f.difficulty})\n Trigger: ${f.trigger}\n${steps}`
|
|
73
|
+
: `- **${f.name}** (λμ΄λ: ${f.difficulty})\n νΈλ¦¬κ±°: ${f.trigger}\n${steps}`;
|
|
74
|
+
});
|
|
75
|
+
sections.push(en
|
|
76
|
+
? `### User Flows\n\nEach flow should be covered in the curriculum:\n\n${flowLines.join("\n\n")}`
|
|
77
|
+
: `### μ¬μ©μ νλ¦ (User Flows)\n\nκ° νλ¦μ 컀리νλΌμμ λ€λ€μΌ ν©λλ€:\n\n${flowLines.join("\n\n")}`);
|
|
78
|
+
}
|
|
79
|
+
// File Difficulty Map
|
|
80
|
+
if (analysis.file_analysis.length > 0) {
|
|
81
|
+
const fileLines = analysis.file_analysis
|
|
82
|
+
.sort((a, b) => a.complexity - b.complexity)
|
|
83
|
+
.map((f) => en
|
|
84
|
+
? `- \`${f.path}\` β ${f.role} (complexity: ${f.complexity}/5, ${f.difficulty})`
|
|
85
|
+
: `- \`${f.path}\` β ${f.role} (볡μ‘λ: ${f.complexity}/5, ${f.difficulty})`);
|
|
86
|
+
sections.push(en
|
|
87
|
+
? `### File Difficulty Map\n\nSorted from easiest to hardest. Use this to determine module order:\n\n${fileLines.join("\n")}`
|
|
88
|
+
: `### νμΌ λμ΄λ λ§΅\n\nμ¬μ΄ νμΌλΆν° μ΄λ €μ΄ νμΌ μμλ‘ μ λ ¬νμ΅λλ€. λͺ¨λ μμλ₯Ό κ²°μ ν λ μ°Έκ³ νμΈμ:\n\n${fileLines.join("\n")}`);
|
|
89
|
+
}
|
|
90
|
+
// Learning Priorities
|
|
91
|
+
const priorities = analysis.learning_priorities;
|
|
92
|
+
const lp = difficulty === "beginner"
|
|
93
|
+
? priorities.beginner
|
|
94
|
+
: difficulty === "intermediate"
|
|
95
|
+
? priorities.intermediate
|
|
96
|
+
: priorities.advanced;
|
|
97
|
+
const priorityLines = en
|
|
98
|
+
? [
|
|
99
|
+
`- **Start with:** ${lp.start_with.join(", ")}`,
|
|
100
|
+
`- **Focus on:** ${lp.focus_on.join(", ")}`,
|
|
101
|
+
]
|
|
102
|
+
: [
|
|
103
|
+
`- **μμ:** ${lp.start_with.join(", ")}`,
|
|
104
|
+
`- **μ§μ€:** ${lp.focus_on.join(", ")}`,
|
|
105
|
+
];
|
|
106
|
+
if ("skip_for_now" in lp) {
|
|
107
|
+
priorityLines.push(en
|
|
108
|
+
? `- **Skip for now:** ${lp.skip_for_now.join(", ")}`
|
|
109
|
+
: `- **λμ€μ:** ${lp.skip_for_now.join(", ")}`);
|
|
110
|
+
}
|
|
111
|
+
if ("deep_dive" in lp) {
|
|
112
|
+
priorityLines.push(en
|
|
113
|
+
? `- **Deep dive:** ${lp.deep_dive.join(", ")}`
|
|
114
|
+
: `- **μ¬ν:** ${lp.deep_dive.join(", ")}`);
|
|
115
|
+
}
|
|
116
|
+
if ("challenge_topics" in lp) {
|
|
117
|
+
priorityLines.push(en
|
|
118
|
+
? `- **Challenge:** ${lp.challenge_topics.join(", ")}`
|
|
119
|
+
: `- **λμ :** ${lp.challenge_topics.join(", ")}`);
|
|
120
|
+
}
|
|
121
|
+
sections.push(en
|
|
122
|
+
? `### ${difficulty} Level Learning Priorities\n\n${priorityLines.join("\n")}`
|
|
123
|
+
: `### ${difficulty} λμ΄λ νμ΅ μ°μ μμ\n\n${priorityLines.join("\n")}`);
|
|
124
|
+
// Repeated Patterns
|
|
125
|
+
if (analysis.repeated_patterns.length > 0) {
|
|
126
|
+
const patternLines = analysis.repeated_patterns.map((p) => en
|
|
127
|
+
? `- **${p.name}**: ${p.description} (found ${p.occurrences.length} times) β teaching value: ${p.teaching_value}`
|
|
128
|
+
: `- **${p.name}**: ${p.description} (${p.occurrences.length}ν λ°κ²¬) β κ΅μ‘ κ°μΉ: ${p.teaching_value}`);
|
|
129
|
+
sections.push(en
|
|
130
|
+
? `### Repeated Patterns\n\nThese patterns are used repeatedly in the project. Including them in the curriculum enhances learning:\n\n${patternLines.join("\n")}`
|
|
131
|
+
: `### λ°λ³΅ ν¨ν΄\n\nνλ‘μ νΈμμ λ°λ³΅μ μΌλ‘ μ¬μ©λλ ν¨ν΄μ
λλ€. μ΄ ν¨ν΄λ€μ 컀리νλΌμ ν¬ν¨νλ©΄ νμ΅ ν¨κ³Όκ° λμμ§λλ€:\n\n${patternLines.join("\n")}`);
|
|
132
|
+
}
|
|
133
|
+
// Code Quality
|
|
134
|
+
const cq = analysis.code_quality;
|
|
135
|
+
if (cq.good_practices.length > 0 || cq.improvement_areas.length > 0) {
|
|
136
|
+
const lines = [];
|
|
137
|
+
if (cq.good_practices.length > 0) {
|
|
138
|
+
lines.push(en ? "**Good Practices (Teaching Points):**" : "**μ’μ μ¬λ‘ (κ΅μ‘ ν¬μΈνΈ):**");
|
|
139
|
+
for (const gp of cq.good_practices) {
|
|
140
|
+
lines.push(en
|
|
141
|
+
? `- ${gp.description} β Related concept: ${gp.concept}`
|
|
142
|
+
: `- ${gp.description} β κ΄λ ¨ κ°λ
: ${gp.concept}`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (cq.improvement_areas.length > 0) {
|
|
146
|
+
lines.push(en ? "\n**Improvement Opportunities (Learning Opportunities):**" : "\n**κ°μ κΈ°ν (νμ΅ κΈ°ν):**");
|
|
147
|
+
for (const ia of cq.improvement_areas) {
|
|
148
|
+
lines.push(en
|
|
149
|
+
? `- [${ia.severity}] ${ia.description} β Teaching: ${ia.teaching_opportunity}`
|
|
150
|
+
: `- [${ia.severity}] ${ia.description} β κ΅μ‘: ${ia.teaching_opportunity}`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
sections.push(en
|
|
154
|
+
? `### Code Quality Observations\n\n${lines.join("\n")}`
|
|
155
|
+
: `### μ½λ νμ§ κ΄μ°°\n\n${lines.join("\n")}`);
|
|
156
|
+
}
|
|
157
|
+
// Tech Stack Metaphors (beginner only)
|
|
158
|
+
if (difficulty === "beginner" && ov.tech_stack_metaphors.length > 0) {
|
|
159
|
+
const metaphorLines = ov.tech_stack_metaphors.map((m) => `- **${m.tech_name}** β ${m.metaphor}`);
|
|
160
|
+
sections.push(en
|
|
161
|
+
? `### Tech Stack Metaphors (Beginner)\n\nUse these metaphors actively in the curriculum:\n\n${metaphorLines.join("\n")}`
|
|
162
|
+
: `### κΈ°μ μ€ν λΉμ (μ΄λ³΄μμ©)\n\nμ΄ λΉμ λ€μ 컀리νλΌμμ μ κ·Ή νμ©νμΈμ:\n\n${metaphorLines.join("\n")}`);
|
|
163
|
+
}
|
|
164
|
+
const header = en
|
|
165
|
+
? `## Project Educational Analysis
|
|
166
|
+
|
|
167
|
+
Below is AI-analyzed educational metadata for the project.
|
|
168
|
+
Use this information to create a more specific and personalized curriculum.`
|
|
169
|
+
: `## νλ‘μ νΈ κ΅μ‘ λΆμ (Educational Analysis)
|
|
170
|
+
|
|
171
|
+
μλλ AIκ° νλ‘μ νΈλ₯Ό λΆμν κ΅μ‘μ© λ©νλ°μ΄ν°μ
λλ€.
|
|
172
|
+
μ΄ μ 보λ₯Ό νμ©ν΄ λ ꡬ체μ μ΄κ³ λ§μΆ€νλ 컀리νλΌμ λ§λμΈμ.`;
|
|
173
|
+
return `${header}\n\n${sections.join("\n\n")}`;
|
|
174
|
+
}
|
|
175
|
+
function buildLevelGuidance(difficulty, locale) {
|
|
176
|
+
const en = locale === "en";
|
|
177
|
+
if (difficulty === "beginner") {
|
|
178
|
+
return en
|
|
179
|
+
? `**[Core Principle] Explain as if to a 5-6 year old. Assume they know nothing.**
|
|
180
|
+
- 3-step concept breakdown: β Analogy (food/LEGO/school/play) β β‘One-sentence definition β β’Code connection
|
|
181
|
+
- "What if this didn't exist?" before/after comparison (e.g., "No middleware? β Anyone can access secret pages π±")
|
|
182
|
+
- Translate key code lines into plain English (e.g., \`const x = 5\` β "Put the number 5 in a box called x π¦")
|
|
183
|
+
- Give friendly nicknames to technical terms: useStateβ"memory box", propsβ"delivery package", middlewareβ"security checkpoint"
|
|
184
|
+
- concept 40%+, quiz 20%+, practical 15%β(very easy only)
|
|
185
|
+
- explanation 400+ chars, 5-7 sections per module
|
|
186
|
+
- Use emojis actively: π―summary, π‘tip, β οΈwarning, πpraise
|
|
187
|
+
- Tone: like reading a picture book, short sentences, lots of encouragement
|
|
188
|
+
- estimated_minutes: 20-35 min`
|
|
189
|
+
: `**[λμμΉ] 5~6μΈ μμ΄μκ² μ€λͺ
νλ―. μ무κ²λ λͺ¨λ₯Έλ€κ³ κ°μ .**
|
|
190
|
+
- κ°λ
3λ¨κ³ μͺΌκ°κΈ°: β λΉμ (μμ/λ κ³ /νκ΅/λμ΄) β β‘ν λ¬Έμ₯ μ μ β β’μ½λ μ°κ²°
|
|
191
|
+
- "μ΄κ² μμΌλ©΄?" before/after λΉκ΅ (μ: "λ―Έλ€μ¨μ΄ μμΌλ©΄? β μ무λ λΉλ° νμ΄μ§ μ κ·Ό π±")
|
|
192
|
+
- μ£Όμ μ½λ λΌμΈμ "μ°λ¦¬λ§ λ²μ" (μ: \`const x = 5\` β "x μμμ μ«μ 5λ₯Ό λ£μ΄μ π¦")
|
|
193
|
+
- κΈ°μ μ©μ΄μ νκ΅μ΄ λ³λͺ
: useStateβ"κΈ°μ΅ μμ", propsβ"νλ°° μμ", middlewareβ"보μ κ²λ¬Έμ"
|
|
194
|
+
- concept 40%β, quiz 20%β, practical 15%β(μμ£Ό μ¬μ΄ κ²λ§)
|
|
195
|
+
- explanation 400μβ, λͺ¨λλΉ 5-7μΉμ
|
|
196
|
+
- μ΄λͺ¨μ§ μ κ·Ή νμ©: π―νμ€μ 리, π‘ν, β οΈμ£Όμ, πμΉμ°¬
|
|
197
|
+
- ν€: κ·Έλ¦Όμ±
μ½μ΄μ£Όλ―, μ§§μ λ¬Έμ₯, κ²©λ €Β·μΉμ°¬ λν
|
|
198
|
+
- estimated_minutes: 20-35λΆ`;
|
|
199
|
+
}
|
|
200
|
+
if (difficulty === "intermediate") {
|
|
201
|
+
return en
|
|
202
|
+
? `- Assume basic programming knowledge
|
|
203
|
+
- Focus on "how" and "why" β not just usage but how things work and design decisions
|
|
204
|
+
- Increase practical and project_walkthrough module ratio
|
|
205
|
+
- Cover common patterns, best practices, common mistakes`
|
|
206
|
+
: `- κΈ°λ³Έ νλ‘κ·Έλλ° μ§μμ μλ€κ³ κ°μ
|
|
207
|
+
- "μ΄λ»κ²"μ "μ"μ μ§μ€ β λ¨μ μ¬μ©λ²μ΄ μλλΌ λμ μ리μ μ€κ³ μ΄μ
|
|
208
|
+
- practicalκ³Ό project_walkthrough λͺ¨λ λΉμ€ λμ΄κΈ°
|
|
209
|
+
- μΌλ°μ μΈ ν¨ν΄, λ² μ€νΈ νλν°μ€, νν μ€μ λ€λ£¨κΈ°`;
|
|
210
|
+
}
|
|
211
|
+
return en
|
|
212
|
+
? `- Assume solid programming knowledge
|
|
213
|
+
- Focus on advanced patterns, performance optimization, architecture design
|
|
214
|
+
- Maximize practical and project_walkthrough ratio
|
|
215
|
+
- Cover edge cases, internals, optimization strategies`
|
|
216
|
+
: `- ννν νλ‘κ·Έλλ° μ§μ μ μ
|
|
217
|
+
- κ³ κΈ ν¨ν΄, μ±λ₯ μ΅μ ν, μν€ν
μ² μ€κ³μ μ§μ€
|
|
218
|
+
- practicalκ³Ό project_walkthrough λΉμ€ κ·Ήλν
|
|
219
|
+
- μ£μ§ μΌμ΄μ€, λ΄λΆ λμ μ리, μ΅μ ν μ λ΅ λ€λ£¨κΈ°`;
|
|
220
|
+
}
|
|
11
221
|
// βββ Tool registration ββββββββββββββββββββββββββββββββββββββββββββββ
|
|
12
222
|
export function registerGenerateCurriculum(server, client) {
|
|
13
|
-
server.tool("vibeuniv_generate_curriculum", "
|
|
223
|
+
server.tool("vibeuniv_generate_curriculum", "Generate a learning curriculum for the project. IMPORTANT: Before calling this tool, you MUST ask the user which difficulty level they prefer β beginner (μ΄κΈ), intermediate (μ€κΈ), or advanced (κ³ κΈ). Do NOT default to beginner without asking. Returns tech stack info and instructions β you generate the structure JSON, then use vibeuniv_create_curriculum to create a draft, and submit each module individually with vibeuniv_submit_module.", generateCurriculumSchema, { readOnlyHint: true, openWorldHint: true }, async ({ project_id, difficulty }) => {
|
|
14
224
|
try {
|
|
15
|
-
console.error(`[vibeuniv] Generating curriculum
|
|
225
|
+
console.error(`[vibeuniv] Generating curriculum instructions for project ${project_id}...`);
|
|
16
226
|
// Fetch all curriculum context in a single API call
|
|
17
227
|
const curriculumContext = await client.getCurriculumContext(project_id);
|
|
18
228
|
// Read teaching-critical files from local disk (avoids server roundtrip for file decryption)
|
|
@@ -23,8 +233,6 @@ export function registerGenerateCurriculum(server, client) {
|
|
|
23
233
|
catch (err) {
|
|
24
234
|
console.error(`[vibeuniv] Local file scan failed (non-fatal): ${err instanceof Error ? err.message : err}`);
|
|
25
235
|
}
|
|
26
|
-
// Cache context + local files for Pass 2 (generate_module_content)
|
|
27
|
-
client.setCachedCurriculumData(project_id, curriculumContext, localFiles);
|
|
28
236
|
// Prefer local files; fall back to server files if local scan yields nothing
|
|
29
237
|
const curriculumFiles = localFiles.length > 0
|
|
30
238
|
? localFiles
|
|
@@ -89,18 +297,27 @@ export function registerGenerateCurriculum(server, client) {
|
|
|
89
297
|
? `\n## Project Source Code
|
|
90
298
|
|
|
91
299
|
Below are the student's actual project files.
|
|
92
|
-
|
|
300
|
+
You MUST directly quote this code in code_example and walkthrough sections.
|
|
301
|
+
Do NOT make up code.
|
|
93
302
|
|
|
94
303
|
${curriculumFiles.map((f) => `#### ${f.file_path}\n\`\`\`\n${f.content}\n\`\`\``).join("\n\n")}\n`
|
|
95
304
|
: `\n## νλ‘μ νΈ μμ€ μ½λ
|
|
96
305
|
|
|
97
306
|
μλλ νμμ μ€μ νλ‘μ νΈ νμΌμ
λλ€.
|
|
98
|
-
|
|
307
|
+
컀리νλΌμ code_example, walkthrough μΉμ
μμ λ°λμ μ΄ μ½λλ₯Ό μ§μ μΈμ©νμΈμ.
|
|
308
|
+
μ½λλ₯Ό μ°½μνμ§ λ§μΈμ.
|
|
99
309
|
|
|
100
310
|
${curriculumFiles.map((f) => `#### ${f.file_path}\n\`\`\`\n${f.content}\n\`\`\``).join("\n\n")}\n`
|
|
101
311
|
: "";
|
|
312
|
+
const learnMoreLabel = en ? "π Learn More" : "π λ μμ보기";
|
|
313
|
+
const minBodyChars = difficulty === "beginner" ? "800" : "400";
|
|
314
|
+
const sectionsPerModule = difficulty === "beginner" ? "7-10" : "5-7";
|
|
315
|
+
const minSections = difficulty === "beginner" ? "7" : "5";
|
|
316
|
+
const paragraphs = difficulty === "beginner" ? "8-12" : "5-8";
|
|
317
|
+
const minCodeExamples = difficulty === "beginner" ? "2" : "1";
|
|
318
|
+
const minQuizQuestions = difficulty === "beginner" ? "2" : "1";
|
|
102
319
|
const instructions = en
|
|
103
|
-
? `Please generate a learning curriculum
|
|
320
|
+
? `Please generate a learning curriculum for this project.
|
|
104
321
|
|
|
105
322
|
## Target: Vibe Coder (${difficulty})
|
|
106
323
|
|
|
@@ -139,11 +356,41 @@ Bad examples:
|
|
|
139
356
|
**Module Types:** concept (concept+analogy), practical (code practice), quiz (code-based quiz), project_walkthrough (line-by-line file reading)
|
|
140
357
|
**Difficulty:**
|
|
141
358
|
${levelGuidance}
|
|
359
|
+
|
|
360
|
+
**Section Design (${sectionsPerModule} per module, minimum ${minSections}):**
|
|
361
|
+
- explanation: Markdown ${paragraphs} paragraphs. Must cite project file paths.
|
|
362
|
+
End with "${learnMoreLabel}" links 2-3 (Reactβreact.dev, Next.jsβnextjs.org/docs,
|
|
363
|
+
TypeScriptβtypescriptlang.org, Supabaseβsupabase.com/docs, Tailwindβtailwindcss.com/docs)
|
|
364
|
+
- code_example: Copy actual project code + line-by-line comments.
|
|
365
|
+
Below the code block, explain with numbered list "What this code does:"
|
|
366
|
+
- quiz_question: 4-choice based on project code. quiz_explanation with correct/incorrect reasoning
|
|
367
|
+
- challenge: ___BLANK___ fill-in-the-blank. Both starter_code and answer_code required
|
|
368
|
+
- reflection: "Open the X folder in your project. Look for Y." format
|
|
369
|
+
|
|
370
|
+
**Required Placement Rules:**
|
|
371
|
+
- Start each module with explanation
|
|
372
|
+
- Maximum 2 consecutive explanations, 3rd must be quiz/reflection
|
|
373
|
+
- At least 1 code_example per module required
|
|
374
|
+
- At least 1 quiz_question per module required
|
|
375
|
+
|
|
376
|
+
**Tone (Critical β key to learning content quality):**
|
|
377
|
+
- Use casual, friendly "you" language
|
|
378
|
+
- Address the student as "you" or "we"
|
|
379
|
+
- Short sentences, one idea per sentence
|
|
380
|
+
- Keep technical terms in English + follow with a plain explanation in parentheses
|
|
381
|
+
- Start with questions: "Have you ever wondered about this code?", "Why does it work this way?"
|
|
382
|
+
- Encourage: "If you've followed along this far, you already understand half of it!", "It can be confusing at first β don't worry"
|
|
383
|
+
- Use analogies: everyday analogies for new concepts (APIβrestaurant order window, componentβLEGO blocks)
|
|
384
|
+
- Transition phrases: "Alright, now let's...", "Wait a moment!", "Let's check the actual code, shall we?"
|
|
385
|
+
- Forbidden: dry academic tone, filler phrases like "Great question!", emotionless listing
|
|
386
|
+
- Do NOT make up code β only quote actual project code
|
|
387
|
+
|
|
388
|
+
**walkthrough:** Explain a file from importβlogicβexport order + connections to other files.
|
|
142
389
|
${eduInstruction}${kbInstruction}
|
|
143
390
|
|
|
144
|
-
## JSON Schema
|
|
391
|
+
## JSON Schema
|
|
145
392
|
|
|
146
|
-
|
|
393
|
+
Follow the structure below exactly. All string values in English. Output ONLY JSON (no code fences/explanations).
|
|
147
394
|
|
|
148
395
|
{
|
|
149
396
|
"title": "string (required) β Curriculum title",
|
|
@@ -156,35 +403,51 @@ Output ONLY JSON (no code fences/explanations). Do NOT include "content" or "sec
|
|
|
156
403
|
"description": "string (required) β Module description",
|
|
157
404
|
"module_type": "concept | practical | quiz | project_walkthrough",
|
|
158
405
|
"estimated_minutes": number (15-45),
|
|
159
|
-
"tech_name": "string (required) β Must exactly match a name from the tech stack list above"
|
|
406
|
+
"tech_name": "string (required) β Must exactly match a name from the tech stack list above",
|
|
407
|
+
"content": {
|
|
408
|
+
"sections": [
|
|
409
|
+
{
|
|
410
|
+
"type": "explanation | code_example | quiz_question | challenge | reflection",
|
|
411
|
+
"title": "string (required) β Section title",
|
|
412
|
+
"body": "string (required) β Markdown body. explanation minimum ${minBodyChars} chars",
|
|
413
|
+
|
|
414
|
+
"code": "string (required for code_example) β Actual project code + line-by-line comments",
|
|
415
|
+
|
|
416
|
+
"quiz_options": ["string", "string", "string", "string"] (required for quiz_question, exactly 4),
|
|
417
|
+
"quiz_answer": number (required for quiz_question, 0-3),
|
|
418
|
+
"quiz_explanation": "string (required for quiz_question) β Correct/incorrect reasoning",
|
|
419
|
+
|
|
420
|
+
"challenge_starter_code": "string (required for challenge) β Contains ___BLANK___",
|
|
421
|
+
"challenge_answer_code": "string (required for challenge) β Completed code"
|
|
422
|
+
}
|
|
423
|
+
]
|
|
424
|
+
}
|
|
160
425
|
}
|
|
161
426
|
]
|
|
162
427
|
}
|
|
163
428
|
|
|
164
|
-
**Required:**
|
|
165
|
-
-
|
|
166
|
-
-
|
|
167
|
-
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
5. Submit: vibeuniv_submit_curriculum({ project_id: "${project_id}", curriculum: <complete JSON> })`
|
|
187
|
-
: `μ΄ νλ‘μ νΈμ νμ΅ μ»€λ¦¬νλΌ κ΅¬μ‘°λ₯Ό μμ±ν΄μ£ΌμΈμ.
|
|
429
|
+
**Required Rules:**
|
|
430
|
+
- At least ${minCodeExamples} code_example(s) + ${minQuizQuestions} quiz_question(s) per module
|
|
431
|
+
- Minimum 10 modules, minimum ${minSections} sections per module
|
|
432
|
+
- explanation body must be at least ${minBodyChars} characters${difficulty === "beginner" ? `
|
|
433
|
+
|
|
434
|
+
**[Beginner-only Additional Rules β Must Follow]:**
|
|
435
|
+
- Every concept must have "What if this didn't exist?" before/after comparison
|
|
436
|
+
- Every line of code in code_example must have a plain-English translation
|
|
437
|
+
- Challenges must have only 1-2 blanks with very specific hints
|
|
438
|
+
- All technical terms must have friendly nicknames` : ""}
|
|
439
|
+
|
|
440
|
+
## Per-Module Submission Flow (IMPORTANT β follow this exact sequence)
|
|
441
|
+
|
|
442
|
+
1. Generate the curriculum structure JSON above (title, description, difficulty, modules with content)
|
|
443
|
+
2. Call **vibeuniv_create_curriculum**({ project_id: "${project_id}", title, description, difficulty, total_modules: <number of modules> }) β get learning_path_id
|
|
444
|
+
3. For EACH module (in order):
|
|
445
|
+
a. Take the module's content from the structure JSON
|
|
446
|
+
b. Call **vibeuniv_submit_module**({ project_id: "${project_id}", learning_path_id, module_order: <1-based>, title, description, module_type, tech_name, content: { sections: [...] } })
|
|
447
|
+
4. The curriculum auto-activates when all modules are submitted!
|
|
448
|
+
|
|
449
|
+
**DO NOT** try to submit everything at once with vibeuniv_submit_curriculum β use vibeuniv_submit_module for each module individually.`
|
|
450
|
+
: `μ΄ νλ‘μ νΈμ νμ΅ μ»€λ¦¬νλΌμ μμ±ν΄μ£ΌμΈμ.
|
|
188
451
|
|
|
189
452
|
## λμ: λ°μ΄λΈ μ½λ (${difficulty})
|
|
190
453
|
|
|
@@ -223,11 +486,41 @@ ${filesSection}${eduSection}${kbSection}
|
|
|
223
486
|
**λͺ¨λ μ ν:** concept(κ°λ
+λΉμ ), practical(μ½λ μ€μ΅), quiz(μ½λ κΈ°λ° ν΄μ¦), project_walkthrough(νμΌ λΌμΈλ³ μ½κΈ°)
|
|
224
487
|
**λμ΄λ:**
|
|
225
488
|
${levelGuidance}
|
|
489
|
+
|
|
490
|
+
**μΉμ
κ΅¬μ± (λͺ¨λλΉ ${sectionsPerModule}κ°, μ΅μ ${minSections}κ°):**
|
|
491
|
+
- explanation: λ§ν¬λ€μ΄ ${paragraphs} λ¬Έλ¨. λ°λμ νλ‘μ νΈ νμΌ κ²½λ‘ μΈμ©.
|
|
492
|
+
λμ "${learnMoreLabel}" λ§ν¬ 2-3κ° (Reactβreact.dev, Next.jsβnextjs.org/docs,
|
|
493
|
+
TypeScriptβtypescriptlang.org, Supabaseβsupabase.com/docs, Tailwindβtailwindcss.com/docs)
|
|
494
|
+
- code_example: νλ‘μ νΈ μ€μ μ½λ λ³΅μ¬ + λΌμΈλ³ νκ΅μ΄ μ£Όμ.
|
|
495
|
+
μ½λ λΈλ‘ μλμ "μ΄ μ½λκ° νλ μΌ:" λ²νΈ λͺ©λ‘μΌλ‘ μ€λͺ
|
|
496
|
+
- quiz_question: νλ‘μ νΈ μ½λ κΈ°λ° 4μ§μ λ€. quiz_explanationμ μ λ΅/μ€λ΅ μ΄μ
|
|
497
|
+
- challenge: ___BLANK___ λΉμΉΈ μ±μ°κΈ°. starter_code + answer_code λͺ¨λ νμ
|
|
498
|
+
- reflection: "μ¬λ¬λΆμ νλ‘μ νΈμμ X ν΄λλ₯Ό μ΄μ΄λ³΄μΈμ. Yλ₯Ό μ°Ύμ보μΈμ." νν
|
|
499
|
+
|
|
500
|
+
**νμ λ°°μΉ κ·μΉ:**
|
|
501
|
+
- λͺ¨λ μμμ explanationμΌλ‘
|
|
502
|
+
- explanation μ°μ 2κ°κΉμ§λ§, 3λ²μ§Έλ λ°λμ quiz/reflection
|
|
503
|
+
- λͺ¨λλΉ code_example μ΅μ 1κ° νμ
|
|
504
|
+
- λͺ¨λλΉ quiz_question μ΅μ 1κ° νμ
|
|
505
|
+
|
|
506
|
+
**ν€ (λ§€μ° μ€μ β νμ΅ μ½ν
μΈ νμ§μ ν΅μ¬):**
|
|
507
|
+
- ν΄μ체 μ¬μ© (~μ΄μμ, ~κ±°λ μ, ~μμμ, ~ν΄λ³ΌκΉμ?)
|
|
508
|
+
- νμμ "μ¬λ¬λΆ" λλ "μ°λ¦¬"λ‘ μ§μΉ
|
|
509
|
+
- μ§§μ λ¬Έμ₯ μμ£Ό, ν λ¬Έμ₯μ νλμ μμ΄λμ΄
|
|
510
|
+
- κΈ°μ μ©μ΄λ μμ΄ μ μ§ + λ°λ‘ λ€μ κ΄νΈλ‘ μ¬μ΄ μ€λͺ
|
|
511
|
+
- μ§λ¬ΈμΌλ‘ μμ: "νΉμ μ΄ μ½λ 보면μ κΆκΈνμ
¨μ£ ?", "μ μ΄λ κ² ν κΉμ?"
|
|
512
|
+
- κ²©λ € νμ: "μ¬κΈ°κΉμ§ λ°λΌμ€μ
¨μΌλ©΄ λ²μ¨ μ λ°μ μ΄ν΄νμ κ±°μμ!", "μ²μμ ν·κ°λ¦΄ μ μλλ° κ±±μ λ§μΈμ"
|
|
513
|
+
- λΉμ νμ: μ κ°λ
λ§λ€ μΌμμν λΉμ (APIβμλΉ μ£Όλ¬Έ 창ꡬ, μ»΄ν¬λνΈβλ κ³ λΈλ‘)
|
|
514
|
+
- μ ν μ΄κ΅¬: "μ, κ·Έλ¬λ©΄ μ΄μ ...", "μ¬κΈ°μ μ κΉ!", "μ€μ μ½λμμ νμΈν΄λ³ΌκΉμ?"
|
|
515
|
+
- κΈμ§: κ΅κ³Όμ체(~μ΄λ€, ~νλΌ), κ°μ μλ λμ΄, μμ΄ μ§μν¬
|
|
516
|
+
- μ½λ μ°½μ κΈμ§ β νλ‘μ νΈ μ€μ μ½λλ§ μΈμ©
|
|
517
|
+
|
|
518
|
+
**walkthrough:** νμΌ νλλ₯Ό importβλ‘μ§βexport μμλ‘ μ€λͺ
+ λ€λ₯Έ νμΌκ³Όμ μ°κ²°.
|
|
226
519
|
${eduInstruction}${kbInstruction}
|
|
227
520
|
|
|
228
|
-
## JSON μ€ν€λ§
|
|
521
|
+
## JSON μ€ν€λ§
|
|
229
522
|
|
|
230
|
-
μλ ꡬ쑰λ₯Ό μ νν λ°λ₯΄μΈμ. JSONλ§ μΆλ ₯ (μ½λ νμ€/μ€λͺ
μμ΄).
|
|
523
|
+
μλ ꡬ쑰λ₯Ό μ νν λ°λ₯΄μΈμ. λͺ¨λ string κ°μ νκ΅μ΄. JSONλ§ μΆλ ₯ (μ½λ νμ€/μ€λͺ
μμ΄).
|
|
231
524
|
|
|
232
525
|
{
|
|
233
526
|
"title": "string (νμ) β 컀리νλΌ μ λͺ©",
|
|
@@ -240,34 +533,50 @@ ${eduInstruction}${kbInstruction}
|
|
|
240
533
|
"description": "string (νμ) β λͺ¨λ μ€λͺ
",
|
|
241
534
|
"module_type": "concept | practical | quiz | project_walkthrough",
|
|
242
535
|
"estimated_minutes": number (15-45),
|
|
243
|
-
"tech_name": "string (νμ) β μ κΈ°μ μ€ν λͺ©λ‘μ μ΄λ¦κ³Ό μ νν μΌμΉ"
|
|
536
|
+
"tech_name": "string (νμ) β μ κΈ°μ μ€ν λͺ©λ‘μ μ΄λ¦κ³Ό μ νν μΌμΉ",
|
|
537
|
+
"content": {
|
|
538
|
+
"sections": [
|
|
539
|
+
{
|
|
540
|
+
"type": "explanation | code_example | quiz_question | challenge | reflection",
|
|
541
|
+
"title": "string (νμ) β μΉμ
μ λͺ©",
|
|
542
|
+
"body": "string (νμ) β λ§ν¬λ€μ΄ λ³Έλ¬Έ. explanationμ μ΅μ ${minBodyChars}μ",
|
|
543
|
+
|
|
544
|
+
"code": "string (code_exampleμΌ λ νμ) β νλ‘μ νΈ μ€μ μ½λ + λΌμΈλ³ μ£Όμ",
|
|
545
|
+
|
|
546
|
+
"quiz_options": ["string", "string", "string", "string"] (quiz_questionμΌ λ νμ, μ νν 4κ°),
|
|
547
|
+
"quiz_answer": number (quiz_questionμΌ λ νμ, 0-3),
|
|
548
|
+
"quiz_explanation": "string (quiz_questionμΌ λ νμ) β μ λ΅/μ€λ΅ μ΄μ ",
|
|
549
|
+
|
|
550
|
+
"challenge_starter_code": "string (challengeμΌ λ νμ) β ___BLANK___ ν¬ν¨",
|
|
551
|
+
"challenge_answer_code": "string (challengeμΌ λ νμ) β μμ± μ½λ"
|
|
552
|
+
}
|
|
553
|
+
]
|
|
554
|
+
}
|
|
244
555
|
}
|
|
245
556
|
]
|
|
246
557
|
}
|
|
247
558
|
|
|
248
|
-
|
|
249
|
-
- μ΅μ
|
|
250
|
-
-
|
|
251
|
-
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
- κ° λͺ¨λμ "content": { "sections": <μμ±λ μΉμ
λ°°μ΄> } μΆκ°
|
|
270
|
-
5. μ μΆ: vibeuniv_submit_curriculum({ project_id: "${project_id}", curriculum: <μμ± JSON> })`;
|
|
559
|
+
**νμ κ·μΉ:**
|
|
560
|
+
- λͺ¨λλΉ code_example μ΅μ ${minCodeExamples}κ° + quiz_question μ΅μ ${minQuizQuestions}κ°
|
|
561
|
+
- μ΅μ 10κ° λͺ¨λ, λͺ¨λλΉ μ΅μ ${minSections}κ° μΉμ
|
|
562
|
+
- explanation bodyλ ${minBodyChars}μ μ΄μ${difficulty === "beginner" ? `
|
|
563
|
+
|
|
564
|
+
**[μ΄κΈ μ μ© μΆκ° κ·μΉ β λ°λμ μ€μ]:**
|
|
565
|
+
- λͺ¨λ κ°λ
μ "μ΄κ² μμΌλ©΄?" before/after λΉκ΅ νμ
|
|
566
|
+
- code_example λͺ¨λ μ½λ λΌμΈμ "μ°λ¦¬λ§ λ²μ" νμ
|
|
567
|
+
- challenge λΉμΉΈ 1-2κ°λ§, ννΈ λ§€μ° κ΅¬μ²΄μ
|
|
568
|
+
- κΈ°μ μ©μ΄μ νκ΅μ΄ λ³λͺ
νμ` : ""}
|
|
569
|
+
|
|
570
|
+
## λͺ¨λλ³ κ°λ³ μ μΆ νλ‘μ° (μ€μ β μ΄ μμλ₯Ό μ νν λ°λ₯΄μΈμ)
|
|
571
|
+
|
|
572
|
+
1. μ 컀리νλΌ κ΅¬μ‘° JSONμ μμ±ν©λλ€ (title, description, difficulty, modules with content)
|
|
573
|
+
2. **vibeuniv_create_curriculum**({ project_id: "${project_id}", title, description, difficulty, total_modules: <λͺ¨λ μ> }) νΈμΆ β learning_path_id ν보
|
|
574
|
+
3. κ° λͺ¨λλ§λ€ (μμλλ‘):
|
|
575
|
+
a. ꡬ쑰 JSONμμ ν΄λΉ λͺ¨λμ μ½ν
μΈ λ₯Ό κ°μ Έμ΅λλ€
|
|
576
|
+
b. **vibeuniv_submit_module**({ project_id: "${project_id}", learning_path_id, module_order: <1λΆν°>, title, description, module_type, tech_name, content: { sections: [...] } }) νΈμΆ
|
|
577
|
+
4. λͺ¨λ λͺ¨λμ΄ μ μΆλλ©΄ 컀리νλΌμ΄ μλμΌλ‘ νμ±νλ©λλ€!
|
|
578
|
+
|
|
579
|
+
**μ£Όμ:** vibeuniv_submit_curriculumμΌλ‘ νλ²μ μ μΆνμ§ λ§μΈμ β vibeuniv_submit_moduleλ‘ λͺ¨λμ νλμ© μ μΆνμΈμ.`;
|
|
271
580
|
return {
|
|
272
581
|
content: [
|
|
273
582
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-curriculum.js","sourceRoot":"","sources":["../../src/tools/generate-curriculum.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"generate-curriculum.js","sourceRoot":"","sources":["../../src/tools/generate-curriculum.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submit-curriculum.d.ts","sourceRoot":"","sources":["../../src/tools/submit-curriculum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,eAAO,MAAM,sBAAsB;;;CAQlC,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"submit-curriculum.d.ts","sourceRoot":"","sources":["../../src/tools/submit-curriculum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,eAAO,MAAM,sBAAsB;;;CAQlC,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAqGxF"}
|
|
@@ -67,24 +67,22 @@ export function registerSubmitCurriculum(server, client) {
|
|
|
67
67
|
`--- Validation Guide ---`,
|
|
68
68
|
`Server minimum requirements:`,
|
|
69
69
|
`β’ 10+ modules (aim for 10-15)`,
|
|
70
|
-
`β’ Beginner:
|
|
71
|
-
`β’ Other:
|
|
72
|
-
`β’ Each module needs at least 1 code_example + 1 quiz_question + 1 challenge`,
|
|
70
|
+
`β’ Beginner: 7+ sections/module, 800+ chars/explanation, 2+ code_examples, 2+ quiz_questions`,
|
|
71
|
+
`β’ Other: 5+ sections/module, 400+ chars/explanation, 1+ code_example, 1+ quiz_question`,
|
|
73
72
|
`β’ quiz_question needs exactly 4 options + quiz_explanation`,
|
|
74
73
|
``,
|
|
75
|
-
`
|
|
74
|
+
`TIP: Consider using vibeuniv_create_curriculum + vibeuniv_submit_module for per-module submission instead.`,
|
|
76
75
|
]
|
|
77
76
|
: [
|
|
78
77
|
``,
|
|
79
78
|
`--- κ²μ¦ κ°μ΄λ ---`,
|
|
80
79
|
`μλ² μ΅μ μꡬμ¬ν:`,
|
|
81
80
|
`β’ 10κ° μ΄μ λͺ¨λ (10-15κ° κΆμ₯)`,
|
|
82
|
-
`β’ μ΄κΈ: λͺ¨λλΉ
|
|
83
|
-
`β’ κ·Έ μΈ: λͺ¨λλΉ
|
|
84
|
-
`β’ λͺ¨λλΉ code_example 1κ°β + quiz_question 1κ°β + challenge 1κ°β νμ`,
|
|
81
|
+
`β’ μ΄κΈ: λͺ¨λλΉ 7κ°β μΉμ
, explanation 800μβ, code_example 2κ°β, quiz_question 2κ°β`,
|
|
82
|
+
`β’ κ·Έ μΈ: λͺ¨λλΉ 5κ°β μΉμ
, explanation 400μβ, code_example 1κ°β, quiz_question 1κ°β`,
|
|
85
83
|
`β’ quiz_questionμ μ νν 4κ° μ νμ§ + quiz_explanation νμ`,
|
|
86
84
|
``,
|
|
87
|
-
|
|
85
|
+
`TIP: vibeuniv_create_curriculum + vibeuniv_submit_moduleλ‘ λͺ¨λλ³ κ°λ³ μ μΆμ μ¬μ©ν΄λ³΄μΈμ.`,
|
|
88
86
|
];
|
|
89
87
|
return {
|
|
90
88
|
content: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submit-curriculum.js","sourceRoot":"","sources":["../../src/tools/submit-curriculum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC1D,UAAU,EAAE,CAAC;SACV,MAAM,CAAC,EAAE,CAAC;SACV,WAAW,EAAE;SACb,QAAQ,CACP,qHAAqH,CACtH;CACJ,CAAC;AAEF,MAAM,UAAU,wBAAwB,CAAC,MAAiB,EAAE,MAAsB;IAChF,MAAM,CAAC,IAAI,CACT,4BAA4B,EAC5B,yIAAyI,EACzI,sBAAsB,EACtB,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,EAC5C,KAAK,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE;QACnC,IAAI,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,gDAAgD,UAAU,KAAK,CAAC,CAAC;YAC/E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAC1C,UAAU,EACV,UAAqC,CACtC,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;YAE5C,MAAM,OAAO,GAAG,MAAM,KAAK,IAAI;gBAC7B,CAAC,CAAC;oBACE,kCAAkC;oBAClC,EAAE;oBACF,uBAAuB,MAAM,CAAC,cAAc,EAAE;oBAC9C,YAAY,MAAM,CAAC,KAAK,EAAE;oBAC1B,oBAAoB,MAAM,CAAC,YAAY,EAAE;oBACzC,EAAE;oBACF,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;oBACnB,oBAAoB;oBACpB,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;oBACnB,EAAE;oBACF,iDAAiD;oBACjD,8CAA8C;oBAC9C,EAAE;oBACF,yBAAyB;oBACzB,EAAE;oBACF,6DAA6D;iBAC9D;gBACH,CAAC,CAAC;oBACE,sBAAsB;oBACtB,EAAE;oBACF,uBAAuB,MAAM,CAAC,cAAc,EAAE;oBAC9C,SAAS,MAAM,CAAC,KAAK,EAAE;oBACvB,aAAa,MAAM,CAAC,YAAY,EAAE;oBAClC,EAAE;oBACF,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;oBACnB,cAAc;oBACd,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;oBACnB,EAAE;oBACF,sBAAsB;oBACtB,4BAA4B;oBAC5B,EAAE;oBACF,yBAAyB;oBACzB,EAAE;oBACF,+BAA+B;iBAChC,CAAC;YAEN,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;qBACzB;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAE9D,MAAM,IAAI,GAAG,MAAM,KAAK,IAAI;gBAC1B,CAAC,CAAC;oBACE,EAAE;oBACF,0BAA0B;oBAC1B,8BAA8B;oBAC9B,+BAA+B;oBAC/B,
|
|
1
|
+
{"version":3,"file":"submit-curriculum.js","sourceRoot":"","sources":["../../src/tools/submit-curriculum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC1D,UAAU,EAAE,CAAC;SACV,MAAM,CAAC,EAAE,CAAC;SACV,WAAW,EAAE;SACb,QAAQ,CACP,qHAAqH,CACtH;CACJ,CAAC;AAEF,MAAM,UAAU,wBAAwB,CAAC,MAAiB,EAAE,MAAsB;IAChF,MAAM,CAAC,IAAI,CACT,4BAA4B,EAC5B,yIAAyI,EACzI,sBAAsB,EACtB,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,EAC5C,KAAK,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE;QACnC,IAAI,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,gDAAgD,UAAU,KAAK,CAAC,CAAC;YAC/E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAC1C,UAAU,EACV,UAAqC,CACtC,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC;YAE5C,MAAM,OAAO,GAAG,MAAM,KAAK,IAAI;gBAC7B,CAAC,CAAC;oBACE,kCAAkC;oBAClC,EAAE;oBACF,uBAAuB,MAAM,CAAC,cAAc,EAAE;oBAC9C,YAAY,MAAM,CAAC,KAAK,EAAE;oBAC1B,oBAAoB,MAAM,CAAC,YAAY,EAAE;oBACzC,EAAE;oBACF,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;oBACnB,oBAAoB;oBACpB,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;oBACnB,EAAE;oBACF,iDAAiD;oBACjD,8CAA8C;oBAC9C,EAAE;oBACF,yBAAyB;oBACzB,EAAE;oBACF,6DAA6D;iBAC9D;gBACH,CAAC,CAAC;oBACE,sBAAsB;oBACtB,EAAE;oBACF,uBAAuB,MAAM,CAAC,cAAc,EAAE;oBAC9C,SAAS,MAAM,CAAC,KAAK,EAAE;oBACvB,aAAa,MAAM,CAAC,YAAY,EAAE;oBAClC,EAAE;oBACF,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;oBACnB,cAAc;oBACd,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;oBACnB,EAAE;oBACF,sBAAsB;oBACtB,4BAA4B;oBAC5B,EAAE;oBACF,yBAAyB;oBACzB,EAAE;oBACF,+BAA+B;iBAChC,CAAC;YAEN,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;qBACzB;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAE9D,MAAM,IAAI,GAAG,MAAM,KAAK,IAAI;gBAC1B,CAAC,CAAC;oBACE,EAAE;oBACF,0BAA0B;oBAC1B,8BAA8B;oBAC9B,+BAA+B;oBAC/B,6FAA6F;oBAC7F,wFAAwF;oBACxF,4DAA4D;oBAC5D,EAAE;oBACF,4GAA4G;iBAC7G;gBACH,CAAC,CAAC;oBACE,EAAE;oBACF,gBAAgB;oBAChB,aAAa;oBACb,yBAAyB;oBACzB,0EAA0E;oBAC1E,2EAA2E;oBAC3E,mDAAmD;oBACnD,EAAE;oBACF,8EAA8E;iBAC/E,CAAC;YAEN,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,gCAAgC,OAAO,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;qBACpE;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
|
+
import { VibeUnivClient } from "../lib/api-client.js";
|
|
4
|
+
export declare const submitModuleSchema: {
|
|
5
|
+
project_id: z.ZodString;
|
|
6
|
+
learning_path_id: z.ZodString;
|
|
7
|
+
module_order: z.ZodNumber;
|
|
8
|
+
title: z.ZodString;
|
|
9
|
+
description: z.ZodString;
|
|
10
|
+
module_type: z.ZodEnum<["concept", "practical", "quiz", "project_walkthrough"]>;
|
|
11
|
+
tech_name: z.ZodString;
|
|
12
|
+
estimated_minutes: z.ZodOptional<z.ZodNumber>;
|
|
13
|
+
content: z.ZodObject<{}, "passthrough", z.ZodTypeAny, z.objectOutputType<{}, z.ZodTypeAny, "passthrough">, z.objectInputType<{}, z.ZodTypeAny, "passthrough">>;
|
|
14
|
+
};
|
|
15
|
+
export declare function registerSubmitModule(server: McpServer, client: VibeUnivClient): void;
|
|
16
|
+
//# sourceMappingURL=submit-module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submit-module.d.ts","sourceRoot":"","sources":["../../src/tools/submit-module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,eAAO,MAAM,kBAAkB;;;;;;;;;;CAsB9B,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CA4IpF"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const submitModuleSchema = {
|
|
3
|
+
project_id: z.string().describe("The VibeUniv project ID"),
|
|
4
|
+
learning_path_id: z.string().describe("The learning path ID from vibeuniv_create_curriculum"),
|
|
5
|
+
module_order: z
|
|
6
|
+
.number()
|
|
7
|
+
.int()
|
|
8
|
+
.min(1)
|
|
9
|
+
.describe("Module order (1-based)"),
|
|
10
|
+
title: z.string().describe("Module title"),
|
|
11
|
+
description: z.string().describe("Module description"),
|
|
12
|
+
module_type: z
|
|
13
|
+
.enum(["concept", "practical", "quiz", "project_walkthrough"])
|
|
14
|
+
.describe("Module type"),
|
|
15
|
+
tech_name: z.string().describe("Technology name (must match tech stack)"),
|
|
16
|
+
estimated_minutes: z
|
|
17
|
+
.number()
|
|
18
|
+
.optional()
|
|
19
|
+
.describe("Estimated minutes to complete"),
|
|
20
|
+
content: z
|
|
21
|
+
.object({})
|
|
22
|
+
.passthrough()
|
|
23
|
+
.describe("Module content with sections array"),
|
|
24
|
+
};
|
|
25
|
+
export function registerSubmitModule(server, client) {
|
|
26
|
+
server.tool("vibeuniv_submit_module", "Submit a single module to an existing draft curriculum. Call this immediately after generating each module's content. The curriculum auto-activates when all modules are submitted.", submitModuleSchema, { readOnlyHint: false, openWorldHint: true }, async ({ project_id, learning_path_id, module_order, title, description, module_type, tech_name, estimated_minutes, content }) => {
|
|
27
|
+
try {
|
|
28
|
+
console.error(`[vibeuniv] Submitting module ${module_order} for path ${learning_path_id}...`);
|
|
29
|
+
const result = await client.submitModule(project_id, learning_path_id, {
|
|
30
|
+
module_order,
|
|
31
|
+
title,
|
|
32
|
+
description,
|
|
33
|
+
module_type,
|
|
34
|
+
tech_name,
|
|
35
|
+
estimated_minutes,
|
|
36
|
+
content: content,
|
|
37
|
+
});
|
|
38
|
+
const locale = await client.getUserLocale();
|
|
39
|
+
const en = locale === "en";
|
|
40
|
+
const progressBar = `[${result.submitted}/${result.total}]`;
|
|
41
|
+
if (result.status === "active") {
|
|
42
|
+
// All modules submitted β curriculum complete!
|
|
43
|
+
const message = en
|
|
44
|
+
? [
|
|
45
|
+
`${progressBar} All modules submitted! Curriculum is now ACTIVE! π`,
|
|
46
|
+
``,
|
|
47
|
+
`- Module "${title}" saved (ID: ${result.moduleId})`,
|
|
48
|
+
`- Curriculum status: active`,
|
|
49
|
+
``,
|
|
50
|
+
`${"=".repeat(50)}`,
|
|
51
|
+
`π Ready to learn!`,
|
|
52
|
+
`${"=".repeat(50)}`,
|
|
53
|
+
``,
|
|
54
|
+
`Your personalized learning curriculum is ready.`,
|
|
55
|
+
`Start learning right away at the link below:`,
|
|
56
|
+
``,
|
|
57
|
+
`π https://vibeuniv.com`,
|
|
58
|
+
``,
|
|
59
|
+
`Start your project-based learning journey with an AI tutor!`,
|
|
60
|
+
]
|
|
61
|
+
: [
|
|
62
|
+
`${progressBar} λͺ¨λ λͺ¨λμ΄ μ μΆλμμ΅λλ€! 컀리νλΌμ΄ νμ±νλμμ΅λλ€! π`,
|
|
63
|
+
``,
|
|
64
|
+
`- λͺ¨λ "${title}" μ μ₯ μλ£ (ID: ${result.moduleId})`,
|
|
65
|
+
`- 컀리νλΌ μν: active`,
|
|
66
|
+
``,
|
|
67
|
+
`${"=".repeat(50)}`,
|
|
68
|
+
`π νμ΅ μ€λΉ μλ£!`,
|
|
69
|
+
`${"=".repeat(50)}`,
|
|
70
|
+
``,
|
|
71
|
+
`λ§μΆ€ νμ΅ μ»€λ¦¬νλΌμ΄ μ€λΉλμμ΅λλ€.`,
|
|
72
|
+
`μλ λ§ν¬μμ λ°λ‘ νμ΅μ μμν μ μμ΅λλ€:`,
|
|
73
|
+
``,
|
|
74
|
+
`π https://vibeuniv.com`,
|
|
75
|
+
``,
|
|
76
|
+
`AI νν°μ ν¨κ» νλ‘μ νΈ κΈ°λ° νμ΅μ μμν΄λ³΄μΈμ!`,
|
|
77
|
+
];
|
|
78
|
+
return {
|
|
79
|
+
content: [
|
|
80
|
+
{
|
|
81
|
+
type: "text",
|
|
82
|
+
text: message.join("\n"),
|
|
83
|
+
},
|
|
84
|
+
],
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
// Module submitted, more to go
|
|
88
|
+
const message = en
|
|
89
|
+
? [
|
|
90
|
+
`${progressBar} Module ${module_order} submitted successfully!`,
|
|
91
|
+
``,
|
|
92
|
+
`- Module "${title}" saved (ID: ${result.moduleId})`,
|
|
93
|
+
`- Progress: ${result.submitted} of ${result.total} modules submitted`,
|
|
94
|
+
``,
|
|
95
|
+
`Continue with the next module.`,
|
|
96
|
+
]
|
|
97
|
+
: [
|
|
98
|
+
`${progressBar} λͺ¨λ ${module_order} μ μΆ μλ£!`,
|
|
99
|
+
``,
|
|
100
|
+
`- λͺ¨λ "${title}" μ μ₯ μλ£ (ID: ${result.moduleId})`,
|
|
101
|
+
`- μ§νλ₯ : ${result.submitted}/${result.total} λͺ¨λ μ μΆλ¨`,
|
|
102
|
+
``,
|
|
103
|
+
`λ€μ λͺ¨λμ κ³μ μ§ννμΈμ.`,
|
|
104
|
+
];
|
|
105
|
+
return {
|
|
106
|
+
content: [
|
|
107
|
+
{
|
|
108
|
+
type: "text",
|
|
109
|
+
text: message.join("\n"),
|
|
110
|
+
},
|
|
111
|
+
],
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
116
|
+
const locale = await client.getUserLocale().catch(() => "ko");
|
|
117
|
+
const hint = locale === "en"
|
|
118
|
+
? [
|
|
119
|
+
``,
|
|
120
|
+
`--- Validation Guide ---`,
|
|
121
|
+
`Server minimum requirements per module:`,
|
|
122
|
+
`β’ Beginner: 7+ sections, 800+ chars/explanation, 2+ code_examples, 2+ quiz_questions`,
|
|
123
|
+
`β’ Other: 5+ sections, 400+ chars/explanation, 1+ code_example, 1+ quiz_question`,
|
|
124
|
+
`β’ quiz_question needs exactly 4 options + quiz_explanation`,
|
|
125
|
+
`β’ challenge needs challenge_starter_code + challenge_answer_code`,
|
|
126
|
+
``,
|
|
127
|
+
`Fix the failing sections and resubmit this module β no need to regenerate everything.`,
|
|
128
|
+
]
|
|
129
|
+
: [
|
|
130
|
+
``,
|
|
131
|
+
`--- κ²μ¦ κ°μ΄λ ---`,
|
|
132
|
+
`λͺ¨λλ³ μλ² μ΅μ μꡬμ¬ν:`,
|
|
133
|
+
`β’ μ΄κΈ: 7κ°β μΉμ
, explanation 800μβ, code_example 2κ°β, quiz_question 2κ°β`,
|
|
134
|
+
`β’ κ·Έ μΈ: 5κ°β μΉμ
, explanation 400μβ, code_example 1κ°β, quiz_question 1κ°β`,
|
|
135
|
+
`β’ quiz_questionμ μ νν 4κ° μ νμ§ + quiz_explanation νμ`,
|
|
136
|
+
`β’ challengeλ challenge_starter_code + challenge_answer_code νμ`,
|
|
137
|
+
``,
|
|
138
|
+
`μ€ν¨ν μΉμ
λ§ μμ ν΄μ μ΄ λͺ¨λμ λ€μ μ μΆνμΈμ β μ 체 μ¬μμ± λΆνμ.`,
|
|
139
|
+
];
|
|
140
|
+
return {
|
|
141
|
+
content: [
|
|
142
|
+
{
|
|
143
|
+
type: "text",
|
|
144
|
+
text: `Failed to submit module: ${message}\n${hint.join("\n")}`,
|
|
145
|
+
},
|
|
146
|
+
],
|
|
147
|
+
isError: true,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=submit-module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submit-module.js","sourceRoot":"","sources":["../../src/tools/submit-module.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -72,6 +72,17 @@ export interface CurriculumSubmitResult {
|
|
|
72
72
|
title: string;
|
|
73
73
|
totalModules: number;
|
|
74
74
|
}
|
|
75
|
+
export interface CurriculumStartResult {
|
|
76
|
+
learningPathId: string;
|
|
77
|
+
status: string;
|
|
78
|
+
}
|
|
79
|
+
export interface ModuleSubmitResult {
|
|
80
|
+
moduleId: string;
|
|
81
|
+
moduleOrder: number;
|
|
82
|
+
submitted: number;
|
|
83
|
+
total: number;
|
|
84
|
+
status: string;
|
|
85
|
+
}
|
|
75
86
|
export interface ConceptHintItem {
|
|
76
87
|
concept_key: string;
|
|
77
88
|
concept_name: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|