@sophia-vibelog/setup 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -0
- package/bin/setup.js +2 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +81 -0
- package/dist/index.js.map +1 -0
- package/dist/steps/create-folder.d.ts +4 -0
- package/dist/steps/create-folder.d.ts.map +1 -0
- package/dist/steps/create-folder.js +79 -0
- package/dist/steps/create-folder.js.map +1 -0
- package/dist/steps/send-telemetry.d.ts +4 -0
- package/dist/steps/send-telemetry.d.ts.map +1 -0
- package/dist/steps/send-telemetry.js +60 -0
- package/dist/steps/send-telemetry.js.map +1 -0
- package/dist/steps/update-config.d.ts +4 -0
- package/dist/steps/update-config.d.ts.map +1 -0
- package/dist/steps/update-config.js +37 -0
- package/dist/steps/update-config.js.map +1 -0
- package/dist/steps/verify-key.d.ts +4 -0
- package/dist/steps/verify-key.d.ts.map +1 -0
- package/dist/steps/verify-key.js +32 -0
- package/dist/steps/verify-key.js.map +1 -0
- package/dist/steps/verify-setup.d.ts +4 -0
- package/dist/steps/verify-setup.d.ts.map +1 -0
- package/dist/steps/verify-setup.js +38 -0
- package/dist/steps/verify-setup.js.map +1 -0
- package/dist/types.d.ts +26 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/api.d.ts +10 -0
- package/dist/utils/api.d.ts.map +1 -0
- package/dist/utils/api.js +52 -0
- package/dist/utils/api.js.map +1 -0
- package/dist/utils/config.d.ts +17 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +114 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/logger.d.ts +13 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +64 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +34 -0
- package/src/index.ts +112 -0
- package/src/steps/create-folder.ts +54 -0
- package/src/steps/send-telemetry.ts +32 -0
- package/src/steps/update-config.ts +49 -0
- package/src/steps/verify-key.ts +37 -0
- package/src/steps/verify-setup.ts +44 -0
- package/src/types.ts +28 -0
- package/src/utils/api.ts +52 -0
- package/src/utils/config.ts +104 -0
- package/src/utils/logger.ts +62 -0
- package/tsconfig.json +19 -0
package/README.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# @sophia-log/setup
|
|
2
|
+
|
|
3
|
+
One-command MCP setup for Sophia VibeLog
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
SOPHIA_API_KEY=your_api_key npx @sophia-log/setup
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## What it does
|
|
12
|
+
|
|
13
|
+
1. ✓ Verifies your API key
|
|
14
|
+
2. ✓ Creates `.claude` directory
|
|
15
|
+
3. ✓ Adds MCP configuration to `claude_desktop_config.json`
|
|
16
|
+
4. ✓ Verifies the setup
|
|
17
|
+
|
|
18
|
+
## Requirements
|
|
19
|
+
|
|
20
|
+
- Node.js >= 16
|
|
21
|
+
- Claude Code installed
|
|
22
|
+
|
|
23
|
+
## After installation
|
|
24
|
+
|
|
25
|
+
1. Quit Claude Code (Mac: Cmd+Q, Windows: Alt+F4)
|
|
26
|
+
2. Restart Claude Code
|
|
27
|
+
3. Type "로그에 올려줘" to test the connection
|
|
28
|
+
|
|
29
|
+
## License
|
|
30
|
+
|
|
31
|
+
MIT
|
package/bin/setup.js
ADDED
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const api_1 = require("./utils/api");
|
|
9
|
+
const config_1 = require("./utils/config");
|
|
10
|
+
const logger_1 = require("./utils/logger");
|
|
11
|
+
const verify_key_1 = require("./steps/verify-key");
|
|
12
|
+
const create_folder_1 = require("./steps/create-folder");
|
|
13
|
+
const update_config_1 = require("./steps/update-config");
|
|
14
|
+
const verify_setup_1 = require("./steps/verify-setup");
|
|
15
|
+
const send_telemetry_1 = require("./steps/send-telemetry");
|
|
16
|
+
const DEFAULT_API_URL = "https://sophia-vibelog.site";
|
|
17
|
+
async function main() {
|
|
18
|
+
console.log(chalk_1.default.bold.blue("\n🚀 Sophia VibeLog MCP 자동 설치\n"));
|
|
19
|
+
// 1. 환경변수에서 API 키 가져오기
|
|
20
|
+
const apiKey = process.env.SOPHIA_API_KEY;
|
|
21
|
+
if (!apiKey) {
|
|
22
|
+
logger_1.logger.error("SOPHIA_API_KEY 환경변수가 설정되지 않았습니다");
|
|
23
|
+
logger_1.logger.info("\n사용 방법:");
|
|
24
|
+
logger_1.logger.info("SOPHIA_API_KEY=your_key npx @sophia-log/setup");
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
const apiUrl = process.env.SOPHIA_API_URL || DEFAULT_API_URL;
|
|
28
|
+
const apiClient = new api_1.ApiClient(apiKey, apiUrl);
|
|
29
|
+
const configManager = new config_1.ConfigManager();
|
|
30
|
+
let installError;
|
|
31
|
+
try {
|
|
32
|
+
// Step 1: API 키 검증
|
|
33
|
+
const verifyResult = await (0, verify_key_1.verifyKey)(apiClient);
|
|
34
|
+
if (!verifyResult.success) {
|
|
35
|
+
installError = verifyResult.message;
|
|
36
|
+
throw new Error(verifyResult.message);
|
|
37
|
+
}
|
|
38
|
+
// Step 2: .claude 폴더 생성
|
|
39
|
+
const folderResult = (0, create_folder_1.createFolder)(configManager);
|
|
40
|
+
if (!folderResult.success) {
|
|
41
|
+
installError = folderResult.message;
|
|
42
|
+
throw folderResult.error || new Error(folderResult.message);
|
|
43
|
+
}
|
|
44
|
+
// Step 3: MCP 설정 추가
|
|
45
|
+
const configResult = (0, update_config_1.updateConfig)(configManager, apiKey, apiUrl);
|
|
46
|
+
if (!configResult.success) {
|
|
47
|
+
installError = configResult.message;
|
|
48
|
+
throw configResult.error || new Error(configResult.message);
|
|
49
|
+
}
|
|
50
|
+
// Step 4: 설정 검증
|
|
51
|
+
const verifyResult2 = (0, verify_setup_1.verifySetup)(configManager);
|
|
52
|
+
if (!verifyResult2.success) {
|
|
53
|
+
installError = verifyResult2.message;
|
|
54
|
+
throw verifyResult2.error || new Error(verifyResult2.message);
|
|
55
|
+
}
|
|
56
|
+
// Step 5: 설치 완료 알림
|
|
57
|
+
await (0, send_telemetry_1.sendTelemetry)(apiClient, true);
|
|
58
|
+
// 성공 메시지
|
|
59
|
+
logger_1.logger.success("설치 완료!");
|
|
60
|
+
console.log(chalk_1.default.gray("\n다음 단계:"));
|
|
61
|
+
console.log(chalk_1.default.white("1. Claude Code 종료"));
|
|
62
|
+
if (process.platform === "darwin") {
|
|
63
|
+
console.log(chalk_1.default.gray(" Mac: Cmd + Q"));
|
|
64
|
+
}
|
|
65
|
+
else if (process.platform === "win32") {
|
|
66
|
+
console.log(chalk_1.default.gray(" Windows: Alt + F4"));
|
|
67
|
+
}
|
|
68
|
+
console.log(chalk_1.default.white("2. Claude Code 다시 실행"));
|
|
69
|
+
console.log(chalk_1.default.white('3. "로그에 올려줘"라고 입력해서 연결 테스트\n'));
|
|
70
|
+
process.exit(0);
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
// 에러 발생 시 텔레메트리 전송
|
|
74
|
+
await (0, send_telemetry_1.sendTelemetry)(apiClient, false, installError || (error instanceof Error ? error.message : "Unknown error"));
|
|
75
|
+
logger_1.logger.error("\n설치 중 오류가 발생했습니다", error instanceof Error ? error : undefined);
|
|
76
|
+
console.log(chalk_1.default.yellow("\n문제가 계속되면 https://github.com/taessg/vibelog/issues 에 문의해주세요\n"));
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
main();
|
|
81
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-folder.d.ts","sourceRoot":"","sources":["../../src/steps/create-folder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,wBAAgB,YAAY,CAAC,aAAa,EAAE,aAAa,GAAG,UAAU,CAgDrE"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.createFolder = createFolder;
|
|
37
|
+
const logger_1 = require("../utils/logger");
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
function createFolder(configManager) {
|
|
40
|
+
logger_1.logger.start("Step 2: .claude 폴더 생성 중...");
|
|
41
|
+
try {
|
|
42
|
+
const configDir = configManager.getConfigDir();
|
|
43
|
+
// 폴더가 이미 존재하는지 확인
|
|
44
|
+
if (fs.existsSync(configDir)) {
|
|
45
|
+
logger_1.logger.succeed(".claude 폴더가 이미 존재합니다");
|
|
46
|
+
return {
|
|
47
|
+
success: true,
|
|
48
|
+
message: "Config directory already exists",
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
// 폴더 생성
|
|
52
|
+
configManager.ensureConfigDir();
|
|
53
|
+
logger_1.logger.succeed(".claude 폴더 생성 완료");
|
|
54
|
+
return {
|
|
55
|
+
success: true,
|
|
56
|
+
message: "Config directory created",
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
logger_1.logger.fail(".claude 폴더 생성 실패");
|
|
61
|
+
// 권한 오류 처리
|
|
62
|
+
if (error instanceof Error && error.message.includes("EACCES")) {
|
|
63
|
+
logger_1.logger.error("권한 오류: 폴더를 생성할 수 없습니다", error);
|
|
64
|
+
logger_1.logger.info("\n해결 방법:");
|
|
65
|
+
if (process.platform === "win32") {
|
|
66
|
+
logger_1.logger.info("1. 관리자 권한으로 터미널을 다시 실행하세요");
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
logger_1.logger.info(`1. 다음 명령어를 실행하세요: sudo chmod 755 ${configManager.getConfigDir()}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return {
|
|
73
|
+
success: false,
|
|
74
|
+
message: "Failed to create config directory",
|
|
75
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=create-folder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-folder.js","sourceRoot":"","sources":["../../src/steps/create-folder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,oCAgDC;AApDD,4CAAyC;AAEzC,uCAAyB;AAEzB,SAAgB,YAAY,CAAC,aAA4B;IACvD,eAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAE3C,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,EAAE,CAAC;QAE/C,kBAAkB;QAClB,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,eAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;YACvC,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,iCAAiC;aAC3C,CAAC;QACJ,CAAC;QAED,QAAQ;QACR,aAAa,CAAC,eAAe,EAAE,CAAC;QAChC,eAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAEnC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,0BAA0B;SACpC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAEhC,WAAW;QACX,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/D,eAAM,CAAC,KAAK,CACV,uBAAuB,EACvB,KAAK,CACN,CAAC;YACF,eAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACjC,eAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,eAAM,CAAC,IAAI,CACT,oCAAoC,aAAa,CAAC,YAAY,EAAE,EAAE,CACnE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,mCAAmC;YAC5C,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACjE,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send-telemetry.d.ts","sourceRoot":"","sources":["../../src/steps/send-telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAKtC,wBAAsB,aAAa,CACjC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC,CAoBrB"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.sendTelemetry = sendTelemetry;
|
|
37
|
+
const os = __importStar(require("os"));
|
|
38
|
+
const PACKAGE_VERSION = "0.1.0"; // TODO: package.json에서 읽어오기
|
|
39
|
+
async function sendTelemetry(apiClient, success, error) {
|
|
40
|
+
try {
|
|
41
|
+
await apiClient.sendTelemetry({
|
|
42
|
+
success,
|
|
43
|
+
version: PACKAGE_VERSION,
|
|
44
|
+
platform: `${os.platform()}-${os.arch()}`,
|
|
45
|
+
error,
|
|
46
|
+
});
|
|
47
|
+
return {
|
|
48
|
+
success: true,
|
|
49
|
+
message: "Telemetry sent",
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
// Telemetry 실패는 무시
|
|
54
|
+
return {
|
|
55
|
+
success: true,
|
|
56
|
+
message: "Telemetry failed (ignored)",
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=send-telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"send-telemetry.js","sourceRoot":"","sources":["../../src/steps/send-telemetry.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,sCAwBC;AA5BD,uCAAyB;AAEzB,MAAM,eAAe,GAAG,OAAO,CAAC,CAAC,4BAA4B;AAEtD,KAAK,UAAU,aAAa,CACjC,SAAoB,EACpB,OAAgB,EAChB,KAAc;IAEd,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,aAAa,CAAC;YAC5B,OAAO;YACP,OAAO,EAAE,eAAe;YACxB,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;YACzC,KAAK;SACN,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,gBAAgB;SAC1B,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,mBAAmB;QACnB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,4BAA4B;SACtC,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-config.d.ts","sourceRoot":"","sources":["../../src/steps/update-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,wBAAgB,YAAY,CAC1B,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACb,UAAU,CAwCZ"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.updateConfig = updateConfig;
|
|
4
|
+
const logger_1 = require("../utils/logger");
|
|
5
|
+
function updateConfig(configManager, apiKey, apiUrl) {
|
|
6
|
+
logger_1.logger.start("Step 3: MCP 설정 추가 중...");
|
|
7
|
+
try {
|
|
8
|
+
// 기존 설정 파일 백업
|
|
9
|
+
if (configManager.exists()) {
|
|
10
|
+
const backupPath = configManager.backup();
|
|
11
|
+
logger_1.logger.info(`기존 설정 백업 완료: ${backupPath}`);
|
|
12
|
+
}
|
|
13
|
+
// Sophia MCP 설정 추가
|
|
14
|
+
configManager.addSophiaMcp(apiKey, apiUrl);
|
|
15
|
+
logger_1.logger.succeed("MCP 설정 추가 완료");
|
|
16
|
+
return {
|
|
17
|
+
success: true,
|
|
18
|
+
message: "Config updated successfully",
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
logger_1.logger.fail("MCP 설정 추가 실패");
|
|
23
|
+
// JSON 파싱 오류 처리
|
|
24
|
+
if (error instanceof Error && error.message.includes("JSON")) {
|
|
25
|
+
logger_1.logger.error("설정 파일이 손상되었습니다", error);
|
|
26
|
+
logger_1.logger.info("\n해결 방법:");
|
|
27
|
+
logger_1.logger.info(`1. ${configManager.getConfigPath()} 파일을 확인하세요`);
|
|
28
|
+
logger_1.logger.info("2. 파일을 삭제하고 다시 시도하세요");
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
success: false,
|
|
32
|
+
message: "Failed to update config",
|
|
33
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=update-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-config.js","sourceRoot":"","sources":["../../src/steps/update-config.ts"],"names":[],"mappings":";;AAIA,oCA4CC;AA/CD,4CAAyC;AAGzC,SAAgB,YAAY,CAC1B,aAA4B,EAC5B,MAAc,EACd,MAAc;IAEd,eAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAEvC,IAAI,CAAC;QACH,cAAc;QACd,IAAI,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;YAC1C,eAAM,CAAC,IAAI,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,mBAAmB;QACnB,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC3C,eAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAE/B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,6BAA6B;SACvC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAE5B,gBAAgB;QAChB,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7D,eAAM,CAAC,KAAK,CACV,gBAAgB,EAChB,KAAK,CACN,CAAC;YACF,eAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxB,eAAM,CAAC,IAAI,CACT,MAAM,aAAa,CAAC,aAAa,EAAE,YAAY,CAChD,CAAC;YACF,eAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACtC,CAAC;QAED,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,yBAAyB;YAClC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACjE,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-key.d.ts","sourceRoot":"","sources":["../../src/steps/verify-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,wBAAsB,SAAS,CAC7B,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,UAAU,CAAC,CA8BrB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.verifyKey = verifyKey;
|
|
4
|
+
const logger_1 = require("../utils/logger");
|
|
5
|
+
async function verifyKey(apiClient) {
|
|
6
|
+
logger_1.logger.start("Step 1: API 키 검증 중...");
|
|
7
|
+
try {
|
|
8
|
+
const result = await apiClient.verifyKey();
|
|
9
|
+
if (!result.success) {
|
|
10
|
+
logger_1.logger.fail("API 키 검증 실패");
|
|
11
|
+
logger_1.logger.error(result.error || "알 수 없는 오류");
|
|
12
|
+
return {
|
|
13
|
+
success: false,
|
|
14
|
+
message: result.error || "API key verification failed",
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
logger_1.logger.succeed(`API 키 검증 완료 (${result.user?.name || result.user?.email})`);
|
|
18
|
+
return {
|
|
19
|
+
success: true,
|
|
20
|
+
message: "API key verified",
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
logger_1.logger.fail("API 키 검증 중 오류 발생");
|
|
25
|
+
return {
|
|
26
|
+
success: false,
|
|
27
|
+
message: "Verification error",
|
|
28
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=verify-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-key.js","sourceRoot":"","sources":["../../src/steps/verify-key.ts"],"names":[],"mappings":";;AAIA,8BAgCC;AAnCD,4CAAyC;AAGlC,KAAK,UAAU,SAAS,CAC7B,SAAoB;IAEpB,eAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAEtC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,SAAS,EAAE,CAAC;QAE3C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,eAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC3B,eAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,WAAW,CAAC,CAAC;YAC1C,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,MAAM,CAAC,KAAK,IAAI,6BAA6B;aACvD,CAAC;QACJ,CAAC;QAED,eAAM,CAAC,OAAO,CACZ,gBAAgB,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,CAC3D,CAAC;QACF,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,kBAAkB;SAC5B,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,oBAAoB;YAC7B,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACjE,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-setup.d.ts","sourceRoot":"","sources":["../../src/steps/verify-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,wBAAgB,WAAW,CAAC,aAAa,EAAE,aAAa,GAAG,UAAU,CAuCpE"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.verifySetup = verifySetup;
|
|
4
|
+
const logger_1 = require("../utils/logger");
|
|
5
|
+
function verifySetup(configManager) {
|
|
6
|
+
logger_1.logger.start("Step 4: 설정 검증 중...");
|
|
7
|
+
try {
|
|
8
|
+
// 설정 파일 존재 확인
|
|
9
|
+
if (!configManager.exists()) {
|
|
10
|
+
throw new Error("Config file not found");
|
|
11
|
+
}
|
|
12
|
+
// 설정 파일 읽기
|
|
13
|
+
const config = configManager.read();
|
|
14
|
+
// Sophia MCP 설정 확인
|
|
15
|
+
if (!config.mcpServers?.sophia) {
|
|
16
|
+
throw new Error("Sophia MCP configuration not found");
|
|
17
|
+
}
|
|
18
|
+
const sophiaConfig = config.mcpServers.sophia;
|
|
19
|
+
// 필수 필드 확인
|
|
20
|
+
if (!sophiaConfig.command || !sophiaConfig.env?.SOPHIA_API_KEY) {
|
|
21
|
+
throw new Error("Sophia MCP configuration is incomplete");
|
|
22
|
+
}
|
|
23
|
+
logger_1.logger.succeed("설정 검증 완료");
|
|
24
|
+
return {
|
|
25
|
+
success: true,
|
|
26
|
+
message: "Setup verified successfully",
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
logger_1.logger.fail("설정 검증 실패");
|
|
31
|
+
return {
|
|
32
|
+
success: false,
|
|
33
|
+
message: "Setup verification failed",
|
|
34
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=verify-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-setup.js","sourceRoot":"","sources":["../../src/steps/verify-setup.ts"],"names":[],"mappings":";;AAIA,kCAuCC;AA1CD,4CAAyC;AAGzC,SAAgB,WAAW,CAAC,aAA4B;IACtD,eAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAEnC,IAAI,CAAC;QACH,cAAc;QACd,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QAED,WAAW;QACX,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;QAEpC,mBAAmB;QACnB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACxD,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;QAE9C,WAAW;QACX,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,cAAc,EAAE,CAAC;YAC/D,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,eAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE3B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,6BAA6B;SACvC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAExB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,2BAA2B;YACpC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACjE,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export interface SetupConfig {
|
|
2
|
+
apiKey: string;
|
|
3
|
+
apiUrl: string;
|
|
4
|
+
claudeConfigPath: string;
|
|
5
|
+
}
|
|
6
|
+
export interface VerifyResponse {
|
|
7
|
+
success: boolean;
|
|
8
|
+
user?: {
|
|
9
|
+
id: string;
|
|
10
|
+
name: string | null;
|
|
11
|
+
email: string;
|
|
12
|
+
};
|
|
13
|
+
error?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface TelemetryData {
|
|
16
|
+
success: boolean;
|
|
17
|
+
version: string;
|
|
18
|
+
platform: string;
|
|
19
|
+
error?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface StepResult {
|
|
22
|
+
success: boolean;
|
|
23
|
+
message: string;
|
|
24
|
+
error?: Error;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { VerifyResponse, TelemetryData } from "../types";
|
|
2
|
+
export declare class ApiClient {
|
|
3
|
+
private apiKey;
|
|
4
|
+
private apiUrl;
|
|
5
|
+
constructor(apiKey: string, apiUrl: string);
|
|
6
|
+
private getHeaders;
|
|
7
|
+
verifyKey(): Promise<VerifyResponse>;
|
|
8
|
+
sendTelemetry(data: TelemetryData): Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzD,qBAAa,SAAS;IAElB,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,MAAM;gBADN,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM;IAGxB,OAAO,CAAC,UAAU;IAOZ,SAAS,IAAI,OAAO,CAAC,cAAc,CAAC;IAwBpC,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAYxD"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ApiClient = void 0;
|
|
4
|
+
class ApiClient {
|
|
5
|
+
constructor(apiKey, apiUrl) {
|
|
6
|
+
this.apiKey = apiKey;
|
|
7
|
+
this.apiUrl = apiUrl;
|
|
8
|
+
}
|
|
9
|
+
getHeaders() {
|
|
10
|
+
return {
|
|
11
|
+
"Content-Type": "application/json",
|
|
12
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
async verifyKey() {
|
|
16
|
+
try {
|
|
17
|
+
const response = await fetch(`${this.apiUrl}/api/setup/verify`, {
|
|
18
|
+
method: "POST",
|
|
19
|
+
headers: this.getHeaders(),
|
|
20
|
+
});
|
|
21
|
+
if (!response.ok) {
|
|
22
|
+
const errorData = (await response.json());
|
|
23
|
+
return {
|
|
24
|
+
success: false,
|
|
25
|
+
error: errorData.error || "API key verification failed",
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
return (await response.json());
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
return {
|
|
32
|
+
success: false,
|
|
33
|
+
error: error instanceof Error ? error.message : "Network error",
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
async sendTelemetry(data) {
|
|
38
|
+
try {
|
|
39
|
+
await fetch(`${this.apiUrl}/api/setup/telemetry`, {
|
|
40
|
+
method: "POST",
|
|
41
|
+
headers: this.getHeaders(),
|
|
42
|
+
body: JSON.stringify(data),
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
// Telemetry 실패는 무시 (사용자 경험에 영향 X)
|
|
47
|
+
console.error("Telemetry failed:", error);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.ApiClient = ApiClient;
|
|
52
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/utils/api.ts"],"names":[],"mappings":";;;AAEA,MAAa,SAAS;IACpB,YACU,MAAc,EACd,MAAc;QADd,WAAM,GAAN,MAAM,CAAQ;QACd,WAAM,GAAN,MAAM,CAAQ;IACrB,CAAC;IAEI,UAAU;QAChB,OAAO;YACL,cAAc,EAAE,kBAAkB;YAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;SACvC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS;QACb,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,mBAAmB,EAAE;gBAC9D,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;aAC3B,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,SAAS,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAuB,CAAC;gBAChE,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,6BAA6B;iBACxD,CAAC;YACJ,CAAC;YAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAmB,CAAC;QACnD,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aAChE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAmB;QACrC,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,sBAAsB,EAAE;gBAChD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE;gBAC1B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC3B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,kCAAkC;YAClC,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;CACF;AAjDD,8BAiDC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface ClaudeConfig {
|
|
2
|
+
mcpServers?: Record<string, any>;
|
|
3
|
+
[key: string]: any;
|
|
4
|
+
}
|
|
5
|
+
export declare class ConfigManager {
|
|
6
|
+
private configPath;
|
|
7
|
+
constructor();
|
|
8
|
+
getConfigPath(): string;
|
|
9
|
+
getConfigDir(): string;
|
|
10
|
+
exists(): boolean;
|
|
11
|
+
ensureConfigDir(): void;
|
|
12
|
+
read(): ClaudeConfig;
|
|
13
|
+
write(config: ClaudeConfig): void;
|
|
14
|
+
backup(): string;
|
|
15
|
+
addSophiaMcp(apiKey: string, apiUrl: string): void;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,UAAU,CAAS;;IAuB3B,aAAa,IAAI,MAAM;IAIvB,YAAY,IAAI,MAAM;IAItB,MAAM,IAAI,OAAO;IAIjB,eAAe,IAAI,IAAI;IAOvB,IAAI,IAAI,YAAY;IAapB,KAAK,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IASjC,MAAM,IAAI,MAAM;IAUhB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAmBnD"}
|