@vibeuniv/mcp-server 0.3.6 → 0.3.8

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/README.md CHANGED
@@ -1,47 +1,46 @@
1
- # @vibestack/mcp-server
1
+ # @vibeuniv/mcp-server
2
2
 
3
- VibeStack MCP Server - Sync your vibe-coded projects for tech stack analysis and learning.
3
+ VibeUniv MCP Server Sync your vibe-coded projects for tech stack analysis and personalized learning.
4
4
 
5
- ## What is VibeStack?
5
+ ## What is VibeUniv?
6
6
 
7
- VibeStack helps vibe coders understand and learn the tech stacks of projects they've built with AI coding tools. Connect your coding environment to VibeStack and get personalized learning paths based on your actual projects.
7
+ VibeUniv helps vibe coders understand and learn the tech stacks of projects they've built with AI coding tools. Connect your coding environment to VibeUniv and get personalized learning paths based on your actual projects.
8
8
 
9
- ## Installation
9
+ - **Website:** [vibeuniv.com](https://vibeuniv.com)
10
+ - **API Key:** [vibeuniv.com/settings/api](https://vibeuniv.com/settings/api)
10
11
 
11
- ### Using npx (Recommended)
12
+ ## Quick Start
12
13
 
13
- ```bash
14
- npx @vibestack/mcp-server
15
- ```
14
+ ### 1. Get your API key
16
15
 
17
- ### Global Install
16
+ Sign up at [vibeuniv.com](https://vibeuniv.com) and generate an API key at **Settings > API Keys**.
18
17
 
19
- ```bash
20
- npm install -g @vibestack/mcp-server
21
- vibestack-mcp
22
- ```
18
+ ### 2. Add to your AI tool
23
19
 
24
- ## Configuration
20
+ Choose your tool below and add the configuration.
25
21
 
26
- ### Environment Variables
22
+ ### 3. Restart your AI tool
27
23
 
28
- | Variable | Required | Default | Description |
29
- |----------|----------|---------|-------------|
30
- | `VIBESTACK_API_KEY` | Yes | - | Your VibeStack API key. Get it at [vibestack.io/settings/api](https://vibestack.io/settings/api) |
31
- | `VIBESTACK_API_URL` | No | `https://vibestack.io/api/v1` | API base URL (for self-hosted instances) |
24
+ Fully restart (not just reload) your AI tool after adding the config.
25
+
26
+ ### 4. Start using
27
+
28
+ Say to your AI: **"vibeuniv에 이 프로젝트를 연동해줘"** or **"Sync this project to VibeUniv"**
29
+
30
+ ## Configuration
32
31
 
33
32
  ### Claude Code
34
33
 
35
- Add to your Claude Code MCP settings (`~/.claude/settings.json`):
34
+ Add to `~/.claude.json`:
36
35
 
37
36
  ```json
38
37
  {
39
38
  "mcpServers": {
40
- "vibestack": {
39
+ "vibeuniv": {
41
40
  "command": "npx",
42
- "args": ["-y", "@vibestack/mcp-server"],
41
+ "args": ["-y", "@vibeuniv/mcp-server@latest"],
43
42
  "env": {
44
- "VIBESTACK_API_KEY": "your-api-key-here"
43
+ "VIBEUNIV_API_KEY": "your-api-key-here"
45
44
  }
46
45
  }
47
46
  }
@@ -50,16 +49,16 @@ Add to your Claude Code MCP settings (`~/.claude/settings.json`):
50
49
 
51
50
  ### Cursor
52
51
 
53
- Add to your Cursor MCP settings (`.cursor/mcp.json`):
52
+ Add to `~/.cursor/mcp.json`:
54
53
 
55
54
  ```json
56
55
  {
57
56
  "mcpServers": {
58
- "vibestack": {
57
+ "vibeuniv": {
59
58
  "command": "npx",
60
- "args": ["-y", "@vibestack/mcp-server"],
59
+ "args": ["-y", "@vibeuniv/mcp-server@latest"],
61
60
  "env": {
62
- "VIBESTACK_API_KEY": "your-api-key-here"
61
+ "VIBEUNIV_API_KEY": "your-api-key-here"
63
62
  }
64
63
  }
65
64
  }
@@ -68,16 +67,16 @@ Add to your Cursor MCP settings (`.cursor/mcp.json`):
68
67
 
69
68
  ### Windsurf
70
69
 
71
- Add to your Windsurf MCP settings (`~/.windsurf/mcp.json`):
70
+ Add to `~/.codeium/windsurf/mcp_config.json`:
72
71
 
73
72
  ```json
74
73
  {
75
74
  "mcpServers": {
76
- "vibestack": {
75
+ "vibeuniv": {
77
76
  "command": "npx",
78
- "args": ["-y", "@vibestack/mcp-server"],
77
+ "args": ["-y", "@vibeuniv/mcp-server@latest"],
79
78
  "env": {
80
- "VIBESTACK_API_KEY": "your-api-key-here"
79
+ "VIBEUNIV_API_KEY": "your-api-key-here"
81
80
  }
82
81
  }
83
82
  }
@@ -86,106 +85,140 @@ Add to your Windsurf MCP settings (`~/.windsurf/mcp.json`):
86
85
 
87
86
  ### Cline (VS Code)
88
87
 
89
- Add to Cline MCP settings:
88
+ Open **Cline > MCP Servers > Edit Config** and add:
90
89
 
91
90
  ```json
92
91
  {
93
92
  "mcpServers": {
94
- "vibestack": {
93
+ "vibeuniv": {
95
94
  "command": "npx",
96
- "args": ["-y", "@vibestack/mcp-server"],
95
+ "args": ["-y", "@vibeuniv/mcp-server@latest"],
97
96
  "env": {
98
- "VIBESTACK_API_KEY": "your-api-key-here"
97
+ "VIBEUNIV_API_KEY": "your-api-key-here"
99
98
  }
100
99
  }
101
100
  }
102
101
  }
103
102
  ```
104
103
 
105
- ## Available Tools
106
-
107
- ### vibestack_sync_project
104
+ ### Kimi Code CLI
108
105
 
109
- Sync your current project's tech stack files to VibeStack.
106
+ Add to `~/.kimi/mcp.json`:
110
107
 
111
- ```
112
- Input:
113
- - project_name (optional): Name for the project
114
- - description (optional): Short project description
108
+ ```json
109
+ {
110
+ "mcpServers": {
111
+ "vibeuniv": {
112
+ "command": "npx",
113
+ "args": ["-y", "@vibeuniv/mcp-server@latest"],
114
+ "env": {
115
+ "VIBEUNIV_API_KEY": "your-api-key-here"
116
+ }
117
+ }
118
+ }
119
+ }
115
120
  ```
116
121
 
117
- ### vibestack_upload_files
122
+ ### Gemini CLI
118
123
 
119
- Upload specific files for detailed analysis.
124
+ Add to `~/.gemini/settings.json`:
120
125
 
121
- ```
122
- Input:
123
- - project_id: Your VibeStack project ID
124
- - file_paths: Array of file paths to upload
126
+ ```json
127
+ {
128
+ "mcpServers": {
129
+ "vibeuniv": {
130
+ "command": "npx",
131
+ "args": ["-y", "@vibeuniv/mcp-server@latest"],
132
+ "env": {
133
+ "VIBEUNIV_API_KEY": "your-api-key-here"
134
+ }
135
+ }
136
+ }
137
+ }
125
138
  ```
126
139
 
127
- ### vibestack_analyze
140
+ ### OpenAI Codex
128
141
 
129
- Trigger AI analysis of your project's tech stack.
142
+ Add to `~/.codex/config.toml`:
130
143
 
131
- ```
132
- Input:
133
- - project_id: Your VibeStack project ID
144
+ ```toml
145
+ [mcp_servers.vibeuniv]
146
+ command = "npx"
147
+ args = ["-y", "@vibeuniv/mcp-server@latest"]
148
+
149
+ [mcp_servers.vibeuniv.env]
150
+ VIBEUNIV_API_KEY = "your-api-key-here"
134
151
  ```
135
152
 
136
- ### vibestack_get_learning
153
+ ### Fallback: Global Install
137
154
 
138
- Get personalized learning recommendations based on detected tech stack.
155
+ If `npx` doesn't work (corporate firewalls, etc.):
139
156
 
140
- ```
141
- Input:
142
- - project_id: Your VibeStack project ID
157
+ ```bash
158
+ npm install -g @vibeuniv/mcp-server
143
159
  ```
144
160
 
145
- ### vibestack_log_session
161
+ Then replace `"command": "npx", "args": ["-y", "@vibeuniv/mcp-server@latest"]` with `"command": "vibeuniv-mcp"`.
146
162
 
147
- Log a coding session summary for progress tracking.
163
+ ## Environment Variables
148
164
 
149
- ```
150
- Input:
151
- - project_id: Your VibeStack project ID
152
- - summary: Summary of the coding session
153
- - files_changed (optional): List of changed files
154
- ```
165
+ | Variable | Required | Default | Description |
166
+ |----------|----------|---------|-------------|
167
+ | `VIBEUNIV_API_KEY` | Yes | — | Your VibeUniv API key |
168
+ | `VIBEUNIV_API_URL` | No | `https://vibeuniv.com/api/v1` | API base URL |
155
169
 
156
- ### vibestack_ask_tutor
170
+ > Backward compatibility: `VIBESTACK_API_KEY` and `VIBESTACK_API_URL` still work.
157
171
 
158
- Ask the AI tutor questions about your project's tech stack.
172
+ ## Available Tools (13)
159
173
 
160
- ```
161
- Input:
162
- - project_id: Your VibeStack project ID
163
- - question: Your question about the tech stack
164
- ```
174
+ ### Project Setup
165
175
 
166
- ## Usage Example
176
+ | Tool | Description |
177
+ |------|-------------|
178
+ | `vibeuniv_sync_project` | Sync current project to VibeUniv (auto-detect files) |
179
+ | `vibeuniv_upload_files` | Upload specific files for analysis |
167
180
 
168
- 1. **Sync your project:** Ask your AI assistant to "sync this project to VibeStack"
169
- 2. **Analyze the stack:** "Analyze this project's tech stack on VibeStack"
170
- 3. **Get learning path:** "What should I learn about this project's tech stack?"
171
- 4. **Ask questions:** "Ask VibeStack tutor: How does Next.js App Router work?"
181
+ ### Tech Stack Analysis
172
182
 
173
- ## Development
183
+ | Tool | Description |
184
+ |------|-------------|
185
+ | `vibeuniv_analyze` | Trigger tech stack analysis (returns instructions for local AI) |
186
+ | `vibeuniv_submit_tech_stacks` | Submit locally-analyzed tech stack results |
187
+ | `vibeuniv_submit_analysis` | Submit educational analysis of the project |
174
188
 
175
- ```bash
176
- # Install dependencies
177
- npm install
189
+ ### Learning Curriculum
178
190
 
179
- # Run in development mode
180
- VIBESTACK_API_KEY=your-key npm run dev
191
+ | Tool | Description |
192
+ |------|-------------|
193
+ | `vibeuniv_generate_curriculum` | Generate curriculum structure (Pass 1 — structure only) |
194
+ | `vibeuniv_generate_module_content` | Generate module content (Pass 2 — per-module sections) |
195
+ | `vibeuniv_create_curriculum` | Create a draft curriculum on the server |
196
+ | `vibeuniv_submit_module` | Submit a single module (auto-activates on last module) |
197
+ | `vibeuniv_submit_curriculum` | Submit complete curriculum at once (legacy) |
198
+ | `vibeuniv_get_learning` | Get existing learning path for a project |
181
199
 
182
- # Build
183
- npm run build
200
+ ### AI Tutor & Sessions
201
+
202
+ | Tool | Description |
203
+ |------|-------------|
204
+ | `vibeuniv_ask_tutor` | Ask the AI tutor about your project's tech stack |
205
+ | `vibeuniv_log_session` | Log a coding session summary |
184
206
 
185
- # Test with MCP Inspector
186
- npx @modelcontextprotocol/inspector node dist/index.js
207
+ ## How It Works
208
+
209
+ ```
210
+ User: "커리큘럼 생성해줘"
211
+
212
+ AI → vibeuniv_generate_curriculum → curriculum structure (~2KB)
213
+ AI → vibeuniv_create_curriculum → draft learning path
214
+ AI → vibeuniv_generate_module_content × N → section instructions per module
215
+ AI → vibeuniv_submit_module × N → submit each module (~5KB each)
216
+
217
+ Curriculum auto-activates → Learn at vibeuniv.com
187
218
  ```
188
219
 
220
+ All heavy lifting (content generation) happens locally in your AI tool. The server stores results only — zero server-side LLM cost.
221
+
189
222
  ## Auto-detected Files
190
223
 
191
224
  The file scanner automatically detects:
@@ -195,6 +228,24 @@ The file scanner automatically detects:
195
228
  - **Config:** tsconfig.json, next.config.*, vite.config.*, Dockerfile, etc.
196
229
  - **Documentation:** README.md (first 50 lines)
197
230
 
231
+ ## FAQ
232
+
233
+ ### Does updating the package reset my API key?
234
+
235
+ **No.** Your API key is stored in your tool's config file (e.g., `~/.claude.json`), not in the npm package. Using `npx @vibeuniv/mcp-server@latest` always runs the latest version without touching your config.
236
+
237
+ ### Do I need to update manually?
238
+
239
+ If you use `npx -y @vibeuniv/mcp-server@latest`, updates are **automatic**. If you used `npm install -g`, run the install command again to update.
240
+
241
+ ## Development
242
+
243
+ ```bash
244
+ npm install
245
+ npm run build
246
+ VIBEUNIV_API_KEY=your-key npm run dev
247
+ ```
248
+
198
249
  ## License
199
250
 
200
251
  MIT
package/dist/index.js CHANGED
@@ -15,8 +15,9 @@ import { registerGenerateCurriculum } from "./tools/generate-curriculum.js";
15
15
  import { registerSubmitCurriculum } from "./tools/submit-curriculum.js";
16
16
  import { registerCreateCurriculum } from "./tools/create-curriculum.js";
17
17
  import { registerSubmitModule } from "./tools/submit-module.js";
18
+ import { registerGenerateModuleContent } from "./tools/generate-module-content.js";
18
19
  async function main() {
19
- console.error("[vibeuniv] Starting VibeUniv MCP Server v0.3.6...");
20
+ console.error("[vibeuniv] Starting VibeUniv MCP Server v0.3.8...");
20
21
  const config = loadConfig();
21
22
  const client = new VibeUnivClient(config.apiKey, config.apiUrl);
22
23
  if (config.apiKey) {
@@ -24,7 +25,7 @@ async function main() {
24
25
  }
25
26
  const server = new McpServer({
26
27
  name: "vibeuniv-mcp-server",
27
- version: "0.3.6",
28
+ version: "0.3.8",
28
29
  });
29
30
  registerSyncProject(server, client);
30
31
  registerUploadFiles(server, client);
@@ -38,7 +39,8 @@ async function main() {
38
39
  registerSubmitCurriculum(server, client);
39
40
  registerCreateCurriculum(server, client);
40
41
  registerSubmitModule(server, client);
41
- console.error("[vibeuniv] 12 tools registered");
42
+ registerGenerateModuleContent(server, client);
43
+ console.error("[vibeuniv] 13 tools registered");
42
44
  const transport = new StdioServerTransport();
43
45
  await server.connect(transport);
44
46
  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;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAEhE,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;IAEnE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAEhE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,2CAA2C,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErC,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAEhD,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAC1D,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -31,7 +31,7 @@ export class VibeUnivClient {
31
31
  const headers = {
32
32
  Authorization: `Bearer ${this.apiKey}`,
33
33
  "Content-Type": "application/json",
34
- "User-Agent": "vibeuniv-mcp-server/0.3.6",
34
+ "User-Agent": "vibeuniv-mcp-server/0.3.8",
35
35
  };
36
36
  const response = await fetch(url, {
37
37
  method,
@@ -1,11 +1,24 @@
1
- import type { ConceptHintItem, EducationalAnalysisData, TechStackItem } from "../types.js";
1
+ import type { TechStackItem, ConceptHintItem, EducationalAnalysisData, CurriculumContext } from "../types.js";
2
+ export type Locale = "ko" | "en";
2
3
  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;
4
+ export declare function formatKBHints(kbHints: Record<string, ConceptHintItem[]>, locale: Locale): string;
5
+ export declare function formatEducationalAnalysis(analysis: EducationalAnalysisData, difficulty: string, locale: Locale): string;
6
+ export declare function buildLevelGuidance(difficulty: string, locale: Locale): string;
6
7
  /**
7
- * Filter KB hints to include only concepts relevant to a specific tech
8
- * and its prerequisite concepts from other techs.
8
+ * Filter KB hints to only include entries relevant to a specific module's tech_name.
9
+ * Also includes hints for prerequisite technologies.
9
10
  */
10
11
  export declare function filterKBHintsForModule(allHints: Record<string, ConceptHintItem[]>, techName: string): Record<string, ConceptHintItem[]>;
12
+ export interface CachedCurriculumData {
13
+ context: CurriculumContext;
14
+ localFiles: Array<{
15
+ file_path: string;
16
+ content: string;
17
+ }>;
18
+ }
19
+ export declare function getCachedCurriculumData(projectId: string): CachedCurriculumData | null;
20
+ export declare function setCachedCurriculumData(projectId: string, context: CurriculumContext, localFiles: Array<{
21
+ file_path: string;
22
+ content: string;
23
+ }>): void;
11
24
  //# sourceMappingURL=curriculum-helpers.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"curriculum-helpers.d.ts","sourceRoot":"","sources":["../../src/lib/curriculum-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAE9G,MAAM,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;AAIjC,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,MAAM,GAAG,MAAM,CA0ChG;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,uBAAuB,EACjC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,MAAM,CAyIR;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CA6C7E;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,CA+BnC;AAID,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,UAAU,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3D;AAID,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAEtF;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,iBAAiB,EAC1B,UAAU,EAAE,KAAK,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,GACxD,IAAI,CAEN"}
@@ -1,4 +1,4 @@
1
- // ─── Shared formatting helpers for curriculum generation ─────────
1
+ // ─── Formatting helpers ─────────────────────────────────────────────
2
2
  export function formatTechStack(t) {
3
3
  return `- **${t.name}**${t.version ? ` v${t.version}` : ""} (${t.category})`;
4
4
  }
@@ -173,7 +173,7 @@ export function buildLevelGuidance(difficulty, locale) {
173
173
  - Translate key code lines into plain English (e.g., \`const x = 5\` → "Put the number 5 in a box called x 📦")
174
174
  - Give friendly nicknames to technical terms: useState→"memory box", props→"delivery package", middleware→"security checkpoint"
175
175
  - concept 40%+, quiz 20%+, practical 15%↓(very easy only)
176
- - explanation 400+ chars, 5-7 sections per module
176
+ - explanation 800+ chars, 7-10 sections per module
177
177
  - Use emojis actively: 🎯summary, 💡tip, ⚠️warning, 👏praise
178
178
  - Tone: like reading a picture book, short sentences, lots of encouragement
179
179
  - estimated_minutes: 20-35 min`
@@ -183,7 +183,7 @@ export function buildLevelGuidance(difficulty, locale) {
183
183
  - 주요 코드 라인에 "우리말 번역" (예: \`const x = 5\` → "x 상자에 숫자 5를 넣어요 📦")
184
184
  - 기술 용어에 한국어 별명: useState→"기억 상자", props→"택배 상자", middleware→"보안 검문소"
185
185
  - concept 40%↑, quiz 20%↑, practical 15%↓(아주 쉬운 것만)
186
- - explanation 400자↑, 모듈당 5-7섹션
186
+ - explanation 800자↑, 모듈당 7-10섹션
187
187
  - 이모지 적극 활용: 🎯한줄정리, 💡팁, ⚠️주의, 👏칭찬
188
188
  - 톤: 그림책 읽어주듯, 짧은 문장, 격려·칭찬 대폭
189
189
  - estimated_minutes: 20-35분`;
@@ -210,34 +210,42 @@ export function buildLevelGuidance(difficulty, locale) {
210
210
  - 엣지 케이스, 내부 동작 원리, 최적화 전략 다루기`;
211
211
  }
212
212
  /**
213
- * Filter KB hints to include only concepts relevant to a specific tech
214
- * and its prerequisite concepts from other techs.
213
+ * Filter KB hints to only include entries relevant to a specific module's tech_name.
214
+ * Also includes hints for prerequisite technologies.
215
215
  */
216
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);
217
+ const filtered = {};
218
+ // Direct match
219
+ if (allHints[techName]) {
220
+ filtered[techName] = allHints[techName];
221
+ }
222
+ // Case-insensitive fallback
223
+ if (!filtered[techName]) {
224
+ for (const [key, hints] of Object.entries(allHints)) {
225
+ if (key.toLowerCase() === techName.toLowerCase()) {
226
+ filtered[techName] = hints;
227
+ break;
228
+ }
228
229
  }
229
230
  }
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;
231
+ // Also include prerequisites referenced by this tech's hints
232
+ const mainHints = filtered[techName] ?? [];
233
+ for (const hint of mainHints) {
234
+ for (const prereq of hint.prerequisite_concepts) {
235
+ for (const [key, hints] of Object.entries(allHints)) {
236
+ if (hints.some((h) => h.concept_key === prereq) && !filtered[key]) {
237
+ filtered[key] = hints;
238
+ }
238
239
  }
239
240
  }
240
241
  }
241
- return result;
242
+ return filtered;
243
+ }
244
+ const curriculumCache = new Map();
245
+ export function getCachedCurriculumData(projectId) {
246
+ return curriculumCache.get(projectId) ?? null;
247
+ }
248
+ export function setCachedCurriculumData(projectId, context, localFiles) {
249
+ curriculumCache.set(projectId, { context, localFiles });
242
250
  }
243
251
  //# sourceMappingURL=curriculum-helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"curriculum-helpers.js","sourceRoot":"","sources":["../../src/lib/curriculum-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"curriculum-helpers.js","sourceRoot":"","sources":["../../src/lib/curriculum-helpers.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;AAItD,eAAO,MAAM,wBAAwB;;;CAMpC,CAAC;AAoPF,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAgZ1F"}
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;AAYtD,eAAO,MAAM,wBAAwB;;;CAMpC,CAAC;AAIF,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI,CAiU1F"}