mirror of
http://10.0.2.1:3031/sauer/claude-code.git
synced 2026-06-30 16:56:58 +10:00
186 lines
20 KiB
TypeScript
186 lines
20 KiB
TypeScript
|
|
import { c as _c } from "react/compiler-runtime";
|
||
|
|
import React, { useEffect, useRef } from 'react';
|
||
|
|
import { useNotifications } from 'src/context/notifications.js';
|
||
|
|
import { Text } from 'src/ink.js';
|
||
|
|
import type { MCPServerConnection } from 'src/services/mcp/types.js';
|
||
|
|
import { getGlobalConfig, saveGlobalConfig } from 'src/utils/config.js';
|
||
|
|
import { detectIDEs, type IDEExtensionInstallationStatus, isJetBrainsIde, isSupportedTerminal } from 'src/utils/ide.js';
|
||
|
|
import { getIsRemoteMode } from '../../bootstrap/state.js';
|
||
|
|
import { useIdeConnectionStatus } from '../useIdeConnectionStatus.js';
|
||
|
|
import type { IDESelection } from '../useIdeSelection.js';
|
||
|
|
const MAX_IDE_HINT_SHOW_COUNT = 5;
|
||
|
|
type Props = {
|
||
|
|
ideInstallationStatus: IDEExtensionInstallationStatus | null;
|
||
|
|
ideSelection: IDESelection | undefined;
|
||
|
|
mcpClients: MCPServerConnection[];
|
||
|
|
};
|
||
|
|
export function useIDEStatusIndicator(t0) {
|
||
|
|
const $ = _c(26);
|
||
|
|
const {
|
||
|
|
ideSelection,
|
||
|
|
mcpClients,
|
||
|
|
ideInstallationStatus
|
||
|
|
} = t0;
|
||
|
|
const {
|
||
|
|
addNotification,
|
||
|
|
removeNotification
|
||
|
|
} = useNotifications();
|
||
|
|
const {
|
||
|
|
status: ideStatus,
|
||
|
|
ideName
|
||
|
|
} = useIdeConnectionStatus(mcpClients);
|
||
|
|
const hasShownHintRef = useRef(false);
|
||
|
|
let t1;
|
||
|
|
if ($[0] !== ideInstallationStatus) {
|
||
|
|
t1 = ideInstallationStatus ? isJetBrainsIde(ideInstallationStatus?.ideType) : false;
|
||
|
|
$[0] = ideInstallationStatus;
|
||
|
|
$[1] = t1;
|
||
|
|
} else {
|
||
|
|
t1 = $[1];
|
||
|
|
}
|
||
|
|
const isJetBrains = t1;
|
||
|
|
const showIDEInstallErrorOrJetBrainsInfo = ideInstallationStatus?.error || isJetBrains;
|
||
|
|
const shouldShowIdeSelection = ideStatus === "connected" && (ideSelection?.filePath || ideSelection?.text && ideSelection.lineCount > 0);
|
||
|
|
const shouldShowConnected = ideStatus === "connected" && !shouldShowIdeSelection;
|
||
|
|
const showIDEInstallError = showIDEInstallErrorOrJetBrainsInfo && !isJetBrains && !shouldShowConnected && !shouldShowIdeSelection;
|
||
|
|
const showJetBrainsInfo = showIDEInstallErrorOrJetBrainsInfo && isJetBrains && !shouldShowConnected && !shouldShowIdeSelection;
|
||
|
|
let t2;
|
||
|
|
let t3;
|
||
|
|
if ($[2] !== addNotification || $[3] !== ideStatus || $[4] !== removeNotification || $[5] !== showJetBrainsInfo) {
|
||
|
|
t2 = () => {
|
||
|
|
if (getIsRemoteMode()) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
if (isSupportedTerminal() || ideStatus !== null || showJetBrainsInfo) {
|
||
|
|
removeNotification("ide-status-hint");
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
if (hasShownHintRef.current || (getGlobalConfig().ideHintShownCount ?? 0) >= MAX_IDE_HINT_SHOW_COUNT) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
const timeoutId = setTimeout(_temp2, 3000, hasShownHintRef, addNotification);
|
||
|
|
return () => clearTimeout(timeoutId);
|
||
|
|
};
|
||
|
|
t3 = [addNotification, removeNotification, ideStatus, showJetBrainsInfo];
|
||
|
|
$[2] = addNotification;
|
||
|
|
$[3] = ideStatus;
|
||
|
|
$[4] = removeNotification;
|
||
|
|
$[5] = showJetBrainsInfo;
|
||
|
|
$[6] = t2;
|
||
|
|
$[7] = t3;
|
||
|
|
} else {
|
||
|
|
t2 = $[6];
|
||
|
|
t3 = $[7];
|
||
|
|
}
|
||
|
|
useEffect(t2, t3);
|
||
|
|
let t4;
|
||
|
|
let t5;
|
||
|
|
if ($[8] !== addNotification || $[9] !== ideName || $[10] !== ideStatus || $[11] !== removeNotification || $[12] !== showIDEInstallError || $[13] !== showJetBrainsInfo) {
|
||
|
|
t4 = () => {
|
||
|
|
if (getIsRemoteMode()) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
if (showIDEInstallError || showJetBrainsInfo || ideStatus !== "disconnected" || !ideName) {
|
||
|
|
removeNotification("ide-status-disconnected");
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
addNotification({
|
||
|
|
key: "ide-status-disconnected",
|
||
|
|
text: `${ideName} disconnected`,
|
||
|
|
color: "error",
|
||
|
|
priority: "medium"
|
||
|
|
});
|
||
|
|
};
|
||
|
|
t5 = [addNotification, removeNotification, ideStatus, ideName, showIDEInstallError, showJetBrainsInfo];
|
||
|
|
$[8] = addNotification;
|
||
|
|
$[9] = ideName;
|
||
|
|
$[10] = ideStatus;
|
||
|
|
$[11] = removeNotification;
|
||
|
|
$[12] = showIDEInstallError;
|
||
|
|
$[13] = showJetBrainsInfo;
|
||
|
|
$[14] = t4;
|
||
|
|
$[15] = t5;
|
||
|
|
} else {
|
||
|
|
t4 = $[14];
|
||
|
|
t5 = $[15];
|
||
|
|
}
|
||
|
|
useEffect(t4, t5);
|
||
|
|
let t6;
|
||
|
|
let t7;
|
||
|
|
if ($[16] !== addNotification || $[17] !== removeNotification || $[18] !== showJetBrainsInfo) {
|
||
|
|
t6 = () => {
|
||
|
|
if (getIsRemoteMode()) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
if (!showJetBrainsInfo) {
|
||
|
|
removeNotification("ide-status-jetbrains-disconnected");
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
addNotification({
|
||
|
|
key: "ide-status-jetbrains-disconnected",
|
||
|
|
text: "IDE plugin not connected \xB7 /status for info",
|
||
|
|
priority: "medium"
|
||
|
|
});
|
||
|
|
};
|
||
|
|
t7 = [addNotification, removeNotification, showJetBrainsInfo];
|
||
|
|
$[16] = addNotification;
|
||
|
|
$[17] = removeNotification;
|
||
|
|
$[18] = showJetBrainsInfo;
|
||
|
|
$[19] = t6;
|
||
|
|
$[20] = t7;
|
||
|
|
} else {
|
||
|
|
t6 = $[19];
|
||
|
|
t7 = $[20];
|
||
|
|
}
|
||
|
|
useEffect(t6, t7);
|
||
|
|
let t8;
|
||
|
|
let t9;
|
||
|
|
if ($[21] !== addNotification || $[22] !== removeNotification || $[23] !== showIDEInstallError) {
|
||
|
|
t8 = () => {
|
||
|
|
if (getIsRemoteMode()) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
if (!showIDEInstallError) {
|
||
|
|
removeNotification("ide-status-install-error");
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
addNotification({
|
||
|
|
key: "ide-status-install-error",
|
||
|
|
text: "IDE extension install failed (see /status for info)",
|
||
|
|
color: "error",
|
||
|
|
priority: "medium"
|
||
|
|
});
|
||
|
|
};
|
||
|
|
t9 = [addNotification, removeNotification, showIDEInstallError];
|
||
|
|
$[21] = addNotification;
|
||
|
|
$[22] = removeNotification;
|
||
|
|
$[23] = showIDEInstallError;
|
||
|
|
$[24] = t8;
|
||
|
|
$[25] = t9;
|
||
|
|
} else {
|
||
|
|
t8 = $[24];
|
||
|
|
t9 = $[25];
|
||
|
|
}
|
||
|
|
useEffect(t8, t9);
|
||
|
|
}
|
||
|
|
function _temp2(hasShownHintRef_0, addNotification_0) {
|
||
|
|
detectIDEs(true).then(infos => {
|
||
|
|
const ideName_0 = infos[0]?.name;
|
||
|
|
if (ideName_0 && !hasShownHintRef_0.current) {
|
||
|
|
hasShownHintRef_0.current = true;
|
||
|
|
saveGlobalConfig(_temp);
|
||
|
|
addNotification_0({
|
||
|
|
key: "ide-status-hint",
|
||
|
|
jsx: <Text dimColor={true}>/ide for <Text color="ide">{ideName_0}</Text></Text>,
|
||
|
|
priority: "low"
|
||
|
|
});
|
||
|
|
}
|
||
|
|
});
|
||
|
|
}
|
||
|
|
function _temp(current) {
|
||
|
|
return {
|
||
|
|
...current,
|
||
|
|
ideHintShownCount: (current.ideHintShownCount ?? 0) + 1
|
||
|
|
};
|
||
|
|
}
|
||
|
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZU5vdGlmaWNhdGlvbnMiLCJUZXh0IiwiTUNQU2VydmVyQ29ubmVjdGlvbiIsImdldEdsb2JhbENvbmZpZyIsInNhdmVHbG9iYWxDb25maWciLCJkZXRlY3RJREVzIiwiSURFRXh0ZW5zaW9uSW5zdGFsbGF0aW9uU3RhdHVzIiwiaXNKZXRCcmFpbnNJZGUiLCJpc1N1cHBvcnRlZFRlcm1pbmFsIiwiZ2V0SXNSZW1vdGVNb2RlIiwidXNlSWRlQ29ubmVjdGlvblN0YXR1cyIsIklERVNlbGVjdGlvbiIsIk1BWF9JREVfSElOVF9TSE9XX0NPVU5UIiwiUHJvcHMiLCJpZGVJbnN0YWxsYXRpb25TdGF0dXMiLCJpZGVTZWxlY3Rpb24iLCJtY3BDbGllbnRzIiwidXNlSURFU3RhdHVzSW5kaWNhdG9yIiwidDAiLCIkIiwiX2MiLCJhZGROb3RpZmljYXRpb24iLCJyZW1vdmVOb3RpZmljYXRpb24iLCJzdGF0dXMiLCJpZGVTdGF0dXMiLCJpZGVOYW1lIiwiaGFzU2hvd25IaW50UmVmIiwidDEiLCJpZGVUeXBlIiwiaXNKZXRCcmFpbnMiLCJzaG93SURFSW5zdGFsbEVycm9yT3JKZXRCcmFpbnNJbmZvIiwiZXJyb3IiLCJzaG91bGRTaG93SWRlU2VsZWN0aW9uIiwiZmlsZVBhdGgiLCJ0ZXh0IiwibGluZUNvdW50Iiwic2hvdWxkU2hvd0Nvbm5lY3RlZCIsInNob3dJREVJbnN0YWxsRXJyb3IiLCJzaG93SmV0QnJhaW5zSW5mbyIsInQyIiwidDMiLCJjdXJyZW50IiwiaWRlSGludFNob3duQ291bnQiLCJ0aW1lb3V0SWQiLCJzZXRUaW1lb3V0IiwiX3RlbXAyIiwiY2xlYXJUaW1lb3V0IiwidDQiLCJ0NSIsImtleSIsImNvbG9yIiwicHJpb3JpdHkiLCJ0NiIsInQ3IiwidDgiLCJ0OSIsImhhc1Nob3duSGludFJlZl8wIiwiYWRkTm90aWZpY2F0aW9uXzAiLCJ0aGVuIiwiaW5mb3MiLCJpZGVOYW1lXzAiLCJuYW1lIiwiX3RlbXAiLCJqc3giXSwic291cmNlcyI6WyJ1c2VJREVTdGF0dXNJbmRpY2F0b3IudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlTm90aWZpY2F0aW9ucyB9IGZyb20gJ3NyYy9jb250ZXh0L25vdGlmaWNhdGlvbnMuanMnXG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnc3JjL2luay5qcydcbmltcG9ydCB0eXBlIHsgTUNQU2VydmVyQ29ubmVjdGlvbiB9IGZyb20gJ3NyYy9zZXJ2aWNlcy9tY3AvdHlwZXMuanMnXG5pbXBvcnQgeyBnZXRHbG9iYWxDb25maWcsIHNhdmVHbG9iYWxDb25maWcgfSBmcm9tICdzcmMvdXRpbHMvY29uZmlnLmpzJ1xuaW1wb3J0IHtcbiAgZGV0ZWN0SURFcyxcbiAgdHlwZSBJREVFeHRlbnNpb25JbnN0YWxsYXRpb25TdGF0dXMsXG4gIGlzSmV0QnJhaW5zSWRlLFxuICBpc1N1cHBvcnRlZFRlcm1pbmFsLFxufSBmcm9tICdzcmMvdXRpbHMvaWRlLmpzJ1xuaW1wb3J0IHsgZ2V0SXNSZW1vdGVNb2RlIH0gZnJvbSAnLi4vLi4vYm9vdHN0cmFwL3N0YXRlLmpzJ1xuaW1wb3J0IHsgdXNlSWRlQ29ubmVjdGlvblN0YXR1cyB9IGZyb20gJy4uL3VzZUlkZUNvbm5lY3Rpb25TdGF0dXMuanMnXG5pbXBvcnQgdHlwZSB7IElERVNlbGVjdGlvbiB9IGZyb20gJy4uL3VzZUlkZVNlbGVjdGlvbi5qcydcblxuY29uc3QgTUFYX0lERV9ISU5UX1NIT1dfQ09VTlQgPSA1XG5cbnR5cGUgUHJvcHMgPSB7XG4gIGlkZUluc3RhbGxhdGlvblN0YXR1czogSURFRXh0ZW5zaW9uSW5zdGFsbGF0aW9uU3RhdHVzIHwgbnVsbFxuICBpZGVTZWxlY3Rpb246IElERVNlbGVjdGlvbiB8IHVuZGVmaW5lZFxuICBtY3BDbGllbnRzOiBNQ1BTZXJ2ZXJDb25uZWN0aW9uW11cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUlERVN0YXR1c0luZGljYXRvcih7XG4gIGlkZVNlbGVjdGlvbixcbiAgbWNwQ2xpZW50cyxcbiAgaWRlSW5zdGFsbGF0aW9uU3RhdHVzLFxufTogUHJvcHMpOiB2b2lkIHtcbiAgY29uc3QgeyBhZGROb3RpZmljYXRpb24sIHJlbW92ZU5vdGlmaWNhdGlvbiB9ID0gdXNlTm90aWZpY2F0aW9ucygpXG4gIGNvbnN0IHsgc3RhdHVzOiBpZGVTdGF0dXMsIGlkZU5hbWUgfSA9IHVzZUlkZUNvbm5lY3Rpb25TdGF0dXMobWNwQ2xpZW50cylcbiAgY29uc3QgaGFzU2hvd25IaW50UmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIGNvbnN0IGlzSmV0QnJhaW5zID0gaWRlSW5zdGFsbGF0aW9uU3RhdHVzXG4gICAgPyBpc0pldEJyYWluc0lkZShpZGVJbnN0YWxsYXRpb25TdGF0dXM/LmlkZVR5cGUpXG4gICAgOiBmYWxzZVxuICBjb25zdCBzaG93SURFSW5zdGFsbEVycm9yT3JKZXRCcmFpbnNJbmZvID1cbiAgICBpZGVJbnN0YWxsYXRpb25TdGF0dXM/LmVycm9yIHx8IGlzSmV0QnJhaW5zXG5cbiAgY29uc3Qgc2hvdWxkU2hvd0lkZVNlbGVjdGlvbiA9XG4gICAgaWRlU3RhdHVzID09PSAnY29ubmVjdGVkJyAmJlxuICAgIChpZGVTZWxlY3Rpb24/LmZpbGVQYXRoIHx8XG4gICAgICAoaWRlU2VsZWN0aW9uPy50ZXh0ICYmIGlkZVNlbGVjdGlvbi5saW5lQ291bnQgPiAwKSlcblxuICAvLyBPbmx5IHNob3cgdGhlIGNvbm5lY3RlZCBpZiBub3Qgc2hvd2luZyBjb250ZXh0XG4gIGNvbnN0IHNob3VsZFNob3dDb25uZWN0ZWQgPVxuICAgIGlkZVN0YXR1cyA9PT0gJ2Nvbm5lY3RlZCcgJiYgIXNob3VsZFNob3dJZGVTZWxlY3Rpb25cblxuICBjb25zdCBzaG93SURFSW5zdGFsbEVycm9yID1cbiAgICBzaG93SURFSW5zdGFsbEVycm9yT3JKZXRCcmFpbnNJbmZvICYmXG4gICAgIWlzSmV0QnJhaW5zICYmXG4gICAgIXNob3VsZFNob3dDb25uZWN0ZWQgJiZcbiAgICAhc2hvdWxkU2hvd0lkZVNlbGVjdGlvblxuXG4gIGNvbnN0IHNob3dKZXRCcmFpbnNJbmZvID1cbiAgICBzaG93SURFSW5zdGFsbEVycm9yT3JKZXRCcmFpbnNJbmZvICYmXG4gICAgaXNKZXRCcmFpbnMgJiZcbiAgICAhc2hvdWxkU2hvd0Nvbm5lY3RlZCAmJlxuICAgICFzaG91bGRTaG93SWRlU2VsZWN0aW9uXG5cbiAgLy8gU2hvdyB0aGUgL2lkZSBjb21tYW5kIGhpbnQgaWYgcnVubmluZyBmcm9tIGFuIGV4dGVybmFsIHRlcm1pbmFsIGFuZCBmb3VuZCBydW5uaW5nIElERShzKVxuICA
|