@vibeuniv/mcp-server 0.3.1 โ†’ 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/index.js +5 -3
  2. package/dist/index.js.map +1 -1
  3. package/dist/lib/api-client.d.ts +16 -1
  4. package/dist/lib/api-client.d.ts.map +1 -1
  5. package/dist/lib/api-client.js +33 -0
  6. package/dist/lib/api-client.js.map +1 -1
  7. package/dist/lib/curriculum-helpers.d.ts +11 -0
  8. package/dist/lib/curriculum-helpers.d.ts.map +1 -0
  9. package/dist/lib/curriculum-helpers.js +243 -0
  10. package/dist/lib/curriculum-helpers.js.map +1 -0
  11. package/dist/lib/file-scanner.d.ts +13 -0
  12. package/dist/lib/file-scanner.d.ts.map +1 -1
  13. package/dist/lib/file-scanner.js +43 -1
  14. package/dist/lib/file-scanner.js.map +1 -1
  15. package/dist/tools/analyze.d.ts.map +1 -1
  16. package/dist/tools/analyze.js +13 -4
  17. package/dist/tools/analyze.js.map +1 -1
  18. package/dist/tools/ask-tutor.d.ts.map +1 -1
  19. package/dist/tools/ask-tutor.js +17 -5
  20. package/dist/tools/ask-tutor.js.map +1 -1
  21. package/dist/tools/generate-curriculum.d.ts.map +1 -1
  22. package/dist/tools/generate-curriculum.js +192 -158
  23. package/dist/tools/generate-curriculum.js.map +1 -1
  24. package/dist/tools/generate-module-content.d.ts +30 -0
  25. package/dist/tools/generate-module-content.d.ts.map +1 -0
  26. package/dist/tools/generate-module-content.js +304 -0
  27. package/dist/tools/generate-module-content.js.map +1 -0
  28. package/dist/tools/submit-analysis.d.ts.map +1 -1
  29. package/dist/tools/submit-analysis.js +17 -7
  30. package/dist/tools/submit-analysis.js.map +1 -1
  31. package/dist/tools/submit-curriculum.d.ts.map +1 -1
  32. package/dist/tools/submit-curriculum.js +66 -19
  33. package/dist/tools/submit-curriculum.js.map +1 -1
  34. package/dist/tools/submit-tech-stacks.d.ts.map +1 -1
  35. package/dist/tools/submit-tech-stacks.js +12 -3
  36. package/dist/tools/submit-tech-stacks.js.map +1 -1
  37. package/dist/tools/sync-project.d.ts.map +1 -1
  38. package/dist/tools/sync-project.js +33 -15
  39. package/dist/tools/sync-project.js.map +1 -1
  40. package/dist/types.d.ts +6 -0
  41. package/dist/types.d.ts.map +1 -1
  42. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -12,9 +12,10 @@ 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";
15
16
  import { registerSubmitCurriculum } from "./tools/submit-curriculum.js";
16
17
  async function main() {
17
- console.error("[vibeuniv] Starting VibeUniv MCP Server v0.3.0...");
18
+ console.error("[vibeuniv] Starting VibeUniv MCP Server v0.3.3...");
18
19
  const config = loadConfig();
19
20
  const client = new VibeUnivClient(config.apiKey, config.apiUrl);
20
21
  if (config.apiKey) {
@@ -22,7 +23,7 @@ async function main() {
22
23
  }
23
24
  const server = new McpServer({
24
25
  name: "vibeuniv-mcp-server",
25
- version: "0.3.0",
26
+ version: "0.3.3",
26
27
  });
27
28
  registerSyncProject(server, client);
28
29
  registerUploadFiles(server, client);
@@ -33,8 +34,9 @@ async function main() {
33
34
  registerSubmitAnalysis(server, client);
34
35
  registerSubmitTechStacks(server, client);
35
36
  registerGenerateCurriculum(server, client);
37
+ registerGenerateModuleContent(server, client);
36
38
  registerSubmitCurriculum(server, client);
37
- console.error("[vibeuniv] 10 tools registered");
39
+ console.error("[vibeuniv] 11 tools registered");
38
40
  const transport = new StdioServerTransport();
39
41
  await server.connect(transport);
40
42
  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,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"}
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,6BAA6B,EAAE,MAAM,oCAAoC,CAAC;AACnF,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,6BAA6B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,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"}
@@ -1,8 +1,23 @@
1
- import type { AnalysisResult, CreateProjectInput, CurriculumContext, CurriculumSubmitResult, EducationalAnalysisData, KnowledgeHintsResult, LearningPath, Project, ProjectDetail, ProjectFile, SessionLog, TechStackItem, TechStackSubmission, TechStackSubmitResult, TutorContext, TutorResponse } from "../types.js";
1
+ import type { AnalysisResult, CreateProjectInput, CurriculumContext, CurriculumSubmitResult, EducationalAnalysisData, KnowledgeHintsResult, LearningPath, Locale, 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
+ private cachedLocale;
6
+ private static CURRICULUM_CACHE_TTL;
7
+ private _curriculumCache;
5
8
  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
+ getUserLocale(): Promise<Locale>;
6
21
  private request;
7
22
  createProject(data: CreateProjectInput): Promise<Project>;
8
23
  uploadFiles(projectId: string, files: ProjectFile[]): Promise<void>;
@@ -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,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"}
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;IAG3C,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAkB;IACrD,OAAO,CAAC,gBAAgB,CAInB;gBAEO,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAK3C,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG;QAC1C,OAAO,EAAE,iBAAiB,CAAC;QAC3B,UAAU,EAAE,KAAK,CAAC;YAAE,SAAS,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC3D,GAAG,IAAI;IAUR,uBAAuB,CACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,iBAAiB,EAC1B,UAAU,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,GACxD,IAAI;IAQD,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;YAWxB,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"}
@@ -3,10 +3,43 @@ const MAX_POLL_ATTEMPTS = 60;
3
3
  export class VibeUnivClient {
4
4
  apiKey;
5
5
  baseUrl;
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();
6
10
  constructor(apiKey, baseUrl) {
7
11
  this.apiKey = apiKey;
8
12
  this.baseUrl = baseUrl.replace(/\/$/, "");
9
13
  }
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
+ async getUserLocale() {
32
+ if (this.cachedLocale)
33
+ return this.cachedLocale;
34
+ try {
35
+ const data = await this.request("GET", "/user/locale");
36
+ this.cachedLocale = data.locale;
37
+ return data.locale;
38
+ }
39
+ catch {
40
+ return "ko";
41
+ }
42
+ }
10
43
  async request(method, path, body) {
11
44
  if (!this.apiKey) {
12
45
  throw new Error("VIBEUNIV_API_KEY is not configured. " +
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"AAsBA,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAwD7B,MAAM,OAAO,cAAc;IACjB,MAAM,CAAS;IACf,OAAO,CAAS;IAChB,YAAY,GAAkB,IAAI,CAAC;IAE3C,+DAA+D;IACvD,MAAM,CAAC,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC7C,gBAAgB,GAAG,IAAI,GAAG,EAI9B,CAAC;IAEL,YAAY,MAAc,EAAE,OAAe;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,uBAAuB,CAAC,SAAiB;QAIvC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,GAAG,cAAc,CAAC,oBAAoB,EAAE,CAAC;YACvE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;IAClE,CAAC;IAED,uBAAuB,CACrB,SAAiB,EACjB,OAA0B,EAC1B,UAAyD;QAEzD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE;YACnC,OAAO;YACP,UAAU;YACV,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC;QAChD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAqB,KAAK,EAAE,cAAc,CAAC,CAAC;YAC3E,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;YAChC,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,MAAc,EACd,IAAY,EACZ,IAAc;QAEd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,sCAAsC;gBACpC,sDAAsD;gBACtD,0DAA0D;gBAC1D,uDAAuD,CAC1D,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QAErC,MAAM,OAAO,GAA2B;YACtC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;YACtC,cAAc,EAAE,kBAAkB;YAClC,YAAY,EAAE,2BAA2B;SAC1C,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM;YACN,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC9C,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAmB,CAAC;QAEvD,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,YAAY,GAChB,IAAI,CAAC,KAAK,IAAI,kCAAkC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACpE,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAwB;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAU,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAAiB,EAAE,KAAoB;QACvD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAChC,SAAS,EAAE,CAAC,CAAC,IAAI;YACjB,SAAS,EAAE,CAAC,CAAC,YAAY;YACzB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,YAAY,EAAE,CAAC,CAAC,MAAM;SACvB,CAAC,CAAC,CAAC;QACJ,MAAM,IAAI,CAAC,OAAO,CAAO,MAAM,EAAE,aAAa,SAAS,QAAQ,EAAE;YAC/D,KAAK,EAAE,OAAO;SACf,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,SAAiB;QACrC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAC5B,MAAM,EACN,aAAa,SAAS,UAAU,CACjC,CAAC;QAEF,MAAM,MAAM,GAAmB;YAC7B,EAAE,EAAE,GAAG,CAAC,MAAM;YACd,SAAS;YACT,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC;IAEO,KAAK,CAAC,YAAY,CACxB,SAAiB,EACjB,KAAa;QAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC;YAEtE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAC5B,KAAK,EACL,aAAa,SAAS,YAAY,KAAK,EAAE,CAC1C,CAAC;YAEF,MAAM,MAAM,GAAmB;gBAC7B,EAAE,EAAE,GAAG,CAAC,MAAM;gBACd,SAAS;gBACT,MAAM,EAAE,GAAG,CAAC,MAAkC;gBAC9C,YAAY,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS;gBAC5C,SAAS,EAAE,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACrC,IAAI,EAAE,CAAC,CAAC,eAAe;oBACvB,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,SAAS;oBAC/B,UAAU,EAAE,CAAC,CAAC,gBAAgB;oBAC9B,UAAU,EAAE,CAAC,CAAC,UAAU;iBACzB,CAAC,CAAC;gBACH,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;gBACtC,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,SAAS;gBAC1C,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aACtD,CAAC;YAEF,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAChE,OAAO,MAAM,CAAC;YAChB,CAAC;YAED,OAAO,CAAC,KAAK,CACX,+CAA+C,CAAC,GAAG,CAAC,IAAI,iBAAiB,GAAG,CAC7E,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,SAAiB;QACrC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAC5B,KAAK,EACL,aAAa,SAAS,WAAW,CAClC,CAAC;QAEF,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,SAAS;YACT,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;YACzC,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,YAAY,EAAE,GAAG,CAAC,aAAa;YAC/B,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC/B,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE;gBAChC,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE;gBACtB,KAAK,EAAE,CAAC,CAAC,YAAY;gBACrB,gBAAgB,EAAE,CAAC,CAAC,iBAAiB,IAAI,SAAS;gBAClD,MAAM,EAAE,CAAC,CAAC,MAAM;aACjB,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB,EAAE,IAAgB;QAClD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAC5B,MAAM,EACN,aAAa,SAAS,WAAW,EACjC;YACE,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,IAAI,CAAC,YAAY;SACjC,CACF,CAAC;QACF,OAAO,GAAG,CAAC,UAAU,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,SAAiB,EACjB,QAAgB,EAChB,cAAuB;QAEvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAC5B,MAAM,EACN,aAAa,SAAS,QAAQ,EAC9B;YACE,QAAQ;YACR,eAAe,EAAE,cAAc;SAChC,CACF,CAAC;QACF,OAAO;YACL,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,cAAc,EAAE,GAAG,CAAC,eAAe;SACpC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,SAAiB,EAAE,YAAqC;QACtF,MAAM,IAAI,CAAC,OAAO,CAChB,MAAM,EACN,aAAa,SAAS,uBAAuB,EAC7C,EAAE,aAAa,EAAE,YAAY,EAAE,CAChC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,SAAiB;QAmBnC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAC5B,KAAK,EACL,aAAa,SAAS,QAAQ,CAC/B,CAAC;QAEF,MAAM,KAAK,GAAoB,EAAE,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YACjC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;gBACpC,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,IAAI,CAAC,eAAe;oBAC1B,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,SAAS;oBAClC,UAAU,EAAE,IAAI,CAAC,gBAAgB;oBACjC,UAAU,EAAE,IAAI,CAAC,UAAU;iBAC5B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,SAAmB;QAOzC,MAAM,UAAU,GAAG,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAC5B,KAAK,EACL,oBAAoB,UAAU,EAAE,CACjC,CAAC;QAEF,OAAO;YACL,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,cAAc,EAAE,GAAG,CAAC,eAAe;YACnC,cAAc,EAAE,GAAG,CAAC,eAAe;SACpC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,SAAiB;QAC5C,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,OAAO,CACvB,KAAK,EACL,aAAa,SAAS,uBAAuB,CAC9C,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,6DAA6D,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACvH,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,SAAiB,EACjB,UAAmC;QAQnC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAC5B,MAAM,EACN,aAAa,SAAS,aAAa,EACnC,EAAE,UAAU,EAAE,CACf,CAAC;QAEF,OAAO;YACL,cAAc,EAAE,GAAG,CAAC,gBAAgB;YACpC,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,YAAY,EAAE,GAAG,CAAC,aAAa;SAChC,CAAC;IACJ,CAAC;IAED,mEAAmE;IAEnE,KAAK,CAAC,gBAAgB,CAAC,SAAiB;QACtC,OAAO,IAAI,CAAC,OAAO,CACjB,KAAK,EACL,aAAa,SAAS,SAAS,CAChC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gBAAgB,CACpB,SAAiB,EACjB,UAA+B;QAE/B,OAAO,IAAI,CAAC,OAAO,CACjB,MAAM,EACN,aAAa,SAAS,cAAc,EACpC,UAAU,CACX,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,SAAiB;QACrC,OAAO,IAAI,CAAC,OAAO,CACjB,KAAK,EACL,aAAa,SAAS,gBAAgB,CACvC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,SAAiB;QAC1C,OAAO,IAAI,CAAC,OAAO,CACjB,KAAK,EACL,aAAa,SAAS,qBAAqB,CAC5C,CAAC;IACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { ConceptHintItem, EducationalAnalysisData, TechStackItem } from "../types.js";
2
+ export declare function formatTechStack(t: TechStackItem): string;
3
+ export declare function formatKBHints(kbHints: Record<string, ConceptHintItem[]>, locale: "ko" | "en"): string;
4
+ export declare function formatEducationalAnalysis(analysis: EducationalAnalysisData, difficulty: string, locale: "ko" | "en"): string;
5
+ export declare function buildLevelGuidance(difficulty: string, locale: "ko" | "en"): string;
6
+ /**
7
+ * Filter KB hints to include only concepts relevant to a specific tech
8
+ * and its prerequisite concepts from other techs.
9
+ */
10
+ export declare function filterKBHintsForModule(allHints: Record<string, ConceptHintItem[]>, techName: string): Record<string, ConceptHintItem[]>;
11
+ //# sourceMappingURL=curriculum-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curriculum-helpers.d.ts","sourceRoot":"","sources":["../../src/lib/curriculum-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAI3F,wBAAgB,eAAe,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAExD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CA0CrG;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,uBAAuB,EACjC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,IAAI,GAAG,IAAI,GAClB,MAAM,CAyIR;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CA6ClF;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,EAC3C,QAAQ,EAAE,MAAM,GACf,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CA6BnC"}
@@ -0,0 +1,243 @@
1
+ // โ”€โ”€โ”€ Shared formatting helpers for curriculum generation โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
2
+ export function formatTechStack(t) {
3
+ return `- **${t.name}**${t.version ? ` v${t.version}` : ""} (${t.category})`;
4
+ }
5
+ export function formatKBHints(kbHints, locale) {
6
+ const sections = [];
7
+ for (const [techName, hints] of Object.entries(kbHints)) {
8
+ if (hints.length === 0)
9
+ continue;
10
+ const conceptLines = locale === "en"
11
+ ? hints.map((h) => `#### ${h.concept_name} (\`${h.concept_key}\`)
12
+ - **Key Points:**
13
+ ${h.key_points.map((p) => ` - ${p}`).join("\n")}
14
+ - **Good Quiz Topics:** ${h.common_quiz_topics.join(", ")}
15
+ - **Prerequisites:** ${h.prerequisite_concepts.length > 0 ? h.prerequisite_concepts.join(", ") : "(none)"}`).join("\n\n")
16
+ : hints.map((h) => `#### ${h.concept_name} (\`${h.concept_key}\`)
17
+ - **ํ•ต์‹ฌ ํฌ์ธํŠธ:**
18
+ ${h.key_points.map((p) => ` - ${p}`).join("\n")}
19
+ - **์ข‹์€ ํ€ด์ฆˆ ์ฃผ์ œ:** ${h.common_quiz_topics.join(", ")}
20
+ - **์„ ํ–‰ ๊ฐœ๋…:** ${h.prerequisite_concepts.length > 0 ? h.prerequisite_concepts.join(", ") : "(์—†์Œ)"}`).join("\n\n");
21
+ const heading = locale === "en"
22
+ ? `### ${techName} Core Concept Guide`
23
+ : `### ${techName} ํ•ต์‹ฌ ๊ฐœ๋… ๊ฐ€์ด๋“œ`;
24
+ sections.push(`${heading}\n\n${conceptLines}`);
25
+ }
26
+ if (sections.length === 0)
27
+ return "";
28
+ const header = locale === "en"
29
+ ? `## Educational Key Points (Knowledge Base)
30
+
31
+ Below are **core educational key points** for each technology.
32
+ Include these points in the curriculum, reference quiz topics, and follow prerequisite ordering.`
33
+ : `## ๊ต์œก ํ•ต์‹ฌ ํฌ์ธํŠธ (Knowledge Base)
34
+
35
+ ์•„๋ž˜๋Š” ๊ฐ ๊ธฐ์ˆ ์˜ **ํ•ต์‹ฌ ๊ต์œก ํฌ์ธํŠธ**์ž…๋‹ˆ๋‹ค.
36
+ ์ปค๋ฆฌํ˜๋Ÿผ์— ๋ฐ˜๋“œ์‹œ ์ด ํฌ์ธํŠธ๋“ค์„ ํฌํ•จํ•˜๊ณ , ํ€ด์ฆˆ ์ฃผ์ œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
37
+ ์„ ํ–‰ ๊ฐœ๋… ์ˆœ์„œ์— ๋งž๊ฒŒ ๋ชจ๋“ˆ์„ ๋ฐฐ์น˜ํ•˜์„ธ์š”.`;
38
+ return `${header}\n\n${sections.join("\n\n")}`;
39
+ }
40
+ export function formatEducationalAnalysis(analysis, difficulty, locale) {
41
+ const sections = [];
42
+ const en = locale === "en";
43
+ // Project Overview
44
+ const ov = analysis.project_overview;
45
+ sections.push(en
46
+ ? `### Project Overview (AI Analysis)
47
+ - **App Description:** ${ov.one_liner}
48
+ - **App Type:** ${ov.app_type}
49
+ - **Target Users:** ${ov.target_users}
50
+ - **Core Features:** ${ov.core_features.join(", ")}`
51
+ : `### ํ”„๋กœ์ ํŠธ ๊ฐœ์š” (AI ๋ถ„์„ ๊ฒฐ๊ณผ)
52
+ - **์•ฑ ์„ค๋ช…:** ${ov.one_liner}
53
+ - **์•ฑ ์œ ํ˜•:** ${ov.app_type}
54
+ - **๋Œ€์ƒ ์‚ฌ์šฉ์ž:** ${ov.target_users}
55
+ - **ํ•ต์‹ฌ ๊ธฐ๋Šฅ:** ${ov.core_features.join(", ")}`);
56
+ // User Flows
57
+ if (analysis.user_flows.length > 0) {
58
+ const flowLines = analysis.user_flows.map((f) => {
59
+ const steps = f.steps
60
+ .map((s) => ` - ${s.description} (\`${s.file}\`:${s.line_range})`)
61
+ .join("\n");
62
+ return en
63
+ ? `- **${f.name}** (difficulty: ${f.difficulty})\n Trigger: ${f.trigger}\n${steps}`
64
+ : `- **${f.name}** (๋‚œ์ด๋„: ${f.difficulty})\n ํŠธ๋ฆฌ๊ฑฐ: ${f.trigger}\n${steps}`;
65
+ });
66
+ sections.push(en
67
+ ? `### User Flows\n\nEach flow should be covered in the curriculum:\n\n${flowLines.join("\n\n")}`
68
+ : `### ์‚ฌ์šฉ์ž ํ๋ฆ„ (User Flows)\n\n๊ฐ ํ๋ฆ„์„ ์ปค๋ฆฌํ˜๋Ÿผ์—์„œ ๋‹ค๋ค„์•ผ ํ•ฉ๋‹ˆ๋‹ค:\n\n${flowLines.join("\n\n")}`);
69
+ }
70
+ // File Difficulty Map
71
+ if (analysis.file_analysis.length > 0) {
72
+ const fileLines = analysis.file_analysis
73
+ .sort((a, b) => a.complexity - b.complexity)
74
+ .map((f) => en
75
+ ? `- \`${f.path}\` โ€” ${f.role} (complexity: ${f.complexity}/5, ${f.difficulty})`
76
+ : `- \`${f.path}\` โ€” ${f.role} (๋ณต์žก๋„: ${f.complexity}/5, ${f.difficulty})`);
77
+ sections.push(en
78
+ ? `### File Difficulty Map\n\nSorted from easiest to hardest. Use this to determine module order:\n\n${fileLines.join("\n")}`
79
+ : `### ํŒŒ์ผ ๋‚œ์ด๋„ ๋งต\n\n์‰ฌ์šด ํŒŒ์ผ๋ถ€ํ„ฐ ์–ด๋ ค์šด ํŒŒ์ผ ์ˆœ์„œ๋กœ ์ •๋ ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“ˆ ์ˆœ์„œ๋ฅผ ๊ฒฐ์ •ํ•  ๋•Œ ์ฐธ๊ณ ํ•˜์„ธ์š”:\n\n${fileLines.join("\n")}`);
80
+ }
81
+ // Learning Priorities
82
+ const priorities = analysis.learning_priorities;
83
+ const lp = difficulty === "beginner"
84
+ ? priorities.beginner
85
+ : difficulty === "intermediate"
86
+ ? priorities.intermediate
87
+ : priorities.advanced;
88
+ const priorityLines = en
89
+ ? [
90
+ `- **Start with:** ${lp.start_with.join(", ")}`,
91
+ `- **Focus on:** ${lp.focus_on.join(", ")}`,
92
+ ]
93
+ : [
94
+ `- **์‹œ์ž‘:** ${lp.start_with.join(", ")}`,
95
+ `- **์ง‘์ค‘:** ${lp.focus_on.join(", ")}`,
96
+ ];
97
+ if ("skip_for_now" in lp) {
98
+ priorityLines.push(en
99
+ ? `- **Skip for now:** ${lp.skip_for_now.join(", ")}`
100
+ : `- **๋‚˜์ค‘์—:** ${lp.skip_for_now.join(", ")}`);
101
+ }
102
+ if ("deep_dive" in lp) {
103
+ priorityLines.push(en
104
+ ? `- **Deep dive:** ${lp.deep_dive.join(", ")}`
105
+ : `- **์‹ฌํ™”:** ${lp.deep_dive.join(", ")}`);
106
+ }
107
+ if ("challenge_topics" in lp) {
108
+ priorityLines.push(en
109
+ ? `- **Challenge:** ${lp.challenge_topics.join(", ")}`
110
+ : `- **๋„์ „:** ${lp.challenge_topics.join(", ")}`);
111
+ }
112
+ sections.push(en
113
+ ? `### ${difficulty} Level Learning Priorities\n\n${priorityLines.join("\n")}`
114
+ : `### ${difficulty} ๋‚œ์ด๋„ ํ•™์Šต ์šฐ์„ ์ˆœ์œ„\n\n${priorityLines.join("\n")}`);
115
+ // Repeated Patterns
116
+ if (analysis.repeated_patterns.length > 0) {
117
+ const patternLines = analysis.repeated_patterns.map((p) => en
118
+ ? `- **${p.name}**: ${p.description} (found ${p.occurrences.length} times) โ€” teaching value: ${p.teaching_value}`
119
+ : `- **${p.name}**: ${p.description} (${p.occurrences.length}ํšŒ ๋ฐœ๊ฒฌ) โ€” ๊ต์œก ๊ฐ€์น˜: ${p.teaching_value}`);
120
+ sections.push(en
121
+ ? `### Repeated Patterns\n\nThese patterns are used repeatedly in the project. Including them in the curriculum enhances learning:\n\n${patternLines.join("\n")}`
122
+ : `### ๋ฐ˜๋ณต ํŒจํ„ด\n\nํ”„๋กœ์ ํŠธ์—์„œ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ์ด ํŒจํ„ด๋“ค์„ ์ปค๋ฆฌํ˜๋Ÿผ์— ํฌํ•จํ•˜๋ฉด ํ•™์Šต ํšจ๊ณผ๊ฐ€ ๋†’์•„์ง‘๋‹ˆ๋‹ค:\n\n${patternLines.join("\n")}`);
123
+ }
124
+ // Code Quality
125
+ const cq = analysis.code_quality;
126
+ if (cq.good_practices.length > 0 || cq.improvement_areas.length > 0) {
127
+ const lines = [];
128
+ if (cq.good_practices.length > 0) {
129
+ lines.push(en ? "**Good Practices (Teaching Points):**" : "**์ข‹์€ ์‚ฌ๋ก€ (๊ต์œก ํฌ์ธํŠธ):**");
130
+ for (const gp of cq.good_practices) {
131
+ lines.push(en
132
+ ? `- ${gp.description} โ†’ Related concept: ${gp.concept}`
133
+ : `- ${gp.description} โ†’ ๊ด€๋ จ ๊ฐœ๋…: ${gp.concept}`);
134
+ }
135
+ }
136
+ if (cq.improvement_areas.length > 0) {
137
+ lines.push(en ? "\n**Improvement Opportunities (Learning Opportunities):**" : "\n**๊ฐœ์„  ๊ธฐํšŒ (ํ•™์Šต ๊ธฐํšŒ):**");
138
+ for (const ia of cq.improvement_areas) {
139
+ lines.push(en
140
+ ? `- [${ia.severity}] ${ia.description} โ†’ Teaching: ${ia.teaching_opportunity}`
141
+ : `- [${ia.severity}] ${ia.description} โ†’ ๊ต์œก: ${ia.teaching_opportunity}`);
142
+ }
143
+ }
144
+ sections.push(en
145
+ ? `### Code Quality Observations\n\n${lines.join("\n")}`
146
+ : `### ์ฝ”๋“œ ํ’ˆ์งˆ ๊ด€์ฐฐ\n\n${lines.join("\n")}`);
147
+ }
148
+ // Tech Stack Metaphors (beginner only)
149
+ if (difficulty === "beginner" && ov.tech_stack_metaphors.length > 0) {
150
+ const metaphorLines = ov.tech_stack_metaphors.map((m) => `- **${m.tech_name}** โ†’ ${m.metaphor}`);
151
+ sections.push(en
152
+ ? `### Tech Stack Metaphors (Beginner)\n\nUse these metaphors actively in the curriculum:\n\n${metaphorLines.join("\n")}`
153
+ : `### ๊ธฐ์ˆ  ์Šคํƒ ๋น„์œ  (์ดˆ๋ณด์ž์šฉ)\n\n์ด ๋น„์œ ๋“ค์„ ์ปค๋ฆฌํ˜๋Ÿผ์—์„œ ์ ๊ทน ํ™œ์šฉํ•˜์„ธ์š”:\n\n${metaphorLines.join("\n")}`);
154
+ }
155
+ const header = en
156
+ ? `## Project Educational Analysis
157
+
158
+ Below is AI-analyzed educational metadata for the project.
159
+ Use this information to create a more specific and personalized curriculum.`
160
+ : `## ํ”„๋กœ์ ํŠธ ๊ต์œก ๋ถ„์„ (Educational Analysis)
161
+
162
+ ์•„๋ž˜๋Š” AI๊ฐ€ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ถ„์„ํ•œ ๊ต์œก์šฉ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค.
163
+ ์ด ์ •๋ณด๋ฅผ ํ™œ์šฉํ•ด ๋” ๊ตฌ์ฒด์ ์ด๊ณ  ๋งž์ถคํ™”๋œ ์ปค๋ฆฌํ˜๋Ÿผ์„ ๋งŒ๋“œ์„ธ์š”.`;
164
+ return `${header}\n\n${sections.join("\n\n")}`;
165
+ }
166
+ export function buildLevelGuidance(difficulty, locale) {
167
+ const en = locale === "en";
168
+ if (difficulty === "beginner") {
169
+ return en
170
+ ? `**[Core Principle] Explain as if to a 5-6 year old. Assume they know nothing.**
171
+ - 3-step concept breakdown: โ‘ Analogy (food/LEGO/school/play) โ†’ โ‘กOne-sentence definition โ†’ โ‘ขCode connection
172
+ - "What if this didn't exist?" before/after comparison (e.g., "No middleware? โ†’ Anyone can access secret pages ๐Ÿ˜ฑ")
173
+ - Translate key code lines into plain English (e.g., \`const x = 5\` โ†’ "Put the number 5 in a box called x ๐Ÿ“ฆ")
174
+ - Give friendly nicknames to technical terms: useStateโ†’"memory box", propsโ†’"delivery package", middlewareโ†’"security checkpoint"
175
+ - concept 40%+, quiz 20%+, practical 15%โ†“(very easy only)
176
+ - explanation 400+ chars, 5-7 sections per module
177
+ - Use emojis actively: ๐ŸŽฏsummary, ๐Ÿ’กtip, โš ๏ธwarning, ๐Ÿ‘praise
178
+ - Tone: like reading a picture book, short sentences, lots of encouragement
179
+ - estimated_minutes: 20-35 min`
180
+ : `**[๋Œ€์›์น™] 5~6์„ธ ์•„์ด์—๊ฒŒ ์„ค๋ช…ํ•˜๋“ฏ. ์•„๋ฌด๊ฒƒ๋„ ๋ชจ๋ฅธ๋‹ค๊ณ  ๊ฐ€์ •.**
181
+ - ๊ฐœ๋… 3๋‹จ๊ณ„ ์ชผ๊ฐœ๊ธฐ: โ‘ ๋น„์œ (์Œ์‹/๋ ˆ๊ณ /ํ•™๊ต/๋†€์ด) โ†’ โ‘กํ•œ ๋ฌธ์žฅ ์ •์˜ โ†’ โ‘ข์ฝ”๋“œ ์—ฐ๊ฒฐ
182
+ - "์ด๊ฒŒ ์—†์œผ๋ฉด?" before/after ๋น„๊ต (์˜ˆ: "๋ฏธ๋“ค์›จ์–ด ์—†์œผ๋ฉด? โ†’ ์•„๋ฌด๋‚˜ ๋น„๋ฐ€ ํŽ˜์ด์ง€ ์ ‘๊ทผ ๐Ÿ˜ฑ")
183
+ - ์ฃผ์š” ์ฝ”๋“œ ๋ผ์ธ์— "์šฐ๋ฆฌ๋ง ๋ฒˆ์—ญ" (์˜ˆ: \`const x = 5\` โ†’ "x ์ƒ์ž์— ์ˆซ์ž 5๋ฅผ ๋„ฃ์–ด์š” ๐Ÿ“ฆ")
184
+ - ๊ธฐ์ˆ  ์šฉ์–ด์— ํ•œ๊ตญ์–ด ๋ณ„๋ช…: useStateโ†’"๊ธฐ์–ต ์ƒ์ž", propsโ†’"ํƒ๋ฐฐ ์ƒ์ž", middlewareโ†’"๋ณด์•ˆ ๊ฒ€๋ฌธ์†Œ"
185
+ - concept 40%โ†‘, quiz 20%โ†‘, practical 15%โ†“(์•„์ฃผ ์‰ฌ์šด ๊ฒƒ๋งŒ)
186
+ - explanation 400์žโ†‘, ๋ชจ๋“ˆ๋‹น 5-7์„น์…˜
187
+ - ์ด๋ชจ์ง€ ์ ๊ทน ํ™œ์šฉ: ๐ŸŽฏํ•œ์ค„์ •๋ฆฌ, ๐Ÿ’กํŒ, โš ๏ธ์ฃผ์˜, ๐Ÿ‘์นญ์ฐฌ
188
+ - ํ†ค: ๊ทธ๋ฆผ์ฑ… ์ฝ์–ด์ฃผ๋“ฏ, ์งง์€ ๋ฌธ์žฅ, ๊ฒฉ๋ คยท์นญ์ฐฌ ๋Œ€ํญ
189
+ - estimated_minutes: 20-35๋ถ„`;
190
+ }
191
+ if (difficulty === "intermediate") {
192
+ return en
193
+ ? `- Assume basic programming knowledge
194
+ - Focus on "how" and "why" โ€” not just usage but how things work and design decisions
195
+ - Increase practical and project_walkthrough module ratio
196
+ - Cover common patterns, best practices, common mistakes`
197
+ : `- ๊ธฐ๋ณธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ง€์‹์€ ์•ˆ๋‹ค๊ณ  ๊ฐ€์ •
198
+ - "์–ด๋–ป๊ฒŒ"์™€ "์™œ"์— ์ง‘์ค‘ โ€” ๋‹จ์ˆœ ์‚ฌ์šฉ๋ฒ•์ด ์•„๋‹ˆ๋ผ ๋™์ž‘ ์›๋ฆฌ์™€ ์„ค๊ณ„ ์ด์œ 
199
+ - practical๊ณผ project_walkthrough ๋ชจ๋“ˆ ๋น„์ค‘ ๋†’์ด๊ธฐ
200
+ - ์ผ๋ฐ˜์ ์ธ ํŒจํ„ด, ๋ฒ ์ŠคํŠธ ํ”„๋ž™ํ‹ฐ์Šค, ํ”ํ•œ ์‹ค์ˆ˜ ๋‹ค๋ฃจ๊ธฐ`;
201
+ }
202
+ return en
203
+ ? `- Assume solid programming knowledge
204
+ - Focus on advanced patterns, performance optimization, architecture design
205
+ - Maximize practical and project_walkthrough ratio
206
+ - Cover edge cases, internals, optimization strategies`
207
+ : `- ํƒ„ํƒ„ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ง€์‹ ์ „์ œ
208
+ - ๊ณ ๊ธ‰ ํŒจํ„ด, ์„ฑ๋Šฅ ์ตœ์ ํ™”, ์•„ํ‚คํ…์ฒ˜ ์„ค๊ณ„์— ์ง‘์ค‘
209
+ - practical๊ณผ project_walkthrough ๋น„์ค‘ ๊ทน๋Œ€ํ™”
210
+ - ์—ฃ์ง€ ์ผ€์ด์Šค, ๋‚ด๋ถ€ ๋™์ž‘ ์›๋ฆฌ, ์ตœ์ ํ™” ์ „๋žต ๋‹ค๋ฃจ๊ธฐ`;
211
+ }
212
+ /**
213
+ * Filter KB hints to include only concepts relevant to a specific tech
214
+ * and its prerequisite concepts from other techs.
215
+ */
216
+ export function filterKBHintsForModule(allHints, techName) {
217
+ const result = {};
218
+ // Primary: hints for the module's tech
219
+ const primaryHints = allHints[techName];
220
+ if (!primaryHints || primaryHints.length === 0)
221
+ return result;
222
+ result[techName] = primaryHints;
223
+ // Collect prerequisite concept keys
224
+ const prereqKeys = new Set();
225
+ for (const hint of primaryHints) {
226
+ for (const prereq of hint.prerequisite_concepts) {
227
+ prereqKeys.add(prereq);
228
+ }
229
+ }
230
+ // Search other techs for concepts matching prerequisites
231
+ if (prereqKeys.size > 0) {
232
+ for (const [tech, hints] of Object.entries(allHints)) {
233
+ if (tech === techName)
234
+ continue;
235
+ const matchingHints = hints.filter((h) => prereqKeys.has(h.concept_key));
236
+ if (matchingHints.length > 0) {
237
+ result[tech] = matchingHints;
238
+ }
239
+ }
240
+ }
241
+ return result;
242
+ }
243
+ //# sourceMappingURL=curriculum-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curriculum-helpers.js","sourceRoot":"","sources":["../../src/lib/curriculum-helpers.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { ProjectFile } from "../types.js";
2
+ export declare function isTeachingCriticalFile(relativePath: string): boolean;
2
3
  /**
3
4
  * Extract lightweight header from source code files.
4
5
  * Returns only import/require statements, export statements,
@@ -7,4 +8,16 @@ import type { ProjectFile } from "../types.js";
7
8
  */
8
9
  export declare function extractFileHeader(content: string): string;
9
10
  export declare function scanProjectFiles(rootDir: string): Promise<ProjectFile[]>;
11
+ /**
12
+ * Scan local project and return only teaching-critical files
13
+ * (page.tsx, layout.tsx, API routes, middleware, lib/*, server/*, types/*).
14
+ * Config files excluded. Files truncated to maxContentLength.
15
+ */
16
+ export declare function scanTeachingCriticalFiles(rootDir: string, options?: {
17
+ maxFiles?: number;
18
+ maxContentLength?: number;
19
+ }): Promise<Array<{
20
+ file_path: string;
21
+ content: string;
22
+ }>>;
10
23
  //# sourceMappingURL=file-scanner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-scanner.d.ts","sourceRoot":"","sources":["../../src/lib/file-scanner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAqK/C;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA+EzD;AAyCD,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,EAAE,CAAC,CAuExB"}
1
+ {"version":3,"file":"file-scanner.d.ts","sourceRoot":"","sources":["../../src/lib/file-scanner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAuG/C,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAcpE;AAgDD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA+EzD;AAyCD,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,EAAE,CAAC,CAuExB;AAED;;;;GAIG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7D,OAAO,CAAC,KAAK,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CA0CxD"}
@@ -91,7 +91,7 @@ const TEACHING_CRITICAL_PATTERNS = [
91
91
  "server/**/*.ts",
92
92
  "types/**/*.ts",
93
93
  ];
94
- function isTeachingCriticalFile(relativePath) {
94
+ export function isTeachingCriticalFile(relativePath) {
95
95
  return TEACHING_CRITICAL_PATTERNS.some((pattern) => {
96
96
  // Convert glob pattern to regex using placeholders to avoid
97
97
  // conflicting replacements between glob wildcards and regex syntax.
@@ -297,4 +297,46 @@ export async function scanProjectFiles(rootDir) {
297
297
  console.error(`[vibeuniv] Scanned ${foundFiles.length} files (${rootMatches.length} config + ${limitedSource.length} source) in ${rootDir}`);
298
298
  return foundFiles;
299
299
  }
300
+ /**
301
+ * Scan local project and return only teaching-critical files
302
+ * (page.tsx, layout.tsx, API routes, middleware, lib/*, server/*, types/*).
303
+ * Config files excluded. Files truncated to maxContentLength.
304
+ */
305
+ export async function scanTeachingCriticalFiles(rootDir, options = {}) {
306
+ const maxFiles = options.maxFiles ?? 20;
307
+ const maxContentLength = options.maxContentLength ?? 8000;
308
+ // Collect source files only (config files excluded)
309
+ const sourceMatches = await collectFiles(rootDir, SOURCE_PATTERNS, IGNORE_PATTERNS);
310
+ // Filter to teaching-critical files only
311
+ const teachingFiles = sourceMatches.filter((p) => isTeachingCriticalFile(p));
312
+ // Sort by depth (entry points first), then alphabetically
313
+ teachingFiles.sort((a, b) => {
314
+ const depthA = a.split("/").length;
315
+ const depthB = b.split("/").length;
316
+ if (depthA !== depthB)
317
+ return depthA - depthB;
318
+ return a.localeCompare(b);
319
+ });
320
+ const limited = teachingFiles.slice(0, maxFiles);
321
+ const results = [];
322
+ for (const relativePath of limited) {
323
+ const absolutePath = join(rootDir, relativePath);
324
+ try {
325
+ const fileStat = await stat(absolutePath);
326
+ if (!fileStat.isFile() || fileStat.size > MAX_FILE_SIZE)
327
+ continue;
328
+ let content = await readFile(absolutePath, "utf-8");
329
+ if (content.length > maxContentLength) {
330
+ content = content.slice(0, maxContentLength) +
331
+ `\n// ... truncated (original ${content.length} chars)`;
332
+ }
333
+ results.push({ file_path: relativePath, content });
334
+ }
335
+ catch {
336
+ console.error(`[vibeuniv] Warning: Could not read file ${relativePath}`);
337
+ }
338
+ }
339
+ console.error(`[vibeuniv] Scanned ${results.length} teaching-critical files locally`);
340
+ return results;
341
+ }
300
342
  //# sourceMappingURL=file-scanner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-scanner.js","sourceRoot":"","sources":["../../src/lib/file-scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-scanner.js","sourceRoot":"","sources":["../../src/lib/file-scanner.ts"],"names":[],"mappings":"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"}
@@ -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;;;CAMzB,CAAC;AAEF,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAwG/E"}
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,CAiH/E"}
@@ -29,11 +29,20 @@ export function registerAnalyze(server, client) {
29
29
  }
30
30
  output += "\n";
31
31
  }
32
+ const locale = await client.getUserLocale();
32
33
  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์„ ํ˜ธ์ถœํ•˜์„ธ์š”.";
34
+ if (locale === "en") {
35
+ output += "๐Ÿ“š Next step: Generate a learning curriculum\n";
36
+ output += "Ask the user which difficulty level they prefer:\n";
37
+ output += " - beginner / intermediate / advanced\n";
38
+ output += "After confirming the difficulty, call vibeuniv_generate_curriculum.";
39
+ }
40
+ else {
41
+ output += "๐Ÿ“š ๋‹ค์Œ ๋‹จ๊ณ„: ํ•™์Šต ์ปค๋ฆฌํ˜๋Ÿผ ์ƒ์„ฑ\n";
42
+ output += "์‚ฌ์šฉ์ž์—๊ฒŒ ์›ํ•˜๋Š” ๋‚œ์ด๋„๋ฅผ ๋ฌผ์–ด๋ณด์„ธ์š”:\n";
43
+ output += " - beginner (์ดˆ๊ธ‰) / intermediate (์ค‘๊ธ‰) / advanced (๊ณ ๊ธ‰)\n";
44
+ output += "๋‚œ์ด๋„๋ฅผ ํ™•์ธํ•œ ํ›„ vibeuniv_generate_curriculum์„ ํ˜ธ์ถœํ•˜์„ธ์š”.";
45
+ }
37
46
  return {
38
47
  content: [{ type: "text", text: output }],
39
48
  };
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/tools/analyze.ts"],"names":[],"mappings":"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"}
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,CA2EhF"}
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,CAuFhF"}