@morphllm/morphmcp 0.8.136 → 0.8.137

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_0x55ae12=a0_0x1a9a;(function(_0x49b706,_0x192a69){const _0x1164dd=a0_0x1a9a,_0x3f824e=_0x49b706();while(!![]){try{const _0xead01=-parseInt(_0x1164dd(0x130))/0x1*(-parseInt(_0x1164dd(0x10b))/0x2)+-parseInt(_0x1164dd(0xd5))/0x3*(parseInt(_0x1164dd(0x132))/0x4)+-parseInt(_0x1164dd(0x185))/0x5*(-parseInt(_0x1164dd(0xd2))/0x6)+-parseInt(_0x1164dd(0x9a))/0x7+parseInt(_0x1164dd(0xef))/0x8*(parseInt(_0x1164dd(0xf7))/0x9)+parseInt(_0x1164dd(0x192))/0xa*(parseInt(_0x1164dd(0xd9))/0xb)+parseInt(_0x1164dd(0x11f))/0xc*(parseInt(_0x1164dd(0xb2))/0xd);if(_0xead01===_0x192a69)break;else _0x3f824e['push'](_0x3f824e['shift']());}catch(_0x30d9a9){_0x3f824e['push'](_0x3f824e['shift']());}}}(a0_0x60b8,0x6dce9));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';function a0_0x1a9a(_0x2342f3,_0x7b635c){_0x2342f3=_0x2342f3-0x90;const _0x60b8db=a0_0x60b8();let _0x1a9a7a=_0x60b8db[_0x2342f3];return _0x1a9a7a;}import a0_0x227f68 from'fs/promises';import a0_0x323230 from'path';import a0_0x296a32 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';function a0_0x60b8(){const _0x515c99=['2cUwvfa','@morphllm/morphmcp\x20','\x20\x20morph-mcp','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','Bearer\x20','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','api-key','exit','normalize','searchGitHub','startsWith','\x20for:\x20\x22','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','homedir','completed_with_file_errors','utf-8','.git','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','every','983964OTSjBP','message','MORPH_API_URL','join','morph-mcp','linesModified','context','push','metadata','https://morphllm.com/api/error-report','ToolException','SymlinkError','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','search_string','catch','completionId','175303ouKisE','etimedout','12XxNmeN','repo_path','BinaryFile','Created\x20File',',\x20modified\x20','Disabled\x20tools:\x20','oninitialized','access','File\x20read\x20error:','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','composer.json','version','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','read','runWarpGrep_call','grep\x20\x27','Tool\x20\x22','Cargo.toml','unknown','\x0a</file>','github_url','\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable','Benefits:\x0a','isDirectory','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','messages','Relevant\x20context\x20found:','branch','linesAdded','Warning:\x20','\x20-\x20','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','connect','floor','now','read\x20','safeParse','instruction','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','terminated','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','path','changes','FileReadError','MORPH_WARP_GREP_TIMEOUT','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','grep','[could\x20not\x20read\x20file:\x20','match','listRoots','\x20(new\x20file)','Invalid\x20arguments:\x20','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','number','linesRemoved','trim','realpath','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','FileNotFound','enum','dryRun','stack','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','assistant','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','split','timings','morph-','unknown\x20error','Error\x20running\x20fast\x20context\x20search:\x20','source','ms.\x20Success:\x20','basename','boolean','constructor','setRequestHandler','includes','node_modules','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','1960bZPoAK','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.','params','Workspace\x20mode\x20enabled:\x20Using\x20','UnknownError',',\x20removed\x20','roots','array','\x22>\x0aError\x20reading\x20file:\x20','❌\x20Morph\x20Edit\x20Failed:\x20','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','\x27\x20in\x20`','string','10wcqZPN','some','user','Tool\x20','Fatal\x20error\x20running\x20server:','finish','argv','post','timeout','object','substring','inputSchema','-\x20Read\x20file\x20`','-\x20Grepped\x20\x27','Applied','min','optional','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','</file>','filter','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','1376690TZJqKT','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','stat','ms:','Fallback:\x20Using\x20workspace\x20root\x20','code','\x22.\x20Known\x20tools:\x20','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','morph-v3-fast','lines','isArray','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','timed\x20out','Morph\x20Edit\x20','sep','content','mcp-filesystem','RipgrepNotAvailable','toLowerCase','setNotificationHandler','\x20valid\x20directories','Failed\x20to\x20request\x20roots\x20from\x20client:','78sJcARS','text','data','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','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','warn','Failed\x20to\x20read\x20file:\x20','package.json','resolve','--api-key=','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','\x0aExamples:','../package.json','--version','PathError','ReadError','size','errors','<file\x20path=\x22','For\x20deletions:\x0a','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','log','readFile','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.','default','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','success','error','all','list_directory\x20','DISABLED_TOOLS','300fhKrkY','Specific\x20commit\x20hash\x20to\x20search','codebase_search','232479YIIfzj','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','1597123kYUVAR','Parent\x20directory\x20does\x20not\x20exist:\x20','edit_file','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','\x0a...\x20(truncated,\x20total:\x20','Morph\x20FastApply\x20failed\x20without\x20error\x20message','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','sk-','[github_codebase_search]\x20Searching\x20','has','.\x20Changes:\x20','[github_codebase_search]\x20Done\x20in\x20','WORKSPACE_ROOT','length','map','Max\x20results\x20to\x20return','RipgrepError','describe','--help','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','.cursor','16xYuOix','terminationReason','TimeoutError','name','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','role','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','github_codebase_search','210780EDkSPo','files','Repository\x20identifier','ENABLE_WORKSPACE_MODE','slice','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','morph-warp-grep-v1-1111v0','requiresApiKey','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','dirname','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','ENOENT','0.2.0','owner_repo','Error:\x20','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','.\x20Path:\x20','env','\x20chars)'];a0_0x60b8=function(){return _0x515c99;};return a0_0x60b8();}import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import a0_0x1dff3b from'axios';function fixPathRepetition(_0x1a3806){const _0x2ccf35=a0_0x1a9a,_0x394cdf=_0x1a3806[_0x2ccf35(0x177)](a0_0x323230[_0x2ccf35(0xaa)])['filter'](Boolean);if(_0x394cdf['length']<0x2)return null;for(let _0x23472d=Math[_0x2ccf35(0x153)](_0x394cdf['length']/0x2);_0x23472d>=0x1;_0x23472d--){for(let _0x3356e9=0x0;_0x3356e9<=_0x394cdf[_0x2ccf35(0xe6)]-0x2*_0x23472d;_0x3356e9++){const _0x3a252f=_0x394cdf[_0x2ccf35(0xfb)](_0x3356e9,_0x3356e9+_0x23472d),_0x54f7da=_0x394cdf[_0x2ccf35(0xfb)](_0x3356e9+_0x23472d,_0x3356e9+0x2*_0x23472d);if(_0x3a252f[_0x2ccf35(0x11e)]((_0x4de651,_0xf98293)=>_0x4de651===_0x54f7da[_0xf98293])){const _0x4433db=[..._0x394cdf[_0x2ccf35(0xfb)](0x0,_0x3356e9),..._0x394cdf[_0x2ccf35(0xfb)](_0x3356e9+_0x23472d)];return a0_0x323230['sep']+_0x4433db[_0x2ccf35(0x122)](a0_0x323230[_0x2ccf35(0xaa)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x110f2b=a0_0x1a9a;try{const _0x4e39f3=require(_0x110f2b(0xbf));return _0x4e39f3[_0x110f2b(0x13d)]??_0x110f2b(0x144);}catch(_0x198187){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x198187),_0x110f2b(0x144);}}function printHelp(){const _0x49e005=a0_0x1a9a;console[_0x49e005(0xc8)](_0x49e005(0x10c)+getPackageVersion()),console[_0x49e005(0xc8)](_0x49e005(0x174)),console['log']('\x0aOptions:'),console[_0x49e005(0xc8)](_0x49e005(0x15a)),console['log'](_0x49e005(0xdf)),console[_0x49e005(0xc8)](_0x49e005(0xdc)),console['log'](_0x49e005(0xbe)),console[_0x49e005(0xc8)](_0x49e005(0x10d)),console[_0x49e005(0xc8)](_0x49e005(0x14a));}const cliArgs=process[a0_0x55ae12(0x198)][a0_0x55ae12(0xfb)](0x2),VERSION_FLAGS=new Set([a0_0x55ae12(0xc0),'-v','-V']),HELP_FLAGS=new Set([a0_0x55ae12(0xeb),'-h']);cliArgs[a0_0x55ae12(0x193)](_0x3ad3f7=>VERSION_FLAGS[a0_0x55ae12(0xe2)](_0x3ad3f7))&&(console[a0_0x55ae12(0xc8)](a0_0x55ae12(0x10c)+getPackageVersion()),process[a0_0x55ae12(0x113)](0x0));cliArgs[a0_0x55ae12(0x193)](_0x468084=>HELP_FLAGS[a0_0x55ae12(0xe2)](_0x468084))&&(printHelp(),process[a0_0x55ae12(0x113)](0x0));function getCliArg(_0x8c56c9){const _0x551c36=a0_0x55ae12;for(let _0x20aa80=0x0;_0x20aa80<cliArgs[_0x551c36(0xe6)];_0x20aa80++){const _0x12d3bd=cliArgs[_0x20aa80];if(_0x12d3bd[_0x551c36(0x116)]('--'+_0x8c56c9+'='))return _0x12d3bd['slice'](('--'+_0x8c56c9+'=')['length']);if(_0x12d3bd==='--'+_0x8c56c9&&_0x20aa80+0x1<cliArgs[_0x551c36(0xe6)])return cliArgs[_0x20aa80+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x55ae12(0xe6)];i++){const arg=cliArgs[i];if(VERSION_FLAGS['has'](arg)||HELP_FLAGS[a0_0x55ae12(0xe2)](arg))continue;if(arg['startsWith'](a0_0x55ae12(0xbc)))continue;if(arg==='--api-key'){i++;continue;}args['push'](arg);}const WORKSPACE_ROOT=process[a0_0x55ae12(0x109)][a0_0x55ae12(0xe5)]||process[a0_0x55ae12(0x109)]['PWD']||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0x55ae12(0x109)][a0_0x55ae12(0xfa)]!=='false',MORPH_API_KEY=getCliArg(a0_0x55ae12(0x112))??process[a0_0x55ae12(0x109)]['MORPH_API_KEY'],MORPH_API_URL=process[a0_0x55ae12(0x109)][a0_0x55ae12(0x121)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x55ae12(0x109)][a0_0x55ae12(0x15f)]?parseInt(process[a0_0x55ae12(0x109)][a0_0x55ae12(0x15f)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set(['edit_file','codebase_search',a0_0x55ae12(0xf6)]),DISABLED_TOOLS=process['env']['DISABLED_TOOLS']?new Set(process['env'][a0_0x55ae12(0xd1)]['split'](',')[a0_0x55ae12(0xe7)](_0x12eb88=>_0x12eb88[a0_0x55ae12(0x16d)]())[a0_0x55ae12(0x97)](_0x27c6d4=>_0x27c6d4[a0_0x55ae12(0xe6)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0x55ae12(0xc3)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES['has'](tool)&&console['error'](a0_0x55ae12(0xed)+tool+a0_0x55ae12(0xa1)+[...KNOWN_TOOL_NAMES][a0_0x55ae12(0x122)](',\x20'));}console['error'](a0_0x55ae12(0x137)+[...DISABLED_TOOLS][a0_0x55ae12(0x122)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x55ae12(0x116)](a0_0x55ae12(0xe0))&&!MORPH_API_KEY[a0_0x55ae12(0x116)](a0_0x55ae12(0x179))&&logMcpStderr(a0_0x55ae12(0x99));async function reportMorphError(_0x47053b){const _0x484fdf=a0_0x55ae12;try{await a0_0x1dff3b[_0x484fdf(0x199)](_0x484fdf(0x128),{..._0x47053b,'timestamp':new Date()['toISOString'](),'source':_0x47053b[_0x484fdf(0x17c)]||_0x484fdf(0xac),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x47053b[_0x484fdf(0x125)]}},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':_0x484fdf(0x10f)+MORPH_API_KEY}});}catch{}}args[a0_0x55ae12(0xe6)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x55ae12(0x110)),logMcpStderr(a0_0x55ae12(0x13e)),logMcpStderr(a0_0x55ae12(0x102)),logMcpStderr(a0_0x55ae12(0xbd)),logMcpStderr(a0_0x55ae12(0x9b)),logMcpStderr(a0_0x55ae12(0xd8)));function normalizePath(_0x22164d){const _0x3d7af4=a0_0x55ae12;return a0_0x323230[_0x3d7af4(0x114)](_0x22164d);}function expandHome(_0x1d0af1){const _0x591d19=a0_0x55ae12;if(_0x1d0af1[_0x591d19(0x116)]('~/')||_0x1d0af1==='~')return a0_0x323230[_0x591d19(0x122)](a0_0x296a32[_0x591d19(0x119)](),_0x1d0af1[_0x591d19(0xfb)](0x1));return _0x1d0af1;}let allowedDirectories=await Promise['all'](args['map'](async _0x3f1a9e=>{const _0x5140cf=a0_0x55ae12,_0x405cc4=expandHome(_0x3f1a9e),_0x4e5c7e=a0_0x323230[_0x5140cf(0xbb)](_0x405cc4);try{const _0x342732=await a0_0x227f68[_0x5140cf(0x16e)](_0x4e5c7e);return normalizePath(_0x342732);}catch(_0x18eb71){return normalizePath(_0x4e5c7e);}}));if(ENABLE_WORKSPACE_MODE&&args['length']===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x55ae12(0x126)](workspaceDir),logMcpStderr(a0_0x55ae12(0x188)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x4fc7ba){logMcpStderr(a0_0x55ae12(0x176)+a0_0x4fc7ba);}async function detectWorkspaceRoot(_0x48205f){const _0x103b3b=a0_0x55ae12;let _0x119502=a0_0x323230[_0x103b3b(0xbb)](_0x48205f);const _0xb576f7=[_0x103b3b(0x11c),'.vscode',_0x103b3b(0xba),_0x103b3b(0x143),'pyproject.toml','go.mod',_0x103b3b(0xee),'tsconfig.json',_0x103b3b(0x13c)];while(_0x119502!==a0_0x323230[_0x103b3b(0x101)](_0x119502)){for(const _0xb751e8 of _0xb576f7){const _0x2e5c2f=a0_0x323230[_0x103b3b(0x122)](_0x119502,_0xb751e8);try{return await a0_0x227f68[_0x103b3b(0x139)](_0x2e5c2f),normalizePath(_0x119502);}catch{}}_0x119502=a0_0x323230['dirname'](_0x119502);}return normalizePath(_0x48205f);}await Promise[a0_0x55ae12(0xcf)](args['map'](async _0x52b83d=>{const _0xe5e356=a0_0x55ae12;try{const _0x5499aa=await a0_0x227f68[_0xe5e356(0x9d)](expandHome(_0x52b83d));!_0x5499aa[_0xe5e356(0x149)]()&&(logMcpStderr(_0xe5e356(0x106)+_0x52b83d+'\x20is\x20not\x20a\x20directory'),process['exit'](0x1));}catch(_0x1f090e){logMcpStderr('Error\x20accessing\x20directory\x20'+_0x52b83d+':',_0x1f090e),process[_0xe5e356(0x113)](0x1);}}));async function validatePath(_0x41e58e){const _0x3e5e3a=a0_0x55ae12,_0x2a585d=expandHome(_0x41e58e),_0x290af2=a0_0x323230[_0x3e5e3a(0xbb)](_0x2a585d);try{const _0x2ecc3a=await a0_0x227f68['realpath'](_0x290af2);return _0x2ecc3a;}catch(_0x4f0607){if(_0x4f0607[_0x3e5e3a(0xa0)]===_0x3e5e3a(0x103)){const _0x3c3866=a0_0x323230[_0x3e5e3a(0x101)](_0x290af2);try{const _0x101a67=await a0_0x227f68[_0x3e5e3a(0x16e)](_0x3c3866);return a0_0x323230['join'](_0x101a67,a0_0x323230['basename'](_0x290af2));}catch{throw new Error(_0x3e5e3a(0xda)+_0x3c3866);}}throw _0x4f0607;}}const MorphEditFileArgsSchema=z[a0_0x55ae12(0x19b)]({'path':z[a0_0x55ae12(0x191)](),'code_edit':z[a0_0x55ae12(0x191)]()['describe'](a0_0x55ae12(0xb5)),'instruction':z[a0_0x55ae12(0x191)]()[a0_0x55ae12(0xea)](a0_0x55ae12(0x9c)),'dryRun':z[a0_0x55ae12(0x17f)]()['default'](![])[a0_0x55ae12(0xea)]('Preview\x20changes\x20without\x20applying\x20them.')}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x55ae12(0x186),WarpGrepArgsSchema=z[a0_0x55ae12(0x19b)]({'search_string':z[a0_0x55ae12(0x191)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x55ae12(0x191)]()['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_0x55ae12(0x171)]([a0_0x55ae12(0xcb),a0_0x55ae12(0x183)])[a0_0x55ae12(0x94)]()['describe'](a0_0x55ae12(0x158))}),WarpGrepGitHubArgsSchema=z[a0_0x55ae12(0x19b)]({'search_string':z['string']()[a0_0x55ae12(0xea)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x55ae12(0x191)]()[a0_0x55ae12(0x94)]()[a0_0x55ae12(0xea)](a0_0x55ae12(0xca)),'owner_repo':z[a0_0x55ae12(0x191)]()[a0_0x55ae12(0x94)]()['describe'](a0_0x55ae12(0x12c)),'branch':z[a0_0x55ae12(0x191)]()['optional']()[a0_0x55ae12(0xea)](a0_0x55ae12(0x163))}),CodebaseSearchArgsSchema=z['object']({'query':z[a0_0x55ae12(0x191)]()[a0_0x55ae12(0xea)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z['string']()[a0_0x55ae12(0xea)](a0_0x55ae12(0xf9)),'branch':z[a0_0x55ae12(0x191)]()[a0_0x55ae12(0x94)]()['describe'](a0_0x55ae12(0x118)),'commitHash':z[a0_0x55ae12(0x191)]()['optional']()[a0_0x55ae12(0xea)](a0_0x55ae12(0xd3)),'targetDirectories':z[a0_0x55ae12(0x18c)](z[a0_0x55ae12(0x191)]())[a0_0x55ae12(0xcb)]([])['describe']('Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all'),'limit':z[a0_0x55ae12(0x16b)]()[a0_0x55ae12(0x94)]()[a0_0x55ae12(0xcb)](0xa)[a0_0x55ae12(0xea)](a0_0x55ae12(0xe8))}),server=new Server({'name':a0_0x55ae12(0x123),'version':'0.2.0'},{'capabilities':{'tools':{}}});server[a0_0x55ae12(0x181)](ListToolsRequestSchema,async()=>{const _0x5417a8=a0_0x55ae12,_0x5380de=[{'name':'edit_file','description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a'+'⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a'+_0x5417a8(0xc7)+_0x5417a8(0xcc)+_0x5417a8(0x148)+_0x5417a8(0x11d)+_0x5417a8(0x16f)+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+_0x5417a8(0x95)+_0x5417a8(0x16a)+_0x5417a8(0x111)+_0x5417a8(0x100)+_0x5417a8(0xc6)+_0x5417a8(0xfc)+_0x5417a8(0xd7)+'Rules:\x0a'+_0x5417a8(0x98)+_0x5417a8(0x162)+_0x5417a8(0x10e)+_0x5417a8(0xa7)+_0x5417a8(0xfd)+_0x5417a8(0xb6)+_0x5417a8(0x18f),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':'codebase_search','description':_0x5417a8(0xb7)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x5417a8(0xec)+_0x5417a8(0xf3)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0xd96717=_0x5380de[_0x5417a8(0x97)](_0x1b180b=>{const _0x8c0499=_0x5417a8;if(DISABLED_TOOLS[_0x8c0499(0xe2)](_0x1b180b['name']))return console['error'](_0x8c0499(0x195)+_0x1b180b[_0x8c0499(0xf2)]+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if(_0x8c0499(0xff)in _0x1b180b&&_0x1b180b[_0x8c0499(0xff)]&&!MORPH_API_KEY)return logMcpStderr(_0x8c0499(0x14f)+_0x1b180b[_0x8c0499(0xf2)]+_0x8c0499(0xa3)),![];return!![];});return{'tools':_0xd96717['map'](_0x3cf427=>({'name':_0x3cf427['name'],'description':_0x3cf427['description'],'inputSchema':_0x3cf427[_0x5417a8(0x19d)]}))};}),server['setRequestHandler'](CallToolRequestSchema,async _0x33cfa5=>{const _0x11cdd6=a0_0x55ae12,{name:_0x5d5c50,arguments:_0x460c2e}=_0x33cfa5[_0x11cdd6(0x187)];try{if(DISABLED_TOOLS['has'](_0x5d5c50))throw new Error(_0x11cdd6(0x142)+_0x5d5c50+_0x11cdd6(0x147));switch(_0x5d5c50){case _0x11cdd6(0xdb):{const _0x55a16c=MorphEditFileArgsSchema['safeParse'](_0x460c2e);if(!_0x55a16c[_0x11cdd6(0xcd)])throw new Error(_0x11cdd6(0x107)+_0x55a16c[_0x11cdd6(0xce)]);const _0x496dd6=await validatePath(_0x55a16c[_0x11cdd6(0xb4)][_0x11cdd6(0x15c)]);let _0x55b91b=null,_0x5d5ed2=!![],_0x3803bd=null;try{_0x55b91b=await a0_0x227f68[_0x11cdd6(0xc9)](_0x496dd6,_0x11cdd6(0x11b));}catch(_0x19cfcb){const _0xb4c397=_0x19cfcb[_0x11cdd6(0xa0)];_0xb4c397===_0x11cdd6(0x103)?(_0x5d5ed2=![],_0x55b91b=''):(_0x3803bd=_0x11cdd6(0xb9)+(_0xb4c397||'unknown')+_0x11cdd6(0x150)+(_0x19cfcb instanceof Error?_0x19cfcb['message']:String(_0x19cfcb)),logMcpStderr(_0x11cdd6(0x14f)+_0x3803bd));}let _0x3695b8;try{const _0x57f3a1=MORPH_API_KEY;if(!_0x57f3a1)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x54f726=a0_0x323230[_0x11cdd6(0x101)](_0x496dd6),_0x4a1927=a0_0x323230[_0x11cdd6(0x17e)](_0x496dd6),_0x36cfce=await executeEditFile({'target_filepath':_0x4a1927,'code_edit':_0x55a16c[_0x11cdd6(0xb4)]['code_edit'],'instructions':_0x55a16c[_0x11cdd6(0xb4)][_0x11cdd6(0x157)]},{'morphApiKey':_0x57f3a1,'morphApiUrl':MORPH_API_URL,'baseDir':_0x54f726,'autoWrite':!_0x55a16c[_0x11cdd6(0xb4)][_0x11cdd6(0x172)],'generateUdiff':![],'debug':![]});_0x3695b8=_0x36cfce[_0x11cdd6(0x12f)];if(!_0x36cfce[_0x11cdd6(0xcd)])throw new Error(_0x36cfce[_0x11cdd6(0xce)]||_0x11cdd6(0xde));const _0x1f8d68=_0x36cfce[_0x11cdd6(0x15d)],_0x2e1437='added\x20'+_0x1f8d68[_0x11cdd6(0x14e)]+_0x11cdd6(0x18a)+_0x1f8d68[_0x11cdd6(0x16c)]+_0x11cdd6(0x136)+_0x1f8d68[_0x11cdd6(0x124)];if(_0x55a16c[_0x11cdd6(0xb4)][_0x11cdd6(0x172)])return{'content':[{'type':'text','text':'Morph\x20Edit\x20Preview'+(_0x5d5ed2?'':_0x11cdd6(0x168))+':\x20'+_0x55a16c[_0x11cdd6(0xb4)][_0x11cdd6(0x157)]+_0x11cdd6(0xe3)+_0x2e1437+_0x11cdd6(0x108)+_0x55a16c[_0x11cdd6(0xb4)][_0x11cdd6(0x15c)]+'.'}]};return{'content':[{'type':_0x11cdd6(0xb3),'text':_0x11cdd6(0xa9)+(_0x5d5ed2?_0x11cdd6(0x92):_0x11cdd6(0x135))+':\x20'+_0x55a16c[_0x11cdd6(0xb4)][_0x11cdd6(0x157)]+_0x11cdd6(0xe3)+_0x2e1437+_0x11cdd6(0x108)+_0x55a16c[_0x11cdd6(0xb4)][_0x11cdd6(0x15c)]+'.'}]};}catch(_0x54847b){const _0x565453=_0x54847b instanceof Error?_0x54847b[_0x11cdd6(0x120)]:String(_0x54847b);return reportMorphError({'error_message':_0x565453,'error_type':_0x54847b instanceof Error?_0x54847b[_0x11cdd6(0x180)]['name']:'UnknownError','context':{'tool':_0x11cdd6(0xdb),'completion_id':_0x3695b8,'file_path':_0x55a16c[_0x11cdd6(0xb4)][_0x11cdd6(0x15c)],'validated_path':_0x496dd6,'instruction':_0x55a16c['data']['instruction'],'model':_0x11cdd6(0xa4),'dry_run':_0x55a16c[_0x11cdd6(0xb4)][_0x11cdd6(0x172)],'file_exists':_0x5d5ed2,'file_read_error':_0x3803bd,'file_readable':_0x55b91b!==null,'request_content':{'path':_0x55a16c[_0x11cdd6(0xb4)]['path'],'code_edit':_0x55a16c[_0x11cdd6(0xb4)]['code_edit'],'instruction':_0x55a16c['data'][_0x11cdd6(0x157)],'original_code':_0x55b91b!==null?_0x55b91b[_0x11cdd6(0xe6)]>0xc350?_0x55b91b[_0x11cdd6(0x19c)](0x0,0xc350)+_0x11cdd6(0xdd)+_0x55b91b[_0x11cdd6(0xe6)]+_0x11cdd6(0x10a):_0x55b91b:_0x11cdd6(0x165)+(_0x3803bd||_0x11cdd6(0x17a))+']','original_code_length':_0x55b91b?.[_0x11cdd6(0xe6)]??0x0,'model':_0x11cdd6(0xa4),'dry_run':_0x55a16c[_0x11cdd6(0xb4)]['dryRun']}},'stack_trace':_0x54847b instanceof Error?_0x54847b[_0x11cdd6(0x173)]:undefined,'source':_0x11cdd6(0xac)})[_0x11cdd6(0x12e)](()=>{}),{'content':[{'type':'text','text':_0x11cdd6(0x18e)+_0x565453}],'isError':!![]};}}case'codebase_search':{const _0x54e539=WarpGrepArgsSchema[_0x11cdd6(0x156)](_0x460c2e);if(!_0x54e539['success'])return{'content':[{'type':_0x11cdd6(0xb3),'text':'Invalid\x20arguments:\x20'+_0x54e539['error']}],'isError':!![]};const _0x3542ad=_0x845900=>{const _0x5d8ff6=_0x11cdd6,_0x6f0a96=[];for(const _0x141ed8 of _0x845900||[]){const _0x317f53=_0x141ed8[_0x5d8ff6(0xf4)],_0x26b4cd=_0x141ed8[_0x5d8ff6(0xab)];if(_0x317f53===_0x5d8ff6(0x175)&&_0x26b4cd){const _0x10df40=_0x26b4cd[_0x5d8ff6(0x177)]('\x0a')[_0x5d8ff6(0x97)](_0x28241b=>_0x28241b[_0x5d8ff6(0x16d)]());for(const _0x1bbc3f of _0x10df40){const _0x47883d=_0x1bbc3f[_0x5d8ff6(0x166)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x47883d){_0x6f0a96[_0x5d8ff6(0x126)](_0x5d8ff6(0x141)+_0x47883d[0x1]+'\x27\x20'+_0x47883d[0x2]);continue;}const _0x23131c=_0x1bbc3f[_0x5d8ff6(0x166)](/^read\s+(.+)$/);if(_0x23131c){_0x6f0a96['push'](_0x5d8ff6(0x155)+_0x23131c[0x1]);continue;}const _0xb55814=_0x1bbc3f[_0x5d8ff6(0x166)](/^list_directory\s+(.+)$/);if(_0xb55814){_0x6f0a96[_0x5d8ff6(0x126)](_0x5d8ff6(0xd0)+_0xb55814[0x1]);continue;}}}}return _0x6f0a96;},_0x2fc001=_0x22a947=>{const _0x442139=_0x11cdd6,_0x32ec12=[];if(!_0x22a947||!Array[_0x442139(0xa6)](_0x22a947))return _0x32ec12;const _0x347b6a=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x442139(0x170),'tool':_0x442139(0x13f)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x442139(0xc1),'tool':_0x442139(0x13f)},{'pattern':/\[READ ERROR\]/,'error_type':'ReadError','tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x442139(0x134),'tool':_0x442139(0x13f)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x442139(0xe9),'tool':_0x442139(0x164)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x442139(0xad),'tool':_0x442139(0x164)},{'pattern':/\[BINARY FILE\]/,'error_type':'BinaryFile','tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':_0x442139(0x12a),'tool':_0x442139(0x13f)},{'pattern':/not a text file/,'error_type':'BinaryFile','tool':'read'},{'pattern':/symbolic link/,'error_type':_0x442139(0x12a),'tool':_0x442139(0x13f)},{'pattern':/Error reading file:/,'error_type':_0x442139(0xc2),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x442139(0x129),'tool':_0x442139(0x144)}];let _0x2d6ad4=0x0;for(const _0x41a870 of _0x22a947){if(_0x41a870[_0x442139(0xf4)]===_0x442139(0x194)){_0x2d6ad4++;const _0x363f06=_0x41a870[_0x442139(0xab)];if(!_0x363f06||typeof _0x363f06!==_0x442139(0x191))continue;for(const {pattern:_0x393247,error_type:_0x5a02d5,tool:_0x2fa1b7}of _0x347b6a){const _0x8fabe1=_0x363f06[_0x442139(0x166)](new RegExp(_0x393247[_0x442139(0x17c)],'g'));if(_0x8fabe1)for(const _0x48e934 of _0x8fabe1){const _0x3c9a9d=_0x363f06['indexOf'](_0x48e934),_0x3a7819=_0x363f06[_0x442139(0x19c)](_0x3c9a9d,Math[_0x442139(0x93)](_0x3c9a9d+0xc8,_0x363f06[_0x442139(0xe6)]));_0x32ec12[_0x442139(0x126)]({'tool':_0x2fa1b7,'error_type':_0x5a02d5,'error_message':_0x3a7819[_0x442139(0x177)]('\x0a')[0x0],'turn':_0x2d6ad4});}}}}return _0x32ec12;};try{const _0x25038b=a0_0x323230[_0x11cdd6(0xbb)](_0x54e539[_0x11cdd6(0xb4)][_0x11cdd6(0x133)]),_0x6c0f35=_0x54e539[_0x11cdd6(0xb4)]['search_type'],_0x26bb54=_0x6c0f35===_0x11cdd6(0x183)?{'allowNames':[_0x11cdd6(0x183)]}:undefined,_0x1b5983=new LocalRipgrepProvider(_0x25038b,undefined,_0x26bb54),_0xa686c0=await runWarpGrep({'searchTerm':_0x54e539[_0x11cdd6(0xb4)][_0x11cdd6(0x12d)],'repoRoot':_0x25038b,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x1b5983,'search_type':_0x6c0f35}),_0x8595d6=_0x2fc001(_0xa686c0[_0x11cdd6(0x14b)]);_0x8595d6[_0x11cdd6(0xe6)]>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x8595d6[_0x11cdd6(0xe6)]+'\x20error(s)','error_type':'SubToolError','level':_0x11cdd6(0xb8),'tool':_0x11cdd6(0xd4),'context':{'repo_path':_0x54e539[_0x11cdd6(0xb4)]['repo_path'],'query':_0x54e539[_0x11cdd6(0xb4)]['search_string'],'model':_0x11cdd6(0xfe),'termination_reason':_0xa686c0[_0x11cdd6(0xf0)],'sub_tool_errors':_0x8595d6,'timings':_0xa686c0[_0x11cdd6(0x178)],'tool_calls':_0x3542ad(_0xa686c0[_0x11cdd6(0x14b)]),'messages':_0xa686c0[_0x11cdd6(0x14b)]?.[_0x11cdd6(0xe7)](_0x3b4b8d=>({'role':_0x3b4b8d[_0x11cdd6(0xf4)],'content':_0x3b4b8d['content']}))},'source':'mcp-filesystem'})[_0x11cdd6(0x12e)](()=>{});let _0x3c31a2='';if(_0xa686c0[_0x11cdd6(0xf0)]==='completed'&&_0xa686c0[_0x11cdd6(0x197)]?.[_0x11cdd6(0x127)]?.['files']){const _0x4ee9e0=_0xa686c0[_0x11cdd6(0x197)][_0x11cdd6(0x127)][_0x11cdd6(0xf8)];if(_0x4ee9e0[_0x11cdd6(0xe6)]===0x0)return _0x3c31a2=_0xa686c0[_0x11cdd6(0x197)]['payload']||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':'text','text':_0x3c31a2}]};const _0x30028a=[],_0x224792=[_0x11cdd6(0xf5)];for(const _0x202cd9 of _0xa686c0[_0x11cdd6(0x14b)]){const _0x47c7f1=_0x202cd9[_0x11cdd6(0xf4)],_0x5a3675=_0x202cd9[_0x11cdd6(0xab)];if(_0x47c7f1===_0x11cdd6(0x175)&&_0x5a3675){const _0x338112=_0x5a3675[_0x11cdd6(0x177)]('\x0a')[_0x11cdd6(0x97)](_0x293ae3=>_0x293ae3[_0x11cdd6(0x16d)]());for(const _0x314c21 of _0x338112){const _0x470cfc=_0x314c21[_0x11cdd6(0x166)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x470cfc){_0x224792[_0x11cdd6(0x126)](_0x11cdd6(0x91)+_0x470cfc[0x1]+_0x11cdd6(0x190)+_0x470cfc[0x2]+'`');continue;}const _0x178f45=_0x314c21[_0x11cdd6(0x166)](/^read\s+(.+)$/);if(_0x178f45){_0x224792[_0x11cdd6(0x126)](_0x11cdd6(0x90)+_0x178f45[0x1]+'`');continue;}const _0x11fdb3=_0x314c21[_0x11cdd6(0x166)](/^list_directory\s+(.+)$/);if(_0x11fdb3){_0x224792[_0x11cdd6(0x126)]('-\x20Listed\x20directory\x20`'+_0x11fdb3[0x1]+'`');continue;}}}}_0x30028a[_0x11cdd6(0x126)](_0x224792['join']('\x0a'));const _0x2fe6a7=['',_0x11cdd6(0x14c)];for(const _0x249d06 of _0x4ee9e0){if(_0x249d06[_0x11cdd6(0xa5)]==='*')_0x2fe6a7['push']('-\x20'+_0x249d06['path']+':*');else{if(Array['isArray'](_0x249d06['lines'])){const _0x22206b=_0x249d06[_0x11cdd6(0xa5)][_0x11cdd6(0xe7)](([_0x1624e0,_0xb14924])=>{if(_0x1624e0===_0xb14924)return''+_0x1624e0;return _0x1624e0+'-'+_0xb14924;});_0x2fe6a7[_0x11cdd6(0x126)]('-\x20'+_0x249d06[_0x11cdd6(0x15c)]+':'+_0x22206b[_0x11cdd6(0x122)](','));}else _0x2fe6a7['push']('-\x20'+_0x249d06[_0x11cdd6(0x15c)]+':*');}}_0x2fe6a7[_0x11cdd6(0x126)](''),_0x30028a[_0x11cdd6(0x126)](_0x2fe6a7[_0x11cdd6(0x122)]('\x0a')),_0x30028a['push']('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x3c5e80=[];for(const _0x18242a of _0x4ee9e0){let _0x63841e=a0_0x323230[_0x11cdd6(0xbb)](_0x54e539[_0x11cdd6(0xb4)][_0x11cdd6(0x133)],_0x18242a[_0x11cdd6(0x15c)]),_0x56db20=null,_0x2454d1=null;try{_0x56db20=await a0_0x227f68[_0x11cdd6(0xc9)](_0x63841e,{'encoding':'utf-8'});}catch(_0x2db33f){const _0x3a7f0c=fixPathRepetition(_0x63841e);if(_0x3a7f0c)try{_0x56db20=await a0_0x227f68[_0x11cdd6(0xc9)](_0x3a7f0c,{'encoding':'utf-8'}),_0x63841e=_0x3a7f0c;}catch{_0x2454d1=_0x2db33f instanceof Error?_0x2db33f:new Error(String(_0x2db33f));}else _0x2454d1=_0x2db33f instanceof Error?_0x2db33f:new Error(String(_0x2db33f));}if(_0x56db20!==null){const _0x57d532=_0x56db20[_0x11cdd6(0x177)](/\r?\n/),_0x3ed6a6=[_0x11cdd6(0xc5)+_0x18242a[_0x11cdd6(0x15c)]+'\x22>'];if(_0x18242a[_0x11cdd6(0xa5)]==='*'||!Array['isArray'](_0x18242a[_0x11cdd6(0xa5)]))for(let _0x240051=0x1;_0x240051<=_0x57d532[_0x11cdd6(0xe6)];_0x240051++){const _0xa62f82=_0x57d532[_0x240051-0x1];_0x3ed6a6[_0x11cdd6(0x126)](_0x240051+'|\x20'+_0xa62f82);}else for(const [_0xbe989c,_0x3db873]of _0x18242a[_0x11cdd6(0xa5)]){_0x3ed6a6['length']>0x1&&_0x3ed6a6['push']('');for(let _0x3ec162=_0xbe989c;_0x3ec162<=_0x3db873&&_0x3ec162<=_0x57d532[_0x11cdd6(0xe6)];_0x3ec162++){const _0x3084d3=_0x57d532[_0x3ec162-0x1];_0x3ed6a6['push'](_0x3ec162+'|\x20'+_0x3084d3);}}_0x3ed6a6['push'](_0x11cdd6(0x96)),_0x3c5e80[_0x11cdd6(0x126)](_0x3ed6a6[_0x11cdd6(0x122)]('\x0a'));}else _0x3c5e80['push']('<file\x20path=\x22'+_0x18242a['path']+_0x11cdd6(0x18d)+(_0x2454d1?.[_0x11cdd6(0x120)]||'Unknown\x20error')+_0x11cdd6(0x145));}_0x30028a['push'](_0x3c5e80[_0x11cdd6(0x122)]('\x0a\x0a')),_0x3c31a2=_0x30028a[_0x11cdd6(0x122)]('\x0a');const _0x37f9ae=_0xa686c0[_0x11cdd6(0xc4)]?.[_0x11cdd6(0x97)](_0x57232a=>_0x57232a[_0x11cdd6(0x120)]?.[_0x11cdd6(0x116)](_0x11cdd6(0x13a)))||[];if(_0x37f9ae['length']>0x0){const _0x5e37d9=_0x37f9ae['map'](_0x31d0a0=>_0x31d0a0[_0x11cdd6(0x120)])['join'](';\x20');reportMorphError({'error_message':_0x5e37d9,'error_type':_0x11cdd6(0x15e),'context':{'tool':_0x11cdd6(0xd4),'repo_path':_0x54e539[_0x11cdd6(0xb4)]['repo_path'],'query':_0x54e539[_0x11cdd6(0xb4)]['search_string'],'model':_0x11cdd6(0xfe),'termination_reason':_0x11cdd6(0x11a),'error_count':_0x37f9ae['length'],'is_timeout':![],'timings':_0xa686c0[_0x11cdd6(0x178)],'files_attempted':_0x4ee9e0[_0x11cdd6(0xe7)](_0x6b678c=>({'path':_0x6b678c[_0x11cdd6(0x15c)],'lines':_0x6b678c['lines']})),'tool_calls':_0x3542ad(_0xa686c0[_0x11cdd6(0x14b)]),'messages':_0xa686c0[_0x11cdd6(0x14b)]?.['map'](_0x452523=>({'role':_0x452523[_0x11cdd6(0xf4)],'content':_0x452523[_0x11cdd6(0xab)]})),'request_content':{'query':_0x54e539[_0x11cdd6(0xb4)][_0x11cdd6(0x12d)],'repo_path':_0x54e539[_0x11cdd6(0xb4)]['repo_path'],'repoRoot':a0_0x323230[_0x11cdd6(0xbb)](_0x54e539['data'][_0x11cdd6(0x133)]),'model':_0x11cdd6(0xfe)}},'source':_0x11cdd6(0xac)})[_0x11cdd6(0x12e)](()=>{});}}else{if(_0xa686c0['terminationReason']===_0x11cdd6(0x159)&&_0xa686c0[_0x11cdd6(0xc4)][_0x11cdd6(0xe6)]>0x0){const _0x2b7826=_0xa686c0[_0x11cdd6(0xc4)][_0x11cdd6(0xe7)](_0x5ad2aa=>_0x5ad2aa['message'])[_0x11cdd6(0x122)](';\x20');_0x3c31a2=_0x11cdd6(0x106)+_0x2b7826;const _0x227a6d=_0x2b7826[_0x11cdd6(0xae)]()['includes']('timeout')||_0x2b7826['toLowerCase']()[_0x11cdd6(0x182)](_0x11cdd6(0xa8))||_0x2b7826[_0x11cdd6(0xae)]()[_0x11cdd6(0x182)](_0x11cdd6(0x131)),_0x46eaa5=_0xa686c0['finish']?.['metadata']?.['files'],_0x5006f4=_0xa686c0[_0x11cdd6(0xc4)][0x0];reportMorphError({'error_message':_0x2b7826,'error_type':_0x227a6d?_0x11cdd6(0xf1):_0x5006f4?.['constructor']?.[_0x11cdd6(0xf2)]||'WarpGrepError','context':{'tool':_0x11cdd6(0xd4),'repo_path':_0x54e539[_0x11cdd6(0xb4)]['repo_path'],'query':_0x54e539[_0x11cdd6(0xb4)]['search_string'],'model':_0x11cdd6(0xfe),'termination_reason':_0xa686c0[_0x11cdd6(0xf0)],'error_count':_0xa686c0[_0x11cdd6(0xc4)][_0x11cdd6(0xe6)],'is_timeout':_0x227a6d,'timings':_0xa686c0[_0x11cdd6(0x178)],'files_attempted':_0x46eaa5?.[_0x11cdd6(0xe7)](_0x178560=>({'path':_0x178560['path'],'lines':_0x178560[_0x11cdd6(0xa5)]})),'tool_calls':_0x3542ad(_0xa686c0[_0x11cdd6(0x14b)]),'messages':_0xa686c0[_0x11cdd6(0x14b)]?.[_0x11cdd6(0xe7)](_0xa2a7da=>({'role':_0xa2a7da[_0x11cdd6(0xf4)],'content':_0xa2a7da['content']})),'request_content':{'query':_0x54e539[_0x11cdd6(0xb4)][_0x11cdd6(0x12d)],'repo_path':_0x54e539['data']['repo_path'],'repoRoot':a0_0x323230['resolve'](_0x54e539[_0x11cdd6(0xb4)][_0x11cdd6(0x133)]),'model':_0x11cdd6(0xfe)}},'stack_trace':_0x5006f4?.[_0x11cdd6(0x173)]||undefined,'source':_0x11cdd6(0xac)})[_0x11cdd6(0x12e)](()=>{});}else _0x3c31a2=_0x11cdd6(0x151);}return{'content':[{'type':'text','text':_0x3c31a2}]};}catch(_0x33a114){const _0x155710=_0x33a114 instanceof Error?_0x33a114[_0x11cdd6(0x120)]:String(_0x33a114),_0x269b8e=_0x155710[_0x11cdd6(0xae)]()[_0x11cdd6(0x182)](_0x11cdd6(0x19a))||_0x155710[_0x11cdd6(0xae)]()[_0x11cdd6(0x182)](_0x11cdd6(0xa8))||_0x155710[_0x11cdd6(0xae)]()[_0x11cdd6(0x182)](_0x11cdd6(0x131))||_0x33a114 instanceof Error&&_0x33a114[_0x11cdd6(0xf2)]===_0x11cdd6(0xf1);return reportMorphError({'error_message':_0x155710,'error_type':_0x269b8e?_0x11cdd6(0xf1):_0x33a114 instanceof Error?_0x33a114[_0x11cdd6(0x180)][_0x11cdd6(0xf2)]:'UnknownError','context':{'tool':_0x11cdd6(0xd4),'repo_path':_0x54e539['data'][_0x11cdd6(0x133)],'query':_0x54e539[_0x11cdd6(0xb4)][_0x11cdd6(0x12d)],'model':_0x11cdd6(0xfe),'is_timeout':_0x269b8e,'exception_phase':_0x11cdd6(0x140),'request_content':{'query':_0x54e539[_0x11cdd6(0xb4)][_0x11cdd6(0x12d)],'repo_path':_0x54e539['data']['repo_path'],'repoRoot':a0_0x323230[_0x11cdd6(0xbb)](_0x54e539[_0x11cdd6(0xb4)]['repo_path']),'model':_0x11cdd6(0xfe)}},'stack_trace':_0x33a114 instanceof Error?_0x33a114[_0x11cdd6(0x173)]:undefined,'source':_0x11cdd6(0xac)})[_0x11cdd6(0x12e)](()=>{}),{'content':[{'type':'text','text':_0x11cdd6(0x17b)+_0x155710}],'isError':![]};}}case _0x11cdd6(0xf6):{const _0x331d86=WarpGrepGitHubArgsSchema[_0x11cdd6(0x156)](_0x460c2e);if(!_0x331d86[_0x11cdd6(0xcd)])return{'content':[{'type':_0x11cdd6(0xb3),'text':_0x11cdd6(0x169)+_0x331d86[_0x11cdd6(0xce)]}],'isError':!![]};const _0x33b8e1=_0x331d86[_0x11cdd6(0xb4)][_0x11cdd6(0x146)]||_0x331d86[_0x11cdd6(0xb4)][_0x11cdd6(0x105)];if(!_0x33b8e1)return{'content':[{'type':'text','text':_0x11cdd6(0x160)}],'isError':!![]};const _0x49387b=MORPH_API_KEY;if(!_0x49387b)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x1f8ae0=Date[_0x11cdd6(0x154)]();logMcpStderr(_0x11cdd6(0xe1)+_0x33b8e1+_0x11cdd6(0x117)+_0x331d86[_0x11cdd6(0xb4)][_0x11cdd6(0x12d)]+'\x22');try{const _0x4084c8=new WarpGrepClient({'morphApiKey':_0x49387b,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0xc539a9=await _0x4084c8[_0x11cdd6(0x115)]({'searchTerm':_0x331d86[_0x11cdd6(0xb4)][_0x11cdd6(0x12d)],'github':_0x33b8e1,'branch':_0x331d86['data'][_0x11cdd6(0x14d)]}),_0x27db93=Date[_0x11cdd6(0x154)]()-_0x1f8ae0;logMcpStderr(_0x11cdd6(0xe4)+_0x27db93+_0x11cdd6(0x17d)+_0xc539a9[_0x11cdd6(0xcd)]);const _0x508c1a=formatResult(_0xc539a9);return{'content':[{'type':_0x11cdd6(0xb3),'text':_0x508c1a}]};}catch(_0x1e7a2f){const _0x436a2d=Date[_0x11cdd6(0x154)]()-_0x1f8ae0,_0xda72ae=_0x1e7a2f instanceof Error?_0x1e7a2f[_0x11cdd6(0x120)]:String(_0x1e7a2f);return logMcpStderr('[github_codebase_search]\x20Failed\x20in\x20'+_0x436a2d+_0x11cdd6(0x9e),_0xda72ae),reportMorphError({'error_message':_0xda72ae,'error_type':_0x1e7a2f instanceof Error?_0x1e7a2f[_0x11cdd6(0x180)][_0x11cdd6(0xf2)]:_0x11cdd6(0x189),'context':{'tool':_0x11cdd6(0xf6),'github_url':_0x33b8e1,'search_string':_0x331d86[_0x11cdd6(0xb4)][_0x11cdd6(0x12d)],'branch':_0x331d86['data']['branch']},'stack_trace':_0x1e7a2f instanceof Error?_0x1e7a2f[_0x11cdd6(0x173)]:undefined,'source':_0x11cdd6(0xac),'tool':_0x11cdd6(0xf6),'latency_ms':_0x436a2d})[_0x11cdd6(0x12e)](()=>{}),{'content':[{'type':_0x11cdd6(0xb3),'text':'GitHub\x20search\x20failed:\x20'+_0xda72ae}],'isError':![]};}}default:throw new Error('Unknown\x20tool:\x20'+_0x5d5c50);}}catch(_0x2a6cc7){const _0x402c44=_0x2a6cc7 instanceof Error?_0x2a6cc7[_0x11cdd6(0x120)]:String(_0x2a6cc7);return reportMorphError({'error_message':_0x402c44,'error_type':_0x2a6cc7 instanceof Error?_0x2a6cc7[_0x11cdd6(0x180)][_0x11cdd6(0xf2)]:_0x11cdd6(0x189),'context':{'tool':_0x5d5c50,'arguments':_0x460c2e?JSON['stringify'](_0x460c2e)['substring'](0x0,0x1f4):undefined,'mcp_server_version':_0x11cdd6(0x104)},'stack_trace':_0x2a6cc7 instanceof Error?_0x2a6cc7[_0x11cdd6(0x173)]:undefined,'source':'mcp-filesystem'})[_0x11cdd6(0x12e)](()=>{}),{'content':[{'type':_0x11cdd6(0xb3),'text':_0x11cdd6(0x106)+_0x402c44}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x29c016){const _0x32ea25=a0_0x55ae12,_0xd0d90b=await getValidRootDirectories(_0x29c016);if(_0xd0d90b['length']>0x0)allowedDirectories=[..._0xd0d90b],logMcpStderr(_0x32ea25(0x15b)+_0xd0d90b[_0x32ea25(0xe6)]+_0x32ea25(0xb0));else{logMcpStderr(_0x32ea25(0xd6));if(ENABLE_WORKSPACE_MODE)try{const _0xfcd60=await detectWorkspaceRoot(WORKSPACE_ROOT);_0xfcd60&&(allowedDirectories=[_0xfcd60],logMcpStderr(_0x32ea25(0x9f)+_0xfcd60));}catch(_0x4e170c){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x4e170c);}}}server[a0_0x55ae12(0xaf)](RootsListChangedNotificationSchema,async()=>{const _0x48fb13=a0_0x55ae12;try{const _0x5a4245=await server[_0x48fb13(0x167)]();_0x5a4245&&_0x48fb13(0x18b)in _0x5a4245&&await updateAllowedDirectoriesFromRoots(_0x5a4245[_0x48fb13(0x18b)]);}catch(_0x25dbe3){logMcpStderr(_0x48fb13(0xb1),_0x25dbe3 instanceof Error?_0x25dbe3[_0x48fb13(0x120)]:String(_0x25dbe3));}}),server[a0_0x55ae12(0x138)]=async()=>{const _0x4846a9=a0_0x55ae12,_0x444d67=server['getClientCapabilities']();if(_0x444d67?.[_0x4846a9(0x18b)])try{const _0x44fbee=await server['listRoots']();_0x44fbee&&_0x4846a9(0x18b)in _0x44fbee?await updateAllowedDirectoriesFromRoots(_0x44fbee[_0x4846a9(0x18b)]):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x1a9393){logMcpStderr(_0x4846a9(0xa2),_0x1a9393 instanceof Error?_0x1a9393[_0x4846a9(0x120)]:String(_0x1a9393));}else{if(allowedDirectories['length']>0x0)logMcpStderr(_0x4846a9(0x184),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x4846a9(0x161));else throw new Error('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.');}}};async function runServer(){const _0x353d67=a0_0x55ae12,_0x59c5e5=new StdioServerTransport();await server[_0x353d67(0x152)](_0x59c5e5),logMcpStderr(_0x353d67(0x12b)),allowedDirectories[_0x353d67(0xe6)]===0x0&&logMcpStderr(_0x353d67(0x13b));}runServer()[a0_0x55ae12(0x12e)](_0x4b90e1=>{const _0x40d8e0=a0_0x55ae12;logMcpStderr(_0x40d8e0(0x196),_0x4b90e1),process[_0x40d8e0(0x113)](0x1);});
2
+ const a0_0x3512ec=a0_0x2e5c;(function(_0x3de28b,_0x517f2b){const _0x65b3c=a0_0x2e5c,_0x1db5a5=_0x3de28b();while(!![]){try{const _0x5c59af=parseInt(_0x65b3c(0x241))/0x1+-parseInt(_0x65b3c(0x230))/0x2+-parseInt(_0x65b3c(0x215))/0x3+parseInt(_0x65b3c(0x1ed))/0x4+parseInt(_0x65b3c(0x219))/0x5*(-parseInt(_0x65b3c(0x1d1))/0x6)+-parseInt(_0x65b3c(0x20f))/0x7*(parseInt(_0x65b3c(0x1ea))/0x8)+parseInt(_0x65b3c(0x24e))/0x9;if(_0x5c59af===_0x517f2b)break;else _0x1db5a5['push'](_0x1db5a5['shift']());}catch(_0x1457f6){_0x1db5a5['push'](_0x1db5a5['shift']());}}}(a0_0x3407,0x9b5a1));import{Server}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';function a0_0x2e5c(_0x344b04,_0x19c3d6){_0x344b04=_0x344b04-0x1a0;const _0x340796=a0_0x3407();let _0x2e5c01=_0x340796[_0x344b04];return _0x2e5c01;}import{CallToolRequestSchema,ListToolsRequestSchema,RootsListChangedNotificationSchema}from'@modelcontextprotocol/sdk/types.js';import a0_0x2d6057 from'fs/promises';import a0_0x2702b4 from'path';import a0_0x1417b4 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_0x29e789 from'axios';function fixPathRepetition(_0x588396){const _0x1c99e2=a0_0x2e5c,_0x3b256c=_0x588396[_0x1c99e2(0x1e4)](a0_0x2702b4[_0x1c99e2(0x225)])[_0x1c99e2(0x1d6)](Boolean);if(_0x3b256c[_0x1c99e2(0x1be)]<0x2)return null;for(let _0xc31305=Math[_0x1c99e2(0x1aa)](_0x3b256c[_0x1c99e2(0x1be)]/0x2);_0xc31305>=0x1;_0xc31305--){for(let _0x1fff4e=0x0;_0x1fff4e<=_0x3b256c[_0x1c99e2(0x1be)]-0x2*_0xc31305;_0x1fff4e++){const _0x31c985=_0x3b256c[_0x1c99e2(0x251)](_0x1fff4e,_0x1fff4e+_0xc31305),_0x5156e5=_0x3b256c[_0x1c99e2(0x251)](_0x1fff4e+_0xc31305,_0x1fff4e+0x2*_0xc31305);if(_0x31c985[_0x1c99e2(0x244)]((_0x197f38,_0x5db400)=>_0x197f38===_0x5156e5[_0x5db400])){const _0x6dcf5e=[..._0x3b256c[_0x1c99e2(0x251)](0x0,_0x1fff4e),..._0x3b256c[_0x1c99e2(0x251)](_0x1fff4e+_0xc31305)];return a0_0x2702b4['sep']+_0x6dcf5e[_0x1c99e2(0x2a8)](a0_0x2702b4[_0x1c99e2(0x225)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x5aa119=a0_0x2e5c;try{const _0x543bc9=require(_0x5aa119(0x1ac));return _0x543bc9[_0x5aa119(0x20e)]??_0x5aa119(0x28f);}catch(_0x3bd878){return logMcpStderr(_0x5aa119(0x23d),_0x3bd878),_0x5aa119(0x28f);}}function printHelp(){const _0xbfa1af=a0_0x2e5c;console[_0xbfa1af(0x1b0)](_0xbfa1af(0x295)+getPackageVersion()),console[_0xbfa1af(0x1b0)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0xbfa1af(0x1b0)](_0xbfa1af(0x267)),console[_0xbfa1af(0x1b0)]('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0xbfa1af(0x1b0)](_0xbfa1af(0x28e)),console[_0xbfa1af(0x1b0)](_0xbfa1af(0x2a9)),console[_0xbfa1af(0x1b0)](_0xbfa1af(0x2aa)),console[_0xbfa1af(0x1b0)](_0xbfa1af(0x203)),console[_0xbfa1af(0x1b0)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process['argv'][a0_0x3512ec(0x251)](0x2),VERSION_FLAGS=new Set([a0_0x3512ec(0x24d),'-v','-V']),HELP_FLAGS=new Set([a0_0x3512ec(0x1e3),'-h']);cliArgs[a0_0x3512ec(0x22a)](_0x21ff35=>VERSION_FLAGS[a0_0x3512ec(0x1bf)](_0x21ff35))&&(console[a0_0x3512ec(0x1b0)]('@morphllm/morphmcp\x20'+getPackageVersion()),process[a0_0x3512ec(0x28c)](0x0));cliArgs[a0_0x3512ec(0x22a)](_0x42b9a3=>HELP_FLAGS[a0_0x3512ec(0x1bf)](_0x42b9a3))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x278123){const _0x55916b=a0_0x3512ec;for(let _0x17984c=0x0;_0x17984c<cliArgs['length'];_0x17984c++){const _0x259fda=cliArgs[_0x17984c];if(_0x259fda['startsWith']('--'+_0x278123+'='))return _0x259fda[_0x55916b(0x251)](('--'+_0x278123+'=')[_0x55916b(0x1be)]);if(_0x259fda==='--'+_0x278123&&_0x17984c+0x1<cliArgs[_0x55916b(0x1be)])return cliArgs[_0x17984c+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x3512ec(0x1be)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x3512ec(0x1bf)](arg)||HELP_FLAGS[a0_0x3512ec(0x1bf)](arg))continue;if(arg[a0_0x3512ec(0x1ec)](a0_0x3512ec(0x2af)))continue;if(arg==='--api-key'){i++;continue;}args[a0_0x3512ec(0x1dd)](arg);}function a0_0x3407(){const _0x47e8c5=['added\x20','normalize','WORKSPACE_ROOT','message','lines','morph-','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','includes','version','35BdFkec','setNotificationHandler','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','basename','PathError','unknown\x20error','368103dICpwB','size','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','catch','2239195PZDzAZ','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','glob\x20\x27','ms.\x20Success:\x20','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','homedir','indexOf','code','ms:','code_edit','assistant','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','sep','Error\x20running\x20fast\x20context\x20search:\x20','codebase_search','Fatal\x20error\x20running\x20server:','-\x20Listed\x20directory\x20`','some','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','terminated','Invalid\x20arguments:\x20','source','timings','882986kjpZhM','Failed\x20to\x20request\x20roots\x20from\x20client:','array','Tool\x20\x22','Morph\x20Edit\x20','\x20-\x20','composer.json','requiresApiKey','morph-v3-fast','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','\x27\x20in\x20`','metadata','data','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','stringify','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','225252nLYwCn','GitHub\x20search\x20failed:\x20','BinaryFile','every','\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable','path','Morph\x20Edit\x20Preview','tool','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.','stat','pyproject.toml','files','--version','15338700WXPkLW','min','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','slice','.git','branch','utf-8','params','ReadError','timeout','dirname','glob','description','parse','boolean','\x20chars)','object','[github_codebase_search]\x20Done\x20in\x20','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','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','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','success','https://morphllm.com/api/error-report','completed_with_file_errors','\x20for:\x20\x22','\x0aOptions:','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','access','Bearer\x20','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','default','MORPH_API_URL','edit_file','application/json','error','repo_path','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','instruction','`\x20in\x20`','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','realpath','File\x20read\x20error:','function','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','MORPH_API_KEY','Workspace\x20mode\x20enabled:\x20Using\x20','setRequestHandler','WarpGrep\x20sub-tool\x20errors:\x20','command','morph-warp-grep-v2.1','terminationReason','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.','sk-','read','all','timed\x20out','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','read\x20','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','node_modules','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','exit','roots','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','unknown','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','dryRun','mcp-filesystem','Failed\x20to\x20read\x20file:\x20','For\x20deletions:\x0a','@morphllm/morphmcp\x20','Repository\x20identifier','.\x20Path:\x20','Warning:\x20','false','linesAdded','name','oninitialized','Here\x20is\x20the\x20content\x20of\x20files:\x0a','.vscode','tsconfig.json','tool_calls','payload','describe','package.json','inputSchema','ToolException','PWD','readFile','join','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','\x0aExamples:','runWarpGrep_call','searchGitHub','role','\x22>\x0aError\x20reading\x20file:\x20','--api-key=','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','listRoots','content','-\x20Grepped\x20\x27','\x20disabled\x20via\x20DISABLED_TOOLS','optional','getClientCapabilities',',\x20removed\x20','github_codebase_search','<file\x20path=\x22','floor','MORPH_WARP_GREP_TIMEOUT','../package.json','isDirectory','Preview\x20changes\x20without\x20applying\x20them.','FileNotFound','log','0.2.0','resolve','completed','changes','RipgrepError','Disabled\x20tools:\x20','finish','errors','stack','DISABLED_TOOLS','Error:\x20','</file>','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','length','has','enum','[could\x20not\x20read\x20file:\x20','UnknownError','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','morph-mcp','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','substring','tool_call_id','Specific\x20commit\x20hash\x20to\x20search','[github_codebase_search]\x20Failed\x20in\x20','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','messages','Tool\x20','list_directory','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','Parent\x20directory\x20does\x20not\x20exist:\x20','12fJXxcM','isArray','text','ENOENT','toLowerCase','filter','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','ENABLE_WORKSPACE_MODE','search_type','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','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.','push','github_url','Rules:\x0a','\x22.\x20Known\x20tools:\x20','grep_search','Error\x20accessing\x20directory\x20','--help','split','completionId','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','map','now','Max\x20results\x20to\x20return','377632oyYSUg','string','startsWith','1610644YVftiN','warn','grep','safeParse','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','linesModified','.\x20Changes:\x20','\x0a</file>','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','\x20as\x20allowed\x20directory','TimeoutError','SymlinkError','etimedout','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','env','Warning:\x20Workspace\x20fallback\x20failed:\x20','constructor','Morph\x20FastApply\x20failed\x20without\x20error\x20message','search_string','go.mod','\x0a...\x20(truncated,\x20total:\x20','user','\x20\x20morph-mcp','pattern','Branch\x20to\x20search\x20(uses\x20latest\x20commit)'];a0_0x3407=function(){return _0x47e8c5;};return a0_0x3407();}const WORKSPACE_ROOT=process[a0_0x3512ec(0x1fb)][a0_0x3512ec(0x208)]||process[a0_0x3512ec(0x1fb)][a0_0x3512ec(0x2a6)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0x3512ec(0x1fb)][a0_0x3512ec(0x1d9)]!==a0_0x3512ec(0x299),MORPH_API_KEY=getCliArg('api-key')??process[a0_0x3512ec(0x1fb)][a0_0x3512ec(0x27b)],MORPH_API_URL=process[a0_0x3512ec(0x1fb)][a0_0x3512ec(0x26d)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x3512ec(0x1fb)][a0_0x3512ec(0x1ab)]?parseInt(process['env']['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x3512ec(0x26e),'codebase_search',a0_0x3512ec(0x1a8)]),DISABLED_TOOLS=process[a0_0x3512ec(0x1fb)][a0_0x3512ec(0x1ba)]?new Set(process[a0_0x3512ec(0x1fb)]['DISABLED_TOOLS'][a0_0x3512ec(0x1e4)](',')[a0_0x3512ec(0x1e7)](_0x49d660=>_0x49d660['trim']())[a0_0x3512ec(0x1d6)](_0x46c63b=>_0x46c63b[a0_0x3512ec(0x1be)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0x3512ec(0x216)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES['has'](tool)&&console['error'](a0_0x3512ec(0x1a0)+tool+a0_0x3512ec(0x1e0)+[...KNOWN_TOOL_NAMES][a0_0x3512ec(0x2a8)](',\x20'));}console[a0_0x3512ec(0x270)](a0_0x3512ec(0x1b6)+[...DISABLED_TOOLS]['join'](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY['startsWith'](a0_0x3512ec(0x283))&&!MORPH_API_KEY[a0_0x3512ec(0x1ec)](a0_0x3512ec(0x20b))&&logMcpStderr(a0_0x3512ec(0x287));async function reportMorphError(_0x4594aa){const _0x36fa28=a0_0x3512ec;try{await a0_0x29e789['post'](_0x36fa28(0x264),{..._0x4594aa,'timestamp':new Date()['toISOString'](),'source':_0x4594aa[_0x36fa28(0x22e)]||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x4594aa['context']}},{'timeout':0x1388,'headers':{'Content-Type':_0x36fa28(0x26f),'Authorization':_0x36fa28(0x26a)+MORPH_API_KEY}});}catch{}}args['length']===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x3512ec(0x1f1)),logMcpStderr(a0_0x3512ec(0x275)),logMcpStderr('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr(a0_0x3512ec(0x1bd)),logMcpStderr(a0_0x3512ec(0x1cb)));function normalizePath(_0x344ccb){const _0x115d22=a0_0x3512ec;return a0_0x2702b4[_0x115d22(0x207)](_0x344ccb);}function expandHome(_0x18b1d1){const _0xb3c2c4=a0_0x3512ec;if(_0x18b1d1[_0xb3c2c4(0x1ec)]('~/')||_0x18b1d1==='~')return a0_0x2702b4[_0xb3c2c4(0x2a8)](a0_0x1417b4[_0xb3c2c4(0x21e)](),_0x18b1d1['slice'](0x1));return _0x18b1d1;}let allowedDirectories=await Promise['all'](args[a0_0x3512ec(0x1e7)](async _0xfcf2b=>{const _0x21aeef=a0_0x3512ec,_0x558ac1=expandHome(_0xfcf2b),_0x2a6733=a0_0x2702b4[_0x21aeef(0x1b2)](_0x558ac1);try{const _0x111339=await a0_0x2d6057[_0x21aeef(0x277)](_0x2a6733);return normalizePath(_0x111339);}catch(_0xc8e4a7){return normalizePath(_0x2a6733);}}));if(ENABLE_WORKSPACE_MODE&&args['length']===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x3512ec(0x1dd)](workspaceDir),logMcpStderr(a0_0x3512ec(0x27c)+workspaceDir+a0_0x3512ec(0x1f6)));}catch(a0_0x3a98b7){logMcpStderr(a0_0x3512ec(0x1d7)+a0_0x3a98b7);}async function detectWorkspaceRoot(_0x15f620){const _0x5058da=a0_0x3512ec;let _0x3754c3=a0_0x2702b4['resolve'](_0x15f620);const _0xbb0c2b=[_0x5058da(0x252),_0x5058da(0x29e),_0x5058da(0x2a3),'Cargo.toml',_0x5058da(0x24b),_0x5058da(0x200),'.cursor',_0x5058da(0x29f),_0x5058da(0x236)];while(_0x3754c3!==a0_0x2702b4[_0x5058da(0x258)](_0x3754c3)){for(const _0x5d227a of _0xbb0c2b){const _0x2920f0=a0_0x2702b4[_0x5058da(0x2a8)](_0x3754c3,_0x5d227a);try{return await a0_0x2d6057[_0x5058da(0x269)](_0x2920f0),normalizePath(_0x3754c3);}catch{}}_0x3754c3=a0_0x2702b4[_0x5058da(0x258)](_0x3754c3);}return normalizePath(_0x15f620);}await Promise[a0_0x3512ec(0x285)](args[a0_0x3512ec(0x1e7)](async _0x588b1c=>{const _0x2b14aa=a0_0x3512ec;try{const _0xfc212f=await a0_0x2d6057[_0x2b14aa(0x24a)](expandHome(_0x588b1c));!_0xfc212f[_0x2b14aa(0x1ad)]()&&(logMcpStderr(_0x2b14aa(0x1bb)+_0x588b1c+'\x20is\x20not\x20a\x20directory'),process[_0x2b14aa(0x28c)](0x1));}catch(_0x1d6c28){logMcpStderr(_0x2b14aa(0x1e2)+_0x588b1c+':',_0x1d6c28),process[_0x2b14aa(0x28c)](0x1);}}));async function validatePath(_0x2ab5a0){const _0x39aa7b=a0_0x3512ec,_0xa1e87b=expandHome(_0x2ab5a0),_0x541e79=a0_0x2702b4[_0x39aa7b(0x1b2)](_0xa1e87b);try{const _0x12243b=await a0_0x2d6057[_0x39aa7b(0x277)](_0x541e79);return _0x12243b;}catch(_0x31ef22){if(_0x31ef22[_0x39aa7b(0x220)]==='ENOENT'){const _0x4abd2a=a0_0x2702b4[_0x39aa7b(0x258)](_0x541e79);try{const _0x22bd0d=await a0_0x2d6057[_0x39aa7b(0x277)](_0x4abd2a);return a0_0x2702b4[_0x39aa7b(0x2a8)](_0x22bd0d,a0_0x2702b4['basename'](_0x541e79));}catch{throw new Error(_0x39aa7b(0x1d0)+_0x4abd2a);}}throw _0x31ef22;}}const MorphEditFileArgsSchema=z['object']({'path':z[a0_0x3512ec(0x1eb)](),'code_edit':z[a0_0x3512ec(0x1eb)]()[a0_0x3512ec(0x2a2)]('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z[a0_0x3512ec(0x1eb)]()[a0_0x3512ec(0x2a2)]('A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.'),'dryRun':z[a0_0x3512ec(0x25c)]()['default'](![])[a0_0x3512ec(0x2a2)](a0_0x3512ec(0x1ae))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x3512ec(0x1dc),WarpGrepArgsSchema=z[a0_0x3512ec(0x25e)]({'search_string':z['string']()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z['string']()[a0_0x3512ec(0x2a2)](a0_0x3512ec(0x28b)),'search_type':z[a0_0x3512ec(0x1c0)]([a0_0x3512ec(0x26c),'node_modules'])[a0_0x3512ec(0x1a5)]()[a0_0x3512ec(0x2a2)](a0_0x3512ec(0x289))}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z[a0_0x3512ec(0x1eb)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()[a0_0x3512ec(0x1a5)]()['describe'](a0_0x3512ec(0x249)),'owner_repo':z[a0_0x3512ec(0x1eb)]()[a0_0x3512ec(0x1a5)]()[a0_0x3512ec(0x2a2)](a0_0x3512ec(0x21d)),'branch':z['string']()['optional']()['describe'](a0_0x3512ec(0x26b))}),CodebaseSearchArgsSchema=z[a0_0x3512ec(0x25e)]({'query':z['string']()[a0_0x3512ec(0x2a2)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x3512ec(0x1eb)]()[a0_0x3512ec(0x2a2)](a0_0x3512ec(0x296)),'branch':z['string']()[a0_0x3512ec(0x1a5)]()['describe'](a0_0x3512ec(0x205)),'commitHash':z['string']()['optional']()[a0_0x3512ec(0x2a2)](a0_0x3512ec(0x1c9)),'targetDirectories':z[a0_0x3512ec(0x232)](z['string']())[a0_0x3512ec(0x26c)]([])['describe'](a0_0x3512ec(0x240)),'limit':z['number']()[a0_0x3512ec(0x1a5)]()[a0_0x3512ec(0x26c)](0xa)[a0_0x3512ec(0x2a2)](a0_0x3512ec(0x1e9))}),server=new Server({'name':a0_0x3512ec(0x1c5),'version':a0_0x3512ec(0x1b1)},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x68f5fd=a0_0x3512ec,_0x3fdee3=[{'name':_0x68f5fd(0x26e),'description':_0x68f5fd(0x1c4)+'⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a'+'🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a'+_0x68f5fd(0x211)+'Benefits:\x0a'+_0x68f5fd(0x1c3)+_0x68f5fd(0x1fa)+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+_0x68f5fd(0x276)+'Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a'+'ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a'+_0x68f5fd(0x20c)+_0x68f5fd(0x294)+_0x68f5fd(0x268)+_0x68f5fd(0x1f5)+_0x68f5fd(0x1df)+_0x68f5fd(0x1d8)+_0x68f5fd(0x23f)+_0x68f5fd(0x1e6)+'-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a'+'-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a'+'-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a'+_0x68f5fd(0x22b),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':'codebase_search','description':_0x68f5fd(0x261)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x68f5fd(0x239)+_0x68f5fd(0x21a)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x194fc6=_0x3fdee3[_0x68f5fd(0x1d6)](_0x1a6b80=>{const _0x340005=_0x68f5fd;if(DISABLED_TOOLS[_0x340005(0x1bf)](_0x1a6b80[_0x340005(0x29b)]))return console[_0x340005(0x270)](_0x340005(0x1cd)+_0x1a6b80[_0x340005(0x29b)]+_0x340005(0x1a4)),![];if('requiresApiKey'in _0x1a6b80&&_0x1a6b80[_0x340005(0x237)]&&!MORPH_API_KEY)return logMcpStderr(_0x340005(0x298)+_0x1a6b80['name']+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x194fc6['map'](_0x14f4c9=>({'name':_0x14f4c9[_0x68f5fd(0x29b)],'description':_0x14f4c9[_0x68f5fd(0x25a)],'inputSchema':_0x14f4c9[_0x68f5fd(0x2a4)]}))};}),server[a0_0x3512ec(0x27d)](CallToolRequestSchema,async _0xca5944=>{const _0x26b23e=a0_0x3512ec,{name:_0x494eb9,arguments:_0x1a732a}=_0xca5944[_0x26b23e(0x255)];try{if(DISABLED_TOOLS[_0x26b23e(0x1bf)](_0x494eb9))throw new Error(_0x26b23e(0x233)+_0x494eb9+_0x26b23e(0x245));switch(_0x494eb9){case _0x26b23e(0x26e):{const _0x32abab=MorphEditFileArgsSchema[_0x26b23e(0x1f0)](_0x1a732a);if(!_0x32abab[_0x26b23e(0x263)])throw new Error(_0x26b23e(0x1cf)+_0x32abab['error']);const _0x227eb9=await validatePath(_0x32abab[_0x26b23e(0x23c)][_0x26b23e(0x246)]);let _0x5c8a98=null,_0x4794ce=!![],_0x584cfa=null;try{_0x5c8a98=await a0_0x2d6057[_0x26b23e(0x2a7)](_0x227eb9,_0x26b23e(0x254));}catch(_0x21e094){const _0x334780=_0x21e094[_0x26b23e(0x220)];_0x334780===_0x26b23e(0x1d4)?(_0x4794ce=![],_0x5c8a98=''):(_0x584cfa=_0x26b23e(0x293)+(_0x334780||_0x26b23e(0x28f))+_0x26b23e(0x235)+(_0x21e094 instanceof Error?_0x21e094[_0x26b23e(0x209)]:String(_0x21e094)),logMcpStderr(_0x26b23e(0x298)+_0x584cfa));}let _0x5327a3;try{const _0xeeed7c=MORPH_API_KEY;if(!_0xeeed7c)throw new Error(_0x26b23e(0x27a));const _0x836616=a0_0x2702b4[_0x26b23e(0x258)](_0x227eb9),_0x2f447b=a0_0x2702b4[_0x26b23e(0x212)](_0x227eb9),_0x95628e=await executeEditFile({'target_filepath':_0x2f447b,'code_edit':_0x32abab[_0x26b23e(0x23c)][_0x26b23e(0x222)],'instructions':_0x32abab['data']['instruction']},{'morphApiKey':_0xeeed7c,'morphApiUrl':MORPH_API_URL,'baseDir':_0x836616,'autoWrite':!_0x32abab['data'][_0x26b23e(0x291)],'generateUdiff':![],'debug':![]});_0x5327a3=_0x95628e[_0x26b23e(0x1e5)];if(!_0x95628e['success'])throw new Error(_0x95628e[_0x26b23e(0x270)]||_0x26b23e(0x1fe));const _0x7200dc=_0x95628e[_0x26b23e(0x1b4)],_0x381d2d=_0x26b23e(0x206)+_0x7200dc[_0x26b23e(0x29a)]+_0x26b23e(0x1a7)+_0x7200dc['linesRemoved']+',\x20modified\x20'+_0x7200dc[_0x26b23e(0x1f2)];if(_0x32abab[_0x26b23e(0x23c)][_0x26b23e(0x291)])return{'content':[{'type':'text','text':_0x26b23e(0x247)+(_0x4794ce?'':'\x20(new\x20file)')+':\x20'+_0x32abab[_0x26b23e(0x23c)][_0x26b23e(0x273)]+'.\x20Changes:\x20'+_0x381d2d+'.\x20Path:\x20'+_0x32abab['data'][_0x26b23e(0x246)]+'.'}]};return{'content':[{'type':_0x26b23e(0x1d3),'text':_0x26b23e(0x234)+(_0x4794ce?'Applied':'Created\x20File')+':\x20'+_0x32abab['data'][_0x26b23e(0x273)]+_0x26b23e(0x1f3)+_0x381d2d+_0x26b23e(0x297)+_0x32abab['data'][_0x26b23e(0x246)]+'.'}]};}catch(_0x13f5b5){const _0x3ed1f6=_0x13f5b5 instanceof Error?_0x13f5b5[_0x26b23e(0x209)]:String(_0x13f5b5);return reportMorphError({'error_message':_0x3ed1f6,'error_type':_0x13f5b5 instanceof Error?_0x13f5b5['constructor'][_0x26b23e(0x29b)]:_0x26b23e(0x1c2),'context':{'tool':'edit_file','completion_id':_0x5327a3,'file_path':_0x32abab[_0x26b23e(0x23c)][_0x26b23e(0x246)],'validated_path':_0x227eb9,'instruction':_0x32abab[_0x26b23e(0x23c)][_0x26b23e(0x273)],'model':_0x26b23e(0x238),'dry_run':_0x32abab[_0x26b23e(0x23c)][_0x26b23e(0x291)],'file_exists':_0x4794ce,'file_read_error':_0x584cfa,'file_readable':_0x5c8a98!==null,'request_content':{'path':_0x32abab[_0x26b23e(0x23c)][_0x26b23e(0x246)],'code_edit':_0x32abab[_0x26b23e(0x23c)][_0x26b23e(0x222)],'instruction':_0x32abab[_0x26b23e(0x23c)][_0x26b23e(0x273)],'original_code':_0x5c8a98!==null?_0x5c8a98['length']>0xc350?_0x5c8a98[_0x26b23e(0x1c7)](0x0,0xc350)+_0x26b23e(0x201)+_0x5c8a98[_0x26b23e(0x1be)]+_0x26b23e(0x25d):_0x5c8a98:_0x26b23e(0x1c1)+(_0x584cfa||_0x26b23e(0x214))+']','original_code_length':_0x5c8a98?.['length']??0x0,'model':'morph-v3-fast','dry_run':_0x32abab[_0x26b23e(0x23c)][_0x26b23e(0x291)]}},'stack_trace':_0x13f5b5 instanceof Error?_0x13f5b5['stack']:undefined,'source':_0x26b23e(0x292)})['catch'](()=>{}),{'content':[{'type':'text','text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x3ed1f6}],'isError':!![]};}}case _0x26b23e(0x227):{const _0x5f139c=WarpGrepArgsSchema[_0x26b23e(0x1f0)](_0x1a732a);if(!_0x5f139c[_0x26b23e(0x263)])return{'content':[{'type':_0x26b23e(0x1d3),'text':_0x26b23e(0x22d)+_0x5f139c[_0x26b23e(0x270)]}],'isError':!![]};const _0x372e56=_0x2c3a9a=>{const _0xbef308=_0x26b23e,_0xc20e0f=[];for(const _0x49e470 of _0x2c3a9a||[]){if(_0x49e470['role']===_0xbef308(0x223)&&Array[_0xbef308(0x1d2)](_0x49e470[_0xbef308(0x2a0)]))for(const _0x56833a of _0x49e470[_0xbef308(0x2a0)]){try{const _0x3906ed=_0x56833a[_0xbef308(0x279)]?.[_0xbef308(0x29b)],_0x362910=JSON[_0xbef308(0x25b)](_0x56833a['function']?.['arguments']||'{}');if(_0x3906ed===_0xbef308(0x1e1))_0xc20e0f[_0xbef308(0x1dd)]('grep\x20\x27'+_0x362910[_0xbef308(0x204)]+'\x27\x20'+(_0x362910[_0xbef308(0x246)]||'.'));else{if(_0x3906ed===_0xbef308(0x284))_0xc20e0f['push'](_0xbef308(0x288)+_0x362910[_0xbef308(0x246)]);else{if(_0x3906ed==='list_directory')_0xc20e0f[_0xbef308(0x1dd)]('list_directory\x20'+(_0x362910[_0xbef308(0x27f)]||'.'));else{if(_0x3906ed==='glob')_0xc20e0f[_0xbef308(0x1dd)](_0xbef308(0x21b)+_0x362910['pattern']+'\x27\x20'+(_0x362910[_0xbef308(0x246)]||'.'));else _0x3906ed===_0xbef308(0x1b7)&&_0xc20e0f[_0xbef308(0x1dd)](_0xbef308(0x1b7));}}}}catch{}}}return _0xc20e0f;},_0x2b852e=_0x54ef3b=>{const _0x58cf76=_0x26b23e,_0x5d65b9=[];if(!_0x54ef3b||!Array['isArray'](_0x54ef3b))return _0x5d65b9;const _0x17ac4f=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x58cf76(0x1af),'tool':_0x58cf76(0x284)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x58cf76(0x213),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x58cf76(0x256),'tool':_0x58cf76(0x284)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':'BinaryFile','tool':_0x58cf76(0x284)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x58cf76(0x1b5),'tool':_0x58cf76(0x1ef)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':'RipgrepNotAvailable','tool':_0x58cf76(0x1ef)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x58cf76(0x243),'tool':_0x58cf76(0x284)},{'pattern':/\[SYMLINK\]/,'error_type':_0x58cf76(0x1f8),'tool':_0x58cf76(0x284)},{'pattern':/not a text file/,'error_type':_0x58cf76(0x243),'tool':_0x58cf76(0x284)},{'pattern':/symbolic link/,'error_type':_0x58cf76(0x1f8),'tool':'read'},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':_0x58cf76(0x284)},{'pattern':/status="error"/,'error_type':_0x58cf76(0x2a5),'tool':_0x58cf76(0x28f)}];let _0x390478=0x0;for(const _0x516442 of _0x54ef3b){_0x516442['role']===_0x58cf76(0x223)&&Array['isArray'](_0x516442['tool_calls'])&&_0x390478++;const _0x4d19f7=_0x516442[_0x58cf76(0x1a2)];if((_0x516442[_0x58cf76(0x2ad)]===_0x58cf76(0x248)||_0x516442[_0x58cf76(0x2ad)]===_0x58cf76(0x202))&&_0x4d19f7&&typeof _0x4d19f7===_0x58cf76(0x1eb))for(const {pattern:_0x55a21f,error_type:_0x50c757,tool:_0x127eb9}of _0x17ac4f){const _0x3916ad=_0x4d19f7['match'](new RegExp(_0x55a21f[_0x58cf76(0x22e)],'g'));if(_0x3916ad)for(const _0x10958a of _0x3916ad){const _0x881db0=_0x4d19f7[_0x58cf76(0x21f)](_0x10958a),_0x250be2=_0x4d19f7[_0x58cf76(0x1c7)](_0x881db0,Math[_0x58cf76(0x24f)](_0x881db0+0xc8,_0x4d19f7[_0x58cf76(0x1be)]));_0x5d65b9[_0x58cf76(0x1dd)]({'tool':_0x127eb9,'error_type':_0x50c757,'error_message':_0x250be2['split']('\x0a')[0x0],'turn':_0x390478});}}}return _0x5d65b9;};try{const _0x3fbfec=a0_0x2702b4['resolve'](_0x5f139c['data'][_0x26b23e(0x271)]),_0x1becff=_0x5f139c['data'][_0x26b23e(0x1da)],_0x2ef5cd=_0x1becff==='node_modules'?{'allowNames':[_0x26b23e(0x28a)]}:undefined,_0x340ed5=new LocalRipgrepProvider(_0x3fbfec,undefined,_0x2ef5cd),_0x279a7e=await runWarpGrep({'searchTerm':_0x5f139c[_0x26b23e(0x23c)][_0x26b23e(0x1ff)],'repoRoot':_0x3fbfec,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x340ed5,'search_type':_0x1becff}),_0x3159fa=_0x2b852e(_0x279a7e[_0x26b23e(0x1cc)]);_0x3159fa['length']>0x0&&reportMorphError({'error_message':_0x26b23e(0x27e)+_0x3159fa[_0x26b23e(0x1be)]+'\x20error(s)','error_type':'SubToolError','level':_0x26b23e(0x1ee),'tool':_0x26b23e(0x227),'context':{'repo_path':_0x5f139c[_0x26b23e(0x23c)]['repo_path'],'query':_0x5f139c[_0x26b23e(0x23c)]['search_string'],'model':_0x26b23e(0x280),'termination_reason':_0x279a7e[_0x26b23e(0x281)],'sub_tool_errors':_0x3159fa,'timings':_0x279a7e[_0x26b23e(0x22f)],'tool_calls':_0x372e56(_0x279a7e[_0x26b23e(0x1cc)]),'messages':_0x279a7e[_0x26b23e(0x1cc)]?.[_0x26b23e(0x1e7)](_0x2a0c62=>({'role':_0x2a0c62[_0x26b23e(0x2ad)],'content':_0x2a0c62[_0x26b23e(0x1a2)],..._0x2a0c62[_0x26b23e(0x2a0)]?{'tool_calls':_0x2a0c62[_0x26b23e(0x2a0)][_0x26b23e(0x1be)]}:{},..._0x2a0c62['tool_call_id']?{'tool_call_id':_0x2a0c62['tool_call_id']}:{}}))},'source':_0x26b23e(0x292)})[_0x26b23e(0x218)](()=>{});let _0x107f40='';if(_0x279a7e['terminationReason']===_0x26b23e(0x1b3)&&_0x279a7e[_0x26b23e(0x1b7)]?.['metadata']?.['files']){const _0x1a6e37=_0x279a7e[_0x26b23e(0x1b7)]['metadata'][_0x26b23e(0x24c)];if(_0x1a6e37[_0x26b23e(0x1be)]===0x0)return _0x107f40=_0x279a7e[_0x26b23e(0x1b7)][_0x26b23e(0x2a1)]||_0x26b23e(0x224),{'content':[{'type':_0x26b23e(0x1d3),'text':_0x107f40}]};const _0xc24e75=[],_0x2e32e3=[_0x26b23e(0x262)];for(const _0x5ae03b of _0x279a7e[_0x26b23e(0x1cc)]){if(_0x5ae03b[_0x26b23e(0x2ad)]===_0x26b23e(0x223)&&Array[_0x26b23e(0x1d2)](_0x5ae03b[_0x26b23e(0x2a0)]))for(const _0x30c872 of _0x5ae03b[_0x26b23e(0x2a0)]){try{const _0x2c49ee=_0x30c872['function']?.['name'],_0x3f05e9=JSON[_0x26b23e(0x25b)](_0x30c872[_0x26b23e(0x279)]?.['arguments']||'{}');if(_0x2c49ee===_0x26b23e(0x1e1))_0x2e32e3['push'](_0x26b23e(0x1a3)+_0x3f05e9[_0x26b23e(0x204)]+_0x26b23e(0x23a)+(_0x3f05e9[_0x26b23e(0x246)]||'.')+'`');else{if(_0x2c49ee===_0x26b23e(0x284))_0x2e32e3[_0x26b23e(0x1dd)]('-\x20Read\x20file\x20`'+_0x3f05e9[_0x26b23e(0x246)]+'`');else{if(_0x2c49ee===_0x26b23e(0x1ce))_0x2e32e3[_0x26b23e(0x1dd)](_0x26b23e(0x229)+(_0x3f05e9['command']||'.')+'`');else _0x2c49ee===_0x26b23e(0x259)&&_0x2e32e3['push']('-\x20Glob\x20search\x20`'+_0x3f05e9[_0x26b23e(0x204)]+_0x26b23e(0x274)+(_0x3f05e9[_0x26b23e(0x246)]||'.')+'`');}}}catch{}}}_0xc24e75['push'](_0x2e32e3['join']('\x0a'));const _0x5f4aad=['','Relevant\x20context\x20found:'];for(const _0x47f344 of _0x1a6e37){if(_0x47f344['lines']==='*')_0x5f4aad[_0x26b23e(0x1dd)]('-\x20'+_0x47f344[_0x26b23e(0x246)]+':*');else{if(Array[_0x26b23e(0x1d2)](_0x47f344[_0x26b23e(0x20a)])){const _0xcb351c=_0x47f344[_0x26b23e(0x20a)][_0x26b23e(0x1e7)](([_0x2020ef,_0x54c11e])=>{if(_0x2020ef===_0x54c11e)return''+_0x2020ef;return _0x2020ef+'-'+_0x54c11e;});_0x5f4aad[_0x26b23e(0x1dd)]('-\x20'+_0x47f344[_0x26b23e(0x246)]+':'+_0xcb351c['join'](','));}else _0x5f4aad[_0x26b23e(0x1dd)]('-\x20'+_0x47f344[_0x26b23e(0x246)]+':*');}}_0x5f4aad[_0x26b23e(0x1dd)](''),_0xc24e75[_0x26b23e(0x1dd)](_0x5f4aad[_0x26b23e(0x2a8)]('\x0a')),_0xc24e75['push'](_0x26b23e(0x29d));const _0x2a927b=[];for(const _0x4d8250 of _0x1a6e37){let _0xe4567b=a0_0x2702b4[_0x26b23e(0x1b2)](_0x5f139c['data'][_0x26b23e(0x271)],_0x4d8250['path']),_0xca3225=null,_0x3ec52c=null;try{_0xca3225=await a0_0x2d6057[_0x26b23e(0x2a7)](_0xe4567b,{'encoding':'utf-8'});}catch(_0x36c917){const _0x3f28f5=fixPathRepetition(_0xe4567b);if(_0x3f28f5)try{_0xca3225=await a0_0x2d6057[_0x26b23e(0x2a7)](_0x3f28f5,{'encoding':_0x26b23e(0x254)}),_0xe4567b=_0x3f28f5;}catch{_0x3ec52c=_0x36c917 instanceof Error?_0x36c917:new Error(String(_0x36c917));}else _0x3ec52c=_0x36c917 instanceof Error?_0x36c917:new Error(String(_0x36c917));}if(_0xca3225!==null){const _0x149de5=_0xca3225[_0x26b23e(0x1e4)](/\r?\n/),_0x16afb4=[_0x26b23e(0x1a9)+_0x4d8250[_0x26b23e(0x246)]+'\x22>'];if(_0x4d8250[_0x26b23e(0x20a)]==='*'||!Array['isArray'](_0x4d8250['lines']))for(let _0x257cce=0x1;_0x257cce<=_0x149de5['length'];_0x257cce++){const _0x296811=_0x149de5[_0x257cce-0x1];_0x16afb4['push'](_0x257cce+'|\x20'+_0x296811);}else for(const [_0xa78a1,_0x5524d4]of _0x4d8250['lines']){_0x16afb4[_0x26b23e(0x1be)]>0x1&&_0x16afb4[_0x26b23e(0x1dd)]('');for(let _0x145814=_0xa78a1;_0x145814<=_0x5524d4&&_0x145814<=_0x149de5[_0x26b23e(0x1be)];_0x145814++){const _0x52221b=_0x149de5[_0x145814-0x1];_0x16afb4[_0x26b23e(0x1dd)](_0x145814+'|\x20'+_0x52221b);}}_0x16afb4[_0x26b23e(0x1dd)](_0x26b23e(0x1bc)),_0x2a927b[_0x26b23e(0x1dd)](_0x16afb4[_0x26b23e(0x2a8)]('\x0a'));}else _0x2a927b[_0x26b23e(0x1dd)](_0x26b23e(0x1a9)+_0x4d8250['path']+_0x26b23e(0x2ae)+(_0x3ec52c?.[_0x26b23e(0x209)]||'Unknown\x20error')+_0x26b23e(0x1f4));}_0xc24e75[_0x26b23e(0x1dd)](_0x2a927b[_0x26b23e(0x2a8)]('\x0a\x0a')),_0x107f40=_0xc24e75['join']('\x0a');const _0x50c1e6=_0x279a7e[_0x26b23e(0x1b8)]?.[_0x26b23e(0x1d6)](_0x3582ca=>_0x3582ca[_0x26b23e(0x209)]?.['startsWith'](_0x26b23e(0x278)))||[];if(_0x50c1e6[_0x26b23e(0x1be)]>0x0){const _0x55b4d0=_0x50c1e6['map'](_0x5b4433=>_0x5b4433[_0x26b23e(0x209)])[_0x26b23e(0x2a8)](';\x20');reportMorphError({'error_message':_0x55b4d0,'error_type':'FileReadError','context':{'tool':_0x26b23e(0x227),'repo_path':_0x5f139c[_0x26b23e(0x23c)][_0x26b23e(0x271)],'query':_0x5f139c['data'][_0x26b23e(0x1ff)],'model':_0x26b23e(0x280),'termination_reason':_0x26b23e(0x265),'error_count':_0x50c1e6[_0x26b23e(0x1be)],'is_timeout':![],'timings':_0x279a7e[_0x26b23e(0x22f)],'files_attempted':_0x1a6e37[_0x26b23e(0x1e7)](_0x3b1007=>({'path':_0x3b1007[_0x26b23e(0x246)],'lines':_0x3b1007[_0x26b23e(0x20a)]})),'tool_calls':_0x372e56(_0x279a7e[_0x26b23e(0x1cc)]),'messages':_0x279a7e[_0x26b23e(0x1cc)]?.[_0x26b23e(0x1e7)](_0x1662fa=>({'role':_0x1662fa['role'],'content':_0x1662fa[_0x26b23e(0x1a2)],..._0x1662fa[_0x26b23e(0x2a0)]?{'tool_calls':_0x1662fa['tool_calls'][_0x26b23e(0x1be)]}:{},..._0x1662fa['tool_call_id']?{'tool_call_id':_0x1662fa['tool_call_id']}:{}})),'request_content':{'query':_0x5f139c[_0x26b23e(0x23c)][_0x26b23e(0x1ff)],'repo_path':_0x5f139c['data'][_0x26b23e(0x271)],'repoRoot':a0_0x2702b4[_0x26b23e(0x1b2)](_0x5f139c[_0x26b23e(0x23c)][_0x26b23e(0x271)]),'model':_0x26b23e(0x280)}},'source':_0x26b23e(0x292)})[_0x26b23e(0x218)](()=>{});}}else{if(_0x279a7e[_0x26b23e(0x281)]===_0x26b23e(0x22c)&&_0x279a7e[_0x26b23e(0x1b8)][_0x26b23e(0x1be)]>0x0){const _0x1a2279=_0x279a7e['errors'][_0x26b23e(0x1e7)](_0x412460=>_0x412460[_0x26b23e(0x209)])[_0x26b23e(0x2a8)](';\x20');_0x107f40=_0x26b23e(0x1bb)+_0x1a2279;const _0x196bb2=_0x1a2279[_0x26b23e(0x1d5)]()[_0x26b23e(0x20d)](_0x26b23e(0x257))||_0x1a2279[_0x26b23e(0x1d5)]()[_0x26b23e(0x20d)](_0x26b23e(0x286))||_0x1a2279['toLowerCase']()[_0x26b23e(0x20d)](_0x26b23e(0x1f9)),_0x575209=_0x279a7e[_0x26b23e(0x1b7)]?.[_0x26b23e(0x23b)]?.[_0x26b23e(0x24c)],_0x2b683e=_0x279a7e['errors'][0x0];reportMorphError({'error_message':_0x1a2279,'error_type':_0x196bb2?_0x26b23e(0x1f7):_0x2b683e?.[_0x26b23e(0x1fd)]?.[_0x26b23e(0x29b)]||'WarpGrepError','context':{'tool':_0x26b23e(0x227),'repo_path':_0x5f139c[_0x26b23e(0x23c)][_0x26b23e(0x271)],'query':_0x5f139c[_0x26b23e(0x23c)]['search_string'],'model':'morph-warp-grep-v2.1','termination_reason':_0x279a7e[_0x26b23e(0x281)],'error_count':_0x279a7e['errors'][_0x26b23e(0x1be)],'is_timeout':_0x196bb2,'timings':_0x279a7e[_0x26b23e(0x22f)],'files_attempted':_0x575209?.['map'](_0x3b946e=>({'path':_0x3b946e[_0x26b23e(0x246)],'lines':_0x3b946e[_0x26b23e(0x20a)]})),'tool_calls':_0x372e56(_0x279a7e[_0x26b23e(0x1cc)]),'messages':_0x279a7e[_0x26b23e(0x1cc)]?.[_0x26b23e(0x1e7)](_0x3daee3=>({'role':_0x3daee3[_0x26b23e(0x2ad)],'content':_0x3daee3['content'],..._0x3daee3[_0x26b23e(0x2a0)]?{'tool_calls':_0x3daee3[_0x26b23e(0x2a0)][_0x26b23e(0x1be)]}:{},..._0x3daee3[_0x26b23e(0x1c8)]?{'tool_call_id':_0x3daee3[_0x26b23e(0x1c8)]}:{}})),'request_content':{'query':_0x5f139c[_0x26b23e(0x23c)][_0x26b23e(0x1ff)],'repo_path':_0x5f139c[_0x26b23e(0x23c)]['repo_path'],'repoRoot':a0_0x2702b4[_0x26b23e(0x1b2)](_0x5f139c[_0x26b23e(0x23c)]['repo_path']),'model':_0x26b23e(0x280)}},'stack_trace':_0x2b683e?.['stack']||undefined,'source':_0x26b23e(0x292)})[_0x26b23e(0x218)](()=>{});}else _0x107f40=_0x26b23e(0x272);}return{'content':[{'type':'text','text':_0x107f40}]};}catch(_0x3bc922){const _0x1f7d5a=_0x3bc922 instanceof Error?_0x3bc922['message']:String(_0x3bc922),_0x184507=_0x1f7d5a[_0x26b23e(0x1d5)]()[_0x26b23e(0x20d)]('timeout')||_0x1f7d5a[_0x26b23e(0x1d5)]()[_0x26b23e(0x20d)](_0x26b23e(0x286))||_0x1f7d5a[_0x26b23e(0x1d5)]()['includes'](_0x26b23e(0x1f9))||_0x3bc922 instanceof Error&&_0x3bc922[_0x26b23e(0x29b)]===_0x26b23e(0x1f7);return reportMorphError({'error_message':_0x1f7d5a,'error_type':_0x184507?_0x26b23e(0x1f7):_0x3bc922 instanceof Error?_0x3bc922[_0x26b23e(0x1fd)][_0x26b23e(0x29b)]:'UnknownError','context':{'tool':_0x26b23e(0x227),'repo_path':_0x5f139c[_0x26b23e(0x23c)][_0x26b23e(0x271)],'query':_0x5f139c[_0x26b23e(0x23c)][_0x26b23e(0x1ff)],'model':'morph-warp-grep-v2.1','is_timeout':_0x184507,'exception_phase':_0x26b23e(0x2ab),'request_content':{'query':_0x5f139c[_0x26b23e(0x23c)][_0x26b23e(0x1ff)],'repo_path':_0x5f139c['data'][_0x26b23e(0x271)],'repoRoot':a0_0x2702b4[_0x26b23e(0x1b2)](_0x5f139c[_0x26b23e(0x23c)][_0x26b23e(0x271)]),'model':_0x26b23e(0x280)}},'stack_trace':_0x3bc922 instanceof Error?_0x3bc922[_0x26b23e(0x1b9)]:undefined,'source':_0x26b23e(0x292)})[_0x26b23e(0x218)](()=>{}),{'content':[{'type':_0x26b23e(0x1d3),'text':_0x26b23e(0x226)+_0x1f7d5a}],'isError':![]};}}case _0x26b23e(0x1a8):{const _0x4c4f85=WarpGrepGitHubArgsSchema[_0x26b23e(0x1f0)](_0x1a732a);if(!_0x4c4f85['success'])return{'content':[{'type':_0x26b23e(0x1d3),'text':'Invalid\x20arguments:\x20'+_0x4c4f85[_0x26b23e(0x270)]}],'isError':!![]};const _0x468af=_0x4c4f85['data'][_0x26b23e(0x1de)]||_0x4c4f85[_0x26b23e(0x23c)]['owner_repo'];if(!_0x468af)return{'content':[{'type':'text','text':_0x26b23e(0x250)}],'isError':!![]};const _0x125453=MORPH_API_KEY;if(!_0x125453)throw new Error(_0x26b23e(0x27a));const _0xba88f5=Date[_0x26b23e(0x1e8)]();logMcpStderr('[github_codebase_search]\x20Searching\x20'+_0x468af+_0x26b23e(0x266)+_0x4c4f85[_0x26b23e(0x23c)][_0x26b23e(0x1ff)]+'\x22');try{const _0x7f7245=new WarpGrepClient({'morphApiKey':_0x125453,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x3bc31a=await _0x7f7245[_0x26b23e(0x2ac)]({'searchTerm':_0x4c4f85[_0x26b23e(0x23c)][_0x26b23e(0x1ff)],'github':_0x468af,'branch':_0x4c4f85[_0x26b23e(0x23c)][_0x26b23e(0x253)]}),_0x41298d=Date[_0x26b23e(0x1e8)]()-_0xba88f5;logMcpStderr(_0x26b23e(0x25f)+_0x41298d+_0x26b23e(0x21c)+_0x3bc31a[_0x26b23e(0x263)]);const _0x54fb16=formatResult(_0x3bc31a);return{'content':[{'type':_0x26b23e(0x1d3),'text':_0x54fb16}]};}catch(_0x2935f2){const _0x2583ad=Date[_0x26b23e(0x1e8)]()-_0xba88f5,_0xb23e5f=_0x2935f2 instanceof Error?_0x2935f2['message']:String(_0x2935f2);return logMcpStderr(_0x26b23e(0x1ca)+_0x2583ad+_0x26b23e(0x221),_0xb23e5f),reportMorphError({'error_message':_0xb23e5f,'error_type':_0x2935f2 instanceof Error?_0x2935f2[_0x26b23e(0x1fd)]['name']:_0x26b23e(0x1c2),'context':{'tool':_0x26b23e(0x1a8),'github_url':_0x468af,'search_string':_0x4c4f85[_0x26b23e(0x23c)][_0x26b23e(0x1ff)],'branch':_0x4c4f85[_0x26b23e(0x23c)]['branch']},'stack_trace':_0x2935f2 instanceof Error?_0x2935f2[_0x26b23e(0x1b9)]:undefined,'source':_0x26b23e(0x292),'tool':_0x26b23e(0x1a8),'latency_ms':_0x2583ad})['catch'](()=>{}),{'content':[{'type':_0x26b23e(0x1d3),'text':_0x26b23e(0x242)+_0xb23e5f}],'isError':![]};}}default:throw new Error('Unknown\x20tool:\x20'+_0x494eb9);}}catch(_0x81aaa2){const _0x2e11a3=_0x81aaa2 instanceof Error?_0x81aaa2[_0x26b23e(0x209)]:String(_0x81aaa2);return reportMorphError({'error_message':_0x2e11a3,'error_type':_0x81aaa2 instanceof Error?_0x81aaa2[_0x26b23e(0x1fd)][_0x26b23e(0x29b)]:_0x26b23e(0x1c2),'context':{'tool':_0x494eb9,'arguments':_0x1a732a?JSON[_0x26b23e(0x23e)](_0x1a732a)[_0x26b23e(0x1c7)](0x0,0x1f4):undefined,'mcp_server_version':_0x26b23e(0x1b1)},'stack_trace':_0x81aaa2 instanceof Error?_0x81aaa2['stack']:undefined,'source':_0x26b23e(0x292)})[_0x26b23e(0x218)](()=>{}),{'content':[{'type':_0x26b23e(0x1d3),'text':_0x26b23e(0x1bb)+_0x2e11a3}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x4b6954){const _0x328f87=a0_0x3512ec,_0x46f9cb=await getValidRootDirectories(_0x4b6954);if(_0x46f9cb[_0x328f87(0x1be)]>0x0)allowedDirectories=[..._0x46f9cb],logMcpStderr(_0x328f87(0x1c6)+_0x46f9cb['length']+'\x20valid\x20directories');else{logMcpStderr(_0x328f87(0x260));if(ENABLE_WORKSPACE_MODE)try{const _0x332d87=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x332d87&&(allowedDirectories=[_0x332d87],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x332d87));}catch(_0x1f02da){logMcpStderr(_0x328f87(0x1fc)+_0x1f02da);}}}server[a0_0x3512ec(0x210)](RootsListChangedNotificationSchema,async()=>{const _0x3bb4d9=a0_0x3512ec;try{const _0x5b8e24=await server[_0x3bb4d9(0x1a1)]();_0x5b8e24&&_0x3bb4d9(0x28d)in _0x5b8e24&&await updateAllowedDirectoriesFromRoots(_0x5b8e24[_0x3bb4d9(0x28d)]);}catch(_0x292bd2){logMcpStderr(_0x3bb4d9(0x231),_0x292bd2 instanceof Error?_0x292bd2[_0x3bb4d9(0x209)]:String(_0x292bd2));}}),server[a0_0x3512ec(0x29c)]=async()=>{const _0x45c459=a0_0x3512ec,_0x156060=server[_0x45c459(0x1a6)]();if(_0x156060?.[_0x45c459(0x28d)])try{const _0x327a9a=await server[_0x45c459(0x1a1)]();_0x327a9a&&_0x45c459(0x28d)in _0x327a9a?await updateAllowedDirectoriesFromRoots(_0x327a9a[_0x45c459(0x28d)]):logMcpStderr(_0x45c459(0x290));}catch(_0x238b6a){logMcpStderr(_0x45c459(0x1db),_0x238b6a instanceof Error?_0x238b6a[_0x45c459(0x209)]:String(_0x238b6a));}else{if(allowedDirectories[_0x45c459(0x1be)]>0x0)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:',allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x45c459(0x217));else throw new Error(_0x45c459(0x282));}}};async function runServer(){const _0x37ce5b=a0_0x3512ec,_0x1eaacb=new StdioServerTransport();await server['connect'](_0x1eaacb),logMcpStderr('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories[_0x37ce5b(0x1be)]===0x0&&logMcpStderr('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()[a0_0x3512ec(0x218)](_0x4b471c=>{const _0x6b22f2=a0_0x3512ec;logMcpStderr(_0x6b22f2(0x228),_0x4b471c),process[_0x6b22f2(0x28c)](0x1);});
package/dist/log-utils.js CHANGED
@@ -1 +1 @@
1
- function a1_0x18e3(){var _0x47c373=['459312BooezM','1009395RyscGq','1964zDAFdm','macOS','win32','7407714JmbvId','44CgnvWD','Linux','10HCtbWi','platform','2798638hKDPKj','Windows','darwin','error','3BXvoym','25088qlplgx','176LlYDiW','4835xtTiZx','9454545TNkKwc'];a1_0x18e3=function(){return _0x47c373;};return a1_0x18e3();}var a1_0xfc0954=a1_0x7c40;(function(_0x21ca3b,_0x53269e){var _0x39068a=a1_0x7c40,_0x2cd9b5=_0x21ca3b();while(!![]){try{var _0xbf7782=-parseInt(_0x39068a(0x144))/0x1+parseInt(_0x39068a(0x13a))/0x2*(parseInt(_0x39068a(0x13e))/0x3)+-parseInt(_0x39068a(0x145))/0x4*(-parseInt(_0x39068a(0x141))/0x5)+-parseInt(_0x39068a(0x148))/0x6+parseInt(_0x39068a(0x13f))/0x7*(parseInt(_0x39068a(0x140))/0x8)+parseInt(_0x39068a(0x142))/0x9*(parseInt(_0x39068a(0x14b))/0xa)+parseInt(_0x39068a(0x149))/0xb*(parseInt(_0x39068a(0x143))/0xc);if(_0xbf7782===_0x53269e)break;else _0x2cd9b5['push'](_0x2cd9b5['shift']());}catch(_0x5cde46){_0x2cd9b5['push'](_0x2cd9b5['shift']());}}}(a1_0x18e3,0xdecaf));function a1_0x7c40(_0x679770,_0x27fd8e){_0x679770=_0x679770-0x139;var _0x18e345=a1_0x18e3();var _0x7c4088=_0x18e345[_0x679770];return _0x7c4088;}import a1_0x566ad2 from'os';export function getOperatingSystemType(_0x5ceda2=a1_0x566ad2[a1_0xfc0954(0x139)]()){var _0x11d339=a1_0xfc0954;switch(_0x5ceda2){case _0x11d339(0x13c):return _0x11d339(0x146);case _0x11d339(0x147):return _0x11d339(0x13b);case'linux':return _0x11d339(0x14a);default:return'Unknown';}}export function formatMcpLogMessage(_0x4a5134,_0x42ed82=a1_0x566ad2[a1_0xfc0954(0x139)]()){return'[os='+getOperatingSystemType(_0x42ed82)+']\x20'+_0x4a5134;}export function logMcpStderr(_0x1d703d,..._0x2f4a5d){var _0x4e1f8f=a1_0xfc0954;console[_0x4e1f8f(0x13d)](formatMcpLogMessage(_0x1d703d),..._0x2f4a5d);}
1
+ function a1_0x25f1(_0x18bf76,_0x1f0770){_0x18bf76=_0x18bf76-0x133;var _0x4eac6a=a1_0x4eac();var _0x25f1ea=_0x4eac6a[_0x18bf76];return _0x25f1ea;}(function(_0x3076aa,_0x3888a8){var _0x546c90=a1_0x25f1,_0x526c77=_0x3076aa();while(!![]){try{var _0x43d2e2=parseInt(_0x546c90(0x13a))/0x1*(parseInt(_0x546c90(0x135))/0x2)+parseInt(_0x546c90(0x137))/0x3*(-parseInt(_0x546c90(0x143))/0x4)+-parseInt(_0x546c90(0x140))/0x5+-parseInt(_0x546c90(0x13c))/0x6*(-parseInt(_0x546c90(0x142))/0x7)+parseInt(_0x546c90(0x144))/0x8*(parseInt(_0x546c90(0x13b))/0x9)+-parseInt(_0x546c90(0x136))/0xa*(parseInt(_0x546c90(0x145))/0xb)+-parseInt(_0x546c90(0x133))/0xc*(-parseInt(_0x546c90(0x13e))/0xd);if(_0x43d2e2===_0x3888a8)break;else _0x526c77['push'](_0x526c77['shift']());}catch(_0x589fcb){_0x526c77['push'](_0x526c77['shift']());}}}(a1_0x4eac,0xd9d27));import a1_0x1b15b1 from'os';function a1_0x4eac(){var _0x14aded=['2951650YIpMBV','win32','44779YjzQsl','5089688bHpFjk','2499176NGbMMZ','35365AxNrJl','6892716IBPIRl','Windows','2uRSMHn','1850jzVcsN','3bbGlst','Linux','macOS','649918qNKaSv','18odpvMB','330BVZOdK','linux','39jqeCEH','Unknown'];a1_0x4eac=function(){return _0x14aded;};return a1_0x4eac();}export function getOperatingSystemType(_0x193382=a1_0x1b15b1['platform']()){var _0x295e5b=a1_0x25f1;switch(_0x193382){case'darwin':return _0x295e5b(0x139);case _0x295e5b(0x141):return _0x295e5b(0x134);case _0x295e5b(0x13d):return _0x295e5b(0x138);default:return _0x295e5b(0x13f);}}export function formatMcpLogMessage(_0x25127f,_0xe8cb38=a1_0x1b15b1['platform']()){return'[os='+getOperatingSystemType(_0xe8cb38)+']\x20'+_0x25127f;}export function logMcpStderr(_0x43b30d,..._0x3e6dec){console['error'](formatMcpLogMessage(_0x43b30d),..._0x3e6dec);}
@@ -1 +1 @@
1
- function a2_0x189d(_0x360f7a,_0x12e3a8){_0x360f7a=_0x360f7a-0x78;const _0x5099f4=a2_0x5099();let _0x189d7a=_0x5099f4[_0x360f7a];return _0x189d7a;}(function(_0x1c0f62,_0x4d5ab3){const _0xd205ab=a2_0x189d,_0x38229d=_0x1c0f62();while(!![]){try{const _0x3a9ea5=-parseInt(_0xd205ab(0x79))/0x1*(-parseInt(_0xd205ab(0x8a))/0x2)+parseInt(_0xd205ab(0x7d))/0x3+parseInt(_0xd205ab(0x88))/0x4+-parseInt(_0xd205ab(0x8b))/0x5+parseInt(_0xd205ab(0x7b))/0x6*(parseInt(_0xd205ab(0x80))/0x7)+-parseInt(_0xd205ab(0x83))/0x8+-parseInt(_0xd205ab(0x84))/0x9;if(_0x3a9ea5===_0x4d5ab3)break;else _0x38229d['push'](_0x38229d['shift']());}catch(_0x2252f1){_0x38229d['push'](_0x38229d['shift']());}}}(a2_0x5099,0xaa667));function a2_0x5099(){const _0x5f26b3=['replace','560280wlnGvs','startsWith','1172002fLInkE','99515hYJGBx','substring','1Zharat','homedir','6CKOrgO','match','1735107pyIEbC','slice','charAt','269339DIRWBT','join','trim','3312616ENfCvX','1898802HCfSep','/mnt/','toUpperCase'];a2_0x5099=function(){return _0x5f26b3;};return a2_0x5099();}import a2_0x93c2f6 from'path';import a2_0x7f2290 from'os';export function convertToWindowsPath(_0x5c065c){const _0x3def4f=a2_0x189d;if(_0x5c065c['startsWith'](_0x3def4f(0x85))){const _0x5bae94=_0x5c065c[_0x3def4f(0x7f)](0x5)[_0x3def4f(0x86)](),_0x3b888f=_0x5c065c['slice'](0x6)['replace'](/\//g,'\x5c');return _0x5bae94+':'+_0x3b888f;}if(_0x5c065c[_0x3def4f(0x7c)](/^\/[a-zA-Z]\//)){const _0x3b549c=_0x5c065c[_0x3def4f(0x7f)](0x1)[_0x3def4f(0x86)](),_0x24ba37=_0x5c065c[_0x3def4f(0x7e)](0x2)[_0x3def4f(0x87)](/\//g,'\x5c');return _0x3b549c+':'+_0x24ba37;}if(_0x5c065c[_0x3def4f(0x7c)](/^[a-zA-Z]:/))return _0x5c065c[_0x3def4f(0x87)](/\//g,'\x5c');return _0x5c065c;}export function normalizePath(_0x5ea59b){const _0x449982=a2_0x189d;_0x5ea59b=_0x5ea59b[_0x449982(0x82)]()[_0x449982(0x87)](/^["']|["']$/g,'');const _0x195143=_0x5ea59b[_0x449982(0x89)]('/')&&!_0x5ea59b[_0x449982(0x7c)](/^\/mnt\/[a-z]\//i)&&!_0x5ea59b[_0x449982(0x7c)](/^\/[a-zA-Z]\//);if(_0x195143)return _0x5ea59b[_0x449982(0x87)](/\/+/g,'/')[_0x449982(0x87)](/\/+$/,'');_0x5ea59b=convertToWindowsPath(_0x5ea59b);if(_0x5ea59b[_0x449982(0x89)]('\x5c\x5c')){let _0x5e0f2c=_0x5ea59b;_0x5e0f2c=_0x5e0f2c['replace'](/^\\{2,}/,'\x5c\x5c');const _0x4291fa=_0x5e0f2c[_0x449982(0x78)](0x2)['replace'](/\\\\/g,'\x5c');_0x5ea59b='\x5c\x5c'+_0x4291fa;}else _0x5ea59b=_0x5ea59b[_0x449982(0x87)](/\\\\/g,'\x5c');let _0x15cff9=a2_0x93c2f6['normalize'](_0x5ea59b);_0x5ea59b['startsWith']('\x5c\x5c')&&!_0x15cff9['startsWith']('\x5c\x5c')&&(_0x15cff9='\x5c'+_0x15cff9);if(_0x15cff9[_0x449982(0x7c)](/^[a-zA-Z]:/)){let _0x2ef410=_0x15cff9[_0x449982(0x87)](/\//g,'\x5c');return/^[a-z]:/['test'](_0x2ef410)&&(_0x2ef410=_0x2ef410[_0x449982(0x7f)](0x0)['toUpperCase']()+_0x2ef410[_0x449982(0x7e)](0x1)),_0x2ef410;}return _0x15cff9[_0x449982(0x87)](/\//g,'\x5c');}export function expandHome(_0x1458fa){const _0x4b7616=a2_0x189d;if(_0x1458fa[_0x4b7616(0x89)]('~/')||_0x1458fa==='~')return a2_0x93c2f6[_0x4b7616(0x81)](a2_0x7f2290[_0x4b7616(0x7a)](),_0x1458fa[_0x4b7616(0x7e)](0x1));return _0x1458fa;}
1
+ (function(_0x5e14be,_0x11e250){const _0x5acdaf=a2_0x40e3,_0x2d05da=_0x5e14be();while(!![]){try{const _0xcba694=-parseInt(_0x5acdaf(0x178))/0x1*(parseInt(_0x5acdaf(0x170))/0x2)+-parseInt(_0x5acdaf(0x16c))/0x3+parseInt(_0x5acdaf(0x16a))/0x4*(-parseInt(_0x5acdaf(0x166))/0x5)+-parseInt(_0x5acdaf(0x16d))/0x6*(-parseInt(_0x5acdaf(0x174))/0x7)+-parseInt(_0x5acdaf(0x167))/0x8+-parseInt(_0x5acdaf(0x171))/0x9*(parseInt(_0x5acdaf(0x172))/0xa)+parseInt(_0x5acdaf(0x164))/0xb*(parseInt(_0x5acdaf(0x179))/0xc);if(_0xcba694===_0x11e250)break;else _0x2d05da['push'](_0x2d05da['shift']());}catch(_0x4fb924){_0x2d05da['push'](_0x2d05da['shift']());}}}(a2_0x2f6d,0x41981));import a2_0x316d45 from'path';import a2_0x489cbb from'os';export function convertToWindowsPath(_0x41a0cc){const _0x5757d2=a2_0x40e3;if(_0x41a0cc['startsWith'](_0x5757d2(0x16e))){const _0xec5677=_0x41a0cc[_0x5757d2(0x177)](0x5)[_0x5757d2(0x16f)](),_0x5a5220=_0x41a0cc[_0x5757d2(0x16b)](0x6)[_0x5757d2(0x165)](/\//g,'\x5c');return _0xec5677+':'+_0x5a5220;}if(_0x41a0cc[_0x5757d2(0x168)](/^\/[a-zA-Z]\//)){const _0x1455d6=_0x41a0cc[_0x5757d2(0x177)](0x1)['toUpperCase'](),_0x109c69=_0x41a0cc[_0x5757d2(0x16b)](0x2)[_0x5757d2(0x165)](/\//g,'\x5c');return _0x1455d6+':'+_0x109c69;}if(_0x41a0cc['match'](/^[a-zA-Z]:/))return _0x41a0cc[_0x5757d2(0x165)](/\//g,'\x5c');return _0x41a0cc;}function a2_0x40e3(_0x4d0c9c,_0x483764){_0x4d0c9c=_0x4d0c9c-0x162;const _0x2f6da6=a2_0x2f6d();let _0x40e3bc=_0x2f6da6[_0x4d0c9c];return _0x40e3bc;}export function normalizePath(_0x4f8c86){const _0x5d81a4=a2_0x40e3;_0x4f8c86=_0x4f8c86[_0x5d81a4(0x169)]()[_0x5d81a4(0x165)](/^["']|["']$/g,'');const _0x4fe2df=_0x4f8c86[_0x5d81a4(0x176)]('/')&&!_0x4f8c86[_0x5d81a4(0x168)](/^\/mnt\/[a-z]\//i)&&!_0x4f8c86[_0x5d81a4(0x168)](/^\/[a-zA-Z]\//);if(_0x4fe2df)return _0x4f8c86['replace'](/\/+/g,'/')['replace'](/\/+$/,'');_0x4f8c86=convertToWindowsPath(_0x4f8c86);if(_0x4f8c86[_0x5d81a4(0x176)]('\x5c\x5c')){let _0x45e441=_0x4f8c86;_0x45e441=_0x45e441['replace'](/^\\{2,}/,'\x5c\x5c');const _0x118c39=_0x45e441[_0x5d81a4(0x175)](0x2)[_0x5d81a4(0x165)](/\\\\/g,'\x5c');_0x4f8c86='\x5c\x5c'+_0x118c39;}else _0x4f8c86=_0x4f8c86['replace'](/\\\\/g,'\x5c');let _0x3951df=a2_0x316d45['normalize'](_0x4f8c86);_0x4f8c86['startsWith']('\x5c\x5c')&&!_0x3951df['startsWith']('\x5c\x5c')&&(_0x3951df='\x5c'+_0x3951df);if(_0x3951df[_0x5d81a4(0x168)](/^[a-zA-Z]:/)){let _0x528c76=_0x3951df['replace'](/\//g,'\x5c');return/^[a-z]:/[_0x5d81a4(0x163)](_0x528c76)&&(_0x528c76=_0x528c76[_0x5d81a4(0x177)](0x0)[_0x5d81a4(0x16f)]()+_0x528c76['slice'](0x1)),_0x528c76;}return _0x3951df['replace'](/\//g,'\x5c');}function a2_0x2f6d(){const _0x4da91f=['/mnt/','toUpperCase','148XeflOc','1398753rGdRxl','10aOOKsi','join','8764JHMWdg','substring','startsWith','charAt','4143npvfhC','6251352gmbaIu','homedir','test','22uljWoY','replace','5SigFvY','952224DwGLoX','match','trim','735516cUsGjL','slice','967695dqXDPL','1506RnQtYR'];a2_0x2f6d=function(){return _0x4da91f;};return a2_0x2f6d();}export function expandHome(_0x1c4223){const _0x4181ae=a2_0x40e3;if(_0x1c4223[_0x4181ae(0x176)]('~/')||_0x1c4223==='~')return a2_0x316d45[_0x4181ae(0x173)](a2_0x489cbb[_0x4181ae(0x162)](),_0x1c4223[_0x4181ae(0x16b)](0x1));return _0x1c4223;}
@@ -1 +1 @@
1
- (function(_0x4c4abc,_0x3ed2cd){const _0x289d5e=a3_0x4e72,_0x5dfd2e=_0x4c4abc();while(!![]){try{const _0x35d223=parseInt(_0x289d5e(0xa8))/0x1*(parseInt(_0x289d5e(0x92))/0x2)+-parseInt(_0x289d5e(0x95))/0x3*(parseInt(_0x289d5e(0x9b))/0x4)+-parseInt(_0x289d5e(0xa6))/0x5*(-parseInt(_0x289d5e(0xa5))/0x6)+-parseInt(_0x289d5e(0x9e))/0x7+parseInt(_0x289d5e(0x9a))/0x8+-parseInt(_0x289d5e(0xa3))/0x9*(parseInt(_0x289d5e(0x94))/0xa)+parseInt(_0x289d5e(0x9c))/0xb*(-parseInt(_0x289d5e(0xa4))/0xc);if(_0x35d223===_0x3ed2cd)break;else _0x5dfd2e['push'](_0x5dfd2e['shift']());}catch(_0x54ceab){_0x5dfd2e['push'](_0x5dfd2e['shift']());}}}(a3_0x2c71,0x23d51));function a3_0x4e72(_0x431993,_0x4edd2d){_0x431993=_0x431993-0x92;const _0x2c717a=a3_0x2c71();let _0x4e723a=_0x2c717a[_0x431993];return _0x4e723a;}import a3_0x18b6d6 from'path';export function isPathWithinAllowedDirectories(_0x18ab14,_0x2bf666){const _0x4fc03d=a3_0x4e72;if(typeof _0x18ab14!==_0x4fc03d(0x96)||!Array[_0x4fc03d(0x98)](_0x2bf666))return![];if(!_0x18ab14||_0x2bf666[_0x4fc03d(0x97)]===0x0)return![];if(_0x18ab14[_0x4fc03d(0xa2)]('\x00'))return![];let _0x1eab8a;try{_0x1eab8a=a3_0x18b6d6[_0x4fc03d(0x93)](a3_0x18b6d6[_0x4fc03d(0x9f)](_0x18ab14));}catch{return![];}if(!a3_0x18b6d6[_0x4fc03d(0x9d)](_0x1eab8a))throw new Error('Path\x20must\x20be\x20absolute\x20after\x20normalization');return _0x2bf666[_0x4fc03d(0x99)](_0x13135f=>{const _0x4da6c3=_0x4fc03d;if(typeof _0x13135f!==_0x4da6c3(0x96)||!_0x13135f)return![];if(_0x13135f[_0x4da6c3(0xa2)]('\x00'))return![];let _0x4c3895;try{_0x4c3895=a3_0x18b6d6[_0x4da6c3(0x93)](a3_0x18b6d6[_0x4da6c3(0x9f)](_0x13135f));}catch{return![];}if(!a3_0x18b6d6[_0x4da6c3(0x9d)](_0x4c3895))throw new Error(_0x4da6c3(0xa7));if(_0x1eab8a===_0x4c3895)return!![];if(_0x4c3895===a3_0x18b6d6[_0x4da6c3(0xa0)])return _0x1eab8a[_0x4da6c3(0xa1)](a3_0x18b6d6[_0x4da6c3(0xa0)]);return _0x1eab8a[_0x4da6c3(0xa1)](_0x4c3895+a3_0x18b6d6[_0x4da6c3(0xa0)]);});}function a3_0x2c71(){const _0x275766=['16824IIkFpX','1012XqYUTj','isAbsolute','1257767ouPivX','normalize','sep','startsWith','includes','18PZnQvk','1140QoeJoI','1169988uURCdm','5vOJTsF','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','235414eERUJS','2nFKrhJ','resolve','696650knopnq','63wmGSyl','string','length','isArray','some','1059472hhSPCA'];a3_0x2c71=function(){return _0x275766;};return a3_0x2c71();}
1
+ function a3_0x1234(_0x18e5b8,_0x51e22b){_0x18e5b8=_0x18e5b8-0x1c6;const _0x33273f=a3_0x3327();let _0x1234e7=_0x33273f[_0x18e5b8];return _0x1234e7;}(function(_0x19dfd6,_0xac78bb){const _0x312039=a3_0x1234,_0x262f0b=_0x19dfd6();while(!![]){try{const _0x471335=-parseInt(_0x312039(0x1cd))/0x1*(-parseInt(_0x312039(0x1ce))/0x2)+parseInt(_0x312039(0x1ca))/0x3*(-parseInt(_0x312039(0x1cc))/0x4)+parseInt(_0x312039(0x1c9))/0x5*(-parseInt(_0x312039(0x1d6))/0x6)+-parseInt(_0x312039(0x1d1))/0x7+parseInt(_0x312039(0x1cb))/0x8*(parseInt(_0x312039(0x1da))/0x9)+parseInt(_0x312039(0x1d5))/0xa+-parseInt(_0x312039(0x1db))/0xb*(-parseInt(_0x312039(0x1d0))/0xc);if(_0x471335===_0xac78bb)break;else _0x262f0b['push'](_0x262f0b['shift']());}catch(_0x1875db){_0x262f0b['push'](_0x262f0b['shift']());}}}(a3_0x3327,0x5fc60));function a3_0x3327(){const _0xe5fc2f=['string','Path\x20must\x20be\x20absolute\x20after\x20normalization','length','5622090FQvoau','203844DrHeoF','includes','sep','some','144WpGODI','7348TNrbrd','isAbsolute','normalize','resolve','10LpMTAd','9LZAiFG','92744iDNYhF','104532jdfnVU','66697fSZWJO','2KKcuTy','startsWith','7284sVJGLJ','4768645LRPjNT'];a3_0x3327=function(){return _0xe5fc2f;};return a3_0x3327();}import a3_0x1055a2 from'path';export function isPathWithinAllowedDirectories(_0x53c3b0,_0x231a32){const _0x4e8fdd=a3_0x1234;if(typeof _0x53c3b0!==_0x4e8fdd(0x1d2)||!Array['isArray'](_0x231a32))return![];if(!_0x53c3b0||_0x231a32[_0x4e8fdd(0x1d4)]===0x0)return![];if(_0x53c3b0[_0x4e8fdd(0x1d7)]('\x00'))return![];let _0xa4468;try{_0xa4468=a3_0x1055a2[_0x4e8fdd(0x1c8)](a3_0x1055a2[_0x4e8fdd(0x1c7)](_0x53c3b0));}catch{return![];}if(!a3_0x1055a2[_0x4e8fdd(0x1c6)](_0xa4468))throw new Error(_0x4e8fdd(0x1d3));return _0x231a32[_0x4e8fdd(0x1d9)](_0x2f262d=>{const _0x37417d=_0x4e8fdd;if(typeof _0x2f262d!==_0x37417d(0x1d2)||!_0x2f262d)return![];if(_0x2f262d[_0x37417d(0x1d7)]('\x00'))return![];let _0x82a651;try{_0x82a651=a3_0x1055a2[_0x37417d(0x1c8)](a3_0x1055a2[_0x37417d(0x1c7)](_0x2f262d));}catch{return![];}if(!a3_0x1055a2[_0x37417d(0x1c6)](_0x82a651))throw new Error('Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization');if(_0xa4468===_0x82a651)return!![];if(_0x82a651===a3_0x1055a2[_0x37417d(0x1d8)])return _0xa4468[_0x37417d(0x1cf)](a3_0x1055a2[_0x37417d(0x1d8)]);return _0xa4468[_0x37417d(0x1cf)](_0x82a651+a3_0x1055a2['sep']);});}
@@ -1 +1 @@
1
- (function(_0x598119,_0x58669c){const _0x35bd86=a4_0x339c,_0x47328b=_0x598119();while(!![]){try{const _0x13d2de=parseInt(_0x35bd86(0x18b))/0x1+-parseInt(_0x35bd86(0x191))/0x2*(parseInt(_0x35bd86(0x194))/0x3)+parseInt(_0x35bd86(0x192))/0x4*(-parseInt(_0x35bd86(0x193))/0x5)+-parseInt(_0x35bd86(0x18e))/0x6*(parseInt(_0x35bd86(0x19d))/0x7)+-parseInt(_0x35bd86(0x19b))/0x8+parseInt(_0x35bd86(0x1a0))/0x9+parseInt(_0x35bd86(0x197))/0xa;if(_0x13d2de===_0x58669c)break;else _0x47328b['push'](_0x47328b['shift']());}catch(_0x5121ec){_0x47328b['push'](_0x47328b['shift']());}}}(a4_0xd4b7,0x9390a));import{promises as a4_0x357da8}from'fs';import a4_0x18bb81 from'path';import a4_0x5b6f52 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x2de9bf){const _0x4763c4=a4_0x339c;try{const _0x4c25e2=_0x2de9bf[_0x4763c4(0x190)](_0x4763c4(0x18a))?_0x2de9bf[_0x4763c4(0x19a)](0x7):_0x2de9bf,_0x2e8007=_0x4c25e2[_0x4763c4(0x190)]('~/')||_0x4c25e2==='~'?a4_0x18bb81[_0x4763c4(0x19c)](a4_0x5b6f52['homedir'](),_0x4c25e2[_0x4763c4(0x19a)](0x1)):_0x4c25e2,_0x339763=a4_0x18bb81[_0x4763c4(0x19f)](_0x2e8007),_0x4b640d=await a4_0x357da8['realpath'](_0x339763);return normalizePath(_0x4b640d);}catch{return null;}}function a4_0xd4b7(){const _0x1fc5c1=['18KlhVtn','stat','startsWith','865730uSOrak','116EEklIZ','28205lCyrsP','3aGTpvK','message','Skipping\x20','12011310LCEZzL','invalid\x20path\x20or\x20inaccessible','\x20due\x20to\x20error:\x20','slice','8877768sWkDco','join','1439837GblZjW','push','resolve','10639746RXUVWC','file://','544349HETiKz','Skipping\x20invalid\x20directory:\x20','uri'];a4_0xd4b7=function(){return _0x1fc5c1;};return a4_0xd4b7();}function a4_0x339c(_0x4bffa6,_0x28eeca){_0x4bffa6=_0x4bffa6-0x18a;const _0xd4b7ae=a4_0xd4b7();let _0x339c6e=_0xd4b7ae[_0x4bffa6];return _0x339c6e;}function formatDirectoryError(_0x12fa2b,_0x1abad7,_0x334f73){const _0xf37cdd=a4_0x339c;if(_0x334f73)return _0xf37cdd(0x196)+_0x334f73+':\x20'+_0x12fa2b;const _0x44ed5b=_0x1abad7 instanceof Error?_0x1abad7[_0xf37cdd(0x195)]:String(_0x1abad7);return _0xf37cdd(0x18c)+_0x12fa2b+_0xf37cdd(0x199)+_0x44ed5b;}export async function getValidRootDirectories(_0x2766be){const _0x284eae=a4_0x339c,_0x3f8091=[];for(const _0x2daa41 of _0x2766be){const _0x297aac=await parseRootUri(_0x2daa41[_0x284eae(0x18d)]);if(!_0x297aac){logMcpStderr(formatDirectoryError(_0x2daa41['uri'],undefined,_0x284eae(0x198)));continue;}try{const _0x2ef810=await a4_0x357da8[_0x284eae(0x18f)](_0x297aac);_0x2ef810['isDirectory']()?_0x3f8091[_0x284eae(0x19e)](_0x297aac):logMcpStderr(formatDirectoryError(_0x297aac,undefined,'non-directory\x20root'));}catch(_0x1117f2){logMcpStderr(formatDirectoryError(_0x297aac,_0x1117f2));}}return _0x3f8091;}
1
+ (function(_0x2dc134,_0x5866da){const _0x151feb=a4_0x359e,_0x272b96=_0x2dc134();while(!![]){try{const _0x3f55a8=parseInt(_0x151feb(0x129))/0x1*(-parseInt(_0x151feb(0x122))/0x2)+parseInt(_0x151feb(0x126))/0x3+parseInt(_0x151feb(0x12c))/0x4+parseInt(_0x151feb(0x124))/0x5+-parseInt(_0x151feb(0x123))/0x6+-parseInt(_0x151feb(0x125))/0x7+parseInt(_0x151feb(0x128))/0x8*(parseInt(_0x151feb(0x12e))/0x9);if(_0x3f55a8===_0x5866da)break;else _0x272b96['push'](_0x272b96['shift']());}catch(_0x1754bd){_0x272b96['push'](_0x272b96['shift']());}}}(a4_0x26e7,0x9a3a2));import{promises as a4_0x345aa2}from'fs';import a4_0x4ed973 from'path';import a4_0x4aa9b1 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';function a4_0x359e(_0xdbeb88,_0x164653){_0xdbeb88=_0xdbeb88-0x120;const _0x26e792=a4_0x26e7();let _0x359eb3=_0x26e792[_0xdbeb88];return _0x359eb3;}async function parseRootUri(_0x2ef037){const _0x1583ab=a4_0x359e;try{const _0x5a3e0f=_0x2ef037[_0x1583ab(0x133)](_0x1583ab(0x120))?_0x2ef037[_0x1583ab(0x121)](0x7):_0x2ef037,_0x45496a=_0x5a3e0f[_0x1583ab(0x133)]('~/')||_0x5a3e0f==='~'?a4_0x4ed973[_0x1583ab(0x132)](a4_0x4aa9b1['homedir'](),_0x5a3e0f['slice'](0x1)):_0x5a3e0f,_0xeb2e4a=a4_0x4ed973[_0x1583ab(0x12f)](_0x45496a),_0x58fa44=await a4_0x345aa2['realpath'](_0xeb2e4a);return normalizePath(_0x58fa44);}catch{return null;}}function a4_0x26e7(){const _0x34808e=['553918sQSPZy','2225082skknVG','6168365jdhrRY','2509577XmhSRe','174369XzVXnB','push','8640SRbvws','4EntNDT','message','Skipping\x20invalid\x20directory:\x20','518048EokcLX','uri','8730JdFERj','resolve','isDirectory','stat','join','startsWith','file://','slice'];a4_0x26e7=function(){return _0x34808e;};return a4_0x26e7();}function formatDirectoryError(_0x511bc1,_0x5f0609,_0x1368b2){const _0x13f556=a4_0x359e;if(_0x1368b2)return'Skipping\x20'+_0x1368b2+':\x20'+_0x511bc1;const _0x48ccb0=_0x5f0609 instanceof Error?_0x5f0609[_0x13f556(0x12a)]:String(_0x5f0609);return _0x13f556(0x12b)+_0x511bc1+'\x20due\x20to\x20error:\x20'+_0x48ccb0;}export async function getValidRootDirectories(_0x13eab5){const _0x3a867d=a4_0x359e,_0x459434=[];for(const _0x462eea of _0x13eab5){const _0x38cd9b=await parseRootUri(_0x462eea[_0x3a867d(0x12d)]);if(!_0x38cd9b){logMcpStderr(formatDirectoryError(_0x462eea[_0x3a867d(0x12d)],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0x3b799d=await a4_0x345aa2[_0x3a867d(0x131)](_0x38cd9b);_0x3b799d[_0x3a867d(0x130)]()?_0x459434[_0x3a867d(0x127)](_0x38cd9b):logMcpStderr(formatDirectoryError(_0x38cd9b,undefined,'non-directory\x20root'));}catch(_0x5318fa){logMcpStderr(formatDirectoryError(_0x38cd9b,_0x5318fa));}}return _0x459434;}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morphllm/morphmcp",
3
- "version": "0.8.136",
3
+ "version": "0.8.137",
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)",