source dump of claude code
at main 64 lines 8.0 kB view raw
1import { c as _c } from "react/compiler-runtime"; 2import * as React from 'react'; 3import { type ReactNode, useEffect, useRef, useState } from 'react'; 4import { Box, Text } from '../../ink.js'; 5import { useShortcutDisplay } from '../../keybindings/useShortcutDisplay.js'; 6import { SandboxManager } from '../../utils/sandbox/sandbox-adapter.js'; 7export function SandboxPromptFooterHint() { 8 const $ = _c(6); 9 const [recentViolationCount, setRecentViolationCount] = useState(0); 10 const timerRef = useRef(null); 11 const detailsShortcut = useShortcutDisplay("app:toggleTranscript", "Global", "ctrl+o"); 12 let t0; 13 let t1; 14 if ($[0] === Symbol.for("react.memo_cache_sentinel")) { 15 t0 = () => { 16 if (!SandboxManager.isSandboxingEnabled()) { 17 return; 18 } 19 const store = SandboxManager.getSandboxViolationStore(); 20 let lastCount = store.getTotalCount(); 21 const unsubscribe = store.subscribe(() => { 22 const currentCount = store.getTotalCount(); 23 const newViolations = currentCount - lastCount; 24 if (newViolations > 0) { 25 setRecentViolationCount(newViolations); 26 lastCount = currentCount; 27 if (timerRef.current) { 28 clearTimeout(timerRef.current); 29 } 30 timerRef.current = setTimeout(setRecentViolationCount, 5000, 0); 31 } 32 }); 33 return () => { 34 unsubscribe(); 35 if (timerRef.current) { 36 clearTimeout(timerRef.current); 37 } 38 }; 39 }; 40 t1 = []; 41 $[0] = t0; 42 $[1] = t1; 43 } else { 44 t0 = $[0]; 45 t1 = $[1]; 46 } 47 useEffect(t0, t1); 48 if (!SandboxManager.isSandboxingEnabled() || recentViolationCount === 0) { 49 return null; 50 } 51 const t2 = recentViolationCount === 1 ? "operation" : "operations"; 52 let t3; 53 if ($[2] !== detailsShortcut || $[3] !== recentViolationCount || $[4] !== t2) { 54 t3 = <Box paddingX={0} paddingY={0}><Text color="inactive" wrap="truncate"> Sandbox blocked {recentViolationCount}{" "}{t2} ·{" "}{detailsShortcut} for details · /sandbox to disable</Text></Box>; 55 $[2] = detailsShortcut; 56 $[3] = recentViolationCount; 57 $[4] = t2; 58 $[5] = t3; 59 } else { 60 t3 = $[5]; 61 } 62 return t3; 63} 64//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlJlYWN0Tm9kZSIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiQm94IiwiVGV4dCIsInVzZVNob3J0Y3V0RGlzcGxheSIsIlNhbmRib3hNYW5hZ2VyIiwiU2FuZGJveFByb21wdEZvb3RlckhpbnQiLCIkIiwiX2MiLCJyZWNlbnRWaW9sYXRpb25Db3VudCIsInNldFJlY2VudFZpb2xhdGlvbkNvdW50IiwidGltZXJSZWYiLCJkZXRhaWxzU2hvcnRjdXQiLCJ0MCIsInQxIiwiU3ltYm9sIiwiZm9yIiwiaXNTYW5kYm94aW5nRW5hYmxlZCIsInN0b3JlIiwiZ2V0U2FuZGJveFZpb2xhdGlvblN0b3JlIiwibGFzdENvdW50IiwiZ2V0VG90YWxDb3VudCIsInVuc3Vic2NyaWJlIiwic3Vic2NyaWJlIiwiY3VycmVudENvdW50IiwibmV3VmlvbGF0aW9ucyIsImN1cnJlbnQiLCJjbGVhclRpbWVvdXQiLCJzZXRUaW1lb3V0IiwidDIiLCJ0MyJdLCJzb3VyY2VzIjpbIlNhbmRib3hQcm9tcHRGb290ZXJIaW50LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHR5cGUgUmVhY3ROb2RlLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IEJveCwgVGV4dCB9IGZyb20gJy4uLy4uL2luay5qcydcbmltcG9ydCB7IHVzZVNob3J0Y3V0RGlzcGxheSB9IGZyb20gJy4uLy4uL2tleWJpbmRpbmdzL3VzZVNob3J0Y3V0RGlzcGxheS5qcydcbmltcG9ydCB7IFNhbmRib3hNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvc2FuZGJveC9zYW5kYm94LWFkYXB0ZXIuanMnXG5cbmV4cG9ydCBmdW5jdGlvbiBTYW5kYm94UHJvbXB0Rm9vdGVySGludCgpOiBSZWFjdE5vZGUge1xuICBjb25zdCBbcmVjZW50VmlvbGF0aW9uQ291bnQsIHNldFJlY2VudFZpb2xhdGlvbkNvdW50XSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IHRpbWVyUmVmID0gdXNlUmVmPE5vZGVKUy5UaW1lb3V0IHwgbnVsbD4obnVsbClcbiAgY29uc3QgZGV0YWlsc1Nob3J0Y3V0ID0gdXNlU2hvcnRjdXREaXNwbGF5KFxuICAgICdhcHA6dG9nZ2xlVHJhbnNjcmlwdCcsXG4gICAgJ0dsb2JhbCcsXG4gICAgJ2N0cmwrbycsXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghU2FuZGJveE1hbmFnZXIuaXNTYW5kYm94aW5nRW5hYmxlZCgpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBzdG9yZSA9IFNhbmRib3hNYW5hZ2VyLmdldFNhbmRib3hWaW9sYXRpb25TdG9yZSgpXG4gICAgbGV0IGxhc3RDb3VudCA9IHN0b3JlLmdldFRvdGFsQ291bnQoKVxuXG4gICAgY29uc3QgdW5zdWJzY3JpYmUgPSBzdG9yZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgY29uc3QgY3VycmVudENvdW50ID0gc3RvcmUuZ2V0VG90YWxDb3VudCgpXG4gICAgICBjb25zdCBuZXdWaW9sYXRpb25zID0gY3VycmVudENvdW50IC0gbGFzdENvdW50XG5cbiAgICAgIGlmIChuZXdWaW9sYXRpb25zID4gMCkge1xuICAgICAgICBzZXRSZWNlbnRWaW9sYXRpb25Db3VudChuZXdWaW9sYXRpb25zKVxuICAgICAgICBsYXN0Q291bnQgPSBjdXJyZW50Q291bnRcblxuICAgICAgICBpZiAodGltZXJSZWYuY3VycmVudCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lclJlZi5jdXJyZW50KVxuICAgICAgICB9XG5cbiAgICAgICAgdGltZXJSZWYuY3VycmVudCA9IHNldFRpbWVvdXQoc2V0UmVjZW50VmlvbGF0aW9uQ291bnQsIDUwMDAsIDApXG4gICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB1bnN1YnNjcmliZSgpXG4gICAgICBpZiAodGltZXJSZWYuY3VycmVudCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZXJSZWYuY3VycmVudClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtdKVxuXG4gIGlmICghU2FuZGJveE1hbmFnZXIuaXNTYW5kYm94aW5nRW5hYmxlZCgpIHx8IHJlY2VudFZpb2xhdGlvbkNvdW50ID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPEJveCBwYWRkaW5nWD17MH0gcGFkZGluZ1k9ezB9PlxuICAgICAgPFRleHQgY29sb3I9XCJpbmFjdGl2ZVwiIHdyYXA9XCJ0cnVuY2F0ZVwiPlxuICAgICAgICDip4ggU2FuZGJveCBibG9ja2VkIHtyZWNlbnRWaW9sYXRpb25Db3VudH17JyAnfVxuICAgICAgICB7cmVjZW50VmlvbGF0aW9uQ291bnQgPT09IDEgPyAnb3BlcmF0aW9uJyA6ICdvcGVyYXRpb25zJ30gwrd7JyAnfVxuICAgICAgICB7ZGV0YWlsc1Nob3J0Y3V0fSBmb3IgZGV0YWlscyDCtyAvc2FuZGJveCB0byBkaXNhYmxlXG4gICAgICA8L1RleHQ+XG4gICAgPC9Cb3g+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sS0FBS0EsS0FBSyxNQUFNLE9BQU87QUFDOUIsU0FBUyxLQUFLQyxTQUFTLEVBQUVDLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNuRSxTQUFTQyxHQUFHLEVBQUVDLElBQUksUUFBUSxjQUFjO0FBQ3hDLFNBQVNDLGtCQUFrQixRQUFRLHlDQUF5QztBQUM1RSxTQUFTQyxjQUFjLFFBQVEsd0NBQXdDO0FBRXZFLE9BQU8sU0FBQUMsd0JBQUE7RUFBQSxNQUFBQyxDQUFBLEdBQUFDLEVBQUE7RUFDTCxPQUFBQyxvQkFBQSxFQUFBQyx1QkFBQSxJQUF3RFQsUUFBUSxDQUFDLENBQUMsQ0FBQztFQUNuRSxNQUFBVSxRQUFBLEdBQWlCWCxNQUFNLENBQXdCLElBQUksQ0FBQztFQUNwRCxNQUFBWSxlQUFBLEdBQXdCUixrQkFBa0IsQ0FDeEMsc0JBQXNCLEVBQ3RCLFFBQVEsRUFDUixRQUNGLENBQUM7RUFBQSxJQUFBUyxFQUFBO0VBQUEsSUFBQUMsRUFBQTtFQUFBLElBQUFQLENBQUEsUUFBQVEsTUFBQSxDQUFBQyxHQUFBO0lBRVNILEVBQUEsR0FBQUEsQ0FBQTtNQUNSLElBQUksQ0FBQ1IsY0FBYyxDQUFBWSxtQkFBb0IsQ0FBQyxDQUFDO1FBQUE7TUFBQTtNQUl6QyxNQUFBQyxLQUFBLEdBQWNiLGNBQWMsQ0FBQWMsd0JBQXlCLENBQUMsQ0FBQztNQUN2RCxJQUFBQyxTQUFBLEdBQWdCRixLQUFLLENBQUFHLGFBQWMsQ0FBQyxDQUFDO01BRXJDLE1BQUFDLFdBQUEsR0FBb0JKLEtBQUssQ0FBQUssU0FBVSxDQUFDO1FBQ2xDLE1BQUFDLFlBQUEsR0FBcUJOLEtBQUssQ0FBQUcsYUFBYyxDQUFDLENBQUM7UUFDMUMsTUFBQUksYUFBQSxHQUFzQkQsWUFBWSxHQUFHSixTQUFTO1FBRTlDLElBQUlLLGFBQWEsR0FBRyxDQUFDO1VBQ25CZix1QkFBdUIsQ0FBQ2UsYUFBYSxDQUFDO1VBQ3RDTCxTQUFBLENBQUFBLENBQUEsQ0FBWUksWUFBWTtVQUV4QixJQUFJYixRQUFRLENBQUFlLE9BQVE7WUFDbEJDLFlBQVksQ0FBQ2hCLFFBQVEsQ0FBQWUsT0FBUSxDQUFDO1VBQUE7VUFHaENmLFFBQVEsQ0FBQWUsT0FBQSxHQUFXRSxVQUFVLENBQUNsQix1QkFBdUIsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUE5QztRQUFBO01BQ2pCLENBQ0YsQ0FBQztNQUFBLE9BRUs7UUFDTFksV0FBVyxDQUFDLENBQUM7UUFDYixJQUFJWCxRQUFRLENBQUFlLE9BQVE7VUFDbEJDLFlBQVksQ0FBQ2hCLFFBQVEsQ0FBQWUsT0FBUSxDQUFDO1FBQUE7TUFDL0IsQ0FDRjtJQUFBLENBQ0Y7SUFBRVosRUFBQSxLQUFFO0lBQUFQLENBQUEsTUFBQU0sRUFBQTtJQUFBTixDQUFBLE1BQUFPLEVBQUE7RUFBQTtJQUFBRCxFQUFBLEdBQUFOLENBQUE7SUFBQU8sRUFBQSxHQUFBUCxDQUFBO0VBQUE7RUE5QkxSLFNBQVMsQ0FBQ2MsRUE4QlQsRUFBRUMsRUFBRSxDQUFDO0VBRU4sSUFBSSxDQUFDVCxjQUFjLENBQUFZLG1CQUFvQixDQUFDLENBQStCLElBQTFCUixvQkFBb0IsS0FBSyxDQUFDO0lBQUEsT0FDOUQsSUFBSTtFQUFBO0VBT04sTUFBQW9CLEVBQUEsR0FBQXBCLG9CQUFvQixLQUFLLENBQThCLEdBQXZELFdBQXVELEdBQXZELFlBQXVEO0VBQUEsSUFBQXFCLEVBQUE7RUFBQSxJQUFBdkIsQ0FBQSxRQUFBSyxlQUFBLElBQUFMLENBQUEsUUFBQUUsb0JBQUEsSUFBQUYsQ0FBQSxRQUFBc0IsRUFBQTtJQUg1REMsRUFBQSxJQUFDLEdBQUcsQ0FBVyxRQUFDLENBQUQsR0FBQyxDQUFZLFFBQUMsQ0FBRCxHQUFDLENBQzNCLENBQUMsSUFBSSxDQUFPLEtBQVUsQ0FBVixVQUFVLENBQU0sSUFBVSxDQUFWLFVBQVUsQ0FBQyxrQkFDbEJyQixxQkFBbUIsQ0FBRyxJQUFFLENBQzFDLENBQUFvQixFQUFzRCxDQUFFLEVBQUcsSUFBRSxDQUM3RGpCLGdCQUFjLENBQUUsa0NBQ25CLEVBSkMsSUFBSSxDQUtQLEVBTkMsR0FBRyxDQU1FO0lBQUFMLENBQUEsTUFBQUssZUFBQTtJQUFBTCxDQUFBLE1BQUFFLG9CQUFBO0lBQUFGLENBQUEsTUFBQXNCLEVBQUE7SUFBQXRCLENBQUEsTUFBQXVCLEVBQUE7RUFBQTtJQUFBQSxFQUFBLEdBQUF2QixDQUFBO0VBQUE7RUFBQSxPQU5OdUIsRUFNTTtBQUFBIiwiaWdub3JlTGlzdCI6W119