πŸ“„ File detail

components/permissions/SedEditPermissionRequest/SedEditPermissionRequest.tsx

🧩 .tsxπŸ“ 230 linesπŸ’Ύ 20,862 bytesπŸ“ text
← Back to All Files

🎯 Use case

This file lives under β€œcomponents/”, which covers shared React UI pieces. On the API surface it exposes SedEditPermissionRequest β€” mainly types, interfaces, or factory objects. Dependencies touch React UI, Node path helpers, and src. It composes internal code from ink, tools, FilePermissionDialog, and PermissionRequest (relative imports).

Generated from folder role, exports, dependency roots, and inline comments β€” not hand-reviewed for every path.

🧠 Inline summary

import { c as _c } from "react/compiler-runtime"; import { basename, relative } from 'path'; import React, { Suspense, use, useMemo } from 'react'; import { FileEditToolDiff } from 'src/components/FileEditToolDiff.js'; import { getCwd } from 'src/utils/cwd.js';

πŸ“€ Exports (heuristic)

  • SedEditPermissionRequest

πŸ“š External import roots

Package roots from from "…" (relative paths omitted).

  • react
  • path
  • src

πŸ–₯️ Source preview

import { c as _c } from "react/compiler-runtime";
import { basename, relative } from 'path';
import React, { Suspense, use, useMemo } from 'react';
import { FileEditToolDiff } from 'src/components/FileEditToolDiff.js';
import { getCwd } from 'src/utils/cwd.js';
import { isENOENT } from 'src/utils/errors.js';
import { detectEncodingForResolvedPath } from 'src/utils/fileRead.js';
import { getFsImplementation } from 'src/utils/fsOperations.js';
import { Text } from '../../../ink.js';
import { BashTool } from '../../../tools/BashTool/BashTool.js';
import { applySedSubstitution, type SedEditInfo } from '../../../tools/BashTool/sedEditParser.js';
import { FilePermissionDialog } from '../FilePermissionDialog/FilePermissionDialog.js';
import type { PermissionRequestProps } from '../PermissionRequest.js';
type SedEditPermissionRequestProps = PermissionRequestProps & {
  sedInfo: SedEditInfo;
};
type FileReadResult = {
  oldContent: string;
  fileExists: boolean;
};
export function SedEditPermissionRequest(t0) {
  const $ = _c(9);
  let props;
  let sedInfo;
  if ($[0] !== t0) {
    ({
      sedInfo,
      ...props
    } = t0);
    $[0] = t0;
    $[1] = props;
    $[2] = sedInfo;
  } else {
    props = $[1];
    sedInfo = $[2];
  }
  const {
    filePath
  } = sedInfo;
  let t1;
  if ($[3] !== filePath) {
    t1 = (async () => {
      const encoding = detectEncodingForResolvedPath(filePath);
      const raw = await getFsImplementation().readFile(filePath, {
        encoding
      });
      return {
        oldContent: raw.replaceAll("\r\n", "\n"),
        fileExists: true
      };
    })().catch(_temp);
    $[3] = filePath;
    $[4] = t1;
  } else {
    t1 = $[4];
  }
  const contentPromise = t1;
  let t2;
  if ($[5] !== contentPromise || $[6] !== props || $[7] !== sedInfo) {
    t2 = <Suspense fallback={null}><SedEditPermissionRequestInner sedInfo={sedInfo} contentPromise={contentPromise} {...props} /></Suspense>;
    $[5] = contentPromise;
    $[6] = props;
    $[7] = sedInfo;
    $[8] = t2;
  } else {
    t2 = $[8];
  }
  return t2;
}
function _temp(e) {
  if (!isENOENT(e)) {
    throw e;
  }
  return {
    oldContent: "",
    fileExists: false
  };
}
function SedEditPermissionRequestInner(t0) {
  const $ = _c(35);
  let contentPromise;
  let props;
  let sedInfo;
  if ($[0] !== t0) {
    ({
      sedInfo,
      contentPromise,
      ...props
    } = t0);
    $[0] = t0;
    $[1] = contentPromise;
    $[2] = props;
    $[3] = sedInfo;
  } else {
    contentPromise = $[1];
    props = $[2];
    sedInfo = $[3];
  }
  const {
    filePath
  } = sedInfo;
  const {
    oldContent,
    fileExists
  } = use(contentPromise);
  let t1;
  if ($[4] !== oldContent || $[5] !== sedInfo) {
    t1 = applySedSubstitution(oldContent, sedInfo);
    $[4] = oldContent;
    $[5] = sedInfo;
    $[6] = t1;
  } else {
    t1 = $[6];
  }
  const newContent = t1;
  let t2;
  bb0: {
    if (oldContent === newContent) {
      let t3;
      if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
        t3 = [];
        $[7] = t3;
      } else {
        t3 = $[7];
      }
      t2 = t3;
      break bb0;
    }
    let t3;
    if ($[8] !== newContent || $[9] !== oldContent) {
      t3 = [{
        old_string: oldContent,
        new_string: newContent,
        replace_all: false
      }];
      $[8] = newContent;
      $[9] = oldContent;
      $[10] = t3;
    } else {
      t3 = $[10];
    }
    t2 = t3;
  }
  const edits = t2;
  let t3;
  bb1: {
    if (!fileExists) {
      t3 = "File does not exist";
      break bb1;
    }
    t3 = "Pattern did not match any content";
  }
  const noChangesMessage = t3;
  let t4;
  if ($[11] !== filePath || $[12] !== newContent) {
    t4 = input => {
      const parsed = BashTool.inputSchema.parse(input);
      return {
        ...parsed,
        _simulatedSedEdit: {
          filePath,
          newContent
        }
      };
    };
    $[11] = filePath;
    $[12] = newContent;
    $[13] = t4;
  } else {
    t4 = $[13];
  }
  const parseInput = t4;
  const t5 = props.toolUseConfirm;
  const t6 = props.toolUseContext;
  const t7 = props.onDone;
  const t8 = props.onReject;
  let t9;
  if ($[14] !== filePath) {
    t9 = relative(getCwd(), filePath);
    $[14] = filePath;
    $[15] = t9;
  } else {
    t9 = $[15];
  }
  let t10;
  if ($[16] !== filePath) {
    t10 = basename(filePath);
    $[16] = filePath;
    $[17] = t10;
  } else {
    t10 = $[17];
  }
  let t11;
  if ($[18] !== t10) {
    t11 = <Text>Do you want to make this edit to{" "}<Text bold={true}>{t10}</Text>?</Text>;
    $[18] = t10;
    $[19] = t11;
  } else {
    t11 = $[19];
  }
  let t12;
  if ($[20] !== edits || $[21] !== filePath || $[22] !== noChangesMessage) {
    t12 = edits.length > 0 ? <FileEditToolDiff file_path={filePath} edits={edits} /> : <Text dimColor={true}>{noChangesMessage}</Text>;
    $[20] = edits;
    $[21] = filePath;
    $[22] = noChangesMessage;
    $[23] = t12;
  } else {
    t12 = $[23];
  }
  let t13;
  if ($[24] !== filePath || $[25] !== parseInput || $[26] !== props.onDone || $[27] !== props.onReject || $[28] !== props.toolUseConfirm || $[29] !== props.toolUseContext || $[30] !== props.workerBadge || $[31] !== t11 || $[32] !== t12 || $[33] !== t9) {
    t13 = <FilePermissionDialog toolUseConfirm={t5} toolUseContext={t6} onDone={t7} onReject={t8} title="Edit file" subtitle={t9} question={t11} content={t12} path={filePath} completionType="str_replace_single" parseInput={parseInput} workerBadge={props.workerBadge} />;
    $[24] = filePath;
    $[25] = parseInput;
    $[26] = props.onDone;
    $[27] = props.onReject;
    $[28] = props.toolUseConfirm;
    $[29] = props.toolUseContext;
    $[30] = props.workerBadge;
    $[31] = t11;
    $[32] = t12;
    $[33] = t9;
    $[34] = t13;
  } else {
    t13 = $[34];
  }
  return t13;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJiYXNlbmFtZSIsInJlbGF0aXZlIiwiUmVhY3QiLCJTdXNwZW5zZSIsInVzZSIsInVzZU1lbW8iLCJGaWxlRWRpdFRvb2xEaWZmIiwiZ2V0Q3dkIiwiaXNFTk9FTlQiLCJkZXRlY3RFbmNvZGluZ0ZvclJlc29sdmVkUGF0aCIsImdldEZzSW1wbGVtZW50YXRpb24iLCJUZXh0IiwiQmFzaFRvb2wiLCJhcHBseVNlZFN1YnN0aXR1dGlvbiIsIlNlZEVkaXRJbmZvIiwiRmlsZVBlcm1pc3Npb25EaWFsb2ciLCJQZXJtaXNzaW9uUmVxdWVzdFByb3BzIiwiU2VkRWRpdFBlcm1pc3Npb25SZXF1ZXN0UHJvcHMiLCJzZWRJbmZvIiwiRmlsZVJlYWRSZXN1bHQiLCJvbGRDb250ZW50IiwiZmlsZUV4aXN0cyIsIlNlZEVkaXRQZXJtaXNzaW9uUmVxdWVzdCIsInQwIiwiJCIsIl9jIiwicHJvcHMiLCJmaWxlUGF0aCIsInQxIiwiZW5jb2RpbmciLCJyYXciLCJyZWFkRmlsZSIsInJlcGxhY2VBbGwiLCJjYXRjaCIsIl90ZW1wIiwiY29udGVudFByb21pc2UiLCJ0MiIsImUiLCJTZWRFZGl0UGVybWlzc2lvblJlcXVlc3RJbm5lciIsIm5ld0NvbnRlbnQiLCJiYjAiLCJ0MyIsIlN5bWJvbCIsImZvciIsIm9sZF9zdHJpbmciLCJuZXdfc3RyaW5nIiwicmVwbGFjZV9hbGwiLCJlZGl0cyIsImJiMSIsIm5vQ2hhbmdlc01lc3NhZ2UiLCJ0NCIsImlucHV0IiwicGFyc2VkIiwiaW5wdXRTY2hlbWEiLCJwYXJzZSIsIl9zaW11bGF0ZWRTZWRFZGl0IiwicGFyc2VJbnB1dCIsInQ1IiwidG9vbFVzZUNvbmZpcm0iLCJ0NiIsInRvb2xVc2VDb250ZXh0IiwidDciLCJvbkRvbmUiLCJ0OCIsIm9uUmVqZWN0IiwidDkiLCJ0MTAiLCJ0MTEiLCJ0MTIiLCJsZW5ndGgiLCJ0MTMiLCJ3b3JrZXJCYWRnZSJdLCJzb3VyY2VzIjpbIlNlZEVkaXRQZXJtaXNzaW9uUmVxdWVzdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYmFzZW5hbWUsIHJlbGF0aXZlIH0gZnJvbSAncGF0aCdcbmltcG9ydCBSZWFjdCwgeyBTdXNwZW5zZSwgdXNlLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBGaWxlRWRpdFRvb2xEaWZmIH0gZnJvbSAnc3JjL2NvbXBvbmVudHMvRmlsZUVkaXRUb29sRGlmZi5qcydcbmltcG9ydCB7IGdldEN3ZCB9IGZyb20gJ3NyYy91dGlscy9jd2QuanMnXG5pbXBvcnQgeyBpc0VOT0VOVCB9IGZyb20gJ3NyYy91dGlscy9lcnJvcnMuanMnXG5pbXBvcnQgeyBkZXRlY3RFbmNvZGluZ0ZvclJlc29sdmVkUGF0aCB9IGZyb20gJ3NyYy91dGlscy9maWxlUmVhZC5qcydcbmltcG9ydCB7IGdldEZzSW1wbGVtZW50YXRpb24gfSBmcm9tICdzcmMvdXRpbHMvZnNPcGVyYXRpb25zLmpzJ1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4uLy4uLy4uL2luay5qcydcbmltcG9ydCB7IEJhc2hUb29sIH0gZnJvbSAnLi4vLi4vLi4vdG9vbHMvQmFzaFRvb2wvQmFzaFRvb2wuanMnXG5pbXBvcnQge1xuICBhcHBseVNlZFN1YnN0aXR1dGlvbixcbiAgdHlwZSBTZWRFZGl0SW5mbyxcbn0gZnJvbSAnLi4vLi4vLi4vdG9vbHMvQmFzaFRvb2wvc2VkRWRpdFBhcnNlci5qcydcbmltcG9ydCB7IEZpbGVQZXJtaXNzaW9uRGlhbG9nIH0gZnJvbSAnLi4vRmlsZVBlcm1pc3Npb25EaWFsb2cvRmlsZVBlcm1pc3Npb25EaWFsb2cuanMnXG5pbXBvcnQgdHlwZSB7IFBlcm1pc3Npb25SZXF1ZXN0UHJvcHMgfSBmcm9tICcuLi9QZXJtaXNzaW9uUmVxdWVzdC5qcydcblxudHlwZSBTZWRFZGl0UGVybWlzc2lvblJlcXVlc3RQcm9wcyA9IFBlcm1pc3Npb25SZXF1ZXN0UHJvcHMgJiB7XG4gIHNlZEluZm86IFNlZEVkaXRJbmZvXG59XG5cbnR5cGUgRmlsZVJlYWRSZXN1bHQgPSB7IG9sZENvbnRlbnQ6IHN0cmluZzsgZmlsZUV4aXN0czogYm9vbGVhbiB9XG5cbmV4cG9ydCBmdW5jdGlvbiBTZWRFZGl0UGVybWlzc2lvblJlcXVlc3Qoe1xuICBzZWRJbmZvLFxuICAuLi5wcm9wc1xufTogU2VkRWRpdFBlcm1pc3Npb25SZXF1ZXN0UHJvcHMpOiBSZWFjdC5SZWFjdE5vZGUge1xuICBjb25zdCB7IGZpbGVQYXRoIH0gPSBzZWRJbmZvXG5cbiAgLy8gUmVhZCBmaWxlIGNvbnRlbnQgYXN5bmMgc28gbW91bnQgZG9lc24ndCBibG9jayBSZWFjdCBjb21taXQgb24gZGlzayBJL08uXG4gIC8vIExhcmdlIGZpbGVzIHdvdWxkIG90aGVyd2lzZSBoYW5nIHRoZSBkaWFsb2cgYmVmb3JlIGl0IHJlbmRlcnMuXG4gIC8vIE1lbW9pemVkIG9uIGZpbGVQYXRoIHNvIHdlIGRvbid0IHJlLXJlYWQgb24gZXZlcnkgcmVuZGVyLlxuICBjb25zdCBjb250ZW50UHJvbWlzZSA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIChhc3luYyAoKTogUHJvbWlzZTxGaWxlUmVhZFJlc3VsdD4gPT4ge1xuICAgICAgICAvLyBEZXRlY3QgZW5jb2RpbmcgZmlyc3QgKHN5bmMgNEtCIHJlYWQg4oCUIG5lZ2xpZ2libGUpIHNvIFVURi0xNkxFIEJPTXNcbiAgICAgICAgLy8gcmVuZGVyIGNvcnJlY3RseS4gVGhpcyBtYXRjaGVzIHdoYXQgcmVhZEZpbGVTeW5jIGRpZCBiZWZvcmUgdGhlXG4gICAgICAgIC8vIGFzeW5jIGNvbnZlcnNpb24uXG4gICAgICAgIGNvbnN0IGVuY29kaW5nID0gZGV0ZWN0RW5jb2RpbmdGb3JSZXNvbHZlZFBhdGgoZmlsZVBhdGgpXG4gICAgICAgIGNvbnN0IHJhdyA9IGF3YWl0IGdldEZzSW1wbGVtZW50YXRpb24oKS5yZWFkRmlsZShmaWxlUGF0aCwgeyBlbmNvZGluZyB9KVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG9sZENvbnRlbnQ6IHJhdy5yZXBsYWNlQWxsKCdcXHJcXG4nLCAnXFxuJyksXG4gICAgICAgICAgZmlsZUV4aXN0czogdHJ1ZSxcbiAgICAgICAgfVxuICAgICAgfSkoKS5jYXRjaCgoZTogdW5rbm93bik6IEZpbGVSZWFkUmVzdWx0ID0+IHtcbiAgICAgICAgaWYgKCFpc0VOT0VOVChlKSkgdGhyb3cgZVxuICAgICAgICByZXR1cm4geyBvbGRDb250ZW50OiAnJywgZmlsZUV4aXN0czogZmFsc2UgfVxuICAgICAgfSksXG4gICAgW2ZpbGVQYXRoXSxcbiAgKVxuXG4gIHJldHVybiAoXG4gICAgPFN1c3BlbnNlIGZhbGxiYWNrPXtudWxsfT5cbiAgICAgIDxTZWRFZGl0UGVybWlzc2lvblJlcXVlc3RJbm5lclxuICAgICAgICBzZWRJbmZvPXtzZWRJbmZvfVxuICAgICAgICBjb250ZW50UHJvbWlzZT17Y29udGVudFByb21pc2V9XG4gICAgICAgIHsuLi5wcm9wc31cbiAgICAgIC8+XG4gICAgPC9TdXNwZW5zZT5cbiAgKVxufVxuXG5mdW5jdGlvbiBTZWRFZGl0UGVybWlzc2lvblJlcXVlc3RJbm5lcih7XG4gIHNlZEluZm8sXG4gIGNvbnRlbnRQcm9taXNlLFxuICAuLi5wcm9wc1xufTogU2VkRWRpdFBlcm1pc3Npb25SZXF1ZXN0UHJvcHMgJiB7XG4gIGNvbnRlbnRQcm9taXNlOiBQcm9taXNlPEZpbGVSZWFkUmVzdWx0PlxufSk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gIGNvbnN0IHsgZmlsZVBhdGggfSA9IHNlZEluZm9cbiAgY29uc3QgeyBvbGRDb250ZW50LCBmaWxlRXhpc3RzIH0gPSB1c2UoY29udGVudFByb21pc2UpXG5cbiAgLy8gQ29tcHV0ZSB0aGUgbmV3IGNvbnRlbnQgYnkgYXBwbHlpbmcgdGhlIHNlZCBzdWJzdGl0dXRpb25cbiAgY29uc3QgbmV3Q29udGVudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiBhcHBseVNlZFN1YnN0aXR1dGlvbihvbGRDb250ZW50LCBzZWRJbmZvKVxuICB9LCBbb2xkQ29udGVudCwgc2VkSW5mb10pXG5cbiAgLy8gQ3JlYXRlIHRoZSBlZGl0IHJlcHJlc2VudGF0aW9uIGZvciB0aGUgZGlmZlxuICBjb25zdCBlZGl0cyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChvbGRDb250ZW50ID09PSBuZXdDb250ZW50KSB7XG4gICAgICByZXR1cm4gW11cbiAgICB9XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgb2xkX3N0cmluZzogb2xkQ29udGVudCxcbiAgICAgICAgbmV3X3N0cmluZzogbmV3Q29udGVudCxcbiAgICAgICAgcmVwbGFjZV9hbGw6IGZhbHNlLFxuICAgICAgfSxcbiAgICBdXG4gIH0sIFtvbGRDb250ZW50LCBuZXdDb250ZW50XSlcblxuICAvLyBEZXRlcm1pbmUgYXBwcm9wcmlhdGUgbWVzc2FnZSB3aGVuIG5vIGNoYW5nZXNcbiAgY29uc3Qgbm9DaGFuZ2VzTWVzc2FnZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmICghZmlsZUV4aXN0cykge1xuICAgICAgcmV0dXJuICdGaWxlIGRvZXMgbm90IGV4aXN0J1xuICAgIH1cbiAgICByZXR1cm4gJ1BhdHRlcm4gZGlkIG5vdCBtYXRjaCBhbnkgY29udGVudCdcbiAgfSwgW2ZpbGVFeGlzdHNdKVxuXG4gIC8vIFBhcnNlIGlucHV0IGFuZCBhZGQgX3NpbXVsYXRlZFNlZEVkaXQgdG8gZW5zdXJlIHdoYXQgdXNlciBwcmV2aWV3ZWRcbiAgLy8gaXMgZXhhY3RseSB3aGF0IGdldHMgd3JpdHRlbiAocHJldmVudHMgc2VkL0pTIHJlZ2V4IGRpZmZlcmVuY2VzKVxuICBjb25zdCBwYXJzZUlucHV0ID0gKGlucHV0OiB1bmtub3duKSA9PiB7XG4gICAgY29uc3QgcGFyc2VkID0gQmFzaFRvb2wuaW5wdXRTY2hlbWEucGFyc2UoaW5wdXQpXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnBhcnNlZCxcbiAgICAgIF9zaW11bGF0ZWRTZWRFZGl0OiB7XG4gICAgICAgIGZpbGVQYXRoLFxuICAgICAgICBuZXdDb250ZW50LFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxGaWxlUGVybWlzc2lvbkRpYWxvZ1xuICAgICAgdG9vbFVzZUNvbmZpcm09e3Byb3BzLnRvb2xVc2VDb25maXJtfVxuICAgICAgdG9vbFVzZUNvbnRleHQ9e3Byb3BzLnRvb2xVc2VDb250ZXh0fVxuICAgICAgb25Eb25lPXtwcm9wcy5vbkRvbmV9XG4gICAgICBvblJlamVjdD17cHJvcHMub25SZWplY3R9XG4gICAgICB0aXRsZT1cIkVkaXQgZmlsZVwiXG4gICAgICBzdWJ0aXRsZT17cmVsYXRpdmUoZ2V0Q3dkKCksIGZpbGVQYXRoKX1cbiAgICAgIHF1ZXN0aW9uPXtcbiAgICAgICAgPFRleHQ+XG4gICAgICAgICAgRG8geW91IHdhbnQgdG8gbWFrZSB0aGlzIGVkaXQgdG97JyAnfVxuICAgICAgICAgIDxUZXh0IGJvbGQ+e2Jhc2VuYW1lKGZpbGVQYXRoKX08L1RleHQ+P1xuICAgICAgICA8L1RleHQ+XG4gICAgICB9XG4gICAgICBjb250ZW50PXtcbiAgICAgICAgZWRpdHMubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICA8RmlsZUVkaXRUb29sRGlmZiBmaWxlX3BhdGg9e2ZpbGVQYXRofSBlZGl0cz17ZWRpdHN9IC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFRleHQgZGltQ29sb3I+e25vQ2hhbmdlc01lc3NhZ2V9PC9UZXh0PlxuICAgICAgICApXG4gICAgICB9XG4gICAgICBwYXRoPXtmaWxlUGF0aH1cbiAgICAgIGNvbXBsZXRpb25UeXBlPVwic3RyX3JlcGxhY2Vfc2luZ2xlXCJcbiAgICAgIHBhcnNlSW5wdXQ9e3BhcnNlSW5wdXR9XG4gICAgICB3b3JrZXJCYWRnZT17cHJvcHMud29ya2VyQmFkZ2V9XG4gICAgLz5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsU0FBU0EsUUFBUSxFQUFFQyxRQUFRLFFBQVEsTUFBTTtBQUN6QyxPQUFPQyxLQUFLLElBQUlDLFFBQVEsRUFBRUMsR0FBRyxFQUFF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