/ components / sandbox / SandboxDependenciesTab.tsx
SandboxDependenciesTab.tsx
  1  import { c as _c } from "react/compiler-runtime";
  2  import React from 'react';
  3  import { Box, Text } from '../../ink.js';
  4  import { getPlatform } from '../../utils/platform.js';
  5  import type { SandboxDependencyCheck } from '../../utils/sandbox/sandbox-adapter.js';
  6  type Props = {
  7    depCheck: SandboxDependencyCheck;
  8  };
  9  export function SandboxDependenciesTab(t0) {
 10    const $ = _c(24);
 11    const {
 12      depCheck
 13    } = t0;
 14    let t1;
 15    if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
 16      t1 = getPlatform();
 17      $[0] = t1;
 18    } else {
 19      t1 = $[0];
 20    }
 21    const platform = t1;
 22    const isMac = platform === "macos";
 23    let t2;
 24    if ($[1] !== depCheck.errors) {
 25      t2 = depCheck.errors.some(_temp);
 26      $[1] = depCheck.errors;
 27      $[2] = t2;
 28    } else {
 29      t2 = $[2];
 30    }
 31    const rgMissing = t2;
 32    let t3;
 33    if ($[3] !== depCheck.errors) {
 34      t3 = depCheck.errors.some(_temp2);
 35      $[3] = depCheck.errors;
 36      $[4] = t3;
 37    } else {
 38      t3 = $[4];
 39    }
 40    const bwrapMissing = t3;
 41    let t4;
 42    if ($[5] !== depCheck.errors) {
 43      t4 = depCheck.errors.some(_temp3);
 44      $[5] = depCheck.errors;
 45      $[6] = t4;
 46    } else {
 47      t4 = $[6];
 48    }
 49    const socatMissing = t4;
 50    const seccompMissing = depCheck.warnings.length > 0;
 51    let t5;
 52    if ($[7] !== bwrapMissing || $[8] !== depCheck.errors || $[9] !== rgMissing || $[10] !== seccompMissing || $[11] !== socatMissing) {
 53      const otherErrors = depCheck.errors.filter(_temp4);
 54      const rgInstallHint = isMac ? "brew install ripgrep" : "apt install ripgrep";
 55      let t6;
 56      if ($[13] === Symbol.for("react.memo_cache_sentinel")) {
 57        t6 = isMac && <Box flexDirection="column"><Text>seatbelt: <Text color="success">built-in (macOS)</Text></Text></Box>;
 58        $[13] = t6;
 59      } else {
 60        t6 = $[13];
 61      }
 62      let t7;
 63      let t8;
 64      if ($[14] !== rgMissing) {
 65        t7 = <Text>ripgrep (rg):{" "}{rgMissing ? <Text color="error">not found</Text> : <Text color="success">found</Text>}</Text>;
 66        t8 = rgMissing && <Text dimColor={true}>{"  "}· {rgInstallHint}</Text>;
 67        $[14] = rgMissing;
 68        $[15] = t7;
 69        $[16] = t8;
 70      } else {
 71        t7 = $[15];
 72        t8 = $[16];
 73      }
 74      let t9;
 75      if ($[17] !== t7 || $[18] !== t8) {
 76        t9 = <Box flexDirection="column">{t7}{t8}</Box>;
 77        $[17] = t7;
 78        $[18] = t8;
 79        $[19] = t9;
 80      } else {
 81        t9 = $[19];
 82      }
 83      let t10;
 84      if ($[20] !== bwrapMissing || $[21] !== seccompMissing || $[22] !== socatMissing) {
 85        t10 = !isMac && <><Box flexDirection="column"><Text>bubblewrap (bwrap):{" "}{bwrapMissing ? <Text color="error">not installed</Text> : <Text color="success">installed</Text>}</Text>{bwrapMissing && <Text dimColor={true}>{"  "}· apt install bubblewrap</Text>}</Box><Box flexDirection="column"><Text>socat:{" "}{socatMissing ? <Text color="error">not installed</Text> : <Text color="success">installed</Text>}</Text>{socatMissing && <Text dimColor={true}>{"  "}· apt install socat</Text>}</Box><Box flexDirection="column"><Text>seccomp filter:{" "}{seccompMissing ? <Text color="warning">not installed</Text> : <Text color="success">installed</Text>}{seccompMissing && <Text dimColor={true}> (required to block unix domain sockets)</Text>}</Text>{seccompMissing && <Box flexDirection="column"><Text dimColor={true}>{"  "}· npm install -g @anthropic-ai/sandbox-runtime</Text><Text dimColor={true}>{"  "}· or copy vendor/seccomp/* from sandbox-runtime and set</Text><Text dimColor={true}>{"    "}sandbox.seccomp.bpfPath and applyPath in settings.json</Text></Box>}</Box></>;
 86        $[20] = bwrapMissing;
 87        $[21] = seccompMissing;
 88        $[22] = socatMissing;
 89        $[23] = t10;
 90      } else {
 91        t10 = $[23];
 92      }
 93      t5 = <Box flexDirection="column" paddingY={1} gap={1}>{t6}{t9}{t10}{otherErrors.map(_temp5)}</Box>;
 94      $[7] = bwrapMissing;
 95      $[8] = depCheck.errors;
 96      $[9] = rgMissing;
 97      $[10] = seccompMissing;
 98      $[11] = socatMissing;
 99      $[12] = t5;
100    } else {
101      t5 = $[12];
102    }
103    return t5;
104  }
105  function _temp5(err) {
106    return <Text key={err} color="error">{err}</Text>;
107  }
108  function _temp4(e_2) {
109    return !e_2.includes("ripgrep") && !e_2.includes("bwrap") && !e_2.includes("socat");
110  }
111  function _temp3(e_1) {
112    return e_1.includes("socat");
113  }
114  function _temp2(e_0) {
115    return e_0.includes("bwrap");
116  }
117  function _temp(e) {
118    return e.includes("ripgrep");
119  }
120  //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkJveCIsIlRleHQiLCJnZXRQbGF0Zm9ybSIsIlNhbmRib3hEZXBlbmRlbmN5Q2hlY2siLCJQcm9wcyIsImRlcENoZWNrIiwiU2FuZGJveERlcGVuZGVuY2llc1RhYiIsInQwIiwiJCIsIl9jIiwidDEiLCJTeW1ib2wiLCJmb3IiLCJwbGF0Zm9ybSIsImlzTWFjIiwidDIiLCJlcnJvcnMiLCJzb21lIiwiX3RlbXAiLCJyZ01pc3NpbmciLCJ0MyIsIl90ZW1wMiIsImJ3cmFwTWlzc2luZyIsInQ0IiwiX3RlbXAzIiwic29jYXRNaXNzaW5nIiwic2VjY29tcE1pc3NpbmciLCJ3YXJuaW5ncyIsImxlbmd0aCIsInQ1Iiwib3RoZXJFcnJvcnMiLCJmaWx0ZXIiLCJfdGVtcDQiLCJyZ0luc3RhbGxIaW50IiwidDYiLCJ0NyIsInQ4IiwidDkiLCJ0MTAiLCJtYXAiLCJfdGVtcDUiLCJlcnIiLCJlXzIiLCJlIiwiaW5jbHVkZXMiLCJlXzEiLCJlXzAiXSwic291cmNlcyI6WyJTYW5kYm94RGVwZW5kZW5jaWVzVGFiLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBCb3gsIFRleHQgfSBmcm9tICcuLi8uLi9pbmsuanMnXG5pbXBvcnQgeyBnZXRQbGF0Zm9ybSB9IGZyb20gJy4uLy4uL3V0aWxzL3BsYXRmb3JtLmpzJ1xuaW1wb3J0IHR5cGUgeyBTYW5kYm94RGVwZW5kZW5jeUNoZWNrIH0gZnJvbSAnLi4vLi4vdXRpbHMvc2FuZGJveC9zYW5kYm94LWFkYXB0ZXIuanMnXG5cbnR5cGUgUHJvcHMgPSB7XG4gIGRlcENoZWNrOiBTYW5kYm94RGVwZW5kZW5jeUNoZWNrXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBTYW5kYm94RGVwZW5kZW5jaWVzVGFiKHsgZGVwQ2hlY2sgfTogUHJvcHMpOiBSZWFjdC5SZWFjdE5vZGUge1xuICBjb25zdCBwbGF0Zm9ybSA9IGdldFBsYXRmb3JtKClcbiAgY29uc3QgaXNNYWMgPSBwbGF0Zm9ybSA9PT0gJ21hY29zJ1xuXG4gIC8vIHJpcGdyZXAgaXMgcmVxdWlyZWQgb24gYWxsIHBsYXRmb3JtcyAodXNlZCB0byBzY2FuIGZvciBkYW5nZXJvdXMgZGlycykuXG4gIC8vIE9uIG1hY09TLCBzZWF0YmVsdCBpcyBidWlsdCBpbnRvIHRoZSBPUyDigJQgcmlwZ3JlcCBpcyB0aGUgb25seSBydW50aW1lIGRlcC5cbiAgLy8gT24gTGludXgvV1NMLCBid3JhcCArIHNvY2F0IGFyZSByZXF1aXJlZCwgc2VjY29tcCBpcyBvcHRpb25hbC5cbiAgLy9cbiAgLy8gIzMxODA0OiBwcmV2aW91c2x5IHRoaXMgdGFiIHVuY29uZGl0aW9uYWxseSByZW5kZXJlZCBMaW51eCBkZXBzIChid3JhcCxcbiAgLy8gc29jYXQsIHNlY2NvbXApLiBXaGVuIHJpcGdyZXAgd2FzIG1pc3Npbmcgb24gbWFjT1MsIHVzZXJzIHNhdyBjb25mdXNpbmdcbiAgLy8gTGludXggaW5zdGFsbCBpbnN0cnVjdGlvbnMgYW5kIG5vIG1lbnRpb24gb2YgdGhlIGFjdHVhbCBwcm9ibGVtLlxuICBjb25zdCByZ01pc3NpbmcgPSBkZXBDaGVjay5lcnJvcnMuc29tZShlID0+IGUuaW5jbHVkZXMoJ3JpcGdyZXAnKSlcbiAgY29uc3QgYndyYXBNaXNzaW5nID0gZGVwQ2hlY2suZXJyb3JzLnNvbWUoZSA9PiBlLmluY2x1ZGVzKCdid3JhcCcpKVxuICBjb25zdCBzb2NhdE1pc3NpbmcgPSBkZXBDaGVjay5lcnJvcnMuc29tZShlID0+IGUuaW5jbHVkZXMoJ3NvY2F0JykpXG4gIGNvbnN0IHNlY2NvbXBNaXNzaW5nID0gZGVwQ2hlY2sud2FybmluZ3MubGVuZ3RoID4gMFxuXG4gIC8vIEFueSBlcnJvcnMgd2UgZG9uJ3QgaGF2ZSBhIGRlZGljYXRlZCByb3cgZm9yIOKAlCByZW5kZXIgdmVyYmF0aW0gc28gdGhleVxuICAvLyBhcmVuJ3Qgc2lsZW50bHkgc3dhbGxvd2VkIChlLmcuIFwiVW5zdXBwb3J0ZWQgcGxhdGZvcm1cIiBvciBmdXR1cmUgZGVwcykuXG4gIGNvbnN0IG90aGVyRXJyb3JzID0gZGVwQ2hlY2suZXJyb3JzLmZpbHRlcihcbiAgICBlID0+ICFlLmluY2x1ZGVzKCdyaXBncmVwJykgJiYgIWUuaW5jbHVkZXMoJ2J3cmFwJykgJiYgIWUuaW5jbHVkZXMoJ3NvY2F0JyksXG4gIClcblxuICBjb25zdCByZ0luc3RhbGxIaW50ID0gaXNNYWMgPyAnYnJldyBpbnN0YWxsIHJpcGdyZXAnIDogJ2FwdCBpbnN0YWxsIHJpcGdyZXAnXG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIiBwYWRkaW5nWT17MX0gZ2FwPXsxfT5cbiAgICAgIHtpc01hYyAmJiAoXG4gICAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgIDxUZXh0PlxuICAgICAgICAgICAgc2VhdGJlbHQ6IDxUZXh0IGNvbG9yPVwic3VjY2Vzc1wiPmJ1aWx0LWluIChtYWNPUyk8L1RleHQ+XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG5cbiAgICAgIDxCb3ggZmxleERpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICA8VGV4dD5cbiAgICAgICAgICByaXBncmVwIChyZyk6eycgJ31cbiAgICAgICAgICB7cmdNaXNzaW5nID8gKFxuICAgICAgICAgICAgPFRleHQgY29sb3I9XCJlcnJvclwiPm5vdCBmb3VuZDwvVGV4dD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPFRleHQgY29sb3I9XCJzdWNjZXNzXCI+Zm91bmQ8L1RleHQ+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9UZXh0PlxuICAgICAgICB7cmdNaXNzaW5nICYmIChcbiAgICAgICAgICA8VGV4dCBkaW1Db2xvcj5cbiAgICAgICAgICAgIHsnICAnfcK3IHtyZ0luc3RhbGxIaW50fVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuXG4gICAgICB7IWlzTWFjICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICAgIDxUZXh0PlxuICAgICAgICAgICAgICBidWJibGV3cmFwIChid3JhcCk6eycgJ31cbiAgICAgICAgICAgICAge2J3cmFwTWlzc2luZyA/IChcbiAgICAgICAgICAgICAgICA8VGV4dCBjb2xvcj1cImVycm9yXCI+bm90IGluc3RhbGxlZDwvVGV4dD5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8VGV4dCBjb2xvcj1cInN1Y2Nlc3NcIj5pbnN0YWxsZWQ8L1RleHQ+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICB7YndyYXBNaXNzaW5nICYmIChcbiAgICAgICAgICAgICAgPFRleHQgZGltQ29sb3I+eycgICd9wrcgYXB0IGluc3RhbGwgYnViYmxld3JhcDwvVGV4dD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9Cb3g+XG5cbiAgICAgICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICAgIDxUZXh0PlxuICAgICAgICAgICAgICBzb2NhdDp7JyAnfVxuICAgICAgICAgICAgICB7c29jYXRNaXNzaW5nID8gKFxuICAgICAgICAgICAgICAgIDxUZXh0IGNvbG9yPVwiZXJyb3JcIj5ub3QgaW5zdGFsbGVkPC9UZXh0PlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxUZXh0IGNvbG9yPVwic3VjY2Vzc1wiPmluc3RhbGxlZDwvVGV4dD5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgIHtzb2NhdE1pc3NpbmcgJiYgPFRleHQgZGltQ29sb3I+eycgICd9wrcgYXB0IGluc3RhbGwgc29jYXQ8L1RleHQ+fVxuICAgICAgICAgIDwvQm94PlxuXG4gICAgICAgICAgPEJveCBmbGV4RGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgICAgc2VjY29tcCBmaWx0ZXI6eycgJ31cbiAgICAgICAgICAgICAge3NlY2NvbXBNaXNzaW5nID8gKFxuICAgICAgICAgICAgICAgIDxUZXh0IGNvbG9yPVwid2FybmluZ1wiPm5vdCBpbnN0YWxsZWQ8L1RleHQ+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPFRleHQgY29sb3I9XCJzdWNjZXNzXCI+aW5zdGFsbGVkPC9UZXh0PlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7c2VjY29tcE1pc3NpbmcgJiYgKFxuICAgICAgICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPiAocmVxdWlyZWQgdG8gYmxvY2sgdW5peCBkb21haW4gc29ja2V0cyk8L1RleHQ+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICB7c2VjY29tcE1pc3NpbmcgJiYgKFxuICAgICAgICAgICAgICA8Qm94IGZsZXhEaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8VGV4dCBkaW1Db2xvcj5cbiAgICAgICAgICAgICAgICAgIHsnICAnfcK3IG5wbSBpbnN0YWxsIC1nIEBhbnRocm9waWMtYWkvc2FuZGJveC1ydW50aW1lXG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgIDxUZXh0IGRpbUNvbG9yPlxuICAgICAgICAgICAgICAgICAgeycgICd9wrcgb3IgY29weSB2ZW5kb3Ivc2VjY29tcC8qIGZyb20gc2FuZGJveC1ydW50aW1lIGFuZCBzZXRcbiAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgPFRleHQgZGltQ29sb3I+XG4gICAgICAgICAgICAgICAgICB7JyAgICAnfXNhbmRib3guc2VjY29tcC5icGZQYXRoIGFuZCBhcHBseVBhdGggaW4gc2V0dGluZ3MuanNvblxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvQm94PlxuICAgICAgICA8Lz5cbiAgICAgICl9XG5cbiAgICAgIHtvdGhlckVycm9ycy5tYXAoZXJyID0+IChcbiAgICAgICAgPFRleHQga2V5PXtlcnJ9IGNvbG9yPVwiZXJyb3JcIj5cbiAgICAgICAgICB7ZXJyfVxuICAgICAgICA8L1RleHQ+XG4gICAgICApKX1cbiAgICA8L0JveD5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsT0FBT0EsS0FBSyxNQUFNLE9BQU87QUFDekIsU0FBU0MsR0FBRyxFQUFFQyxJQUFJLFFBQVEsY0FBYztBQUN4QyxTQUFTQyxXQUFXLFFBQVEseUJBQXlCO0FBQ3JELGNBQWNDLHNCQUFzQixRQUFRLHdDQUF3QztBQUVwRixLQUFLQyxLQUFLLEdBQUc7RUFDWEMsUUFBUSxFQUFFRixzQkFBc0I7QUFDbEMsQ0FBQztBQUVELE9BQU8sU0FBQUcsdUJBQUFDLEVBQUE7RUFBQSxNQUFBQyxDQUFBLEdBQUFDLEVBQUE7RUFBZ0M7SUFBQUo7RUFBQSxJQUFBRSxFQUFtQjtFQUFBLElBQUFHLEVBQUE7RUFBQSxJQUFBRixDQUFBLFFBQUFHLE1BQUEsQ0FBQUMsR0FBQTtJQUN2Q0YsRUFBQSxHQUFBUixXQUFXLENBQUMsQ0FBQztJQUFBTSxDQUFBLE1BQUFFLEVBQUE7RUFBQTtJQUFBQSxFQUFBLEdBQUFGLENBQUE7RUFBQTtFQUE5QixNQUFBSyxRQUFBLEdBQWlCSCxFQUFhO0VBQzlCLE1BQUFJLEtBQUEsR0FBY0QsUUFBUSxLQUFLLE9BQU87RUFBQSxJQUFBRSxFQUFBO0VBQUEsSUFBQVAsQ0FBQSxRQUFBSCxRQUFBLENBQUFXLE1BQUE7SUFTaEJELEVBQUEsR0FBQVYsUUFBUSxDQUFBVyxNQUFPLENBQUFDLElBQUssQ0FBQ0MsS0FBMEIsQ0FBQztJQUFBVixDQUFBLE1BQUFILFFBQUEsQ0FBQVcsTUFBQTtJQUFBUixDQUFBLE1BQUFPLEVB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