@morphllm/morphmcp 0.8.139 → 0.8.141

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/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- const a0_0x5a733b=a0_0x5811;(function(_0x24e120,_0x47f404){const _0x1a42a9=a0_0x5811,_0xd4cd4=_0x24e120();while(!![]){try{const _0x3ee884=parseInt(_0x1a42a9(0x12f))/0x1*(parseInt(_0x1a42a9(0x198))/0x2)+-parseInt(_0x1a42a9(0xc4))/0x3+-parseInt(_0x1a42a9(0xaf))/0x4+parseInt(_0x1a42a9(0xcc))/0x5+-parseInt(_0x1a42a9(0x176))/0x6*(parseInt(_0x1a42a9(0x18a))/0x7)+-parseInt(_0x1a42a9(0xb5))/0x8*(parseInt(_0x1a42a9(0x118))/0x9)+parseInt(_0x1a42a9(0x15c))/0xa;if(_0x3ee884===_0x47f404)break;else _0xd4cd4['push'](_0xd4cd4['shift']());}catch(_0x2b4396){_0xd4cd4['push'](_0xd4cd4['shift']());}}}(a0_0x4564,0xad070));import{Server}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import{CallToolRequestSchema,ListToolsRequestSchema,RootsListChangedNotificationSchema}from'@modelcontextprotocol/sdk/types.js';import a0_0x5f57e8 from'fs/promises';import a0_0x5af550 from'path';import a0_0x3c37f9 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import a0_0x2a77f6 from'axios';function fixPathRepetition(_0x175b0c){const _0x1b8e91=a0_0x5811,_0xbb78dd=_0x175b0c[_0x1b8e91(0xf5)](a0_0x5af550[_0x1b8e91(0xe1)])['filter'](Boolean);if(_0xbb78dd[_0x1b8e91(0x17f)]<0x2)return null;for(let _0xb65935=Math[_0x1b8e91(0xd0)](_0xbb78dd[_0x1b8e91(0x17f)]/0x2);_0xb65935>=0x1;_0xb65935--){for(let _0x4b9e80=0x0;_0x4b9e80<=_0xbb78dd[_0x1b8e91(0x17f)]-0x2*_0xb65935;_0x4b9e80++){const _0xada82e=_0xbb78dd[_0x1b8e91(0x16e)](_0x4b9e80,_0x4b9e80+_0xb65935),_0x31c134=_0xbb78dd['slice'](_0x4b9e80+_0xb65935,_0x4b9e80+0x2*_0xb65935);if(_0xada82e[_0x1b8e91(0x18d)]((_0x182718,_0x1e6bf1)=>_0x182718===_0x31c134[_0x1e6bf1])){const _0x53c936=[..._0xbb78dd[_0x1b8e91(0x16e)](0x0,_0x4b9e80),..._0xbb78dd[_0x1b8e91(0x16e)](_0x4b9e80+_0xb65935)];return a0_0x5af550[_0x1b8e91(0xe1)]+_0x53c936[_0x1b8e91(0x153)](a0_0x5af550[_0x1b8e91(0xe1)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x297b1b=a0_0x5811;try{const _0xd6fa33=require('../package.json');return _0xd6fa33[_0x297b1b(0x194)]??'unknown';}catch(_0x525bce){return logMcpStderr(_0x297b1b(0x177),_0x525bce),_0x297b1b(0x175);}}function printHelp(){const _0x34c1ce=a0_0x5811;console['log'](_0x34c1ce(0xe7)+getPackageVersion()),console[_0x34c1ce(0x139)](_0x34c1ce(0xbe)),console[_0x34c1ce(0x139)](_0x34c1ce(0x119)),console[_0x34c1ce(0x139)](_0x34c1ce(0x126)),console['log'](_0x34c1ce(0xdd)),console[_0x34c1ce(0x139)](_0x34c1ce(0xff)),console['log']('\x0aExamples:'),console[_0x34c1ce(0x139)](_0x34c1ce(0x101)),console[_0x34c1ce(0x139)](_0x34c1ce(0x15f));}const cliArgs=process[a0_0x5a733b(0x114)]['slice'](0x2),VERSION_FLAGS=new Set([a0_0x5a733b(0x13a),'-v','-V']),HELP_FLAGS=new Set([a0_0x5a733b(0xba),'-h']);cliArgs[a0_0x5a733b(0x11d)](_0x2c2eb1=>VERSION_FLAGS['has'](_0x2c2eb1))&&(console['log'](a0_0x5a733b(0xe7)+getPackageVersion()),process[a0_0x5a733b(0x16d)](0x0));cliArgs[a0_0x5a733b(0x11d)](_0x2e6cb3=>HELP_FLAGS[a0_0x5a733b(0x10c)](_0x2e6cb3))&&(printHelp(),process[a0_0x5a733b(0x16d)](0x0));function getCliArg(_0x2c9d33){const _0x47201e=a0_0x5a733b;for(let _0x5ef14b=0x0;_0x5ef14b<cliArgs[_0x47201e(0x17f)];_0x5ef14b++){const _0x54b210=cliArgs[_0x5ef14b];if(_0x54b210[_0x47201e(0x148)]('--'+_0x2c9d33+'='))return _0x54b210[_0x47201e(0x16e)](('--'+_0x2c9d33+'=')['length']);if(_0x54b210==='--'+_0x2c9d33&&_0x5ef14b+0x1<cliArgs[_0x47201e(0x17f)])return cliArgs[_0x5ef14b+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs['length'];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x5a733b(0x10c)](arg)||HELP_FLAGS[a0_0x5a733b(0x10c)](arg))continue;if(arg[a0_0x5a733b(0x148)](a0_0x5a733b(0x115)))continue;if(arg==='--api-key'){i++;continue;}args[a0_0x5a733b(0x17b)](arg);}const WORKSPACE_ROOT=process['env'][a0_0x5a733b(0x13d)]||process[a0_0x5a733b(0xda)][a0_0x5a733b(0x10a)]||process[a0_0x5a733b(0xd9)](),ENABLE_WORKSPACE_MODE=process[a0_0x5a733b(0xda)][a0_0x5a733b(0xd2)]!==a0_0x5a733b(0x134),MORPH_API_KEY=getCliArg(a0_0x5a733b(0x105))??process[a0_0x5a733b(0xda)][a0_0x5a733b(0xb0)],MORPH_API_URL=process[a0_0x5a733b(0xda)][a0_0x5a733b(0x129)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x5a733b(0xda)]['MORPH_WARP_GREP_TIMEOUT']?parseInt(process[a0_0x5a733b(0xda)][a0_0x5a733b(0x116)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x5a733b(0x162),a0_0x5a733b(0x152),a0_0x5a733b(0xa5)]),DISABLED_TOOLS=process[a0_0x5a733b(0xda)]['DISABLED_TOOLS']?new Set(process['env'][a0_0x5a733b(0xc5)][a0_0x5a733b(0xf5)](',')[a0_0x5a733b(0xe5)](_0x2e3c00=>_0x2e3c00[a0_0x5a733b(0x166)]())[a0_0x5a733b(0xd7)](_0x1660e4=>_0x1660e4[a0_0x5a733b(0x17f)]>0x0)):new Set();function a0_0x5811(_0x57e406,_0x50653f){_0x57e406=_0x57e406-0x96;const _0x4564de=a0_0x4564();let _0x5811ff=_0x4564de[_0x57e406];return _0x5811ff;}if(DISABLED_TOOLS[a0_0x5a733b(0xf3)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x5a733b(0x10c)](tool)&&console['error'](a0_0x5a733b(0xc8)+tool+a0_0x5a733b(0xd6)+[...KNOWN_TOOL_NAMES]['join'](',\x20'));}console['error']('Disabled\x20tools:\x20'+[...DISABLED_TOOLS]['join'](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x5a733b(0x148)]('sk-')&&!MORPH_API_KEY['startsWith'](a0_0x5a733b(0x133))&&logMcpStderr(a0_0x5a733b(0xee));async function reportMorphError(_0x2ba754){const _0x2a658a=a0_0x5a733b;try{await a0_0x2a77f6[_0x2a658a(0x136)](_0x2a658a(0xe3),{..._0x2ba754,'timestamp':new Date()['toISOString'](),'source':_0x2ba754[_0x2a658a(0xfb)]||_0x2a658a(0xac),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x2ba754[_0x2a658a(0xe4)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x2a658a(0xec),'Authorization':_0x2a658a(0x12b)+MORPH_API_KEY}});}catch{}}args['length']===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x5a733b(0x10d)),logMcpStderr(a0_0x5a733b(0xd3)),logMcpStderr(a0_0x5a733b(0x108)),logMcpStderr(a0_0x5a733b(0x14a)),logMcpStderr(a0_0x5a733b(0x15b)),logMcpStderr(a0_0x5a733b(0x165)));function normalizePath(_0x2322dc){return a0_0x5af550['normalize'](_0x2322dc);}function expandHome(_0x51511f){const _0x34b746=a0_0x5a733b;if(_0x51511f[_0x34b746(0x148)]('~/')||_0x51511f==='~')return a0_0x5af550[_0x34b746(0x153)](a0_0x3c37f9['homedir'](),_0x51511f[_0x34b746(0x16e)](0x1));return _0x51511f;}let allowedDirectories=await Promise[a0_0x5a733b(0x13b)](args['map'](async _0x34652d=>{const _0x83242c=a0_0x5a733b,_0x2f3245=expandHome(_0x34652d),_0x31fc94=a0_0x5af550['resolve'](_0x2f3245);try{const _0x64f69b=await a0_0x5f57e8[_0x83242c(0x14b)](_0x31fc94);return normalizePath(_0x64f69b);}catch(_0x5c7189){return normalizePath(_0x31fc94);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x5a733b(0x17f)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x5a733b(0x17b)](workspaceDir),logMcpStderr(a0_0x5a733b(0x150)+workspaceDir+a0_0x5a733b(0xb8)));}catch(a0_0x1b7216){logMcpStderr(a0_0x5a733b(0x174)+a0_0x1b7216);}async function detectWorkspaceRoot(_0x491722){const _0x5d877e=a0_0x5a733b;let _0xd2962d=a0_0x5af550[_0x5d877e(0x180)](_0x491722);const _0x2660dc=[_0x5d877e(0x155),'.vscode',_0x5d877e(0x138),_0x5d877e(0x12e),_0x5d877e(0xab),_0x5d877e(0xbb),_0x5d877e(0x107),_0x5d877e(0xf4),_0x5d877e(0xfc)];while(_0xd2962d!==a0_0x5af550['dirname'](_0xd2962d)){for(const _0x47401d of _0x2660dc){const _0x3fc6bd=a0_0x5af550[_0x5d877e(0x153)](_0xd2962d,_0x47401d);try{return await a0_0x5f57e8[_0x5d877e(0xce)](_0x3fc6bd),normalizePath(_0xd2962d);}catch{}}_0xd2962d=a0_0x5af550[_0x5d877e(0x12d)](_0xd2962d);}return normalizePath(_0x491722);}function a0_0x4564(){const _0x456602=['lines','params','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','branch','timed\x20out','Parent\x20directory\x20does\x20not\x20exist:\x20','Benefits:\x0a','Error\x20running\x20fast\x20context\x20search:\x20','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','SubToolError','MORPH_API_URL','errors','Bearer\x20','role','dirname','Cargo.toml','108289lELlEY','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','search_string','GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','morph-','false','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','post','roots','package.json','log','--version','all','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','WORKSPACE_ROOT','safeParse','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','getClientCapabilities','timeout','error','Created\x20File','\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable','runWarpGrep_call','morph-warp-grep-v1-1111v0','linesModified','startsWith','unknown\x20error','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','realpath','grep\x20\x27','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','timings','Error:\x20','Workspace\x20mode\x20enabled:\x20Using\x20','added\x20','codebase_search','join','catch','.git','changes','stringify','assistant','grep','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','25692180PRLmoj','min','inputSchema','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo',',\x20modified\x20','Repository\x20identifier','edit_file','string','BinaryFile','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','trim','match','boolean','<file\x20path=\x22','Specific\x20commit\x20hash\x20to\x20search','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','exit','slice',',\x20removed\x20','TimeoutError','Natural-language\x20question/description\x20about\x20the\x20code\x20you\x20want\x20to\x20understand.\x20Good\x20example:\x20\x22Where\x20does\x20auth\x20get\x20handled,\x20what\x20are\x20the\x20different\x20oauth\x20methods\x20supported?\x22,\x20\x22Trace\x20all\x20code\x20that\x20relates\x20to\x20how\x20data\x20is\x20injested\x20and\x20processed\x22.\x20Bad\x20example:\x20\x22auth()\x22,\x20\x22auth\x20login\x20dashoard\x20google\x20email\x22.\x20This\x20tool\x20does\x20NOT\x20accept\x20regex,\x20keyword\x20dumps,\x20or\x20symbol-only\x20queries.','setNotificationHandler','Unknown\x20tool:\x20','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','unknown','6aEKkje','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','push','RipgrepNotAvailable','describe','data','length','resolve','UnknownError','requiresApiKey','\x20error(s)','</file>','WarpGrepError','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','Rules:\x0a','Server\x20cannot\x20operate:\x20No\x20allowed\x20directories\x20available.\x20Server\x20was\x20started\x20without\x20command-line\x20directories\x20and\x20client\x20either\x20does\x20not\x20support\x20MCP\x20roots\x20protocol\x20or\x20provided\x20empty\x20roots.\x20Please\x20either:\x201)\x20Start\x20server\x20with\x20directory\x20arguments,\x202)\x20Use\x20a\x20client\x20that\x20supports\x20MCP\x20roots\x20protocol\x20and\x20provides\x20valid\x20root\x20directories,\x20or\x203)\x20Enable\x20workspace\x20mode\x20with\x20ENABLE_WORKSPACE_MODE=true.','\x20valid\x20directories','9589244xtNRSm','\x20disabled\x20via\x20DISABLED_TOOLS','[github_codebase_search]\x20Done\x20in\x20','every','stat','utf-8','For\x20deletions:\x0a','indexOf','listRoots','terminated','version','-\x20Listed\x20directory\x20`','node_modules','Warning:\x20','16dIdEmf','object','success','Here\x20is\x20the\x20content\x20of\x20files:\x0a','\x27\x20in\x20`','etimedout','\x20-\x20','constructor','text','code_edit','readFile','read\x20','search_type','oninitialized','❌\x20Morph\x20Edit\x20Failed:\x20','Morph\x20Edit\x20Preview','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','messages','github_codebase_search','[could\x20not\x20read\x20file:\x20','File\x20read\x20error:','setRequestHandler','default','path','pyproject.toml','mcp-filesystem','FileNotFound','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','3138600EEcwlw','MORPH_API_KEY','ENOENT','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','toLowerCase','A\x20code\x20exploration\x20tool,\x20use\x20this\x20tool\x20when\x20exploring\x20an\x20unfamiliar\x20codebase,\x20and\x20you\x27re\x20unsure\x20of\x20the\x20exact\x20file\x20or\x20string\x20to\x20look\x20for.\x20This\x20tool\x20will\x20find\x20all\x20relevant\x20bits\x20of\x20code\x20given\x20a\x20natural\x20lanugage\x20description,\x20or\x20questin\x20of\x20the\x20thing\x20you\x27re\x20looking\x20for.\x20','7513472TQwXvx','0.2.0','Fatal\x20error\x20running\x20server:','\x20as\x20allowed\x20directory','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','--help','go.mod','ms:','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','warn','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','dryRun','\x20for:\x20\x22','optional','2246298rKbAnJ','DISABLED_TOOLS','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','Tool\x20\x22','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','repo_path','ReadError','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','5578410GskrIH','FileReadError','access','enum','floor','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','ENABLE_WORKSPACE_MODE','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','isArray','searchGitHub','\x22.\x20Known\x20tools:\x20','filter','read','cwd','env','completionId','\x20is\x20not\x20a\x20directory','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','.\x20Path:\x20','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','sep','name','https://morphllm.com/api/error-report','context','map','Preview\x20changes\x20without\x20applying\x20them.','@morphllm/morphmcp\x20','stack','\x20chars)','substring','WarpGrep\x20sub-tool\x20errors:\x20','application/json','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','\x0a</file>','github_url','-\x20Grepped\x20\x27','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','size','tsconfig.json','split','-\x20Read\x20file\x20`','includes','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','array','finish','source','composer.json','terminationReason','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','linesAdded','\x20\x20morph-mcp','message','Invalid\x20arguments:\x20','content','api-key','Morph\x20Edit\x20','.cursor','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','PWD','code','has','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','instruction','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','files','RipgrepError','basename','metadata','argv','--api-key=','MORPH_WARP_GREP_TIMEOUT','connect','9tetkYk','\x0aOptions:','now','morph-mcp','user','some'];a0_0x4564=function(){return _0x456602;};return a0_0x4564();}await Promise['all'](args[a0_0x5a733b(0xe5)](async _0x3de34f=>{const _0x48e998=a0_0x5a733b;try{const _0x1cfaac=await a0_0x5f57e8[_0x48e998(0x18e)](expandHome(_0x3de34f));!_0x1cfaac['isDirectory']()&&(logMcpStderr(_0x48e998(0x14f)+_0x3de34f+_0x48e998(0xdc)),process[_0x48e998(0x16d)](0x1));}catch(_0x47faf4){logMcpStderr('Error\x20accessing\x20directory\x20'+_0x3de34f+':',_0x47faf4),process[_0x48e998(0x16d)](0x1);}}));async function validatePath(_0x21dc7c){const _0x459f1e=a0_0x5a733b,_0x222aa7=expandHome(_0x21dc7c),_0xca80d5=a0_0x5af550[_0x459f1e(0x180)](_0x222aa7);try{const _0x2ece59=await a0_0x5f57e8[_0x459f1e(0x14b)](_0xca80d5);return _0x2ece59;}catch(_0x209e7e){if(_0x209e7e[_0x459f1e(0x10b)]===_0x459f1e(0xb1)){const _0x454f61=a0_0x5af550[_0x459f1e(0x12d)](_0xca80d5);try{const _0x3cf25c=await a0_0x5f57e8[_0x459f1e(0x14b)](_0x454f61);return a0_0x5af550[_0x459f1e(0x153)](_0x3cf25c,a0_0x5af550[_0x459f1e(0x112)](_0xca80d5));}catch{throw new Error(_0x459f1e(0x123)+_0x454f61);}}throw _0x209e7e;}}const MorphEditFileArgsSchema=z[a0_0x5a733b(0x199)]({'path':z['string'](),'code_edit':z[a0_0x5a733b(0x163)]()[a0_0x5a733b(0x17d)](a0_0x5a733b(0x16b)),'instruction':z[a0_0x5a733b(0x163)]()[a0_0x5a733b(0x17d)](a0_0x5a733b(0x130)),'dryRun':z[a0_0x5a733b(0x168)]()[a0_0x5a733b(0xa9)](![])[a0_0x5a733b(0x17d)](a0_0x5a733b(0xe6))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x5a733b(0x171),WarpGrepArgsSchema=z[a0_0x5a733b(0x199)]({'search_string':z['string']()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x5a733b(0x163)]()['describe']('The\x20absolute\x20path\x20of\x20the\x20folder\x20where\x20the\x20search\x20should\x20be\x20performed.\x20In\x20multi-repo\x20workspaces,\x20you\x20have\x20to\x20specify\x20a\x20subfolder\x20where\x20the\x20search\x20should\x20be\x20performed,\x20to\x20avoid\x20searching\x20across\x20all\x20repos'),'search_type':z[a0_0x5a733b(0xcf)](['default','node_modules'])[a0_0x5a733b(0xc3)]()['describe']('Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.')}),WarpGrepGitHubArgsSchema=z[a0_0x5a733b(0x199)]({'search_string':z[a0_0x5a733b(0x163)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()[a0_0x5a733b(0xc3)]()[a0_0x5a733b(0x17d)](a0_0x5a733b(0x132)),'owner_repo':z[a0_0x5a733b(0x163)]()[a0_0x5a733b(0xc3)]()[a0_0x5a733b(0x17d)]('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z[a0_0x5a733b(0x163)]()[a0_0x5a733b(0xc3)]()['describe'](a0_0x5a733b(0x109))}),CodebaseSearchArgsSchema=z[a0_0x5a733b(0x199)]({'query':z[a0_0x5a733b(0x163)]()[a0_0x5a733b(0x17d)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z['string']()[a0_0x5a733b(0x17d)](a0_0x5a733b(0x161)),'branch':z[a0_0x5a733b(0x163)]()[a0_0x5a733b(0xc3)]()[a0_0x5a733b(0x17d)]('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z['string']()[a0_0x5a733b(0xc3)]()[a0_0x5a733b(0x17d)](a0_0x5a733b(0x16a)),'targetDirectories':z[a0_0x5a733b(0xf9)](z['string']())[a0_0x5a733b(0xa9)]([])[a0_0x5a733b(0x17d)](a0_0x5a733b(0xc6)),'limit':z['number']()[a0_0x5a733b(0xc3)]()[a0_0x5a733b(0xa9)](0xa)['describe']('Max\x20results\x20to\x20return')}),server=new Server({'name':a0_0x5a733b(0x11b),'version':a0_0x5a733b(0xb6)},{'capabilities':{'tools':{}}});server[a0_0x5a733b(0xa8)](ListToolsRequestSchema,async()=>{const _0x39f88a=a0_0x5a733b,_0x758b5a=[{'name':'edit_file','description':_0x39f88a(0xfe)+_0x39f88a(0x135)+_0x39f88a(0xf2)+_0x39f88a(0xb9)+_0x39f88a(0x124)+_0x39f88a(0xb2)+_0x39f88a(0xf8)+_0x39f88a(0x16c)+'-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a'+'Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a'+_0x39f88a(0x14d)+'Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a'+_0x39f88a(0x190)+_0x39f88a(0xcb)+_0x39f88a(0x178)+_0x39f88a(0x187)+_0x39f88a(0x120)+_0x39f88a(0xdf)+_0x39f88a(0xc0)+_0x39f88a(0x13f)+'-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a'+_0x39f88a(0xd1)+'IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x39f88a(0x152),'description':_0x39f88a(0xb4)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x39f88a(0xa3)+'You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20'+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x2ca263=_0x758b5a[_0x39f88a(0xd7)](_0x50f6cc=>{const _0x5c7f1d=_0x39f88a;if(DISABLED_TOOLS['has'](_0x50f6cc[_0x5c7f1d(0xe2)]))return console[_0x5c7f1d(0x142)]('Tool\x20'+_0x50f6cc[_0x5c7f1d(0xe2)]+_0x5c7f1d(0x18b)),![];if(_0x5c7f1d(0x182)in _0x50f6cc&&_0x50f6cc[_0x5c7f1d(0x182)]&&!MORPH_API_KEY)return logMcpStderr(_0x5c7f1d(0x197)+_0x50f6cc[_0x5c7f1d(0xe2)]+_0x5c7f1d(0x127)),![];return!![];});return{'tools':_0x2ca263[_0x39f88a(0xe5)](_0x3fae6d=>({'name':_0x3fae6d['name'],'description':_0x3fae6d['description'],'inputSchema':_0x3fae6d[_0x39f88a(0x15e)]}))};}),server[a0_0x5a733b(0xa8)](CallToolRequestSchema,async _0x5145a2=>{const _0x3b6c42=a0_0x5a733b,{name:_0x505916,arguments:_0x1bb0ac}=_0x5145a2[_0x3b6c42(0x11f)];try{if(DISABLED_TOOLS['has'](_0x505916))throw new Error(_0x3b6c42(0xc7)+_0x505916+_0x3b6c42(0x144));switch(_0x505916){case _0x3b6c42(0x162):{const _0x34250c=MorphEditFileArgsSchema[_0x3b6c42(0x13e)](_0x1bb0ac);if(!_0x34250c[_0x3b6c42(0x19a)])throw new Error(_0x3b6c42(0xe0)+_0x34250c[_0x3b6c42(0x142)]);const _0x4e7974=await validatePath(_0x34250c[_0x3b6c42(0x17e)][_0x3b6c42(0xaa)]);let _0x203195=null,_0x3f6929=!![],_0x705478=null;try{_0x203195=await a0_0x5f57e8['readFile'](_0x4e7974,_0x3b6c42(0x18f));}catch(_0x2dff6e){const _0x160e5f=_0x2dff6e[_0x3b6c42(0x10b)];_0x160e5f===_0x3b6c42(0xb1)?(_0x3f6929=![],_0x203195=''):(_0x705478='Failed\x20to\x20read\x20file:\x20'+(_0x160e5f||_0x3b6c42(0x175))+_0x3b6c42(0x99)+(_0x2dff6e instanceof Error?_0x2dff6e[_0x3b6c42(0x102)]:String(_0x2dff6e)),logMcpStderr(_0x3b6c42(0x197)+_0x705478));}let _0x13ce41;try{const _0x37d086=MORPH_API_KEY;if(!_0x37d086)throw new Error(_0x3b6c42(0x17a));const _0x11f0d8=a0_0x5af550['dirname'](_0x4e7974),_0x43de99=a0_0x5af550['basename'](_0x4e7974),_0x97d648=await executeEditFile({'target_filepath':_0x43de99,'code_edit':_0x34250c['data']['code_edit'],'instructions':_0x34250c[_0x3b6c42(0x17e)][_0x3b6c42(0x10e)]},{'morphApiKey':_0x37d086,'morphApiUrl':MORPH_API_URL,'baseDir':_0x11f0d8,'autoWrite':!_0x34250c[_0x3b6c42(0x17e)][_0x3b6c42(0xc1)],'generateUdiff':![],'debug':![]});_0x13ce41=_0x97d648[_0x3b6c42(0xdb)];if(!_0x97d648[_0x3b6c42(0x19a)])throw new Error(_0x97d648[_0x3b6c42(0x142)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x116852=_0x97d648[_0x3b6c42(0x156)],_0x196250=_0x3b6c42(0x151)+_0x116852[_0x3b6c42(0x100)]+_0x3b6c42(0x16f)+_0x116852['linesRemoved']+_0x3b6c42(0x160)+_0x116852[_0x3b6c42(0x147)];if(_0x34250c[_0x3b6c42(0x17e)][_0x3b6c42(0xc1)])return{'content':[{'type':'text','text':_0x3b6c42(0xa2)+(_0x3f6929?'':'\x20(new\x20file)')+':\x20'+_0x34250c[_0x3b6c42(0x17e)][_0x3b6c42(0x10e)]+'.\x20Changes:\x20'+_0x196250+'.\x20Path:\x20'+_0x34250c[_0x3b6c42(0x17e)][_0x3b6c42(0xaa)]+'.'}]};return{'content':[{'type':'text','text':_0x3b6c42(0x106)+(_0x3f6929?'Applied':_0x3b6c42(0x143))+':\x20'+_0x34250c[_0x3b6c42(0x17e)]['instruction']+'.\x20Changes:\x20'+_0x196250+_0x3b6c42(0xde)+_0x34250c[_0x3b6c42(0x17e)][_0x3b6c42(0xaa)]+'.'}]};}catch(_0x2c12e8){const _0x33b46a=_0x2c12e8 instanceof Error?_0x2c12e8[_0x3b6c42(0x102)]:String(_0x2c12e8);return reportMorphError({'error_message':_0x33b46a,'error_type':_0x2c12e8 instanceof Error?_0x2c12e8[_0x3b6c42(0x9a)][_0x3b6c42(0xe2)]:_0x3b6c42(0x181),'context':{'tool':_0x3b6c42(0x162),'completion_id':_0x13ce41,'file_path':_0x34250c[_0x3b6c42(0x17e)][_0x3b6c42(0xaa)],'validated_path':_0x4e7974,'instruction':_0x34250c[_0x3b6c42(0x17e)][_0x3b6c42(0x10e)],'model':'morph-v3-fast','dry_run':_0x34250c[_0x3b6c42(0x17e)][_0x3b6c42(0xc1)],'file_exists':_0x3f6929,'file_read_error':_0x705478,'file_readable':_0x203195!==null,'request_content':{'path':_0x34250c['data'][_0x3b6c42(0xaa)],'code_edit':_0x34250c[_0x3b6c42(0x17e)][_0x3b6c42(0x9c)],'instruction':_0x34250c[_0x3b6c42(0x17e)][_0x3b6c42(0x10e)],'original_code':_0x203195!==null?_0x203195['length']>0xc350?_0x203195[_0x3b6c42(0xea)](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x203195['length']+_0x3b6c42(0xe9):_0x203195:_0x3b6c42(0xa6)+(_0x705478||_0x3b6c42(0x149))+']','original_code_length':_0x203195?.['length']??0x0,'model':'morph-v3-fast','dry_run':_0x34250c[_0x3b6c42(0x17e)][_0x3b6c42(0xc1)]}},'stack_trace':_0x2c12e8 instanceof Error?_0x2c12e8['stack']:undefined,'source':_0x3b6c42(0xac)})[_0x3b6c42(0x154)](()=>{}),{'content':[{'type':_0x3b6c42(0x9b),'text':_0x3b6c42(0xa1)+_0x33b46a}],'isError':!![]};}}case _0x3b6c42(0x152):{const _0x26044a=WarpGrepArgsSchema[_0x3b6c42(0x13e)](_0x1bb0ac);if(!_0x26044a['success'])return{'content':[{'type':_0x3b6c42(0x9b),'text':_0x3b6c42(0x103)+_0x26044a['error']}],'isError':!![]};const _0x566535=_0x57d5ef=>{const _0x3af21d=_0x3b6c42,_0x3c7a44=[];for(const _0xc5e52b of _0x57d5ef||[]){const _0x22373d=_0xc5e52b[_0x3af21d(0x12c)],_0x4d7712=_0xc5e52b[_0x3af21d(0x104)];if(_0x22373d===_0x3af21d(0x158)&&_0x4d7712){const _0x3a859a=_0x4d7712[_0x3af21d(0xf5)]('\x0a')['filter'](_0xff1dd8=>_0xff1dd8['trim']());for(const _0x2212d4 of _0x3a859a){const _0x3e1d25=_0x2212d4[_0x3af21d(0x167)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x3e1d25){_0x3c7a44['push'](_0x3af21d(0x14c)+_0x3e1d25[0x1]+'\x27\x20'+_0x3e1d25[0x2]);continue;}const _0x451c2e=_0x2212d4[_0x3af21d(0x167)](/^read\s+(.+)$/);if(_0x451c2e){_0x3c7a44[_0x3af21d(0x17b)](_0x3af21d(0x9e)+_0x451c2e[0x1]);continue;}const _0xb505cf=_0x2212d4[_0x3af21d(0x167)](/^list_directory\s+(.+)$/);if(_0xb505cf){_0x3c7a44[_0x3af21d(0x17b)]('list_directory\x20'+_0xb505cf[0x1]);continue;}}}}return _0x3c7a44;},_0x27608e=_0x4918bf=>{const _0x430ab6=_0x3b6c42,_0x2717fd=[];if(!_0x4918bf||!Array[_0x430ab6(0xd4)](_0x4918bf))return _0x2717fd;const _0x5221bb=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x430ab6(0xad),'tool':_0x430ab6(0xd8)},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x430ab6(0xd8)},{'pattern':/\[READ ERROR\]/,'error_type':_0x430ab6(0xca),'tool':_0x430ab6(0xd8)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x430ab6(0x164),'tool':_0x430ab6(0xd8)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x430ab6(0x111),'tool':_0x430ab6(0x159)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x430ab6(0x17c),'tool':_0x430ab6(0x159)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x430ab6(0x164),'tool':_0x430ab6(0xd8)},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':'read'},{'pattern':/not a text file/,'error_type':_0x430ab6(0x164),'tool':_0x430ab6(0xd8)},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':'read'},{'pattern':/Error reading file:/,'error_type':_0x430ab6(0xca),'tool':_0x430ab6(0xd8)},{'pattern':/status="error"/,'error_type':'ToolException','tool':'unknown'}];let _0x26cf91=0x0;for(const _0x575782 of _0x4918bf){if(_0x575782[_0x430ab6(0x12c)]===_0x430ab6(0x11c)){_0x26cf91++;const _0x4b6b2b=_0x575782[_0x430ab6(0x104)];if(!_0x4b6b2b||typeof _0x4b6b2b!=='string')continue;for(const {pattern:_0x58adf5,error_type:_0x2f9439,tool:_0xd5611d}of _0x5221bb){const _0x1b21de=_0x4b6b2b[_0x430ab6(0x167)](new RegExp(_0x58adf5[_0x430ab6(0xfb)],'g'));if(_0x1b21de)for(const _0x42636e of _0x1b21de){const _0x30dcd8=_0x4b6b2b[_0x430ab6(0x191)](_0x42636e),_0x4139b2=_0x4b6b2b[_0x430ab6(0xea)](_0x30dcd8,Math[_0x430ab6(0x15d)](_0x30dcd8+0xc8,_0x4b6b2b[_0x430ab6(0x17f)]));_0x2717fd['push']({'tool':_0xd5611d,'error_type':_0x2f9439,'error_message':_0x4139b2[_0x430ab6(0xf5)]('\x0a')[0x0],'turn':_0x26cf91});}}}}return _0x2717fd;};try{const _0x32743d=a0_0x5af550['resolve'](_0x26044a[_0x3b6c42(0x17e)]['repo_path']),_0x245231=_0x26044a[_0x3b6c42(0x17e)][_0x3b6c42(0x9f)],_0x4af7ed=_0x245231===_0x3b6c42(0x196)?{'allowNames':['node_modules']}:undefined,_0x221315=new LocalRipgrepProvider(_0x32743d,undefined,_0x4af7ed),_0x510007=await runWarpGrep({'searchTerm':_0x26044a[_0x3b6c42(0x17e)][_0x3b6c42(0x131)],'repoRoot':_0x32743d,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x221315,'search_type':_0x245231}),_0x50f9ba=_0x27608e(_0x510007[_0x3b6c42(0xa4)]);_0x50f9ba[_0x3b6c42(0x17f)]>0x0&&reportMorphError({'error_message':_0x3b6c42(0xeb)+_0x50f9ba['length']+_0x3b6c42(0x183),'error_type':_0x3b6c42(0x128),'level':_0x3b6c42(0xbf),'tool':_0x3b6c42(0x152),'context':{'repo_path':_0x26044a[_0x3b6c42(0x17e)][_0x3b6c42(0xc9)],'query':_0x26044a['data'][_0x3b6c42(0x131)],'model':_0x3b6c42(0x146),'termination_reason':_0x510007[_0x3b6c42(0xfd)],'sub_tool_errors':_0x50f9ba,'timings':_0x510007['timings'],'tool_calls':_0x566535(_0x510007[_0x3b6c42(0xa4)]),'messages':_0x510007['messages']?.[_0x3b6c42(0xe5)](_0x418f65=>({'role':_0x418f65[_0x3b6c42(0x12c)],'content':_0x418f65[_0x3b6c42(0x104)]}))},'source':'mcp-filesystem'})['catch'](()=>{});let _0x5c3941='';if(_0x510007[_0x3b6c42(0xfd)]==='completed'&&_0x510007[_0x3b6c42(0xfa)]?.['metadata']?.['files']){const _0x5ce9cc=_0x510007[_0x3b6c42(0xfa)]['metadata']['files'];if(_0x5ce9cc['length']===0x0)return _0x5c3941=_0x510007[_0x3b6c42(0xfa)]['payload']||_0x3b6c42(0x179),{'content':[{'type':'text','text':_0x5c3941}]};const _0x2ccae3=[],_0x182a22=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x58cc7c of _0x510007[_0x3b6c42(0xa4)]){const _0x369bac=_0x58cc7c[_0x3b6c42(0x12c)],_0x1de313=_0x58cc7c['content'];if(_0x369bac===_0x3b6c42(0x158)&&_0x1de313){const _0x58fdec=_0x1de313[_0x3b6c42(0xf5)]('\x0a')['filter'](_0xc7bc8e=>_0xc7bc8e['trim']());for(const _0x40d8da of _0x58fdec){const _0x4b8cad=_0x40d8da['match'](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x4b8cad){_0x182a22['push'](_0x3b6c42(0xf1)+_0x4b8cad[0x1]+_0x3b6c42(0x97)+_0x4b8cad[0x2]+'`');continue;}const _0x165d1f=_0x40d8da[_0x3b6c42(0x167)](/^read\s+(.+)$/);if(_0x165d1f){_0x182a22[_0x3b6c42(0x17b)](_0x3b6c42(0xf6)+_0x165d1f[0x1]+'`');continue;}const _0x411590=_0x40d8da[_0x3b6c42(0x167)](/^list_directory\s+(.+)$/);if(_0x411590){_0x182a22[_0x3b6c42(0x17b)](_0x3b6c42(0x195)+_0x411590[0x1]+'`');continue;}}}}_0x2ccae3[_0x3b6c42(0x17b)](_0x182a22[_0x3b6c42(0x153)]('\x0a'));const _0x2d2947=['','Relevant\x20context\x20found:'];for(const _0xf01024 of _0x5ce9cc){if(_0xf01024[_0x3b6c42(0x11e)]==='*')_0x2d2947[_0x3b6c42(0x17b)]('-\x20'+_0xf01024['path']+':*');else{if(Array[_0x3b6c42(0xd4)](_0xf01024[_0x3b6c42(0x11e)])){const _0x7f0976=_0xf01024['lines'][_0x3b6c42(0xe5)](([_0x3a21f0,_0x269238])=>{if(_0x3a21f0===_0x269238)return''+_0x3a21f0;return _0x3a21f0+'-'+_0x269238;});_0x2d2947[_0x3b6c42(0x17b)]('-\x20'+_0xf01024[_0x3b6c42(0xaa)]+':'+_0x7f0976[_0x3b6c42(0x153)](','));}else _0x2d2947[_0x3b6c42(0x17b)]('-\x20'+_0xf01024[_0x3b6c42(0xaa)]+':*');}}_0x2d2947['push'](''),_0x2ccae3['push'](_0x2d2947['join']('\x0a')),_0x2ccae3['push'](_0x3b6c42(0x96));const _0x45fd5d=[];for(const _0x3dd657 of _0x5ce9cc){let _0xc2fb91=a0_0x5af550[_0x3b6c42(0x180)](_0x26044a[_0x3b6c42(0x17e)][_0x3b6c42(0xc9)],_0x3dd657[_0x3b6c42(0xaa)]),_0x3a2018=null,_0x7d1836=null;try{_0x3a2018=await a0_0x5f57e8[_0x3b6c42(0x9d)](_0xc2fb91,{'encoding':_0x3b6c42(0x18f)});}catch(_0x554b33){const _0xd5f1a8=fixPathRepetition(_0xc2fb91);if(_0xd5f1a8)try{_0x3a2018=await a0_0x5f57e8[_0x3b6c42(0x9d)](_0xd5f1a8,{'encoding':_0x3b6c42(0x18f)}),_0xc2fb91=_0xd5f1a8;}catch{_0x7d1836=_0x554b33 instanceof Error?_0x554b33:new Error(String(_0x554b33));}else _0x7d1836=_0x554b33 instanceof Error?_0x554b33:new Error(String(_0x554b33));}if(_0x3a2018!==null){const _0xc59d2e=_0x3a2018['split'](/\r?\n/),_0x5249e1=[_0x3b6c42(0x169)+_0x3dd657['path']+'\x22>'];if(_0x3dd657[_0x3b6c42(0x11e)]==='*'||!Array[_0x3b6c42(0xd4)](_0x3dd657[_0x3b6c42(0x11e)]))for(let _0x42c510=0x1;_0x42c510<=_0xc59d2e[_0x3b6c42(0x17f)];_0x42c510++){const _0x200820=_0xc59d2e[_0x42c510-0x1];_0x5249e1[_0x3b6c42(0x17b)](_0x42c510+'|\x20'+_0x200820);}else for(const [_0x57d0fd,_0x5f386e]of _0x3dd657[_0x3b6c42(0x11e)]){_0x5249e1[_0x3b6c42(0x17f)]>0x1&&_0x5249e1[_0x3b6c42(0x17b)]('');for(let _0x39d7a0=_0x57d0fd;_0x39d7a0<=_0x5f386e&&_0x39d7a0<=_0xc59d2e[_0x3b6c42(0x17f)];_0x39d7a0++){const _0x496cf2=_0xc59d2e[_0x39d7a0-0x1];_0x5249e1['push'](_0x39d7a0+'|\x20'+_0x496cf2);}}_0x5249e1[_0x3b6c42(0x17b)](_0x3b6c42(0x184)),_0x45fd5d['push'](_0x5249e1[_0x3b6c42(0x153)]('\x0a'));}else _0x45fd5d[_0x3b6c42(0x17b)](_0x3b6c42(0x169)+_0x3dd657[_0x3b6c42(0xaa)]+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x7d1836?.[_0x3b6c42(0x102)]||'Unknown\x20error')+_0x3b6c42(0xef));}_0x2ccae3[_0x3b6c42(0x17b)](_0x45fd5d[_0x3b6c42(0x153)]('\x0a\x0a')),_0x5c3941=_0x2ccae3[_0x3b6c42(0x153)]('\x0a');const _0x2846ab=_0x510007[_0x3b6c42(0x12a)]?.[_0x3b6c42(0xd7)](_0x1b980f=>_0x1b980f['message']?.[_0x3b6c42(0x148)](_0x3b6c42(0xa7)))||[];if(_0x2846ab[_0x3b6c42(0x17f)]>0x0){const _0x2f239f=_0x2846ab['map'](_0x38fe3e=>_0x38fe3e[_0x3b6c42(0x102)])[_0x3b6c42(0x153)](';\x20');reportMorphError({'error_message':_0x2f239f,'error_type':_0x3b6c42(0xcd),'context':{'tool':_0x3b6c42(0x152),'repo_path':_0x26044a[_0x3b6c42(0x17e)]['repo_path'],'query':_0x26044a[_0x3b6c42(0x17e)]['search_string'],'model':_0x3b6c42(0x146),'termination_reason':'completed_with_file_errors','error_count':_0x2846ab[_0x3b6c42(0x17f)],'is_timeout':![],'timings':_0x510007[_0x3b6c42(0x14e)],'files_attempted':_0x5ce9cc['map'](_0x515cd8=>({'path':_0x515cd8[_0x3b6c42(0xaa)],'lines':_0x515cd8['lines']})),'tool_calls':_0x566535(_0x510007['messages']),'messages':_0x510007[_0x3b6c42(0xa4)]?.[_0x3b6c42(0xe5)](_0x1b2553=>({'role':_0x1b2553[_0x3b6c42(0x12c)],'content':_0x1b2553[_0x3b6c42(0x104)]})),'request_content':{'query':_0x26044a['data'][_0x3b6c42(0x131)],'repo_path':_0x26044a['data']['repo_path'],'repoRoot':a0_0x5af550[_0x3b6c42(0x180)](_0x26044a[_0x3b6c42(0x17e)][_0x3b6c42(0xc9)]),'model':'morph-warp-grep-v1-1111v0'}},'source':_0x3b6c42(0xac)})[_0x3b6c42(0x154)](()=>{});}}else{if(_0x510007['terminationReason']===_0x3b6c42(0x193)&&_0x510007['errors'][_0x3b6c42(0x17f)]>0x0){const _0x1b385d=_0x510007['errors'][_0x3b6c42(0xe5)](_0x36515c=>_0x36515c['message'])['join'](';\x20');_0x5c3941='Error:\x20'+_0x1b385d;const _0x4fde84=_0x1b385d[_0x3b6c42(0xb3)]()['includes'](_0x3b6c42(0x141))||_0x1b385d['toLowerCase']()[_0x3b6c42(0xf7)](_0x3b6c42(0x122))||_0x1b385d[_0x3b6c42(0xb3)]()[_0x3b6c42(0xf7)](_0x3b6c42(0x98)),_0xc01e5e=_0x510007[_0x3b6c42(0xfa)]?.[_0x3b6c42(0x113)]?.[_0x3b6c42(0x110)],_0x1ad086=_0x510007[_0x3b6c42(0x12a)][0x0];reportMorphError({'error_message':_0x1b385d,'error_type':_0x4fde84?'TimeoutError':_0x1ad086?.[_0x3b6c42(0x9a)]?.[_0x3b6c42(0xe2)]||_0x3b6c42(0x185),'context':{'tool':_0x3b6c42(0x152),'repo_path':_0x26044a['data'][_0x3b6c42(0xc9)],'query':_0x26044a[_0x3b6c42(0x17e)]['search_string'],'model':_0x3b6c42(0x146),'termination_reason':_0x510007[_0x3b6c42(0xfd)],'error_count':_0x510007[_0x3b6c42(0x12a)]['length'],'is_timeout':_0x4fde84,'timings':_0x510007[_0x3b6c42(0x14e)],'files_attempted':_0xc01e5e?.['map'](_0x13c50e=>({'path':_0x13c50e[_0x3b6c42(0xaa)],'lines':_0x13c50e[_0x3b6c42(0x11e)]})),'tool_calls':_0x566535(_0x510007['messages']),'messages':_0x510007[_0x3b6c42(0xa4)]?.[_0x3b6c42(0xe5)](_0x580ed6=>({'role':_0x580ed6[_0x3b6c42(0x12c)],'content':_0x580ed6[_0x3b6c42(0x104)]})),'request_content':{'query':_0x26044a['data'][_0x3b6c42(0x131)],'repo_path':_0x26044a['data'][_0x3b6c42(0xc9)],'repoRoot':a0_0x5af550[_0x3b6c42(0x180)](_0x26044a[_0x3b6c42(0x17e)][_0x3b6c42(0xc9)]),'model':_0x3b6c42(0x146)}},'stack_trace':_0x1ad086?.[_0x3b6c42(0xe8)]||undefined,'source':_0x3b6c42(0xac)})[_0x3b6c42(0x154)](()=>{});}else _0x5c3941=_0x3b6c42(0xed);}return{'content':[{'type':_0x3b6c42(0x9b),'text':_0x5c3941}]};}catch(_0x4c7975){const _0x58c88c=_0x4c7975 instanceof Error?_0x4c7975['message']:String(_0x4c7975),_0x3e1deb=_0x58c88c[_0x3b6c42(0xb3)]()['includes'](_0x3b6c42(0x141))||_0x58c88c[_0x3b6c42(0xb3)]()[_0x3b6c42(0xf7)](_0x3b6c42(0x122))||_0x58c88c['toLowerCase']()[_0x3b6c42(0xf7)](_0x3b6c42(0x98))||_0x4c7975 instanceof Error&&_0x4c7975[_0x3b6c42(0xe2)]===_0x3b6c42(0x170);return reportMorphError({'error_message':_0x58c88c,'error_type':_0x3e1deb?_0x3b6c42(0x170):_0x4c7975 instanceof Error?_0x4c7975['constructor'][_0x3b6c42(0xe2)]:_0x3b6c42(0x181),'context':{'tool':'codebase_search','repo_path':_0x26044a[_0x3b6c42(0x17e)][_0x3b6c42(0xc9)],'query':_0x26044a[_0x3b6c42(0x17e)][_0x3b6c42(0x131)],'model':_0x3b6c42(0x146),'is_timeout':_0x3e1deb,'exception_phase':_0x3b6c42(0x145),'request_content':{'query':_0x26044a[_0x3b6c42(0x17e)][_0x3b6c42(0x131)],'repo_path':_0x26044a[_0x3b6c42(0x17e)][_0x3b6c42(0xc9)],'repoRoot':a0_0x5af550['resolve'](_0x26044a[_0x3b6c42(0x17e)][_0x3b6c42(0xc9)]),'model':'morph-warp-grep-v1-1111v0'}},'stack_trace':_0x4c7975 instanceof Error?_0x4c7975[_0x3b6c42(0xe8)]:undefined,'source':_0x3b6c42(0xac)})[_0x3b6c42(0x154)](()=>{}),{'content':[{'type':'text','text':_0x3b6c42(0x125)+_0x58c88c}],'isError':![]};}}case'github_codebase_search':{const _0x1cb9a3=WarpGrepGitHubArgsSchema['safeParse'](_0x1bb0ac);if(!_0x1cb9a3['success'])return{'content':[{'type':_0x3b6c42(0x9b),'text':_0x3b6c42(0x103)+_0x1cb9a3['error']}],'isError':!![]};const _0x4bbf06=_0x1cb9a3['data'][_0x3b6c42(0xf0)]||_0x1cb9a3['data']['owner_repo'];if(!_0x4bbf06)return{'content':[{'type':_0x3b6c42(0x9b),'text':_0x3b6c42(0xbd)}],'isError':!![]};const _0xf465f2=MORPH_API_KEY;if(!_0xf465f2)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x326cfb=Date[_0x3b6c42(0x11a)]();logMcpStderr('[github_codebase_search]\x20Searching\x20'+_0x4bbf06+_0x3b6c42(0xc2)+_0x1cb9a3['data']['search_string']+'\x22');try{const _0x5de4b6=new WarpGrepClient({'morphApiKey':_0xf465f2,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x4ad255=await _0x5de4b6[_0x3b6c42(0xd5)]({'searchTerm':_0x1cb9a3[_0x3b6c42(0x17e)]['search_string'],'github':_0x4bbf06,'branch':_0x1cb9a3[_0x3b6c42(0x17e)][_0x3b6c42(0x121)]}),_0x54ef8f=Date[_0x3b6c42(0x11a)]()-_0x326cfb;logMcpStderr(_0x3b6c42(0x18c)+_0x54ef8f+'ms.\x20Success:\x20'+_0x4ad255[_0x3b6c42(0x19a)]);const _0x433c78=formatResult(_0x4ad255);return{'content':[{'type':_0x3b6c42(0x9b),'text':_0x433c78}]};}catch(_0x397bb5){const _0x45a550=Date['now']()-_0x326cfb,_0x36228a=_0x397bb5 instanceof Error?_0x397bb5[_0x3b6c42(0x102)]:String(_0x397bb5);return logMcpStderr('[github_codebase_search]\x20Failed\x20in\x20'+_0x45a550+_0x3b6c42(0xbc),_0x36228a),reportMorphError({'error_message':_0x36228a,'error_type':_0x397bb5 instanceof Error?_0x397bb5[_0x3b6c42(0x9a)][_0x3b6c42(0xe2)]:'UnknownError','context':{'tool':'github_codebase_search','github_url':_0x4bbf06,'search_string':_0x1cb9a3[_0x3b6c42(0x17e)][_0x3b6c42(0x131)],'branch':_0x1cb9a3[_0x3b6c42(0x17e)][_0x3b6c42(0x121)]},'stack_trace':_0x397bb5 instanceof Error?_0x397bb5[_0x3b6c42(0xe8)]:undefined,'source':_0x3b6c42(0xac),'tool':'github_codebase_search','latency_ms':_0x45a550})[_0x3b6c42(0x154)](()=>{}),{'content':[{'type':_0x3b6c42(0x9b),'text':'GitHub\x20search\x20failed:\x20'+_0x36228a}],'isError':![]};}}default:throw new Error(_0x3b6c42(0x173)+_0x505916);}}catch(_0x29aac7){const _0x52890c=_0x29aac7 instanceof Error?_0x29aac7[_0x3b6c42(0x102)]:String(_0x29aac7);return reportMorphError({'error_message':_0x52890c,'error_type':_0x29aac7 instanceof Error?_0x29aac7[_0x3b6c42(0x9a)][_0x3b6c42(0xe2)]:_0x3b6c42(0x181),'context':{'tool':_0x505916,'arguments':_0x1bb0ac?JSON[_0x3b6c42(0x157)](_0x1bb0ac)[_0x3b6c42(0xea)](0x0,0x1f4):undefined,'mcp_server_version':_0x3b6c42(0xb6)},'stack_trace':_0x29aac7 instanceof Error?_0x29aac7[_0x3b6c42(0xe8)]:undefined,'source':'mcp-filesystem'})[_0x3b6c42(0x154)](()=>{}),{'content':[{'type':_0x3b6c42(0x9b),'text':_0x3b6c42(0x14f)+_0x52890c}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x49b630){const _0x29e015=a0_0x5a733b,_0x29e3b2=await getValidRootDirectories(_0x49b630);if(_0x29e3b2[_0x29e015(0x17f)]>0x0)allowedDirectories=[..._0x29e3b2],logMcpStderr('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0x29e3b2['length']+_0x29e015(0x189));else{logMcpStderr(_0x29e015(0x13c));if(ENABLE_WORKSPACE_MODE)try{const _0x1b566=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x1b566&&(allowedDirectories=[_0x1b566],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x1b566));}catch(_0x720e4b){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x720e4b);}}}server[a0_0x5a733b(0x172)](RootsListChangedNotificationSchema,async()=>{const _0x4d7f9e=a0_0x5a733b;try{const _0x52dba7=await server['listRoots']();_0x52dba7&&_0x4d7f9e(0x137)in _0x52dba7&&await updateAllowedDirectoriesFromRoots(_0x52dba7[_0x4d7f9e(0x137)]);}catch(_0x2abdec){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x2abdec instanceof Error?_0x2abdec[_0x4d7f9e(0x102)]:String(_0x2abdec));}}),server[a0_0x5a733b(0xa0)]=async()=>{const _0x3e2bfc=a0_0x5a733b,_0x295bdb=server[_0x3e2bfc(0x140)]();if(_0x295bdb?.[_0x3e2bfc(0x137)])try{const _0x47de86=await server[_0x3e2bfc(0x192)]();_0x47de86&&_0x3e2bfc(0x137)in _0x47de86?await updateAllowedDirectoriesFromRoots(_0x47de86[_0x3e2bfc(0x137)]):logMcpStderr(_0x3e2bfc(0xae));}catch(_0x4d8f72){logMcpStderr(_0x3e2bfc(0x186),_0x4d8f72 instanceof Error?_0x4d8f72[_0x3e2bfc(0x102)]:String(_0x4d8f72));}else{if(allowedDirectories[_0x3e2bfc(0x17f)]>0x0)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:',allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x3e2bfc(0x10f));else throw new Error(_0x3e2bfc(0x188));}}};async function runServer(){const _0x499888=a0_0x5a733b,_0x5656d8=new StdioServerTransport();await server[_0x499888(0x117)](_0x5656d8),logMcpStderr('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories[_0x499888(0x17f)]===0x0&&logMcpStderr(_0x499888(0x15a));}runServer()[a0_0x5a733b(0x154)](_0x3770e2=>{const _0x1c49e8=a0_0x5a733b;logMcpStderr(_0x1c49e8(0xb7),_0x3770e2),process[_0x1c49e8(0x16d)](0x1);});
2
+ const a0_0x44b10e=a0_0x1d14;(function(_0x401b0f,_0x3c11f5){const _0x1f2285=a0_0x1d14,_0x65d860=_0x401b0f();while(!![]){try{const _0x502852=parseInt(_0x1f2285(0x17b))/0x1*(-parseInt(_0x1f2285(0x18c))/0x2)+parseInt(_0x1f2285(0x244))/0x3+-parseInt(_0x1f2285(0x1d8))/0x4+-parseInt(_0x1f2285(0x1ef))/0x5*(parseInt(_0x1f2285(0x192))/0x6)+-parseInt(_0x1f2285(0x1df))/0x7*(-parseInt(_0x1f2285(0x152))/0x8)+-parseInt(_0x1f2285(0x229))/0x9+-parseInt(_0x1f2285(0x23f))/0xa*(-parseInt(_0x1f2285(0x228))/0xb);if(_0x502852===_0x3c11f5)break;else _0x65d860['push'](_0x65d860['shift']());}catch(_0x2f32ea){_0x65d860['push'](_0x65d860['shift']());}}}(a0_0x10ef,0xed94b));import{Server}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import{CallToolRequestSchema,ListToolsRequestSchema,RootsListChangedNotificationSchema}from'@modelcontextprotocol/sdk/types.js';import a0_0x3ad4a4 from'fs/promises';import a0_0x26b8f4 from'path';import a0_0x4b9a88 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import a0_0x59fae9 from'axios';function fixPathRepetition(_0x25cbe2){const _0x571f76=a0_0x1d14,_0x24b296=_0x25cbe2['split'](a0_0x26b8f4['sep'])[_0x571f76(0x1cc)](Boolean);if(_0x24b296[_0x571f76(0x149)]<0x2)return null;for(let _0x10e533=Math['floor'](_0x24b296[_0x571f76(0x149)]/0x2);_0x10e533>=0x1;_0x10e533--){for(let _0x55cff6=0x0;_0x55cff6<=_0x24b296[_0x571f76(0x149)]-0x2*_0x10e533;_0x55cff6++){const _0x1bca32=_0x24b296[_0x571f76(0x1a9)](_0x55cff6,_0x55cff6+_0x10e533),_0x210d37=_0x24b296[_0x571f76(0x1a9)](_0x55cff6+_0x10e533,_0x55cff6+0x2*_0x10e533);if(_0x1bca32[_0x571f76(0x1dd)]((_0x48b0bd,_0x1b2208)=>_0x48b0bd===_0x210d37[_0x1b2208])){const _0x517bd6=[..._0x24b296[_0x571f76(0x1a9)](0x0,_0x55cff6),..._0x24b296['slice'](_0x55cff6+_0x10e533)];return a0_0x26b8f4[_0x571f76(0x1b0)]+_0x517bd6[_0x571f76(0x22e)](a0_0x26b8f4['sep']);}}}return null;}function a0_0x10ef(){const _0x57df6d=['completionId','morph-warp-grep-v2.1','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','Morph\x20Edit\x20','0.2.0','now','glob','Invalid\x20arguments:\x20','split','requiresApiKey','sk-','File\x20read\x20error:','array','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','.git','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','grep','[github_codebase_search]\x20Searching\x20','finish','-\x20Glob\x20search\x20`','\x0a...\x20(truncated,\x20total:\x20','isArray','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','tool','exit','@morphllm/morphmcp\x20','application/json','.\x20Path:\x20','Unknown\x20tool:\x20','Cargo.toml','IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','all','search_type','setRequestHandler','Repository\x20identifier','Bearer\x20','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','code','data','realpath','Server\x20cannot\x20operate:\x20No\x20allowed\x20directories\x20available.\x20Server\x20was\x20started\x20without\x20command-line\x20directories\x20and\x20client\x20either\x20does\x20not\x20support\x20MCP\x20roots\x20protocol\x20or\x20provided\x20empty\x20roots.\x20Please\x20either:\x201)\x20Start\x20server\x20with\x20directory\x20arguments,\x202)\x20Use\x20a\x20client\x20that\x20supports\x20MCP\x20roots\x20protocol\x20and\x20provides\x20valid\x20root\x20directories,\x20or\x203)\x20Enable\x20workspace\x20mode\x20with\x20ENABLE_WORKSPACE_MODE=true.','branch','assistant','post','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','<file\x20path=\x22','44KeArEK','13870656qaRqNc','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','DISABLED_TOOLS','node_modules','WarpGrep\x20sub-tool\x20errors:\x20','join','stringify','\x20error(s)','[github_codebase_search]\x20Done\x20in\x20','\x20is\x20not\x20a\x20directory','normalize','boolean','ToolException','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','PathError','optional','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','name','list_directory','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','tool_call_id','2935020POvfFJ','morph-mcp','Morph\x20FastApply\x20failed\x20without\x20error\x20message','A\x20code\x20exploration\x20tool,\x20use\x20this\x20tool\x20when\x20exploring\x20an\x20unfamiliar\x20codebase,\x20and\x20you\x27re\x20unsure\x20of\x20the\x20exact\x20file\x20or\x20string\x20to\x20look\x20for.\x20This\x20tool\x20will\x20find\x20all\x20relevant\x20bits\x20of\x20code\x20given\x20a\x20natural\x20lanugage\x20description,\x20or\x20questin\x20of\x20the\x20thing\x20you\x27re\x20looking\x20for.\x20','push','3374130tvZiHD','list_directory\x20','\x20as\x20allowed\x20directory','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.',',\x20removed\x20','Natural-language\x20question/description\x20about\x20the\x20code\x20you\x20want\x20to\x20understand.\x20Good\x20example:\x20\x22Where\x20does\x20auth\x20get\x20handled,\x20what\x20are\x20the\x20different\x20oauth\x20methods\x20supported?\x22,\x20\x22Trace\x20all\x20code\x20that\x20relates\x20to\x20how\x20data\x20is\x20injested\x20and\x20processed\x22.\x20Bad\x20example:\x20\x22auth()\x22,\x20\x22auth\x20login\x20dashoard\x20google\x20email\x22.\x20This\x20tool\x20does\x20NOT\x20accept\x20regex,\x20keyword\x20dumps,\x20or\x20symbol-only\x20queries.','env','roots','description','https://morphllm.com/api/error-report','ENABLE_WORKSPACE_MODE','Error\x20running\x20fast\x20context\x20search:\x20','Parent\x20directory\x20does\x20not\x20exist:\x20','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','resolve','Fatal\x20error\x20running\x20server:','Rules:\x0a','linesRemoved','edit_file','payload','listRoots','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','[could\x20not\x20read\x20file:\x20','Disabled\x20tools:\x20','length','read\x20','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','go.mod','Error\x20accessing\x20directory\x20','grep\x20\x27','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','The\x20absolute\x20path\x20of\x20the\x20folder\x20where\x20the\x20search\x20should\x20be\x20performed.\x20In\x20multi-repo\x20workspaces,\x20you\x20have\x20to\x20specify\x20a\x20subfolder\x20where\x20the\x20search\x20should\x20be\x20performed,\x20to\x20avoid\x20searching\x20across\x20all\x20repos','8dIDPuD',',\x20modified\x20','match','string','morph-v3-fast','etimedout','Failed\x20to\x20read\x20file:\x20','repo_path','includes','owner_repo','`\x20in\x20`','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','[github_codebase_search]\x20Failed\x20in\x20','FileNotFound','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','BinaryFile','code_edit','\x20for:\x20\x22','Applied','user','timings','Tool\x20\x22','messages','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','unknown','Warning:\x20','function','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','connect','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','-\x20Read\x20file\x20`','log','access','ReadError','terminated','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','completed_with_file_errors','cwd','MORPH_API_KEY','github_codebase_search','role','1236807TPzXPA','map','constructor','Specific\x20commit\x20hash\x20to\x20search','setNotificationHandler','indexOf','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Created\x20File','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','stack','RipgrepError','SymlinkError','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','content','2mHfDGY','basename','Morph\x20Edit\x20Preview','parse','--api-key=','number','30XRSWPc','GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','toLowerCase','Unknown\x20error','completed','substring','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','</file>','FileReadError','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','lines','mcp-filesystem','MORPH_WARP_GREP_TIMEOUT','Failed\x20to\x20request\x20roots\x20from\x20client:','isDirectory','GitHub\x20search\x20failed:\x20','\x20\x20morph-mcp','WORKSPACE_ROOT','../package.json','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','catch','default','utf-8','slice','\x20(new\x20file)','message','composer.json','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','false','--help','sep','UnknownError','safeParse','tsconfig.json','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','object','params','dryRun','pattern','search_string','errors','.vscode','searchGitHub','github_url','Relevant\x20context\x20found:','tool_calls','\x20chars)','has','read','WarpGrepError','grep_search','\x22>\x0aError\x20reading\x20file:\x20','\x22.\x20Known\x20tools:\x20','command','\x27\x20in\x20`','path','success','filter','error','metadata','source','files','dirname','timeout','argv','\x0aExamples:','glob\x20\x27','some','morph-','1382432BmUlRk','size','ms:','startsWith','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','every','Fallback:\x20Using\x20workspace\x20root\x20','12657939UAYNyc','For\x20deletions:\x0a','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','enum','codebase_search','readFile','api-key','ENOENT','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','min','timed\x20out','RipgrepNotAvailable','--api-key','linesAdded','context','describe','10265lqpaCf','Preview\x20changes\x20without\x20applying\x20them.','terminationReason','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','instruction','Error:\x20','.\x20Changes:\x20','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','text','TimeoutError','warn'];a0_0x10ef=function(){return _0x57df6d;};return a0_0x10ef();}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x23f846=a0_0x1d14;try{const _0x5baedf=require(_0x23f846(0x1a4));return _0x5baedf['version']??_0x23f846(0x16a);}catch(_0x24c3df){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x24c3df),_0x23f846(0x16a);}}function printHelp(){const _0x18513a=a0_0x1d14;console[_0x18513a(0x171)](_0x18513a(0x213)+getPackageVersion()),console['log']('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0x18513a(0x171)]('\x0aOptions:'),console[_0x18513a(0x171)](_0x18513a(0x160)),console[_0x18513a(0x171)](_0x18513a(0x22a)),console[_0x18513a(0x171)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console[_0x18513a(0x171)](_0x18513a(0x1d4)),console[_0x18513a(0x171)](_0x18513a(0x1a2)),console['log'](_0x18513a(0x1ad));}const cliArgs=process[a0_0x44b10e(0x1d3)][a0_0x44b10e(0x1a9)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set([a0_0x44b10e(0x1af),'-h']);cliArgs[a0_0x44b10e(0x1d6)](_0x204e46=>VERSION_FLAGS[a0_0x44b10e(0x1c2)](_0x204e46))&&(console[a0_0x44b10e(0x171)](a0_0x44b10e(0x213)+getPackageVersion()),process[a0_0x44b10e(0x212)](0x0));cliArgs[a0_0x44b10e(0x1d6)](_0x6e51ae=>HELP_FLAGS[a0_0x44b10e(0x1c2)](_0x6e51ae))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x51697b){const _0x100a24=a0_0x44b10e;for(let _0x3a7104=0x0;_0x3a7104<cliArgs['length'];_0x3a7104++){const _0x2419d6=cliArgs[_0x3a7104];if(_0x2419d6[_0x100a24(0x1db)]('--'+_0x51697b+'='))return _0x2419d6['slice'](('--'+_0x51697b+'=')[_0x100a24(0x149)]);if(_0x2419d6==='--'+_0x51697b&&_0x3a7104+0x1<cliArgs[_0x100a24(0x149)])return cliArgs[_0x3a7104+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x44b10e(0x149)];i++){const arg=cliArgs[i];if(VERSION_FLAGS['has'](arg)||HELP_FLAGS['has'](arg))continue;if(arg['startsWith'](a0_0x44b10e(0x190)))continue;if(arg===a0_0x44b10e(0x1eb)){i++;continue;}args[a0_0x44b10e(0x243)](arg);}const WORKSPACE_ROOT=process['env'][a0_0x44b10e(0x1a3)]||process[a0_0x44b10e(0x24a)]['PWD']||process[a0_0x44b10e(0x177)](),ENABLE_WORKSPACE_MODE=process[a0_0x44b10e(0x24a)][a0_0x44b10e(0x24e)]!==a0_0x44b10e(0x1ae),MORPH_API_KEY=getCliArg(a0_0x44b10e(0x1e5))??process['env'][a0_0x44b10e(0x178)],MORPH_API_URL=process['env']['MORPH_API_URL'],MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0x44b10e(0x19e)]?parseInt(process[a0_0x44b10e(0x24a)]['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x44b10e(0x256),'codebase_search',a0_0x44b10e(0x179)]),DISABLED_TOOLS=process[a0_0x44b10e(0x24a)][a0_0x44b10e(0x22b)]?new Set(process[a0_0x44b10e(0x24a)]['DISABLED_TOOLS'][a0_0x44b10e(0x202)](',')['map'](_0x4203ac=>_0x4203ac['trim']())[a0_0x44b10e(0x1cc)](_0x1071f7=>_0x1071f7[a0_0x44b10e(0x149)]>0x0)):new Set();function a0_0x1d14(_0x1b6b92,_0x38caef){_0x1b6b92=_0x1b6b92-0x145;const _0x10ef2c=a0_0x10ef();let _0x1d1404=_0x10ef2c[_0x1b6b92];return _0x1d1404;}if(DISABLED_TOOLS[a0_0x44b10e(0x1d9)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x44b10e(0x1c2)](tool)&&console[a0_0x44b10e(0x1cd)]('Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22'+tool+a0_0x44b10e(0x1c7)+[...KNOWN_TOOL_NAMES][a0_0x44b10e(0x22e)](',\x20'));}console['error'](a0_0x44b10e(0x148)+[...DISABLED_TOOLS]['join'](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x44b10e(0x1db)](a0_0x44b10e(0x204))&&!MORPH_API_KEY[a0_0x44b10e(0x1db)](a0_0x44b10e(0x1d7))&&logMcpStderr(a0_0x44b10e(0x1fc));async function reportMorphError(_0x3f58b8){const _0x234063=a0_0x44b10e;try{await a0_0x59fae9[_0x234063(0x225)](_0x234063(0x24d),{..._0x3f58b8,'timestamp':new Date()['toISOString'](),'source':_0x3f58b8[_0x234063(0x1cf)]||_0x234063(0x19d),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x3f58b8[_0x234063(0x1ed)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x234063(0x214),'Authorization':_0x234063(0x21d)+MORPH_API_KEY}});}catch{}}args[a0_0x44b10e(0x149)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),logMcpStderr('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),logMcpStderr(a0_0x44b10e(0x184)),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr(a0_0x44b10e(0x181)),logMcpStderr(a0_0x44b10e(0x251)));function normalizePath(_0xabbb60){const _0xc0c11e=a0_0x44b10e;return a0_0x26b8f4[_0xc0c11e(0x233)](_0xabbb60);}function expandHome(_0x493855){const _0x11107b=a0_0x44b10e;if(_0x493855[_0x11107b(0x1db)]('~/')||_0x493855==='~')return a0_0x26b8f4[_0x11107b(0x22e)](a0_0x4b9a88['homedir'](),_0x493855[_0x11107b(0x1a9)](0x1));return _0x493855;}let allowedDirectories=await Promise[a0_0x44b10e(0x219)](args[a0_0x44b10e(0x17c)](async _0x1552ed=>{const _0x117a93=a0_0x44b10e,_0xc5ec45=expandHome(_0x1552ed),_0x89d2b7=a0_0x26b8f4[_0x117a93(0x252)](_0xc5ec45);try{const _0x37b673=await a0_0x3ad4a4[_0x117a93(0x221)](_0x89d2b7);return normalizePath(_0x37b673);}catch(_0x4c12a7){return normalizePath(_0x89d2b7);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x44b10e(0x149)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x44b10e(0x243)](workspaceDir),logMcpStderr('Workspace\x20mode\x20enabled:\x20Using\x20'+workspaceDir+a0_0x44b10e(0x246)));}catch(a0_0x3b9fab){logMcpStderr('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x3b9fab);}async function detectWorkspaceRoot(_0xf60772){const _0x55d66d=a0_0x44b10e;let _0x391dbf=a0_0x26b8f4['resolve'](_0xf60772);const _0x1d646d=[_0x55d66d(0x208),_0x55d66d(0x1bc),'package.json',_0x55d66d(0x217),'pyproject.toml',_0x55d66d(0x14d),'.cursor',_0x55d66d(0x1b3),_0x55d66d(0x1ac)];while(_0x391dbf!==a0_0x26b8f4[_0x55d66d(0x1d1)](_0x391dbf)){for(const _0x4fcd1f of _0x1d646d){const _0x3315ff=a0_0x26b8f4[_0x55d66d(0x22e)](_0x391dbf,_0x4fcd1f);try{return await a0_0x3ad4a4[_0x55d66d(0x172)](_0x3315ff),normalizePath(_0x391dbf);}catch{}}_0x391dbf=a0_0x26b8f4[_0x55d66d(0x1d1)](_0x391dbf);}return normalizePath(_0xf60772);}await Promise[a0_0x44b10e(0x219)](args[a0_0x44b10e(0x17c)](async _0x421b50=>{const _0x3ad356=a0_0x44b10e;try{const _0x378bd0=await a0_0x3ad4a4['stat'](expandHome(_0x421b50));!_0x378bd0[_0x3ad356(0x1a0)]()&&(logMcpStderr(_0x3ad356(0x1f4)+_0x421b50+_0x3ad356(0x232)),process[_0x3ad356(0x212)](0x1));}catch(_0x760d5a){logMcpStderr(_0x3ad356(0x14e)+_0x421b50+':',_0x760d5a),process[_0x3ad356(0x212)](0x1);}}));async function validatePath(_0x38df6c){const _0x4acfd7=a0_0x44b10e,_0x2eb799=expandHome(_0x38df6c),_0x190575=a0_0x26b8f4['resolve'](_0x2eb799);try{const _0x44864a=await a0_0x3ad4a4[_0x4acfd7(0x221)](_0x190575);return _0x44864a;}catch(_0x1508f4){if(_0x1508f4[_0x4acfd7(0x21f)]==='ENOENT'){const _0x4340ed=a0_0x26b8f4[_0x4acfd7(0x1d1)](_0x190575);try{const _0x2c5903=await a0_0x3ad4a4[_0x4acfd7(0x221)](_0x4340ed);return a0_0x26b8f4[_0x4acfd7(0x22e)](_0x2c5903,a0_0x26b8f4[_0x4acfd7(0x18d)](_0x190575));}catch{throw new Error(_0x4acfd7(0x250)+_0x4340ed);}}throw _0x1508f4;}}const MorphEditFileArgsSchema=z[a0_0x44b10e(0x1b6)]({'path':z[a0_0x44b10e(0x155)](),'code_edit':z[a0_0x44b10e(0x155)]()['describe'](a0_0x44b10e(0x175)),'instruction':z['string']()[a0_0x44b10e(0x1ee)](a0_0x44b10e(0x247)),'dryRun':z[a0_0x44b10e(0x234)]()[a0_0x44b10e(0x1a7)](![])['describe'](a0_0x44b10e(0x1f0))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x44b10e(0x249),WarpGrepArgsSchema=z[a0_0x44b10e(0x1b6)]({'search_string':z['string']()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x44b10e(0x155)]()[a0_0x44b10e(0x1ee)](a0_0x44b10e(0x151)),'search_type':z[a0_0x44b10e(0x1e2)]([a0_0x44b10e(0x1a7),'node_modules'])[a0_0x44b10e(0x238)]()['describe'](a0_0x44b10e(0x15d))}),WarpGrepGitHubArgsSchema=z[a0_0x44b10e(0x1b6)]({'search_string':z['string']()[a0_0x44b10e(0x1ee)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x44b10e(0x155)]()['optional']()['describe'](a0_0x44b10e(0x193)),'owner_repo':z['string']()['optional']()['describe']('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z[a0_0x44b10e(0x155)]()[a0_0x44b10e(0x238)]()['describe'](a0_0x44b10e(0x146))}),CodebaseSearchArgsSchema=z[a0_0x44b10e(0x1b6)]({'query':z[a0_0x44b10e(0x155)]()[a0_0x44b10e(0x1ee)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x44b10e(0x155)]()[a0_0x44b10e(0x1ee)](a0_0x44b10e(0x21c)),'branch':z[a0_0x44b10e(0x155)]()[a0_0x44b10e(0x238)]()[a0_0x44b10e(0x1ee)]('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x44b10e(0x155)]()[a0_0x44b10e(0x238)]()[a0_0x44b10e(0x1ee)](a0_0x44b10e(0x17e)),'targetDirectories':z[a0_0x44b10e(0x206)](z[a0_0x44b10e(0x155)]())[a0_0x44b10e(0x1a7)]([])['describe'](a0_0x44b10e(0x209)),'limit':z[a0_0x44b10e(0x191)]()[a0_0x44b10e(0x238)]()[a0_0x44b10e(0x1a7)](0xa)['describe']('Max\x20results\x20to\x20return')}),server=new Server({'name':a0_0x44b10e(0x240),'version':a0_0x44b10e(0x1fe)},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x5d1cb=a0_0x44b10e,_0xc9b8b3=[{'name':'edit_file','description':_0x5d1cb(0x150)+'⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a'+_0x5d1cb(0x1dc)+_0x5d1cb(0x186)+'Benefits:\x0a'+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x5d1cb(0x14b)+_0x5d1cb(0x16f)+_0x5d1cb(0x198)+_0x5d1cb(0x23a)+_0x5d1cb(0x1b4)+_0x5d1cb(0x1f2)+_0x5d1cb(0x1e0)+_0x5d1cb(0x21e)+'-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a'+_0x5d1cb(0x254)+_0x5d1cb(0x183)+_0x5d1cb(0x207)+_0x5d1cb(0x23d)+_0x5d1cb(0x210)+'-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a'+_0x5d1cb(0x1e1)+_0x5d1cb(0x218),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x5d1cb(0x1e3),'description':_0x5d1cb(0x242)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x5d1cb(0x16d)+'You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20'+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x18774a=_0xc9b8b3[_0x5d1cb(0x1cc)](_0x141a98=>{const _0x4fd4de=_0x5d1cb;if(DISABLED_TOOLS[_0x4fd4de(0x1c2)](_0x141a98[_0x4fd4de(0x23b)]))return console[_0x4fd4de(0x1cd)]('Tool\x20'+_0x141a98[_0x4fd4de(0x23b)]+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if('requiresApiKey'in _0x141a98&&_0x141a98[_0x4fd4de(0x203)]&&!MORPH_API_KEY)return logMcpStderr(_0x4fd4de(0x16b)+_0x141a98[_0x4fd4de(0x23b)]+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x18774a[_0x5d1cb(0x17c)](_0x419e33=>({'name':_0x419e33[_0x5d1cb(0x23b)],'description':_0x419e33[_0x5d1cb(0x24c)],'inputSchema':_0x419e33['inputSchema']}))};}),server[a0_0x44b10e(0x21b)](CallToolRequestSchema,async _0x12eb5a=>{const _0x55d2cb=a0_0x44b10e,{name:_0x55ad1d,arguments:_0x1d290b}=_0x12eb5a[_0x55d2cb(0x1b7)];try{if(DISABLED_TOOLS[_0x55d2cb(0x1c2)](_0x55ad1d))throw new Error(_0x55d2cb(0x167)+_0x55ad1d+'\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable');switch(_0x55ad1d){case _0x55d2cb(0x256):{const _0x4f9864=MorphEditFileArgsSchema[_0x55d2cb(0x1b2)](_0x1d290b);if(!_0x4f9864[_0x55d2cb(0x1cb)])throw new Error(_0x55d2cb(0x226)+_0x4f9864[_0x55d2cb(0x1cd)]);const _0x438405=await validatePath(_0x4f9864[_0x55d2cb(0x220)]['path']);let _0x2c4b7c=null,_0x504a64=!![],_0x3ef712=null;try{_0x2c4b7c=await a0_0x3ad4a4['readFile'](_0x438405,_0x55d2cb(0x1a8));}catch(_0xa9febc){const _0x2feda3=_0xa9febc[_0x55d2cb(0x21f)];_0x2feda3===_0x55d2cb(0x1e6)?(_0x504a64=![],_0x2c4b7c=''):(_0x3ef712=_0x55d2cb(0x158)+(_0x2feda3||_0x55d2cb(0x16a))+'\x20-\x20'+(_0xa9febc instanceof Error?_0xa9febc['message']:String(_0xa9febc)),logMcpStderr(_0x55d2cb(0x16b)+_0x3ef712));}let _0x75e48;try{const _0x3fa5e3=MORPH_API_KEY;if(!_0x3fa5e3)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x983471=a0_0x26b8f4[_0x55d2cb(0x1d1)](_0x438405),_0x411b2e=a0_0x26b8f4[_0x55d2cb(0x18d)](_0x438405),_0x1cde32=await executeEditFile({'target_filepath':_0x411b2e,'code_edit':_0x4f9864['data']['code_edit'],'instructions':_0x4f9864['data'][_0x55d2cb(0x1f3)]},{'morphApiKey':_0x3fa5e3,'morphApiUrl':MORPH_API_URL,'baseDir':_0x983471,'autoWrite':!_0x4f9864['data'][_0x55d2cb(0x1b8)],'generateUdiff':![],'debug':![]});_0x75e48=_0x1cde32[_0x55d2cb(0x1fa)];if(!_0x1cde32['success'])throw new Error(_0x1cde32[_0x55d2cb(0x1cd)]||_0x55d2cb(0x241));const _0x1050b3=_0x1cde32['changes'],_0x426217='added\x20'+_0x1050b3[_0x55d2cb(0x1ec)]+_0x55d2cb(0x248)+_0x1050b3[_0x55d2cb(0x255)]+_0x55d2cb(0x153)+_0x1050b3['linesModified'];if(_0x4f9864['data'][_0x55d2cb(0x1b8)])return{'content':[{'type':_0x55d2cb(0x1f7),'text':_0x55d2cb(0x18e)+(_0x504a64?'':_0x55d2cb(0x1aa))+':\x20'+_0x4f9864['data'][_0x55d2cb(0x1f3)]+_0x55d2cb(0x1f5)+_0x426217+_0x55d2cb(0x215)+_0x4f9864[_0x55d2cb(0x220)][_0x55d2cb(0x1ca)]+'.'}]};return{'content':[{'type':_0x55d2cb(0x1f7),'text':_0x55d2cb(0x1fd)+(_0x504a64?_0x55d2cb(0x164):_0x55d2cb(0x182))+':\x20'+_0x4f9864[_0x55d2cb(0x220)][_0x55d2cb(0x1f3)]+_0x55d2cb(0x1f5)+_0x426217+_0x55d2cb(0x215)+_0x4f9864[_0x55d2cb(0x220)][_0x55d2cb(0x1ca)]+'.'}]};}catch(_0x14a89e){const _0x7d70e3=_0x14a89e instanceof Error?_0x14a89e[_0x55d2cb(0x1ab)]:String(_0x14a89e);return reportMorphError({'error_message':_0x7d70e3,'error_type':_0x14a89e instanceof Error?_0x14a89e[_0x55d2cb(0x17d)][_0x55d2cb(0x23b)]:'UnknownError','context':{'tool':_0x55d2cb(0x256),'completion_id':_0x75e48,'file_path':_0x4f9864[_0x55d2cb(0x220)][_0x55d2cb(0x1ca)],'validated_path':_0x438405,'instruction':_0x4f9864['data'][_0x55d2cb(0x1f3)],'model':_0x55d2cb(0x156),'dry_run':_0x4f9864['data'][_0x55d2cb(0x1b8)],'file_exists':_0x504a64,'file_read_error':_0x3ef712,'file_readable':_0x2c4b7c!==null,'request_content':{'path':_0x4f9864[_0x55d2cb(0x220)][_0x55d2cb(0x1ca)],'code_edit':_0x4f9864[_0x55d2cb(0x220)][_0x55d2cb(0x162)],'instruction':_0x4f9864[_0x55d2cb(0x220)][_0x55d2cb(0x1f3)],'original_code':_0x2c4b7c!==null?_0x2c4b7c[_0x55d2cb(0x149)]>0xc350?_0x2c4b7c['substring'](0x0,0xc350)+_0x55d2cb(0x20e)+_0x2c4b7c[_0x55d2cb(0x149)]+_0x55d2cb(0x1c1):_0x2c4b7c:_0x55d2cb(0x147)+(_0x3ef712||'unknown\x20error')+']','original_code_length':_0x2c4b7c?.[_0x55d2cb(0x149)]??0x0,'model':_0x55d2cb(0x156),'dry_run':_0x4f9864[_0x55d2cb(0x220)][_0x55d2cb(0x1b8)]}},'stack_trace':_0x14a89e instanceof Error?_0x14a89e[_0x55d2cb(0x187)]:undefined,'source':_0x55d2cb(0x19d)})[_0x55d2cb(0x1a6)](()=>{}),{'content':[{'type':_0x55d2cb(0x1f7),'text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x7d70e3}],'isError':!![]};}}case'codebase_search':{const _0x4ba8e2=WarpGrepArgsSchema[_0x55d2cb(0x1b2)](_0x1d290b);if(!_0x4ba8e2['success'])return{'content':[{'type':_0x55d2cb(0x1f7),'text':'Invalid\x20arguments:\x20'+_0x4ba8e2[_0x55d2cb(0x1cd)]}],'isError':!![]};const _0x1c14a7=_0x211625=>{const _0x10b2ac=_0x55d2cb,_0x4080fc=[];for(const _0x3d1ab5 of _0x211625||[]){if(_0x3d1ab5[_0x10b2ac(0x17a)]===_0x10b2ac(0x224)&&Array[_0x10b2ac(0x20f)](_0x3d1ab5[_0x10b2ac(0x1c0)]))for(const _0x189903 of _0x3d1ab5['tool_calls']){try{const _0x4e58e5=_0x189903['function']?.[_0x10b2ac(0x23b)],_0x2797ab=JSON['parse'](_0x189903[_0x10b2ac(0x16c)]?.['arguments']||'{}');if(_0x4e58e5==='grep_search')_0x4080fc['push'](_0x10b2ac(0x14f)+_0x2797ab['pattern']+'\x27\x20'+(_0x2797ab[_0x10b2ac(0x1ca)]||'.'));else{if(_0x4e58e5===_0x10b2ac(0x1c3))_0x4080fc[_0x10b2ac(0x243)](_0x10b2ac(0x14a)+_0x2797ab['path']);else{if(_0x4e58e5==='list_directory')_0x4080fc[_0x10b2ac(0x243)](_0x10b2ac(0x245)+(_0x2797ab[_0x10b2ac(0x1c8)]||'.'));else{if(_0x4e58e5==='glob')_0x4080fc[_0x10b2ac(0x243)](_0x10b2ac(0x1d5)+_0x2797ab[_0x10b2ac(0x1b9)]+'\x27\x20'+(_0x2797ab['path']||'.'));else _0x4e58e5===_0x10b2ac(0x20c)&&_0x4080fc[_0x10b2ac(0x243)](_0x10b2ac(0x20c));}}}}catch{}}}return _0x4080fc;},_0x5ebbab=_0x6705a9=>{const _0x3069b9=_0x55d2cb,_0x27c436=[];if(!_0x6705a9||!Array[_0x3069b9(0x20f)](_0x6705a9))return _0x27c436;const _0x1d59be=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x3069b9(0x15f),'tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':_0x3069b9(0x237),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x3069b9(0x173),'tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x3069b9(0x161),'tool':_0x3069b9(0x1c3)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x3069b9(0x188),'tool':_0x3069b9(0x20a)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x3069b9(0x1ea),'tool':'grep'},{'pattern':/\[BINARY FILE\]/,'error_type':'BinaryFile','tool':_0x3069b9(0x1c3)},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':'read'},{'pattern':/not a text file/,'error_type':_0x3069b9(0x161),'tool':_0x3069b9(0x1c3)},{'pattern':/symbolic link/,'error_type':_0x3069b9(0x189),'tool':_0x3069b9(0x1c3)},{'pattern':/Error reading file:/,'error_type':_0x3069b9(0x173),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x3069b9(0x235),'tool':_0x3069b9(0x16a)}];let _0x3dc4a4=0x0;for(const _0x4f2e5c of _0x6705a9){_0x4f2e5c[_0x3069b9(0x17a)]===_0x3069b9(0x224)&&Array[_0x3069b9(0x20f)](_0x4f2e5c[_0x3069b9(0x1c0)])&&_0x3dc4a4++;const _0x389e1b=_0x4f2e5c[_0x3069b9(0x18b)];if((_0x4f2e5c[_0x3069b9(0x17a)]===_0x3069b9(0x211)||_0x4f2e5c['role']===_0x3069b9(0x165))&&_0x389e1b&&typeof _0x389e1b===_0x3069b9(0x155))for(const {pattern:_0xc5a763,error_type:_0x4d75fc,tool:_0x46ed21}of _0x1d59be){const _0x3749a1=_0x389e1b[_0x3069b9(0x154)](new RegExp(_0xc5a763['source'],'g'));if(_0x3749a1)for(const _0x4ef0f9 of _0x3749a1){const _0x5e3dde=_0x389e1b[_0x3069b9(0x180)](_0x4ef0f9),_0x1da0d8=_0x389e1b[_0x3069b9(0x197)](_0x5e3dde,Math[_0x3069b9(0x1e8)](_0x5e3dde+0xc8,_0x389e1b[_0x3069b9(0x149)]));_0x27c436[_0x3069b9(0x243)]({'tool':_0x46ed21,'error_type':_0x4d75fc,'error_message':_0x1da0d8[_0x3069b9(0x202)]('\x0a')[0x0],'turn':_0x3dc4a4});}}}return _0x27c436;};try{const _0x3293a9=a0_0x26b8f4[_0x55d2cb(0x252)](_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x159)]),_0x55a9ac=_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x21a)],_0x489b01=_0x55a9ac===_0x55d2cb(0x22c)?{'allowNames':[_0x55d2cb(0x22c)]}:undefined,_0x37ea6c=new LocalRipgrepProvider(_0x3293a9,undefined,_0x489b01),_0x34798b=await runWarpGrep({'searchTerm':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x1ba)],'repoRoot':_0x3293a9,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x37ea6c,'search_type':_0x55a9ac}),_0x2d1ebc=_0x5ebbab(_0x34798b[_0x55d2cb(0x168)]);_0x2d1ebc[_0x55d2cb(0x149)]>0x0&&reportMorphError({'error_message':_0x55d2cb(0x22d)+_0x2d1ebc[_0x55d2cb(0x149)]+_0x55d2cb(0x230),'error_type':'SubToolError','level':_0x55d2cb(0x1f9),'tool':_0x55d2cb(0x1e3),'context':{'repo_path':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x159)],'query':_0x4ba8e2[_0x55d2cb(0x220)]['search_string'],'model':_0x55d2cb(0x1fb),'termination_reason':_0x34798b[_0x55d2cb(0x1f1)],'sub_tool_errors':_0x2d1ebc,'timings':_0x34798b['timings'],'tool_calls':_0x1c14a7(_0x34798b['messages']),'messages':_0x34798b['messages']?.[_0x55d2cb(0x17c)](_0x346abb=>({'role':_0x346abb[_0x55d2cb(0x17a)],'content':_0x346abb['content'],..._0x346abb[_0x55d2cb(0x1c0)]?{'tool_calls':_0x346abb[_0x55d2cb(0x1c0)][_0x55d2cb(0x149)]}:{},..._0x346abb[_0x55d2cb(0x23e)]?{'tool_call_id':_0x346abb[_0x55d2cb(0x23e)]}:{}}))},'source':_0x55d2cb(0x19d)})[_0x55d2cb(0x1a6)](()=>{});let _0x365493='';if(_0x34798b[_0x55d2cb(0x1f1)]===_0x55d2cb(0x196)&&_0x34798b['finish']?.[_0x55d2cb(0x1ce)]?.[_0x55d2cb(0x1d0)]){const _0x59df51=_0x34798b['finish'][_0x55d2cb(0x1ce)][_0x55d2cb(0x1d0)];if(_0x59df51[_0x55d2cb(0x149)]===0x0)return _0x365493=_0x34798b[_0x55d2cb(0x20c)][_0x55d2cb(0x257)]||_0x55d2cb(0x1e7),{'content':[{'type':'text','text':_0x365493}]};const _0x3755e2=[],_0x55e544=[_0x55d2cb(0x239)];for(const _0x4791ee of _0x34798b[_0x55d2cb(0x168)]){if(_0x4791ee['role']===_0x55d2cb(0x224)&&Array[_0x55d2cb(0x20f)](_0x4791ee[_0x55d2cb(0x1c0)]))for(const _0x1e2242 of _0x4791ee[_0x55d2cb(0x1c0)]){try{const _0x22cbb2=_0x1e2242[_0x55d2cb(0x16c)]?.[_0x55d2cb(0x23b)],_0x2fdb40=JSON[_0x55d2cb(0x18f)](_0x1e2242[_0x55d2cb(0x16c)]?.['arguments']||'{}');if(_0x22cbb2===_0x55d2cb(0x1c5))_0x55e544[_0x55d2cb(0x243)]('-\x20Grepped\x20\x27'+_0x2fdb40['pattern']+_0x55d2cb(0x1c9)+(_0x2fdb40[_0x55d2cb(0x1ca)]||'.')+'`');else{if(_0x22cbb2===_0x55d2cb(0x1c3))_0x55e544['push'](_0x55d2cb(0x170)+_0x2fdb40['path']+'`');else{if(_0x22cbb2===_0x55d2cb(0x23c))_0x55e544[_0x55d2cb(0x243)]('-\x20Listed\x20directory\x20`'+(_0x2fdb40[_0x55d2cb(0x1c8)]||'.')+'`');else _0x22cbb2===_0x55d2cb(0x200)&&_0x55e544[_0x55d2cb(0x243)](_0x55d2cb(0x20d)+_0x2fdb40[_0x55d2cb(0x1b9)]+_0x55d2cb(0x15c)+(_0x2fdb40[_0x55d2cb(0x1ca)]||'.')+'`');}}}catch{}}}_0x3755e2['push'](_0x55e544['join']('\x0a'));const _0x189459=['',_0x55d2cb(0x1bf)];for(const _0x16aa30 of _0x59df51){if(_0x16aa30['lines']==='*')_0x189459[_0x55d2cb(0x243)]('-\x20'+_0x16aa30[_0x55d2cb(0x1ca)]+':*');else{if(Array[_0x55d2cb(0x20f)](_0x16aa30[_0x55d2cb(0x19c)])){const _0x5d06b6=_0x16aa30[_0x55d2cb(0x19c)][_0x55d2cb(0x17c)](([_0x32c87e,_0x2d063a])=>{if(_0x32c87e===_0x2d063a)return''+_0x32c87e;return _0x32c87e+'-'+_0x2d063a;});_0x189459[_0x55d2cb(0x243)]('-\x20'+_0x16aa30[_0x55d2cb(0x1ca)]+':'+_0x5d06b6[_0x55d2cb(0x22e)](','));}else _0x189459[_0x55d2cb(0x243)]('-\x20'+_0x16aa30[_0x55d2cb(0x1ca)]+':*');}}_0x189459[_0x55d2cb(0x243)](''),_0x3755e2['push'](_0x189459[_0x55d2cb(0x22e)]('\x0a')),_0x3755e2[_0x55d2cb(0x243)]('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x5bbe0a=[];for(const _0x23adb7 of _0x59df51){let _0x5699d3=a0_0x26b8f4['resolve'](_0x4ba8e2[_0x55d2cb(0x220)]['repo_path'],_0x23adb7['path']),_0x389630=null,_0x318a72=null;try{_0x389630=await a0_0x3ad4a4['readFile'](_0x5699d3,{'encoding':'utf-8'});}catch(_0x1d6c6e){const _0x1bed11=fixPathRepetition(_0x5699d3);if(_0x1bed11)try{_0x389630=await a0_0x3ad4a4[_0x55d2cb(0x1e4)](_0x1bed11,{'encoding':_0x55d2cb(0x1a8)}),_0x5699d3=_0x1bed11;}catch{_0x318a72=_0x1d6c6e instanceof Error?_0x1d6c6e:new Error(String(_0x1d6c6e));}else _0x318a72=_0x1d6c6e instanceof Error?_0x1d6c6e:new Error(String(_0x1d6c6e));}if(_0x389630!==null){const _0x3fcd98=_0x389630[_0x55d2cb(0x202)](/\r?\n/),_0x16e044=[_0x55d2cb(0x227)+_0x23adb7['path']+'\x22>'];if(_0x23adb7['lines']==='*'||!Array[_0x55d2cb(0x20f)](_0x23adb7['lines']))for(let _0x4e9a43=0x1;_0x4e9a43<=_0x3fcd98[_0x55d2cb(0x149)];_0x4e9a43++){const _0x577609=_0x3fcd98[_0x4e9a43-0x1];_0x16e044['push'](_0x4e9a43+'|\x20'+_0x577609);}else for(const [_0x556e1c,_0x58b016]of _0x23adb7[_0x55d2cb(0x19c)]){_0x16e044[_0x55d2cb(0x149)]>0x1&&_0x16e044[_0x55d2cb(0x243)]('');for(let _0x3efc6d=_0x556e1c;_0x3efc6d<=_0x58b016&&_0x3efc6d<=_0x3fcd98[_0x55d2cb(0x149)];_0x3efc6d++){const _0x2d71cf=_0x3fcd98[_0x3efc6d-0x1];_0x16e044[_0x55d2cb(0x243)](_0x3efc6d+'|\x20'+_0x2d71cf);}}_0x16e044[_0x55d2cb(0x243)](_0x55d2cb(0x199)),_0x5bbe0a['push'](_0x16e044[_0x55d2cb(0x22e)]('\x0a'));}else _0x5bbe0a['push'](_0x55d2cb(0x227)+_0x23adb7[_0x55d2cb(0x1ca)]+_0x55d2cb(0x1c6)+(_0x318a72?.[_0x55d2cb(0x1ab)]||_0x55d2cb(0x195))+'\x0a</file>');}_0x3755e2['push'](_0x5bbe0a[_0x55d2cb(0x22e)]('\x0a\x0a')),_0x365493=_0x3755e2[_0x55d2cb(0x22e)]('\x0a');const _0x4d3913=_0x34798b[_0x55d2cb(0x1bb)]?.[_0x55d2cb(0x1cc)](_0xb9bb72=>_0xb9bb72[_0x55d2cb(0x1ab)]?.[_0x55d2cb(0x1db)](_0x55d2cb(0x205)))||[];if(_0x4d3913[_0x55d2cb(0x149)]>0x0){const _0x55f336=_0x4d3913['map'](_0x27c33b=>_0x27c33b[_0x55d2cb(0x1ab)])[_0x55d2cb(0x22e)](';\x20');reportMorphError({'error_message':_0x55f336,'error_type':_0x55d2cb(0x19a),'context':{'tool':_0x55d2cb(0x1e3),'repo_path':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x159)],'query':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x1ba)],'model':_0x55d2cb(0x1fb),'termination_reason':_0x55d2cb(0x176),'error_count':_0x4d3913[_0x55d2cb(0x149)],'is_timeout':![],'timings':_0x34798b[_0x55d2cb(0x166)],'files_attempted':_0x59df51[_0x55d2cb(0x17c)](_0xb22048=>({'path':_0xb22048[_0x55d2cb(0x1ca)],'lines':_0xb22048[_0x55d2cb(0x19c)]})),'tool_calls':_0x1c14a7(_0x34798b[_0x55d2cb(0x168)]),'messages':_0x34798b[_0x55d2cb(0x168)]?.['map'](_0xded576=>({'role':_0xded576[_0x55d2cb(0x17a)],'content':_0xded576[_0x55d2cb(0x18b)],..._0xded576['tool_calls']?{'tool_calls':_0xded576[_0x55d2cb(0x1c0)][_0x55d2cb(0x149)]}:{},..._0xded576['tool_call_id']?{'tool_call_id':_0xded576[_0x55d2cb(0x23e)]}:{}})),'request_content':{'query':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x1ba)],'repo_path':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x159)],'repoRoot':a0_0x26b8f4['resolve'](_0x4ba8e2[_0x55d2cb(0x220)]['repo_path']),'model':_0x55d2cb(0x1fb)}},'source':_0x55d2cb(0x19d)})['catch'](()=>{});}}else{if(_0x34798b[_0x55d2cb(0x1f1)]===_0x55d2cb(0x174)&&_0x34798b[_0x55d2cb(0x1bb)][_0x55d2cb(0x149)]>0x0){const _0x482766=_0x34798b['errors'][_0x55d2cb(0x17c)](_0x10fa6e=>_0x10fa6e['message'])['join'](';\x20');_0x365493=_0x55d2cb(0x1f4)+_0x482766;const _0x2cd088=_0x482766[_0x55d2cb(0x194)]()[_0x55d2cb(0x15a)]('timeout')||_0x482766[_0x55d2cb(0x194)]()[_0x55d2cb(0x15a)](_0x55d2cb(0x1e9))||_0x482766[_0x55d2cb(0x194)]()[_0x55d2cb(0x15a)](_0x55d2cb(0x157)),_0x633bbe=_0x34798b[_0x55d2cb(0x20c)]?.[_0x55d2cb(0x1ce)]?.[_0x55d2cb(0x1d0)],_0xd0d476=_0x34798b[_0x55d2cb(0x1bb)][0x0];reportMorphError({'error_message':_0x482766,'error_type':_0x2cd088?_0x55d2cb(0x1f8):_0xd0d476?.['constructor']?.[_0x55d2cb(0x23b)]||_0x55d2cb(0x1c4),'context':{'tool':_0x55d2cb(0x1e3),'repo_path':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x159)],'query':_0x4ba8e2['data']['search_string'],'model':'morph-warp-grep-v2.1','termination_reason':_0x34798b[_0x55d2cb(0x1f1)],'error_count':_0x34798b['errors']['length'],'is_timeout':_0x2cd088,'timings':_0x34798b['timings'],'files_attempted':_0x633bbe?.[_0x55d2cb(0x17c)](_0x1cb2f0=>({'path':_0x1cb2f0[_0x55d2cb(0x1ca)],'lines':_0x1cb2f0[_0x55d2cb(0x19c)]})),'tool_calls':_0x1c14a7(_0x34798b['messages']),'messages':_0x34798b[_0x55d2cb(0x168)]?.[_0x55d2cb(0x17c)](_0xafd9c8=>({'role':_0xafd9c8['role'],'content':_0xafd9c8[_0x55d2cb(0x18b)],..._0xafd9c8[_0x55d2cb(0x1c0)]?{'tool_calls':_0xafd9c8[_0x55d2cb(0x1c0)][_0x55d2cb(0x149)]}:{},..._0xafd9c8[_0x55d2cb(0x23e)]?{'tool_call_id':_0xafd9c8[_0x55d2cb(0x23e)]}:{}})),'request_content':{'query':_0x4ba8e2[_0x55d2cb(0x220)]['search_string'],'repo_path':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x159)],'repoRoot':a0_0x26b8f4[_0x55d2cb(0x252)](_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x159)]),'model':_0x55d2cb(0x1fb)}},'stack_trace':_0xd0d476?.['stack']||undefined,'source':_0x55d2cb(0x19d)})['catch'](()=>{});}else _0x365493=_0x55d2cb(0x185);}return{'content':[{'type':_0x55d2cb(0x1f7),'text':_0x365493}]};}catch(_0x5812b9){const _0x40a6f6=_0x5812b9 instanceof Error?_0x5812b9[_0x55d2cb(0x1ab)]:String(_0x5812b9),_0x967587=_0x40a6f6[_0x55d2cb(0x194)]()['includes'](_0x55d2cb(0x1d2))||_0x40a6f6[_0x55d2cb(0x194)]()[_0x55d2cb(0x15a)](_0x55d2cb(0x1e9))||_0x40a6f6[_0x55d2cb(0x194)]()[_0x55d2cb(0x15a)](_0x55d2cb(0x157))||_0x5812b9 instanceof Error&&_0x5812b9[_0x55d2cb(0x23b)]===_0x55d2cb(0x1f8);return reportMorphError({'error_message':_0x40a6f6,'error_type':_0x967587?'TimeoutError':_0x5812b9 instanceof Error?_0x5812b9[_0x55d2cb(0x17d)]['name']:_0x55d2cb(0x1b1),'context':{'tool':_0x55d2cb(0x1e3),'repo_path':_0x4ba8e2['data'][_0x55d2cb(0x159)],'query':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x1ba)],'model':_0x55d2cb(0x1fb),'is_timeout':_0x967587,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x1ba)],'repo_path':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x159)],'repoRoot':a0_0x26b8f4[_0x55d2cb(0x252)](_0x4ba8e2[_0x55d2cb(0x220)]['repo_path']),'model':_0x55d2cb(0x1fb)}},'stack_trace':_0x5812b9 instanceof Error?_0x5812b9[_0x55d2cb(0x187)]:undefined,'source':'mcp-filesystem'})['catch'](()=>{}),{'content':[{'type':_0x55d2cb(0x1f7),'text':_0x55d2cb(0x24f)+_0x40a6f6}],'isError':![]};}}case _0x55d2cb(0x179):{const _0x1de931=WarpGrepGitHubArgsSchema[_0x55d2cb(0x1b2)](_0x1d290b);if(!_0x1de931[_0x55d2cb(0x1cb)])return{'content':[{'type':_0x55d2cb(0x1f7),'text':_0x55d2cb(0x201)+_0x1de931[_0x55d2cb(0x1cd)]}],'isError':!![]};const _0xbe92b6=_0x1de931[_0x55d2cb(0x220)][_0x55d2cb(0x1be)]||_0x1de931['data'][_0x55d2cb(0x15b)];if(!_0xbe92b6)return{'content':[{'type':_0x55d2cb(0x1f7),'text':'Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id'}],'isError':!![]};const _0x218e2e=MORPH_API_KEY;if(!_0x218e2e)throw new Error(_0x55d2cb(0x19b));const _0x2e441=Date['now']();logMcpStderr(_0x55d2cb(0x20b)+_0xbe92b6+_0x55d2cb(0x163)+_0x1de931[_0x55d2cb(0x220)][_0x55d2cb(0x1ba)]+'\x22');try{const _0x4339b5=new WarpGrepClient({'morphApiKey':_0x218e2e,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x5a9b50=await _0x4339b5[_0x55d2cb(0x1bd)]({'searchTerm':_0x1de931['data'][_0x55d2cb(0x1ba)],'github':_0xbe92b6,'branch':_0x1de931['data'][_0x55d2cb(0x223)]}),_0x172205=Date['now']()-_0x2e441;logMcpStderr(_0x55d2cb(0x231)+_0x172205+'ms.\x20Success:\x20'+_0x5a9b50[_0x55d2cb(0x1cb)]);const _0x45b36=formatResult(_0x5a9b50);return{'content':[{'type':_0x55d2cb(0x1f7),'text':_0x45b36}]};}catch(_0x1f8ef3){const _0x658641=Date[_0x55d2cb(0x1ff)]()-_0x2e441,_0x3ed941=_0x1f8ef3 instanceof Error?_0x1f8ef3[_0x55d2cb(0x1ab)]:String(_0x1f8ef3);return logMcpStderr(_0x55d2cb(0x15e)+_0x658641+_0x55d2cb(0x1da),_0x3ed941),reportMorphError({'error_message':_0x3ed941,'error_type':_0x1f8ef3 instanceof Error?_0x1f8ef3[_0x55d2cb(0x17d)]['name']:_0x55d2cb(0x1b1),'context':{'tool':_0x55d2cb(0x179),'github_url':_0xbe92b6,'search_string':_0x1de931[_0x55d2cb(0x220)][_0x55d2cb(0x1ba)],'branch':_0x1de931[_0x55d2cb(0x220)][_0x55d2cb(0x223)]},'stack_trace':_0x1f8ef3 instanceof Error?_0x1f8ef3[_0x55d2cb(0x187)]:undefined,'source':_0x55d2cb(0x19d),'tool':_0x55d2cb(0x179),'latency_ms':_0x658641})['catch'](()=>{}),{'content':[{'type':_0x55d2cb(0x1f7),'text':_0x55d2cb(0x1a1)+_0x3ed941}],'isError':![]};}}default:throw new Error(_0x55d2cb(0x216)+_0x55ad1d);}}catch(_0x556a1e){const _0x4668f9=_0x556a1e instanceof Error?_0x556a1e['message']:String(_0x556a1e);return reportMorphError({'error_message':_0x4668f9,'error_type':_0x556a1e instanceof Error?_0x556a1e[_0x55d2cb(0x17d)]['name']:_0x55d2cb(0x1b1),'context':{'tool':_0x55ad1d,'arguments':_0x1d290b?JSON[_0x55d2cb(0x22f)](_0x1d290b)[_0x55d2cb(0x197)](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x556a1e instanceof Error?_0x556a1e[_0x55d2cb(0x187)]:undefined,'source':'mcp-filesystem'})[_0x55d2cb(0x1a6)](()=>{}),{'content':[{'type':_0x55d2cb(0x1f7),'text':'Error:\x20'+_0x4668f9}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x3a6c4b){const _0xa2f036=a0_0x44b10e,_0x5ea7be=await getValidRootDirectories(_0x3a6c4b);if(_0x5ea7be[_0xa2f036(0x149)]>0x0)allowedDirectories=[..._0x5ea7be],logMcpStderr(_0xa2f036(0x169)+_0x5ea7be[_0xa2f036(0x149)]+'\x20valid\x20directories');else{logMcpStderr(_0xa2f036(0x1f6));if(ENABLE_WORKSPACE_MODE)try{const _0x1bab50=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x1bab50&&(allowedDirectories=[_0x1bab50],logMcpStderr(_0xa2f036(0x1de)+_0x1bab50));}catch(_0x14a9bb){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x14a9bb);}}}server[a0_0x44b10e(0x17f)](RootsListChangedNotificationSchema,async()=>{const _0x4550f7=a0_0x44b10e;try{const _0x281019=await server[_0x4550f7(0x145)]();_0x281019&&_0x4550f7(0x24b)in _0x281019&&await updateAllowedDirectoriesFromRoots(_0x281019[_0x4550f7(0x24b)]);}catch(_0x4343f2){logMcpStderr(_0x4550f7(0x19f),_0x4343f2 instanceof Error?_0x4343f2[_0x4550f7(0x1ab)]:String(_0x4343f2));}}),server['oninitialized']=async()=>{const _0x3156ae=a0_0x44b10e,_0x46fa78=server['getClientCapabilities']();if(_0x46fa78?.[_0x3156ae(0x24b)])try{const _0x1703b0=await server[_0x3156ae(0x145)]();_0x1703b0&&_0x3156ae(0x24b)in _0x1703b0?await updateAllowedDirectoriesFromRoots(_0x1703b0[_0x3156ae(0x24b)]):logMcpStderr(_0x3156ae(0x14c));}catch(_0x8dd87f){logMcpStderr(_0x3156ae(0x18a),_0x8dd87f instanceof Error?_0x8dd87f[_0x3156ae(0x1ab)]:String(_0x8dd87f));}else{if(allowedDirectories[_0x3156ae(0x149)]>0x0)logMcpStderr(_0x3156ae(0x236),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x3156ae(0x1a5));else throw new Error(_0x3156ae(0x222));}}};async function runServer(){const _0x345199=a0_0x44b10e,_0x1b9c4e=new StdioServerTransport();await server[_0x345199(0x16e)](_0x1b9c4e),logMcpStderr(_0x345199(0x1b5)),allowedDirectories[_0x345199(0x149)]===0x0&&logMcpStderr('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()['catch'](_0x29011d=>{const _0x3bb42e=a0_0x44b10e;logMcpStderr(_0x3bb42e(0x253),_0x29011d),process['exit'](0x1);});
package/dist/log-utils.js CHANGED
@@ -1 +1 @@
1
- var a1_0x2de3c1=a1_0x2fe7;(function(_0x3a8681,_0x36f307){var _0x100582=a1_0x2fe7,_0x3935ee=_0x3a8681();while(!![]){try{var _0x3f61ce=parseInt(_0x100582(0x18e))/0x1*(-parseInt(_0x100582(0x18f))/0x2)+parseInt(_0x100582(0x192))/0x3+-parseInt(_0x100582(0x195))/0x4+-parseInt(_0x100582(0x197))/0x5*(parseInt(_0x100582(0x199))/0x6)+parseInt(_0x100582(0x19a))/0x7+-parseInt(_0x100582(0x196))/0x8+parseInt(_0x100582(0x191))/0x9;if(_0x3f61ce===_0x36f307)break;else _0x3935ee['push'](_0x3935ee['shift']());}catch(_0xd02904){_0x3935ee['push'](_0x3935ee['shift']());}}}(a1_0x5979,0x52500));import a1_0x48b03c from'os';export function getOperatingSystemType(_0x1c5954=a1_0x48b03c['platform']()){var _0xa70cab=a1_0x2fe7;switch(_0x1c5954){case _0xa70cab(0x194):return'macOS';case _0xa70cab(0x190):return _0xa70cab(0x18d);case _0xa70cab(0x18b):return _0xa70cab(0x193);default:return'Unknown';}}function a1_0x2fe7(_0x26c2ad,_0x4a5265){_0x26c2ad=_0x26c2ad-0x18b;var _0x597961=a1_0x5979();var _0x2fe79e=_0x597961[_0x26c2ad];return _0x2fe79e;}function a1_0x5979(){var _0x3cd55f=['109498SeUuJf','win32','8705970dXUsay','282177AbVqbA','Linux','darwin','1162072cnYTWF','1924184fQMsnb','10iAAZwW','error','486288bqthml','548786JniajK','platform','linux','[os=','Windows','2SupXWK'];a1_0x5979=function(){return _0x3cd55f;};return a1_0x5979();}export function formatMcpLogMessage(_0x30c7c9,_0x286e5c=a1_0x48b03c[a1_0x2de3c1(0x19b)]()){var _0x9d3187=a1_0x2de3c1;return _0x9d3187(0x18c)+getOperatingSystemType(_0x286e5c)+']\x20'+_0x30c7c9;}export function logMcpStderr(_0x45cfe0,..._0xa6d900){var _0xed14e7=a1_0x2de3c1;console[_0xed14e7(0x198)](formatMcpLogMessage(_0x45cfe0),..._0xa6d900);}
1
+ var a1_0x353cfc=a1_0x2cc7;function a1_0x23bc(){var _0x27721b=['1076744uhnryp','macOS','Unknown','3DQCYaC','736865CPrruF','528752zSnGOF','platform','linux','[os=','2788792Ocmwnu','9YkCsFP','72496OkGjQW','1018794yaMAGJ','darwin','508348DjNduR','Linux','error','Windows'];a1_0x23bc=function(){return _0x27721b;};return a1_0x23bc();}(function(_0x4fa562,_0x423145){var _0x446b1a=a1_0x2cc7,_0x9565fb=_0x4fa562();while(!![]){try{var _0x3e5b71=parseInt(_0x446b1a(0xc1))/0x1+parseInt(_0x446b1a(0xb2))/0x2*(parseInt(_0x446b1a(0xb9))/0x3)+parseInt(_0x446b1a(0xb6))/0x4+parseInt(_0x446b1a(0xba))/0x5+-parseInt(_0x446b1a(0xc2))/0x6+-parseInt(_0x446b1a(0xbb))/0x7+-parseInt(_0x446b1a(0xbf))/0x8*(parseInt(_0x446b1a(0xc0))/0x9);if(_0x3e5b71===_0x423145)break;else _0x9565fb['push'](_0x9565fb['shift']());}catch(_0x1dee34){_0x9565fb['push'](_0x9565fb['shift']());}}}(a1_0x23bc,0x2472f));function a1_0x2cc7(_0x4f6796,_0x4df9f7){_0x4f6796=_0x4f6796-0xb1;var _0x23bcb5=a1_0x23bc();var _0x2cc7f5=_0x23bcb5[_0x4f6796];return _0x2cc7f5;}import a1_0x5ca8d2 from'os';export function getOperatingSystemType(_0x5af354=a1_0x5ca8d2['platform']()){var _0x19a99b=a1_0x2cc7;switch(_0x5af354){case _0x19a99b(0xb1):return _0x19a99b(0xb7);case'win32':return _0x19a99b(0xb5);case _0x19a99b(0xbd):return _0x19a99b(0xb3);default:return _0x19a99b(0xb8);}}export function formatMcpLogMessage(_0x263e29,_0x19b5a8=a1_0x5ca8d2[a1_0x353cfc(0xbc)]()){var _0xdc577d=a1_0x353cfc;return _0xdc577d(0xbe)+getOperatingSystemType(_0x19b5a8)+']\x20'+_0x263e29;}export function logMcpStderr(_0x459ba6,..._0x21e961){var _0x4b8393=a1_0x353cfc;console[_0x4b8393(0xb4)](formatMcpLogMessage(_0x459ba6),..._0x21e961);}
@@ -1 +1 @@
1
- (function(_0x216695,_0x52b0f2){const _0x102078=a2_0x21d1,_0x50310a=_0x216695();while(!![]){try{const _0x223ca1=-parseInt(_0x102078(0x12a))/0x1*(parseInt(_0x102078(0x127))/0x2)+-parseInt(_0x102078(0x12f))/0x3*(-parseInt(_0x102078(0x11d))/0x4)+parseInt(_0x102078(0x12d))/0x5+parseInt(_0x102078(0x12b))/0x6+parseInt(_0x102078(0x119))/0x7*(-parseInt(_0x102078(0x120))/0x8)+-parseInt(_0x102078(0x128))/0x9+-parseInt(_0x102078(0x12e))/0xa*(-parseInt(_0x102078(0x11b))/0xb);if(_0x223ca1===_0x52b0f2)break;else _0x50310a['push'](_0x50310a['shift']());}catch(_0x260193){_0x50310a['push'](_0x50310a['shift']());}}}(a2_0x5bf9,0x8096c));import a2_0x5a37bb from'path';import a2_0x2a318b from'os';export function convertToWindowsPath(_0x399b81){const _0x502d34=a2_0x21d1;if(_0x399b81[_0x502d34(0x129)]('/mnt/')){const _0x357845=_0x399b81[_0x502d34(0x11c)](0x5)[_0x502d34(0x122)](),_0xb8d72f=_0x399b81[_0x502d34(0x121)](0x6)[_0x502d34(0x125)](/\//g,'\x5c');return _0x357845+':'+_0xb8d72f;}if(_0x399b81[_0x502d34(0x124)](/^\/[a-zA-Z]\//)){const _0x4e3fee=_0x399b81[_0x502d34(0x11c)](0x1)[_0x502d34(0x122)](),_0x26225a=_0x399b81['slice'](0x2)[_0x502d34(0x125)](/\//g,'\x5c');return _0x4e3fee+':'+_0x26225a;}if(_0x399b81[_0x502d34(0x124)](/^[a-zA-Z]:/))return _0x399b81[_0x502d34(0x125)](/\//g,'\x5c');return _0x399b81;}function a2_0x5bf9(){const _0x58dd56=['4daJazc','trim','join','335288Wdlvop','slice','toUpperCase','normalize','match','replace','substring','2TxoVaP','5847588hjiKAf','startsWith','117042DwURRm','5224806IpsHqH','test','2380250RTqSeR','830CCSuWG','1254744KguCen','112PTNkTJ','homedir','26367mVNFzA','charAt'];a2_0x5bf9=function(){return _0x58dd56;};return a2_0x5bf9();}function a2_0x21d1(_0x205a34,_0x2c6898){_0x205a34=_0x205a34-0x119;const _0x5bf942=a2_0x5bf9();let _0x21d14e=_0x5bf942[_0x205a34];return _0x21d14e;}export function normalizePath(_0x435e59){const _0x4f2bc5=a2_0x21d1;_0x435e59=_0x435e59[_0x4f2bc5(0x11e)]()[_0x4f2bc5(0x125)](/^["']|["']$/g,'');const _0x362400=_0x435e59['startsWith']('/')&&!_0x435e59[_0x4f2bc5(0x124)](/^\/mnt\/[a-z]\//i)&&!_0x435e59[_0x4f2bc5(0x124)](/^\/[a-zA-Z]\//);if(_0x362400)return _0x435e59['replace'](/\/+/g,'/')[_0x4f2bc5(0x125)](/\/+$/,'');_0x435e59=convertToWindowsPath(_0x435e59);if(_0x435e59[_0x4f2bc5(0x129)]('\x5c\x5c')){let _0x2ebfb7=_0x435e59;_0x2ebfb7=_0x2ebfb7['replace'](/^\\{2,}/,'\x5c\x5c');const _0x215b33=_0x2ebfb7[_0x4f2bc5(0x126)](0x2)[_0x4f2bc5(0x125)](/\\\\/g,'\x5c');_0x435e59='\x5c\x5c'+_0x215b33;}else _0x435e59=_0x435e59[_0x4f2bc5(0x125)](/\\\\/g,'\x5c');let _0x21a22f=a2_0x5a37bb[_0x4f2bc5(0x123)](_0x435e59);_0x435e59['startsWith']('\x5c\x5c')&&!_0x21a22f[_0x4f2bc5(0x129)]('\x5c\x5c')&&(_0x21a22f='\x5c'+_0x21a22f);if(_0x21a22f[_0x4f2bc5(0x124)](/^[a-zA-Z]:/)){let _0x47623c=_0x21a22f['replace'](/\//g,'\x5c');return/^[a-z]:/[_0x4f2bc5(0x12c)](_0x47623c)&&(_0x47623c=_0x47623c[_0x4f2bc5(0x11c)](0x0)['toUpperCase']()+_0x47623c[_0x4f2bc5(0x121)](0x1)),_0x47623c;}return _0x21a22f[_0x4f2bc5(0x125)](/\//g,'\x5c');}export function expandHome(_0x2342b1){const _0x35e6bc=a2_0x21d1;if(_0x2342b1[_0x35e6bc(0x129)]('~/')||_0x2342b1==='~')return a2_0x5a37bb[_0x35e6bc(0x11f)](a2_0x2a318b[_0x35e6bc(0x11a)](),_0x2342b1['slice'](0x1));return _0x2342b1;}
1
+ function a2_0x37ae(_0x5b36cb,_0xf4681f){_0x5b36cb=_0x5b36cb-0x1ca;const _0x575cc7=a2_0x575c();let _0x37ae60=_0x575cc7[_0x5b36cb];return _0x37ae60;}(function(_0x4abd31,_0x6eafc3){const _0x52feff=a2_0x37ae,_0x305a1b=_0x4abd31();while(!![]){try{const _0x1a2420=parseInt(_0x52feff(0x1d5))/0x1+-parseInt(_0x52feff(0x1de))/0x2+parseInt(_0x52feff(0x1ca))/0x3*(parseInt(_0x52feff(0x1da))/0x4)+-parseInt(_0x52feff(0x1cf))/0x5+-parseInt(_0x52feff(0x1d8))/0x6*(-parseInt(_0x52feff(0x1d4))/0x7)+-parseInt(_0x52feff(0x1db))/0x8+parseInt(_0x52feff(0x1df))/0x9*(parseInt(_0x52feff(0x1d0))/0xa);if(_0x1a2420===_0x6eafc3)break;else _0x305a1b['push'](_0x305a1b['shift']());}catch(_0x2581cf){_0x305a1b['push'](_0x305a1b['shift']());}}}(a2_0x575c,0x2cbd3));import a2_0x522ef3 from'path';import a2_0x8149bd from'os';function a2_0x575c(){const _0xa1ff5c=['962300cuArPL','8740fUoked','/mnt/','charAt','normalize','1050105UkEFJr','59469LexDcs','startsWith','match','12akmTiV','test','4YePHEB','2690416xNOlGm','toUpperCase','homedir','687506dpwcim','4743DKtHet','707007VGuEhL','trim','slice','join','replace'];a2_0x575c=function(){return _0xa1ff5c;};return a2_0x575c();}export function convertToWindowsPath(_0x1edd51){const _0x59892c=a2_0x37ae;if(_0x1edd51['startsWith'](_0x59892c(0x1d1))){const _0x5c2a7e=_0x1edd51['charAt'](0x5)[_0x59892c(0x1dc)](),_0x5c0426=_0x1edd51['slice'](0x6)[_0x59892c(0x1ce)](/\//g,'\x5c');return _0x5c2a7e+':'+_0x5c0426;}if(_0x1edd51[_0x59892c(0x1d7)](/^\/[a-zA-Z]\//)){const _0x7452bc=_0x1edd51[_0x59892c(0x1d2)](0x1)[_0x59892c(0x1dc)](),_0x34e7e9=_0x1edd51[_0x59892c(0x1cc)](0x2)[_0x59892c(0x1ce)](/\//g,'\x5c');return _0x7452bc+':'+_0x34e7e9;}if(_0x1edd51[_0x59892c(0x1d7)](/^[a-zA-Z]:/))return _0x1edd51[_0x59892c(0x1ce)](/\//g,'\x5c');return _0x1edd51;}export function normalizePath(_0x288999){const _0x391ee5=a2_0x37ae;_0x288999=_0x288999[_0x391ee5(0x1cb)]()[_0x391ee5(0x1ce)](/^["']|["']$/g,'');const _0x38d387=_0x288999[_0x391ee5(0x1d6)]('/')&&!_0x288999[_0x391ee5(0x1d7)](/^\/mnt\/[a-z]\//i)&&!_0x288999[_0x391ee5(0x1d7)](/^\/[a-zA-Z]\//);if(_0x38d387)return _0x288999[_0x391ee5(0x1ce)](/\/+/g,'/')[_0x391ee5(0x1ce)](/\/+$/,'');_0x288999=convertToWindowsPath(_0x288999);if(_0x288999['startsWith']('\x5c\x5c')){let _0x14eb5c=_0x288999;_0x14eb5c=_0x14eb5c[_0x391ee5(0x1ce)](/^\\{2,}/,'\x5c\x5c');const _0x180c9f=_0x14eb5c['substring'](0x2)['replace'](/\\\\/g,'\x5c');_0x288999='\x5c\x5c'+_0x180c9f;}else _0x288999=_0x288999[_0x391ee5(0x1ce)](/\\\\/g,'\x5c');let _0x136e9f=a2_0x522ef3[_0x391ee5(0x1d3)](_0x288999);_0x288999[_0x391ee5(0x1d6)]('\x5c\x5c')&&!_0x136e9f[_0x391ee5(0x1d6)]('\x5c\x5c')&&(_0x136e9f='\x5c'+_0x136e9f);if(_0x136e9f['match'](/^[a-zA-Z]:/)){let _0x119c10=_0x136e9f['replace'](/\//g,'\x5c');return/^[a-z]:/[_0x391ee5(0x1d9)](_0x119c10)&&(_0x119c10=_0x119c10[_0x391ee5(0x1d2)](0x0)[_0x391ee5(0x1dc)]()+_0x119c10['slice'](0x1)),_0x119c10;}return _0x136e9f[_0x391ee5(0x1ce)](/\//g,'\x5c');}export function expandHome(_0x2a4f6e){const _0x315463=a2_0x37ae;if(_0x2a4f6e[_0x315463(0x1d6)]('~/')||_0x2a4f6e==='~')return a2_0x522ef3[_0x315463(0x1cd)](a2_0x8149bd[_0x315463(0x1dd)](),_0x2a4f6e[_0x315463(0x1cc)](0x1));return _0x2a4f6e;}
@@ -1 +1 @@
1
- (function(_0x616e1c,_0x32d1d5){const _0x2040a3=a3_0x3c6a,_0x2fc817=_0x616e1c();while(!![]){try{const _0x1a144d=-parseInt(_0x2040a3(0xc0))/0x1+-parseInt(_0x2040a3(0xb4))/0x2*(parseInt(_0x2040a3(0xbf))/0x3)+-parseInt(_0x2040a3(0xb8))/0x4+parseInt(_0x2040a3(0xc3))/0x5*(-parseInt(_0x2040a3(0xb3))/0x6)+-parseInt(_0x2040a3(0xbb))/0x7+-parseInt(_0x2040a3(0xb5))/0x8*(-parseInt(_0x2040a3(0xbc))/0x9)+parseInt(_0x2040a3(0xbe))/0xa;if(_0x1a144d===_0x32d1d5)break;else _0x2fc817['push'](_0x2fc817['shift']());}catch(_0x5c47e6){_0x2fc817['push'](_0x2fc817['shift']());}}}(a3_0x3611,0x3a266));import a3_0xf765c from'path';function a3_0x3c6a(_0x4d8d20,_0x3c8c2c){_0x4d8d20=_0x4d8d20-0xb3;const _0x3611e6=a3_0x3611();let _0x3c6a78=_0x3611e6[_0x4d8d20];return _0x3c6a78;}function a3_0x3611(){const _0x3ccd7b=['sep','startsWith','603790wIQIno','length','12xJCEsd','2MRzbHX','5616pCFDKZ','normalize','isAbsolute','1572044GOJCde','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','some','1656025WzGyTT','1728UazUrX','includes','18820160MIeTEE','1318326thhGoc','468074NEYjyI'];a3_0x3611=function(){return _0x3ccd7b;};return a3_0x3611();}export function isPathWithinAllowedDirectories(_0x3881a6,_0x3d50b5){const _0x43c573=a3_0x3c6a;if(typeof _0x3881a6!=='string'||!Array['isArray'](_0x3d50b5))return![];if(!_0x3881a6||_0x3d50b5[_0x43c573(0xc4)]===0x0)return![];if(_0x3881a6['includes']('\x00'))return![];let _0xc7c3ca;try{_0xc7c3ca=a3_0xf765c['resolve'](a3_0xf765c['normalize'](_0x3881a6));}catch{return![];}if(!a3_0xf765c[_0x43c573(0xb7)](_0xc7c3ca))throw new Error('Path\x20must\x20be\x20absolute\x20after\x20normalization');return _0x3d50b5[_0x43c573(0xba)](_0x2dbc44=>{const _0x450a19=_0x43c573;if(typeof _0x2dbc44!=='string'||!_0x2dbc44)return![];if(_0x2dbc44[_0x450a19(0xbd)]('\x00'))return![];let _0x25929c;try{_0x25929c=a3_0xf765c['resolve'](a3_0xf765c[_0x450a19(0xb6)](_0x2dbc44));}catch{return![];}if(!a3_0xf765c[_0x450a19(0xb7)](_0x25929c))throw new Error(_0x450a19(0xb9));if(_0xc7c3ca===_0x25929c)return!![];if(_0x25929c===a3_0xf765c['sep'])return _0xc7c3ca[_0x450a19(0xc2)](a3_0xf765c[_0x450a19(0xc1)]);return _0xc7c3ca[_0x450a19(0xc2)](_0x25929c+a3_0xf765c[_0x450a19(0xc1)]);});}
1
+ (function(_0x7f7053,_0x4498c5){const _0x683ef4=a3_0x43fd,_0x3d2020=_0x7f7053();while(!![]){try{const _0x17d8af=parseInt(_0x683ef4(0x12a))/0x1*(parseInt(_0x683ef4(0x125))/0x2)+parseInt(_0x683ef4(0x124))/0x3*(-parseInt(_0x683ef4(0x137))/0x4)+-parseInt(_0x683ef4(0x139))/0x5+parseInt(_0x683ef4(0x12d))/0x6+parseInt(_0x683ef4(0x12b))/0x7*(-parseInt(_0x683ef4(0x12e))/0x8)+parseInt(_0x683ef4(0x126))/0x9+-parseInt(_0x683ef4(0x138))/0xa*(-parseInt(_0x683ef4(0x128))/0xb);if(_0x17d8af===_0x4498c5)break;else _0x3d2020['push'](_0x3d2020['shift']());}catch(_0x2d84bf){_0x3d2020['push'](_0x3d2020['shift']());}}}(a3_0x2814,0x415e9));function a3_0x43fd(_0x5d99d8,_0x525838){_0x5d99d8=_0x5d99d8-0x124;const _0x2814be=a3_0x2814();let _0x43fdfe=_0x2814be[_0x5d99d8];return _0x43fdfe;}function a3_0x2814(){const _0x203b13=['isAbsolute','961luBDXG','28cOVRiN','resolve','2338434azesec','508512wCagGq','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','startsWith','some','sep','normalize','string','length','includes','20436sqfffm','688780qaJzpB','634745yqdSTN','Path\x20must\x20be\x20absolute\x20after\x20normalization','186lQDWmL','290XJcFvv','2069982muaEyN','isArray','33Vpdtif'];a3_0x2814=function(){return _0x203b13;};return a3_0x2814();}import a3_0x313700 from'path';export function isPathWithinAllowedDirectories(_0x4bce28,_0x33d9fb){const _0x16300b=a3_0x43fd;if(typeof _0x4bce28!==_0x16300b(0x134)||!Array[_0x16300b(0x127)](_0x33d9fb))return![];if(!_0x4bce28||_0x33d9fb[_0x16300b(0x135)]===0x0)return![];if(_0x4bce28['includes']('\x00'))return![];let _0x93d548;try{_0x93d548=a3_0x313700[_0x16300b(0x12c)](a3_0x313700['normalize'](_0x4bce28));}catch{return![];}if(!a3_0x313700[_0x16300b(0x129)](_0x93d548))throw new Error(_0x16300b(0x13a));return _0x33d9fb[_0x16300b(0x131)](_0x3eac29=>{const _0x4ac0ed=_0x16300b;if(typeof _0x3eac29!==_0x4ac0ed(0x134)||!_0x3eac29)return![];if(_0x3eac29[_0x4ac0ed(0x136)]('\x00'))return![];let _0xfa5e2d;try{_0xfa5e2d=a3_0x313700[_0x4ac0ed(0x12c)](a3_0x313700[_0x4ac0ed(0x133)](_0x3eac29));}catch{return![];}if(!a3_0x313700['isAbsolute'](_0xfa5e2d))throw new Error(_0x4ac0ed(0x12f));if(_0x93d548===_0xfa5e2d)return!![];if(_0xfa5e2d===a3_0x313700[_0x4ac0ed(0x132)])return _0x93d548[_0x4ac0ed(0x130)](a3_0x313700['sep']);return _0x93d548[_0x4ac0ed(0x130)](_0xfa5e2d+a3_0x313700[_0x4ac0ed(0x132)]);});}
@@ -1 +1 @@
1
- (function(_0x3bbcb3,_0x567ae2){const _0x56007f=a4_0x31bb,_0x4fa9ee=_0x3bbcb3();while(!![]){try{const _0x55e518=-parseInt(_0x56007f(0x7c))/0x1*(parseInt(_0x56007f(0x76))/0x2)+-parseInt(_0x56007f(0x73))/0x3+parseInt(_0x56007f(0x80))/0x4+-parseInt(_0x56007f(0x70))/0x5*(-parseInt(_0x56007f(0x7a))/0x6)+-parseInt(_0x56007f(0x74))/0x7+parseInt(_0x56007f(0x7b))/0x8+parseInt(_0x56007f(0x7d))/0x9;if(_0x55e518===_0x567ae2)break;else _0x4fa9ee['push'](_0x4fa9ee['shift']());}catch(_0x4ab71f){_0x4fa9ee['push'](_0x4fa9ee['shift']());}}}(a4_0x1a80,0xa0956));import{promises as a4_0x3179a2}from'fs';function a4_0x31bb(_0x39328d,_0x533b24){_0x39328d=_0x39328d-0x6f;const _0x1a8020=a4_0x1a80();let _0x31bb4c=_0x1a8020[_0x39328d];return _0x31bb4c;}import a4_0x22b83a from'path';import a4_0x24cdac from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';function a4_0x1a80(){const _0x1ad1ff=['file://','2659188YtdzLe','startsWith','join','Skipping\x20invalid\x20directory:\x20','105855KDMWlf','resolve','push','2183616zKVsIs','7999698HWUKqR','uri','1854lJvXwL','slice','non-directory\x20root','stat','180rzCcKy','2414280wmFMhj','1304OZtRYt','19219788JOufdc','Skipping\x20'];a4_0x1a80=function(){return _0x1ad1ff;};return a4_0x1a80();}async function parseRootUri(_0x3c45c1){const _0x2dbdb6=a4_0x31bb;try{const _0x8a602b=_0x3c45c1[_0x2dbdb6(0x81)](_0x2dbdb6(0x7f))?_0x3c45c1['slice'](0x7):_0x3c45c1,_0x5e65b1=_0x8a602b[_0x2dbdb6(0x81)]('~/')||_0x8a602b==='~'?a4_0x22b83a[_0x2dbdb6(0x82)](a4_0x24cdac['homedir'](),_0x8a602b[_0x2dbdb6(0x77)](0x1)):_0x8a602b,_0x2faacd=a4_0x22b83a[_0x2dbdb6(0x71)](_0x5e65b1),_0x187ae3=await a4_0x3179a2['realpath'](_0x2faacd);return normalizePath(_0x187ae3);}catch{return null;}}function formatDirectoryError(_0xa5b190,_0xc0835c,_0x545b87){const _0x31d29f=a4_0x31bb;if(_0x545b87)return _0x31d29f(0x7e)+_0x545b87+':\x20'+_0xa5b190;const _0x55d7e5=_0xc0835c instanceof Error?_0xc0835c['message']:String(_0xc0835c);return _0x31d29f(0x6f)+_0xa5b190+'\x20due\x20to\x20error:\x20'+_0x55d7e5;}export async function getValidRootDirectories(_0x44b994){const _0x20fe26=a4_0x31bb,_0x30f824=[];for(const _0x10516d of _0x44b994){const _0x517716=await parseRootUri(_0x10516d[_0x20fe26(0x75)]);if(!_0x517716){logMcpStderr(formatDirectoryError(_0x10516d[_0x20fe26(0x75)],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0x76099b=await a4_0x3179a2[_0x20fe26(0x79)](_0x517716);_0x76099b['isDirectory']()?_0x30f824[_0x20fe26(0x72)](_0x517716):logMcpStderr(formatDirectoryError(_0x517716,undefined,_0x20fe26(0x78)));}catch(_0x647840){logMcpStderr(formatDirectoryError(_0x517716,_0x647840));}}return _0x30f824;}
1
+ (function(_0x127e61,_0xa42819){const _0x57f39c=a4_0x1569,_0x3831ca=_0x127e61();while(!![]){try{const _0x85e98e=parseInt(_0x57f39c(0x163))/0x1+parseInt(_0x57f39c(0x15f))/0x2+-parseInt(_0x57f39c(0x150))/0x3+-parseInt(_0x57f39c(0x159))/0x4+-parseInt(_0x57f39c(0x15e))/0x5*(parseInt(_0x57f39c(0x151))/0x6)+-parseInt(_0x57f39c(0x158))/0x7+parseInt(_0x57f39c(0x156))/0x8;if(_0x85e98e===_0xa42819)break;else _0x3831ca['push'](_0x3831ca['shift']());}catch(_0x43fd80){_0x3831ca['push'](_0x3831ca['shift']());}}}(a4_0xe637,0x69c2b));function a4_0xe637(){const _0x5e16d5=['1354914WwQZhO','non-directory\x20root','\x20due\x20to\x20error:\x20','slice','278925PoprJU','uri','isDirectory','homedir','2591286hdHkUv','63174WIaaqG','push','Skipping\x20','join','resolve','9463136vKAgxU','startsWith','361935KLkIZo','1056648xPtawC','message','stat','file://','realpath','250MHkADQ'];a4_0xe637=function(){return _0x5e16d5;};return a4_0xe637();}import{promises as a4_0x489e23}from'fs';import a4_0x58ddc3 from'path';import a4_0x4266ee from'os';import{normalizePath}from'./path-utils.js';function a4_0x1569(_0x303477,_0x358a6c){_0x303477=_0x303477-0x150;const _0xe637df=a4_0xe637();let _0x156907=_0xe637df[_0x303477];return _0x156907;}import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x3709d3){const _0x35744e=a4_0x1569;try{const _0x5ede21=_0x3709d3[_0x35744e(0x157)](_0x35744e(0x15c))?_0x3709d3[_0x35744e(0x162)](0x7):_0x3709d3,_0x4493a9=_0x5ede21[_0x35744e(0x157)]('~/')||_0x5ede21==='~'?a4_0x58ddc3[_0x35744e(0x154)](a4_0x4266ee[_0x35744e(0x166)](),_0x5ede21[_0x35744e(0x162)](0x1)):_0x5ede21,_0x23000f=a4_0x58ddc3[_0x35744e(0x155)](_0x4493a9),_0x372f66=await a4_0x489e23[_0x35744e(0x15d)](_0x23000f);return normalizePath(_0x372f66);}catch{return null;}}function formatDirectoryError(_0x5e2ddc,_0x36d05e,_0x467016){const _0xbbcc19=a4_0x1569;if(_0x467016)return _0xbbcc19(0x153)+_0x467016+':\x20'+_0x5e2ddc;const _0x374de9=_0x36d05e instanceof Error?_0x36d05e[_0xbbcc19(0x15a)]:String(_0x36d05e);return'Skipping\x20invalid\x20directory:\x20'+_0x5e2ddc+_0xbbcc19(0x161)+_0x374de9;}export async function getValidRootDirectories(_0x3ee3e4){const _0x5aa931=a4_0x1569,_0x4cdff9=[];for(const _0x2008a4 of _0x3ee3e4){const _0x3e490d=await parseRootUri(_0x2008a4[_0x5aa931(0x164)]);if(!_0x3e490d){logMcpStderr(formatDirectoryError(_0x2008a4[_0x5aa931(0x164)],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0x3eb90f=await a4_0x489e23[_0x5aa931(0x15b)](_0x3e490d);_0x3eb90f[_0x5aa931(0x165)]()?_0x4cdff9[_0x5aa931(0x152)](_0x3e490d):logMcpStderr(formatDirectoryError(_0x3e490d,undefined,_0x5aa931(0x160)));}catch(_0xa42cc3){logMcpStderr(formatDirectoryError(_0x3e490d,_0xa42cc3));}}return _0x4cdff9;}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morphllm/morphmcp",
3
- "version": "0.8.139",
3
+ "version": "0.8.141",
4
4
  "description": "Fast & accurate MCP server with AI-powered file editing and intelligent code search. Prevents context pollution and saves time for a better user experience.",
5
5
  "license": "MIT",
6
6
  "author": "Morph (https://morphllm.com)",
@@ -35,7 +35,7 @@
35
35
  "dependencies": {
36
36
  "@google/generative-ai": "^0.21.0",
37
37
  "@modelcontextprotocol/sdk": "^1.12.3",
38
- "@morphllm/morphsdk": "0.2.145",
38
+ "@morphllm/morphsdk": "0.2.146",
39
39
  "@vscode/ripgrep": "^1.15.14",
40
40
  "axios": "^1.6.0",
41
41
  "chalk": "^5.3.0",