@vibeuniv/mcp-server 0.2.1 → 0.3.1
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 +5 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/api-client.d.ts +5 -1
- package/dist/lib/api-client.d.ts.map +1 -1
- package/dist/lib/api-client.js +14 -1
- package/dist/lib/api-client.js.map +1 -1
- package/dist/tools/analyze.d.ts +1 -0
- package/dist/tools/analyze.d.ts.map +1 -1
- package/dist/tools/analyze.js +64 -25
- package/dist/tools/analyze.js.map +1 -1
- package/dist/tools/ask-tutor.d.ts.map +1 -1
- package/dist/tools/ask-tutor.js +47 -5
- package/dist/tools/ask-tutor.js.map +1 -1
- package/dist/tools/generate-curriculum.d.ts.map +1 -1
- package/dist/tools/generate-curriculum.js +37 -144
- package/dist/tools/generate-curriculum.js.map +1 -1
- package/dist/tools/submit-analysis.d.ts.map +1 -1
- package/dist/tools/submit-analysis.js +7 -1
- package/dist/tools/submit-analysis.js.map +1 -1
- package/dist/tools/submit-curriculum.d.ts.map +1 -1
- package/dist/tools/submit-curriculum.js +18 -1
- package/dist/tools/submit-curriculum.js.map +1 -1
- package/dist/tools/submit-tech-stacks.d.ts +9 -0
- package/dist/tools/submit-tech-stacks.d.ts.map +1 -0
- package/dist/tools/submit-tech-stacks.js +50 -0
- package/dist/tools/submit-tech-stacks.js.map +1 -0
- package/dist/tools/sync-project.d.ts.map +1 -1
- package/dist/tools/sync-project.js +6 -28
- package/dist/tools/sync-project.js.map +1 -1
- package/dist/types.d.ts +56 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -10,10 +10,11 @@ import { registerGetLearning } from "./tools/get-learning.js";
|
|
|
10
10
|
import { registerLogSession } from "./tools/log-session.js";
|
|
11
11
|
import { registerAskTutor } from "./tools/ask-tutor.js";
|
|
12
12
|
import { registerSubmitAnalysis } from "./tools/submit-analysis.js";
|
|
13
|
+
import { registerSubmitTechStacks } from "./tools/submit-tech-stacks.js";
|
|
13
14
|
import { registerGenerateCurriculum } from "./tools/generate-curriculum.js";
|
|
14
15
|
import { registerSubmitCurriculum } from "./tools/submit-curriculum.js";
|
|
15
16
|
async function main() {
|
|
16
|
-
console.error("[vibeuniv] Starting VibeUniv MCP Server v0.
|
|
17
|
+
console.error("[vibeuniv] Starting VibeUniv MCP Server v0.3.0...");
|
|
17
18
|
const config = loadConfig();
|
|
18
19
|
const client = new VibeUnivClient(config.apiKey, config.apiUrl);
|
|
19
20
|
if (config.apiKey) {
|
|
@@ -21,7 +22,7 @@ async function main() {
|
|
|
21
22
|
}
|
|
22
23
|
const server = new McpServer({
|
|
23
24
|
name: "vibeuniv-mcp-server",
|
|
24
|
-
version: "0.
|
|
25
|
+
version: "0.3.0",
|
|
25
26
|
});
|
|
26
27
|
registerSyncProject(server, client);
|
|
27
28
|
registerUploadFiles(server, client);
|
|
@@ -30,9 +31,10 @@ async function main() {
|
|
|
30
31
|
registerLogSession(server, client);
|
|
31
32
|
registerAskTutor(server, client);
|
|
32
33
|
registerSubmitAnalysis(server, client);
|
|
34
|
+
registerSubmitTechStacks(server, client);
|
|
33
35
|
registerGenerateCurriculum(server, client);
|
|
34
36
|
registerSubmitCurriculum(server, client);
|
|
35
|
-
console.error("[vibeuniv]
|
|
37
|
+
console.error("[vibeuniv] 10 tools registered");
|
|
36
38
|
const transport = new StdioServerTransport();
|
|
37
39
|
await server.connect(transport);
|
|
38
40
|
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,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAExE,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,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEzC,OAAO,CAAC,KAAK,CAAC
|
|
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;AAExE,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;IAEzC,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,4 +1,4 @@
|
|
|
1
|
-
import type { AnalysisResult, CreateProjectInput, CurriculumSubmitResult, EducationalAnalysisData, KnowledgeHintsResult, LearningPath, Project, ProjectFile, SessionLog, TechStackItem, TutorResponse } from "../types.js";
|
|
1
|
+
import type { AnalysisResult, CreateProjectInput, CurriculumContext, CurriculumSubmitResult, EducationalAnalysisData, KnowledgeHintsResult, LearningPath, 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;
|
|
@@ -16,5 +16,9 @@ export declare class VibeUnivClient {
|
|
|
16
16
|
getKnowledgeHints(techNames: string[]): Promise<KnowledgeHintsResult>;
|
|
17
17
|
getEducationalAnalysis(projectId: string): Promise<EducationalAnalysisData | null>;
|
|
18
18
|
submitCurriculum(projectId: string, curriculum: Record<string, unknown>): Promise<CurriculumSubmitResult>;
|
|
19
|
+
getProjectDetail(projectId: string): Promise<ProjectDetail>;
|
|
20
|
+
submitTechStacks(projectId: string, submission: TechStackSubmission): Promise<TechStackSubmitResult>;
|
|
21
|
+
getTutorContext(projectId: string): Promise<TutorContext>;
|
|
22
|
+
getCurriculumContext(projectId: string): Promise<CurriculumContext>;
|
|
19
23
|
}
|
|
20
24
|
//# 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,sBAAsB,EACtB,uBAAuB,EACvB,oBAAoB,EACpB,YAAY,EACZ,OAAO,EACP,WAAW,EACX,UAAU,EACV,aAAa,EACb,aAAa,EACd,MAAM,aAAa,CAAC;AA2DrB,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;YAK7B,OAAO;IA2Cf,aAAa,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAIzD,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAYnE,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;YAoBnD,YAAY;IAyCpB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA2BzD,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAYhE,QAAQ,CACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,aAAa,CAAC;IAenB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAuC1D,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAoBrE,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC;IAYlF,gBAAgB,CACpB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,OAAO,CAAC,sBAAsB,CAAC;
|
|
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,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;gBAEZ,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;YAK7B,OAAO;IA2Cf,aAAa,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAIzD,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAYnE,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;YAoBnD,YAAY;IAyCpB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA2BzD,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAYhE,QAAQ,CACZ,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,aAAa,CAAC;IAenB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQlG,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAuC1D,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAoBrE,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC;IAYlF,gBAAgB,CACpB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,OAAO,CAAC,sBAAsB,CAAC;IAsB5B,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAO3D,gBAAgB,CACpB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,mBAAmB,GAC9B,OAAO,CAAC,qBAAqB,CAAC;IAQ3B,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAOzD,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAM1E"}
|
package/dist/lib/api-client.js
CHANGED
|
@@ -18,7 +18,7 @@ export class VibeUnivClient {
|
|
|
18
18
|
const headers = {
|
|
19
19
|
Authorization: `Bearer ${this.apiKey}`,
|
|
20
20
|
"Content-Type": "application/json",
|
|
21
|
-
"User-Agent": "vibeuniv-mcp-server/0.
|
|
21
|
+
"User-Agent": "vibeuniv-mcp-server/0.3.0",
|
|
22
22
|
};
|
|
23
23
|
const response = await fetch(url, {
|
|
24
24
|
method,
|
|
@@ -173,5 +173,18 @@ export class VibeUnivClient {
|
|
|
173
173
|
totalModules: raw.total_modules,
|
|
174
174
|
};
|
|
175
175
|
}
|
|
176
|
+
// ─── Local-First Methods (Phase A) ──────────────────────────────
|
|
177
|
+
async getProjectDetail(projectId) {
|
|
178
|
+
return this.request("GET", `/projects/${projectId}/detail`);
|
|
179
|
+
}
|
|
180
|
+
async submitTechStacks(projectId, submission) {
|
|
181
|
+
return this.request("POST", `/projects/${projectId}/tech-stacks`, submission);
|
|
182
|
+
}
|
|
183
|
+
async getTutorContext(projectId) {
|
|
184
|
+
return this.request("GET", `/projects/${projectId}/tutor-context`);
|
|
185
|
+
}
|
|
186
|
+
async getCurriculumContext(projectId) {
|
|
187
|
+
return this.request("GET", `/projects/${projectId}/curriculum-context`);
|
|
188
|
+
}
|
|
176
189
|
}
|
|
177
190
|
//# 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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"}
|
package/dist/tools/analyze.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
|
3
3
|
import { VibeUnivClient } from "../lib/api-client.js";
|
|
4
4
|
export declare const analyzeSchema: {
|
|
5
5
|
project_id: z.ZodString;
|
|
6
|
+
force: z.ZodDefault<z.ZodBoolean>;
|
|
6
7
|
};
|
|
7
8
|
export declare function registerAnalyze(server: McpServer, client: VibeUnivClient): void;
|
|
8
9
|
//# sourceMappingURL=analyze.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/tools/analyze.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,aAAa
|
|
1
|
+
{"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/tools/analyze.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,aAAa;;;CAMzB,CAAC;AAEF,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAwG/E"}
|
package/dist/tools/analyze.js
CHANGED
|
@@ -1,46 +1,85 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
export const analyzeSchema = {
|
|
3
3
|
project_id: z.string().describe("The VibeUniv project ID to analyze"),
|
|
4
|
+
force: z
|
|
5
|
+
.boolean()
|
|
6
|
+
.default(false)
|
|
7
|
+
.describe("Force re-analysis even if existing tech stacks exist"),
|
|
4
8
|
};
|
|
5
9
|
export function registerAnalyze(server, client) {
|
|
6
|
-
server.tool("vibeuniv_analyze", "Trigger AI analysis of the project's tech stack and get results", analyzeSchema, { readOnlyHint: true, openWorldHint: true }, async ({ project_id }) => {
|
|
10
|
+
server.tool("vibeuniv_analyze", "Trigger AI analysis of the project's tech stack and get results", analyzeSchema, { readOnlyHint: true, openWorldHint: true }, async ({ project_id, force }) => {
|
|
7
11
|
try {
|
|
8
|
-
console.error(`[vibeuniv]
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
{
|
|
14
|
-
type: "text",
|
|
15
|
-
text: "Analysis failed. Please try again or check that files have been uploaded.",
|
|
16
|
-
},
|
|
17
|
-
],
|
|
18
|
-
isError: true,
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
let output = `Analysis completed for project ${project_id}\n`;
|
|
22
|
-
output += `Analysis ID: ${result.id}\n\n`;
|
|
23
|
-
if (result.summary) {
|
|
24
|
-
output += `Summary:\n${result.summary}\n\n`;
|
|
25
|
-
}
|
|
26
|
-
if (result.techStack && result.techStack.length > 0) {
|
|
27
|
-
output += "Detected Tech Stack:\n";
|
|
12
|
+
console.error(`[vibeuniv] Fetching project detail for ${project_id}...`);
|
|
13
|
+
const detail = await client.getProjectDetail(project_id);
|
|
14
|
+
// If existing analysis exists and force is not set, return existing results
|
|
15
|
+
if (detail.existingTechStacks.length > 0 && !force) {
|
|
16
|
+
let output = `Project "${detail.name}" already has ${detail.existingTechStacks.length} detected technologies:\n\n`;
|
|
28
17
|
const grouped = new Map();
|
|
29
|
-
for (const item of
|
|
18
|
+
for (const item of detail.existingTechStacks) {
|
|
30
19
|
const existing = grouped.get(item.category) || [];
|
|
31
20
|
existing.push(item);
|
|
32
21
|
grouped.set(item.category, existing);
|
|
33
22
|
}
|
|
34
23
|
for (const [category, items] of grouped) {
|
|
35
|
-
output +=
|
|
24
|
+
output += ` [${category}]\n`;
|
|
36
25
|
for (const item of items) {
|
|
37
26
|
const version = item.version ? ` v${item.version}` : "";
|
|
38
27
|
const confidence = Math.round(item.confidence * 100);
|
|
39
28
|
output += ` - ${item.name}${version} (${confidence}% confidence)\n`;
|
|
40
29
|
}
|
|
30
|
+
output += "\n";
|
|
31
|
+
}
|
|
32
|
+
output += "To re-analyze, call vibeuniv_analyze with force: true.\n\n";
|
|
33
|
+
output += "📚 다음 단계: 학습 커리큘럼 생성\n";
|
|
34
|
+
output += "사용자에게 원하는 난이도를 물어보세요:\n";
|
|
35
|
+
output += " - beginner (초급) / intermediate (중급) / advanced (고급)\n";
|
|
36
|
+
output += "난이도를 확인한 후 vibeuniv_generate_curriculum을 호출하세요.";
|
|
37
|
+
return {
|
|
38
|
+
content: [{ type: "text", text: output }],
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
// No files uploaded
|
|
42
|
+
if (detail.files.length === 0) {
|
|
43
|
+
return {
|
|
44
|
+
content: [
|
|
45
|
+
{
|
|
46
|
+
type: "text",
|
|
47
|
+
text: `Project "${detail.name}" has no files uploaded. Upload files first using vibeuniv_upload_files.`,
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
isError: true,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
// Build analysis instructions for local AI
|
|
54
|
+
let output = `## Tech Stack Analysis Request\n\n`;
|
|
55
|
+
output += `Analyze the following project files and identify all technologies used.\n\n`;
|
|
56
|
+
// Include existing tech stacks as reference (for re-analysis)
|
|
57
|
+
if (detail.existingTechStacks.length > 0) {
|
|
58
|
+
output += `### Previous Analysis (for reference)\n\n`;
|
|
59
|
+
output += `The project was previously analyzed and the following technologies were detected. Use this as a starting point but verify and update based on the actual file contents:\n\n`;
|
|
60
|
+
for (const tech of detail.existingTechStacks) {
|
|
61
|
+
output += `- ${tech.name} (${tech.category}, confidence: ${Math.round(tech.confidence * 100)}%)\n`;
|
|
62
|
+
}
|
|
63
|
+
output += `\n`;
|
|
64
|
+
}
|
|
65
|
+
// File contents
|
|
66
|
+
output += `### Project Files\n\n`;
|
|
67
|
+
for (const file of detail.files) {
|
|
68
|
+
output += `#### ${file.file_path}\n\`\`\`\n${file.content}\n\`\`\`\n\n`;
|
|
69
|
+
}
|
|
70
|
+
// If there are more files than returned
|
|
71
|
+
if (detail.allFileList && detail.allFileList.length > detail.files.length) {
|
|
72
|
+
output += `### Additional Files (content not included, ${detail.allFileList.length - detail.files.length} more)\n\n`;
|
|
73
|
+
for (const f of detail.allFileList.slice(detail.files.length)) {
|
|
74
|
+
output += `- ${f.file_path}\n`;
|
|
41
75
|
}
|
|
42
|
-
output +=
|
|
76
|
+
output += `\n`;
|
|
43
77
|
}
|
|
78
|
+
// Analysis instructions
|
|
79
|
+
output += `### Instructions\n\n`;
|
|
80
|
+
output += `For each technology: { name, category(framework|language|database|auth|deploy|styling|testing|build_tool|library|other), version?, confidence(0-1), importance(core|supporting|dev_dependency), description }\n`;
|
|
81
|
+
output += `Also: architecture_summary (2-3 sentences).\n\n`;
|
|
82
|
+
output += `Submit: vibeuniv_submit_tech_stacks({ project_id: "${project_id}", analysis: { technologies: [...], architecture_summary } })\n`;
|
|
44
83
|
return {
|
|
45
84
|
content: [{ type: "text", text: output }],
|
|
46
85
|
};
|
|
@@ -48,7 +87,7 @@ export function registerAnalyze(server, client) {
|
|
|
48
87
|
catch (error) {
|
|
49
88
|
const message = error instanceof Error ? error.message : String(error);
|
|
50
89
|
return {
|
|
51
|
-
content: [{ type: "text", text: `Failed to
|
|
90
|
+
content: [{ type: "text", text: `Failed to fetch project detail: ${message}` }],
|
|
52
91
|
isError: true,
|
|
53
92
|
};
|
|
54
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/tools/analyze.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/tools/analyze.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-tutor.d.ts","sourceRoot":"","sources":["../../src/tools/ask-tutor.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,cAAc;;;CAG1B,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"ask-tutor.d.ts","sourceRoot":"","sources":["../../src/tools/ask-tutor.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,cAAc;;;CAG1B,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CA2EhF"}
|
package/dist/tools/ask-tutor.js
CHANGED
|
@@ -6,10 +6,52 @@ export const askTutorSchema = {
|
|
|
6
6
|
export function registerAskTutor(server, client) {
|
|
7
7
|
server.tool("vibeuniv_ask_tutor", "Ask the AI tutor a question about your project's tech stack with full project context", askTutorSchema, { readOnlyHint: true, openWorldHint: true }, async ({ project_id, question }) => {
|
|
8
8
|
try {
|
|
9
|
-
console.error(`[vibeuniv]
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
output
|
|
9
|
+
console.error(`[vibeuniv] Fetching tutor context for project ${project_id}...`);
|
|
10
|
+
const context = await client.getTutorContext(project_id);
|
|
11
|
+
// Build tutor instructions for local AI
|
|
12
|
+
let output = `## AI Tutor — Answer the student's question below\n\n`;
|
|
13
|
+
output += `You are a friendly tutor for a "vibe coder" — someone who built a working app with AI tools but wants to understand WHY it works.\n\n`;
|
|
14
|
+
output += `**Style:** Reference the student's actual code with file paths. Explain simply with analogies. ~500 words max. Be encouraging.\n`;
|
|
15
|
+
output += `**Rules:** Never make up code not in the project. No filler ("Great question!"). Admit unknowns honestly.\n\n`;
|
|
16
|
+
// Tech stacks section
|
|
17
|
+
if (context.techStacks.length > 0) {
|
|
18
|
+
output += `### Student's Project Technologies\n\n`;
|
|
19
|
+
for (const t of context.techStacks) {
|
|
20
|
+
const desc = t.description ? ` — ${t.description}` : "";
|
|
21
|
+
output += `- ${t.technology_name} (${t.category})${desc}\n`;
|
|
22
|
+
}
|
|
23
|
+
output += `\n`;
|
|
24
|
+
}
|
|
25
|
+
// Project files section
|
|
26
|
+
if (context.files.length > 0) {
|
|
27
|
+
output += `### Student's Project Files\n\n`;
|
|
28
|
+
for (const f of context.files) {
|
|
29
|
+
output += `#### ${f.file_name}\n\`\`\`\n${f.content}\n\`\`\`\n\n`;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// Learning context section
|
|
33
|
+
if (context.learningContext) {
|
|
34
|
+
const lc = context.learningContext;
|
|
35
|
+
output += `### Current Learning Context\n\n`;
|
|
36
|
+
output += `The student is currently working through:\n`;
|
|
37
|
+
output += `- **Learning Path:** ${lc.path_title}\n`;
|
|
38
|
+
output += `- **Current Module:** ${lc.current_module}\n\n`;
|
|
39
|
+
output += `Relate your answers to their current module topic when relevant.\n\n`;
|
|
40
|
+
// Module list with vibeuniv.com links
|
|
41
|
+
if (lc.modules && lc.modules.length > 0) {
|
|
42
|
+
output += `### Available Learning Modules\n\n`;
|
|
43
|
+
output += `아래는 학생의 학습 모듈 목록입니다. 답변과 관련된 모듈이 있으면 vibeuniv.com 링크를 안내하세요:\n\n`;
|
|
44
|
+
for (const mod of lc.modules) {
|
|
45
|
+
output += `${mod.module_order}. [${mod.title}](https://vibeuniv.com/learning/${lc.learning_path_id}/${mod.id})\n`;
|
|
46
|
+
}
|
|
47
|
+
output += `\n`;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// Instruction to suggest learning links
|
|
51
|
+
output += `답변 끝에 관련 모듈이 있으면: 📚 더 자세히 → [모듈명](링크) 형식으로 안내. 없으면 생략.\n\n`;
|
|
52
|
+
// User question
|
|
53
|
+
output += `### Student's Question\n\n`;
|
|
54
|
+
output += question;
|
|
13
55
|
return {
|
|
14
56
|
content: [{ type: "text", text: output }],
|
|
15
57
|
};
|
|
@@ -17,7 +59,7 @@ export function registerAskTutor(server, client) {
|
|
|
17
59
|
catch (error) {
|
|
18
60
|
const message = error instanceof Error ? error.message : String(error);
|
|
19
61
|
return {
|
|
20
|
-
content: [{ type: "text", text: `Failed to get tutor
|
|
62
|
+
content: [{ type: "text", text: `Failed to get tutor context: ${message}` }],
|
|
21
63
|
isError: true,
|
|
22
64
|
};
|
|
23
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-tutor.js","sourceRoot":"","sources":["../../src/tools/ask-tutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC1D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;CAC9F,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,MAAsB;IACxE,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,uFAAuF,EACvF,cAAc,EACd,EAAE,YAAY,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,EAC3C,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;QACjC,IAAI,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"ask-tutor.js","sourceRoot":"","sources":["../../src/tools/ask-tutor.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;AAGtD,eAAO,MAAM,wBAAwB;;;CAMpC,CAAC;AAmKF,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,
|
|
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;AAGtD,eAAO,MAAM,wBAAwB;;;CAMpC,CAAC;AAmKF,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CA2I1F"}
|
|
@@ -135,31 +135,27 @@ function buildLevelGuidance(difficulty) {
|
|
|
135
135
|
}
|
|
136
136
|
// ─── Tool registration ──────────────────────────────────────────────
|
|
137
137
|
export function registerGenerateCurriculum(server, client) {
|
|
138
|
-
server.tool("vibeuniv_generate_curriculum", "Generate a learning curriculum for the project. Returns tech stack info and a JSON schema — you create the curriculum JSON, then submit it with vibeuniv_submit_curriculum.", generateCurriculumSchema, { readOnlyHint: true, openWorldHint: true }, async ({ project_id, difficulty }) => {
|
|
138
|
+
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 a JSON schema — you create the curriculum JSON, then submit it with vibeuniv_submit_curriculum.", generateCurriculumSchema, { readOnlyHint: true, openWorldHint: true }, async ({ project_id, difficulty }) => {
|
|
139
139
|
try {
|
|
140
140
|
console.error(`[vibeuniv] Generating curriculum instructions for project ${project_id}...`);
|
|
141
|
-
// Fetch
|
|
142
|
-
const
|
|
141
|
+
// Fetch all curriculum context in a single API call
|
|
142
|
+
const curriculumContext = await client.getCurriculumContext(project_id);
|
|
143
|
+
const techStacks = curriculumContext.techStacks;
|
|
143
144
|
if (techStacks.length === 0) {
|
|
144
145
|
return {
|
|
145
146
|
content: [
|
|
146
147
|
{
|
|
147
148
|
type: "text",
|
|
148
|
-
text: `No tech stacks found for project ${project_id}. Run
|
|
149
|
+
text: `No tech stacks found for project ${project_id}. Run vibeuniv_analyze first to analyze the project.`,
|
|
149
150
|
},
|
|
150
151
|
],
|
|
151
152
|
isError: true,
|
|
152
153
|
};
|
|
153
154
|
}
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
console.error(`[vibeuniv] KB hints fetch failed (non-fatal): ${err instanceof Error ? err.message : err}`);
|
|
159
|
-
return null;
|
|
160
|
-
}),
|
|
161
|
-
client.getEducationalAnalysis(project_id),
|
|
162
|
-
]);
|
|
155
|
+
const kbResult = Object.keys(curriculumContext.knowledgeHints).length > 0
|
|
156
|
+
? { techs: curriculumContext.knowledgeHints }
|
|
157
|
+
: null;
|
|
158
|
+
const educationalAnalysis = curriculumContext.educationalAnalysis;
|
|
163
159
|
// Separate core vs supporting stacks for priority guidance
|
|
164
160
|
const coreStacks = techStacks.filter((t) => t.importance === "core");
|
|
165
161
|
const supportingStacks = techStacks.filter((t) => t.importance !== "core");
|
|
@@ -186,161 +182,58 @@ export function registerGenerateCurriculum(server, client) {
|
|
|
186
182
|
}
|
|
187
183
|
// Build educational analysis instruction
|
|
188
184
|
const eduInstruction = hasEduAnalysis
|
|
189
|
-
? `
|
|
190
|
-
### 10. 교육 분석 데이터 활용
|
|
191
|
-
- **프로젝트 개요**의 핵심 기능과 앱 유형을 커리큘럼 소개에 반영
|
|
192
|
-
- **사용자 흐름(User Flows)** 을 project_walkthrough 모듈의 기반으로 활용
|
|
193
|
-
- **파일 난이도 맵**을 참고해 모듈 순서와 예상 시간을 설정
|
|
194
|
-
- **학습 우선순위**에 따라 모듈 배치를 최적화
|
|
195
|
-
- **반복 패턴**을 별도 모듈이나 퀴즈로 다뤄 학습 효과 극대화
|
|
196
|
-
- **코드 품질 관찰**의 좋은 사례를 교육 포인트로, 개선 기회를 챌린지로 활용
|
|
197
|
-
- 초보자 난이도일 경우 **기술 스택 비유**를 explanation 섹션에 적극 활용`
|
|
185
|
+
? `\n**교육 분석 활용:** 프로젝트 개요→소개, User Flows→walkthrough, 파일 난이도→모듈 순서, 학습 우선순위→배치, 반복 패턴→퀴즈, 코드 품질→교육 포인트${difficulty === "beginner" ? ", 비유→explanation" : ""}`
|
|
198
186
|
: "";
|
|
199
187
|
// Build KB instruction
|
|
200
188
|
const kbInstruction = kbResult && Object.keys(kbResult.techs).length > 0
|
|
201
|
-
?
|
|
202
|
-
### ${educationalAnalysis ? "11" : "10"}. Knowledge Base 활용
|
|
203
|
-
- **핵심 포인트**를 반드시 커리큘럼에 포함 — 빠뜨리지 마세요
|
|
204
|
-
- **퀴즈 주제**를 quiz_question 섹션의 주제로 활용
|
|
205
|
-
- **선행 개념** 순서에 맞게 모듈을 배치 (선행 개념이 먼저 나와야 함)`
|
|
189
|
+
? `\n**KB 활용:** 핵심 포인트 필수 포함, 퀴즈 주제 활용, 선행 개념 순서 준수.`
|
|
206
190
|
: "";
|
|
207
|
-
const instructions = `이 프로젝트의 학습 커리큘럼을 생성해주세요.
|
|
191
|
+
const instructions = `이 프로젝트의 학습 커리큘럼을 생성해주세요.
|
|
208
192
|
|
|
209
|
-
##
|
|
193
|
+
## 대상: 바이브 코더 (${difficulty})
|
|
210
194
|
|
|
211
|
-
|
|
212
|
-
바이브 코더란, AI 코딩 도구(Claude Code, Cursor, Bolt 등)로 동작하는 앱을 이미 만든 사람입니다.
|
|
213
|
-
코드가 돌아가게는 했지만, **왜 이렇게 작동하는지** 이해하고 싶어하는 사람이에요.
|
|
195
|
+
AI 코딩 도구로 앱을 만들었지만 **왜 작동하는지** 이해하고 싶은 사람. 프로젝트 기반 학습, 추상적 이론 X.
|
|
214
196
|
|
|
215
|
-
|
|
216
|
-
- **학습 스타일:** 이미 완성된 프로젝트 기반으로 학습 (추상적 이론 X)
|
|
217
|
-
- **목표:** 자기 프로젝트의 기술 스택을 이해해서, 혼자서도 디버깅하고 기능을 추가할 수 있게 되는 것
|
|
197
|
+
## 기술 스택
|
|
218
198
|
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
### 핵심 기술 (Core) — 반드시 다뤄야 함
|
|
199
|
+
**Core (필수):**
|
|
222
200
|
${coreList}
|
|
223
201
|
|
|
224
|
-
|
|
202
|
+
**Supporting (선택):**
|
|
225
203
|
${supportingList}
|
|
226
204
|
${eduSection}${kbSection}
|
|
227
|
-
##
|
|
228
|
-
|
|
229
|
-
**중요:** 커리큘럼 생성 전에 반드시 이 프로젝트의 소스 코드를 읽어주세요.
|
|
230
|
-
특히 다음 파일들을 확인하세요:
|
|
231
|
-
- 진입점 파일 (예: index.ts, app.tsx, main.py, layout.tsx 등)
|
|
232
|
-
- 설정 파일 (예: package.json, tsconfig.json, next.config.ts 등)
|
|
233
|
-
- 핵심 비즈니스 로직 파일 (가장 많이 수정된 파일들)
|
|
234
|
-
- API 라우트, 데이터베이스 접근 코드
|
|
235
|
-
|
|
236
|
-
이 파일들의 실제 코드를 커리큘럼에 직접 인용해야 합니다.
|
|
237
|
-
|
|
238
|
-
## 커리큘럼 설계 원칙
|
|
205
|
+
## 설계 원칙
|
|
239
206
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
- 각 기술당 3-7개 모듈 (중요도와 복잡도에 따라 조절)
|
|
244
|
-
|
|
245
|
-
### 2. 모듈 유형 믹스
|
|
246
|
-
- \`concept\` — 핵심 개념을 비유와 예시로 설명
|
|
247
|
-
- \`practical\` — 학생의 실제 코드를 수정하는 실습
|
|
248
|
-
- \`quiz\` — 학생의 실제 코드 기반 퀴즈로 이해도 확인
|
|
249
|
-
- \`project_walkthrough\` — 학생의 실제 파일을 위에서 아래로 한 줄씩 읽어보기
|
|
250
|
-
|
|
251
|
-
### 3. 난이도별 접근법
|
|
207
|
+
**모듈 순서:** 핵심 기술 먼저 → 선행→후행 순서. 기술당 3-7개 모듈.
|
|
208
|
+
**모듈 유형:** concept(개념+비유), practical(코드 실습), quiz(코드 기반 퀴즈), project_walkthrough(파일 라인별 읽기)
|
|
209
|
+
**난이도:**
|
|
252
210
|
${levelGuidance}
|
|
253
211
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
-
|
|
257
|
-
-
|
|
258
|
-
-
|
|
259
|
-
-
|
|
260
|
-
- \`reflection\` — "생각해보기" (1-3문장, 학생이 스스로 고민해보도록)
|
|
261
|
-
|
|
262
|
-
**배치 규칙:** explanation이나 code_example 1-2개 후에 반드시 quiz_question 또는 reflection을 배치.
|
|
263
|
-
explanation만 연속 3개 이상 나오면 안 됩니다.
|
|
212
|
+
**섹션 구성 (모듈당 5-8개):**
|
|
213
|
+
- explanation: 마크다운 설명, 반드시 학생 파일 경로+코드 인용
|
|
214
|
+
- code_example: 학생 실제 코드 복사 + 한국어 주석
|
|
215
|
+
- quiz_question: 4지선다(0-indexed), quiz_explanation에 정답/오답 이유
|
|
216
|
+
- challenge: 수정 파일+내용+결과 명시, starter_code(TODO 뼈대)+answer_code
|
|
217
|
+
- reflection: 1-3문장 "생각해보기"
|
|
264
218
|
|
|
265
|
-
|
|
266
|
-
- **모든 콘텐츠는 한국어** (기술 용어는 영어 유지하되 괄호 안에 한국어 설명 병기)
|
|
267
|
-
- **짧은 문장**, **짧은 문단** — 한 단락에 3문장 이하
|
|
268
|
-
- **글머리 기호** 적극 사용 — 장문 대신 핵심만
|
|
269
|
-
- **질문으로 시작** — "왜 이렇게 할까요?", "이 코드 없이도 동작할까요?"
|
|
270
|
-
- **마이크로러닝 느낌** — 각 섹션이 짧은 카드처럼, 강의처럼 느껴지면 안 됨
|
|
219
|
+
**배치:** explanation/code_example 1-2개 후 반드시 quiz 또는 reflection. explanation 연속 3개 금지.
|
|
271
220
|
|
|
272
|
-
|
|
273
|
-
- explanation: "여러분의 \`middleware.ts\` 파일 5번째 줄을 보면..." 형태로 구체적 파일 + 라인 참조
|
|
274
|
-
- code_example: 학생 프로젝트의 **실제 코드를 그대로** 복사하고, 각 줄에 한국어 주석 추가
|
|
275
|
-
예시:
|
|
276
|
-
\`\`\`
|
|
277
|
-
// app/layout.tsx에서 가져온 코드
|
|
278
|
-
export default function RootLayout({ children }) { // 모든 페이지를 감싸는 최상위 레이아웃
|
|
279
|
-
return <html lang="ko"> // 한국어 페이지라는 것을 브라우저에 알려줌
|
|
280
|
-
\`\`\`
|
|
281
|
-
- quiz_question: "여러분의 \`app/page.tsx\`에서 \`export default\`를 쓰는 이유는?"처럼 학생 코드 기반
|
|
282
|
-
- challenge: 수정할 파일, 추가할 내용, 기대 결과를 구체적으로 명시
|
|
283
|
-
- **코드를 창작하지 마세요** — 반드시 프로젝트에 실재하는 코드를 인용
|
|
221
|
+
**톤:** 한국어(기술 용어는 영어 유지+괄호 설명). 짧은 문장, 글머리 기호. 질문으로 시작. 코드 창작 금지 — 프로젝트 실제 코드만 인용.
|
|
284
222
|
|
|
285
|
-
|
|
286
|
-
- 선택지 정확히 4개, 정답은 0-indexed
|
|
287
|
-
- \`quiz_explanation\`에 정답 이유 + 오답 이유를 2-4문장으로 설명
|
|
288
|
-
- 학생의 실제 코드와 연결된 퀴즈 출제 (추상적 이론 퀴즈 X)
|
|
289
|
-
|
|
290
|
-
### 8. 챌린지 규칙
|
|
291
|
-
- 어떤 파일을 수정할지, 무엇을 추가/변경할지, 결과가 어떻게 바뀌는지 구체적으로
|
|
292
|
-
- \`challenge_starter_code\`: TODO 주석이 있는 뼈대 코드
|
|
293
|
-
- \`challenge_answer_code\`: 완성된 정답 코드
|
|
294
|
-
|
|
295
|
-
### 9. project_walkthrough 규칙
|
|
296
|
-
- 학생의 실제 파일 하나를 위에서 아래로 읽기
|
|
297
|
-
- import 구문 → 핵심 로직 → export 순서로 설명
|
|
298
|
-
- 이 파일이 프로젝트의 다른 파일들과 어떻게 연결되는지 설명
|
|
223
|
+
**walkthrough:** 파일 하나를 import→로직→export 순서로 설명 + 다른 파일과의 연결.
|
|
299
224
|
${eduInstruction}${kbInstruction}
|
|
300
225
|
|
|
301
226
|
## JSON 스키마
|
|
302
227
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
{
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
"difficulty": "${difficulty}",
|
|
309
|
-
"estimated_hours": number,
|
|
310
|
-
"modules": [
|
|
311
|
-
{
|
|
312
|
-
"title": "string (모듈 제목, 한국어)",
|
|
313
|
-
"description": "string (1-2문장 모듈 설명, 한국어)",
|
|
314
|
-
"module_type": "concept | practical | quiz | project_walkthrough",
|
|
315
|
-
"estimated_minutes": number (15-45),
|
|
316
|
-
"tech_name": "string (위 기술 스택 목록의 정확한 이름)",
|
|
317
|
-
"content": {
|
|
318
|
-
"sections": [
|
|
319
|
-
{
|
|
320
|
-
"type": "explanation | code_example | quiz_question | challenge | reflection",
|
|
321
|
-
"title": "string (섹션 제목, 한국어)",
|
|
322
|
-
"body": "string (마크다운 콘텐츠, 한국어)",
|
|
323
|
-
"code": "string (code_example일 때만, 학생의 실제 코드 + 한국어 주석)",
|
|
324
|
-
"quiz_options": ["string", "string", "string", "string"] (quiz_question일 때만),
|
|
325
|
-
"quiz_answer": number (0-3, quiz_question일 때만),
|
|
326
|
-
"quiz_explanation": "string (정답/오답 이유, quiz_question일 때만)",
|
|
327
|
-
"challenge_starter_code": "string (TODO 포함 뼈대, challenge일 때만)",
|
|
328
|
-
"challenge_answer_code": "string (완성 정답, challenge일 때만)"
|
|
329
|
-
}
|
|
330
|
-
]
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
]
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
## 중요
|
|
228
|
+
{ title, description, difficulty: "${difficulty}", estimated_hours,
|
|
229
|
+
modules: [{ title, description, module_type, estimated_minutes(15-45), tech_name(위 목록과 정확히 일치),
|
|
230
|
+
content: { sections: [{ type, title, body,
|
|
231
|
+
code?(code_example만), quiz_options?[4개], quiz_answer?(0-3), quiz_explanation?,
|
|
232
|
+
challenge_starter_code?, challenge_answer_code? }] } }] }
|
|
337
233
|
|
|
338
|
-
|
|
339
|
-
- \`tech_name\`은 위 기술 스택 목록의 이름과 **정확히 일치**해야 합니다.
|
|
340
|
-
- 각 모듈당 **5-8개 섹션** 필수.
|
|
234
|
+
모든 string 값은 한국어. JSON만 출력 (코드 펜스/설명 없이).
|
|
341
235
|
|
|
342
|
-
생성
|
|
343
|
-
vibeuniv_submit_curriculum({ project_id: "${project_id}", curriculum: <생성된 JSON> })`;
|
|
236
|
+
생성 후: vibeuniv_submit_curriculum({ project_id: "${project_id}", curriculum: <JSON> })`;
|
|
344
237
|
return {
|
|
345
238
|
content: [
|
|
346
239
|
{
|
|
@@ -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-analysis.d.ts","sourceRoot":"","sources":["../../src/tools/submit-analysis.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,oBAAoB;;;CAQhC,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"submit-analysis.d.ts","sourceRoot":"","sources":["../../src/tools/submit-analysis.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,oBAAoB;;;CAQhC,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAuCtF"}
|
|
@@ -15,7 +15,13 @@ export function registerSubmitAnalysis(server, client) {
|
|
|
15
15
|
content: [
|
|
16
16
|
{
|
|
17
17
|
type: "text",
|
|
18
|
-
text:
|
|
18
|
+
text: [
|
|
19
|
+
`교육적 분석이 성공적으로 제출되었습니다! (Project: ${project_id})`,
|
|
20
|
+
`이 데이터는 맞춤 학습 커리큘럼 생성에 활용됩니다.`,
|
|
21
|
+
``,
|
|
22
|
+
`다음 단계: vibeuniv_analyze를 호출하여 기술 스택을 분석하세요.`,
|
|
23
|
+
`분석이 완료되면 https://vibeuniv.com 에서 프로젝트를 확인할 수 있습니다.`,
|
|
24
|
+
].join("\n"),
|
|
19
25
|
},
|
|
20
26
|
],
|
|
21
27
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"submit-analysis.js","sourceRoot":"","sources":["../../src/tools/submit-analysis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC1D,QAAQ,EAAE,CAAC;SACR,MAAM,CAAC,EAAE,CAAC;SACV,WAAW,EAAE;SACb,QAAQ,CACP,0JAA0J,CAC3J;CACJ,CAAC;AAEF,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,MAAsB;IAC9E,MAAM,CAAC,IAAI,CACT,0BAA0B,EAC1B,4FAA4F,EAC5F,oBAAoB,EACpB,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,EAC5C,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;QACjC,IAAI,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,0DAA0D,UAAU,KAAK,CAAC,CAAC;YACzF,MAAM,MAAM,CAAC,yBAAyB,CAAC,UAAU,EAAE,QAAmC,CAAC,CAAC;YAExF,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"submit-analysis.js","sourceRoot":"","sources":["../../src/tools/submit-analysis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC1D,QAAQ,EAAE,CAAC;SACR,MAAM,CAAC,EAAE,CAAC;SACV,WAAW,EAAE;SACb,QAAQ,CACP,0JAA0J,CAC3J;CACJ,CAAC;AAEF,MAAM,UAAU,sBAAsB,CAAC,MAAiB,EAAE,MAAsB;IAC9E,MAAM,CAAC,IAAI,CACT,0BAA0B,EAC1B,4FAA4F,EAC5F,oBAAoB,EACpB,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,EAC5C,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;QACjC,IAAI,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,0DAA0D,UAAU,KAAK,CAAC,CAAC;YACzF,MAAM,MAAM,CAAC,yBAAyB,CAAC,UAAU,EAAE,QAAmC,CAAC,CAAC;YAExF,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE;4BACJ,oCAAoC,UAAU,GAAG;4BACjD,8BAA8B;4BAC9B,EAAE;4BACF,6CAA6C;4BAC7C,oDAAoD;yBACrD,CAAC,IAAI,CAAC,IAAI,CAAC;qBACb;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,0CAA0C,OAAO,EAAE;qBAC1D;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -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,CAqDxF"}
|
|
@@ -15,7 +15,24 @@ export function registerSubmitCurriculum(server, client) {
|
|
|
15
15
|
content: [
|
|
16
16
|
{
|
|
17
17
|
type: "text",
|
|
18
|
-
text:
|
|
18
|
+
text: [
|
|
19
|
+
`커리큘럼이 성공적으로 생성되었습니다!`,
|
|
20
|
+
``,
|
|
21
|
+
`- Learning Path ID: ${result.learningPathId}`,
|
|
22
|
+
`- 제목: ${result.title}`,
|
|
23
|
+
`- 총 모듈 수: ${result.totalModules}`,
|
|
24
|
+
``,
|
|
25
|
+
`${"=".repeat(50)}`,
|
|
26
|
+
`🎓 학습 준비 완료!`,
|
|
27
|
+
`${"=".repeat(50)}`,
|
|
28
|
+
``,
|
|
29
|
+
`맞춤 학습 커리큘럼이 준비되었습니다.`,
|
|
30
|
+
`아래 링크에서 바로 학습을 시작할 수 있습니다:`,
|
|
31
|
+
``,
|
|
32
|
+
`👉 https://vibeuniv.com`,
|
|
33
|
+
``,
|
|
34
|
+
`AI 튜터와 함께 프로젝트 기반 학습을 시작해보세요!`,
|
|
35
|
+
].join("\n"),
|
|
19
36
|
},
|
|
20
37
|
],
|
|
21
38
|
};
|
|
@@ -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;YAEF,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,
|
|
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;YAEF,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE;4BACJ,sBAAsB;4BACtB,EAAE;4BACF,uBAAuB,MAAM,CAAC,cAAc,EAAE;4BAC9C,SAAS,MAAM,CAAC,KAAK,EAAE;4BACvB,aAAa,MAAM,CAAC,YAAY,EAAE;4BAClC,EAAE;4BACF,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;4BACnB,cAAc;4BACd,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;4BACnB,EAAE;4BACF,sBAAsB;4BACtB,4BAA4B;4BAC5B,EAAE;4BACF,yBAAyB;4BACzB,EAAE;4BACF,+BAA+B;yBAChC,CAAC,IAAI,CAAC,IAAI,CAAC;qBACb;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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
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 submitTechStacksSchema: {
|
|
5
|
+
project_id: z.ZodString;
|
|
6
|
+
analysis: z.ZodObject<{}, "passthrough", z.ZodTypeAny, z.objectOutputType<{}, z.ZodTypeAny, "passthrough">, z.objectInputType<{}, z.ZodTypeAny, "passthrough">>;
|
|
7
|
+
};
|
|
8
|
+
export declare function registerSubmitTechStacks(server: McpServer, client: VibeUnivClient): void;
|
|
9
|
+
//# sourceMappingURL=submit-tech-stacks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submit-tech-stacks.d.ts","sourceRoot":"","sources":["../../src/tools/submit-tech-stacks.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;AAGtD,eAAO,MAAM,sBAAsB;;;CAQlC,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAoDxF"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export const submitTechStacksSchema = {
|
|
3
|
+
project_id: z.string().describe("The VibeUniv project ID"),
|
|
4
|
+
analysis: z
|
|
5
|
+
.object({})
|
|
6
|
+
.passthrough()
|
|
7
|
+
.describe("Analysis result containing technologies array and optional architecture_summary"),
|
|
8
|
+
};
|
|
9
|
+
export function registerSubmitTechStacks(server, client) {
|
|
10
|
+
server.tool("vibeuniv_submit_tech_stacks", "Submit tech stack analysis results for a project. Use after vibeuniv_analyze returns file contents for local analysis.", submitTechStacksSchema, { readOnlyHint: false, openWorldHint: true }, async ({ project_id, analysis }) => {
|
|
11
|
+
try {
|
|
12
|
+
console.error(`[vibeuniv] Submitting tech stacks for project ${project_id}...`);
|
|
13
|
+
const submission = analysis;
|
|
14
|
+
// Basic client-side validation
|
|
15
|
+
if (!submission.technologies ||
|
|
16
|
+
!Array.isArray(submission.technologies) ||
|
|
17
|
+
submission.technologies.length === 0) {
|
|
18
|
+
return {
|
|
19
|
+
content: [
|
|
20
|
+
{
|
|
21
|
+
type: "text",
|
|
22
|
+
text: "Invalid submission: technologies array is required and must have at least 1 entry.",
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
isError: true,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
const result = await client.submitTechStacks(project_id, submission);
|
|
29
|
+
let output = `🎉 프로젝트 연결 완료! (${result.savedCount}개 기술 저장)\n\n`;
|
|
30
|
+
output += `https://vibeuniv.com 에서 프로젝트를 확인할 수 있습니다.\n\n`;
|
|
31
|
+
output += `📚 다음: 사용자에게 난이도(beginner 초급 / intermediate 중급 / advanced 고급)를 물어본 후 vibeuniv_generate_curriculum을 호출하세요.`;
|
|
32
|
+
return {
|
|
33
|
+
content: [{ type: "text", text: output }],
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
38
|
+
return {
|
|
39
|
+
content: [
|
|
40
|
+
{
|
|
41
|
+
type: "text",
|
|
42
|
+
text: `Failed to submit tech stacks: ${message}`,
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
isError: true,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=submit-tech-stacks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submit-tech-stacks.js","sourceRoot":"","sources":["../../src/tools/submit-tech-stacks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC1D,QAAQ,EAAE,CAAC;SACR,MAAM,CAAC,EAAE,CAAC;SACV,WAAW,EAAE;SACb,QAAQ,CACP,iFAAiF,CAClF;CACJ,CAAC;AAEF,MAAM,UAAU,wBAAwB,CAAC,MAAiB,EAAE,MAAsB;IAChF,MAAM,CAAC,IAAI,CACT,6BAA6B,EAC7B,wHAAwH,EACxH,sBAAsB,EACtB,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,EAC5C,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE;QACjC,IAAI,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,iDAAiD,UAAU,KAAK,CAAC,CAAC;YAEhF,MAAM,UAAU,GAAG,QAA0C,CAAC;YAE9D,+BAA+B;YAC/B,IACE,CAAC,UAAU,CAAC,YAAY;gBACxB,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC;gBACvC,UAAU,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EACpC,CAAC;gBACD,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,oFAAoF;yBAC3F;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAErE,IAAI,MAAM,GAAG,mBAAmB,MAAM,CAAC,UAAU,cAAc,CAAC;YAChE,MAAM,IAAI,+CAA+C,CAAC;YAC1D,MAAM,IAAI,2GAA2G,CAAC;YAEtH,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;aACnD,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,iCAAiC,OAAO,EAAE;qBACjD;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-project.d.ts","sourceRoot":"","sources":["../../src/tools/sync-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,eAAO,MAAM,iBAAiB;;;CAG7B,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"sync-project.d.ts","sourceRoot":"","sources":["../../src/tools/sync-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,eAAO,MAAM,iBAAiB;;;CAG7B,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAoEnF"}
|
|
@@ -41,35 +41,13 @@ export function registerSyncProject(server, client) {
|
|
|
41
41
|
`${files.length}개 파일 업로드됨:`,
|
|
42
42
|
fileList,
|
|
43
43
|
"",
|
|
44
|
-
"
|
|
45
|
-
"=== 필수 다음 단계: 교육적 분석 ===",
|
|
46
|
-
"=".repeat(50),
|
|
44
|
+
"다음 단계: 프로젝트 소스 파일을 읽고 교육적 분석을 제출하세요.",
|
|
47
45
|
"",
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
JSON.stringify({
|
|
54
|
-
project_overview: {
|
|
55
|
-
one_liner: "이 앱이 무엇을 하는지 한 문장",
|
|
56
|
-
app_type: "saas | ecommerce | dashboard | tool | api_service | other",
|
|
57
|
-
core_features: ["핵심 기능1", "핵심 기능2", "핵심 기능3"],
|
|
58
|
-
},
|
|
59
|
-
file_roles: [
|
|
60
|
-
{ path: "src/example.ts", role: "이 파일의 역할 한 문장", complexity: 3 },
|
|
61
|
-
],
|
|
62
|
-
architecture_summary: "전체 아키텍처를 2-3문장으로 설명",
|
|
63
|
-
learning_priorities: {
|
|
64
|
-
start_with: ["먼저 배울 파일/개념"],
|
|
65
|
-
focus_on: ["집중적으로 학습할 것"],
|
|
66
|
-
skip_for_now: ["나중에 봐도 되는 것"],
|
|
67
|
-
},
|
|
68
|
-
}, null, 2),
|
|
69
|
-
"```",
|
|
70
|
-
"",
|
|
71
|
-
"도구 호출 예시:",
|
|
72
|
-
`vibeuniv_submit_analysis({ project_id: "${project.id}", analysis: <위 JSON> })`,
|
|
46
|
+
`vibeuniv_submit_analysis({ project_id: "${project.id}", analysis: {`,
|
|
47
|
+
` project_overview: { one_liner, app_type, core_features },`,
|
|
48
|
+
` file_roles: [{ path, role, complexity(1-5) }],`,
|
|
49
|
+
` architecture_summary, learning_priorities: { start_with, focus_on, skip_for_now }`,
|
|
50
|
+
`} })`,
|
|
73
51
|
].join("\n"),
|
|
74
52
|
},
|
|
75
53
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-project.js","sourceRoot":"","sources":["../../src/tools/sync-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;IACjG,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;CAChF,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,MAAsB;IAC3E,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,8FAA8F,EAC9F,iBAAiB,EACjB,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,EACpE,KAAK,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,EAAE,EAAE;QACtC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAC1B,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,iBAAiB,CAAC;YAE9D,OAAO,CAAC,KAAK,CAAC,wCAAwC,GAAG,KAAK,CAAC,CAAC;YAChE,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAE1C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,sGAAsG;yBAC7G;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;YACzD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;gBACzC,IAAI,EAAE,YAAY,IAAI,WAAW;gBACjC,WAAW;aACZ,CAAC,CAAC;YAEH,OAAO,CAAC,KAAK,CAAC,wBAAwB,KAAK,CAAC,MAAM,WAAW,CAAC,CAAC;YAC/D,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAE5C,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAExF,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE;4BACJ,SAAS,OAAO,CAAC,IAAI,WAAW;4BAChC,eAAe,OAAO,CAAC,EAAE,EAAE;4BAC3B,EAAE;4BACF,GAAG,KAAK,CAAC,MAAM,YAAY;4BAC3B,QAAQ;4BACR,EAAE;4BACF,
|
|
1
|
+
{"version":3,"file":"sync-project.js","sourceRoot":"","sources":["../../src/tools/sync-project.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -85,6 +85,62 @@ export interface KnowledgeHintsResult {
|
|
|
85
85
|
availableCount: number;
|
|
86
86
|
requestedCount: number;
|
|
87
87
|
}
|
|
88
|
+
export interface ProjectDetail {
|
|
89
|
+
id: string;
|
|
90
|
+
name: string;
|
|
91
|
+
status: string;
|
|
92
|
+
files: Array<{
|
|
93
|
+
file_name: string;
|
|
94
|
+
file_path: string;
|
|
95
|
+
content: string;
|
|
96
|
+
}>;
|
|
97
|
+
allFileList?: Array<{
|
|
98
|
+
file_name: string;
|
|
99
|
+
file_path: string;
|
|
100
|
+
}>;
|
|
101
|
+
existingTechStacks: TechStackItem[];
|
|
102
|
+
}
|
|
103
|
+
export interface TechStackSubmission {
|
|
104
|
+
technologies: Array<{
|
|
105
|
+
name: string;
|
|
106
|
+
category: string;
|
|
107
|
+
version?: string;
|
|
108
|
+
confidence: number;
|
|
109
|
+
importance: string;
|
|
110
|
+
description?: string;
|
|
111
|
+
}>;
|
|
112
|
+
architecture_summary?: string;
|
|
113
|
+
}
|
|
114
|
+
export interface TechStackSubmitResult {
|
|
115
|
+
savedCount: number;
|
|
116
|
+
projectStatus: string;
|
|
117
|
+
}
|
|
118
|
+
export interface TutorContext {
|
|
119
|
+
techStacks: Array<{
|
|
120
|
+
technology_name: string;
|
|
121
|
+
category: string;
|
|
122
|
+
description: string | null;
|
|
123
|
+
}>;
|
|
124
|
+
files: Array<{
|
|
125
|
+
file_name: string;
|
|
126
|
+
content: string;
|
|
127
|
+
}>;
|
|
128
|
+
learningContext?: {
|
|
129
|
+
path_title: string;
|
|
130
|
+
learning_path_id: string;
|
|
131
|
+
current_module: string;
|
|
132
|
+
modules: Array<{
|
|
133
|
+
id: string;
|
|
134
|
+
title: string;
|
|
135
|
+
module_order: number;
|
|
136
|
+
}>;
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
export interface CurriculumContext {
|
|
140
|
+
techStacks: TechStackItem[];
|
|
141
|
+
knowledgeHints: Record<string, ConceptHintItem[]>;
|
|
142
|
+
educationalAnalysis: EducationalAnalysisData | null;
|
|
143
|
+
}
|
|
88
144
|
export interface EducationalAnalysisData {
|
|
89
145
|
project_overview: {
|
|
90
146
|
one_liner: 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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"}
|