@su-record/vibe 1.1.1 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/vibe +81 -31
- package/package.json +1 -1
package/bin/vibe
CHANGED
|
@@ -453,22 +453,38 @@ async function init(projectName) {
|
|
|
453
453
|
return;
|
|
454
454
|
}
|
|
455
455
|
|
|
456
|
+
// .vibe 폴더 먼저 생성
|
|
457
|
+
ensureDir(vibeDir);
|
|
458
|
+
|
|
456
459
|
// MCP 서버 등록 (Claude Code)
|
|
457
460
|
log('🔧 Claude Code MCP 서버 등록 중...\n');
|
|
458
461
|
const { execSync } = require('child_process');
|
|
459
462
|
|
|
460
|
-
// 1. hi-ai MCP (
|
|
461
|
-
|
|
463
|
+
// 1. hi-ai MCP (.vibe/mcp 폴더 내 설치)
|
|
464
|
+
const vibeMcpDir = path.join(vibeDir, 'mcp');
|
|
465
|
+
ensureDir(vibeMcpDir);
|
|
466
|
+
|
|
467
|
+
// .vibe/mcp/package.json 생성
|
|
468
|
+
const mcpPackageJson = {
|
|
469
|
+
name: 'vibe-mcp',
|
|
470
|
+
version: '1.0.0',
|
|
471
|
+
private: true,
|
|
472
|
+
dependencies: {
|
|
473
|
+
'@su-record/hi-ai': 'latest'
|
|
474
|
+
}
|
|
475
|
+
};
|
|
476
|
+
fs.writeFileSync(path.join(vibeMcpDir, 'package.json'), JSON.stringify(mcpPackageJson, null, 2));
|
|
477
|
+
|
|
478
|
+
log(' 📦 hi-ai MCP 패키지 설치 중 (.vibe/mcp/)...\n');
|
|
462
479
|
try {
|
|
463
|
-
|
|
464
|
-
execSync('npm install @su-record/hi-ai --save-dev', { stdio: 'pipe', cwd: projectRoot });
|
|
480
|
+
execSync('npm install', { stdio: 'pipe', cwd: vibeMcpDir });
|
|
465
481
|
log(' ✅ hi-ai 패키지 설치 완료\n');
|
|
466
482
|
} catch (e) {
|
|
467
|
-
log(' ⚠️ hi-ai 패키지 설치
|
|
483
|
+
log(' ⚠️ hi-ai 패키지 설치 실패\n');
|
|
468
484
|
}
|
|
469
485
|
|
|
470
|
-
//
|
|
471
|
-
const mcpPath = path.join(
|
|
486
|
+
// .vibe/mcp 경로로 MCP 등록
|
|
487
|
+
const mcpPath = path.join(vibeMcpDir, 'node_modules', '@su-record', 'hi-ai', 'dist', 'index.js');
|
|
472
488
|
try {
|
|
473
489
|
execSync(`claude mcp add vibe node "${mcpPath}"`, { stdio: 'pipe' });
|
|
474
490
|
log(' ✅ vibe MCP 등록 완료\n');
|
|
@@ -492,12 +508,25 @@ async function init(projectName) {
|
|
|
492
508
|
}
|
|
493
509
|
}
|
|
494
510
|
|
|
495
|
-
// .vibe 폴더 구조 생성
|
|
496
|
-
const dirs = ['
|
|
511
|
+
// .vibe 폴더 구조 생성 (mcp는 이미 생성됨)
|
|
512
|
+
const dirs = ['specs', 'features'];
|
|
497
513
|
dirs.forEach(dir => {
|
|
498
514
|
ensureDir(path.join(vibeDir, dir));
|
|
499
515
|
});
|
|
500
516
|
|
|
517
|
+
// .vibe/mcp/node_modules를 gitignore에 추가
|
|
518
|
+
const mcpGitignorePath = path.join(projectRoot, '.gitignore');
|
|
519
|
+
const mcpIgnore = '.vibe/mcp/node_modules';
|
|
520
|
+
if (fs.existsSync(mcpGitignorePath)) {
|
|
521
|
+
let mcpGitignore = fs.readFileSync(mcpGitignorePath, 'utf-8');
|
|
522
|
+
if (!mcpGitignore.includes(mcpIgnore)) {
|
|
523
|
+
mcpGitignore += `\n# vibe MCP\n${mcpIgnore}\n`;
|
|
524
|
+
fs.writeFileSync(mcpGitignorePath, mcpGitignore);
|
|
525
|
+
}
|
|
526
|
+
} else {
|
|
527
|
+
fs.writeFileSync(mcpGitignorePath, `# vibe MCP\n${mcpIgnore}\n`);
|
|
528
|
+
}
|
|
529
|
+
|
|
501
530
|
// .claude/commands 복사
|
|
502
531
|
const claudeDir = path.join(projectRoot, '.claude');
|
|
503
532
|
const commandsDir = path.join(claudeDir, 'commands');
|
|
@@ -1091,25 +1120,55 @@ async function update() {
|
|
|
1091
1120
|
// 협업자 자동 설치 설정 (update에서도 실행)
|
|
1092
1121
|
setupCollaboratorAutoInstall(projectRoot);
|
|
1093
1122
|
|
|
1094
|
-
// MCP 서버: hi-ai
|
|
1095
|
-
const
|
|
1096
|
-
|
|
1097
|
-
|
|
1123
|
+
// MCP 서버: .vibe/mcp 폴더에 hi-ai 설치 확인 및 경로 업데이트
|
|
1124
|
+
const vibeMcpDir = path.join(vibeDir, 'mcp');
|
|
1125
|
+
const vibeMcpHiAiPath = path.join(vibeMcpDir, 'node_modules', '@su-record', 'hi-ai', 'dist', 'index.js');
|
|
1126
|
+
|
|
1127
|
+
if (!fs.existsSync(vibeMcpHiAiPath)) {
|
|
1128
|
+
log(' 📦 hi-ai MCP 패키지 설치 중 (.vibe/mcp/)...\n');
|
|
1098
1129
|
try {
|
|
1099
1130
|
const { execSync } = require('child_process');
|
|
1100
|
-
|
|
1131
|
+
ensureDir(vibeMcpDir);
|
|
1132
|
+
|
|
1133
|
+
// .vibe/mcp/package.json 생성
|
|
1134
|
+
const mcpPackageJson = {
|
|
1135
|
+
name: 'vibe-mcp',
|
|
1136
|
+
version: '1.0.0',
|
|
1137
|
+
private: true,
|
|
1138
|
+
dependencies: {
|
|
1139
|
+
'@su-record/hi-ai': 'latest'
|
|
1140
|
+
}
|
|
1141
|
+
};
|
|
1142
|
+
fs.writeFileSync(path.join(vibeMcpDir, 'package.json'), JSON.stringify(mcpPackageJson, null, 2));
|
|
1143
|
+
|
|
1144
|
+
execSync('npm install', { stdio: 'pipe', cwd: vibeMcpDir });
|
|
1101
1145
|
log(' ✅ hi-ai 패키지 설치 완료\n');
|
|
1102
1146
|
|
|
1103
|
-
// MCP 경로 업데이트
|
|
1147
|
+
// MCP 경로 업데이트
|
|
1104
1148
|
try {
|
|
1105
1149
|
execSync(`claude mcp remove vibe`, { stdio: 'pipe' });
|
|
1106
|
-
|
|
1107
|
-
|
|
1150
|
+
} catch (e) {}
|
|
1151
|
+
try {
|
|
1152
|
+
execSync(`claude mcp add vibe node "${vibeMcpHiAiPath}"`, { stdio: 'pipe' });
|
|
1153
|
+
log(' ✅ vibe MCP 경로 업데이트 완료\n');
|
|
1108
1154
|
} catch (e) {
|
|
1109
|
-
|
|
1155
|
+
if (!e.message.includes('already exists')) {
|
|
1156
|
+
log(' ⚠️ MCP 경로 업데이트 실패\n');
|
|
1157
|
+
}
|
|
1158
|
+
}
|
|
1159
|
+
|
|
1160
|
+
// .gitignore에 추가
|
|
1161
|
+
const gitignorePath2 = path.join(projectRoot, '.gitignore');
|
|
1162
|
+
const mcpIgnore = '.vibe/mcp/node_modules';
|
|
1163
|
+
if (fs.existsSync(gitignorePath2)) {
|
|
1164
|
+
let gitignore = fs.readFileSync(gitignorePath2, 'utf-8');
|
|
1165
|
+
if (!gitignore.includes(mcpIgnore)) {
|
|
1166
|
+
gitignore += `\n# vibe MCP\n${mcpIgnore}\n`;
|
|
1167
|
+
fs.writeFileSync(gitignorePath2, gitignore);
|
|
1168
|
+
}
|
|
1110
1169
|
}
|
|
1111
1170
|
} catch (e) {
|
|
1112
|
-
log(' ⚠️ hi-ai 패키지 설치
|
|
1171
|
+
log(' ⚠️ hi-ai 패키지 설치 실패\n');
|
|
1113
1172
|
}
|
|
1114
1173
|
}
|
|
1115
1174
|
|
|
@@ -1368,27 +1427,18 @@ function remove() {
|
|
|
1368
1427
|
} catch (e) {}
|
|
1369
1428
|
}
|
|
1370
1429
|
|
|
1371
|
-
// 6. hi-ai
|
|
1372
|
-
|
|
1373
|
-
if (fs.existsSync(hiAiPath)) {
|
|
1374
|
-
try {
|
|
1375
|
-
execSync('npm uninstall @su-record/hi-ai', { stdio: 'pipe', cwd: projectRoot });
|
|
1376
|
-
console.log(' ✅ hi-ai 패키지 제거 완료\n');
|
|
1377
|
-
} catch (e) {
|
|
1378
|
-
console.log(' ⚠️ hi-ai 패키지 제거 실패 (수동: npm uninstall @su-record/hi-ai)\n');
|
|
1379
|
-
}
|
|
1380
|
-
}
|
|
1430
|
+
// 6. hi-ai 패키지는 .vibe/mcp/에 설치되어 있으므로
|
|
1431
|
+
// .vibe/ 폴더 제거 시 함께 삭제됨 (별도 작업 불필요)
|
|
1381
1432
|
|
|
1382
1433
|
console.log(`
|
|
1383
1434
|
✅ vibe 제거 완료!
|
|
1384
1435
|
|
|
1385
1436
|
제거된 항목:
|
|
1386
1437
|
- MCP 서버 (vibe, context7)
|
|
1387
|
-
- .vibe/ 폴더
|
|
1438
|
+
- .vibe/ 폴더 (hi-ai MCP 포함)
|
|
1388
1439
|
- 슬래시 커맨드 (7개)
|
|
1389
1440
|
- 서브에이전트 (5개)
|
|
1390
1441
|
- Hooks 설정
|
|
1391
|
-
- hi-ai 패키지
|
|
1392
1442
|
|
|
1393
1443
|
다시 설치하려면: vibe init
|
|
1394
1444
|
`);
|