@su-record/vibe 2.5.11 → 2.5.13

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 (341) hide show
  1. package/CLAUDE.md +243 -0
  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 +189 -189
  19. package/agents/research/codebase-patterns-agent.md +147 -147
  20. package/agents/research/framework-docs-agent.md +178 -178
  21. package/agents/research/security-advisory-agent.md +203 -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 -1051
  42. package/commands/vibe.spec.md +1058 -1058
  43. package/commands/vibe.utils.md +353 -296
  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.js +102 -102
  48. package/dist/cli/llm.js +144 -144
  49. package/dist/cli/mcp.d.ts +49 -0
  50. package/dist/cli/mcp.d.ts.map +1 -0
  51. package/dist/cli/mcp.js +169 -0
  52. package/dist/cli/mcp.js.map +1 -0
  53. package/dist/cli/postinstall.js +180 -2
  54. package/dist/cli/postinstall.js.map +1 -1
  55. package/dist/cli/setup/GlobalInstaller.d.ts +24 -0
  56. package/dist/cli/setup/GlobalInstaller.d.ts.map +1 -0
  57. package/dist/cli/setup/GlobalInstaller.js +130 -0
  58. package/dist/cli/setup/GlobalInstaller.js.map +1 -0
  59. package/dist/cli/setup/LanguageDetector.d.ts +16 -0
  60. package/dist/cli/setup/LanguageDetector.d.ts.map +1 -0
  61. package/dist/cli/setup/LanguageDetector.js +49 -0
  62. package/dist/cli/setup/LanguageDetector.js.map +1 -0
  63. package/dist/cli/setup/LegacyMigration.d.ts +25 -0
  64. package/dist/cli/setup/LegacyMigration.d.ts.map +1 -0
  65. package/dist/cli/setup/LegacyMigration.js +162 -0
  66. package/dist/cli/setup/LegacyMigration.js.map +1 -0
  67. package/dist/cli/setup/ProjectSetup.d.ts +30 -0
  68. package/dist/cli/setup/ProjectSetup.d.ts.map +1 -0
  69. package/dist/cli/setup/ProjectSetup.js +238 -0
  70. package/dist/cli/setup/ProjectSetup.js.map +1 -0
  71. package/dist/cli/setup/index.d.ts +14 -0
  72. package/dist/cli/setup/index.d.ts.map +1 -0
  73. package/dist/cli/setup/index.js +18 -0
  74. package/dist/cli/setup/index.js.map +1 -0
  75. package/dist/cli/setup.d.ts +10 -77
  76. package/dist/cli/setup.d.ts.map +1 -1
  77. package/dist/cli/setup.js +15 -592
  78. package/dist/cli/setup.js.map +1 -1
  79. package/dist/lib/DeepInit.d.ts +0 -2
  80. package/dist/lib/DeepInit.d.ts.map +1 -1
  81. package/dist/lib/DeepInit.js +24 -26
  82. package/dist/lib/DeepInit.js.map +1 -1
  83. package/dist/lib/IterationTracker.d.ts +0 -2
  84. package/dist/lib/IterationTracker.d.ts.map +1 -1
  85. package/dist/lib/IterationTracker.js +11 -13
  86. package/dist/lib/IterationTracker.js.map +1 -1
  87. package/dist/lib/ModelRouter.d.ts +0 -2
  88. package/dist/lib/ModelRouter.d.ts.map +1 -1
  89. package/dist/lib/ModelRouter.js +0 -2
  90. package/dist/lib/ModelRouter.js.map +1 -1
  91. package/dist/lib/OrchestrateWorkflow.d.ts +1 -3
  92. package/dist/lib/OrchestrateWorkflow.d.ts.map +1 -1
  93. package/dist/lib/OrchestrateWorkflow.js +1 -3
  94. package/dist/lib/OrchestrateWorkflow.js.map +1 -1
  95. package/dist/lib/PythonParser.js +108 -108
  96. package/dist/lib/SkillFrontmatter.d.ts +0 -2
  97. package/dist/lib/SkillFrontmatter.d.ts.map +1 -1
  98. package/dist/lib/SkillFrontmatter.js +28 -30
  99. package/dist/lib/SkillFrontmatter.js.map +1 -1
  100. package/dist/lib/SkillQualityGate.d.ts +0 -2
  101. package/dist/lib/SkillQualityGate.d.ts.map +1 -1
  102. package/dist/lib/SkillQualityGate.js +9 -11
  103. package/dist/lib/SkillQualityGate.js.map +1 -1
  104. package/dist/lib/SkillRepository.d.ts +117 -0
  105. package/dist/lib/SkillRepository.d.ts.map +1 -0
  106. package/dist/lib/SkillRepository.js +477 -0
  107. package/dist/lib/SkillRepository.js.map +1 -0
  108. package/dist/lib/UltraQA.d.ts +0 -2
  109. package/dist/lib/UltraQA.d.ts.map +1 -1
  110. package/dist/lib/UltraQA.js +77 -79
  111. package/dist/lib/UltraQA.js.map +1 -1
  112. package/dist/lib/gemini-mcp.d.ts +10 -0
  113. package/dist/lib/gemini-mcp.d.ts.map +1 -0
  114. package/dist/lib/gemini-mcp.js +353 -0
  115. package/dist/lib/gemini-mcp.js.map +1 -0
  116. package/dist/lib/gpt-api.js +4 -4
  117. package/dist/lib/gpt-mcp.d.ts +10 -0
  118. package/dist/lib/gpt-mcp.d.ts.map +1 -0
  119. package/dist/lib/gpt-mcp.js +352 -0
  120. package/dist/lib/gpt-mcp.js.map +1 -0
  121. package/dist/lib/llm/auth/ApiKeyManager.d.ts +21 -0
  122. package/dist/lib/llm/auth/ApiKeyManager.d.ts.map +1 -0
  123. package/dist/lib/llm/auth/ApiKeyManager.js +43 -0
  124. package/dist/lib/llm/auth/ApiKeyManager.js.map +1 -0
  125. package/dist/lib/llm/auth/ConfigManager.d.ts +29 -0
  126. package/dist/lib/llm/auth/ConfigManager.d.ts.map +1 -0
  127. package/dist/lib/llm/auth/ConfigManager.js +67 -0
  128. package/dist/lib/llm/auth/ConfigManager.js.map +1 -0
  129. package/dist/lib/llm/auth/index.d.ts +25 -0
  130. package/dist/lib/llm/auth/index.d.ts.map +1 -0
  131. package/dist/lib/llm/auth/index.js +83 -0
  132. package/dist/lib/llm/auth/index.js.map +1 -0
  133. package/dist/lib/llm/index.d.ts +10 -0
  134. package/dist/lib/llm/index.d.ts.map +1 -0
  135. package/dist/lib/llm/index.js +12 -0
  136. package/dist/lib/llm/index.js.map +1 -0
  137. package/dist/lib/llm/types.d.ts +96 -0
  138. package/dist/lib/llm/types.d.ts.map +1 -0
  139. package/dist/lib/llm/types.js +17 -0
  140. package/dist/lib/llm/types.js.map +1 -0
  141. package/dist/lib/llm/utils/index.d.ts +6 -0
  142. package/dist/lib/llm/utils/index.d.ts.map +1 -0
  143. package/dist/lib/llm/utils/index.js +6 -0
  144. package/dist/lib/llm/utils/index.js.map +1 -0
  145. package/dist/lib/llm/utils/retry.d.ts +25 -0
  146. package/dist/lib/llm/utils/retry.d.ts.map +1 -0
  147. package/dist/lib/llm/utils/retry.js +72 -0
  148. package/dist/lib/llm/utils/retry.js.map +1 -0
  149. package/dist/lib/llm/utils/stream.d.ts +13 -0
  150. package/dist/lib/llm/utils/stream.d.ts.map +1 -0
  151. package/dist/lib/llm/utils/stream.js +110 -0
  152. package/dist/lib/llm/utils/stream.js.map +1 -0
  153. package/dist/lib/memory/KnowledgeGraph.js +4 -4
  154. package/dist/lib/memory/MemorySearch.js +20 -20
  155. package/dist/lib/memory/MemoryStorage.js +64 -64
  156. package/dist/orchestrator/AgentExecutor.d.ts +23 -0
  157. package/dist/orchestrator/AgentExecutor.d.ts.map +1 -0
  158. package/dist/orchestrator/AgentExecutor.js +231 -0
  159. package/dist/orchestrator/AgentExecutor.js.map +1 -0
  160. package/dist/orchestrator/AgentManager.d.ts +73 -0
  161. package/dist/orchestrator/AgentManager.d.ts.map +1 -0
  162. package/dist/orchestrator/AgentManager.js +184 -0
  163. package/dist/orchestrator/AgentManager.js.map +1 -0
  164. package/dist/orchestrator/LLMCluster.d.ts +70 -0
  165. package/dist/orchestrator/LLMCluster.d.ts.map +1 -0
  166. package/dist/orchestrator/LLMCluster.js +91 -0
  167. package/dist/orchestrator/LLMCluster.js.map +1 -0
  168. package/dist/orchestrator/MultiLlmResearch.d.ts +27 -0
  169. package/dist/orchestrator/MultiLlmResearch.d.ts.map +1 -0
  170. package/dist/orchestrator/MultiLlmResearch.js +145 -0
  171. package/dist/orchestrator/MultiLlmResearch.js.map +1 -0
  172. package/dist/orchestrator/SessionStore.d.ts +41 -0
  173. package/dist/orchestrator/SessionStore.d.ts.map +1 -0
  174. package/dist/orchestrator/SessionStore.js +117 -0
  175. package/dist/orchestrator/SessionStore.js.map +1 -0
  176. package/dist/orchestrator/SmartRouter.d.ts +68 -0
  177. package/dist/orchestrator/SmartRouter.d.ts.map +1 -0
  178. package/dist/orchestrator/SmartRouter.js +256 -0
  179. package/dist/orchestrator/SmartRouter.js.map +1 -0
  180. package/dist/orchestrator/backgroundAgent.d.ts +10 -28
  181. package/dist/orchestrator/backgroundAgent.d.ts.map +1 -1
  182. package/dist/orchestrator/backgroundAgent.js +11 -346
  183. package/dist/orchestrator/backgroundAgent.js.map +1 -1
  184. package/dist/orchestrator/index.d.ts +3 -0
  185. package/dist/orchestrator/index.d.ts.map +1 -1
  186. package/dist/orchestrator/index.js +4 -0
  187. package/dist/orchestrator/index.js.map +1 -1
  188. package/dist/orchestrator/orchestrator.d.ts +19 -154
  189. package/dist/orchestrator/orchestrator.d.ts.map +1 -1
  190. package/dist/orchestrator/orchestrator.js +90 -514
  191. package/dist/orchestrator/orchestrator.js.map +1 -1
  192. package/dist/orchestrator/parallelResearch.d.ts +5 -12
  193. package/dist/orchestrator/parallelResearch.d.ts.map +1 -1
  194. package/dist/orchestrator/parallelResearch.js +10 -193
  195. package/dist/orchestrator/parallelResearch.js.map +1 -1
  196. package/dist/tools/analytics/getUsageAnalytics.d.ts +10 -0
  197. package/dist/tools/analytics/getUsageAnalytics.d.ts.map +1 -0
  198. package/dist/tools/analytics/getUsageAnalytics.js +246 -0
  199. package/dist/tools/analytics/getUsageAnalytics.js.map +1 -0
  200. package/dist/tools/analytics/index.d.ts +5 -0
  201. package/dist/tools/analytics/index.d.ts.map +1 -0
  202. package/dist/tools/analytics/index.js +5 -0
  203. package/dist/tools/analytics/index.js.map +1 -0
  204. package/dist/tools/convention/analyzeComplexity.test.js +115 -115
  205. package/dist/tools/convention/getCodingGuide.d.ts +7 -0
  206. package/dist/tools/convention/getCodingGuide.d.ts.map +1 -0
  207. package/dist/tools/convention/getCodingGuide.js +69 -0
  208. package/dist/tools/convention/getCodingGuide.js.map +1 -0
  209. package/dist/tools/convention/validateCodeQuality.test.js +104 -104
  210. package/dist/tools/index.d.ts +2 -0
  211. package/dist/tools/index.d.ts.map +1 -1
  212. package/dist/tools/index.js +2 -0
  213. package/dist/tools/index.js.map +1 -1
  214. package/dist/tools/planning/analyzeRequirements.d.ts +9 -0
  215. package/dist/tools/planning/analyzeRequirements.d.ts.map +1 -0
  216. package/dist/tools/planning/analyzeRequirements.js +171 -0
  217. package/dist/tools/planning/analyzeRequirements.js.map +1 -0
  218. package/dist/tools/planning/createUserStories.d.ts +9 -0
  219. package/dist/tools/planning/createUserStories.d.ts.map +1 -0
  220. package/dist/tools/planning/createUserStories.js +124 -0
  221. package/dist/tools/planning/createUserStories.js.map +1 -0
  222. package/dist/tools/planning/featureRoadmap.d.ts +10 -0
  223. package/dist/tools/planning/featureRoadmap.d.ts.map +1 -0
  224. package/dist/tools/planning/featureRoadmap.js +207 -0
  225. package/dist/tools/planning/featureRoadmap.js.map +1 -0
  226. package/dist/tools/planning/generatePrd.d.ts +11 -0
  227. package/dist/tools/planning/generatePrd.d.ts.map +1 -0
  228. package/dist/tools/planning/generatePrd.js +161 -0
  229. package/dist/tools/planning/generatePrd.js.map +1 -0
  230. package/dist/tools/planning/index.d.ts +8 -0
  231. package/dist/tools/planning/index.d.ts.map +1 -0
  232. package/dist/tools/planning/index.js +8 -0
  233. package/dist/tools/planning/index.js.map +1 -0
  234. package/dist/tools/prompt/analyzePrompt.d.ts +7 -0
  235. package/dist/tools/prompt/analyzePrompt.d.ts.map +1 -0
  236. package/dist/tools/prompt/analyzePrompt.js +150 -0
  237. package/dist/tools/prompt/analyzePrompt.js.map +1 -0
  238. package/dist/tools/prompt/enhancePrompt.d.ts +8 -0
  239. package/dist/tools/prompt/enhancePrompt.d.ts.map +1 -0
  240. package/dist/tools/prompt/enhancePrompt.js +110 -0
  241. package/dist/tools/prompt/enhancePrompt.js.map +1 -0
  242. package/dist/tools/prompt/enhancePromptGemini.d.ts +8 -0
  243. package/dist/tools/prompt/enhancePromptGemini.d.ts.map +1 -0
  244. package/dist/tools/prompt/enhancePromptGemini.js +332 -0
  245. package/dist/tools/prompt/enhancePromptGemini.js.map +1 -0
  246. package/dist/tools/prompt/index.d.ts +7 -0
  247. package/dist/tools/prompt/index.d.ts.map +1 -0
  248. package/dist/tools/prompt/index.js +7 -0
  249. package/dist/tools/prompt/index.js.map +1 -0
  250. package/dist/tools/reasoning/applyReasoningFramework.d.ts +8 -0
  251. package/dist/tools/reasoning/applyReasoningFramework.d.ts.map +1 -0
  252. package/dist/tools/reasoning/applyReasoningFramework.js +266 -0
  253. package/dist/tools/reasoning/applyReasoningFramework.js.map +1 -0
  254. package/dist/tools/reasoning/index.d.ts +5 -0
  255. package/dist/tools/reasoning/index.d.ts.map +1 -0
  256. package/dist/tools/reasoning/index.js +5 -0
  257. package/dist/tools/reasoning/index.js.map +1 -0
  258. package/dist/tools/thinking/analyzeProblem.d.ts +7 -0
  259. package/dist/tools/thinking/analyzeProblem.d.ts.map +1 -0
  260. package/dist/tools/thinking/analyzeProblem.js +55 -0
  261. package/dist/tools/thinking/analyzeProblem.js.map +1 -0
  262. package/dist/tools/thinking/breakDownProblem.d.ts +8 -0
  263. package/dist/tools/thinking/breakDownProblem.d.ts.map +1 -0
  264. package/dist/tools/thinking/breakDownProblem.js +145 -0
  265. package/dist/tools/thinking/breakDownProblem.js.map +1 -0
  266. package/dist/tools/thinking/createThinkingChain.d.ts +7 -0
  267. package/dist/tools/thinking/createThinkingChain.d.ts.map +1 -0
  268. package/dist/tools/thinking/createThinkingChain.js +44 -0
  269. package/dist/tools/thinking/createThinkingChain.js.map +1 -0
  270. package/dist/tools/thinking/formatAsPlan.d.ts +9 -0
  271. package/dist/tools/thinking/formatAsPlan.d.ts.map +1 -0
  272. package/dist/tools/thinking/formatAsPlan.js +78 -0
  273. package/dist/tools/thinking/formatAsPlan.js.map +1 -0
  274. package/dist/tools/thinking/index.d.ts +10 -0
  275. package/dist/tools/thinking/index.d.ts.map +1 -0
  276. package/dist/tools/thinking/index.js +10 -0
  277. package/dist/tools/thinking/index.js.map +1 -0
  278. package/dist/tools/thinking/stepByStepAnalysis.d.ts +8 -0
  279. package/dist/tools/thinking/stepByStepAnalysis.d.ts.map +1 -0
  280. package/dist/tools/thinking/stepByStepAnalysis.js +63 -0
  281. package/dist/tools/thinking/stepByStepAnalysis.js.map +1 -0
  282. package/dist/tools/thinking/thinkAloudProcess.d.ts +8 -0
  283. package/dist/tools/thinking/thinkAloudProcess.d.ts.map +1 -0
  284. package/dist/tools/thinking/thinkAloudProcess.js +80 -0
  285. package/dist/tools/thinking/thinkAloudProcess.js.map +1 -0
  286. package/hooks/hooks.json +222 -222
  287. package/hooks/scripts/code-check.js +22 -22
  288. package/hooks/scripts/code-review.js +22 -22
  289. package/hooks/scripts/complexity.js +22 -22
  290. package/hooks/scripts/compound.js +23 -23
  291. package/hooks/scripts/context-save.js +33 -33
  292. package/hooks/scripts/generate-brand-assets.js +472 -0
  293. package/hooks/scripts/hud-multiline.js +262 -264
  294. package/hooks/scripts/hud-status.js +291 -293
  295. package/hooks/scripts/keyword-detector.js +214 -216
  296. package/hooks/scripts/llm-orchestrate.js +171 -171
  297. package/hooks/scripts/post-edit.js +97 -97
  298. package/hooks/scripts/post-tool-verify.js +210 -212
  299. package/hooks/scripts/pre-tool-guard.js +125 -127
  300. package/hooks/scripts/recall.js +22 -22
  301. package/hooks/scripts/session-start.js +30 -30
  302. package/hooks/scripts/skill-injector.js +191 -193
  303. package/hooks/scripts/utils.js +97 -97
  304. package/languages/csharp-unity.md +515 -515
  305. package/languages/gdscript-godot.md +470 -470
  306. package/languages/ruby-rails.md +489 -489
  307. package/languages/typescript-angular.md +433 -433
  308. package/languages/typescript-astro.md +416 -416
  309. package/languages/typescript-electron.md +406 -406
  310. package/languages/typescript-nestjs.md +524 -524
  311. package/languages/typescript-svelte.md +407 -407
  312. package/languages/typescript-tauri.md +365 -365
  313. package/package.json +83 -83
  314. package/skills/brand-assets.md +141 -0
  315. package/skills/commerce-patterns.md +361 -0
  316. package/skills/context7-usage.md +102 -102
  317. package/skills/e2e-commerce.md +304 -0
  318. package/skills/frontend-design.md +92 -0
  319. package/skills/git-worktree.md +181 -181
  320. package/skills/parallel-research.md +77 -77
  321. package/skills/priority-todos.md +239 -239
  322. package/skills/seo-checklist.md +244 -0
  323. package/skills/tool-fallback.md +190 -190
  324. package/skills/vibe-capabilities.md +161 -161
  325. package/vibe/constitution.md +227 -227
  326. package/vibe/rules/core/communication-guide.md +98 -98
  327. package/vibe/rules/core/development-philosophy.md +52 -52
  328. package/vibe/rules/core/quick-start.md +102 -102
  329. package/vibe/rules/quality/bdd-contract-testing.md +393 -393
  330. package/vibe/rules/quality/checklist.md +276 -276
  331. package/vibe/rules/quality/testing-strategy.md +440 -440
  332. package/vibe/rules/standards/anti-patterns.md +541 -541
  333. package/vibe/rules/standards/code-structure.md +291 -291
  334. package/vibe/rules/standards/complexity-metrics.md +313 -313
  335. package/vibe/rules/standards/naming-conventions.md +198 -198
  336. package/vibe/setup.sh +31 -31
  337. package/vibe/templates/constitution-template.md +252 -252
  338. package/vibe/templates/contract-backend-template.md +526 -526
  339. package/vibe/templates/contract-frontend-template.md +599 -599
  340. package/vibe/templates/feature-template.md +96 -96
  341. package/vibe/templates/spec-template.md +221 -221
package/dist/cli/setup.js CHANGED
@@ -1,597 +1,20 @@
1
1
  /**
2
2
  * init/update 공통 설정 함수
3
- */
4
- import path from 'path';
5
- import fs from 'fs';
6
- import os from 'os';
7
- import { execSync } from 'child_process';
8
- import { fileURLToPath } from 'url';
9
- import { log, ensureDir, copyDirRecursive, removeDirRecursive, getPackageJson } from './utils.js';
10
- import { STACK_NAMES, getLanguageRulesContent } from './detect.js';
11
- const __filename = fileURLToPath(import.meta.url);
12
- const __dirname = path.dirname(__filename);
13
- // ============================================================================
14
- // OS 언어 감지
15
- // ============================================================================
16
- /**
17
- * OS 언어 설정 감지하여 vibe 언어 반환
18
- * - 한국어 OS → 'ko'
19
- * - 그 외 → 'en' (기본값)
20
- */
21
- export function detectOsLanguage() {
22
- try {
23
- let locale = '';
24
- if (process.platform === 'win32') {
25
- // Windows: PowerShell로 시스템 로캘 확인
26
- try {
27
- locale = execSync('powershell -Command "[System.Globalization.CultureInfo]::CurrentCulture.Name"', {
28
- encoding: 'utf-8',
29
- stdio: ['pipe', 'pipe', 'pipe']
30
- }).trim();
31
- }
32
- catch {
33
- // 대안: LANG 환경변수
34
- locale = process.env.LANG || process.env.LC_ALL || '';
35
- }
36
- }
37
- else {
38
- // macOS/Linux: LANG 환경변수
39
- locale = process.env.LANG || process.env.LC_ALL || process.env.LC_MESSAGES || '';
40
- }
41
- // 한국어 로캘 감지 (ko-KR, ko_KR, ko 등)
42
- if (locale.toLowerCase().startsWith('ko')) {
43
- return 'ko';
44
- }
45
- return 'en';
46
- }
47
- catch {
48
- return 'en';
49
- }
50
- }
51
- // ============================================================================
52
- // 전역 vibe 패키지 설치
53
- // ============================================================================
54
- /**
55
- * 전역 vibe 패키지 설치 경로:
56
- * - Windows: %APPDATA%\vibe\ (예: C:\Users\xxx\AppData\Roaming\vibe\)
57
- * - macOS/Linux: ~/.config/vibe/
58
- * 훅에서 전역 경로로 접근할 수 있게 함 (모든 프로젝트가 공유)
59
- */
60
- export function getVibeConfigDir() {
61
- if (process.platform === 'win32') {
62
- // Windows: APPDATA 환경변수 사용
63
- return path.join(process.env.APPDATA || path.join(os.homedir(), 'AppData', 'Roaming'), 'vibe');
64
- }
65
- // macOS/Linux: XDG 표준
66
- return path.join(os.homedir(), '.config', 'vibe');
67
- }
68
- export function installGlobalVibePackage(isUpdate = false) {
69
- const globalVibeDir = getVibeConfigDir();
70
- const nodeModulesDir = path.join(globalVibeDir, 'node_modules');
71
- const vibePackageDir = path.join(nodeModulesDir, '@su-record', 'vibe');
72
- const packageJson = getPackageJson();
73
- const currentVersion = packageJson.version;
74
- // 이미 설치되어 있는지 확인
75
- const installedPackageJson = path.join(vibePackageDir, 'package.json');
76
- if (fs.existsSync(installedPackageJson)) {
77
- try {
78
- const installed = JSON.parse(fs.readFileSync(installedPackageJson, 'utf-8'));
79
- if (installed.version === currentVersion && !isUpdate) {
80
- return;
81
- }
82
- }
83
- catch { /* ignore: reinstall if can't read */ }
84
- }
85
- // 디렉토리 생성
86
- ensureDir(globalVibeDir);
87
- ensureDir(nodeModulesDir);
88
- ensureDir(path.join(nodeModulesDir, '@su-record'));
89
- // 기존 설치 제거
90
- if (fs.existsSync(vibePackageDir)) {
91
- removeDirRecursive(vibePackageDir);
92
- }
93
- // 1. 패키지 복사 시도 (실패해도 훅은 복사)
94
- try {
95
- const globalNpmRoot = execSync('npm root -g', { encoding: 'utf-8' }).trim();
96
- const globalNpmVibeDir = path.join(globalNpmRoot, '@su-record', 'vibe');
97
- if (fs.existsSync(globalNpmVibeDir)) {
98
- copyDirRecursive(globalNpmVibeDir, vibePackageDir);
99
- }
100
- else {
101
- execSync(`npm install @su-record/vibe@${currentVersion} --prefix "${globalVibeDir}" --no-save`, {
102
- stdio: 'pipe',
103
- });
104
- }
105
- }
106
- catch (e) {
107
- const message = e instanceof Error ? e.message : String(e);
108
- log(' ⚠️ Package install failed: ' + message + '\n');
109
- }
110
- // 2. 훅 스크립트 복사 (패키지 복사 실패해도 실행)
111
- try {
112
- const packageRoot = path.resolve(__dirname, '..', '..');
113
- const installedHooksSource = path.join(vibePackageDir, 'hooks', 'scripts');
114
- const localHooksSource = path.join(packageRoot, 'hooks', 'scripts');
115
- const hooksScriptsSource = fs.existsSync(installedHooksSource) ? installedHooksSource : localHooksSource;
116
- const hooksScriptsTarget = path.join(globalVibeDir, 'hooks', 'scripts');
117
- if (fs.existsSync(hooksScriptsSource)) {
118
- ensureDir(path.join(globalVibeDir, 'hooks'));
119
- if (fs.existsSync(hooksScriptsTarget)) {
120
- removeDirRecursive(hooksScriptsTarget);
121
- }
122
- copyDirRecursive(hooksScriptsSource, hooksScriptsTarget);
123
- }
124
- else {
125
- log(' ⚠️ Hook scripts source not found: ' + hooksScriptsSource + '\n');
126
- }
127
- }
128
- catch (e) {
129
- const message = e instanceof Error ? e.message : String(e);
130
- log(' ⚠️ Hook scripts copy failed: ' + message + '\n');
131
- }
132
- }
133
- // ============================================================================
134
- // MCP 서버 등록 (레거시 - 더 이상 사용하지 않음)
135
- // ============================================================================
136
- /**
137
- * MCP 서버 정리 (no-op)
138
- * vibe는 더 이상 MCP를 사용하지 않음
139
- * context7은 사용자가 직접 플러그인으로 설치: /plugin install context7
140
- */
141
- export function registerMcpServers(_isUpdate = false) {
142
- // no-op: vibe는 MCP를 사용하지 않음
143
- }
144
- // ============================================================================
145
- // constitution.md 생성/업데이트
146
- // ============================================================================
147
- /**
148
- * constitution.md 생성 또는 업데이트
149
- */
150
- export function updateConstitution(vibeDir, detectedStacks, stackDetails) {
151
- const templatePath = path.join(__dirname, '../../vibe/templates/constitution-template.md');
152
- const constitutionPath = path.join(vibeDir, 'constitution.md');
153
- if (!fs.existsSync(templatePath))
154
- return;
155
- let constitution = fs.readFileSync(templatePath, 'utf-8');
156
- const backendStack = detectedStacks.find(s => s.type.includes('python') || s.type.includes('node') ||
157
- s.type.includes('go') || s.type.includes('java') || s.type.includes('rust'));
158
- const frontendStack = detectedStacks.find(s => s.type.includes('react') || s.type.includes('vue') ||
159
- s.type.includes('flutter') || s.type.includes('swift') || s.type.includes('android'));
160
- if (backendStack && STACK_NAMES[backendStack.type]) {
161
- const info = STACK_NAMES[backendStack.type];
162
- constitution = constitution.replace('- Language: {Python 3.11+ / Node.js / etc.}', `- Language: ${info.lang}`);
163
- constitution = constitution.replace('- Framework: {FastAPI / Express / etc.}', `- Framework: ${info.framework}`);
164
- }
165
- if (frontendStack && STACK_NAMES[frontendStack.type]) {
166
- const info = STACK_NAMES[frontendStack.type];
167
- constitution = constitution.replace('- Framework: {Flutter / React / etc.}', `- Framework: ${info.framework}`);
168
- }
169
- constitution = constitution.replace('- Database: {PostgreSQL / MongoDB / etc.}', stackDetails.databases.length > 0 ? `- Database: ${stackDetails.databases.join(', ')}` : '- Database: (configure for your project)');
170
- constitution = constitution.replace('- State Management: {Provider / Redux / etc.}', stackDetails.stateManagement.length > 0 ? `- State Management: ${stackDetails.stateManagement.join(', ')}` : '- State Management: (configure for your project)');
171
- constitution = constitution.replace('- Hosting: {Cloud Run / Vercel / etc.}', stackDetails.hosting.length > 0 ? `- Hosting: ${stackDetails.hosting.join(', ')}` : '- Hosting: (configure for your project)');
172
- constitution = constitution.replace('- CI/CD: {GitHub Actions / etc.}', stackDetails.cicd.length > 0 ? `- CI/CD: ${stackDetails.cicd.join(', ')}` : '- CI/CD: (configure for your project)');
173
- fs.writeFileSync(constitutionPath, constitution);
174
- }
175
- // ============================================================================
176
- // CLAUDE.md 업데이트
177
- // ============================================================================
178
- /**
179
- * CLAUDE.md 업데이트 (vibe 섹션 추가/교체)
180
- */
181
- export function updateClaudeMd(projectRoot, detectedStacks, isUpdate = false) {
182
- const vibeClaudeMd = path.join(__dirname, '../../CLAUDE.md');
183
- const projectClaudeMd = path.join(projectRoot, 'CLAUDE.md');
184
- if (!fs.existsSync(vibeClaudeMd))
185
- return;
186
- let vibeContent = fs.readFileSync(vibeClaudeMd, 'utf-8');
187
- // OS 언어 감지하여 응답 언어 설정 추가
188
- const osLanguage = detectOsLanguage();
189
- const languageInstruction = osLanguage === 'ko'
190
- ? '\n\n## Response Language\n\n**IMPORTANT: Always respond in Korean (한국어) unless the user explicitly requests otherwise.**'
191
- : '\n\n## Response Language\n\n**IMPORTANT: Always respond in English unless the user explicitly requests otherwise.**';
192
- // # VIBE 헤더 바로 다음에 언어 설정 추가
193
- vibeContent = vibeContent.replace('# VIBE\n\nSPEC-driven AI Coding Framework (Claude Code Exclusive)', '# VIBE\n\nSPEC-driven AI Coding Framework (Claude Code Exclusive)' + languageInstruction);
194
- // 감지된 기술 스택에 따라 언어별 규칙 추가
195
- const languageRules = getLanguageRulesContent(detectedStacks);
196
- if (languageRules) {
197
- vibeContent = vibeContent.replace('### Error Handling Required', languageRules + '\n\n### Error Handling Required');
198
- }
199
- if (fs.existsSync(projectClaudeMd)) {
200
- const existingContent = fs.readFileSync(projectClaudeMd, 'utf-8');
201
- if (isUpdate) {
202
- // update: vibe 섹션 찾아서 교체
203
- const vibeStartMarker = '# VIBE';
204
- const sectionSeparator = '\n---\n';
205
- if (existingContent.includes(vibeStartMarker)) {
206
- const vibeStartIdx = existingContent.indexOf(vibeStartMarker);
207
- const beforeVibe = existingContent.substring(0, vibeStartIdx).trimEnd();
208
- const afterVibeStart = existingContent.substring(vibeStartIdx);
209
- const nextSeparatorIdx = afterVibeStart.indexOf(sectionSeparator);
210
- let afterVibe = '';
211
- if (nextSeparatorIdx !== -1) {
212
- afterVibe = afterVibeStart.substring(nextSeparatorIdx);
213
- }
214
- const newContent = beforeVibe + (beforeVibe ? '\n\n---\n\n' : '') + vibeContent + afterVibe;
215
- fs.writeFileSync(projectClaudeMd, newContent);
216
- }
217
- else if (!existingContent.includes('/vibe.spec')) {
218
- const mergedContent = existingContent.trim() + '\n\n---\n\n' + vibeContent;
219
- fs.writeFileSync(projectClaudeMd, mergedContent);
220
- }
221
- }
222
- else {
223
- // init: add if not exists
224
- if (!existingContent.includes('/vibe.spec')) {
225
- const mergedContent = existingContent.trim() + '\n\n---\n\n' + vibeContent;
226
- fs.writeFileSync(projectClaudeMd, mergedContent);
227
- }
228
- }
229
- }
230
- else {
231
- fs.writeFileSync(projectClaudeMd, vibeContent);
232
- }
233
- }
234
- // ============================================================================
235
- // 규칙 복사/업데이트
236
- // ============================================================================
237
- /**
238
- * 프로젝트 vibe 폴더 설정 (rules/languages/templates는 전역 패키지 참조)
239
3
  *
240
- * 전역 패키지에서 참조하는 항목 (복사하지 않음):
241
- * - vibe/rules/ - 범용 코딩 규칙
242
- * - vibe/languages/ - 언어별 규칙
243
- * - vibe/templates/ - SPEC/Feature 템플릿
4
+ * v2.6.0: 기능이 4개 모듈로 분리됨
5
+ * - setup/LanguageDetector: OS 언어 감지
6
+ * - setup/GlobalInstaller: 전역 패키지/자산 설치
7
+ * - setup/ProjectSetup: 프로젝트 레벨 설정
8
+ * - setup/LegacyMigration: 레거시 마이그레이션/정리
244
9
  *
245
- * 프로젝트에 생성하는 항목:
246
- * - specs/ - 생성된 SPEC 문서
247
- * - features/ - 생성된 BDD 시나리오
248
- * - config.json - 프로젝트 설정
249
- * - constitution.md - 프로젝트별 커스터마이징
250
- */
251
- export function updateRules(vibeDir, detectedStacks, isUpdate = false) {
252
- // 레거시 폴더 정리 (이전 버전에서 복사된 것들)
253
- const legacyFolders = ['rules', 'languages', 'templates'];
254
- legacyFolders.forEach(folder => {
255
- const legacyPath = path.join(vibeDir, folder);
256
- if (fs.existsSync(legacyPath)) {
257
- removeDirRecursive(legacyPath);
258
- }
259
- });
260
- // specs, features 폴더 확인/생성
261
- ['specs', 'features'].forEach(dir => {
262
- ensureDir(path.join(vibeDir, dir));
263
- });
264
- }
265
- // ============================================================================
266
- // 전역 assets 설치/업데이트
267
- // ============================================================================
268
- /**
269
- * ~/.claude/ 전역 assets 설치 (commands, agents, skills, hooks)
270
- */
271
- export function installGlobalAssets(isUpdate = false) {
272
- const globalClaudeDir = path.join(os.homedir(), '.claude');
273
- ensureDir(globalClaudeDir);
274
- // commands
275
- const globalCommandsDir = path.join(globalClaudeDir, 'commands');
276
- ensureDir(globalCommandsDir);
277
- const commandsSource = path.join(__dirname, '../../commands');
278
- copyDirRecursive(commandsSource, globalCommandsDir);
279
- // agents
280
- const globalAgentsDir = path.join(globalClaudeDir, 'agents');
281
- ensureDir(globalAgentsDir);
282
- const agentsSource = path.join(__dirname, '../../agents');
283
- copyDirRecursive(agentsSource, globalAgentsDir);
284
- // skills
285
- const globalSkillsDir = path.join(globalClaudeDir, 'skills');
286
- ensureDir(globalSkillsDir);
287
- const skillsSource = path.join(__dirname, '../../skills');
288
- if (fs.existsSync(skillsSource)) {
289
- copyDirRecursive(skillsSource, globalSkillsDir);
290
- }
291
- // hooks는 프로젝트 레벨에서 관리 (installProjectHooks에서 처리)
292
- // 전역 설정에는 훅을 등록하지 않음 - 프로젝트별 .claude/settings.local.json 사용
293
- }
294
- // ============================================================================
295
- // 프로젝트 레벨 훅 설치
296
- // ============================================================================
297
- /**
298
- * 프로젝트 레벨 훅 설치 (.claude/settings.local.json)
299
- * 전역이 아닌 프로젝트별로 훅을 등록하여 다른 프로젝트에 영향 없음
300
- */
301
- export function installProjectHooks(projectRoot) {
302
- const claudeDir = path.join(projectRoot, '.claude');
303
- const settingsLocalPath = path.join(claudeDir, 'settings.local.json');
304
- const hooksTemplate = path.join(__dirname, '../../hooks/hooks.json');
305
- if (!fs.existsSync(hooksTemplate))
306
- return;
307
- ensureDir(claudeDir);
308
- // 템플릿 읽고 플레이스홀더 치환
309
- let hooksContent = fs.readFileSync(hooksTemplate, 'utf-8');
310
- const vibeConfigPath = getVibeConfigDir();
311
- // Windows 경로는 슬래시 사용
312
- const vibePathForUrl = vibeConfigPath.replace(/\\/g, '/');
313
- hooksContent = hooksContent.replace(/\{\{VIBE_PATH\}\}/g, vibePathForUrl);
314
- const vibeHooks = JSON.parse(hooksContent);
315
- if (fs.existsSync(settingsLocalPath)) {
316
- // 기존 settings.local.json에 hooks 병합
317
- try {
318
- const existingSettings = JSON.parse(fs.readFileSync(settingsLocalPath, 'utf-8'));
319
- existingSettings.hooks = vibeHooks.hooks;
320
- fs.writeFileSync(settingsLocalPath, JSON.stringify(existingSettings, null, 2));
321
- }
322
- catch {
323
- // 파싱 실패시 새로 생성
324
- fs.writeFileSync(settingsLocalPath, JSON.stringify(vibeHooks, null, 2));
325
- }
326
- }
327
- else {
328
- // 새로 생성
329
- fs.writeFileSync(settingsLocalPath, JSON.stringify(vibeHooks, null, 2));
330
- }
331
- }
332
- // ============================================================================
333
- // 레거시 마이그레이션
334
- // ============================================================================
335
- /**
336
- * .vibe/ → .claude/vibe/ 마이그레이션
337
- */
338
- export function migrateLegacyVibe(projectRoot, vibeDir) {
339
- const legacyVibeDir = path.join(projectRoot, '.vibe');
340
- if (!fs.existsSync(legacyVibeDir))
341
- return false;
342
- ensureDir(vibeDir);
343
- try {
344
- const itemsToMigrate = ['specs', 'features', 'solutions', 'todos', 'memory', 'rules', 'config.json', 'constitution.md'];
345
- itemsToMigrate.forEach(item => {
346
- const src = path.join(legacyVibeDir, item);
347
- const dst = path.join(vibeDir, item);
348
- if (fs.existsSync(src) && !fs.existsSync(dst)) {
349
- if (fs.statSync(src).isDirectory()) {
350
- copyDirRecursive(src, dst);
351
- }
352
- else {
353
- fs.copyFileSync(src, dst);
354
- }
355
- }
356
- });
357
- removeDirRecursive(legacyVibeDir);
358
- return true;
359
- }
360
- catch { /* ignore: optional operation */
361
- return false;
362
- }
363
- }
364
- // ============================================================================
365
- // .gitignore 업데이트
366
- // ============================================================================
367
- /**
368
- * .gitignore 업데이트 (레거시 정리 + settings.local.json 추가)
369
- */
370
- export function updateGitignore(projectRoot) {
371
- const gitignorePath = path.join(projectRoot, '.gitignore');
372
- if (!fs.existsSync(gitignorePath))
373
- return;
374
- let gitignore = fs.readFileSync(gitignorePath, 'utf-8');
375
- let modified = false;
376
- // settings.local.json 추가 (프로젝트 훅 설정 - 개인 설정이므로 커밋하지 않음)
377
- if (!gitignore.includes('.claude/settings.local.json')) {
378
- gitignore = gitignore.trimEnd() + '\n\n# vibe project hooks (personal)\n.claude/settings.local.json\n';
379
- modified = true;
380
- }
381
- // 레거시 mcp 폴더 제외 제거
382
- if (gitignore.includes('.claude/vibe/mcp/')) {
383
- gitignore = gitignore.replace(/# vibe MCP\n\.claude\/vibe\/mcp\/\n?/g, '');
384
- gitignore = gitignore.replace(/\.claude\/vibe\/mcp\/\n?/g, '');
385
- modified = true;
386
- }
387
- // 레거시 node_modules 제외 제거 (전역으로 이동됨)
388
- if (gitignore.includes('.claude/vibe/node_modules/')) {
389
- gitignore = gitignore.replace(/# vibe local packages\n\.claude\/vibe\/node_modules\/\n?/g, '');
390
- gitignore = gitignore.replace(/\.claude\/vibe\/node_modules\/\n?/g, '');
391
- modified = true;
392
- }
393
- // 레거시: settings.local.json 제거 로직 삭제됨
394
- // 이제 settings.local.json은 프로젝트 훅 설정으로 사용됨
395
- if (modified) {
396
- fs.writeFileSync(gitignorePath, gitignore);
397
- }
398
- }
399
- // ============================================================================
400
- // config.json 생성/업데이트
401
- // ============================================================================
402
- /**
403
- * 스택 기반 references 생성
404
- * Claude가 명시적으로 참조할 전역 문서 경로 목록
405
- */
406
- function generateReferences(detectedStacks) {
407
- const globalVibeDir = '~/.claude/vibe';
408
- // 모든 rules 문서 (core, quality, standards)
409
- const rules = [
410
- // core
411
- `${globalVibeDir}/rules/core/quick-start.md`,
412
- `${globalVibeDir}/rules/core/development-philosophy.md`,
413
- `${globalVibeDir}/rules/core/communication-guide.md`,
414
- // quality
415
- `${globalVibeDir}/rules/quality/checklist.md`,
416
- `${globalVibeDir}/rules/quality/bdd-contract-testing.md`,
417
- `${globalVibeDir}/rules/quality/testing-strategy.md`,
418
- // standards
419
- `${globalVibeDir}/rules/standards/anti-patterns.md`,
420
- `${globalVibeDir}/rules/standards/code-structure.md`,
421
- `${globalVibeDir}/rules/standards/complexity-metrics.md`,
422
- `${globalVibeDir}/rules/standards/naming-conventions.md`
423
- ];
424
- // 스택 기반 languages
425
- const languages = detectedStacks.map(stack => `${globalVibeDir}/languages/${stack.type}.md`);
426
- // 모든 templates
427
- const templates = [
428
- `${globalVibeDir}/templates/spec-template.md`,
429
- `${globalVibeDir}/templates/feature-template.md`,
430
- `${globalVibeDir}/templates/constitution-template.md`,
431
- `${globalVibeDir}/templates/contract-backend-template.md`,
432
- `${globalVibeDir}/templates/contract-frontend-template.md`
433
- ];
434
- return { rules, languages, templates };
435
- }
436
- export function updateConfig(vibeDir, detectedStacks, stackDetails, isUpdate = false) {
437
- const configPath = path.join(vibeDir, 'config.json');
438
- const references = generateReferences(detectedStacks);
439
- if (isUpdate && fs.existsSync(configPath)) {
440
- try {
441
- const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
442
- // 기존 config에 language가 없으면 추가
443
- if (!config.language) {
444
- config.language = detectOsLanguage();
445
- }
446
- // 기존 config에 quality가 없으면 추가
447
- if (!config.quality) {
448
- config.quality = { strict: true, autoVerify: true };
449
- }
450
- config.stacks = detectedStacks;
451
- config.details = stackDetails;
452
- config.references = references;
453
- fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
454
- }
455
- catch { /* ignore: optional operation */ }
456
- }
457
- else {
458
- const config = {
459
- language: detectOsLanguage(),
460
- quality: { strict: true, autoVerify: true },
461
- stacks: detectedStacks,
462
- details: stackDetails,
463
- references
464
- };
465
- fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
466
- }
467
- }
468
- // ============================================================================
469
- // 레거시 정리
470
- // ============================================================================
471
- /**
472
- * 레거시 파일/폴더 정리
473
- */
474
- export function cleanupLegacy(projectRoot, claudeDir) {
475
- // .agent/rules/ 정리
476
- const oldRulesDir = path.join(projectRoot, '.agent/rules');
477
- const oldAgentDir = path.join(projectRoot, '.agent');
478
- if (fs.existsSync(oldRulesDir)) {
479
- removeDirRecursive(oldRulesDir);
480
- if (fs.existsSync(oldAgentDir) && fs.readdirSync(oldAgentDir).length === 0) {
481
- fs.rmdirSync(oldAgentDir);
482
- }
483
- }
484
- // 레거시 커맨드 파일 정리
485
- const commandsDir = path.join(claudeDir, 'commands');
486
- if (fs.existsSync(commandsDir)) {
487
- const legacyCommands = [
488
- 'vibe.analyze.md', 'vibe.compound.md', 'vibe.continue.md',
489
- 'vibe.diagram.md', 'vibe.e2e.md', 'vibe.reason.md',
490
- 'vibe.setup.md', 'vibe.ui.md'
491
- ];
492
- legacyCommands.forEach(cmd => {
493
- const cmdPath = path.join(commandsDir, cmd);
494
- if (fs.existsSync(cmdPath)) {
495
- fs.unlinkSync(cmdPath);
496
- }
497
- });
498
- }
499
- // 레거시 에이전트 파일 정리
500
- const agentsDir = path.join(claudeDir, 'agents');
501
- if (fs.existsSync(agentsDir)) {
502
- const legacyAgents = ['reviewer.md', 'analyzer.md', 'reasoner.md'];
503
- legacyAgents.forEach(agent => {
504
- const agentPath = path.join(agentsDir, agent);
505
- if (fs.existsSync(agentPath)) {
506
- fs.unlinkSync(agentPath);
507
- }
508
- });
509
- }
510
- // 프로젝트 로컬 settings.json 제거 (전역으로 이동됨)
511
- const localSettingsPath = path.join(claudeDir, 'settings.json');
512
- if (fs.existsSync(localSettingsPath)) {
513
- try {
514
- fs.unlinkSync(localSettingsPath);
515
- }
516
- catch { /* ignore: optional operation */ }
517
- }
518
- }
519
- /**
520
- * 프로젝트 로컬 설정/자산 제거 (전역으로 이동됨)
521
- * 단, settings.local.json은 유지 (프로젝트 훅 설정)
522
- */
523
- export function removeLocalAssets(claudeDir) {
524
- const localAssets = [
525
- { path: path.join(claudeDir, 'settings.json'), isDir: false },
526
- // settings.local.json은 프로젝트 훅 설정이므로 유지
527
- { path: path.join(claudeDir, 'commands'), isDir: true },
528
- { path: path.join(claudeDir, 'agents'), isDir: true },
529
- { path: path.join(claudeDir, 'skills'), isDir: true },
530
- ];
531
- localAssets.forEach(asset => {
532
- if (fs.existsSync(asset.path)) {
533
- if (asset.isDir) {
534
- removeDirRecursive(asset.path);
535
- }
536
- else {
537
- fs.unlinkSync(asset.path);
538
- }
539
- }
540
- });
541
- }
542
- /**
543
- * ~/.claude.json 정리 (로컬 MCP 설정 제거)
544
- */
545
- export function cleanupClaudeConfig() {
546
- const claudeConfigPath = path.join(os.homedir(), '.claude.json');
547
- if (!fs.existsSync(claudeConfigPath))
548
- return;
549
- try {
550
- const claudeConfig = JSON.parse(fs.readFileSync(claudeConfigPath, 'utf-8'));
551
- let configModified = false;
552
- if (claudeConfig.projects) {
553
- for (const [projectPath, projectConfig] of Object.entries(claudeConfig.projects)) {
554
- if (projectConfig.mcpServers) {
555
- if (projectConfig.mcpServers.vibe) {
556
- const vibeArgs = projectConfig.mcpServers.vibe.args || [];
557
- const isLocalPath = vibeArgs.some((arg) => arg.includes('.vibe/mcp/') || arg.includes('.vibe\\mcp\\'));
558
- if (isLocalPath) {
559
- delete projectConfig.mcpServers.vibe;
560
- configModified = true;
561
- log(` 🧹 ${projectPath}: removed local vibe MCP\n`);
562
- }
563
- }
564
- if (projectConfig.mcpServers['vibe-gemini']) {
565
- const geminiArgs = projectConfig.mcpServers['vibe-gemini'].args || [];
566
- const isLocalPath = geminiArgs.some((arg) => arg.includes('.vibe/') || arg.includes('.vibe\\'));
567
- if (isLocalPath) {
568
- delete projectConfig.mcpServers['vibe-gemini'];
569
- configModified = true;
570
- }
571
- }
572
- if (projectConfig.mcpServers.context7) {
573
- delete projectConfig.mcpServers.context7;
574
- configModified = true;
575
- }
576
- }
577
- }
578
- }
579
- if (configModified) {
580
- fs.writeFileSync(claudeConfigPath, JSON.stringify(claudeConfig, null, 2));
581
- }
582
- }
583
- catch { /* ignore: optional operation */ }
584
- }
585
- /**
586
- * 레거시 mcp/ 폴더 정리
587
- */
588
- export function cleanupLegacyMcp(vibeDir) {
589
- const oldMcpDir = path.join(vibeDir, 'mcp');
590
- if (fs.existsSync(oldMcpDir)) {
591
- try {
592
- removeDirRecursive(oldMcpDir);
593
- }
594
- catch { /* ignore: optional operation */ }
595
- }
596
- }
10
+ * 파일은 하위 호환성을 위해 모든 함수를 re-export
11
+ */
12
+ // LanguageDetector
13
+ export { detectOsLanguage } from './setup/LanguageDetector.js';
14
+ // GlobalInstaller
15
+ export { getVibeConfigDir, installGlobalVibePackage, installGlobalAssets, registerMcpServers } from './setup/GlobalInstaller.js';
16
+ // ProjectSetup
17
+ export { updateConstitution, updateClaudeMd, updateRules, installProjectHooks, updateGitignore, updateConfig } from './setup/ProjectSetup.js';
18
+ // LegacyMigration
19
+ export { migrateLegacyVibe, cleanupLegacy, removeLocalAssets, cleanupClaudeConfig, cleanupLegacyMcp } from './setup/LegacyMigration.js';
597
20
  //# sourceMappingURL=setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,mBAAmB;AACnB,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAE/D,kBAAkB;AAClB,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,4BAA4B,CAAC;AAEpC,eAAe;AACf,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,YAAY,EACb,MAAM,yBAAyB,CAAC;AAEjC,kBAAkB;AAClB,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,4BAA4B,CAAC"}
@@ -1,8 +1,6 @@
1
1
  /**
2
2
  * DeepInit - Hierarchical AGENTS.md Generation
3
3
  * Creates AI-readable documentation hierarchy with parent references
4
- *
5
- * Inspired by oh-my-claudecode's deepinit skill (321 lines)
6
4
  */
7
5
  export interface DirectoryInfo {
8
6
  path: string;