claude-code/components/MCPServerMultiselectDialog.tsx

133 lines
16 KiB
TypeScript
Raw Permalink Normal View History

import { c as _c } from "react/compiler-runtime";
import partition from 'lodash-es/partition.js';
import React, { useCallback } from 'react';
import { logEvent } from 'src/services/analytics/index.js';
import { Box, Text } from '../ink.js';
import { getSettings_DEPRECATED, updateSettingsForSource } from '../utils/settings/settings.js';
import { ConfigurableShortcutHint } from './ConfigurableShortcutHint.js';
import { SelectMulti } from './CustomSelect/SelectMulti.js';
import { Byline } from './design-system/Byline.js';
import { Dialog } from './design-system/Dialog.js';
import { KeyboardShortcutHint } from './design-system/KeyboardShortcutHint.js';
import { MCPServerDialogCopy } from './MCPServerDialogCopy.js';
type Props = {
serverNames: string[];
onDone(): void;
};
export function MCPServerMultiselectDialog(t0) {
const $ = _c(21);
const {
serverNames,
onDone
} = t0;
let t1;
if ($[0] !== onDone || $[1] !== serverNames) {
t1 = function onSubmit(selectedServers) {
const currentSettings = getSettings_DEPRECATED() || {};
const enabledServers = currentSettings.enabledMcpjsonServers || [];
const disabledServers = currentSettings.disabledMcpjsonServers || [];
const [approvedServers, rejectedServers] = partition(serverNames, server => selectedServers.includes(server));
logEvent("tengu_mcp_multidialog_choice", {
approved: approvedServers.length,
rejected: rejectedServers.length
});
if (approvedServers.length > 0) {
const newEnabledServers = [...new Set([...enabledServers, ...approvedServers])];
updateSettingsForSource("localSettings", {
enabledMcpjsonServers: newEnabledServers
});
}
if (rejectedServers.length > 0) {
const newDisabledServers = [...new Set([...disabledServers, ...rejectedServers])];
updateSettingsForSource("localSettings", {
disabledMcpjsonServers: newDisabledServers
});
}
onDone();
};
$[0] = onDone;
$[1] = serverNames;
$[2] = t1;
} else {
t1 = $[2];
}
const onSubmit = t1;
let t2;
if ($[3] !== onDone || $[4] !== serverNames) {
t2 = () => {
const currentSettings_0 = getSettings_DEPRECATED() || {};
const disabledServers_0 = currentSettings_0.disabledMcpjsonServers || [];
const newDisabledServers_0 = [...new Set([...disabledServers_0, ...serverNames])];
updateSettingsForSource("localSettings", {
disabledMcpjsonServers: newDisabledServers_0
});
onDone();
};
$[3] = onDone;
$[4] = serverNames;
$[5] = t2;
} else {
t2 = $[5];
}
const handleEscRejectAll = t2;
const t3 = `${serverNames.length} new MCP servers found in .mcp.json`;
let t4;
if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
t4 = <MCPServerDialogCopy />;
$[6] = t4;
} else {
t4 = $[6];
}
let t5;
if ($[7] !== serverNames) {
t5 = serverNames.map(_temp);
$[7] = serverNames;
$[8] = t5;
} else {
t5 = $[8];
}
let t6;
if ($[9] !== handleEscRejectAll || $[10] !== onSubmit || $[11] !== serverNames || $[12] !== t5) {
t6 = <SelectMulti options={t5} defaultValue={serverNames} onSubmit={onSubmit} onCancel={handleEscRejectAll} hideIndexes={true} />;
$[9] = handleEscRejectAll;
$[10] = onSubmit;
$[11] = serverNames;
$[12] = t5;
$[13] = t6;
} else {
t6 = $[13];
}
let t7;
if ($[14] !== handleEscRejectAll || $[15] !== t3 || $[16] !== t6) {
t7 = <Dialog title={t3} subtitle="Select any you wish to enable." color="warning" onCancel={handleEscRejectAll} hideInputGuide={true}>{t4}{t6}</Dialog>;
$[14] = handleEscRejectAll;
$[15] = t3;
$[16] = t6;
$[17] = t7;
} else {
t7 = $[17];
}
let t8;
if ($[18] === Symbol.for("react.memo_cache_sentinel")) {
t8 = <Box paddingX={1}><Text dimColor={true} italic={true}><Byline><KeyboardShortcutHint shortcut="Space" action="select" /><KeyboardShortcutHint shortcut="Enter" action="confirm" /><ConfigurableShortcutHint action="confirm:no" context="Confirmation" fallback="Esc" description="reject all" /></Byline></Text></Box>;
$[18] = t8;
} else {
t8 = $[18];
}
let t9;
if ($[19] !== t7) {
t9 = <>{t7}{t8}</>;
$[19] = t7;
$[20] = t9;
} else {
t9 = $[20];
}
return t9;
}
function _temp(server_0) {
return {
label: server_0,
value: server_0
};
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXJ0aXRpb24iLCJSZWFjdCIsInVzZUNhbGxiYWNrIiwibG9nRXZlbnQiLCJCb3giLCJUZXh0IiwiZ2V0U2V0dGluZ3NfREVQUkVDQVRFRCIsInVwZGF0ZVNldHRpbmdzRm9yU291cmNlIiwiQ29uZmlndXJhYmxlU2hvcnRjdXRIaW50IiwiU2VsZWN0TXVsdGkiLCJCeWxpbmUiLCJEaWFsb2ciLCJLZXlib2FyZFNob3J0Y3V0SGludCIsIk1DUFNlcnZlckRpYWxvZ0NvcHkiLCJQcm9wcyIsInNlcnZlck5hbWVzIiwib25Eb25lIiwiTUNQU2VydmVyTXVsdGlzZWxlY3REaWFsb2ciLCJ0MCIsIiQiLCJfYyIsInQxIiwib25TdWJtaXQiLCJzZWxlY3RlZFNlcnZlcnMiLCJjdXJyZW50U2V0dGluZ3MiLCJlbmFibGVkU2VydmVycyIsImVuYWJsZWRNY3Bqc29uU2VydmVycyIsImRpc2FibGVkU2VydmVycyIsImRpc2FibGVkTWNwanNvblNlcnZlcnMiLCJhcHByb3ZlZFNlcnZlcnMiLCJyZWplY3RlZFNlcnZlcnMiLCJzZXJ2ZXIiLCJpbmNsdWRlcyIsImFwcHJvdmVkIiwibGVuZ3RoIiwicmVqZWN0ZWQiLCJuZXdFbmFibGVkU2VydmVycyIsIlNldCIsIm5ld0Rpc2FibGVkU2VydmVycyIsInQyIiwiY3VycmVudFNldHRpbmdzXzAiLCJkaXNhYmxlZFNlcnZlcnNfMCIsIm5ld0Rpc2FibGVkU2VydmVyc18wIiwiaGFuZGxlRXNjUmVqZWN0QWxsIiwidDMiLCJ0NCIsIlN5bWJvbCIsImZvciIsInQ1IiwibWFwIiwiX3RlbXAiLCJ0NiIsInQ3IiwidDgiLCJ0OSIsInNlcnZlcl8wIiwibGFiZWwiLCJ2YWx1ZSJdLCJzb3VyY2VzIjpbIk1DUFNlcnZlck11bHRpc2VsZWN0RGlhbG9nLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGFydGl0aW9uIGZyb20gJ2xvZGFzaC1lcy9wYXJ0aXRpb24uanMnXG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGxvZ0V2ZW50IH0gZnJvbSAnc3JjL3NlcnZpY2VzL2FuYWx5dGljcy9pbmRleC5qcydcbmltcG9ydCB7IEJveCwgVGV4dCB9IGZyb20gJy4uL2luay5qcydcbmltcG9ydCB7XG4gIGdldFNldHRpbmdzX0RFUFJFQ0FURUQsXG4gIHVwZGF0ZVNldHRpbmdzRm9yU291cmNlLFxufSBmcm9tICcuLi91dGlscy9zZXR0aW5ncy9zZXR0aW5ncy5qcydcbmltcG9ydCB7IENvbmZpZ3VyYWJsZVNob3J0Y3V0SGludCB9IGZyb20gJy4vQ29uZmlndXJhYmxlU2hvcnRjdXRIaW50LmpzJ1xuaW1wb3J0IHsgU2VsZWN0TXVsdGkgfSBmcm9tICcuL0N1c3RvbVNlbGVjdC9TZWxlY3RNdWx0aS5qcydcbmltcG9ydCB7IEJ5bGluZSB9IGZyb20gJy4vZGVzaWduLXN5c3RlbS9CeWxpbmUuanMnXG5pbXBvcnQgeyBEaWFsb2cgfSBmcm9tICcuL2Rlc2lnbi1zeXN0ZW0vRGlhbG9nLmpzJ1xuaW1wb3J0IHsgS2V5Ym9hcmRTaG9ydGN1dEhpbnQgfSBmcm9tICcuL2Rlc2lnbi1zeXN0ZW0vS2V5Ym9hcmRTaG9ydGN1dEhpbnQuanMnXG5pbXBvcnQgeyBNQ1BTZXJ2ZXJEaWFsb2dDb3B5IH0gZnJvbSAnLi9NQ1BTZXJ2ZXJEaWFsb2dDb3B5LmpzJ1xuXG50eXBlIFByb3BzID0ge1xuICBzZXJ2ZXJOYW1lczogc3RyaW5nW11cbiAgb25Eb25lKCk6IHZvaWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE1DUFNlcnZlck11bHRpc2VsZWN0RGlhbG9nKHtcbiAgc2VydmVyTmFtZXMsXG4gIG9uRG9uZSxcbn06IFByb3BzKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgZnVuY3Rpb24gb25TdWJtaXQoc2VsZWN0ZWRTZXJ2ZXJzOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IGN1cnJlbnRTZXR0aW5ncyA9IGdldFNldHRpbmdzX0RFUFJFQ0FURUQoKSB8fCB7fVxuICAgIGNvbnN0IGVuYWJsZWRTZXJ2ZXJzID0gY3VycmVudFNldHRpbmdzLmVuYWJsZWRNY3Bqc29uU2VydmVycyB8fCBbXVxuICAgIGNvbnN0IGRpc2FibGVkU2VydmVycyA9IGN1cnJlbnRTZXR0aW5ncy5kaXNhYmxlZE1jcGpzb25TZXJ2ZXJzIHx8IFtdXG5cbiAgICAvLyBVc2UgcGFydGl0aW9uIHRvIHNlcGFyYXRlIGFwcHJvdmVkIGFuZCByZWplY3RlZCBzZXJ2ZXJzXG4gICAgY29uc3QgW2FwcHJvdmVkU2VydmVycywgcmVqZWN0ZWRTZXJ2ZXJzXSA9IHBhcnRpdGlvbihzZXJ2ZXJOYW1lcywgc2VydmVyID0+XG4gICAgICBzZWxlY3RlZFNlcnZlcnMuaW5jbHVkZXMoc2VydmVyKSxcbiAgICApXG5cbiAgICBsb2dFdmVudCgndGVuZ3VfbWNwX211bHRpZGlhbG9nX2Nob2ljZScsIHtcbiAgICAgIGFwcHJvdmVkOiBhcHByb3ZlZFNlcnZlcnMubGVuZ3RoLFxuICAgICAgcmVqZWN0ZWQ6IHJlamVjdGVkU2VydmVycy5sZW5ndGgsXG4gICAgfSlcblxuICAgIC8vIFVwZGF0ZSBzZXR0aW5ncyB3aXRoIGFwcHJvdmVkIHNlcnZlcnNcbiAgICBpZiAoYXBwcm92ZWRTZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IG5ld0VuYWJsZWRTZXJ2ZXJzID0gW1xuICAgICAgICAuLi5uZXcgU2V0KFsuLi5lbmFibGVkU2VydmVycywgLi4uYXBwcm92ZWRTZXJ2ZXJzXSksXG4gICAgICBdXG4gICAgICB1cGRhdGVTZXR0aW5nc0ZvclNvdXJjZSgnbG9jYWxTZXR0aW5ncycsIHtcbiAgICAgICAgZW5hYmxlZE1jcGpzb25TZXJ2ZXJzOiBuZXdFbmFibGVkU2VydmVycyxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHNldHRpbmdzIHdpdGggcmVqZWN0ZWQgc2VydmVyc1xuICAgIGlmIChyZWplY3RlZFNlcnZlcnMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgbmV3RGlzYWJsZWRTZXJ2ZXJzID0gW1xuICAgICAgICAuLi5uZXcgU2V0KFsuLi5kaXNhYmxlZFNlcnZlcnMsIC4uLnJlamVjdGVkU2VydmVyc10pLFxuICAgICAgXVxuICAgICAgdXBkYXRlU2V0dGluZ3NGb3JTb3VyY2UoJ2xvY2FsU2V0dGluZ3MnLCB7XG4gICAgICAgIGRpc2FibGVkTWNwanNvblNlcnZlcnM6IG5ld0Rpc2FibGVkU2VydmVycyxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgb25Eb25lKClcbiAgfVxuXG4gIC8vIEhhbmRsZSBFU0MgdG8gcmVqZWN0IGFsbCBzZXJ2ZXJzXG4gIGNvbnN0IGhhbmRsZUVzY1JlamVjdEFsbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50U2V0dGl