source dump of claude code
at main 167 lines 16 kB view raw
1import { c as _c } from "react/compiler-runtime"; 2import figures from 'figures'; 3import React, { useEffect, useState } from 'react'; 4import type { CommandResultDisplay } from '../../commands.js'; 5import { Box, color, Text, useTheme } from '../../ink.js'; 6import { useMcpReconnect } from '../../services/mcp/MCPConnectionManager.js'; 7import { useAppStateStore } from '../../state/AppState.js'; 8import { Spinner } from '../Spinner.js'; 9type Props = { 10 serverName: string; 11 onComplete: (result?: string, options?: { 12 display?: CommandResultDisplay; 13 }) => void; 14}; 15export function MCPReconnect(t0) { 16 const $ = _c(25); 17 const { 18 serverName, 19 onComplete 20 } = t0; 21 const [theme] = useTheme(); 22 const store = useAppStateStore(); 23 const reconnectMcpServer = useMcpReconnect(); 24 const [isReconnecting, setIsReconnecting] = useState(true); 25 const [error, setError] = useState(null); 26 let t1; 27 let t2; 28 if ($[0] !== onComplete || $[1] !== reconnectMcpServer || $[2] !== serverName || $[3] !== store) { 29 t1 = () => { 30 const attemptReconnect = async function attemptReconnect() { 31 ; 32 try { 33 const server = store.getState().mcp.clients.find(c => c.name === serverName); 34 if (!server) { 35 setError(`MCP server "${serverName}" not found`); 36 setIsReconnecting(false); 37 onComplete(`MCP server "${serverName}" not found`); 38 return; 39 } 40 const result = await reconnectMcpServer(serverName); 41 bb43: switch (result.client.type) { 42 case "connected": 43 { 44 setIsReconnecting(false); 45 onComplete(`Successfully reconnected to ${serverName}`); 46 break bb43; 47 } 48 case "needs-auth": 49 { 50 setError(`${serverName} requires authentication`); 51 setIsReconnecting(false); 52 onComplete(`${serverName} requires authentication. Use /mcp to authenticate.`); 53 break bb43; 54 } 55 case "pending": 56 case "failed": 57 case "disabled": 58 { 59 setError(`Failed to reconnect to ${serverName}`); 60 setIsReconnecting(false); 61 onComplete(`Failed to reconnect to ${serverName}`); 62 } 63 } 64 } catch (t3) { 65 const err = t3; 66 const errorMessage = err instanceof Error ? err.message : String(err); 67 setError(errorMessage); 68 setIsReconnecting(false); 69 onComplete(`Error: ${errorMessage}`); 70 } 71 }; 72 attemptReconnect(); 73 }; 74 t2 = [serverName, reconnectMcpServer, store, onComplete]; 75 $[0] = onComplete; 76 $[1] = reconnectMcpServer; 77 $[2] = serverName; 78 $[3] = store; 79 $[4] = t1; 80 $[5] = t2; 81 } else { 82 t1 = $[4]; 83 t2 = $[5]; 84 } 85 useEffect(t1, t2); 86 if (isReconnecting) { 87 let t3; 88 if ($[6] !== serverName) { 89 t3 = <Text color="text">Reconnecting to <Text bold={true}>{serverName}</Text></Text>; 90 $[6] = serverName; 91 $[7] = t3; 92 } else { 93 t3 = $[7]; 94 } 95 let t4; 96 if ($[8] === Symbol.for("react.memo_cache_sentinel")) { 97 t4 = <Box><Spinner /><Text> Establishing connection to MCP server</Text></Box>; 98 $[8] = t4; 99 } else { 100 t4 = $[8]; 101 } 102 let t5; 103 if ($[9] !== t3) { 104 t5 = <Box flexDirection="column" gap={1} padding={1}>{t3}{t4}</Box>; 105 $[9] = t3; 106 $[10] = t5; 107 } else { 108 t5 = $[10]; 109 } 110 return t5; 111 } 112 if (error) { 113 let t3; 114 if ($[11] !== theme) { 115 t3 = color("error", theme)(figures.cross); 116 $[11] = theme; 117 $[12] = t3; 118 } else { 119 t3 = $[12]; 120 } 121 let t4; 122 if ($[13] !== t3) { 123 t4 = <Text>{t3} </Text>; 124 $[13] = t3; 125 $[14] = t4; 126 } else { 127 t4 = $[14]; 128 } 129 let t5; 130 if ($[15] !== serverName) { 131 t5 = <Text color="error">Failed to reconnect to {serverName}</Text>; 132 $[15] = serverName; 133 $[16] = t5; 134 } else { 135 t5 = $[16]; 136 } 137 let t6; 138 if ($[17] !== t4 || $[18] !== t5) { 139 t6 = <Box>{t4}{t5}</Box>; 140 $[17] = t4; 141 $[18] = t5; 142 $[19] = t6; 143 } else { 144 t6 = $[19]; 145 } 146 let t7; 147 if ($[20] !== error) { 148 t7 = <Text dimColor={true}>Error: {error}</Text>; 149 $[20] = error; 150 $[21] = t7; 151 } else { 152 t7 = $[21]; 153 } 154 let t8; 155 if ($[22] !== t6 || $[23] !== t7) { 156 t8 = <Box flexDirection="column" gap={1} padding={1}>{t6}{t7}</Box>; 157 $[22] = t6; 158 $[23] = t7; 159 $[24] = t8; 160 } else { 161 t8 = $[24]; 162 } 163 return t8; 164 } 165 return null; 166} 167//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmaWd1cmVzIiwiUmVhY3QiLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsIkNvbW1hbmRSZXN1bHREaXNwbGF5IiwiQm94IiwiY29sb3IiLCJUZXh0IiwidXNlVGhlbWUiLCJ1c2VNY3BSZWNvbm5lY3QiLCJ1c2VBcHBTdGF0ZVN0b3JlIiwiU3Bpbm5lciIsIlByb3BzIiwic2VydmVyTmFtZSIsIm9uQ29tcGxldGUiLCJyZXN1bHQiLCJvcHRpb25zIiwiZGlzcGxheSIsIk1DUFJlY29ubmVjdCIsInQwIiwiJCIsIl9jIiwidGhlbWUiLCJzdG9yZSIsInJlY29ubmVjdE1jcFNlcnZlciIsImlzUmVjb25uZWN0aW5nIiwic2V0SXNSZWNvbm5lY3RpbmciLCJlcnJvciIsInNldEVycm9yIiwidDEiLCJ0MiIsImF0dGVtcHRSZWNvbm5lY3QiLCJzZXJ2ZXIiLCJnZXRTdGF0ZSIsIm1jcCIsImNsaWVudHMiLCJmaW5kIiwiYyIsIm5hbWUiLCJiYjQzIiwiY2xpZW50IiwidHlwZSIsInQzIiwiZXJyIiwiZXJyb3JNZXNzYWdlIiwiRXJyb3IiLCJtZXNzYWdlIiwiU3RyaW5nIiwidDQiLCJTeW1ib2wiLCJmb3IiLCJ0NSIsImNyb3NzIiwidDYiLCJ0NyIsInQ4Il0sInNvdXJjZXMiOlsiTUNQUmVjb25uZWN0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZmlndXJlcyBmcm9tICdmaWd1cmVzJ1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB0eXBlIHsgQ29tbWFuZFJlc3VsdERpc3BsYXkgfSBmcm9tICcuLi8uLi9jb21tYW5kcy5qcydcbmltcG9ydCB7IEJveCwgY29sb3IsIFRleHQsIHVzZVRoZW1lIH0gZnJvbSAnLi4vLi4vaW5rLmpzJ1xuaW1wb3J0IHsgdXNlTWNwUmVjb25uZWN0IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWNwL01DUENvbm5lY3Rpb25NYW5hZ2VyLmpzJ1xuaW1wb3J0IHsgdXNlQXBwU3RhdGVTdG9yZSB9IGZyb20gJy4uLy4uL3N0YXRlL0FwcFN0YXRlLmpzJ1xuaW1wb3J0IHsgU3Bpbm5lciB9IGZyb20gJy4uL1NwaW5uZXIuanMnXG5cbnR5cGUgUHJvcHMgPSB7XG4gIHNlcnZlck5hbWU6IHN0cmluZ1xuICBvbkNvbXBsZXRlOiAoXG4gICAgcmVzdWx0Pzogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiB7IGRpc3BsYXk/OiBDb21tYW5kUmVzdWx0RGlzcGxheSB9LFxuICApID0+IHZvaWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIE1DUFJlY29ubmVjdCh7XG4gIHNlcnZlck5hbWUsXG4gIG9uQ29tcGxldGUsXG59OiBQcm9wcyk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGNvbnN0IFt0aGVtZV0gPSB1c2VUaGVtZSgpXG4gIGNvbnN0IHN0b3JlID0gdXNlQXBwU3RhdGVTdG9yZSgpXG4gIGNvbnN0IHJlY29ubmVjdE1jcFNlcnZlciA9IHVzZU1jcFJlY29ubmVjdCgpXG4gIGNvbnN0IFtpc1JlY29ubmVjdGluZywgc2V0SXNSZWNvbm5lY3RpbmddID0gdXNlU3RhdGUodHJ1ZSlcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgYXN5bmMgZnVuY3Rpb24gYXR0ZW1wdFJlY29ubmVjdCgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIENoZWNrIGlmIHNlcnZlciBleGlzdHMuIFJlYWQgdmlhIHN0b3JlLmdldFN0YXRlKCkgaW5zdGVhZCBvZiBhXG4gICAgICAgIC8vIHJlYWN0aXZlIHNlbGVjdG9yIHNvIHRoaXMgZWZmZWN0IGRvZXMgbm90IHJlLWZpcmUgd2hlblxuICAgICAgICAvLyByZWNvbm5lY3RNY3BTZXJ2ZXIgdXBkYXRlcyBtY3AuY2xpZW50cyB2aWEgb25Db25uZWN0aW9uQXR0ZW1wdC5cbiAgICAgICAgY29uc3Qgc2VydmVyID0gc3RvcmVcbiAgICAgICAgICAuZ2V0U3RhdGUoKVxuICAgICAgICAgIC5tY3AuY2xpZW50cy5maW5kKGMgPT4gYy5uYW1lID09PSBzZXJ2ZXJOYW1lKVxuICAgICAgICBpZiAoIXNlcnZlcikge1xuICAgICAgICAgIHNldEVycm9yKGBNQ1Agc2VydmVyIFwiJHtzZXJ2ZXJOYW1lfVwiIG5vdCBmb3VuZGApXG4gICAgICAgICAgc2V0SXNSZWNvbm5lY3RpbmcoZmFsc2UpXG4gICAgICAgICAgb25Db21wbGV0ZShgTUNQIHNlcnZlciBcIiR7c2VydmVyTmFtZX1cIiBub3QgZm91bmRgKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQXR0ZW1wdCByZWNvbm5lY3Rpb25cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVjb25uZWN0TWNwU2VydmVyKHNlcnZlck5hbWUpXG5cbiAgICAgICAgc3dpdGNoIChyZXN1bHQuY2xpZW50LnR5cGUpIHtcbiAgICAgICAgICBjYXNlICdjb25uZWN0ZWQnOlxuICAgICAgICAgICAgc2V0SXNSZWNvbm5lY3RpbmcoZmFsc2UpXG4gICAgICAgICAgICBvbkNvbXBsZXRlKGBTdWNjZXNzZnVsbHkgcmVjb25uZWN0ZWQgdG8gJHtzZXJ2ZXJOYW1lfWApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgJ25lZWRzLWF1dGgnOlxuICAgICAgICAgICAgc2V0RXJyb3IoYCR7c2VydmVyTmFtZX0gcmVxdWlyZXMgYXV0aGVudGljYXRpb25gKVxuICAgICAgICAgICAgc2V0SXNSZWNvbm5lY3RpbmcoZmFsc2UpXG4gICAgICAgICAgICBvbkNvbXBsZXRlKFxuICAgICAgICAgICAgICBgJHtzZXJ2ZXJOYW1lfSByZXF1aXJlcyBhdXRoZW50aWNhdGlvbi4gVXNlIC9tY3AgdG8gYXV0aGVudGljYXRlLmAsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIGNhc2UgJ3BlbmRpbmcnOlxuICAgICAgICAgIGNhc2UgJ2ZhaWxlZCc6XG4gICAgICAgICAgY2FzZSAnZGlzYWJsZWQnOlxuICAgICAgICAgICAgc2V0RXJyb3IoYEZhaWxlZCB0byByZWNvbm5lY3QgdG8gJHtzZXJ2ZXJOYW1lfWApXG4gICAgICAgICAgICBzZXRJc1JlY29ubmVjdGluZyhmYWxzZSlcbiAgICAgICAgICAgIG9uQ29tcGxldGUoYEZhaWxlZCB0byByZWNvbm5lY3QgdG8gJHtzZXJ2ZXJOYW1lfWApXG4gICAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLy8gT25seSBjYXRjaCBhY3R1YWwgZXJyb3JzIChsaWtlIHNlcnZlciBub3QgZm91bmQpXG4gICAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiBTdHJpbmcoZXJyKVxuICAgICAgICBzZXRFcnJvcihlcnJvck1lc3NhZ2UpXG4gICAgICAgIHNldElzUmVjb25uZWN0aW5nKGZhbHNlKVxuICAgICAgICBvbkNvbXBsZXRlKGBFcnJvcjogJHtlcnJvck1lc3NhZ2V9YClcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2b2lkIGF0dGVtcHRSZWNvbm5lY3QoKVxuICB9LCBbc2VydmVyTmFtZSwgcmVjb25uZWN0TWNwU2VydmVyLCBzdG9yZSwgb25Db21wbGV0ZV0pXG5cbiAgaWYgKGlzUmVjb25uZWN0aW5nKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGdhcD17MX0gcGFkZGluZz17MX0+XG4gICAgICAgIDxUZXh0IGNvbG9yPVwidGV4dFwiPlxuICAgICAgICAgIFJlY29ubmVjdGluZyB0byA8VGV4dCBib2xkPntzZXJ2ZXJOYW1lfTwvVGV4dD5cbiAgICAgICAgPC9UZXh0PlxuICAgICAgICA8Qm94PlxuICAgICAgICAgIDxTcGlubmVyIC8+XG4gICAgICAgICAgPFRleHQ+IEVzdGFibGlzaGluZyBjb25uZWN0aW9uIHRvIE1DUCBzZXJ2ZXI8L1RleHQ+XG4gICAgICAgIDwvQm94PlxuICAgICAgPC9Cb3g+XG4gICAgKVxuICB9XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiIGdhcD17MX0gcGFkZGluZz17MX0+XG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFRleHQ+e2NvbG9yKCdlcnJvcicsIHRoZW1lKShmaWd1cmVzLmNyb3NzKX0gPC9UZXh0PlxuICAgICAgICAgIDxUZXh0IGNvbG9yPVwiZXJyb3JcIj5GYWlsZWQgdG8gcmVjb25uZWN0IHRvIHtzZXJ2ZXJOYW1lfTwvVGV4dD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIDxUZXh0IGRpbUNvbG9yPkVycm9yOiB7ZXJyb3J9PC9UZXh0PlxuICAgICAgPC9Cb3g+XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU9BLE9BQU8sTUFBTSxTQUFTO0FBQzdCLE9BQU9DLEtBQUssSUFBSUMsU0FBUyxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNsRCxjQUFjQyxvQkFBb0IsUUFBUSxtQkFBbUI7QUFDN0QsU0FBU0MsR0FBRyxFQUFFQyxLQUFLLEVBQUVDLElBQUksRUFBRUMsUUFBUSxRQUFRLGNBQWM7QUFDekQsU0FBU0MsZUFBZSxRQUFRLDRDQUE0QztBQUM1RSxTQUFTQyxnQkFBZ0IsUUFBUSx5QkFBeUI7QUFDMUQsU0FBU0MsT0FBTyxRQUFRLGVBQWU7QUFFdkMsS0FBS0MsS0FBSyxHQUFHO0VBQ1hDLFVBQVUsRUFBRSxNQUFNO0VBQ2xCQyxVQUFVLEVBQUUsQ0FDVkMsTUFBZSxDQUFSLEVBQUUsTUFBTSxFQUNmQyxPQUE0QyxDQUFwQyxFQUFFO0lBQUVDLE9BQU8sQ0FBQyxFQUFFYixvQkFBb0I7RUFBQyxDQUFDLEVBQzVDLEdBQUcsSUFBSTtBQUNYLENBQUM7QUFFRCxPQUFPLFNBQUFjLGFBQUFDLEVBQUE7RUFBQSxNQUFBQyxDQUFBLEdBQUFD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