π File detail
components/permissions/FileWritePermissionRequest/FileWritePermissionRequest.tsx
π― Use case
This file lives under βcomponents/β, which covers shared React UI pieces. On the API surface it exposes FileWritePermissionRequest β mainly types, interfaces, or factory objects. Dependencies touch React UI, Node path helpers, and schema validation. It composes internal code from ink, tools, utils, 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, { useMemo } from 'react'; import type { z } from 'zod/v4'; import { Text } from '../../../ink.js';
π€ Exports (heuristic)
FileWritePermissionRequest
π External import roots
Package roots from from "β¦" (relative paths omitted).
reactpathzod
π₯οΈ Source preview
import { c as _c } from "react/compiler-runtime";
import { basename, relative } from 'path';
import React, { useMemo } from 'react';
import type { z } from 'zod/v4';
import { Text } from '../../../ink.js';
import { FileWriteTool } from '../../../tools/FileWriteTool/FileWriteTool.js';
import { getCwd } from '../../../utils/cwd.js';
import { isENOENT } from '../../../utils/errors.js';
import { readFileSync } from '../../../utils/fileRead.js';
import { FilePermissionDialog } from '../FilePermissionDialog/FilePermissionDialog.js';
import { createSingleEditDiffConfig, type FileEdit, type IDEDiffSupport } from '../FilePermissionDialog/ideDiffConfig.js';
import type { PermissionRequestProps } from '../PermissionRequest.js';
import { FileWriteToolDiff } from './FileWriteToolDiff.js';
type FileWriteToolInput = z.infer<typeof FileWriteTool.inputSchema>;
const ideDiffSupport: IDEDiffSupport<FileWriteToolInput> = {
getConfig: (input: FileWriteToolInput) => {
let oldContent: string;
try {
oldContent = readFileSync(input.file_path);
} catch (e) {
if (!isENOENT(e)) throw e;
oldContent = '';
}
return createSingleEditDiffConfig(input.file_path, oldContent, input.content, false // For file writes, we replace the entire content
);
},
applyChanges: (input: FileWriteToolInput, modifiedEdits: FileEdit[]) => {
const firstEdit = modifiedEdits[0];
if (firstEdit) {
return {
...input,
content: firstEdit.new_string
};
}
return input;
}
};
export function FileWritePermissionRequest(props) {
const $ = _c(30);
const parseInput = _temp;
let t0;
if ($[0] !== props.toolUseConfirm.input) {
t0 = parseInput(props.toolUseConfirm.input);
$[0] = props.toolUseConfirm.input;
$[1] = t0;
} else {
t0 = $[1];
}
const parsed = t0;
const {
file_path,
content
} = parsed;
let t1;
if ($[2] !== file_path) {
;
try {
t1 = {
fileExists: true,
oldContent: readFileSync(file_path)
};
} catch (t2) {
const e = t2;
if (!isENOENT(e)) {
throw e;
}
let t3;
if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
t3 = {
fileExists: false,
oldContent: ""
};
$[4] = t3;
} else {
t3 = $[4];
}
t1 = t3;
}
$[2] = file_path;
$[3] = t1;
} else {
t1 = $[3];
}
const {
fileExists,
oldContent
} = t1;
const actionText = fileExists ? "overwrite" : "create";
const t2 = props.toolUseConfirm;
const t3 = props.toolUseContext;
const t4 = props.onDone;
const t5 = props.onReject;
const t6 = props.workerBadge;
const t7 = fileExists ? "Overwrite file" : "Create file";
let t8;
if ($[5] !== file_path) {
t8 = relative(getCwd(), file_path);
$[5] = file_path;
$[6] = t8;
} else {
t8 = $[6];
}
let t9;
if ($[7] !== file_path) {
t9 = basename(file_path);
$[7] = file_path;
$[8] = t9;
} else {
t9 = $[8];
}
let t10;
if ($[9] !== t9) {
t10 = <Text bold={true}>{t9}</Text>;
$[9] = t9;
$[10] = t10;
} else {
t10 = $[10];
}
let t11;
if ($[11] !== actionText || $[12] !== t10) {
t11 = <Text>Do you want to {actionText} {t10}?</Text>;
$[11] = actionText;
$[12] = t10;
$[13] = t11;
} else {
t11 = $[13];
}
let t12;
if ($[14] !== content || $[15] !== fileExists || $[16] !== file_path || $[17] !== oldContent) {
t12 = <FileWriteToolDiff file_path={file_path} content={content} fileExists={fileExists} oldContent={oldContent} />;
$[14] = content;
$[15] = fileExists;
$[16] = file_path;
$[17] = oldContent;
$[18] = t12;
} else {
t12 = $[18];
}
let t13;
if ($[19] !== file_path || $[20] !== props.onDone || $[21] !== props.onReject || $[22] !== props.toolUseConfirm || $[23] !== props.toolUseContext || $[24] !== props.workerBadge || $[25] !== t11 || $[26] !== t12 || $[27] !== t7 || $[28] !== t8) {
t13 = <FilePermissionDialog toolUseConfirm={t2} toolUseContext={t3} onDone={t4} onReject={t5} workerBadge={t6} title={t7} subtitle={t8} question={t11} content={t12} path={file_path} completionType="write_file_single" parseInput={parseInput} ideDiffSupport={ideDiffSupport} />;
$[19] = file_path;
$[20] = props.onDone;
$[21] = props.onReject;
$[22] = props.toolUseConfirm;
$[23] = props.toolUseContext;
$[24] = props.workerBadge;
$[25] = t11;
$[26] = t12;
$[27] = t7;
$[28] = t8;
$[29] = t13;
} else {
t13 = $[29];
}
return t13;
}
function _temp(input) {
return FileWriteTool.inputSchema.parse(input);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJiYXNlbmFtZSIsInJlbGF0aXZlIiwiUmVhY3QiLCJ1c2VNZW1vIiwieiIsIlRleHQiLCJGaWxlV3JpdGVUb29sIiwiZ2V0Q3dkIiwiaXNFTk9FTlQiLCJyZWFkRmlsZVN5bmMiLCJGaWxlUGVybWlzc2lvbkRpYWxvZyIsImNyZWF0ZVNpbmdsZUVkaXREaWZmQ29uZmlnIiwiRmlsZUVkaXQiLCJJREVEaWZmU3VwcG9ydCIsIlBlcm1pc3Npb25SZXF1ZXN0UHJvcHMiLCJGaWxlV3JpdGVUb29sRGlmZiIsIkZpbGVXcml0ZVRvb2xJbnB1dCIsImluZmVyIiwiaW5wdXRTY2hlbWEiLCJpZGVEaWZmU3VwcG9ydCIsImdldENvbmZpZyIsImlucHV0Iiwib2xkQ29udGVudCIsImZpbGVfcGF0aCIsImUiLCJjb250ZW50IiwiYXBwbHlDaGFuZ2VzIiwibW9kaWZpZWRFZGl0cyIsImZpcnN0RWRpdCIsIm5ld19zdHJpbmciLCJGaWxlV3JpdGVQZXJtaXNzaW9uUmVxdWVzdCIsInByb3BzIiwiJCIsIl9jIiwicGFyc2VJbnB1dCIsIl90ZW1wIiwidDAiLCJ0b29sVXNlQ29uZmlybSIsInBhcnNlZCIsInQxIiwiZmlsZUV4aXN0cyIsInQyIiwidDMiLCJTeW1ib2wiLCJmb3IiLCJhY3Rpb25UZXh0IiwidG9vbFVzZUNvbnRleHQiLCJ0NCIsIm9uRG9uZSIsInQ1Iiwib25SZWplY3QiLCJ0NiIsIndvcmtlckJhZGdlIiwidDciLCJ0OCIsInQ5IiwidDEwIiwidDExIiwidDEyIiwidDEzIiwicGFyc2UiXSwic291cmNlcyI6WyJGaWxlV3JpdGVQZXJtaXNzaW9uUmVxdWVzdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYmFzZW5hbWUsIHJlbGF0aXZlIH0gZnJvbSAncGF0aCdcbmltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7IHogfSBmcm9tICd6b2QvdjQnXG5pbXBvcnQgeyBUZXh0IH0gZnJvbSAnLi4vLi4vLi4vaW5rLmpzJ1xuaW1wb3J0IHsgRmlsZVdyaXRlVG9vbCB9IGZyb20gJy4uLy4uLy4uL3Rvb2xzL0ZpbGVXcml0ZVRvb2wvRmlsZVdyaXRlVG9vbC5qcydcbmltcG9ydCB7IGdldEN3ZCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2N3ZC5qcydcbmltcG9ydCB7IGlzRU5PRU5UIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZXJyb3JzLmpzJ1xuaW1wb3J0IHsgcmVhZEZpbGVTeW5jIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZmlsZVJlYWQuanMnXG5pbXBvcnQgeyBGaWxlUGVybWlzc2lvbkRpYWxvZyB9IGZyb20gJy4uL0ZpbGVQZXJtaXNzaW9uRGlhbG9nL0ZpbGVQZXJtaXNzaW9uRGlhbG9nLmpzJ1xuaW1wb3J0IHtcbiAgY3JlYXRlU2luZ2xlRWRpdERpZmZDb25maWcsXG4gIHR5cGUgRmlsZUVkaXQsXG4gIHR5cGUgSURFRGlmZlN1cHBvcnQsXG59IGZyb20gJy4uL0ZpbGVQZXJtaXNzaW9uRGlhbG9nL2lkZURpZmZDb25maWcuanMnXG5pbXBvcnQgdHlwZSB7IFBlcm1pc3Npb25SZXF1ZXN0UHJvcHMgfSBmcm9tICcuLi9QZXJtaXNzaW9uUmVxdWVzdC5qcydcbmltcG9ydCB7IEZpbGVXcml0ZVRvb2xEaWZmIH0gZnJvbSAnLi9GaWxlV3JpdGVUb29sRGlmZi5qcydcblxudHlwZSBGaWxlV3JpdGVUb29sSW5wdXQgPSB6LmluZmVyPHR5cGVvZiBGaWxlV3JpdGVUb29sLmlucHV0U2NoZW1hPlxuXG5jb25zdCBpZGVEaWZmU3VwcG9ydDogSURFRGlmZlN1cHBvcnQ8RmlsZVdyaXRlVG9vbElucHV0PiA9IHtcbiAgZ2V0Q29uZmlnOiAoaW5wdXQ6IEZpbGVXcml0ZVRvb2xJbnB1dCkgPT4ge1xuICAgIGxldCBvbGRDb250ZW50OiBzdHJpbmdcbiAgICB0cnkge1xuICAgICAgb2xkQ29udGVudCA9IHJlYWRGaWxlU3luYyhpbnB1dC5maWxlX3BhdGgpXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKCFpc0VOT0VOVChlKSkgdGhyb3cgZVxuICAgICAgb2xkQ29udGVudCA9ICcnXG4gICAgfVxuXG4gICAgcmV0dXJuIGNyZWF0ZVNpbmdsZUVkaXREaWZmQ29uZmlnKFxuICAgICAgaW5wdXQuZmlsZV9wYXRoLFxuICAgICAgb2xkQ29udGVudCxcbiAgICAgIGlucHV0LmNvbnRlbnQsXG4gICAgICBmYWxzZSwgLy8gRm9yIGZpbGUgd3JpdGVzLCB3ZSByZXBsYWNlIHRoZSBlbnRpcmUgY29udGVudFxuICAgIClcbiAgfSxcbiAgYXBwbHlDaGFuZ2VzOiAoaW5wdXQ6IEZpbGVXcml0ZVRvb2xJbnB1dCwgbW9kaWZpZWRFZGl0czogRmlsZUVkaXRbXSkgPT4ge1xuICAgIGNvbnN0IGZpcnN0RWRpdCA9IG1vZGlmaWVkRWRpdHNbMF1cbiAgICBpZiAoZmlyc3RFZGl0KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pbnB1dCxcbiAgICAgICAgY29udGVudDogZmlyc3RFZGl0Lm5ld19zdHJpbmcsXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpbnB1dFxuICB9LFxufVxuXG5leHBvcnQgZnVuY3Rpb24gRmlsZVdyaXRlUGVybWlzc2lvblJlcXVlc3QoXG4gIHByb3BzOiBQZXJtaXNzaW9uUmVxdWVzdFByb3BzLFxuKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgY29uc3QgcGFyc2VJbnB1dCA9IChpbnB1dDogdW5rbm93bik6IEZpbGVXcml0ZVRvb2xJbnB1dCA9PiB7XG4gICAgcmV0dXJuIEZpbGVXcml0ZVRvb2wuaW5wdXRTY2hlbWEucGFyc2UoaW5wdXQpXG4gIH1cblxuICBjb25zdCBwYXJzZWQgPSBwYXJzZUlucHV0KHByb3BzLnRvb2xVc2VDb25maXJtLmlucHV0KVxuICBjb25zdCB7IGZpbGVfcGF0aCwgY29udGVudCB9ID0gcGFyc2VkXG5cbiAgLy8gU2luZ2xlIHJlYWQgZHJpdmVzIGJvdGggVUkgdGV4dCAoXCJDcmVhdGVcIiB2cyBcIk92ZXJ3cml0ZVwiKSBhbmQgdGhlIGRpZmZcbiAgLy8gc2hvd24gYnkgRmlsZVdyaXRlVG9vbERpZmYg4oCUIGF2b2lkcyBhIHJlZHVuZGFudCBleGlzdHNTeW5jIHN0YXQgdGhhdCB3b3VsZFxuICAvLyBibG9jayBmaXJzdC1tb3VudCBjb21taXQgb24gc2xvdy9uZXR3b3JrZWQgZmlsZXN5c3RlbXMuXG4gIGNvbnN0IHsgZmlsZUV4aXN0cywgb2xkQ29udGVudCB9ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7IGZpbGVFeGlzdHM6IHRydWUsIG9sZENvbnRlbnQ6IHJlYWRGaWxlU3luYyhmaWxlX3BhdGgpIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoIWlzRU5PRU5UKGUpKSB0aHJvdyBlXG4gICAgICByZXR1cm4geyBmaWxlRXhpc3RzOiBmYWxzZSwgb2xkQ29udGVudDogJycgfVxuICAgIH1cbiAgfSwgW2ZpbGVfcGF0aF0pXG5cbiAgY29uc3QgYWN0aW9uVGV4dCA9IGZpbGVFeGlzdHMgPyAnb3ZlcndyaXRlJyA6ICdjcmVhdGUnXG5cbiAgcmV0dXJuIChcbiAgICA8RmlsZVBlcm1pc3Npb25EaWFsb2dcbiAgICAgIHRvb2xVc2VDb25maXJtPXtwcm9wcy50b29sVXNlQ29uZmlybX1cbiAgICAgIHRvb2xVc2VDb250ZXh0PXtwcm9wcy50b29sVXNlQ29udGV4dH1cbiAgICAgIG9uRG9uZT17cHJvcHMub25Eb25lfVxuICAgICAgb25SZWplY3Q9e3Byb3BzLm9uUmVqZWN0fVxuICAgICAgd29ya2VyQmFkZ2U9e3Byb3BzLndvcmtlckJhZGdlfVxuICAgICAgdGl0bGU9e2ZpbGVFeGlzdHMgPyAnT3ZlcndyaXRlIGZpbGUnIDogJ0NyZWF0ZSBmaWxlJ31cbiAgICAgIHN1YnRpdGxlPXtyZWxhdGl2ZShnZXRDd2QoKSwgZmlsZV9wYXRoKX1cbiAgICAgIHF1ZXN0aW9uPXtcbiAgICAgICAgPFRleHQ+XG4gICAgICAgICAgRG8geW91IHdhbnQgdG8ge2FjdGlvblRleHR9IDxUZXh0IGJvbGQ+e2Jhc2VuYW1lKGZpbGVfcGF0aCl9PC9UZXh0Pj9cbiAgICAgICAgPC9UZXh0PlxuICAgICAgfVxuICAgICAgY29udGVudD17XG4gICAgICAgIDxGaWxlV3JpdGVUb29sRGlmZlxuICAgICAgICAgIGZpbGVfcGF0aD17ZmlsZV9wYXRofVxuICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XG4gICAgICAgICAgZmlsZUV4aXN0cz17ZmlsZUV4aXN0c31cbiAgICAgICAgICBvbGRDb250ZW50PXtvbGRDb250ZW50fVxuICAgICAgICAvPlxuICAgICAgfVxuICAgICAgcGF0aD17ZmlsZV9wYXRofVxuICAgICAgY29tcGxldGlvblR5cGU9XCJ3cml0ZV9maWxlX3NpbmdsZVwiXG4gICAgICBwYXJzZUlucHV0PXtwYXJzZUlucHV0fVxuICAgICAgaWRlRGlmZlN1cHBvcnQ9e2lkZURpZmZTdXBwb3J0fVxuICAgIC8+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVNBLFFBQVEsRUFBRUMsUUFBUSxRQUFRLE1BQU07QUFDekMsT0FBT0MsS0FBSyxJQUFJQyxPQUFPLFFBQVEsT0FBTztBQUN0QyxjQUFjQyxDQUFDLFFBQVEsUUFBUTtBQUMvQixTQUFTQyxJQUFJLFFBQVEsaUJBQWlCO0FBQ3RDLFNBQVNDLGFBQWEsUUFBUSwrQ0FBK0M7QUFDN0UsU0FBU0MsTUFBTSxRQUFRLHVCQUF1QjtBQUM5QyxTQUFTQyxRQUFRLFFBQVEsMEJBQTBCO0FBQ25ELFNBQVNDLFlBQVksUUFBUSw0QkFBNEI7QUFDekQsU0FBU0Msb0JBQW9CLFFBQVEsaURBQWlEO0FBQ3RGLFNBQ0VDLDBCQUEwQixFQUMxQixLQUFLQyxRQUFRLEVBQ2IsS0FBS0MsY0FBYyxRQUNkLDBDQUEwQztBQUNqRCxjQUFjQyxzQkFBc0IsUUFBUSx5QkFBeUI7QUFDckUsU0FBU0MsaUJBQWlCLFFBQVEsd0JBQXdCO0FBRTFELEtBQUtDLGtCQUFrQixHQUFHWixDQUFDLENBQUNhLEtBQUssQ0FBQyxPQUFPWCxhQUFhLENBQUNZLFdBQVcsQ0FB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