@su-record/vibe 2.5.15 → 2.5.17

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 (231) hide show
  1. package/CLAUDE.md +96 -267
  2. package/LICENSE +21 -21
  3. package/README.md +262 -262
  4. package/agents/architect-low.md +41 -41
  5. package/agents/architect-medium.md +59 -59
  6. package/agents/architect.md +80 -80
  7. package/agents/build-error-resolver.md +115 -115
  8. package/agents/compounder.md +261 -261
  9. package/agents/diagrammer.md +178 -178
  10. package/agents/e2e-tester.md +266 -266
  11. package/agents/explorer-low.md +42 -42
  12. package/agents/explorer-medium.md +59 -59
  13. package/agents/explorer.md +48 -48
  14. package/agents/implementer-low.md +43 -43
  15. package/agents/implementer-medium.md +52 -52
  16. package/agents/implementer.md +54 -54
  17. package/agents/refactor-cleaner.md +143 -143
  18. package/agents/research/best-practices-agent.md +199 -189
  19. package/agents/research/codebase-patterns-agent.md +157 -147
  20. package/agents/research/framework-docs-agent.md +188 -178
  21. package/agents/research/security-advisory-agent.md +213 -203
  22. package/agents/review/architecture-reviewer.md +107 -107
  23. package/agents/review/complexity-reviewer.md +116 -116
  24. package/agents/review/data-integrity-reviewer.md +88 -88
  25. package/agents/review/git-history-reviewer.md +103 -103
  26. package/agents/review/performance-reviewer.md +86 -86
  27. package/agents/review/python-reviewer.md +150 -150
  28. package/agents/review/rails-reviewer.md +139 -139
  29. package/agents/review/react-reviewer.md +144 -144
  30. package/agents/review/security-reviewer.md +80 -80
  31. package/agents/review/simplicity-reviewer.md +140 -140
  32. package/agents/review/test-coverage-reviewer.md +116 -116
  33. package/agents/review/typescript-reviewer.md +127 -127
  34. package/agents/searcher.md +54 -54
  35. package/agents/simplifier.md +120 -120
  36. package/agents/tester.md +49 -49
  37. package/agents/ui-previewer.md +129 -129
  38. package/commands/vibe.analyze.md +356 -356
  39. package/commands/vibe.reason.md +329 -329
  40. package/commands/vibe.review.md +326 -326
  41. package/commands/vibe.run.md +1117 -1117
  42. package/commands/vibe.spec.md +1066 -1058
  43. package/commands/vibe.utils.md +353 -353
  44. package/commands/vibe.verify.md +375 -375
  45. package/dist/cli/collaborator.js +52 -52
  46. package/dist/cli/detect.js +32 -32
  47. package/dist/cli/index.d.ts.map +1 -1
  48. package/dist/cli/index.js +109 -108
  49. package/dist/cli/index.js.map +1 -1
  50. package/dist/cli/llm.js +144 -144
  51. package/dist/lib/DeepInit.js +24 -24
  52. package/dist/lib/FrameworkDetector.d.ts +56 -0
  53. package/dist/lib/FrameworkDetector.d.ts.map +1 -0
  54. package/dist/lib/FrameworkDetector.js +287 -0
  55. package/dist/lib/FrameworkDetector.js.map +1 -0
  56. package/dist/lib/IterationTracker.js +11 -11
  57. package/dist/lib/PythonParser.js +108 -108
  58. package/dist/lib/RuleBuildSystem.d.ts +117 -0
  59. package/dist/lib/RuleBuildSystem.d.ts.map +1 -0
  60. package/dist/lib/RuleBuildSystem.js +402 -0
  61. package/dist/lib/RuleBuildSystem.js.map +1 -0
  62. package/dist/lib/SkillFrontmatter.js +28 -28
  63. package/dist/lib/SkillQualityGate.js +9 -9
  64. package/dist/lib/SkillRepository.js +159 -159
  65. package/dist/lib/UltraQA.js +77 -77
  66. package/dist/lib/gpt-api.js +4 -4
  67. package/dist/lib/memory/KnowledgeGraph.js +4 -4
  68. package/dist/lib/memory/MemorySearch.js +20 -20
  69. package/dist/lib/memory/MemoryStorage.js +64 -64
  70. package/dist/orchestrator/AgentManager.js +12 -12
  71. package/dist/orchestrator/MultiLlmResearch.js +8 -8
  72. package/dist/orchestrator/SmartRouter.js +11 -11
  73. package/dist/orchestrator/parallelResearch.js +24 -24
  74. package/dist/tools/convention/analyzeComplexity.test.js +115 -115
  75. package/dist/tools/convention/validateCodeQuality.test.js +104 -104
  76. package/dist/tools/index.d.ts +4 -0
  77. package/dist/tools/index.d.ts.map +1 -1
  78. package/dist/tools/index.js +4 -0
  79. package/dist/tools/index.js.map +1 -1
  80. package/hooks/hooks.json +222 -222
  81. package/hooks/scripts/code-check.js +22 -22
  82. package/hooks/scripts/code-review.js +22 -22
  83. package/hooks/scripts/complexity.js +22 -22
  84. package/hooks/scripts/compound.js +23 -23
  85. package/hooks/scripts/context-save.js +33 -33
  86. package/hooks/scripts/generate-brand-assets.js +472 -472
  87. package/hooks/scripts/hud-multiline.js +262 -262
  88. package/hooks/scripts/hud-status.js +291 -291
  89. package/hooks/scripts/keyword-detector.js +214 -214
  90. package/hooks/scripts/llm-orchestrate.js +171 -171
  91. package/hooks/scripts/post-edit.js +97 -97
  92. package/hooks/scripts/post-tool-verify.js +210 -210
  93. package/hooks/scripts/pre-tool-guard.js +125 -125
  94. package/hooks/scripts/recall.js +22 -22
  95. package/hooks/scripts/session-start.js +30 -30
  96. package/hooks/scripts/skill-injector.js +191 -191
  97. package/hooks/scripts/utils.js +97 -97
  98. package/languages/csharp-unity.md +515 -515
  99. package/languages/gdscript-godot.md +470 -470
  100. package/languages/ruby-rails.md +489 -489
  101. package/languages/typescript-angular.md +433 -433
  102. package/languages/typescript-astro.md +416 -416
  103. package/languages/typescript-electron.md +406 -406
  104. package/languages/typescript-nestjs.md +524 -524
  105. package/languages/typescript-svelte.md +407 -407
  106. package/languages/typescript-tauri.md +365 -365
  107. package/package.json +83 -83
  108. package/skills/brand-assets.md +141 -141
  109. package/skills/commerce-patterns.md +361 -361
  110. package/skills/context7-usage.md +102 -102
  111. package/skills/e2e-commerce.md +304 -304
  112. package/skills/frontend-design.md +92 -92
  113. package/skills/git-worktree.md +181 -181
  114. package/skills/parallel-research.md +77 -77
  115. package/skills/priority-todos.md +239 -239
  116. package/skills/seo-checklist.md +244 -244
  117. package/skills/tool-fallback.md +190 -190
  118. package/skills/vibe-capabilities.md +161 -161
  119. package/vibe/constitution.md +227 -227
  120. package/vibe/rules/core/communication-guide.md +98 -98
  121. package/vibe/rules/core/development-philosophy.md +52 -52
  122. package/vibe/rules/core/quick-start.md +102 -102
  123. package/vibe/rules/quality/bdd-contract-testing.md +393 -393
  124. package/vibe/rules/quality/checklist.md +276 -276
  125. package/vibe/rules/quality/testing-strategy.md +440 -440
  126. package/vibe/rules/standards/anti-patterns.md +541 -541
  127. package/vibe/rules/standards/code-structure.md +291 -291
  128. package/vibe/rules/standards/complexity-metrics.md +313 -313
  129. package/vibe/rules/standards/naming-conventions.md +198 -198
  130. package/vibe/setup.sh +31 -31
  131. package/vibe/templates/constitution-template.md +252 -252
  132. package/vibe/templates/contract-backend-template.md +526 -526
  133. package/vibe/templates/contract-frontend-template.md +599 -599
  134. package/vibe/templates/feature-template.md +96 -96
  135. package/vibe/templates/spec-template.md +221 -221
  136. package/dist/cli/mcp.d.ts +0 -49
  137. package/dist/cli/mcp.d.ts.map +0 -1
  138. package/dist/cli/mcp.js +0 -169
  139. package/dist/cli/mcp.js.map +0 -1
  140. package/dist/lib/gemini-mcp.d.ts +0 -10
  141. package/dist/lib/gemini-mcp.d.ts.map +0 -1
  142. package/dist/lib/gemini-mcp.js +0 -353
  143. package/dist/lib/gemini-mcp.js.map +0 -1
  144. package/dist/lib/gpt-mcp.d.ts +0 -10
  145. package/dist/lib/gpt-mcp.d.ts.map +0 -1
  146. package/dist/lib/gpt-mcp.js +0 -352
  147. package/dist/lib/gpt-mcp.js.map +0 -1
  148. package/dist/tools/analytics/getUsageAnalytics.d.ts +0 -10
  149. package/dist/tools/analytics/getUsageAnalytics.d.ts.map +0 -1
  150. package/dist/tools/analytics/getUsageAnalytics.js +0 -246
  151. package/dist/tools/analytics/getUsageAnalytics.js.map +0 -1
  152. package/dist/tools/analytics/index.d.ts +0 -5
  153. package/dist/tools/analytics/index.d.ts.map +0 -1
  154. package/dist/tools/analytics/index.js +0 -5
  155. package/dist/tools/analytics/index.js.map +0 -1
  156. package/dist/tools/convention/getCodingGuide.d.ts +0 -7
  157. package/dist/tools/convention/getCodingGuide.d.ts.map +0 -1
  158. package/dist/tools/convention/getCodingGuide.js +0 -69
  159. package/dist/tools/convention/getCodingGuide.js.map +0 -1
  160. package/dist/tools/planning/analyzeRequirements.d.ts +0 -9
  161. package/dist/tools/planning/analyzeRequirements.d.ts.map +0 -1
  162. package/dist/tools/planning/analyzeRequirements.js +0 -171
  163. package/dist/tools/planning/analyzeRequirements.js.map +0 -1
  164. package/dist/tools/planning/createUserStories.d.ts +0 -9
  165. package/dist/tools/planning/createUserStories.d.ts.map +0 -1
  166. package/dist/tools/planning/createUserStories.js +0 -124
  167. package/dist/tools/planning/createUserStories.js.map +0 -1
  168. package/dist/tools/planning/featureRoadmap.d.ts +0 -10
  169. package/dist/tools/planning/featureRoadmap.d.ts.map +0 -1
  170. package/dist/tools/planning/featureRoadmap.js +0 -207
  171. package/dist/tools/planning/featureRoadmap.js.map +0 -1
  172. package/dist/tools/planning/generatePrd.d.ts +0 -11
  173. package/dist/tools/planning/generatePrd.d.ts.map +0 -1
  174. package/dist/tools/planning/generatePrd.js +0 -161
  175. package/dist/tools/planning/generatePrd.js.map +0 -1
  176. package/dist/tools/planning/index.d.ts +0 -8
  177. package/dist/tools/planning/index.d.ts.map +0 -1
  178. package/dist/tools/planning/index.js +0 -8
  179. package/dist/tools/planning/index.js.map +0 -1
  180. package/dist/tools/prompt/analyzePrompt.d.ts +0 -7
  181. package/dist/tools/prompt/analyzePrompt.d.ts.map +0 -1
  182. package/dist/tools/prompt/analyzePrompt.js +0 -150
  183. package/dist/tools/prompt/analyzePrompt.js.map +0 -1
  184. package/dist/tools/prompt/enhancePrompt.d.ts +0 -8
  185. package/dist/tools/prompt/enhancePrompt.d.ts.map +0 -1
  186. package/dist/tools/prompt/enhancePrompt.js +0 -110
  187. package/dist/tools/prompt/enhancePrompt.js.map +0 -1
  188. package/dist/tools/prompt/enhancePromptGemini.d.ts +0 -8
  189. package/dist/tools/prompt/enhancePromptGemini.d.ts.map +0 -1
  190. package/dist/tools/prompt/enhancePromptGemini.js +0 -332
  191. package/dist/tools/prompt/enhancePromptGemini.js.map +0 -1
  192. package/dist/tools/prompt/index.d.ts +0 -7
  193. package/dist/tools/prompt/index.d.ts.map +0 -1
  194. package/dist/tools/prompt/index.js +0 -7
  195. package/dist/tools/prompt/index.js.map +0 -1
  196. package/dist/tools/reasoning/applyReasoningFramework.d.ts +0 -8
  197. package/dist/tools/reasoning/applyReasoningFramework.d.ts.map +0 -1
  198. package/dist/tools/reasoning/applyReasoningFramework.js +0 -266
  199. package/dist/tools/reasoning/applyReasoningFramework.js.map +0 -1
  200. package/dist/tools/reasoning/index.d.ts +0 -5
  201. package/dist/tools/reasoning/index.d.ts.map +0 -1
  202. package/dist/tools/reasoning/index.js +0 -5
  203. package/dist/tools/reasoning/index.js.map +0 -1
  204. package/dist/tools/thinking/analyzeProblem.d.ts +0 -7
  205. package/dist/tools/thinking/analyzeProblem.d.ts.map +0 -1
  206. package/dist/tools/thinking/analyzeProblem.js +0 -55
  207. package/dist/tools/thinking/analyzeProblem.js.map +0 -1
  208. package/dist/tools/thinking/breakDownProblem.d.ts +0 -8
  209. package/dist/tools/thinking/breakDownProblem.d.ts.map +0 -1
  210. package/dist/tools/thinking/breakDownProblem.js +0 -145
  211. package/dist/tools/thinking/breakDownProblem.js.map +0 -1
  212. package/dist/tools/thinking/createThinkingChain.d.ts +0 -7
  213. package/dist/tools/thinking/createThinkingChain.d.ts.map +0 -1
  214. package/dist/tools/thinking/createThinkingChain.js +0 -44
  215. package/dist/tools/thinking/createThinkingChain.js.map +0 -1
  216. package/dist/tools/thinking/formatAsPlan.d.ts +0 -9
  217. package/dist/tools/thinking/formatAsPlan.d.ts.map +0 -1
  218. package/dist/tools/thinking/formatAsPlan.js +0 -78
  219. package/dist/tools/thinking/formatAsPlan.js.map +0 -1
  220. package/dist/tools/thinking/index.d.ts +0 -10
  221. package/dist/tools/thinking/index.d.ts.map +0 -1
  222. package/dist/tools/thinking/index.js +0 -10
  223. package/dist/tools/thinking/index.js.map +0 -1
  224. package/dist/tools/thinking/stepByStepAnalysis.d.ts +0 -8
  225. package/dist/tools/thinking/stepByStepAnalysis.d.ts.map +0 -1
  226. package/dist/tools/thinking/stepByStepAnalysis.js +0 -63
  227. package/dist/tools/thinking/stepByStepAnalysis.js.map +0 -1
  228. package/dist/tools/thinking/thinkAloudProcess.d.ts +0 -8
  229. package/dist/tools/thinking/thinkAloudProcess.d.ts.map +0 -1
  230. package/dist/tools/thinking/thinkAloudProcess.js +0 -80
  231. package/dist/tools/thinking/thinkAloudProcess.js.map +0 -1
package/dist/cli/mcp.js DELETED
@@ -1,169 +0,0 @@
1
- /**
2
- * MCP 서버 관리 함수
3
- */
4
- import path from 'path';
5
- import fs from 'fs';
6
- import os from 'os';
7
- import { execSync } from 'child_process';
8
- // Claude CLI 경로 캐시
9
- let _claudePath = null;
10
- /**
11
- * Claude CLI 경로 찾기 (Windows/macOS/Linux 지원)
12
- */
13
- export function getClaudePath() {
14
- // 1. PATH에서 'claude' 찾기
15
- try {
16
- execSync('claude --version', { stdio: 'pipe' });
17
- return 'claude';
18
- }
19
- catch { /* ignore: optional operation */
20
- // PATH에 없으면 플랫폼별 기본 경로 확인
21
- }
22
- // 2. 플랫폼별 네이티브 설치 경로 확인
23
- if (process.platform === 'win32') {
24
- const possiblePaths = [
25
- path.join(os.homedir(), '.local', 'bin', 'claude.exe'),
26
- path.join(process.env.APPDATA || '', 'npm', 'claude.cmd'),
27
- path.join(os.homedir(), 'AppData', 'Local', 'Programs', '@anthropic', 'claude-code', 'claude.exe'),
28
- path.join(os.homedir(), 'AppData', 'Local', 'AnthropicClaude', 'claude.exe'),
29
- path.join(os.homedir(), '.claude', 'local', 'claude.exe'),
30
- 'C:\\Program Files\\Anthropic\\Claude\\claude.exe',
31
- 'C:\\Program Files (x86)\\Anthropic\\Claude\\claude.exe',
32
- ];
33
- for (const p of possiblePaths) {
34
- if (p && fs.existsSync(p)) {
35
- return `"${p}"`;
36
- }
37
- }
38
- }
39
- else {
40
- const possiblePaths = [
41
- path.join(os.homedir(), '.local', 'bin', 'claude'),
42
- '/usr/local/bin/claude',
43
- '/usr/bin/claude',
44
- '/opt/homebrew/bin/claude',
45
- ];
46
- for (const p of possiblePaths) {
47
- if (fs.existsSync(p)) {
48
- return p;
49
- }
50
- }
51
- }
52
- return 'claude';
53
- }
54
- /**
55
- * Claude CLI 명령어 반환 (캐시됨)
56
- */
57
- export function claudeCmd() {
58
- if (_claudePath === null) {
59
- _claudePath = getClaudePath();
60
- }
61
- return _claudePath;
62
- }
63
- /**
64
- * Claude CLI가 사용 가능한지 확인
65
- */
66
- export function isClaudeCliAvailable() {
67
- const cmd = claudeCmd();
68
- try {
69
- execSync(`${cmd} --version`, { stdio: 'pipe' });
70
- return true;
71
- }
72
- catch { /* ignore: optional operation */
73
- return false;
74
- }
75
- }
76
- /**
77
- * Claude 설정 파일 경로
78
- */
79
- export function getClaudeSettingsPath() {
80
- return path.join(os.homedir(), '.claude', 'settings.json');
81
- }
82
- /**
83
- * Claude 설정 파일 읽기
84
- */
85
- export function readClaudeSettings() {
86
- const settingsPath = getClaudeSettingsPath();
87
- if (fs.existsSync(settingsPath)) {
88
- try {
89
- return JSON.parse(fs.readFileSync(settingsPath, 'utf-8'));
90
- }
91
- catch { /* ignore: optional operation */
92
- return {};
93
- }
94
- }
95
- return {};
96
- }
97
- /**
98
- * Claude 설정 파일 쓰기
99
- */
100
- export function writeClaudeSettings(settings) {
101
- const settingsPath = getClaudeSettingsPath();
102
- const dir = path.dirname(settingsPath);
103
- if (!fs.existsSync(dir)) {
104
- fs.mkdirSync(dir, { recursive: true });
105
- }
106
- fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2));
107
- }
108
- /**
109
- * MCP 서버 추가 (설정 파일 직접 수정)
110
- */
111
- export function addMcpServer(name, config) {
112
- const settings = readClaudeSettings();
113
- if (!settings.mcpServers) {
114
- settings.mcpServers = {};
115
- }
116
- settings.mcpServers[name] = config;
117
- writeClaudeSettings(settings);
118
- }
119
- /**
120
- * MCP 서버 제거
121
- */
122
- export function removeMcpServer(name) {
123
- const settings = readClaudeSettings();
124
- if (settings.mcpServers && settings.mcpServers[name]) {
125
- delete settings.mcpServers[name];
126
- writeClaudeSettings(settings);
127
- }
128
- }
129
- /**
130
- * MCP 서버 등록 (CLI 우선, 실패시 직접 수정)
131
- */
132
- export function registerMcp(name, config) {
133
- const cmd = claudeCmd();
134
- // CLI로 먼저 시도
135
- try {
136
- const argsStr = config.args.map(a => `"${a}"`).join(' ');
137
- execSync(`${cmd} mcp add ${name} ${config.command} ${argsStr}`, {
138
- stdio: 'pipe'
139
- });
140
- return;
141
- }
142
- catch { /* ignore: optional operation */
143
- // CLI 실패시 직접 설정 파일 수정
144
- }
145
- // 설정 파일 직접 수정
146
- addMcpServer(name, config);
147
- }
148
- /**
149
- * MCP 서버 등록 해제
150
- */
151
- export function unregisterMcp(name) {
152
- const cmd = claudeCmd();
153
- try {
154
- execSync(`${cmd} mcp remove ${name}`, { stdio: 'pipe' });
155
- }
156
- catch { /* ignore: optional operation */
157
- // 실패해도 무시
158
- }
159
- // 설정 파일에서도 제거
160
- removeMcpServer(name);
161
- }
162
- /**
163
- * MCP 서버가 등록되어 있는지 확인
164
- */
165
- export function isMcpRegistered(name) {
166
- const settings = readClaudeSettings();
167
- return !!settings.mcpServers?.[name];
168
- }
169
- //# sourceMappingURL=mcp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/cli/mcp.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * vibe-gemini MCP Server
4
- * Gemini API를 MCP 도구로 제공하여 Claude Code에서 서브에이전트로 활용
5
- *
6
- * 사용법:
7
- * claude mcp add vibe-gemini node /path/to/vibe/dist/lib/gemini-mcp.js -s user
8
- */
9
- export {};
10
- //# sourceMappingURL=gemini-mcp.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gemini-mcp.d.ts","sourceRoot":"","sources":["../../src/lib/gemini-mcp.ts"],"names":[],"mappings":";AACA;;;;;;GAMG"}
@@ -1,353 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * vibe-gemini MCP Server
4
- * Gemini API를 MCP 도구로 제공하여 Claude Code에서 서브에이전트로 활용
5
- *
6
- * 사용법:
7
- * claude mcp add vibe-gemini node /path/to/vibe/dist/lib/gemini-mcp.js -s user
8
- */
9
- import { Server } from '@modelcontextprotocol/sdk/server/index.js';
10
- import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
11
- import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
12
- // Gemini API 모듈 로드
13
- import * as geminiApi from './gemini-api.js';
14
- import * as geminiStorage from './gemini-storage.js';
15
- // MCP 서버 생성
16
- const server = new Server({
17
- name: 'vibe-gemini',
18
- version: '1.0.0',
19
- }, {
20
- capabilities: {
21
- tools: {},
22
- },
23
- });
24
- // 도구 목록 정의
25
- server.setRequestHandler(ListToolsRequestSchema, async () => {
26
- return {
27
- tools: [
28
- {
29
- name: 'gemini_chat',
30
- description: 'Gemini 모델에 질문하기. 코드 분석, UI/UX 검토, 아키텍처 상담 등에 활용. 서브에이전트로 사용 가능.',
31
- inputSchema: {
32
- type: 'object',
33
- properties: {
34
- prompt: {
35
- type: 'string',
36
- description: '질문 또는 요청 내용',
37
- },
38
- model: {
39
- type: 'string',
40
- description: '사용할 모델 (gemini-2.5-flash, gemini-3-flash, gemini-3-pro)',
41
- default: 'gemini-2.5-flash',
42
- },
43
- systemPrompt: {
44
- type: 'string',
45
- description: '시스템 프롬프트 (선택)',
46
- },
47
- maxTokens: {
48
- type: 'number',
49
- description: '최대 토큰 수',
50
- default: 4096,
51
- },
52
- temperature: {
53
- type: 'number',
54
- description: '온도 (0-1)',
55
- default: 0.7,
56
- },
57
- },
58
- required: ['prompt'],
59
- },
60
- },
61
- {
62
- name: 'gemini_analyze_code',
63
- description: '코드 분석 요청. Gemini가 코드를 분석하고 개선점을 제안.',
64
- inputSchema: {
65
- type: 'object',
66
- properties: {
67
- code: {
68
- type: 'string',
69
- description: '분석할 코드',
70
- },
71
- language: {
72
- type: 'string',
73
- description: '프로그래밍 언어',
74
- },
75
- focus: {
76
- type: 'string',
77
- description: '분석 초점 (performance, security, readability, all)',
78
- default: 'all',
79
- },
80
- },
81
- required: ['code'],
82
- },
83
- },
84
- {
85
- name: 'gemini_review_ui',
86
- description: 'UI/UX 리뷰 요청. Gemini가 UI 설계를 분석하고 피드백 제공.',
87
- inputSchema: {
88
- type: 'object',
89
- properties: {
90
- description: {
91
- type: 'string',
92
- description: 'UI 설명 또는 구조',
93
- },
94
- context: {
95
- type: 'string',
96
- description: '프로젝트 컨텍스트 (선택)',
97
- },
98
- },
99
- required: ['description'],
100
- },
101
- },
102
- {
103
- name: 'gemini_quick_ask',
104
- description: '빠른 질문. 코드 탐색이나 간단한 질문에 최적화 (낮은 temperature, 짧은 응답).',
105
- inputSchema: {
106
- type: 'object',
107
- properties: {
108
- prompt: {
109
- type: 'string',
110
- description: '질문 내용',
111
- },
112
- },
113
- required: ['prompt'],
114
- },
115
- },
116
- {
117
- name: 'gemini_auth_status',
118
- description: 'Gemini OAuth 인증 상태 확인',
119
- inputSchema: {
120
- type: 'object',
121
- properties: {},
122
- },
123
- },
124
- {
125
- name: 'gemini_list_models',
126
- description: '사용 가능한 Gemini 모델 목록',
127
- inputSchema: {
128
- type: 'object',
129
- properties: {},
130
- },
131
- },
132
- ],
133
- };
134
- });
135
- // 도구 실행 핸들러
136
- server.setRequestHandler(CallToolRequestSchema, async (request) => {
137
- const { name, arguments: args } = request.params;
138
- try {
139
- switch (name) {
140
- case 'gemini_chat': {
141
- const { prompt, model, systemPrompt, maxTokens, temperature } = args;
142
- const result = await geminiApi.chat({
143
- model: model || 'gemini-2.5-flash',
144
- messages: [{ role: 'user', content: prompt }],
145
- systemPrompt: systemPrompt || '',
146
- maxTokens: maxTokens || 4096,
147
- temperature: temperature || 0.7,
148
- });
149
- return {
150
- content: [
151
- {
152
- type: 'text',
153
- text: JSON.stringify({
154
- response: result.content,
155
- model: result.model,
156
- usage: result.usage,
157
- }, null, 2),
158
- },
159
- ],
160
- };
161
- }
162
- case 'gemini_analyze_code': {
163
- const { code, language, focus } = args;
164
- const sysPrompt = `You are an expert code reviewer. Analyze the given ${language || 'code'} and provide detailed feedback focusing on: ${focus || 'all aspects including performance, security, readability, and best practices'}.
165
-
166
- Respond in Korean and provide:
167
- 1. 코드 요약
168
- 2. 주요 이슈 (있다면)
169
- 3. 개선 제안
170
- 4. 전체 품질 점수 (1-10)`;
171
- const result = await geminiApi.chat({
172
- model: 'gemini-2.5-flash',
173
- messages: [{ role: 'user', content: code }],
174
- systemPrompt: sysPrompt,
175
- maxTokens: 4096,
176
- temperature: 0.3,
177
- });
178
- return {
179
- content: [
180
- {
181
- type: 'text',
182
- text: result.content,
183
- },
184
- ],
185
- };
186
- }
187
- case 'gemini_review_ui': {
188
- const { description, context } = args;
189
- const sysPrompt = `You are a UI/UX expert. Review the given UI description and provide detailed feedback.
190
-
191
- ${context ? `Project context: ${context}` : ''}
192
-
193
- Respond in Korean and provide:
194
- 1. UI 구조 평가
195
- 2. UX 개선점
196
- 3. 접근성 체크
197
- 4. 모범 사례 비교
198
- 5. 구체적인 개선 제안`;
199
- const result = await geminiApi.chat({
200
- model: 'gemini-2.5-flash',
201
- messages: [{ role: 'user', content: description }],
202
- systemPrompt: sysPrompt,
203
- maxTokens: 4096,
204
- temperature: 0.5,
205
- });
206
- return {
207
- content: [
208
- {
209
- type: 'text',
210
- text: result.content,
211
- },
212
- ],
213
- };
214
- }
215
- case 'gemini_quick_ask': {
216
- const { prompt } = args;
217
- const response = await geminiApi.quickAsk(prompt);
218
- return {
219
- content: [
220
- {
221
- type: 'text',
222
- text: response,
223
- },
224
- ],
225
- };
226
- }
227
- case 'gemini_auth_status': {
228
- try {
229
- const account = geminiStorage.getActiveAccount();
230
- if (account) {
231
- const isExpired = geminiStorage.isTokenExpired(account);
232
- return {
233
- content: [
234
- {
235
- type: 'text',
236
- text: JSON.stringify({
237
- authenticated: true,
238
- email: account.email,
239
- projectId: account.projectId || 'default',
240
- tokenValid: !isExpired,
241
- expires: new Date(account.expires).toISOString(),
242
- }, null, 2),
243
- },
244
- ],
245
- };
246
- }
247
- else {
248
- return {
249
- content: [
250
- {
251
- type: 'text',
252
- text: JSON.stringify({
253
- authenticated: false,
254
- message: 'vibe gemini --auth 명령으로 인증하세요.',
255
- }, null, 2),
256
- },
257
- ],
258
- };
259
- }
260
- }
261
- catch (error) {
262
- return {
263
- content: [
264
- {
265
- type: 'text',
266
- text: JSON.stringify({
267
- authenticated: false,
268
- error: error.message,
269
- }, null, 2),
270
- },
271
- ],
272
- };
273
- }
274
- }
275
- case 'gemini_list_models': {
276
- const models = geminiApi.getAvailableModels();
277
- return {
278
- content: [
279
- {
280
- type: 'text',
281
- text: JSON.stringify(models, null, 2),
282
- },
283
- ],
284
- };
285
- }
286
- default:
287
- return {
288
- content: [
289
- {
290
- type: 'text',
291
- text: `Unknown tool: ${name}`,
292
- },
293
- ],
294
- isError: true,
295
- };
296
- }
297
- }
298
- catch (error) {
299
- const errorMessage = error.message;
300
- // 429 Rate Limit 에러 시 Claude fallback 안내
301
- if (errorMessage.includes('429') || errorMessage.includes('RESOURCE_EXHAUSTED')) {
302
- return {
303
- content: [
304
- {
305
- type: 'text',
306
- text: JSON.stringify({
307
- status: 'fallback',
308
- reason: 'rate_limit',
309
- message: 'Gemini API 할당량 초과. Claude가 직접 처리해주세요.',
310
- original_error: errorMessage,
311
- }, null, 2),
312
- },
313
- ],
314
- isError: false, // fallback은 에러가 아님
315
- };
316
- }
317
- // 인증 에러 시 fallback 안내
318
- if (errorMessage.includes('401') || errorMessage.includes('403') || errorMessage.includes('invalid_grant')) {
319
- return {
320
- content: [
321
- {
322
- type: 'text',
323
- text: JSON.stringify({
324
- status: 'fallback',
325
- reason: 'auth_error',
326
- message: 'Gemini 인증 만료. Claude가 직접 처리해주세요. (vibe gemini --auth로 재인증 가능)',
327
- original_error: errorMessage,
328
- }, null, 2),
329
- },
330
- ],
331
- isError: false,
332
- };
333
- }
334
- // 기타 에러
335
- return {
336
- content: [
337
- {
338
- type: 'text',
339
- text: `Error: ${errorMessage}`,
340
- },
341
- ],
342
- isError: true,
343
- };
344
- }
345
- });
346
- // 서버 시작
347
- async function main() {
348
- const transport = new StdioServerTransport();
349
- await server.connect(transport);
350
- console.error('vibe-gemini MCP server running');
351
- }
352
- main().catch(console.error);
353
- //# sourceMappingURL=gemini-mcp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gemini-mcp.js","sourceRoot":"","sources":["../../src/lib/gemini-mcp.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * vibe-gpt MCP Server
4
- * GPT API를 MCP 도구로 제공하여 Claude Code에서 서브에이전트로 활용
5
- *
6
- * 사용법:
7
- * claude mcp add vibe-gpt node /path/to/vibe/dist/lib/gpt-mcp.js -s user
8
- */
9
- export {};
10
- //# sourceMappingURL=gpt-mcp.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gpt-mcp.d.ts","sourceRoot":"","sources":["../../src/lib/gpt-mcp.ts"],"names":[],"mappings":";AACA;;;;;;GAMG"}