@sourcegraph/amp 0.0.1749182771-gb19aef → 0.0.1749196899-g16ba82
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/amp.js +3 -3
- package/dist/{client-DQvLVO0y.js → client-D1Pmx669.js} +2 -2
- package/dist/{client-DQvLVO0y.js.map → client-D1Pmx669.js.map} +1 -1
- package/dist/{console-B2SF1aqQ.js → console-DZmALLuA.js} +14 -14
- package/dist/{console-B2SF1aqQ.js.map → console-DZmALLuA.js.map} +1 -1
- package/dist/{create_file.node-CTYL8XSm.js → create_file.node-CygrebBY.js} +2 -2
- package/dist/{create_file.node-CTYL8XSm.js.map → create_file.node-CygrebBY.js.map} +1 -1
- package/dist/{edit_file.node-Bsj3aCak.js → edit_file.node-D_cMkiLI.js} +3 -3
- package/dist/{edit_file.node-Bsj3aCak.js.map → edit_file.node-D_cMkiLI.js.map} +1 -1
- package/dist/{executable-DdVPivLU.js → executable-C8qYZU1W.js} +2 -2
- package/dist/{executable-DdVPivLU.js.map → executable-C8qYZU1W.js.map} +1 -1
- package/dist/{files-DgmPJSHS.js → files--h2VjD8F.js} +2 -2
- package/dist/{files-DgmPJSHS.js.map → files--h2VjD8F.js.map} +1 -1
- package/dist/{glob.node-CvxhbXXV.js → glob.node-AB34HaNl.js} +4 -4
- package/dist/{glob.node-CvxhbXXV.js.map → glob.node-AB34HaNl.js.map} +1 -1
- package/dist/{index-DG5uxXfG.js → index-nQBDDlvh.js} +2 -2
- package/dist/{index-DG5uxXfG.js.map → index-nQBDDlvh.js.map} +1 -1
- package/dist/{list_directory.node-D7kWIPfS.js → list_directory.node-DZamBwOx.js} +2 -2
- package/dist/{list_directory.node-D7kWIPfS.js.map → list_directory.node-DZamBwOx.js.map} +1 -1
- package/dist/{load-profile-DD55GCpN.js → load-profile-DzDzDOIq.js} +2 -2
- package/dist/{load-profile-DD55GCpN.js.map → load-profile-DzDzDOIq.js.map} +1 -1
- package/dist/{main-CnaIlgJ-.js → main-WXbdYG4Z.js} +16 -16
- package/dist/{main-CnaIlgJ-.js.map → main-WXbdYG4Z.js.map} +1 -1
- package/dist/{node-BHadfrnF.js → node-B9XNCq_w.js} +2 -2
- package/dist/{node-BHadfrnF.js.map → node-B9XNCq_w.js.map} +1 -1
- package/dist/{node-CDbBRzSe.js → node-CBRPqFin.js} +403 -402
- package/dist/node-CBRPqFin.js.map +1 -0
- package/dist/{node-CBGz4YST.js → node-CUCcBUhU.js} +4 -4
- package/dist/{node-CBGz4YST.js.map → node-CUCcBUhU.js.map} +1 -1
- package/dist/{node-q5EJWNpV.js → node-Cs3K2AKs.js} +3 -3
- package/dist/{node-q5EJWNpV.js.map → node-Cs3K2AKs.js.map} +1 -1
- package/dist/{node-BcF9KV_p.js → node-D2Ho0W-v.js} +3 -3
- package/dist/{node-BcF9KV_p.js.map → node-D2Ho0W-v.js.map} +1 -1
- package/dist/{node-DExO0xPV.js → node-SvjAOtkw.js} +2 -2
- package/dist/{node-DExO0xPV.js.map → node-SvjAOtkw.js.map} +1 -1
- package/dist/{read_file.node-CpfHdJYY.js → read_file.node-CveQp78z.js} +2 -2
- package/dist/{read_file.node-CpfHdJYY.js.map → read_file.node-CveQp78z.js.map} +1 -1
- package/dist/{stdio-Clxnyx58.js → stdio-CRvROLK4.js} +3 -3
- package/dist/{stdio-Clxnyx58.js.map → stdio-CRvROLK4.js.map} +1 -1
- package/dist/storybook.js +1 -1
- package/dist/{undo_edit.node-DDFebFdr.js → undo_edit.node-C3I02TEE.js} +2 -2
- package/dist/{undo_edit.node-DDFebFdr.js.map → undo_edit.node-C3I02TEE.js.map} +1 -1
- package/package.json +1 -1
- package/dist/node-CDbBRzSe.js.map +0 -1
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"stdio-Clxnyx58.js","sources":["../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js","../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js","../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js","../../node_modules/.pnpm/which@2.0.2/node_modules/which/which.js","../../node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js","../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/resolveCommand.js","../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/escape.js","../../node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js","../../node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js","../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/readShebang.js","../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/parse.js","../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/enoent.js","../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/index.js","../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.12.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js","../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.12.0/node_modules/@modelcontextprotocol/sdk/dist/esm/client/stdio.js"],"sourcesContent":["module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n","module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n","var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n","const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n","'use strict';\n\nconst pathKey = (options = {}) => {\n\tconst environment = options.env || process.env;\n\tconst platform = options.platform || process.platform;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(environment).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n};\n\nmodule.exports = pathKey;\n// TODO: Remove this for the next major release\nmodule.exports.default = pathKey;\n","'use strict';\n\nconst path = require('path');\nconst which = require('which');\nconst getPathKey = require('path-key');\n\nfunction resolveCommandAttempt(parsed, withoutPathExt) {\n const env = parsed.options.env || process.env;\n const cwd = process.cwd();\n const hasCustomCwd = parsed.options.cwd != null;\n // Worker threads do not have process.chdir()\n const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled;\n\n // If a custom `cwd` was specified, we need to change the process cwd\n // because `which` will do stat calls but does not support a custom cwd\n if (shouldSwitchCwd) {\n try {\n process.chdir(parsed.options.cwd);\n } catch (err) {\n /* Empty */\n }\n }\n\n let resolved;\n\n try {\n resolved = which.sync(parsed.command, {\n path: env[getPathKey({ env })],\n pathExt: withoutPathExt ? path.delimiter : undefined,\n });\n } catch (e) {\n /* Empty */\n } finally {\n if (shouldSwitchCwd) {\n process.chdir(cwd);\n }\n }\n\n // If we successfully resolved, ensure that an absolute path is returned\n // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it\n if (resolved) {\n resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);\n }\n\n return resolved;\n}\n\nfunction resolveCommand(parsed) {\n return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);\n}\n\nmodule.exports = resolveCommand;\n","'use strict';\n\n// See http://www.robvanderwoude.com/escapechars.php\nconst metaCharsRegExp = /([()\\][%!^\"`<>&|;, *?])/g;\n\nfunction escapeCommand(arg) {\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n return arg;\n}\n\nfunction escapeArgument(arg, doubleEscapeMetaChars) {\n // Convert to string\n arg = `${arg}`;\n\n // Algorithm below is based on https://qntm.org/cmd\n // It's slightly altered to disable JS backtracking to avoid hanging on specially crafted input\n // Please see https://github.com/moxystudio/node-cross-spawn/pull/160 for more information\n\n // Sequence of backslashes followed by a double quote:\n // double up all the backslashes and escape the double quote\n arg = arg.replace(/(?=(\\\\+?)?)\\1\"/g, '$1$1\\\\\"');\n\n // Sequence of backslashes followed by the end of the string\n // (which will become a double quote later):\n // double up all the backslashes\n arg = arg.replace(/(?=(\\\\+?)?)\\1$/, '$1$1');\n\n // All other backslashes occur literally\n\n // Quote the whole thing:\n arg = `\"${arg}\"`;\n\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n // Double escape meta chars if necessary\n if (doubleEscapeMetaChars) {\n arg = arg.replace(metaCharsRegExp, '^$1');\n }\n\n return arg;\n}\n\nmodule.exports.command = escapeCommand;\nmodule.exports.argument = escapeArgument;\n","'use strict';\nmodule.exports = /^#!(.*)/;\n","'use strict';\nconst shebangRegex = require('shebang-regex');\n\nmodule.exports = (string = '') => {\n\tconst match = string.match(shebangRegex);\n\n\tif (!match) {\n\t\treturn null;\n\t}\n\n\tconst [path, argument] = match[0].replace(/#! ?/, '').split(' ');\n\tconst binary = path.split('/').pop();\n\n\tif (binary === 'env') {\n\t\treturn argument;\n\t}\n\n\treturn argument ? `${binary} ${argument}` : binary;\n};\n","'use strict';\n\nconst fs = require('fs');\nconst shebangCommand = require('shebang-command');\n\nfunction readShebang(command) {\n // Read the first 150 bytes from the file\n const size = 150;\n const buffer = Buffer.alloc(size);\n\n let fd;\n\n try {\n fd = fs.openSync(command, 'r');\n fs.readSync(fd, buffer, 0, size, 0);\n fs.closeSync(fd);\n } catch (e) { /* Empty */ }\n\n // Attempt to extract shebang (null is returned if not a shebang)\n return shebangCommand(buffer.toString());\n}\n\nmodule.exports = readShebang;\n","'use strict';\n\nconst path = require('path');\nconst resolveCommand = require('./util/resolveCommand');\nconst escape = require('./util/escape');\nconst readShebang = require('./util/readShebang');\n\nconst isWin = process.platform === 'win32';\nconst isExecutableRegExp = /\\.(?:com|exe)$/i;\nconst isCmdShimRegExp = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\nfunction detectShebang(parsed) {\n parsed.file = resolveCommand(parsed);\n\n const shebang = parsed.file && readShebang(parsed.file);\n\n if (shebang) {\n parsed.args.unshift(parsed.file);\n parsed.command = shebang;\n\n return resolveCommand(parsed);\n }\n\n return parsed.file;\n}\n\nfunction parseNonShell(parsed) {\n if (!isWin) {\n return parsed;\n }\n\n // Detect & add support for shebangs\n const commandFile = detectShebang(parsed);\n\n // We don't need a shell if the command filename is an executable\n const needsShell = !isExecutableRegExp.test(commandFile);\n\n // If a shell is required, use cmd.exe and take care of escaping everything correctly\n // Note that `forceShell` is an hidden option used only in tests\n if (parsed.options.forceShell || needsShell) {\n // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`\n // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument\n // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,\n // we need to double escape them\n const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);\n\n // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\\bar)\n // This is necessary otherwise it will always fail with ENOENT in those cases\n parsed.command = path.normalize(parsed.command);\n\n // Escape command & arguments\n parsed.command = escape.command(parsed.command);\n parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));\n\n const shellCommand = [parsed.command].concat(parsed.args).join(' ');\n\n parsed.args = ['/d', '/s', '/c', `\"${shellCommand}\"`];\n parsed.command = process.env.comspec || 'cmd.exe';\n parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped\n }\n\n return parsed;\n}\n\nfunction parse(command, args, options) {\n // Normalize arguments, similar to nodejs\n if (args && !Array.isArray(args)) {\n options = args;\n args = null;\n }\n\n args = args ? args.slice(0) : []; // Clone array to avoid changing the original\n options = Object.assign({}, options); // Clone object to avoid changing the original\n\n // Build our parsed object\n const parsed = {\n command,\n args,\n options,\n file: undefined,\n original: {\n command,\n args,\n },\n };\n\n // Delegate further parsing to shell or non-shell\n return options.shell ? parsed : parseNonShell(parsed);\n}\n\nmodule.exports = parse;\n","'use strict';\n\nconst isWin = process.platform === 'win32';\n\nfunction notFoundError(original, syscall) {\n return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {\n code: 'ENOENT',\n errno: 'ENOENT',\n syscall: `${syscall} ${original.command}`,\n path: original.command,\n spawnargs: original.args,\n });\n}\n\nfunction hookChildProcess(cp, parsed) {\n if (!isWin) {\n return;\n }\n\n const originalEmit = cp.emit;\n\n cp.emit = function (name, arg1) {\n // If emitting \"exit\" event and exit code is 1, we need to check if\n // the command exists and emit an \"error\" instead\n // See https://github.com/IndigoUnited/node-cross-spawn/issues/16\n if (name === 'exit') {\n const err = verifyENOENT(arg1, parsed);\n\n if (err) {\n return originalEmit.call(cp, 'error', err);\n }\n }\n\n return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params\n };\n}\n\nfunction verifyENOENT(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawn');\n }\n\n return null;\n}\n\nfunction verifyENOENTSync(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawnSync');\n }\n\n return null;\n}\n\nmodule.exports = {\n hookChildProcess,\n verifyENOENT,\n verifyENOENTSync,\n notFoundError,\n};\n","'use strict';\n\nconst cp = require('child_process');\nconst parse = require('./lib/parse');\nconst enoent = require('./lib/enoent');\n\nfunction spawn(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n\n // Hook into child process \"exit\" event to emit an error if the command\n // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n enoent.hookChildProcess(spawned, parsed);\n\n return spawned;\n}\n\nfunction spawnSync(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);\n\n // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);\n\n return result;\n}\n\nmodule.exports = spawn;\nmodule.exports.spawn = spawn;\nmodule.exports.sync = spawnSync;\n\nmodule.exports._parse = parse;\nmodule.exports._enoent = enoent;\n","import { JSONRPCMessageSchema } from \"../types.js\";\n/**\n * Buffers a continuous stdio stream into discrete JSON-RPC messages.\n */\nexport class ReadBuffer {\n append(chunk) {\n this._buffer = this._buffer ? Buffer.concat([this._buffer, chunk]) : chunk;\n }\n readMessage() {\n if (!this._buffer) {\n return null;\n }\n const index = this._buffer.indexOf(\"\\n\");\n if (index === -1) {\n return null;\n }\n const line = this._buffer.toString(\"utf8\", 0, index).replace(/\\r$/, '');\n this._buffer = this._buffer.subarray(index + 1);\n return deserializeMessage(line);\n }\n clear() {\n this._buffer = undefined;\n }\n}\nexport function deserializeMessage(line) {\n return JSONRPCMessageSchema.parse(JSON.parse(line));\n}\nexport function serializeMessage(message) {\n return JSON.stringify(message) + \"\\n\";\n}\n//# sourceMappingURL=stdio.js.map","import spawn from \"cross-spawn\";\nimport process from \"node:process\";\nimport { PassThrough } from \"node:stream\";\nimport { ReadBuffer, serializeMessage } from \"../shared/stdio.js\";\n/**\n * Environment variables to inherit by default, if an environment is not explicitly given.\n */\nexport const DEFAULT_INHERITED_ENV_VARS = process.platform === \"win32\"\n ? [\n \"APPDATA\",\n \"HOMEDRIVE\",\n \"HOMEPATH\",\n \"LOCALAPPDATA\",\n \"PATH\",\n \"PROCESSOR_ARCHITECTURE\",\n \"SYSTEMDRIVE\",\n \"SYSTEMROOT\",\n \"TEMP\",\n \"USERNAME\",\n \"USERPROFILE\",\n ]\n : /* list inspired by the default env inheritance of sudo */\n [\"HOME\", \"LOGNAME\", \"PATH\", \"SHELL\", \"TERM\", \"USER\"];\n/**\n * Returns a default environment object including only environment variables deemed safe to inherit.\n */\nexport function getDefaultEnvironment() {\n const env = {};\n for (const key of DEFAULT_INHERITED_ENV_VARS) {\n const value = process.env[key];\n if (value === undefined) {\n continue;\n }\n if (value.startsWith(\"()\")) {\n // Skip functions, which are a security risk.\n continue;\n }\n env[key] = value;\n }\n return env;\n}\n/**\n * Client transport for stdio: this will connect to a server by spawning a process and communicating with it over stdin/stdout.\n *\n * This transport is only available in Node.js environments.\n */\nexport class StdioClientTransport {\n constructor(server) {\n this._abortController = new AbortController();\n this._readBuffer = new ReadBuffer();\n this._stderrStream = null;\n this._serverParams = server;\n if (server.stderr === \"pipe\" || server.stderr === \"overlapped\") {\n this._stderrStream = new PassThrough();\n }\n }\n /**\n * Starts the server process and prepares to communicate with it.\n */\n async start() {\n if (this._process) {\n throw new Error(\"StdioClientTransport already started! If using Client class, note that connect() calls start() automatically.\");\n }\n return new Promise((resolve, reject) => {\n var _a, _b, _c, _d, _e, _f;\n this._process = spawn(this._serverParams.command, (_a = this._serverParams.args) !== null && _a !== void 0 ? _a : [], {\n env: (_b = this._serverParams.env) !== null && _b !== void 0 ? _b : getDefaultEnvironment(),\n stdio: [\"pipe\", \"pipe\", (_c = this._serverParams.stderr) !== null && _c !== void 0 ? _c : \"inherit\"],\n shell: false,\n signal: this._abortController.signal,\n windowsHide: process.platform === \"win32\" && isElectron(),\n cwd: this._serverParams.cwd,\n });\n this._process.on(\"error\", (error) => {\n var _a, _b;\n if (error.name === \"AbortError\") {\n // Expected when close() is called.\n (_a = this.onclose) === null || _a === void 0 ? void 0 : _a.call(this);\n return;\n }\n reject(error);\n (_b = this.onerror) === null || _b === void 0 ? void 0 : _b.call(this, error);\n });\n this._process.on(\"spawn\", () => {\n resolve();\n });\n this._process.on(\"close\", (_code) => {\n var _a;\n this._process = undefined;\n (_a = this.onclose) === null || _a === void 0 ? void 0 : _a.call(this);\n });\n (_d = this._process.stdin) === null || _d === void 0 ? void 0 : _d.on(\"error\", (error) => {\n var _a;\n (_a = this.onerror) === null || _a === void 0 ? void 0 : _a.call(this, error);\n });\n (_e = this._process.stdout) === null || _e === void 0 ? void 0 : _e.on(\"data\", (chunk) => {\n this._readBuffer.append(chunk);\n this.processReadBuffer();\n });\n (_f = this._process.stdout) === null || _f === void 0 ? void 0 : _f.on(\"error\", (error) => {\n var _a;\n (_a = this.onerror) === null || _a === void 0 ? void 0 : _a.call(this, error);\n });\n if (this._stderrStream && this._process.stderr) {\n this._process.stderr.pipe(this._stderrStream);\n }\n });\n }\n /**\n * The stderr stream of the child process, if `StdioServerParameters.stderr` was set to \"pipe\" or \"overlapped\".\n *\n * If stderr piping was requested, a PassThrough stream is returned _immediately_, allowing callers to\n * attach listeners before the start method is invoked. This prevents loss of any early\n * error output emitted by the child process.\n */\n get stderr() {\n var _a, _b;\n if (this._stderrStream) {\n return this._stderrStream;\n }\n return (_b = (_a = this._process) === null || _a === void 0 ? void 0 : _a.stderr) !== null && _b !== void 0 ? _b : null;\n }\n processReadBuffer() {\n var _a, _b;\n while (true) {\n try {\n const message = this._readBuffer.readMessage();\n if (message === null) {\n break;\n }\n (_a = this.onmessage) === null || _a === void 0 ? void 0 : _a.call(this, message);\n }\n catch (error) {\n (_b = this.onerror) === null || _b === void 0 ? void 0 : _b.call(this, error);\n }\n }\n }\n async close() {\n this._abortController.abort();\n this._process = undefined;\n this._readBuffer.clear();\n }\n send(message) {\n return new Promise((resolve) => {\n var _a;\n if (!((_a = this._process) === null || _a === void 0 ? void 0 : _a.stdin)) {\n throw new Error(\"Not connected\");\n }\n const json = serializeMessage(message);\n if (this._process.stdin.write(json)) {\n resolve();\n }\n else {\n this._process.stdin.once(\"drain\", resolve);\n }\n });\n }\n}\nfunction isElectron() {\n return \"type\" in process;\n}\n//# sourceMappingURL=stdio.js.map"],"names":["windows","isexe","sync","fs","require$$0","checkPathExt","path","options","pathext","p","checkStat","stat","cb","er","mode","checkMode","mod","uid","gid","myUid","myGid","u","g","o","ug","ret","core","global","require$$1","require$$2","isexe_1","resolve","reject","is","isWindows","COLON","getNotFoundError","cmd","getPathInfo","opt","colon","pathEnv","pathExtExe","pathExt","which","found","step","i","ppRaw","pathPart","pCmd","subStep","ii","ext","res","whichSync","j","cur","which_1","pathKey","environment","key","pathKeyModule","getPathKey","resolveCommandAttempt","parsed","withoutPathExt","env","cwd","hasCustomCwd","shouldSwitchCwd","resolved","resolveCommand","resolveCommand_1","metaCharsRegExp","escapeCommand","arg","escapeArgument","doubleEscapeMetaChars","_escape","shebangRegex","shebangCommand","string","match","argument","binary","readShebang","command","buffer","fd","readShebang_1","escape","require$$3","isWin","isExecutableRegExp","isCmdShimRegExp","detectShebang","shebang","parseNonShell","commandFile","needsShell","needsDoubleEscapeMetaChars","shellCommand","parse","args","parse_1","notFoundError","original","syscall","hookChildProcess","cp","originalEmit","name","arg1","err","verifyENOENT","status","verifyENOENTSync","enoent","spawn","spawned","spawnSync","result","crossSpawnModule","ReadBuffer","chunk","index","line","deserializeMessage","JSONRPCMessageSchema","serializeMessage","message","DEFAULT_INHERITED_ENV_VARS","process","getDefaultEnvironment","value","StdioClientTransport","server","PassThrough","_a","_b","_c","_d","_e","_f","isElectron","error","_code","json"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]}
|
1
|
+
{"version":3,"file":"stdio-CRvROLK4.js","sources":["../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js","../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js","../../node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js","../../node_modules/.pnpm/which@2.0.2/node_modules/which/which.js","../../node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js","../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/resolveCommand.js","../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/escape.js","../../node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js","../../node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js","../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/readShebang.js","../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/parse.js","../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/enoent.js","../../node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/index.js","../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.12.0/node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js","../../node_modules/.pnpm/@modelcontextprotocol+sdk@1.12.0/node_modules/@modelcontextprotocol/sdk/dist/esm/client/stdio.js"],"sourcesContent":["module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction checkPathExt (path, options) {\n var pathext = options.pathExt !== undefined ?\n options.pathExt : process.env.PATHEXT\n\n if (!pathext) {\n return true\n }\n\n pathext = pathext.split(';')\n if (pathext.indexOf('') !== -1) {\n return true\n }\n for (var i = 0; i < pathext.length; i++) {\n var p = pathext[i].toLowerCase()\n if (p && path.substr(-p.length).toLowerCase() === p) {\n return true\n }\n }\n return false\n}\n\nfunction checkStat (stat, path, options) {\n if (!stat.isSymbolicLink() && !stat.isFile()) {\n return false\n }\n return checkPathExt(path, options)\n}\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, path, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), path, options)\n}\n","module.exports = isexe\nisexe.sync = sync\n\nvar fs = require('fs')\n\nfunction isexe (path, options, cb) {\n fs.stat(path, function (er, stat) {\n cb(er, er ? false : checkStat(stat, options))\n })\n}\n\nfunction sync (path, options) {\n return checkStat(fs.statSync(path), options)\n}\n\nfunction checkStat (stat, options) {\n return stat.isFile() && checkMode(stat, options)\n}\n\nfunction checkMode (stat, options) {\n var mod = stat.mode\n var uid = stat.uid\n var gid = stat.gid\n\n var myUid = options.uid !== undefined ?\n options.uid : process.getuid && process.getuid()\n var myGid = options.gid !== undefined ?\n options.gid : process.getgid && process.getgid()\n\n var u = parseInt('100', 8)\n var g = parseInt('010', 8)\n var o = parseInt('001', 8)\n var ug = u | g\n\n var ret = (mod & o) ||\n (mod & g) && gid === myGid ||\n (mod & u) && uid === myUid ||\n (mod & ug) && myUid === 0\n\n return ret\n}\n","var fs = require('fs')\nvar core\nif (process.platform === 'win32' || global.TESTING_WINDOWS) {\n core = require('./windows.js')\n} else {\n core = require('./mode.js')\n}\n\nmodule.exports = isexe\nisexe.sync = sync\n\nfunction isexe (path, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = {}\n }\n\n if (!cb) {\n if (typeof Promise !== 'function') {\n throw new TypeError('callback not provided')\n }\n\n return new Promise(function (resolve, reject) {\n isexe(path, options || {}, function (er, is) {\n if (er) {\n reject(er)\n } else {\n resolve(is)\n }\n })\n })\n }\n\n core(path, options || {}, function (er, is) {\n // ignore EACCES because that just means we aren't allowed to run it\n if (er) {\n if (er.code === 'EACCES' || options && options.ignoreErrors) {\n er = null\n is = false\n }\n }\n cb(er, is)\n })\n}\n\nfunction sync (path, options) {\n // my kingdom for a filtered catch\n try {\n return core.sync(path, options || {})\n } catch (er) {\n if (options && options.ignoreErrors || er.code === 'EACCES') {\n return false\n } else {\n throw er\n }\n }\n}\n","const isWindows = process.platform === 'win32' ||\n process.env.OSTYPE === 'cygwin' ||\n process.env.OSTYPE === 'msys'\n\nconst path = require('path')\nconst COLON = isWindows ? ';' : ':'\nconst isexe = require('isexe')\n\nconst getNotFoundError = (cmd) =>\n Object.assign(new Error(`not found: ${cmd}`), { code: 'ENOENT' })\n\nconst getPathInfo = (cmd, opt) => {\n const colon = opt.colon || COLON\n\n // If it has a slash, then we don't bother searching the pathenv.\n // just check the file itself, and that's it.\n const pathEnv = cmd.match(/\\//) || isWindows && cmd.match(/\\\\/) ? ['']\n : (\n [\n // windows always checks the cwd first\n ...(isWindows ? [process.cwd()] : []),\n ...(opt.path || process.env.PATH ||\n /* istanbul ignore next: very unusual */ '').split(colon),\n ]\n )\n const pathExtExe = isWindows\n ? opt.pathExt || process.env.PATHEXT || '.EXE;.CMD;.BAT;.COM'\n : ''\n const pathExt = isWindows ? pathExtExe.split(colon) : ['']\n\n if (isWindows) {\n if (cmd.indexOf('.') !== -1 && pathExt[0] !== '')\n pathExt.unshift('')\n }\n\n return {\n pathEnv,\n pathExt,\n pathExtExe,\n }\n}\n\nconst which = (cmd, opt, cb) => {\n if (typeof opt === 'function') {\n cb = opt\n opt = {}\n }\n if (!opt)\n opt = {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n const step = i => new Promise((resolve, reject) => {\n if (i === pathEnv.length)\n return opt.all && found.length ? resolve(found)\n : reject(getNotFoundError(cmd))\n\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n resolve(subStep(p, i, 0))\n })\n\n const subStep = (p, i, ii) => new Promise((resolve, reject) => {\n if (ii === pathExt.length)\n return resolve(step(i + 1))\n const ext = pathExt[ii]\n isexe(p + ext, { pathExt: pathExtExe }, (er, is) => {\n if (!er && is) {\n if (opt.all)\n found.push(p + ext)\n else\n return resolve(p + ext)\n }\n return resolve(subStep(p, i, ii + 1))\n })\n })\n\n return cb ? step(0).then(res => cb(null, res), cb) : step(0)\n}\n\nconst whichSync = (cmd, opt) => {\n opt = opt || {}\n\n const { pathEnv, pathExt, pathExtExe } = getPathInfo(cmd, opt)\n const found = []\n\n for (let i = 0; i < pathEnv.length; i ++) {\n const ppRaw = pathEnv[i]\n const pathPart = /^\".*\"$/.test(ppRaw) ? ppRaw.slice(1, -1) : ppRaw\n\n const pCmd = path.join(pathPart, cmd)\n const p = !pathPart && /^\\.[\\\\\\/]/.test(cmd) ? cmd.slice(0, 2) + pCmd\n : pCmd\n\n for (let j = 0; j < pathExt.length; j ++) {\n const cur = p + pathExt[j]\n try {\n const is = isexe.sync(cur, { pathExt: pathExtExe })\n if (is) {\n if (opt.all)\n found.push(cur)\n else\n return cur\n }\n } catch (ex) {}\n }\n }\n\n if (opt.all && found.length)\n return found\n\n if (opt.nothrow)\n return null\n\n throw getNotFoundError(cmd)\n}\n\nmodule.exports = which\nwhich.sync = whichSync\n","'use strict';\n\nconst pathKey = (options = {}) => {\n\tconst environment = options.env || process.env;\n\tconst platform = options.platform || process.platform;\n\n\tif (platform !== 'win32') {\n\t\treturn 'PATH';\n\t}\n\n\treturn Object.keys(environment).reverse().find(key => key.toUpperCase() === 'PATH') || 'Path';\n};\n\nmodule.exports = pathKey;\n// TODO: Remove this for the next major release\nmodule.exports.default = pathKey;\n","'use strict';\n\nconst path = require('path');\nconst which = require('which');\nconst getPathKey = require('path-key');\n\nfunction resolveCommandAttempt(parsed, withoutPathExt) {\n const env = parsed.options.env || process.env;\n const cwd = process.cwd();\n const hasCustomCwd = parsed.options.cwd != null;\n // Worker threads do not have process.chdir()\n const shouldSwitchCwd = hasCustomCwd && process.chdir !== undefined && !process.chdir.disabled;\n\n // If a custom `cwd` was specified, we need to change the process cwd\n // because `which` will do stat calls but does not support a custom cwd\n if (shouldSwitchCwd) {\n try {\n process.chdir(parsed.options.cwd);\n } catch (err) {\n /* Empty */\n }\n }\n\n let resolved;\n\n try {\n resolved = which.sync(parsed.command, {\n path: env[getPathKey({ env })],\n pathExt: withoutPathExt ? path.delimiter : undefined,\n });\n } catch (e) {\n /* Empty */\n } finally {\n if (shouldSwitchCwd) {\n process.chdir(cwd);\n }\n }\n\n // If we successfully resolved, ensure that an absolute path is returned\n // Note that when a custom `cwd` was used, we need to resolve to an absolute path based on it\n if (resolved) {\n resolved = path.resolve(hasCustomCwd ? parsed.options.cwd : '', resolved);\n }\n\n return resolved;\n}\n\nfunction resolveCommand(parsed) {\n return resolveCommandAttempt(parsed) || resolveCommandAttempt(parsed, true);\n}\n\nmodule.exports = resolveCommand;\n","'use strict';\n\n// See http://www.robvanderwoude.com/escapechars.php\nconst metaCharsRegExp = /([()\\][%!^\"`<>&|;, *?])/g;\n\nfunction escapeCommand(arg) {\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n return arg;\n}\n\nfunction escapeArgument(arg, doubleEscapeMetaChars) {\n // Convert to string\n arg = `${arg}`;\n\n // Algorithm below is based on https://qntm.org/cmd\n // It's slightly altered to disable JS backtracking to avoid hanging on specially crafted input\n // Please see https://github.com/moxystudio/node-cross-spawn/pull/160 for more information\n\n // Sequence of backslashes followed by a double quote:\n // double up all the backslashes and escape the double quote\n arg = arg.replace(/(?=(\\\\+?)?)\\1\"/g, '$1$1\\\\\"');\n\n // Sequence of backslashes followed by the end of the string\n // (which will become a double quote later):\n // double up all the backslashes\n arg = arg.replace(/(?=(\\\\+?)?)\\1$/, '$1$1');\n\n // All other backslashes occur literally\n\n // Quote the whole thing:\n arg = `\"${arg}\"`;\n\n // Escape meta chars\n arg = arg.replace(metaCharsRegExp, '^$1');\n\n // Double escape meta chars if necessary\n if (doubleEscapeMetaChars) {\n arg = arg.replace(metaCharsRegExp, '^$1');\n }\n\n return arg;\n}\n\nmodule.exports.command = escapeCommand;\nmodule.exports.argument = escapeArgument;\n","'use strict';\nmodule.exports = /^#!(.*)/;\n","'use strict';\nconst shebangRegex = require('shebang-regex');\n\nmodule.exports = (string = '') => {\n\tconst match = string.match(shebangRegex);\n\n\tif (!match) {\n\t\treturn null;\n\t}\n\n\tconst [path, argument] = match[0].replace(/#! ?/, '').split(' ');\n\tconst binary = path.split('/').pop();\n\n\tif (binary === 'env') {\n\t\treturn argument;\n\t}\n\n\treturn argument ? `${binary} ${argument}` : binary;\n};\n","'use strict';\n\nconst fs = require('fs');\nconst shebangCommand = require('shebang-command');\n\nfunction readShebang(command) {\n // Read the first 150 bytes from the file\n const size = 150;\n const buffer = Buffer.alloc(size);\n\n let fd;\n\n try {\n fd = fs.openSync(command, 'r');\n fs.readSync(fd, buffer, 0, size, 0);\n fs.closeSync(fd);\n } catch (e) { /* Empty */ }\n\n // Attempt to extract shebang (null is returned if not a shebang)\n return shebangCommand(buffer.toString());\n}\n\nmodule.exports = readShebang;\n","'use strict';\n\nconst path = require('path');\nconst resolveCommand = require('./util/resolveCommand');\nconst escape = require('./util/escape');\nconst readShebang = require('./util/readShebang');\n\nconst isWin = process.platform === 'win32';\nconst isExecutableRegExp = /\\.(?:com|exe)$/i;\nconst isCmdShimRegExp = /node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;\n\nfunction detectShebang(parsed) {\n parsed.file = resolveCommand(parsed);\n\n const shebang = parsed.file && readShebang(parsed.file);\n\n if (shebang) {\n parsed.args.unshift(parsed.file);\n parsed.command = shebang;\n\n return resolveCommand(parsed);\n }\n\n return parsed.file;\n}\n\nfunction parseNonShell(parsed) {\n if (!isWin) {\n return parsed;\n }\n\n // Detect & add support for shebangs\n const commandFile = detectShebang(parsed);\n\n // We don't need a shell if the command filename is an executable\n const needsShell = !isExecutableRegExp.test(commandFile);\n\n // If a shell is required, use cmd.exe and take care of escaping everything correctly\n // Note that `forceShell` is an hidden option used only in tests\n if (parsed.options.forceShell || needsShell) {\n // Need to double escape meta chars if the command is a cmd-shim located in `node_modules/.bin/`\n // The cmd-shim simply calls execute the package bin file with NodeJS, proxying any argument\n // Because the escape of metachars with ^ gets interpreted when the cmd.exe is first called,\n // we need to double escape them\n const needsDoubleEscapeMetaChars = isCmdShimRegExp.test(commandFile);\n\n // Normalize posix paths into OS compatible paths (e.g.: foo/bar -> foo\\bar)\n // This is necessary otherwise it will always fail with ENOENT in those cases\n parsed.command = path.normalize(parsed.command);\n\n // Escape command & arguments\n parsed.command = escape.command(parsed.command);\n parsed.args = parsed.args.map((arg) => escape.argument(arg, needsDoubleEscapeMetaChars));\n\n const shellCommand = [parsed.command].concat(parsed.args).join(' ');\n\n parsed.args = ['/d', '/s', '/c', `\"${shellCommand}\"`];\n parsed.command = process.env.comspec || 'cmd.exe';\n parsed.options.windowsVerbatimArguments = true; // Tell node's spawn that the arguments are already escaped\n }\n\n return parsed;\n}\n\nfunction parse(command, args, options) {\n // Normalize arguments, similar to nodejs\n if (args && !Array.isArray(args)) {\n options = args;\n args = null;\n }\n\n args = args ? args.slice(0) : []; // Clone array to avoid changing the original\n options = Object.assign({}, options); // Clone object to avoid changing the original\n\n // Build our parsed object\n const parsed = {\n command,\n args,\n options,\n file: undefined,\n original: {\n command,\n args,\n },\n };\n\n // Delegate further parsing to shell or non-shell\n return options.shell ? parsed : parseNonShell(parsed);\n}\n\nmodule.exports = parse;\n","'use strict';\n\nconst isWin = process.platform === 'win32';\n\nfunction notFoundError(original, syscall) {\n return Object.assign(new Error(`${syscall} ${original.command} ENOENT`), {\n code: 'ENOENT',\n errno: 'ENOENT',\n syscall: `${syscall} ${original.command}`,\n path: original.command,\n spawnargs: original.args,\n });\n}\n\nfunction hookChildProcess(cp, parsed) {\n if (!isWin) {\n return;\n }\n\n const originalEmit = cp.emit;\n\n cp.emit = function (name, arg1) {\n // If emitting \"exit\" event and exit code is 1, we need to check if\n // the command exists and emit an \"error\" instead\n // See https://github.com/IndigoUnited/node-cross-spawn/issues/16\n if (name === 'exit') {\n const err = verifyENOENT(arg1, parsed);\n\n if (err) {\n return originalEmit.call(cp, 'error', err);\n }\n }\n\n return originalEmit.apply(cp, arguments); // eslint-disable-line prefer-rest-params\n };\n}\n\nfunction verifyENOENT(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawn');\n }\n\n return null;\n}\n\nfunction verifyENOENTSync(status, parsed) {\n if (isWin && status === 1 && !parsed.file) {\n return notFoundError(parsed.original, 'spawnSync');\n }\n\n return null;\n}\n\nmodule.exports = {\n hookChildProcess,\n verifyENOENT,\n verifyENOENTSync,\n notFoundError,\n};\n","'use strict';\n\nconst cp = require('child_process');\nconst parse = require('./lib/parse');\nconst enoent = require('./lib/enoent');\n\nfunction spawn(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const spawned = cp.spawn(parsed.command, parsed.args, parsed.options);\n\n // Hook into child process \"exit\" event to emit an error if the command\n // does not exists, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n enoent.hookChildProcess(spawned, parsed);\n\n return spawned;\n}\n\nfunction spawnSync(command, args, options) {\n // Parse the arguments\n const parsed = parse(command, args, options);\n\n // Spawn the child process\n const result = cp.spawnSync(parsed.command, parsed.args, parsed.options);\n\n // Analyze if the command does not exist, see: https://github.com/IndigoUnited/node-cross-spawn/issues/16\n result.error = result.error || enoent.verifyENOENTSync(result.status, parsed);\n\n return result;\n}\n\nmodule.exports = spawn;\nmodule.exports.spawn = spawn;\nmodule.exports.sync = spawnSync;\n\nmodule.exports._parse = parse;\nmodule.exports._enoent = enoent;\n","import { JSONRPCMessageSchema } from \"../types.js\";\n/**\n * Buffers a continuous stdio stream into discrete JSON-RPC messages.\n */\nexport class ReadBuffer {\n append(chunk) {\n this._buffer = this._buffer ? Buffer.concat([this._buffer, chunk]) : chunk;\n }\n readMessage() {\n if (!this._buffer) {\n return null;\n }\n const index = this._buffer.indexOf(\"\\n\");\n if (index === -1) {\n return null;\n }\n const line = this._buffer.toString(\"utf8\", 0, index).replace(/\\r$/, '');\n this._buffer = this._buffer.subarray(index + 1);\n return deserializeMessage(line);\n }\n clear() {\n this._buffer = undefined;\n }\n}\nexport function deserializeMessage(line) {\n return JSONRPCMessageSchema.parse(JSON.parse(line));\n}\nexport function serializeMessage(message) {\n return JSON.stringify(message) + \"\\n\";\n}\n//# sourceMappingURL=stdio.js.map","import spawn from \"cross-spawn\";\nimport process from \"node:process\";\nimport { PassThrough } from \"node:stream\";\nimport { ReadBuffer, serializeMessage } from \"../shared/stdio.js\";\n/**\n * Environment variables to inherit by default, if an environment is not explicitly given.\n */\nexport const DEFAULT_INHERITED_ENV_VARS = process.platform === \"win32\"\n ? [\n \"APPDATA\",\n \"HOMEDRIVE\",\n \"HOMEPATH\",\n \"LOCALAPPDATA\",\n \"PATH\",\n \"PROCESSOR_ARCHITECTURE\",\n \"SYSTEMDRIVE\",\n \"SYSTEMROOT\",\n \"TEMP\",\n \"USERNAME\",\n \"USERPROFILE\",\n ]\n : /* list inspired by the default env inheritance of sudo */\n [\"HOME\", \"LOGNAME\", \"PATH\", \"SHELL\", \"TERM\", \"USER\"];\n/**\n * Returns a default environment object including only environment variables deemed safe to inherit.\n */\nexport function getDefaultEnvironment() {\n const env = {};\n for (const key of DEFAULT_INHERITED_ENV_VARS) {\n const value = process.env[key];\n if (value === undefined) {\n continue;\n }\n if (value.startsWith(\"()\")) {\n // Skip functions, which are a security risk.\n continue;\n }\n env[key] = value;\n }\n return env;\n}\n/**\n * Client transport for stdio: this will connect to a server by spawning a process and communicating with it over stdin/stdout.\n *\n * This transport is only available in Node.js environments.\n */\nexport class StdioClientTransport {\n constructor(server) {\n this._abortController = new AbortController();\n this._readBuffer = new ReadBuffer();\n this._stderrStream = null;\n this._serverParams = server;\n if (server.stderr === \"pipe\" || server.stderr === \"overlapped\") {\n this._stderrStream = new PassThrough();\n }\n }\n /**\n * Starts the server process and prepares to communicate with it.\n */\n async start() {\n if (this._process) {\n throw new Error(\"StdioClientTransport already started! If using Client class, note that connect() calls start() automatically.\");\n }\n return new Promise((resolve, reject) => {\n var _a, _b, _c, _d, _e, _f;\n this._process = spawn(this._serverParams.command, (_a = this._serverParams.args) !== null && _a !== void 0 ? _a : [], {\n env: (_b = this._serverParams.env) !== null && _b !== void 0 ? _b : getDefaultEnvironment(),\n stdio: [\"pipe\", \"pipe\", (_c = this._serverParams.stderr) !== null && _c !== void 0 ? _c : \"inherit\"],\n shell: false,\n signal: this._abortController.signal,\n windowsHide: process.platform === \"win32\" && isElectron(),\n cwd: this._serverParams.cwd,\n });\n this._process.on(\"error\", (error) => {\n var _a, _b;\n if (error.name === \"AbortError\") {\n // Expected when close() is called.\n (_a = this.onclose) === null || _a === void 0 ? void 0 : _a.call(this);\n return;\n }\n reject(error);\n (_b = this.onerror) === null || _b === void 0 ? void 0 : _b.call(this, error);\n });\n this._process.on(\"spawn\", () => {\n resolve();\n });\n this._process.on(\"close\", (_code) => {\n var _a;\n this._process = undefined;\n (_a = this.onclose) === null || _a === void 0 ? void 0 : _a.call(this);\n });\n (_d = this._process.stdin) === null || _d === void 0 ? void 0 : _d.on(\"error\", (error) => {\n var _a;\n (_a = this.onerror) === null || _a === void 0 ? void 0 : _a.call(this, error);\n });\n (_e = this._process.stdout) === null || _e === void 0 ? void 0 : _e.on(\"data\", (chunk) => {\n this._readBuffer.append(chunk);\n this.processReadBuffer();\n });\n (_f = this._process.stdout) === null || _f === void 0 ? void 0 : _f.on(\"error\", (error) => {\n var _a;\n (_a = this.onerror) === null || _a === void 0 ? void 0 : _a.call(this, error);\n });\n if (this._stderrStream && this._process.stderr) {\n this._process.stderr.pipe(this._stderrStream);\n }\n });\n }\n /**\n * The stderr stream of the child process, if `StdioServerParameters.stderr` was set to \"pipe\" or \"overlapped\".\n *\n * If stderr piping was requested, a PassThrough stream is returned _immediately_, allowing callers to\n * attach listeners before the start method is invoked. This prevents loss of any early\n * error output emitted by the child process.\n */\n get stderr() {\n var _a, _b;\n if (this._stderrStream) {\n return this._stderrStream;\n }\n return (_b = (_a = this._process) === null || _a === void 0 ? void 0 : _a.stderr) !== null && _b !== void 0 ? _b : null;\n }\n processReadBuffer() {\n var _a, _b;\n while (true) {\n try {\n const message = this._readBuffer.readMessage();\n if (message === null) {\n break;\n }\n (_a = this.onmessage) === null || _a === void 0 ? void 0 : _a.call(this, message);\n }\n catch (error) {\n (_b = this.onerror) === null || _b === void 0 ? void 0 : _b.call(this, error);\n }\n }\n }\n async close() {\n this._abortController.abort();\n this._process = undefined;\n this._readBuffer.clear();\n }\n send(message) {\n return new Promise((resolve) => {\n var _a;\n if (!((_a = this._process) === null || _a === void 0 ? void 0 : _a.stdin)) {\n throw new Error(\"Not connected\");\n }\n const json = serializeMessage(message);\n if (this._process.stdin.write(json)) {\n resolve();\n }\n else {\n this._process.stdin.once(\"drain\", resolve);\n }\n });\n }\n}\nfunction isElectron() {\n return \"type\" in process;\n}\n//# sourceMappingURL=stdio.js.map"],"names":["windows","isexe","sync","fs","require$$0","checkPathExt","path","options","pathext","p","checkStat","stat","cb","er","mode","checkMode","mod","uid","gid","myUid","myGid","u","g","o","ug","ret","core","global","require$$1","require$$2","isexe_1","resolve","reject","is","isWindows","COLON","getNotFoundError","cmd","getPathInfo","opt","colon","pathEnv","pathExtExe","pathExt","which","found","step","i","ppRaw","pathPart","pCmd","subStep","ii","ext","res","whichSync","j","cur","which_1","pathKey","environment","key","pathKeyModule","getPathKey","resolveCommandAttempt","parsed","withoutPathExt","env","cwd","hasCustomCwd","shouldSwitchCwd","resolved","resolveCommand","resolveCommand_1","metaCharsRegExp","escapeCommand","arg","escapeArgument","doubleEscapeMetaChars","_escape","shebangRegex","shebangCommand","string","match","argument","binary","readShebang","command","buffer","fd","readShebang_1","escape","require$$3","isWin","isExecutableRegExp","isCmdShimRegExp","detectShebang","shebang","parseNonShell","commandFile","needsShell","needsDoubleEscapeMetaChars","shellCommand","parse","args","parse_1","notFoundError","original","syscall","hookChildProcess","cp","originalEmit","name","arg1","err","verifyENOENT","status","verifyENOENTSync","enoent","spawn","spawned","spawnSync","result","crossSpawnModule","ReadBuffer","chunk","index","line","deserializeMessage","JSONRPCMessageSchema","serializeMessage","message","DEFAULT_INHERITED_ENV_VARS","process","getDefaultEnvironment","value","StdioClientTransport","server","PassThrough","_a","_b","_c","_d","_e","_f","isElectron","error","_code","json"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14]}
|
package/dist/storybook.js
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#!/usr/bin/env node
|
2
|
-
import { av as r, aA as a, an as c, aB as d, at as f, au as x, af as b, as as I } from "./console-
|
2
|
+
import { av as r, aA as a, an as c, aB as d, at as f, au as x, af as b, as as I } from "./console-DZmALLuA.js";
|
3
3
|
import { stdout as s } from "node:process";
|
4
4
|
import { parseArgs as w } from "node:util";
|
5
5
|
function D() {
|
@@ -3,7 +3,7 @@ import E from "node:crypto";
|
|
3
3
|
import d, { writeFile as D } from "node:fs/promises";
|
4
4
|
import g from "node:os";
|
5
5
|
import a from "node:path";
|
6
|
-
import { C as p, p as C, aC as F, aL as b, aM as _ } from "./console-
|
6
|
+
import { C as p, p as C, aC as F, aL as b, aM as _ } from "./console-DZmALLuA.js";
|
7
7
|
class v {
|
8
8
|
MAX_TRACKED_EDITS = 50;
|
9
9
|
editQueue = [];
|
@@ -99,4 +99,4 @@ export {
|
|
99
99
|
A as nodeUndoEditTool,
|
100
100
|
N as recordEdit
|
101
101
|
};
|
102
|
-
//# sourceMappingURL=undo_edit.node-
|
102
|
+
//# sourceMappingURL=undo_edit.node-C3I02TEE.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"undo_edit.node-DDFebFdr.js","sources":["../../core/src/tools/builtin/filesystem/undo_edit.util.ts","../../core/src/tools/builtin/filesystem/undo_edit.node.ts"],"sourcesContent":["import type { UndoEditToolDef } from './undo_edit.common'\nimport logger from '../../../common/logger'\n\nexport abstract class EditHistoryManager<HistoryID> {\n\tprotected abstract storeEdit(\n\t\tfilePath: string,\n\t\toldContent: string,\n\t\tnewContent: string,\n\t): Promise<HistoryID>\n\tprotected abstract fetchEdit(\n\t\tfilePath: string,\n\t): Promise<{ id: HistoryID; oldContent: string; newContent: string } | undefined>\n\tprotected abstract deleteEdit(id: HistoryID): Promise<void>\n\n\tprivate readonly MAX_TRACKED_EDITS = 50\n\tprivate readonly editQueue: HistoryID[] = []\n\n\tpublic async recordEdit(\n\t\tfilePath: string,\n\t\toldContent: string,\n\t\tnewContent: string,\n\t): Promise<void> {\n\t\ttry {\n\t\t\tconst editKey = await this.storeEdit(filePath, oldContent, newContent)\n\n\t\t\t// Update the FIFO queue\n\t\t\t// Remove if already in queue (to add it to the end)\n\t\t\tconst existingIndex = this.editQueue.indexOf(editKey)\n\t\t\tif (existingIndex >= 0) {\n\t\t\t\tthis.editQueue.splice(existingIndex, 1)\n\t\t\t}\n\n\t\t\t// Add to end of queue (most recent)\n\t\t\tthis.editQueue.push(editKey)\n\n\t\t\t// If we exceed the limit, remove the oldest edit\n\t\t\tif (this.editQueue.length > this.MAX_TRACKED_EDITS) {\n\t\t\t\tconst oldestKey = this.editQueue.shift()\n\t\t\t\tif (oldestKey) {\n\t\t\t\t\tthis.deleteEdit(oldestKey)\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tlogger.error('Failed to record edit:', error)\n\t\t}\n\t}\n\n\t// Function to get and remove the most recent edit for a file\n\tpublic async getLastEdit(\n\t\tfilePath: string,\n\t): Promise<{ oldContent: string; newContent: string } | undefined> {\n\t\ttry {\n\t\t\t// Get the edit data from memory\n\t\t\tconst editData = await this.fetchEdit(filePath)\n\t\t\tif (!editData) {\n\t\t\t\treturn undefined\n\t\t\t}\n\n\t\t\t// Remove from queue and map\n\t\t\tconst queueIndex = this.editQueue.indexOf(editData.id)\n\t\t\tif (queueIndex >= 0) {\n\t\t\t\tthis.editQueue.splice(queueIndex, 1)\n\t\t\t}\n\t\t\tthis.deleteEdit(editData.id)\n\n\t\t\treturn { oldContent: editData.oldContent, newContent: editData.newContent }\n\t\t} catch (error) {\n\t\t\tlogger.error('Failed to get last edit:', error)\n\t\t\treturn undefined\n\t\t}\n\t}\n}\n\nexport function checkUndoEditArgs(\n\targs: UndoEditToolDef['args'],\n): asserts args is UndoEditToolDef['args'] {\n\tif (typeof args !== 'object' || args === null) {\n\t\tthrow new Error('args must be an object. received instead: `' + JSON.stringify(args) + '`')\n\t}\n\tif (typeof args.path !== 'string') {\n\t\tthrow new Error(\n\t\t\t'path must be a string. received instead: `' + JSON.stringify(args.path) + '`',\n\t\t)\n\t}\n}\n","import { promiseFactoryToObservable } from '@sourcegraph/observable'\nimport crypto from 'node:crypto'\nimport fs, { writeFile } from 'node:fs/promises'\nimport os from 'node:os'\nimport path from 'path'\nimport logger from '../../../common/logger'\nimport { checkDirURIIsFile } from '../node-helpers'\nimport { createUnifiedDiff, formatDiffAsMarkdown } from './edit_file.common'\nimport type { undoEditToolReg } from './undo_edit.common'\nimport { EditHistoryManager, checkUndoEditArgs } from './undo_edit.util'\n\nexport const nodeUndoEditTool: NonNullable<(typeof undoEditToolReg)['fn']> = (\n\t{ args },\n\t{ dir, threadID, trackFileChange },\n) => {\n\treturn promiseFactoryToObservable(async (signal) => {\n\t\tcheckDirURIIsFile(dir)\n\t\tcheckUndoEditArgs(args)\n\n\t\tconst filePath = path.resolve(dir.fsPath, args.path)\n\n\t\t// Get the last edit from history (now async)\n\t\tconst lastEdit = await getLastEdit(args.path)\n\t\tif (!lastEdit) {\n\t\t\treturn {\n\t\t\t\tstatus: 'error' as const,\n\t\t\t\tprogress: {},\n\t\t\t\terror: {\n\t\t\t\t\tmessage: `No edit history found for file '${args.path}'.`,\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\n\t\tconst diff = createUnifiedDiff(lastEdit.newContent, lastEdit.oldContent, args.path)\n\t\tconst formattedDiff = formatDiffAsMarkdown(diff)\n\n\t\tawait trackFileChange(filePath, async (path) => {\n\t\t\tawait writeFile(path, lastEdit.oldContent, {\n\t\t\t\tencoding: 'utf-8',\n\t\t\t\tsignal,\n\t\t\t})\n\t\t})\n\n\t\treturn { status: 'done', progress: {}, result: formattedDiff }\n\t})\n}\n\ntype HistoryID = string\n\nclass NodeEditHistoryManager extends EditHistoryManager<HistoryID> {\n\tasync storeEdit(filePath: string, oldContent: string, newContent: string): Promise<HistoryID> {\n\t\tconst hashedFilename = getHashedFilename(filePath)\n\t\tconst tempDir = await getTempDir()\n\t\tconst editFile = path.join(tempDir, hashedFilename)\n\n\t\tconst editData = { filePath, oldContent, newContent }\n\t\tawait fs.writeFile(editFile, JSON.stringify(editData), 'utf-8')\n\n\t\treturn hashedFilename as HistoryID\n\t}\n\tasync fetchEdit(\n\t\tfilePath: string,\n\t): Promise<{ id: HistoryID; oldContent: string; newContent: string } | undefined> {\n\t\tconst hashedFilename = getHashedFilename(filePath)\n\t\tconst tempDir = await getTempDir()\n\t\tconst editFile = path.join(tempDir, hashedFilename)\n\n\t\ttry {\n\t\t\tawait fs.access(editFile)\n\t\t} catch {\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst editDataStr = await fs.readFile(editFile, 'utf-8')\n\t\tconst editData = JSON.parse(editDataStr) as {\n\t\t\tfilePath: string\n\t\t\toldContent: string\n\t\t\tnewContent: string\n\t\t}\n\t\treturn {\n\t\t\tid: hashedFilename,\n\t\t\toldContent: editData.oldContent,\n\t\t\tnewContent: editData.newContent,\n\t\t}\n\t}\n\tasync deleteEdit(id: HistoryID): Promise<void> {\n\t\tconst tempDir = await getTempDir()\n\t\tconst editFile = path.join(tempDir, id)\n\t\tawait fs.unlink(editFile).catch(() => {})\n\t}\n}\n\nconst nodeEditHistoryManager = new NodeEditHistoryManager()\n\nexport const recordEdit = nodeEditHistoryManager.recordEdit.bind(nodeEditHistoryManager)\nexport const getLastEdit = nodeEditHistoryManager.getLastEdit.bind(nodeEditHistoryManager)\n\nlet tempDir = ''\nlet tempDirPromise: Promise<string> | null = null\n\nasync function getTempDir(): Promise<string> {\n\tif (tempDir) return tempDir\n\tif (!tempDirPromise) {\n\t\ttempDirPromise = fs\n\t\t\t.mkdtemp(path.join(os.tmpdir(), 'amp-edits-'))\n\t\t\t.then((dir) => {\n\t\t\t\ttempDir = dir\n\t\t\t\treturn dir\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tlogger.error('Failed to create edit history directory:', error)\n\t\t\t\tthrow error\n\t\t\t})\n\t}\n\treturn tempDirPromise\n}\n\nfunction getHashedFilename(filePath: string): string {\n\tconst hash = crypto.createHash('sha256').update(filePath).digest('hex').slice(0, 16)\n\treturn `${hash}-${path.basename(filePath)}`\n}\n"],"names":["EditHistoryManager","filePath","oldContent","newContent","editKey","existingIndex","oldestKey","error","logger","editData","queueIndex","checkUndoEditArgs","args","nodeUndoEditTool","dir","threadID","trackFileChange","promiseFactoryToObservable","signal","checkDirURIIsFile","path","lastEdit","getLastEdit","diff","createUnifiedDiff","formattedDiff","formatDiffAsMarkdown","writeFile","NodeEditHistoryManager","hashedFilename","getHashedFilename","tempDir","getTempDir","editFile","fs","editDataStr","id","nodeEditHistoryManager","recordEdit","tempDirPromise","os","crypto"],"mappings":";;;;;;AAGO,MAAeA,EAA8B;AAAA,EAWlC,oBAAoB;AAAA,EACpB,YAAyB,CAAC;AAAA,EAE3C,MAAa,WACZC,GACAC,GACAC,GACgB;AACZ,QAAA;AACH,YAAMC,IAAU,MAAM,KAAK,UAAUH,GAAUC,GAAYC,CAAU,GAI/DE,IAAgB,KAAK,UAAU,QAAQD,CAAO;AASpD,UARIC,KAAiB,KACf,KAAA,UAAU,OAAOA,GAAe,CAAC,GAIlC,KAAA,UAAU,KAAKD,CAAO,GAGvB,KAAK,UAAU,SAAS,KAAK,mBAAmB;AAC7C,cAAAE,IAAY,KAAK,UAAU,MAAM;AACvC,QAAIA,KACH,KAAK,WAAWA,CAAS;AAAA,MAC1B;AAAA,aAEOC,GAAO;AACR,MAAAC,EAAA,MAAM,0BAA0BD,CAAK;AAAA,IAAA;AAAA,EAC7C;AAAA;AAAA,EAID,MAAa,YACZN,GACkE;AAC9D,QAAA;AAEH,YAAMQ,IAAW,MAAM,KAAK,UAAUR,CAAQ;AAC9C,UAAI,CAACQ;AACG;AAIR,YAAMC,IAAa,KAAK,UAAU,QAAQD,EAAS,EAAE;AACrD,aAAIC,KAAc,KACZ,KAAA,UAAU,OAAOA,GAAY,CAAC,GAE/B,KAAA,WAAWD,EAAS,EAAE,GAEpB,EAAE,YAAYA,EAAS,YAAY,YAAYA,EAAS,WAAW;AAAA,aAClEF,GAAO;AACR,MAAAC,EAAA,MAAM,4BAA4BD,CAAK;AACvC;AAAA,IAAA;AAAA,EACR;AAEF;AAEO,SAASI,EACfC,GAC0C;AAC1C,MAAI,OAAOA,KAAS,YAAYA,MAAS;AACxC,UAAM,IAAI,MAAM,gDAAgD,KAAK,UAAUA,CAAI,IAAI,GAAG;AAEvF,MAAA,OAAOA,EAAK,QAAS;AACxB,UAAM,IAAI;AAAA,MACT,+CAA+C,KAAK,UAAUA,EAAK,IAAI,IAAI;AAAA,IAC5E;AAEF;ACzEa,MAAAC,IAAgE,CAC5E,EAAE,MAAAD,KACF,EAAE,KAAAE,GAAK,UAAAC,GAAU,iBAAAC,QAEVC,EAA2B,OAAOC,MAAW;AACnD,EAAAC,EAAkBL,CAAG,GACrBH,EAAkBC,CAAI;AAEtB,QAAMX,IAAWmB,EAAK,QAAQN,EAAI,QAAQF,EAAK,IAAI,GAG7CS,IAAW,MAAMC,EAAYV,EAAK,IAAI;AAC5C,MAAI,CAACS;AACG,WAAA;AAAA,MACN,QAAQ;AAAA,MACR,UAAU,CAAC;AAAA,MACX,OAAO;AAAA,QACN,SAAS,mCAAmCT,EAAK,IAAI;AAAA,MAAA;AAAA,IAEvD;AAGD,QAAMW,IAAOC,EAAkBH,EAAS,YAAYA,EAAS,YAAYT,EAAK,IAAI,GAC5Ea,IAAgBC,EAAqBH,CAAI;AAEzC,eAAAP,EAAgBf,GAAU,OAAOmB,MAAS;AACzC,UAAAO,EAAUP,GAAMC,EAAS,YAAY;AAAA,MAC1C,UAAU;AAAA,MACV,QAAAH;AAAA,IAAA,CACA;AAAA,EAAA,CACD,GAEM,EAAE,QAAQ,QAAQ,UAAU,CAAC,GAAG,QAAQO,EAAc;AAAA,CAC7D;AAKF,MAAMG,UAA+B5B,EAA8B;AAAA,EAClE,MAAM,UAAUC,GAAkBC,GAAoBC,GAAwC;AACvF,UAAA0B,IAAiBC,EAAkB7B,CAAQ,GAC3C8B,IAAU,MAAMC,EAAW,GAC3BC,IAAWb,EAAK,KAAKW,GAASF,CAAc,GAE5CpB,IAAW,EAAE,UAAAR,GAAU,YAAAC,GAAY,YAAAC,EAAW;AACpD,iBAAM+B,EAAG,UAAUD,GAAU,KAAK,UAAUxB,CAAQ,GAAG,OAAO,GAEvDoB;AAAA,EAAA;AAAA,EAER,MAAM,UACL5B,GACiF;AAC3E,UAAA4B,IAAiBC,EAAkB7B,CAAQ,GAC3C8B,IAAU,MAAMC,EAAW,GAC3BC,IAAWb,EAAK,KAAKW,GAASF,CAAc;AAE9C,QAAA;AACG,YAAAK,EAAG,OAAOD,CAAQ;AAAA,IAAA,QACjB;AACA;AAAA,IAAA;AAGR,UAAME,IAAc,MAAMD,EAAG,SAASD,GAAU,OAAO,GACjDxB,IAAW,KAAK,MAAM0B,CAAW;AAKhC,WAAA;AAAA,MACN,IAAIN;AAAA,MACJ,YAAYpB,EAAS;AAAA,MACrB,YAAYA,EAAS;AAAA,IACtB;AAAA,EAAA;AAAA,EAED,MAAM,WAAW2B,GAA8B;AACxCL,UAAAA,IAAU,MAAMC,EAAW,GAC3BC,IAAWb,EAAK,KAAKW,GAASK,CAAE;AACtC,UAAMF,EAAG,OAAOD,CAAQ,EAAE,MAAM,MAAM;AAAA,IAAA,CAAE;AAAA,EAAA;AAE1C;AAEA,MAAMI,IAAyB,IAAIT,EAAuB,GAE7CU,IAAaD,EAAuB,WAAW,KAAKA,CAAsB,GAC1Ef,IAAce,EAAuB,YAAY,KAAKA,CAAsB;AAEzF,IAAIN,IAAU,IACVQ,IAAyC;AAE7C,eAAeP,IAA8B;AAC5C,SAAID,MACCQ,MACJA,IAAiBL,EACf,QAAQd,EAAK,KAAKoB,EAAG,OAAA,GAAU,YAAY,CAAC,EAC5C,KAAK,CAAC1B,OACIiB,IAAAjB,GACHA,EACP,EACA,MAAM,CAACP,MAAU;AACV,UAAAC,EAAA,MAAM,4CAA4CD,CAAK,GACxDA;AAAA,EAAA,CACN,IAEIgC;AACR;AAEA,SAAST,EAAkB7B,GAA0B;AAEpD,SAAO,GADMwC,EAAO,WAAW,QAAQ,EAAE,OAAOxC,CAAQ,EAAE,OAAO,KAAK,EAAE,MAAM,GAAG,EAAE,CACrE,IAAImB,EAAK,SAASnB,CAAQ,CAAC;AAC1C;"}
|
1
|
+
{"version":3,"file":"undo_edit.node-C3I02TEE.js","sources":["../../core/src/tools/builtin/filesystem/undo_edit.util.ts","../../core/src/tools/builtin/filesystem/undo_edit.node.ts"],"sourcesContent":["import type { UndoEditToolDef } from './undo_edit.common'\nimport logger from '../../../common/logger'\n\nexport abstract class EditHistoryManager<HistoryID> {\n\tprotected abstract storeEdit(\n\t\tfilePath: string,\n\t\toldContent: string,\n\t\tnewContent: string,\n\t): Promise<HistoryID>\n\tprotected abstract fetchEdit(\n\t\tfilePath: string,\n\t): Promise<{ id: HistoryID; oldContent: string; newContent: string } | undefined>\n\tprotected abstract deleteEdit(id: HistoryID): Promise<void>\n\n\tprivate readonly MAX_TRACKED_EDITS = 50\n\tprivate readonly editQueue: HistoryID[] = []\n\n\tpublic async recordEdit(\n\t\tfilePath: string,\n\t\toldContent: string,\n\t\tnewContent: string,\n\t): Promise<void> {\n\t\ttry {\n\t\t\tconst editKey = await this.storeEdit(filePath, oldContent, newContent)\n\n\t\t\t// Update the FIFO queue\n\t\t\t// Remove if already in queue (to add it to the end)\n\t\t\tconst existingIndex = this.editQueue.indexOf(editKey)\n\t\t\tif (existingIndex >= 0) {\n\t\t\t\tthis.editQueue.splice(existingIndex, 1)\n\t\t\t}\n\n\t\t\t// Add to end of queue (most recent)\n\t\t\tthis.editQueue.push(editKey)\n\n\t\t\t// If we exceed the limit, remove the oldest edit\n\t\t\tif (this.editQueue.length > this.MAX_TRACKED_EDITS) {\n\t\t\t\tconst oldestKey = this.editQueue.shift()\n\t\t\t\tif (oldestKey) {\n\t\t\t\t\tthis.deleteEdit(oldestKey)\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tlogger.error('Failed to record edit:', error)\n\t\t}\n\t}\n\n\t// Function to get and remove the most recent edit for a file\n\tpublic async getLastEdit(\n\t\tfilePath: string,\n\t): Promise<{ oldContent: string; newContent: string } | undefined> {\n\t\ttry {\n\t\t\t// Get the edit data from memory\n\t\t\tconst editData = await this.fetchEdit(filePath)\n\t\t\tif (!editData) {\n\t\t\t\treturn undefined\n\t\t\t}\n\n\t\t\t// Remove from queue and map\n\t\t\tconst queueIndex = this.editQueue.indexOf(editData.id)\n\t\t\tif (queueIndex >= 0) {\n\t\t\t\tthis.editQueue.splice(queueIndex, 1)\n\t\t\t}\n\t\t\tthis.deleteEdit(editData.id)\n\n\t\t\treturn { oldContent: editData.oldContent, newContent: editData.newContent }\n\t\t} catch (error) {\n\t\t\tlogger.error('Failed to get last edit:', error)\n\t\t\treturn undefined\n\t\t}\n\t}\n}\n\nexport function checkUndoEditArgs(\n\targs: UndoEditToolDef['args'],\n): asserts args is UndoEditToolDef['args'] {\n\tif (typeof args !== 'object' || args === null) {\n\t\tthrow new Error('args must be an object. received instead: `' + JSON.stringify(args) + '`')\n\t}\n\tif (typeof args.path !== 'string') {\n\t\tthrow new Error(\n\t\t\t'path must be a string. received instead: `' + JSON.stringify(args.path) + '`',\n\t\t)\n\t}\n}\n","import { promiseFactoryToObservable } from '@sourcegraph/observable'\nimport crypto from 'node:crypto'\nimport fs, { writeFile } from 'node:fs/promises'\nimport os from 'node:os'\nimport path from 'path'\nimport logger from '../../../common/logger'\nimport { checkDirURIIsFile } from '../node-helpers'\nimport { createUnifiedDiff, formatDiffAsMarkdown } from './edit_file.common'\nimport type { undoEditToolReg } from './undo_edit.common'\nimport { EditHistoryManager, checkUndoEditArgs } from './undo_edit.util'\n\nexport const nodeUndoEditTool: NonNullable<(typeof undoEditToolReg)['fn']> = (\n\t{ args },\n\t{ dir, threadID, trackFileChange },\n) => {\n\treturn promiseFactoryToObservable(async (signal) => {\n\t\tcheckDirURIIsFile(dir)\n\t\tcheckUndoEditArgs(args)\n\n\t\tconst filePath = path.resolve(dir.fsPath, args.path)\n\n\t\t// Get the last edit from history (now async)\n\t\tconst lastEdit = await getLastEdit(args.path)\n\t\tif (!lastEdit) {\n\t\t\treturn {\n\t\t\t\tstatus: 'error' as const,\n\t\t\t\tprogress: {},\n\t\t\t\terror: {\n\t\t\t\t\tmessage: `No edit history found for file '${args.path}'.`,\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\n\t\tconst diff = createUnifiedDiff(lastEdit.newContent, lastEdit.oldContent, args.path)\n\t\tconst formattedDiff = formatDiffAsMarkdown(diff)\n\n\t\tawait trackFileChange(filePath, async (path) => {\n\t\t\tawait writeFile(path, lastEdit.oldContent, {\n\t\t\t\tencoding: 'utf-8',\n\t\t\t\tsignal,\n\t\t\t})\n\t\t})\n\n\t\treturn { status: 'done', progress: {}, result: formattedDiff }\n\t})\n}\n\ntype HistoryID = string\n\nclass NodeEditHistoryManager extends EditHistoryManager<HistoryID> {\n\tasync storeEdit(filePath: string, oldContent: string, newContent: string): Promise<HistoryID> {\n\t\tconst hashedFilename = getHashedFilename(filePath)\n\t\tconst tempDir = await getTempDir()\n\t\tconst editFile = path.join(tempDir, hashedFilename)\n\n\t\tconst editData = { filePath, oldContent, newContent }\n\t\tawait fs.writeFile(editFile, JSON.stringify(editData), 'utf-8')\n\n\t\treturn hashedFilename as HistoryID\n\t}\n\tasync fetchEdit(\n\t\tfilePath: string,\n\t): Promise<{ id: HistoryID; oldContent: string; newContent: string } | undefined> {\n\t\tconst hashedFilename = getHashedFilename(filePath)\n\t\tconst tempDir = await getTempDir()\n\t\tconst editFile = path.join(tempDir, hashedFilename)\n\n\t\ttry {\n\t\t\tawait fs.access(editFile)\n\t\t} catch {\n\t\t\treturn undefined\n\t\t}\n\n\t\tconst editDataStr = await fs.readFile(editFile, 'utf-8')\n\t\tconst editData = JSON.parse(editDataStr) as {\n\t\t\tfilePath: string\n\t\t\toldContent: string\n\t\t\tnewContent: string\n\t\t}\n\t\treturn {\n\t\t\tid: hashedFilename,\n\t\t\toldContent: editData.oldContent,\n\t\t\tnewContent: editData.newContent,\n\t\t}\n\t}\n\tasync deleteEdit(id: HistoryID): Promise<void> {\n\t\tconst tempDir = await getTempDir()\n\t\tconst editFile = path.join(tempDir, id)\n\t\tawait fs.unlink(editFile).catch(() => {})\n\t}\n}\n\nconst nodeEditHistoryManager = new NodeEditHistoryManager()\n\nexport const recordEdit = nodeEditHistoryManager.recordEdit.bind(nodeEditHistoryManager)\nexport const getLastEdit = nodeEditHistoryManager.getLastEdit.bind(nodeEditHistoryManager)\n\nlet tempDir = ''\nlet tempDirPromise: Promise<string> | null = null\n\nasync function getTempDir(): Promise<string> {\n\tif (tempDir) return tempDir\n\tif (!tempDirPromise) {\n\t\ttempDirPromise = fs\n\t\t\t.mkdtemp(path.join(os.tmpdir(), 'amp-edits-'))\n\t\t\t.then((dir) => {\n\t\t\t\ttempDir = dir\n\t\t\t\treturn dir\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tlogger.error('Failed to create edit history directory:', error)\n\t\t\t\tthrow error\n\t\t\t})\n\t}\n\treturn tempDirPromise\n}\n\nfunction getHashedFilename(filePath: string): string {\n\tconst hash = crypto.createHash('sha256').update(filePath).digest('hex').slice(0, 16)\n\treturn `${hash}-${path.basename(filePath)}`\n}\n"],"names":["EditHistoryManager","filePath","oldContent","newContent","editKey","existingIndex","oldestKey","error","logger","editData","queueIndex","checkUndoEditArgs","args","nodeUndoEditTool","dir","threadID","trackFileChange","promiseFactoryToObservable","signal","checkDirURIIsFile","path","lastEdit","getLastEdit","diff","createUnifiedDiff","formattedDiff","formatDiffAsMarkdown","writeFile","NodeEditHistoryManager","hashedFilename","getHashedFilename","tempDir","getTempDir","editFile","fs","editDataStr","id","nodeEditHistoryManager","recordEdit","tempDirPromise","os","crypto"],"mappings":"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"}
|
package/package.json
CHANGED