source dump of claude code
at main 150 lines 14 kB view raw
1import { c as _c } from "react/compiler-runtime"; 2import React from 'react'; 3import stripAnsi from 'strip-ansi'; 4import { Box, Text } from '../../ink.js'; 5import { formatFileSize } from '../../utils/format.js'; 6import { MessageResponse } from '../MessageResponse.js'; 7import { OffscreenFreeze } from '../OffscreenFreeze.js'; 8import { ShellTimeDisplay } from './ShellTimeDisplay.js'; 9type Props = { 10 output: string; 11 fullOutput: string; 12 elapsedTimeSeconds?: number; 13 totalLines?: number; 14 totalBytes?: number; 15 timeoutMs?: number; 16 taskId?: string; 17 verbose: boolean; 18}; 19export function ShellProgressMessage(t0) { 20 const $ = _c(30); 21 const { 22 output, 23 fullOutput, 24 elapsedTimeSeconds, 25 totalLines, 26 totalBytes, 27 timeoutMs, 28 verbose 29 } = t0; 30 let t1; 31 if ($[0] !== fullOutput) { 32 t1 = stripAnsi(fullOutput.trim()); 33 $[0] = fullOutput; 34 $[1] = t1; 35 } else { 36 t1 = $[1]; 37 } 38 const strippedFullOutput = t1; 39 let lines; 40 let t2; 41 if ($[2] !== output || $[3] !== strippedFullOutput || $[4] !== verbose) { 42 const strippedOutput = stripAnsi(output.trim()); 43 lines = strippedOutput.split("\n").filter(_temp); 44 t2 = verbose ? strippedFullOutput : lines.slice(-5).join("\n"); 45 $[2] = output; 46 $[3] = strippedFullOutput; 47 $[4] = verbose; 48 $[5] = lines; 49 $[6] = t2; 50 } else { 51 lines = $[5]; 52 t2 = $[6]; 53 } 54 const displayLines = t2; 55 if (!lines.length) { 56 let t3; 57 if ($[7] === Symbol.for("react.memo_cache_sentinel")) { 58 t3 = <Text dimColor={true}>Running </Text>; 59 $[7] = t3; 60 } else { 61 t3 = $[7]; 62 } 63 let t4; 64 if ($[8] !== elapsedTimeSeconds || $[9] !== timeoutMs) { 65 t4 = <MessageResponse><OffscreenFreeze>{t3}<ShellTimeDisplay elapsedTimeSeconds={elapsedTimeSeconds} timeoutMs={timeoutMs} /></OffscreenFreeze></MessageResponse>; 66 $[8] = elapsedTimeSeconds; 67 $[9] = timeoutMs; 68 $[10] = t4; 69 } else { 70 t4 = $[10]; 71 } 72 return t4; 73 } 74 const extraLines = totalLines ? Math.max(0, totalLines - 5) : 0; 75 let lineStatus = ""; 76 if (!verbose && totalBytes && totalLines) { 77 lineStatus = `~${totalLines} lines`; 78 } else { 79 if (!verbose && extraLines > 0) { 80 lineStatus = `+${extraLines} lines`; 81 } 82 } 83 const t3 = verbose ? undefined : Math.min(5, lines.length); 84 let t4; 85 if ($[11] !== displayLines) { 86 t4 = <Text dimColor={true}>{displayLines}</Text>; 87 $[11] = displayLines; 88 $[12] = t4; 89 } else { 90 t4 = $[12]; 91 } 92 let t5; 93 if ($[13] !== t3 || $[14] !== t4) { 94 t5 = <Box height={t3} flexDirection="column" overflow="hidden">{t4}</Box>; 95 $[13] = t3; 96 $[14] = t4; 97 $[15] = t5; 98 } else { 99 t5 = $[15]; 100 } 101 let t6; 102 if ($[16] !== lineStatus) { 103 t6 = lineStatus ? <Text dimColor={true}>{lineStatus}</Text> : null; 104 $[16] = lineStatus; 105 $[17] = t6; 106 } else { 107 t6 = $[17]; 108 } 109 let t7; 110 if ($[18] !== elapsedTimeSeconds || $[19] !== timeoutMs) { 111 t7 = <ShellTimeDisplay elapsedTimeSeconds={elapsedTimeSeconds} timeoutMs={timeoutMs} />; 112 $[18] = elapsedTimeSeconds; 113 $[19] = timeoutMs; 114 $[20] = t7; 115 } else { 116 t7 = $[20]; 117 } 118 let t8; 119 if ($[21] !== totalBytes) { 120 t8 = totalBytes ? <Text dimColor={true}>{formatFileSize(totalBytes)}</Text> : null; 121 $[21] = totalBytes; 122 $[22] = t8; 123 } else { 124 t8 = $[22]; 125 } 126 let t9; 127 if ($[23] !== t6 || $[24] !== t7 || $[25] !== t8) { 128 t9 = <Box flexDirection="row" gap={1}>{t6}{t7}{t8}</Box>; 129 $[23] = t6; 130 $[24] = t7; 131 $[25] = t8; 132 $[26] = t9; 133 } else { 134 t9 = $[26]; 135 } 136 let t10; 137 if ($[27] !== t5 || $[28] !== t9) { 138 t10 = <MessageResponse><OffscreenFreeze><Box flexDirection="column">{t5}{t9}</Box></OffscreenFreeze></MessageResponse>; 139 $[27] = t5; 140 $[28] = t9; 141 $[29] = t10; 142 } else { 143 t10 = $[29]; 144 } 145 return t10; 146} 147function _temp(line) { 148 return line; 149} 150//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInN0cmlwQW5zaSIsIkJveCIsIlRleHQiLCJmb3JtYXRGaWxlU2l6ZSIsIk1lc3NhZ2VSZXNwb25zZSIsIk9mZnNjcmVlbkZyZWV6ZSIsIlNoZWxsVGltZURpc3BsYXkiLCJQcm9wcyIsIm91dHB1dCIsImZ1bGxPdXRwdXQiLCJlbGFwc2VkVGltZVNlY29uZHMiLCJ0b3RhbExpbmVzIiwidG90YWxCeXRlcyIsInRpbWVvdXRNcyIsInRhc2tJZCIsInZlcmJvc2UiLCJTaGVsbFByb2dyZXNzTWVzc2FnZSIsInQwIiwiJCIsIl9jIiwidDEiLCJ0cmltIiwic3RyaXBwZWRGdWxsT3V0cHV0IiwibGluZXMiLCJ0MiIsInN0cmlwcGVkT3V0cHV0Iiwic3BsaXQiLCJmaWx0ZXIiLCJfdGVtcCIsInNsaWNlIiwiam9pbiIsImRpc3BsYXlMaW5lcyIsImxlbmd0aCIsInQzIiwiU3ltYm9sIiwiZm9yIiwidDQiLCJleHRyYUxpbmVzIiwiTWF0aCIsIm1heCIsImxpbmVTdGF0dXMiLCJ1bmRlZmluZWQiLCJtaW4iLCJ0NSIsInQ2IiwidDciLCJ0OCIsInQ5IiwidDEwIiwibGluZSJdLCJzb3VyY2VzIjpbIlNoZWxsUHJvZ3Jlc3NNZXNzYWdlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgc3RyaXBBbnNpIGZyb20gJ3N0cmlwLWFuc2knXG5pbXBvcnQgeyBCb3gsIFRleHQgfSBmcm9tICcuLi8uLi9pbmsuanMnXG5pbXBvcnQgeyBmb3JtYXRGaWxlU2l6ZSB9IGZyb20gJy4uLy4uL3V0aWxzL2Zvcm1hdC5qcydcbmltcG9ydCB7IE1lc3NhZ2VSZXNwb25zZSB9IGZyb20gJy4uL01lc3NhZ2VSZXNwb25zZS5qcydcbmltcG9ydCB7IE9mZnNjcmVlbkZyZWV6ZSB9IGZyb20gJy4uL09mZnNjcmVlbkZyZWV6ZS5qcydcbmltcG9ydCB7IFNoZWxsVGltZURpc3BsYXkgfSBmcm9tICcuL1NoZWxsVGltZURpc3BsYXkuanMnXG5cbnR5cGUgUHJvcHMgPSB7XG4gIG91dHB1dDogc3RyaW5nXG4gIGZ1bGxPdXRwdXQ6IHN0cmluZ1xuICBlbGFwc2VkVGltZVNlY29uZHM/OiBudW1iZXJcbiAgdG90YWxMaW5lcz86IG51bWJlclxuICB0b3RhbEJ5dGVzPzogbnVtYmVyXG4gIHRpbWVvdXRNcz86IG51bWJlclxuICB0YXNrSWQ/OiBzdHJpbmdcbiAgdmVyYm9zZTogYm9vbGVhblxufVxuXG5leHBvcnQgZnVuY3Rpb24gU2hlbGxQcm9ncmVzc01lc3NhZ2Uoe1xuICBvdXRwdXQsXG4gIGZ1bGxPdXRwdXQsXG4gIGVsYXBzZWRUaW1lU2Vjb25kcyxcbiAgdG90YWxMaW5lcyxcbiAgdG90YWxCeXRlcyxcbiAgdGltZW91dE1zLFxuICB2ZXJib3NlLFxufTogUHJvcHMpOiBSZWFjdC5SZWFjdE5vZGUge1xuICBjb25zdCBzdHJpcHBlZEZ1bGxPdXRwdXQgPSBzdHJpcEFuc2koZnVsbE91dHB1dC50cmltKCkpXG4gIGNvbnN0IHN0cmlwcGVkT3V0cHV0ID0gc3RyaXBBbnNpKG91dHB1dC50cmltKCkpXG4gIGNvbnN0IGxpbmVzID0gc3RyaXBwZWRPdXRwdXQuc3BsaXQoJ1xcbicpLmZpbHRlcihsaW5lID0+IGxpbmUpXG4gIGNvbnN0IGRpc3BsYXlMaW5lcyA9IHZlcmJvc2UgPyBzdHJpcHBlZEZ1bGxPdXRwdXQgOiBsaW5lcy5zbGljZSgtNSkuam9pbignXFxuJylcblxuICAvLyBPZmZzY3JlZW5GcmVlemU6IEJhc2hUb29sIHlpZWxkcyBwcm9ncmVzcyAoZWxhcHNlZFRpbWVTZWNvbmRzKSBldmVyeSBzZWNvbmQuXG4gIC8vIElmIHRoaXMgbGluZSBzY3JvbGxzIGludG8gc2Nyb2xsYmFjaywgZWFjaCB0aWNrIGZvcmNlcyBhIGZ1bGwgdGVybWluYWwgcmVzZXQuXG4gIC8vIEEgZm9yZWdyb3VuZCBgc2xlZXAgNjAwYCBvbiBhIDI5LXJvdyB0ZXJtaW5hbCB3aXRoIDQwMDAgcm93cyBvZiBoaXN0b3J5XG4gIC8vIHByb2R1Y2VkIDUwNyByZXNldHMgb3ZlciAxMCBtaW51dGVzIChnby9jY3NoYXJlL21heGstMjAyNjAyMjYtMTkwMzQ4KS5cbiAgaWYgKCFsaW5lcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPE1lc3NhZ2VSZXNwb25zZT5cbiAgICAgICAgPE9mZnNjcmVlbkZyZWV6ZT5cbiAgICAgICAgICA8VGV4dCBkaW1Db2xvcj5SdW5uaW5n4oCmIDwvVGV4dD5cbiAgICAgICAgICA8U2hlbGxUaW1lRGlzcGxheVxuICAgICAgICAgICAgZWxhcHNlZFRpbWVTZWNvbmRzPXtlbGFwc2VkVGltZVNlY29uZHN9XG4gICAgICAgICAgICB0aW1lb3V0TXM9e3RpbWVvdXRNc31cbiAgICAgICAgICAvPlxuICAgICAgICA8L09mZnNjcmVlbkZyZWV6ZT5cbiAgICAgIDwvTWVzc2FnZVJlc3BvbnNlPlxuICAgIClcbiAgfVxuXG4gIC8vIE5vdCB0cnVuY2F0ZWQ6IFwiKzIgbGluZXNcIiAodG90YWwgZXhjZWVkcyBkaXNwbGF5ZWQgNSlcbiAgLy8gVHJ1bmNhdGVkOiAgICAgXCJ+MjAwMCBsaW5lc1wiIChleHRyYXBvbGF0ZWQgZXN0aW1hdGUgZnJvbSB0YWlsIHNhbXBsZSlcbiAgY29uc3QgZXh0cmFMaW5lcyA9IHRvdGFsTGluZXMgPyBNYXRoLm1heCgwLCB0b3RhbExpbmVzIC0gNSkgOiAwXG4gIGxldCBsaW5lU3RhdHVzID0gJydcbiAgaWYgKCF2ZXJib3NlICYmIHRvdGFsQnl0ZXMgJiYgdG90YWxMaW5lcykge1xuICAgIGxpbmVTdGF0dXMgPSBgfiR7dG90YWxMaW5lc30gbGluZXNgXG4gIH0gZWxzZSBpZiAoIXZlcmJvc2UgJiYgZXh0cmFMaW5lcyA+IDApIHtcbiAgICBsaW5lU3RhdHVzID0gYCske2V4dHJhTGluZXN9IGxpbmVzYFxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8TWVzc2FnZVJlc3BvbnNlPlxuICAgICAgPE9mZnNjcmVlbkZyZWV6ZT5cbiAgICAgICAgPEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgICAgPEJveFxuICAgICAgICAgICAgaGVpZ2h0PXt2ZXJib3NlID8gdW5kZWZpbmVkIDogTWF0aC5taW4oNSwgbGluZXMubGVuZ3RoKX1cbiAgICAgICAgICAgIGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIlxuICAgICAgICAgICAgb3ZlcmZsb3c9XCJoaWRkZW5cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPntkaXNwbGF5TGluZXN9PC9UZXh0PlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cInJvd1wiIGdhcD17MX0+XG4gICAgICAgICAgICB7bGluZVN0YXR1cyA/IDxUZXh0IGRpbUNvbG9yPntsaW5lU3RhdHVzfTwvVGV4dD4gOiBudWxsfVxuICAgICAgICAgICAgPFNoZWxsVGltZURpc3BsYXlcbiAgICAgICAgICAgICAgZWxhcHNlZFRpbWVTZWNvbmRzPXtlbGFwc2VkVGltZVNlY29uZHN9XG4gICAgICAgICAgICAgIHRpbWVvdXRNcz17dGltZW91dE1zfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIHt0b3RhbEJ5dGVzID8gKFxuICAgICAgICAgICAgICA8VGV4dCBkaW1Db2xvcj57Zm9ybWF0RmlsZVNpemUodG90YWxCeXRlcyl9PC9UZXh0PlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgIDwvQm94PlxuICAgICAgPC9PZmZzY3JlZW5GcmVlemU+XG4gICAgPC9NZXNzYWdlUmVzcG9uc2U+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU9BLEtBQUssTUFBTSxPQUFPO0FBQ3pCLE9BQU9DLFNBQVMsTUFBTSxZQUFZO0FBQ2xDLFNBQVNDLEdBQUcsRUFBRUMsSUFBSSxRQUFRLGNBQWM7QUFDeEMsU0FBU0MsY0FBYyxRQUFRLHVCQUF1QjtBQUN0RCxTQUFTQyxlQUFlLFFBQVEsdUJBQXVCO0FBQ3ZELFNBQVNDLGVBQWUs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