@posthog/wizard
Version:
The PostHog wizard helps you to configure your project
77 lines • 3.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CodexMCPClient = exports.CodexMCPConfig = void 0;
const node_child_process_1 = require("node:child_process");
const MCPClient_1 = require("../MCPClient");
const defaults_1 = require("../defaults");
const analytics_1 = require("../../../utils/analytics");
exports.CodexMCPConfig = defaults_1.DefaultMCPClientConfig;
class CodexMCPClient extends MCPClient_1.DefaultMCPClient {
name = 'Codex CLI';
constructor() {
super();
}
isClientSupported() {
try {
(0, node_child_process_1.execSync)('codex --version', { stdio: 'ignore' });
return Promise.resolve(true);
}
catch {
return Promise.resolve(false);
}
}
getConfigPath() {
throw new Error('Not implemented');
}
isServerInstalled(local) {
const serverName = local ? 'posthog-local' : 'posthog';
try {
const result = (0, node_child_process_1.spawnSync)('codex', ['mcp', 'list', '--json'], {
encoding: 'utf-8',
});
if (result.error || result.status !== 0) {
return Promise.resolve(false);
}
const stdout = result.stdout?.trim();
if (!stdout) {
return Promise.resolve(false);
}
const servers = JSON.parse(stdout);
return Promise.resolve(servers.some((server) => server.name === serverName));
}
catch {
return Promise.resolve(false);
}
}
addServer(apiKey, selectedFeatures, local, region) {
const config = (0, defaults_1.getDefaultServerConfig)(apiKey, 'sse', selectedFeatures, local, region);
const serverName = local ? 'posthog-local' : 'posthog';
const args = ['mcp', 'add', serverName];
if (config.env) {
for (const [key, value] of Object.entries(config.env)) {
args.push('--env', `${key}=${value}`);
}
}
args.push('--', config.command, ...(config.args ?? []));
const result = (0, node_child_process_1.spawnSync)('codex', args, { stdio: 'ignore' });
if (result.error || result.status !== 0) {
analytics_1.analytics.captureException(new Error('Failed to add server to Codex CLI.'));
return Promise.resolve({ success: false });
}
return Promise.resolve({ success: true });
}
removeServer(local) {
const serverName = local ? 'posthog-local' : 'posthog';
const result = (0, node_child_process_1.spawnSync)('codex', ['mcp', 'remove', serverName], {
stdio: 'ignore',
});
if (result.error || result.status !== 0) {
analytics_1.analytics.captureException(new Error('Failed to remove server from Codex CLI.'));
return Promise.resolve({ success: false });
}
return Promise.resolve({ success: true });
}
}
exports.CodexMCPClient = CodexMCPClient;
exports.default = CodexMCPClient;
//# sourceMappingURL=codex.js.map