/ components / MCPServerMultiselectDialog.tsx
MCPServerMultiselectDialog.tsx
  1  import { c as _c } from "react/compiler-runtime";
  2  import partition from 'lodash-es/partition.js';
  3  import React, { useCallback } from 'react';
  4  import { logEvent } from 'src/services/analytics/index.js';
  5  import { Box, Text } from '../ink.js';
  6  import { getSettings_DEPRECATED, updateSettingsForSource } from '../utils/settings/settings.js';
  7  import { ConfigurableShortcutHint } from './ConfigurableShortcutHint.js';
  8  import { SelectMulti } from './CustomSelect/SelectMulti.js';
  9  import { Byline } from './design-system/Byline.js';
 10  import { Dialog } from './design-system/Dialog.js';
 11  import { KeyboardShortcutHint } from './design-system/KeyboardShortcutHint.js';
 12  import { MCPServerDialogCopy } from './MCPServerDialogCopy.js';
 13  type Props = {
 14    serverNames: string[];
 15    onDone(): void;
 16  };
 17  export function MCPServerMultiselectDialog(t0) {
 18    const $ = _c(21);
 19    const {
 20      serverNames,
 21      onDone
 22    } = t0;
 23    let t1;
 24    if ($[0] !== onDone || $[1] !== serverNames) {
 25      t1 = function onSubmit(selectedServers) {
 26        const currentSettings = getSettings_DEPRECATED() || {};
 27        const enabledServers = currentSettings.enabledMcpjsonServers || [];
 28        const disabledServers = currentSettings.disabledMcpjsonServers || [];
 29        const [approvedServers, rejectedServers] = partition(serverNames, server => selectedServers.includes(server));
 30        logEvent("tengu_mcp_multidialog_choice", {
 31          approved: approvedServers.length,
 32          rejected: rejectedServers.length
 33        });
 34        if (approvedServers.length > 0) {
 35          const newEnabledServers = [...new Set([...enabledServers, ...approvedServers])];
 36          updateSettingsForSource("localSettings", {
 37            enabledMcpjsonServers: newEnabledServers
 38          });
 39        }
 40        if (rejectedServers.length > 0) {
 41          const newDisabledServers = [...new Set([...disabledServers, ...rejectedServers])];
 42          updateSettingsForSource("localSettings", {
 43            disabledMcpjsonServers: newDisabledServers
 44          });
 45        }
 46        onDone();
 47      };
 48      $[0] = onDone;
 49      $[1] = serverNames;
 50      $[2] = t1;
 51    } else {
 52      t1 = $[2];
 53    }
 54    const onSubmit = t1;
 55    let t2;
 56    if ($[3] !== onDone || $[4] !== serverNames) {
 57      t2 = () => {
 58        const currentSettings_0 = getSettings_DEPRECATED() || {};
 59        const disabledServers_0 = currentSettings_0.disabledMcpjsonServers || [];
 60        const newDisabledServers_0 = [...new Set([...disabledServers_0, ...serverNames])];
 61        updateSettingsForSource("localSettings", {
 62          disabledMcpjsonServers: newDisabledServers_0
 63        });
 64        onDone();
 65      };
 66      $[3] = onDone;
 67      $[4] = serverNames;
 68      $[5] = t2;
 69    } else {
 70      t2 = $[5];
 71    }
 72    const handleEscRejectAll = t2;
 73    const t3 = `${serverNames.length} new MCP servers found in .mcp.json`;
 74    let t4;
 75    if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
 76      t4 = <MCPServerDialogCopy />;
 77      $[6] = t4;
 78    } else {
 79      t4 = $[6];
 80    }
 81    let t5;
 82    if ($[7] !== serverNames) {
 83      t5 = serverNames.map(_temp);
 84      $[7] = serverNames;
 85      $[8] = t5;
 86    } else {
 87      t5 = $[8];
 88    }
 89    let t6;
 90    if ($[9] !== handleEscRejectAll || $[10] !== onSubmit || $[11] !== serverNames || $[12] !== t5) {
 91      t6 = <SelectMulti options={t5} defaultValue={serverNames} onSubmit={onSubmit} onCancel={handleEscRejectAll} hideIndexes={true} />;
 92      $[9] = handleEscRejectAll;
 93      $[10] = onSubmit;
 94      $[11] = serverNames;
 95      $[12] = t5;
 96      $[13] = t6;
 97    } else {
 98      t6 = $[13];
 99    }
100    let t7;
101    if ($[14] !== handleEscRejectAll || $[15] !== t3 || $[16] !== t6) {
102      t7 = <Dialog title={t3} subtitle="Select any you wish to enable." color="warning" onCancel={handleEscRejectAll} hideInputGuide={true}>{t4}{t6}</Dialog>;
103      $[14] = handleEscRejectAll;
104      $[15] = t3;
105      $[16] = t6;
106      $[17] = t7;
107    } else {
108      t7 = $[17];
109    }
110    let t8;
111    if ($[18] === Symbol.for("react.memo_cache_sentinel")) {
112      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>;
113      $[18] = t8;
114    } else {
115      t8 = $[18];
116    }
117    let t9;
118    if ($[19] !== t7) {
119      t9 = <>{t7}{t8}</>;
120      $[19] = t7;
121      $[20] = t9;
122    } else {
123      t9 = $[20];
124    }
125    return t9;
126  }
127  function _temp(server_0) {
128    return {
129      label: server_0,
130      value: server_0
131    };
132  }
133  //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXJ0aXRpb24iLCJSZWFjdCIsInVzZUNhbGxiYWNrIiwibG9nRXZlbnQiLCJCb3giLCJUZXh0IiwiZ2V0U2V0dGluZ3NfREVQUkVDQVRFRCIsInVwZGF0ZVNldHRpbmdzRm9yU291cmNlIiwiQ29uZmlndXJhYmxlU2hvcnRjdXRIaW50IiwiU2VsZWN0TXVsdGkiLCJCeWxpbmUiLCJEaWFsb2ciLCJLZXlib2FyZFNob3J0Y3V0SGludCIsIk1DUFNlcnZlckRpYWxvZ0NvcHkiLCJQcm9wcyIsInNlcnZlck5hbWVzIiwib25Eb25lIiwiTUNQU2VydmVyTXVsdGlzZWxlY3REaWFsb2ciLCJ0MCIsIiQiLCJfYyIsInQxIiwib25TdWJtaXQiLCJzZWxlY3RlZFNlcnZlcnMiLCJjdXJyZW50U2V0dGluZ3MiLCJlbmFibGVkU2VydmVycyIsImVuYWJsZWRNY3Bqc29uU2VydmVycyIsImRpc2FibGVkU2VydmVycyIsImRpc2FibGVkTWNwanNvblNlcnZlcnMiLCJhcHByb3ZlZFNlcnZlcnMiLCJyZWplY3RlZFNlcnZlcnMiLCJzZXJ2ZXIiLCJpbmNsdWRlcyIsImFwcHJvdmVkIiwibGVuZ3RoIiwicmVqZWN0ZWQiLCJuZXdFbmFibGVkU2VydmVycyIsIlNldCIsIm5ld0Rpc2FibGVkU2VydmVycyIsInQyIiwiY3VycmVudFNldHRpbmdzXzAiLCJkaXNhYmxlZFNlcnZlcnNfMCIsIm5ld0Rpc2FibGVkU2VydmVyc18wIiwiaGFuZGxlRXNjUmVqZWN0QWxsIiwidDMiLCJ0NCIsIlN5bWJvbCIsImZvciIsInQ1IiwibWFwIiwiX3RlbXAiLCJ0NiIsInQ3IiwidDgiLCJ0OSIsInNlcnZlcl8wIiwibGFiZWwiLCJ2YWx1ZSJdLCJzb3VyY2VzIjpbIk1DUFNlcnZlck11bHRpc2VsZWN0RGlhbG9nLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGFydGl0aW9uIGZyb20gJ2xvZGFzaC1lcy9wYXJ0aXRpb24uanMnXG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGxvZ0V2ZW50IH0gZnJvbSAnc3JjL3NlcnZpY2VzL2FuYWx5dGljcy9pbmRleC5qcydcbmltcG9ydCB7IEJveCwgVGV4dCB9IGZyb20gJy4uL2luay5qcydcbmltcG9ydCB7XG4gIGdldFNldHRpbmdzX0RFUFJFQ0FURUQsXG4gIHVwZGF0ZVNldHRpbmdzRm9yU291cmNlLFxufSBmcm9tICcuLi91dGlscy9zZXR0aW5ncy9zZXR0aW5ncy5qcydcbmltcG9ydCB7IENvbmZpZ3VyYWJsZVNob3J0Y3V0SGludCB9IGZyb20gJy4vQ29uZmlndXJhYmxlU2hvcnRjdXRIaW50LmpzJ1xuaW1wb3J0IHsgU2VsZWN0TXVsdGkgfSBmcm9tICcuL0N1c3RvbVNlbGVjdC9TZWxlY3RNdWx0aS5qcydcbmltcG9ydCB7IEJ5bGluZSB9IGZyb20gJy4vZGVzaWduLXN5c3RlbS9CeWxpbmUuanMnXG5pbXBvcnQgeyBEaWFsb2cgfSBmcm9tICcuL2Rlc2lnbi1zeXN0ZW0vRGlhbG9nLmpzJ1xuaW1wb3J0IHsgS2V5Ym9hcmRTaG9ydGN1dEhpbnQgfSBmcm9tICcuL2Rlc2lnbi1zeXN0ZW0vS2V5Ym9hcmRTaG9ydGN1dEhpbnQuanMnXG5pbXBvcnQgeyBNQ1BTZXJ2ZXJEaWFsb2dDb3B5IH0gZnJvbSAnLi9NQ1BTZXJ2ZXJEaWFsb2dDb3B5LmpzJ1xuXG50eXBlIFByb3BzID0ge1xuICBzZXJ2ZXJOYW1lczogc3RyaW5nW11cbiAgb25Eb25lKCk6IHZvaWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE1DUFNlcnZlck11bHRpc2VsZWN0RGlhbG9nKHtcbiAgc2VydmVyTmFtZXMsXG4gIG9uRG9uZSxcbn06IFByb3BzKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgZnVuY3Rpb24gb25TdWJtaXQoc2VsZWN0ZWRTZXJ2ZXJzOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IGN1cnJlbnRTZXR0aW5ncyA9IGdldFNldHRpbmdzX0RFUFJFQ0FURUQoKSB8fCB7fVxuICAgIGNvbnN0IGVuYWJsZWRTZXJ2ZXJzID0gY3VycmVudFNldHRpbmdzLmVuYWJsZWRNY3Bqc29uU2VydmVycyB8fCBbXVxuICAgIGNvbnN0IGRpc2FibGVkU2VydmVycyA9IGN1cnJlbnRTZXR0aW5ncy5kaXNhYmxlZE1jcGpzb25TZXJ2ZXJzIHx8IFtdXG5cbiAgICAvLyBVc2UgcGFydGl0aW9uIHRvIHNlcGFyYXRlIGFwcHJvdmVkIGFuZCByZWplY3RlZCBzZXJ2ZXJzXG4gICAgY29uc3QgW2FwcHJvdmVkU2VydmVycywgcmVqZWN0ZWRTZXJ2ZXJzXSA9IHBhcnRpdGlvbihzZXJ2ZXJOYW1lcywgc2VydmVyID0+XG4gICAgICBzZWxlY3RlZFNlcnZlcnMuaW5jbHVkZXMoc2VydmVyKSxcbiAgICApXG5cbiAgICBsb2dFdmVudCgndGVuZ3VfbWNwX211bHRpZGlhbG9nX2Nob2ljZScsIHtcbiAgICAgIGFwcHJvdmVkOiBhcHByb3ZlZFNlcnZlcnMubGVuZ3RoLFxuICAgICAgcmVqZWN0ZWQ6IHJlamVjdGVkU2VydmVycy5sZW5ndGgsXG4gICAgfSlcblxuICAgIC8vIFVwZGF0ZSBzZXR0aW5ncyB3aXRoIGFwcHJvdmVkIHNlcnZlcnNcbiAgICBpZiAoYXBwcm92ZWRTZXJ2ZXJzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IG5ld0VuYWJsZWRTZXJ2ZXJzID0gW1xuICAgICAgICAuLi5uZXcgU2V0KFsuLi5lbmFibGVkU2VydmVycywgLi4uYXBwcm92ZWRTZXJ2ZXJzXSksXG4gICAgICBdXG4gICAgICB1cGRhdGVTZXR0aW5nc0ZvclNvdXJjZSgnbG9jYWxTZXR0aW5ncycsIHtcbiAgICAgICAgZW5hYmxlZE1jcGpzb25TZXJ2ZXJzOiBuZXdFbmFibGVkU2VydmVycyxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHNldHRpbmdzIHdpdGggcmVqZWN0ZWQgc2VydmVyc1xuICAgIGlmIChyZWplY3RlZFNlcnZlcnMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgbmV3RGlzYWJsZWRTZXJ2ZXJzID0gW1xuICAgICAgICAuLi5uZXcgU2V0KFsuLi5kaXNhYmxlZFNlcnZlcnMsIC4uLnJlamVjdGVkU2VydmVyc10pLFxuICAgICAgXVxuICAgICAgdXBkYXRlU2V0dGluZ3NGb3JTb3VyY2UoJ2xvY2FsU2V0dGluZ3MnLCB7XG4gICAgICAgIGRpc2FibGVkTWNwanNvblNlcnZlcnM6IG5ld0Rpc2FibGVkU2VydmVycyxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgb25Eb25lKClcbiAgfVxuXG4gIC8vIEhhbmRsZSBFU0MgdG8gcmVqZWN0IGFsbCBzZXJ2ZXJzXG4gIGNvbnN0IGhhbmRsZUVzY1JlamVjdEFsbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50U2V0dGluZ3MgPSBnZXRTZXR0aW5nc19ERVBSRUNBVEVEKCkgfHwge31cbiAgICBjb25zdCBkaXNhYmxlZFNlcnZlcnMgPSBjdXJyZW50U2V0dGluZ3MuZGlzYWJsZWRNY3Bqc29uU2VydmVycyB8fCBbXVxuXG4gICAgY29uc3QgbmV3RGlzYWJsZWRTZXJ2ZXJzID0gW1xuICAgICAgLi4ubmV3IFNldChbLi4uZGlzYWJsZWRTZXJ2ZXJzLCAuLi5zZXJ2ZXJOYW1lc10pLFxuICAgIF1cblxuICAgIHVwZGF0ZVNldHRpbmdzRm9yU291cmNlKCdsb2NhbFNldHRpbmdzJywge1xuICAgICAgZGlzYWJsZWRNY3Bqc29uU2VydmVyczogbmV3RGlzYWJsZWRTZXJ2ZXJzLFxuICAgIH0pXG5cbiAgICBvbkRvbmUoKVxuICB9LCBbc2VydmVyTmFtZXMsIG9uRG9uZV0pXG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPERpYWxvZ1xuICAgICAgICB0aXRsZT17YCR7c2VydmVyTmFtZXMubGVuZ3RofSBuZXcgTUNQIHNlcnZlcnMgZm91bmQgaW4gLm1jcC5qc29uYH1cbiAgICAgICAgc3VidGl0bGU9XCJTZWxlY3QgYW55IHlvdSB3aXNoIHRvIGVuYWJsZS5cIlxuICAgICAgICBjb2xvcj1cIndhcm5pbmdcIlxuICAgICAgICBvbkNhbmNlbD17aGFuZGxlRXNjUmVqZWN0QWxsfVxuICAgICAgICBoaWRlSW5wdXRHdWlkZVxuICAgICAgPlxuICAgICAgICA8TUNQU2VydmVyRGlhbG9nQ29weSAvPlxuXG4gICAgICAgIDxTZWxlY3RNdWx0aVxuICAgICAgICAgIG9wdGlvbnM9e3NlcnZlck5hbWVzLm1hcChzZXJ2ZXIgPT4gKHtcbiAgICAgICAgICAgIGxhYmVsOiBzZXJ2ZXIsXG4gICAgICAgICAgICB2YWx1ZTogc2VydmVyLFxuICAgICAgICAgIH0pKX1cbiAgICAgICAgICBkZWZhdWx0VmFsdWU9e3NlcnZlck5hbWVzfVxuICAgICAgICAgIG9uU3VibWl0PXtvblN1Ym1pdH1cbiAgICAgICAgICBvbkNhbmNlbD17aGFuZGxlRXNjUmVqZWN0QWxsfVxuICAgICAgICAgIGhpZGVJbmRleGVzXG4gICAgICAgIC8+XG4gICAgICA8L0RpYWxvZz5cbiAgICAgIDxCb3ggcGFkZGluZ1g9ezF9PlxuICAgICAgICA8VGV4dCBkaW1Db2xvciBpdGFsaWM+XG4gICAgICAgICAgPEJ5bGluZT5cbiAgICAgICAgICAgIDxLZXlib2FyZFNob3J0Y3V0SGludCBzaG9ydGN1dD1cIlNwYWNlXCIgYWN0aW9uPVwic2VsZWN0XCIgLz5cbiAgICAgICAgICAgIDxLZXlib2FyZFNob3J0Y3V0SGludCBzaG9ydGN1dD1cIkVudGVyXCIgYWN0aW9uPVwiY29uZmlybVwiIC8+XG4gICAgICAgICAgICA8Q29uZmlndXJhYmxlU2hvcnRjdXRIaW50XG4gICAgICAgICAgICAgIGFjdGlvbj1cImNvbmZpcm06bm9cIlxuICAgICAgICAgICAgICBjb250ZXh0PVwiQ29uZmlybWF0aW9uXCJcbiAgICAgICAgICAgICAgZmFsbGJhY2s9XCJFc2NcIlxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbj1cInJlamVjdCBhbGxcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0J5bGluZT5cbiAgICAgICAgPC9UZXh0PlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gIClcbn1cbiJd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