@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 +141 -90
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/api-client.js +1 -1
- package/dist/lib/curriculum-helpers.d.ts +19 -6
- package/dist/lib/curriculum-helpers.d.ts.map +1 -1
- package/dist/lib/curriculum-helpers.js +33 -25
- package/dist/lib/curriculum-helpers.js.map +1 -1
- package/dist/tools/generate-curriculum.d.ts.map +1 -1
- package/dist/tools/generate-curriculum.js +78 -367
- package/dist/tools/generate-curriculum.js.map +1 -1
- package/dist/tools/generate-module-content.d.ts +7 -0
- package/dist/tools/generate-module-content.d.ts.map +1 -1
- package/dist/tools/generate-module-content.js +69 -43
- package/dist/tools/generate-module-content.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,47 +1,46 @@
|
|
|
1
|
-
# @
|
|
1
|
+
# @vibeuniv/mcp-server
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
VibeUniv MCP Server — Sync your vibe-coded projects for tech stack analysis and personalized learning.
|
|
4
4
|
|
|
5
|
-
## What is
|
|
5
|
+
## What is VibeUniv?
|
|
6
6
|
|
|
7
|
-
|
|
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
|
-
|
|
9
|
+
- **Website:** [vibeuniv.com](https://vibeuniv.com)
|
|
10
|
+
- **API Key:** [vibeuniv.com/settings/api](https://vibeuniv.com/settings/api)
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
## Quick Start
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
npx @vibestack/mcp-server
|
|
15
|
-
```
|
|
14
|
+
### 1. Get your API key
|
|
16
15
|
|
|
17
|
-
|
|
16
|
+
Sign up at [vibeuniv.com](https://vibeuniv.com) and generate an API key at **Settings > API Keys**.
|
|
18
17
|
|
|
19
|
-
|
|
20
|
-
npm install -g @vibestack/mcp-server
|
|
21
|
-
vibestack-mcp
|
|
22
|
-
```
|
|
18
|
+
### 2. Add to your AI tool
|
|
23
19
|
|
|
24
|
-
|
|
20
|
+
Choose your tool below and add the configuration.
|
|
25
21
|
|
|
26
|
-
###
|
|
22
|
+
### 3. Restart your AI tool
|
|
27
23
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
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
|
|
34
|
+
Add to `~/.claude.json`:
|
|
36
35
|
|
|
37
36
|
```json
|
|
38
37
|
{
|
|
39
38
|
"mcpServers": {
|
|
40
|
-
"
|
|
39
|
+
"vibeuniv": {
|
|
41
40
|
"command": "npx",
|
|
42
|
-
"args": ["-y", "@
|
|
41
|
+
"args": ["-y", "@vibeuniv/mcp-server@latest"],
|
|
43
42
|
"env": {
|
|
44
|
-
"
|
|
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
|
|
52
|
+
Add to `~/.cursor/mcp.json`:
|
|
54
53
|
|
|
55
54
|
```json
|
|
56
55
|
{
|
|
57
56
|
"mcpServers": {
|
|
58
|
-
"
|
|
57
|
+
"vibeuniv": {
|
|
59
58
|
"command": "npx",
|
|
60
|
-
"args": ["-y", "@
|
|
59
|
+
"args": ["-y", "@vibeuniv/mcp-server@latest"],
|
|
61
60
|
"env": {
|
|
62
|
-
"
|
|
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
|
|
70
|
+
Add to `~/.codeium/windsurf/mcp_config.json`:
|
|
72
71
|
|
|
73
72
|
```json
|
|
74
73
|
{
|
|
75
74
|
"mcpServers": {
|
|
76
|
-
"
|
|
75
|
+
"vibeuniv": {
|
|
77
76
|
"command": "npx",
|
|
78
|
-
"args": ["-y", "@
|
|
77
|
+
"args": ["-y", "@vibeuniv/mcp-server@latest"],
|
|
79
78
|
"env": {
|
|
80
|
-
"
|
|
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
|
-
|
|
88
|
+
Open **Cline > MCP Servers > Edit Config** and add:
|
|
90
89
|
|
|
91
90
|
```json
|
|
92
91
|
{
|
|
93
92
|
"mcpServers": {
|
|
94
|
-
"
|
|
93
|
+
"vibeuniv": {
|
|
95
94
|
"command": "npx",
|
|
96
|
-
"args": ["-y", "@
|
|
95
|
+
"args": ["-y", "@vibeuniv/mcp-server@latest"],
|
|
97
96
|
"env": {
|
|
98
|
-
"
|
|
97
|
+
"VIBEUNIV_API_KEY": "your-api-key-here"
|
|
99
98
|
}
|
|
100
99
|
}
|
|
101
100
|
}
|
|
102
101
|
}
|
|
103
102
|
```
|
|
104
103
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
### vibestack_sync_project
|
|
104
|
+
### Kimi Code CLI
|
|
108
105
|
|
|
109
|
-
|
|
106
|
+
Add to `~/.kimi/mcp.json`:
|
|
110
107
|
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
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
|
-
###
|
|
122
|
+
### Gemini CLI
|
|
118
123
|
|
|
119
|
-
|
|
124
|
+
Add to `~/.gemini/settings.json`:
|
|
120
125
|
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
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
|
-
###
|
|
140
|
+
### OpenAI Codex
|
|
128
141
|
|
|
129
|
-
|
|
142
|
+
Add to `~/.codex/config.toml`:
|
|
130
143
|
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
|
|
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
|
-
###
|
|
153
|
+
### Fallback: Global Install
|
|
137
154
|
|
|
138
|
-
|
|
155
|
+
If `npx` doesn't work (corporate firewalls, etc.):
|
|
139
156
|
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
- project_id: Your VibeStack project ID
|
|
157
|
+
```bash
|
|
158
|
+
npm install -g @vibeuniv/mcp-server
|
|
143
159
|
```
|
|
144
160
|
|
|
145
|
-
|
|
161
|
+
Then replace `"command": "npx", "args": ["-y", "@vibeuniv/mcp-server@latest"]` with `"command": "vibeuniv-mcp"`.
|
|
146
162
|
|
|
147
|
-
|
|
163
|
+
## Environment Variables
|
|
148
164
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
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
|
-
|
|
170
|
+
> Backward compatibility: `VIBESTACK_API_KEY` and `VIBESTACK_API_URL` still work.
|
|
157
171
|
|
|
158
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
176
|
-
# Install dependencies
|
|
177
|
-
npm install
|
|
189
|
+
### Learning Curriculum
|
|
178
190
|
|
|
179
|
-
|
|
180
|
-
|
|
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
|
-
|
|
183
|
-
|
|
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
|
-
|
|
186
|
-
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/api-client.js
CHANGED
|
@@ -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.
|
|
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,
|
|
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:
|
|
4
|
-
export declare function formatEducationalAnalysis(analysis: EducationalAnalysisData, difficulty: string, locale:
|
|
5
|
-
export declare function buildLevelGuidance(difficulty: string, locale:
|
|
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
|
|
8
|
-
*
|
|
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,
|
|
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
|
-
// ───
|
|
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
|
|
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
|
|
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
|
|
214
|
-
*
|
|
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
|
|
218
|
-
//
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
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
|
-
//
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
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
|
|
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":"
|
|
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;
|
|
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"}
|