@su-record/vibe 2.6.26 → 2.6.28

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 (287) hide show
  1. package/CLAUDE.md +202 -153
  2. package/LICENSE +21 -21
  3. package/README.md +267 -236
  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/docs/api-documenter.md +99 -99
  11. package/agents/docs/changelog-writer.md +93 -93
  12. package/agents/e2e-tester.md +266 -266
  13. package/agents/explorer-low.md +42 -42
  14. package/agents/explorer-medium.md +59 -59
  15. package/agents/explorer.md +48 -48
  16. package/agents/implementer-low.md +43 -43
  17. package/agents/implementer-medium.md +52 -52
  18. package/agents/implementer.md +54 -54
  19. package/agents/planning/requirements-analyst.md +84 -84
  20. package/agents/planning/ux-advisor.md +83 -83
  21. package/agents/qa/acceptance-tester.md +86 -86
  22. package/agents/qa/edge-case-finder.md +93 -93
  23. package/agents/refactor-cleaner.md +143 -143
  24. package/agents/research/best-practices-agent.md +199 -199
  25. package/agents/research/codebase-patterns-agent.md +157 -157
  26. package/agents/research/framework-docs-agent.md +188 -188
  27. package/agents/research/security-advisory-agent.md +213 -213
  28. package/agents/review/architecture-reviewer.md +107 -107
  29. package/agents/review/complexity-reviewer.md +116 -116
  30. package/agents/review/data-integrity-reviewer.md +88 -88
  31. package/agents/review/git-history-reviewer.md +103 -103
  32. package/agents/review/performance-reviewer.md +86 -86
  33. package/agents/review/python-reviewer.md +150 -150
  34. package/agents/review/rails-reviewer.md +139 -139
  35. package/agents/review/react-reviewer.md +144 -144
  36. package/agents/review/security-reviewer.md +80 -80
  37. package/agents/review/simplicity-reviewer.md +140 -140
  38. package/agents/review/test-coverage-reviewer.md +116 -116
  39. package/agents/review/typescript-reviewer.md +127 -127
  40. package/agents/searcher.md +54 -54
  41. package/agents/simplifier.md +120 -120
  42. package/agents/tester.md +49 -49
  43. package/agents/ui-previewer.md +268 -268
  44. package/commands/vibe.analyze.md +356 -356
  45. package/commands/vibe.reason.md +329 -329
  46. package/commands/vibe.review.md +423 -423
  47. package/commands/vibe.run.md +1313 -1313
  48. package/commands/vibe.spec.md +1054 -1054
  49. package/commands/vibe.spec.review.md +412 -412
  50. package/commands/vibe.trace.md +161 -161
  51. package/commands/vibe.utils.md +376 -376
  52. package/commands/vibe.verify.md +375 -375
  53. package/dist/cli/collaborator.js +52 -52
  54. package/dist/cli/detect.js +32 -32
  55. package/dist/cli/hud.js +20 -20
  56. package/dist/cli/index.js +112 -112
  57. package/dist/cli/llm.js +144 -144
  58. package/dist/cli/mcp.d.ts +49 -0
  59. package/dist/cli/mcp.d.ts.map +1 -0
  60. package/dist/cli/mcp.js +169 -0
  61. package/dist/cli/mcp.js.map +1 -0
  62. package/dist/cli/postinstall.d.ts.map +1 -1
  63. package/dist/cli/postinstall.js +886 -858
  64. package/dist/cli/postinstall.js.map +1 -1
  65. package/dist/cli/setup/GlobalInstaller.d.ts +6 -0
  66. package/dist/cli/setup/GlobalInstaller.d.ts.map +1 -1
  67. package/dist/cli/setup/GlobalInstaller.js +26 -0
  68. package/dist/cli/setup/GlobalInstaller.js.map +1 -1
  69. package/dist/lib/DeepInit.js +24 -24
  70. package/dist/lib/IterationTracker.js +11 -11
  71. package/dist/lib/MemoryManager.d.ts +30 -0
  72. package/dist/lib/MemoryManager.d.ts.map +1 -1
  73. package/dist/lib/MemoryManager.js +74 -0
  74. package/dist/lib/MemoryManager.js.map +1 -1
  75. package/dist/lib/PythonParser.js +108 -108
  76. package/dist/lib/ReviewRace.js +96 -96
  77. package/dist/lib/SkillFrontmatter.js +28 -28
  78. package/dist/lib/SkillQualityGate.js +9 -9
  79. package/dist/lib/SkillRepository.js +159 -159
  80. package/dist/lib/UltraQA.js +77 -77
  81. package/dist/lib/gemini-api.js +5 -5
  82. package/dist/lib/gemini-mcp.d.ts +10 -0
  83. package/dist/lib/gemini-mcp.d.ts.map +1 -0
  84. package/dist/lib/gemini-mcp.js +353 -0
  85. package/dist/lib/gemini-mcp.js.map +1 -0
  86. package/dist/lib/gpt-api.js +4 -4
  87. package/dist/lib/gpt-mcp.d.ts +10 -0
  88. package/dist/lib/gpt-mcp.d.ts.map +1 -0
  89. package/dist/lib/gpt-mcp.js +352 -0
  90. package/dist/lib/gpt-mcp.js.map +1 -0
  91. package/dist/lib/memory/KnowledgeGraph.js +4 -4
  92. package/dist/lib/memory/MemorySearch.js +43 -43
  93. package/dist/lib/memory/MemoryStorage.js +130 -130
  94. package/dist/lib/memory/ObservationStore.js +28 -28
  95. package/dist/lib/memory/SessionRAGRetriever.d.ts +66 -0
  96. package/dist/lib/memory/SessionRAGRetriever.d.ts.map +1 -0
  97. package/dist/lib/memory/SessionRAGRetriever.js +196 -0
  98. package/dist/lib/memory/SessionRAGRetriever.js.map +1 -0
  99. package/dist/lib/memory/SessionRAGRetriever.test.d.ts +2 -0
  100. package/dist/lib/memory/SessionRAGRetriever.test.d.ts.map +1 -0
  101. package/dist/lib/memory/SessionRAGRetriever.test.js +180 -0
  102. package/dist/lib/memory/SessionRAGRetriever.test.js.map +1 -0
  103. package/dist/lib/memory/SessionRAGStore.d.ts +153 -0
  104. package/dist/lib/memory/SessionRAGStore.d.ts.map +1 -0
  105. package/dist/lib/memory/SessionRAGStore.js +673 -0
  106. package/dist/lib/memory/SessionRAGStore.js.map +1 -0
  107. package/dist/lib/memory/SessionRAGStore.test.d.ts +2 -0
  108. package/dist/lib/memory/SessionRAGStore.test.d.ts.map +1 -0
  109. package/dist/lib/memory/SessionRAGStore.test.js +326 -0
  110. package/dist/lib/memory/SessionRAGStore.test.js.map +1 -0
  111. package/dist/lib/memory/SessionSummarizer.js +9 -9
  112. package/dist/orchestrator/AgentManager.js +12 -12
  113. package/dist/orchestrator/MultiLlmResearch.js +8 -8
  114. package/dist/orchestrator/SmartRouter.js +11 -11
  115. package/dist/orchestrator/SwarmOrchestrator.test.js +16 -16
  116. package/dist/orchestrator/parallelResearch.js +24 -24
  117. package/dist/tools/analytics/getUsageAnalytics.d.ts +10 -0
  118. package/dist/tools/analytics/getUsageAnalytics.d.ts.map +1 -0
  119. package/dist/tools/analytics/getUsageAnalytics.js +246 -0
  120. package/dist/tools/analytics/getUsageAnalytics.js.map +1 -0
  121. package/dist/tools/analytics/index.d.ts +5 -0
  122. package/dist/tools/analytics/index.d.ts.map +1 -0
  123. package/dist/tools/analytics/index.js +5 -0
  124. package/dist/tools/analytics/index.js.map +1 -0
  125. package/dist/tools/convention/analyzeComplexity.test.js +115 -115
  126. package/dist/tools/convention/getCodingGuide.d.ts +7 -0
  127. package/dist/tools/convention/getCodingGuide.d.ts.map +1 -0
  128. package/dist/tools/convention/getCodingGuide.js +69 -0
  129. package/dist/tools/convention/getCodingGuide.js.map +1 -0
  130. package/dist/tools/convention/validateCodeQuality.test.js +104 -104
  131. package/dist/tools/index.d.ts +5 -0
  132. package/dist/tools/index.d.ts.map +1 -1
  133. package/dist/tools/index.js +4 -0
  134. package/dist/tools/index.js.map +1 -1
  135. package/dist/tools/memory/index.d.ts +3 -0
  136. package/dist/tools/memory/index.d.ts.map +1 -1
  137. package/dist/tools/memory/index.js +4 -0
  138. package/dist/tools/memory/index.js.map +1 -1
  139. package/dist/tools/memory/manageGoals.d.ts +11 -0
  140. package/dist/tools/memory/manageGoals.d.ts.map +1 -0
  141. package/dist/tools/memory/manageGoals.js +152 -0
  142. package/dist/tools/memory/manageGoals.js.map +1 -0
  143. package/dist/tools/memory/retrieveSessionContext.d.ts +9 -0
  144. package/dist/tools/memory/retrieveSessionContext.d.ts.map +1 -0
  145. package/dist/tools/memory/retrieveSessionContext.js +140 -0
  146. package/dist/tools/memory/retrieveSessionContext.js.map +1 -0
  147. package/dist/tools/memory/saveSessionItem.d.ts +26 -0
  148. package/dist/tools/memory/saveSessionItem.d.ts.map +1 -0
  149. package/dist/tools/memory/saveSessionItem.js +218 -0
  150. package/dist/tools/memory/saveSessionItem.js.map +1 -0
  151. package/dist/tools/memory/startSession.d.ts.map +1 -1
  152. package/dist/tools/memory/startSession.js +29 -0
  153. package/dist/tools/memory/startSession.js.map +1 -1
  154. package/dist/tools/planning/analyzeRequirements.d.ts +9 -0
  155. package/dist/tools/planning/analyzeRequirements.d.ts.map +1 -0
  156. package/dist/tools/planning/analyzeRequirements.js +171 -0
  157. package/dist/tools/planning/analyzeRequirements.js.map +1 -0
  158. package/dist/tools/planning/createUserStories.d.ts +9 -0
  159. package/dist/tools/planning/createUserStories.d.ts.map +1 -0
  160. package/dist/tools/planning/createUserStories.js +124 -0
  161. package/dist/tools/planning/createUserStories.js.map +1 -0
  162. package/dist/tools/planning/featureRoadmap.d.ts +10 -0
  163. package/dist/tools/planning/featureRoadmap.d.ts.map +1 -0
  164. package/dist/tools/planning/featureRoadmap.js +207 -0
  165. package/dist/tools/planning/featureRoadmap.js.map +1 -0
  166. package/dist/tools/planning/generatePrd.d.ts +11 -0
  167. package/dist/tools/planning/generatePrd.d.ts.map +1 -0
  168. package/dist/tools/planning/generatePrd.js +161 -0
  169. package/dist/tools/planning/generatePrd.js.map +1 -0
  170. package/dist/tools/planning/index.d.ts +8 -0
  171. package/dist/tools/planning/index.d.ts.map +1 -0
  172. package/dist/tools/planning/index.js +8 -0
  173. package/dist/tools/planning/index.js.map +1 -0
  174. package/dist/tools/prompt/analyzePrompt.d.ts +7 -0
  175. package/dist/tools/prompt/analyzePrompt.d.ts.map +1 -0
  176. package/dist/tools/prompt/analyzePrompt.js +150 -0
  177. package/dist/tools/prompt/analyzePrompt.js.map +1 -0
  178. package/dist/tools/prompt/enhancePrompt.d.ts +8 -0
  179. package/dist/tools/prompt/enhancePrompt.d.ts.map +1 -0
  180. package/dist/tools/prompt/enhancePrompt.js +110 -0
  181. package/dist/tools/prompt/enhancePrompt.js.map +1 -0
  182. package/dist/tools/prompt/enhancePromptGemini.d.ts +8 -0
  183. package/dist/tools/prompt/enhancePromptGemini.d.ts.map +1 -0
  184. package/dist/tools/prompt/enhancePromptGemini.js +332 -0
  185. package/dist/tools/prompt/enhancePromptGemini.js.map +1 -0
  186. package/dist/tools/prompt/index.d.ts +7 -0
  187. package/dist/tools/prompt/index.d.ts.map +1 -0
  188. package/dist/tools/prompt/index.js +7 -0
  189. package/dist/tools/prompt/index.js.map +1 -0
  190. package/dist/tools/reasoning/applyReasoningFramework.d.ts +8 -0
  191. package/dist/tools/reasoning/applyReasoningFramework.d.ts.map +1 -0
  192. package/dist/tools/reasoning/applyReasoningFramework.js +266 -0
  193. package/dist/tools/reasoning/applyReasoningFramework.js.map +1 -0
  194. package/dist/tools/reasoning/index.d.ts +5 -0
  195. package/dist/tools/reasoning/index.d.ts.map +1 -0
  196. package/dist/tools/reasoning/index.js +5 -0
  197. package/dist/tools/reasoning/index.js.map +1 -0
  198. package/dist/tools/spec/prdParser.test.js +171 -171
  199. package/dist/tools/spec/specGenerator.js +169 -169
  200. package/dist/tools/spec/traceabilityMatrix.js +64 -64
  201. package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
  202. package/dist/tools/thinking/analyzeProblem.d.ts +7 -0
  203. package/dist/tools/thinking/analyzeProblem.d.ts.map +1 -0
  204. package/dist/tools/thinking/analyzeProblem.js +55 -0
  205. package/dist/tools/thinking/analyzeProblem.js.map +1 -0
  206. package/dist/tools/thinking/breakDownProblem.d.ts +8 -0
  207. package/dist/tools/thinking/breakDownProblem.d.ts.map +1 -0
  208. package/dist/tools/thinking/breakDownProblem.js +145 -0
  209. package/dist/tools/thinking/breakDownProblem.js.map +1 -0
  210. package/dist/tools/thinking/createThinkingChain.d.ts +7 -0
  211. package/dist/tools/thinking/createThinkingChain.d.ts.map +1 -0
  212. package/dist/tools/thinking/createThinkingChain.js +44 -0
  213. package/dist/tools/thinking/createThinkingChain.js.map +1 -0
  214. package/dist/tools/thinking/formatAsPlan.d.ts +9 -0
  215. package/dist/tools/thinking/formatAsPlan.d.ts.map +1 -0
  216. package/dist/tools/thinking/formatAsPlan.js +78 -0
  217. package/dist/tools/thinking/formatAsPlan.js.map +1 -0
  218. package/dist/tools/thinking/index.d.ts +10 -0
  219. package/dist/tools/thinking/index.d.ts.map +1 -0
  220. package/dist/tools/thinking/index.js +10 -0
  221. package/dist/tools/thinking/index.js.map +1 -0
  222. package/dist/tools/thinking/stepByStepAnalysis.d.ts +8 -0
  223. package/dist/tools/thinking/stepByStepAnalysis.d.ts.map +1 -0
  224. package/dist/tools/thinking/stepByStepAnalysis.js +63 -0
  225. package/dist/tools/thinking/stepByStepAnalysis.js.map +1 -0
  226. package/dist/tools/thinking/thinkAloudProcess.d.ts +8 -0
  227. package/dist/tools/thinking/thinkAloudProcess.d.ts.map +1 -0
  228. package/dist/tools/thinking/thinkAloudProcess.js +80 -0
  229. package/dist/tools/thinking/thinkAloudProcess.js.map +1 -0
  230. package/hooks/hooks.json +115 -115
  231. package/hooks/scripts/code-check.js +70 -70
  232. package/hooks/scripts/code-review.js +22 -22
  233. package/hooks/scripts/complexity.js +22 -22
  234. package/hooks/scripts/compound.js +23 -23
  235. package/hooks/scripts/context-save.js +53 -53
  236. package/hooks/scripts/gemini-ui-gen.js +281 -281
  237. package/hooks/scripts/generate-brand-assets.js +474 -474
  238. package/hooks/scripts/hud-multiline.js +262 -262
  239. package/hooks/scripts/hud-status.js +291 -291
  240. package/hooks/scripts/keyword-detector.js +214 -214
  241. package/hooks/scripts/llm-orchestrate.js +171 -171
  242. package/hooks/scripts/post-edit.js +97 -97
  243. package/hooks/scripts/post-tool-verify.js +210 -210
  244. package/hooks/scripts/pre-tool-guard.js +125 -125
  245. package/hooks/scripts/prompt-dispatcher.js +161 -161
  246. package/hooks/scripts/recall.js +22 -22
  247. package/hooks/scripts/session-start.js +30 -30
  248. package/hooks/scripts/skill-injector.js +191 -191
  249. package/hooks/scripts/utils.js +97 -97
  250. package/languages/csharp-unity.md +515 -515
  251. package/languages/gdscript-godot.md +470 -470
  252. package/languages/ruby-rails.md +489 -489
  253. package/languages/typescript-angular.md +433 -433
  254. package/languages/typescript-astro.md +416 -416
  255. package/languages/typescript-electron.md +406 -406
  256. package/languages/typescript-nestjs.md +524 -524
  257. package/languages/typescript-svelte.md +407 -407
  258. package/languages/typescript-tauri.md +365 -365
  259. package/package.json +84 -84
  260. package/skills/brand-assets.md +141 -141
  261. package/skills/commerce-patterns.md +361 -361
  262. package/skills/context7-usage.md +102 -102
  263. package/skills/e2e-commerce.md +304 -304
  264. package/skills/frontend-design.md +92 -92
  265. package/skills/git-worktree.md +181 -181
  266. package/skills/parallel-research.md +77 -77
  267. package/skills/priority-todos.md +239 -239
  268. package/skills/seo-checklist.md +244 -244
  269. package/skills/tool-fallback.md +190 -190
  270. package/skills/vibe-capabilities.md +161 -161
  271. package/vibe/constitution.md +227 -227
  272. package/vibe/rules/core/communication-guide.md +98 -98
  273. package/vibe/rules/core/development-philosophy.md +52 -52
  274. package/vibe/rules/core/quick-start.md +102 -102
  275. package/vibe/rules/quality/bdd-contract-testing.md +393 -393
  276. package/vibe/rules/quality/checklist.md +276 -276
  277. package/vibe/rules/quality/testing-strategy.md +440 -440
  278. package/vibe/rules/standards/anti-patterns.md +541 -541
  279. package/vibe/rules/standards/code-structure.md +291 -291
  280. package/vibe/rules/standards/complexity-metrics.md +313 -313
  281. package/vibe/rules/standards/naming-conventions.md +198 -198
  282. package/vibe/setup.sh +31 -31
  283. package/vibe/templates/constitution-template.md +252 -252
  284. package/vibe/templates/contract-backend-template.md +526 -526
  285. package/vibe/templates/contract-frontend-template.md +599 -599
  286. package/vibe/templates/feature-template.md +96 -96
  287. package/vibe/templates/spec-template.md +221 -221
package/dist/cli/llm.js CHANGED
@@ -41,13 +41,13 @@ function getGlobalConfigDir() {
41
41
  */
42
42
  export function setupExternalLLM(llmType, apiKey) {
43
43
  if (!apiKey) {
44
- console.log(`
45
- ❌ API key required.
46
-
47
- Usage:
48
- vibe ${llmType} key <api-key>
49
-
50
- ${llmType === 'gpt' ? 'OpenAI API key: https://platform.openai.com/api-keys' : 'Google API key: https://aistudio.google.com/apikey'}
44
+ console.log(`
45
+ ❌ API key required.
46
+
47
+ Usage:
48
+ vibe ${llmType} key <api-key>
49
+
50
+ ${llmType === 'gpt' ? 'OpenAI API key: https://platform.openai.com/api-keys' : 'Google API key: https://aistudio.google.com/apikey'}
51
51
  `);
52
52
  return;
53
53
  }
@@ -83,17 +83,17 @@ ${llmType === 'gpt' ? 'OpenAI API key: https://platform.openai.com/api-keys' : '
83
83
  }
84
84
  catch { /* ignore: optional operation */ }
85
85
  }
86
- console.log(`
87
- ✅ ${llmType.toUpperCase()} API key configured!
88
-
89
- Role: ${llmConfig.description}
90
- Stored: ${authFile}
91
-
92
- ${llmType.toUpperCase()} is called directly via Hooks:
93
- - Auto-called with "${llmType}. query" prefix
94
- - Direct use: import('@su-record/vibe/lib/${llmType}')
95
-
96
- Disable: vibe ${llmType} remove
86
+ console.log(`
87
+ ✅ ${llmType.toUpperCase()} API key configured!
88
+
89
+ Role: ${llmConfig.description}
90
+ Stored: ${authFile}
91
+
92
+ ${llmType.toUpperCase()} is called directly via Hooks:
93
+ - Auto-called with "${llmType}. query" prefix
94
+ - Direct use: import('@su-record/vibe/lib/${llmType}')
95
+
96
+ Disable: vibe ${llmType} remove
97
97
  `);
98
98
  }
99
99
  /**
@@ -142,11 +142,11 @@ export function removeExternalLLM(llmType) {
142
142
  * GPT OAuth 인증
143
143
  */
144
144
  export async function gptAuth() {
145
- console.log(`
146
- 🔐 GPT Plus/Pro Authentication (OAuth)
147
-
148
- With ChatGPT Plus or Pro subscription, you can use the Codex API.
149
- Login with your OpenAI account in browser.
145
+ console.log(`
146
+ 🔐 GPT Plus/Pro Authentication (OAuth)
147
+
148
+ With ChatGPT Plus or Pro subscription, you can use the Codex API.
149
+ Login with your OpenAI account in browser.
150
150
  `);
151
151
  try {
152
152
  const gptOAuthPath = path.join(__dirname, '../lib/gpt-oauth.js');
@@ -162,16 +162,16 @@ Login with your OpenAI account in browser.
162
162
  expires: tokens.expires,
163
163
  accountId: tokens.accountId,
164
164
  });
165
- console.log(`
166
- ✅ GPT authenticated!
167
-
168
- Account: ${tokens.email}
169
- Account ID: ${tokens.accountId || '(auto-detected)'}
170
-
171
- ⚠️ Note: ChatGPT Plus/Pro subscription required for API calls.
172
-
173
- Status: vibe gpt status
174
- Logout: vibe gpt logout
165
+ console.log(`
166
+ ✅ GPT authenticated!
167
+
168
+ Account: ${tokens.email}
169
+ Account ID: ${tokens.accountId || '(auto-detected)'}
170
+
171
+ ⚠️ Note: ChatGPT Plus/Pro subscription required for API calls.
172
+
173
+ Status: vibe gpt status
174
+ Logout: vibe gpt logout
175
175
  `);
176
176
  // config.json 업데이트
177
177
  const projectRoot = process.cwd();
@@ -193,10 +193,10 @@ Logout: vibe gpt logout
193
193
  }
194
194
  catch { /* ignore: optional operation */ }
195
195
  }
196
- console.log(`
197
- GPT is called via Hooks:
198
- - Auto-called with "gpt. query" prefix
199
- - Direct use: import('@su-record/vibe/lib/gpt')
196
+ console.log(`
197
+ GPT is called via Hooks:
198
+ - Auto-called with "gpt. query" prefix
199
+ - Direct use: import('@su-record/vibe/lib/gpt')
200
200
  `);
201
201
  // Windows libuv 핸들 충돌 방지: 서버 완전 종료 대기
202
202
  await new Promise(resolve => setTimeout(resolve, 200));
@@ -204,12 +204,12 @@ GPT is called via Hooks:
204
204
  }
205
205
  catch (error) {
206
206
  const message = error instanceof Error ? error.message : String(error);
207
- console.error(`
208
- ❌ GPT authentication failed
209
-
210
- Error: ${message}
211
-
212
- Retry: vibe gpt auth
207
+ console.error(`
208
+ ❌ GPT authentication failed
209
+
210
+ Error: ${message}
211
+
212
+ Retry: vibe gpt auth
213
213
  `);
214
214
  process.exit(1);
215
215
  }
@@ -223,31 +223,31 @@ export function gptStatus() {
223
223
  const storage = require(gptStoragePath);
224
224
  const accounts = storage.getAllAccounts();
225
225
  if (accounts.length === 0) {
226
- console.log(`
227
- 📊 GPT Status
228
-
229
- No authenticated account
230
-
231
- Login: vibe gpt auth
226
+ console.log(`
227
+ 📊 GPT Status
228
+
229
+ No authenticated account
230
+
231
+ Login: vibe gpt auth
232
232
  `);
233
233
  return;
234
234
  }
235
235
  const activeAccount = storage.getActiveAccount();
236
236
  const isExpired = storage.isTokenExpired(activeAccount);
237
- console.log(`
238
- 📊 GPT Status
239
-
240
- Active: ${activeAccount.email}
241
- Account ID: ${activeAccount.accountId || '(none)'}
242
- Token: ${isExpired ? '⚠️ Expired (auto-refresh)' : '✅ Valid'}
243
- Last used: ${new Date(activeAccount.lastUsed).toLocaleString()}
244
-
245
- Accounts (${accounts.length}):
246
- ${accounts.map((acc, i) => ` ${i === storage.loadAccounts()?.activeIndex ? '→' : ' '} ${acc.email}`).join('\n')}
247
-
248
- ⚠️ Note: ChatGPT Plus/Pro subscription required.
249
-
250
- Logout: vibe gpt logout
237
+ console.log(`
238
+ 📊 GPT Status
239
+
240
+ Active: ${activeAccount.email}
241
+ Account ID: ${activeAccount.accountId || '(none)'}
242
+ Token: ${isExpired ? '⚠️ Expired (auto-refresh)' : '✅ Valid'}
243
+ Last used: ${new Date(activeAccount.lastUsed).toLocaleString()}
244
+
245
+ Accounts (${accounts.length}):
246
+ ${accounts.map((acc, i) => ` ${i === storage.loadAccounts()?.activeIndex ? '→' : ' '} ${acc.email}`).join('\n')}
247
+
248
+ ⚠️ Note: ChatGPT Plus/Pro subscription required.
249
+
250
+ Logout: vibe gpt logout
251
251
  `);
252
252
  }
253
253
  catch (error) {
@@ -268,12 +268,12 @@ export function gptLogout() {
268
268
  return;
269
269
  }
270
270
  storage.clearAccounts();
271
- console.log(`
272
- ✅ GPT logged out
273
-
274
- Account ${activeAccount.email} removed.
275
-
276
- Login again: vibe gpt auth
271
+ console.log(`
272
+ ✅ GPT logged out
273
+
274
+ Account ${activeAccount.email} removed.
275
+
276
+ Login again: vibe gpt auth
277
277
  `);
278
278
  // config.json 업데이트
279
279
  const projectRoot = process.cwd();
@@ -304,11 +304,11 @@ Login again: vibe gpt auth
304
304
  * Gemini OAuth 인증
305
305
  */
306
306
  export async function geminiAuth() {
307
- console.log(`
308
- 🔐 Gemini Authentication (OAuth)
309
-
310
- With Gemini Advanced subscription, you can use it at no additional cost.
311
- Login with your Google account in browser.
307
+ console.log(`
308
+ 🔐 Gemini Authentication (OAuth)
309
+
310
+ With Gemini Advanced subscription, you can use it at no additional cost.
311
+ Login with your Google account in browser.
312
312
  `);
313
313
  try {
314
314
  const geminiOAuthPath = path.join(__dirname, '../lib/gemini-oauth.js');
@@ -323,18 +323,18 @@ Login with your Google account in browser.
323
323
  expires: tokens.expires,
324
324
  projectId: tokens.projectId,
325
325
  });
326
- console.log(`
327
- ✅ Gemini authenticated!
328
-
329
- Account: ${tokens.email}
330
- Project: ${tokens.projectId || '(auto-detected)'}
331
-
332
- Available models:
333
- - Gemini 3 Flash (fast, exploration/search)
334
- - Gemini 3 Pro (high accuracy)
335
-
336
- Status: vibe gemini status
337
- Logout: vibe gemini logout
326
+ console.log(`
327
+ ✅ Gemini authenticated!
328
+
329
+ Account: ${tokens.email}
330
+ Project: ${tokens.projectId || '(auto-detected)'}
331
+
332
+ Available models:
333
+ - Gemini 3 Flash (fast, exploration/search)
334
+ - Gemini 3 Pro (high accuracy)
335
+
336
+ Status: vibe gemini status
337
+ Logout: vibe gemini logout
338
338
  `);
339
339
  // config.json 업데이트
340
340
  const projectRoot = process.cwd();
@@ -356,10 +356,10 @@ Logout: vibe gemini logout
356
356
  }
357
357
  catch { /* ignore: optional operation */ }
358
358
  }
359
- console.log(`
360
- Gemini is called via Hooks:
361
- - Auto-called with "gemini. query" prefix
362
- - Direct use: import('@su-record/vibe/lib/gemini')
359
+ console.log(`
360
+ Gemini is called via Hooks:
361
+ - Auto-called with "gemini. query" prefix
362
+ - Direct use: import('@su-record/vibe/lib/gemini')
363
363
  `);
364
364
  // Windows libuv 핸들 충돌 방지: 서버 완전 종료 대기
365
365
  await new Promise(resolve => setTimeout(resolve, 200));
@@ -367,12 +367,12 @@ Gemini is called via Hooks:
367
367
  }
368
368
  catch (error) {
369
369
  const message = error instanceof Error ? error.message : String(error);
370
- console.error(`
371
- ❌ Gemini authentication failed
372
-
373
- Error: ${message}
374
-
375
- Retry: vibe gemini auth
370
+ console.error(`
371
+ ❌ Gemini authentication failed
372
+
373
+ Error: ${message}
374
+
375
+ Retry: vibe gemini auth
376
376
  `);
377
377
  process.exit(1);
378
378
  }
@@ -388,32 +388,32 @@ export function geminiStatus() {
388
388
  const { GEMINI_MODELS } = require(geminiApiPath);
389
389
  const accounts = storage.getAllAccounts();
390
390
  if (accounts.length === 0) {
391
- console.log(`
392
- 📊 Gemini Status
393
-
394
- No authenticated account
395
-
396
- Login: vibe gemini auth
391
+ console.log(`
392
+ 📊 Gemini Status
393
+
394
+ No authenticated account
395
+
396
+ Login: vibe gemini auth
397
397
  `);
398
398
  return;
399
399
  }
400
400
  const activeAccount = storage.getActiveAccount();
401
401
  const isExpired = storage.isTokenExpired(activeAccount);
402
- console.log(`
403
- 📊 Gemini Status
404
-
405
- Active: ${activeAccount.email}
406
- Project: ${activeAccount.projectId || '(auto)'}
407
- Token: ${isExpired ? '⚠️ Expired (auto-refresh)' : '✅ Valid'}
408
- Last used: ${new Date(activeAccount.lastUsed).toLocaleString()}
409
-
410
- Accounts (${accounts.length}):
411
- ${accounts.map((acc, i) => ` ${i === storage.loadAccounts()?.activeIndex ? '→' : ' '} ${acc.email}`).join('\n')}
412
-
413
- Available models:
414
- ${Object.entries(GEMINI_MODELS).map(([id, info]) => ` - ${id}: ${info.description}`).join('\n')}
415
-
416
- Logout: vibe gemini logout
402
+ console.log(`
403
+ 📊 Gemini Status
404
+
405
+ Active: ${activeAccount.email}
406
+ Project: ${activeAccount.projectId || '(auto)'}
407
+ Token: ${isExpired ? '⚠️ Expired (auto-refresh)' : '✅ Valid'}
408
+ Last used: ${new Date(activeAccount.lastUsed).toLocaleString()}
409
+
410
+ Accounts (${accounts.length}):
411
+ ${accounts.map((acc, i) => ` ${i === storage.loadAccounts()?.activeIndex ? '→' : ' '} ${acc.email}`).join('\n')}
412
+
413
+ Available models:
414
+ ${Object.entries(GEMINI_MODELS).map(([id, info]) => ` - ${id}: ${info.description}`).join('\n')}
415
+
416
+ Logout: vibe gemini logout
417
417
  `);
418
418
  }
419
419
  catch (error) {
@@ -434,12 +434,12 @@ export function geminiLogout() {
434
434
  return;
435
435
  }
436
436
  storage.clearAccounts();
437
- console.log(`
438
- ✅ Gemini logged out
439
-
440
- Account ${activeAccount.email} removed.
441
-
442
- Login again: vibe gemini auth
437
+ console.log(`
438
+ ✅ Gemini logged out
439
+
440
+ Account ${activeAccount.email} removed.
441
+
442
+ Login again: vibe gemini auth
443
443
  `);
444
444
  // config.json 업데이트
445
445
  const projectRoot = process.cwd();
@@ -470,33 +470,33 @@ Login again: vibe gemini auth
470
470
  * Auth help (legacy - now shows new format)
471
471
  */
472
472
  export function showAuthHelp() {
473
- console.log(`
474
- 🔐 LLM Authentication
475
-
476
- GPT Commands:
477
- vibe gpt auth OAuth (Plus/Pro subscription)
478
- vibe gpt key <KEY> API key
479
-
480
- Gemini Commands:
481
- vibe gemini auth OAuth (free with Advanced)
482
- vibe gemini key <KEY> API key
483
-
484
- Examples:
485
- vibe gpt auth OpenAI login
486
- vibe gemini auth Google login
487
- vibe gpt key sk-xxx API key setup
473
+ console.log(`
474
+ 🔐 LLM Authentication
475
+
476
+ GPT Commands:
477
+ vibe gpt auth OAuth (Plus/Pro subscription)
478
+ vibe gpt key <KEY> API key
479
+
480
+ Gemini Commands:
481
+ vibe gemini auth OAuth (free with Advanced)
482
+ vibe gemini key <KEY> API key
483
+
484
+ Examples:
485
+ vibe gpt auth OpenAI login
486
+ vibe gemini auth Google login
487
+ vibe gpt key sk-xxx API key setup
488
488
  `);
489
489
  }
490
490
  /**
491
491
  * Logout help (legacy - now shows new format)
492
492
  */
493
493
  export function showLogoutHelp() {
494
- console.log(`
495
- 🚪 LLM Logout
496
-
497
- Usage:
498
- vibe gpt logout GPT logout
499
- vibe gemini logout Gemini logout
494
+ console.log(`
495
+ 🚪 LLM Logout
496
+
497
+ Usage:
498
+ vibe gpt logout GPT logout
499
+ vibe gemini logout Gemini logout
500
500
  `);
501
501
  }
502
502
  //# sourceMappingURL=llm.js.map
@@ -0,0 +1,49 @@
1
+ /**
2
+ * MCP 서버 관리 함수
3
+ */
4
+ import { McpServerConfig, ClaudeSettings } from './types.js';
5
+ /**
6
+ * Claude CLI 경로 찾기 (Windows/macOS/Linux 지원)
7
+ */
8
+ export declare function getClaudePath(): string;
9
+ /**
10
+ * Claude CLI 명령어 반환 (캐시됨)
11
+ */
12
+ export declare function claudeCmd(): string;
13
+ /**
14
+ * Claude CLI가 사용 가능한지 확인
15
+ */
16
+ export declare function isClaudeCliAvailable(): boolean;
17
+ /**
18
+ * Claude 설정 파일 경로
19
+ */
20
+ export declare function getClaudeSettingsPath(): string;
21
+ /**
22
+ * Claude 설정 파일 읽기
23
+ */
24
+ export declare function readClaudeSettings(): ClaudeSettings;
25
+ /**
26
+ * Claude 설정 파일 쓰기
27
+ */
28
+ export declare function writeClaudeSettings(settings: ClaudeSettings): void;
29
+ /**
30
+ * MCP 서버 추가 (설정 파일 직접 수정)
31
+ */
32
+ export declare function addMcpServer(name: string, config: McpServerConfig): void;
33
+ /**
34
+ * MCP 서버 제거
35
+ */
36
+ export declare function removeMcpServer(name: string): void;
37
+ /**
38
+ * MCP 서버 등록 (CLI 우선, 실패시 직접 수정)
39
+ */
40
+ export declare function registerMcp(name: string, config: McpServerConfig): void;
41
+ /**
42
+ * MCP 서버 등록 해제
43
+ */
44
+ export declare function unregisterMcp(name: string): void;
45
+ /**
46
+ * MCP 서버가 등록되어 있는지 확인
47
+ */
48
+ export declare function isMcpRegistered(name: string): boolean;
49
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/cli/mcp.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAK7D;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CA0CtC;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAKlC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAQ9C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,CAUnD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAOlE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAOxE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAMlD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,IAAI,CAgBvE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAWhD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGrD"}
@@ -0,0 +1,169 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/cli/mcp.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"postinstall.d.ts","sourceRoot":"","sources":["../../src/cli/postinstall.ts"],"names":[],"mappings":";AACA;;;GAGG;AAUH;;GAEG;AACH,iBAAS,gBAAgB,IAAI,MAAM,CAKlC;AAiND,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA2BzD,CAAC;AAqQF,iBAAS,mBAAmB,CAC1B,cAAc,EAAE,MAAM,EACtB,cAAc,GAAE,MAAM,EAAO,EAC7B,YAAY,CAAC,EAAE,MAAM,GACpB,IAAI,CAiIN;AAED;;GAEG;AACH,iBAAS,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,CA0BhF;AAED;;;GAGG;AACH,iBAAS,oBAAoB,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAqxB3D;AAyID,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,GACjB,CAAC"}
1
+ {"version":3,"file":"postinstall.d.ts","sourceRoot":"","sources":["../../src/cli/postinstall.ts"],"names":[],"mappings":";AACA;;;GAGG;AAUH;;GAEG;AACH,iBAAS,gBAAgB,IAAI,MAAM,CAKlC;AA8OD,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA2BzD,CAAC;AAqQF,iBAAS,mBAAmB,CAC1B,cAAc,EAAE,MAAM,EACtB,cAAc,GAAE,MAAM,EAAO,EAC7B,YAAY,CAAC,EAAE,MAAM,GACpB,IAAI,CAiIN;AAED;;GAEG;AACH,iBAAS,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,CA0BhF;AAED;;;GAGG;AACH,iBAAS,oBAAoB,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAqxB3D;AA2ID,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,GACjB,CAAC"}