@morphllm/morphmcp 0.8.158 → 0.8.160

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_0x408e5e=a0_0x3c79;(function(_0x4ee472,_0x3e092b){const _0x3b4fa9=a0_0x3c79,_0x1f6e18=_0x4ee472();while(!![]){try{const _0x150bc3=parseInt(_0x3b4fa9(0x149))/0x1*(-parseInt(_0x3b4fa9(0x1e3))/0x2)+parseInt(_0x3b4fa9(0x156))/0x3+-parseInt(_0x3b4fa9(0x1a5))/0x4*(-parseInt(_0x3b4fa9(0x17a))/0x5)+parseInt(_0x3b4fa9(0x1bc))/0x6*(parseInt(_0x3b4fa9(0x198))/0x7)+-parseInt(_0x3b4fa9(0x183))/0x8+-parseInt(_0x3b4fa9(0x211))/0x9+parseInt(_0x3b4fa9(0x1a0))/0xa;if(_0x150bc3===_0x3e092b)break;else _0x1f6e18['push'](_0x1f6e18['shift']());}catch(_0xeb86ce){_0x1f6e18['push'](_0x1f6e18['shift']());}}}(a0_0x9452,0x6e5e3));import{Server}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import{CallToolRequestSchema,ListToolsRequestSchema,RootsListChangedNotificationSchema}from'@modelcontextprotocol/sdk/types.js';import a0_0x42b15d from'fs/promises';function a0_0x9452(){const _0x3d8a6e=['sk-','access','message','isArray','arguments','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','data','Preview\x20changes\x20without\x20applying\x20them.','list_directory','some','DISABLED_TOOLS','length','function','sep','toLowerCase','\x20error(s)','has','\x22>\x0aError\x20reading\x20file:\x20','metadata','tool_call_id','api-key','name','startsWith','setNotificationHandler','normalize','all','payload','-\x20Grepped\x20\x27','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','size','inputSchema','❌\x20Morph\x20Edit\x20Failed:\x20','@morphllm/morphmcp\x20','connect','source','object','\x0aExamples:','realpath','lines','PWD','morph-v3-fast','\x20as\x20allowed\x20directory','SymlinkError','Error:\x20','Warning:\x20Workspace\x20fallback\x20failed:\x20','Failed\x20to\x20read\x20file:\x20','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','etimedout','added\x20','assistant','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','role','description','grep','morph-mcp','cwd','string','false','ms:','Bearer\x20','1LWnwGy','every','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','.cursor','grep\x20\x27','finish','FileReadError','Specific\x20commit\x20hash\x20to\x20search','boolean','timeout','search_type','morph-v3-large','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','97572ZDCokT','GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','Morph\x20FastApply\x20failed\x20without\x20error\x20message','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','exit','unknown\x20error','[codebase_search]\x20compaction\x20failed','Fallback:\x20Using\x20workspace\x20root\x20','isDirectory','optional','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','glob\x20\x27','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','pattern','morph-warp-grep-v2.1','Rules:\x0a','[github_codebase_search]\x20Done\x20in\x20','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','ms.\x20Success:\x20','catch','RipgrepError','github_url','join','\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable',',\x20removed\x20','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','Unknown\x20error','grep_search','Tool\x20\x22','search_string','Relevant\x20context\x20found:','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','dryRun','390480QyjgRf','Invalid\x20arguments:\x20','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','completed','files','Parent\x20directory\x20does\x20not\x20exist:\x20','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','-\x20Glob\x20search\x20`','linesModified','4689080NASYUI','homedir','\x22>\x0a','\x20(new\x20file)','messages','read\x20','Here\x20is\x20the\x20content\x20of\x20files:\x0a','MORPH_WARP_GREP_TIMEOUT','\x0aOptions:','oninitialized','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','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','\x0a</file>','[could\x20not\x20read\x20file:\x20','[github_codebase_search]\x20Searching\x20','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','Unknown\x20tool:\x20','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','stringify','Tool\x20','params','4864993pJpTGb','instruction','listRoots','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\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','mcp-filesystem','-\x20Read\x20file\x20`','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','4236370nbebvZ','split','\x22.\x20Known\x20tools:\x20','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','44GWObaA','pyproject.toml','Warning:\x20','Morph\x20Edit\x20Preview','command','response','morph-','slice','ENABLE_WORKSPACE_MODE','ReadError','now','package.json','WarpGrepError','Created\x20File','edit_file','status','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','glob','log','searchGitHub','parse','dirname','default','6HwsRBQ','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.','Error\x20accessing\x20directory\x20','code','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','push','success','Authentication\x20failed:\x20Your\x20Morph\x20API\x20key\x20is\x20invalid\x20or\x20has\x20been\x20revoked.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key,\x20then\x20update\x20your\x20MCP\x20configuration.','stat','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','timings','error','github_codebase_search','--version','GitHub\x20search\x20failed:\x20','SubToolError','min','\x20valid\x20directories','tool_calls',',\x20modified\x20','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','unknown','timed\x20out','post','--help','\x20is\x20not\x20a\x20directory','env','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','../package.json','requiresApiKey','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','utf-8','go.mod','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','number','904402fMndWe','map','constructor','Max\x20results\x20to\x20return','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','user','includes','BinaryFile','warn','\x20chars)','owner_repo','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','content','Error\x20running\x20fast\x20context\x20search:\x20','repo_path','Cargo.toml','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','substring','path','\x0a...\x20(truncated,\x20total:\x20','resolve','argv','UnknownError','text','completionId','context','.\x20Changes:\x20','readFile','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','TimeoutError','.\x20Path:\x20','--api-key=','--api-key','errors','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','codebase_search','terminationReason','basename','application/json','branch','instructions','Morph\x20Edit\x20','version','safeParse','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','4678317cDDpvc','Applied','https://morphllm.com/api/error-report','describe','trim','.vscode','setRequestHandler','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','floor','filter','tsconfig.json','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','array','stack','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','roots','File\x20read\x20error:','runWarpGrep_call','RipgrepNotAvailable','read','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.','PathError','indexOf','-\x20Listed\x20directory\x20`','true','<file\x20path=\x22','Repository\x20identifier'];a0_0x9452=function(){return _0x3d8a6e;};return a0_0x9452();}import a0_0x1d35aa from'path';import a0_0x568890 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{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0x35c227 from'axios';function fixPathRepetition(_0x37f669){const _0x291ae5=a0_0x3c79,_0x483cfd=_0x37f669[_0x291ae5(0x1a1)](a0_0x1d35aa[_0x291ae5(0x23a)])[_0x291ae5(0x21a)](Boolean);if(_0x483cfd[_0x291ae5(0x238)]<0x2)return null;for(let _0x53dca5=Math[_0x291ae5(0x219)](_0x483cfd[_0x291ae5(0x238)]/0x2);_0x53dca5>=0x1;_0x53dca5--){for(let _0x5357d3=0x0;_0x5357d3<=_0x483cfd['length']-0x2*_0x53dca5;_0x5357d3++){const _0x377225=_0x483cfd['slice'](_0x5357d3,_0x5357d3+_0x53dca5),_0x10c8fb=_0x483cfd['slice'](_0x5357d3+_0x53dca5,_0x5357d3+0x2*_0x53dca5);if(_0x377225[_0x291ae5(0x14a)]((_0x150ea3,_0x5b84fc)=>_0x150ea3===_0x10c8fb[_0x5b84fc])){const _0x1f8ab7=[..._0x483cfd[_0x291ae5(0x1ac)](0x0,_0x5357d3),..._0x483cfd[_0x291ae5(0x1ac)](_0x5357d3+_0x53dca5)];return a0_0x1d35aa[_0x291ae5(0x23a)]+_0x1f8ab7[_0x291ae5(0x16f)](a0_0x1d35aa['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x4272aa=a0_0x3c79;try{const _0x24ef29=require(_0x4272aa(0x1da));return _0x24ef29[_0x4272aa(0x20d)]??_0x4272aa(0x1d2);}catch(_0x125d93){return logMcpStderr(_0x4272aa(0x18d),_0x125d93),_0x4272aa(0x1d2);}}function printHelp(){const _0x55b209=a0_0x3c79;console[_0x55b209(0x1b7)](_0x55b209(0x24d)+getPackageVersion()),console['log']('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0x55b209(0x1b7)](_0x55b209(0x18b)),console[_0x55b209(0x1b7)](_0x55b209(0x21c)),console[_0x55b209(0x1b7)]('\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit'),console[_0x55b209(0x1b7)](_0x55b209(0x249)),console[_0x55b209(0x1b7)](_0x55b209(0x251)),console[_0x55b209(0x1b7)]('\x20\x20morph-mcp'),console[_0x55b209(0x1b7)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0x408e5e(0x1f8)][a0_0x408e5e(0x1ac)](0x2),VERSION_FLAGS=new Set([a0_0x408e5e(0x1ca),'-v','-V']),HELP_FLAGS=new Set([a0_0x408e5e(0x1d5),'-h']);cliArgs[a0_0x408e5e(0x236)](_0x163a04=>VERSION_FLAGS[a0_0x408e5e(0x23d)](_0x163a04))&&(console[a0_0x408e5e(0x1b7)]('@morphllm/morphmcp\x20'+getPackageVersion()),process[a0_0x408e5e(0x15d)](0x0));cliArgs['some'](_0x3b45d4=>HELP_FLAGS[a0_0x408e5e(0x23d)](_0x3b45d4))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x3f0f19){const _0x36c6cc=a0_0x408e5e;for(let _0x32739c=0x0;_0x32739c<cliArgs['length'];_0x32739c++){const _0x305c77=cliArgs[_0x32739c];if(_0x305c77[_0x36c6cc(0x243)]('--'+_0x3f0f19+'='))return _0x305c77[_0x36c6cc(0x1ac)](('--'+_0x3f0f19+'=')[_0x36c6cc(0x238)]);if(_0x305c77==='--'+_0x3f0f19&&_0x32739c+0x1<cliArgs[_0x36c6cc(0x238)])return cliArgs[_0x32739c+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x408e5e(0x238)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x408e5e(0x23d)](arg)||HELP_FLAGS[a0_0x408e5e(0x23d)](arg))continue;if(arg['startsWith'](a0_0x408e5e(0x202)))continue;if(arg===a0_0x408e5e(0x203)){i++;continue;}args[a0_0x408e5e(0x1c1)](arg);}const WORKSPACE_ROOT=process[a0_0x408e5e(0x1d7)]['WORKSPACE_ROOT']||process[a0_0x408e5e(0x1d7)][a0_0x408e5e(0x254)]||process[a0_0x408e5e(0x264)](),ENABLE_WORKSPACE_MODE=process[a0_0x408e5e(0x1d7)][a0_0x408e5e(0x1ad)]!==a0_0x408e5e(0x266),MORPH_API_KEY=getCliArg(a0_0x408e5e(0x241))??process[a0_0x408e5e(0x1d7)]['MORPH_API_KEY'],MORPH_API_URL=process['env']['MORPH_API_URL'],MORPH_FAST_APPLY=process[a0_0x408e5e(0x1d7)]['MORPH_FAST_APPLY']===a0_0x408e5e(0x229),MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0x408e5e(0x18a)]?parseInt(process[a0_0x408e5e(0x1d7)][a0_0x408e5e(0x18a)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x408e5e(0x1b3),a0_0x408e5e(0x206),a0_0x408e5e(0x1c9)]),DISABLED_TOOLS=process[a0_0x408e5e(0x1d7)][a0_0x408e5e(0x237)]?new Set(process[a0_0x408e5e(0x1d7)]['DISABLED_TOOLS'][a0_0x408e5e(0x1a1)](',')[a0_0x408e5e(0x1e4)](_0xb9edf6=>_0xb9edf6[a0_0x408e5e(0x215)]())[a0_0x408e5e(0x21a)](_0x5f2746=>_0x5f2746[a0_0x408e5e(0x238)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0x408e5e(0x24a)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x408e5e(0x23d)](tool)&&console['error'](a0_0x408e5e(0x155)+tool+a0_0x408e5e(0x1a2)+[...KNOWN_TOOL_NAMES][a0_0x408e5e(0x16f)](',\x20'));}console[a0_0x408e5e(0x1c8)]('Disabled\x20tools:\x20'+[...DISABLED_TOOLS][a0_0x408e5e(0x16f)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x408e5e(0x243)]('sk-')&&!MORPH_API_KEY[a0_0x408e5e(0x243)](a0_0x408e5e(0x1ab))&&logMcpStderr(a0_0x408e5e(0x1e7));async function reportMorphError(_0x2fcbe2){const _0x17c322=a0_0x408e5e;try{await a0_0x35c227[_0x17c322(0x1d4)](_0x17c322(0x213),{..._0x2fcbe2,'timestamp':new Date()['toISOString'](),'source':_0x2fcbe2[_0x17c322(0x24f)]||_0x17c322(0x19d),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x2fcbe2[_0x17c322(0x1fc)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x17c322(0x209),'Authorization':_0x17c322(0x148)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x98f4b,_0x3058bb){const _0x5e23fe=a0_0x408e5e;if(_0x98f4b&&typeof _0x98f4b===_0x5e23fe(0x250)&&'status'in _0x98f4b)return _0x98f4b[_0x5e23fe(0x1b4)];if(_0x98f4b&&typeof _0x98f4b===_0x5e23fe(0x250)&&_0x5e23fe(0x1aa)in _0x98f4b)return _0x98f4b[_0x5e23fe(0x1aa)]?.[_0x5e23fe(0x1b4)];const _0x2e9db2=_0x3058bb['match'](/\b(401|429)\b/);return _0x2e9db2?parseInt(_0x2e9db2[0x1],0xa):null;}function handleMorphAPIError(_0x358281){const _0x5436b4=a0_0x408e5e,_0x46e6f2=_0x358281 instanceof Error?_0x358281[_0x5436b4(0x22e)]:String(_0x358281),_0x575bab=extractStatusCode(_0x358281,_0x46e6f2);switch(_0x575bab){case 0x191:return{'content':[{'type':_0x5436b4(0x1fa),'text':_0x5436b4(0x1c3)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x5436b4(0x1fa),'text':'Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.'}],'isError':!![]};default:return null;}}args[a0_0x408e5e(0x238)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x408e5e(0x172)),logMcpStderr('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),logMcpStderr(a0_0x408e5e(0x1b5)),logMcpStderr(a0_0x408e5e(0x1ee)),logMcpStderr(a0_0x408e5e(0x15c)),logMcpStderr('At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.'));function normalizePath(_0x3a614f){const _0x2fc3ec=a0_0x408e5e;return a0_0x1d35aa[_0x2fc3ec(0x245)](_0x3a614f);}function expandHome(_0x5010ef){const _0x4678f3=a0_0x408e5e;if(_0x5010ef['startsWith']('~/')||_0x5010ef==='~')return a0_0x1d35aa['join'](a0_0x568890[_0x4678f3(0x184)](),_0x5010ef['slice'](0x1));return _0x5010ef;}let allowedDirectories=await Promise[a0_0x408e5e(0x246)](args[a0_0x408e5e(0x1e4)](async _0x5676c6=>{const _0x255462=a0_0x408e5e,_0x3f7f81=expandHome(_0x5676c6),_0x467899=a0_0x1d35aa['resolve'](_0x3f7f81);try{const _0x297da1=await a0_0x42b15d[_0x255462(0x252)](_0x467899);return normalizePath(_0x297da1);}catch(_0x1fede8){return normalizePath(_0x467899);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x408e5e(0x238)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x408e5e(0x1c1)](workspaceDir),logMcpStderr('Workspace\x20mode\x20enabled:\x20Using\x20'+workspaceDir+a0_0x408e5e(0x256)));}catch(a0_0x12b80d){logMcpStderr(a0_0x408e5e(0x1e0)+a0_0x12b80d);}async function detectWorkspaceRoot(_0x1a0389){const _0x1666ca=a0_0x408e5e;let _0x59c17d=a0_0x1d35aa['resolve'](_0x1a0389);const _0xb5161a=['.git',_0x1666ca(0x216),_0x1666ca(0x1b0),_0x1666ca(0x1f2),_0x1666ca(0x1a6),_0x1666ca(0x1df),_0x1666ca(0x14c),_0x1666ca(0x21b),'composer.json'];while(_0x59c17d!==a0_0x1d35aa[_0x1666ca(0x1ba)](_0x59c17d)){for(const _0x2f68fd of _0xb5161a){const _0x5e9f1f=a0_0x1d35aa[_0x1666ca(0x16f)](_0x59c17d,_0x2f68fd);try{return await a0_0x42b15d[_0x1666ca(0x22d)](_0x5e9f1f),normalizePath(_0x59c17d);}catch{}}_0x59c17d=a0_0x1d35aa[_0x1666ca(0x1ba)](_0x59c17d);}return normalizePath(_0x1a0389);}await Promise['all'](args[a0_0x408e5e(0x1e4)](async _0x10932c=>{const _0x2ffd80=a0_0x408e5e;try{const _0xcdc93f=await a0_0x42b15d[_0x2ffd80(0x1c4)](expandHome(_0x10932c));!_0xcdc93f[_0x2ffd80(0x161)]()&&(logMcpStderr('Error:\x20'+_0x10932c+_0x2ffd80(0x1d6)),process[_0x2ffd80(0x15d)](0x1));}catch(_0x30b938){logMcpStderr(_0x2ffd80(0x1be)+_0x10932c+':',_0x30b938),process[_0x2ffd80(0x15d)](0x1);}}));async function validatePath(_0x202fd0){const _0x92e2ea=a0_0x408e5e,_0x557a69=expandHome(_0x202fd0),_0x5c1596=a0_0x1d35aa['resolve'](_0x557a69);try{const _0x129a51=await a0_0x42b15d['realpath'](_0x5c1596);return _0x129a51;}catch(_0x28be2b){if(_0x28be2b[_0x92e2ea(0x1bf)]==='ENOENT'){const _0x4b0366=a0_0x1d35aa[_0x92e2ea(0x1ba)](_0x5c1596);try{const _0x3bab35=await a0_0x42b15d['realpath'](_0x4b0366);return a0_0x1d35aa[_0x92e2ea(0x16f)](_0x3bab35,a0_0x1d35aa[_0x92e2ea(0x208)](_0x5c1596));}catch{throw new Error(_0x92e2ea(0x17f)+_0x4b0366);}}throw _0x28be2b;}}const MorphEditFileArgsSchema=z[a0_0x408e5e(0x250)]({'path':z[a0_0x408e5e(0x265)](),'code_edit':z[a0_0x408e5e(0x265)]()[a0_0x408e5e(0x214)]('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z['string']()['describe'](a0_0x408e5e(0x178)),'dryRun':z[a0_0x408e5e(0x151)]()[a0_0x408e5e(0x1bb)](![])[a0_0x408e5e(0x214)](a0_0x408e5e(0x234))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x408e5e(0x225),WarpGrepArgsSchema=z[a0_0x408e5e(0x250)]({'search_string':z[a0_0x408e5e(0x265)]()[a0_0x408e5e(0x214)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x408e5e(0x265)]()[a0_0x408e5e(0x214)](a0_0x408e5e(0x1dd)),'search_type':z['enum']([a0_0x408e5e(0x1bb),'node_modules'])[a0_0x408e5e(0x162)]()[a0_0x408e5e(0x214)](a0_0x408e5e(0x17c))}),WarpGrepGitHubArgsSchema=z[a0_0x408e5e(0x250)]({'search_string':z['string']()[a0_0x408e5e(0x214)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()[a0_0x408e5e(0x162)]()[a0_0x408e5e(0x214)](a0_0x408e5e(0x157)),'owner_repo':z['string']()['optional']()[a0_0x408e5e(0x214)]('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z[a0_0x408e5e(0x265)]()['optional']()[a0_0x408e5e(0x214)]('Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)')}),CodebaseSearchArgsSchema=z[a0_0x408e5e(0x250)]({'query':z[a0_0x408e5e(0x265)]()[a0_0x408e5e(0x214)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x408e5e(0x265)]()['describe'](a0_0x408e5e(0x22b)),'branch':z[a0_0x408e5e(0x265)]()['optional']()['describe']('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x408e5e(0x265)]()[a0_0x408e5e(0x162)]()[a0_0x408e5e(0x214)](a0_0x408e5e(0x150)),'targetDirectories':z[a0_0x408e5e(0x21d)](z[a0_0x408e5e(0x265)]())['default']([])[a0_0x408e5e(0x214)](a0_0x408e5e(0x1c0)),'limit':z[a0_0x408e5e(0x1e2)]()['optional']()[a0_0x408e5e(0x1bb)](0xa)[a0_0x408e5e(0x214)](a0_0x408e5e(0x1e6))}),server=new Server({'name':a0_0x408e5e(0x263),'version':'0.2.0'},{'capabilities':{'tools':{}}});server[a0_0x408e5e(0x217)](ListToolsRequestSchema,async()=>{const _0x1bb892=a0_0x408e5e,_0x236934=[{'name':_0x1bb892(0x1b3),'description':_0x1bb892(0x1a3)+_0x1bb892(0x19f)+'🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a'+_0x1bb892(0x1e1)+'Benefits:\x0a'+_0x1bb892(0x1a4)+_0x1bb892(0x19b)+_0x1bb892(0x210)+_0x1bb892(0x192)+'Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a'+_0x1bb892(0x232)+_0x1bb892(0x20f)+'For\x20deletions:\x0a'+_0x1bb892(0x205)+_0x1bb892(0x163)+_0x1bb892(0x168)+_0x1bb892(0x1f3)+_0x1bb892(0x25f)+_0x1bb892(0x21f)+_0x1bb892(0x1c6)+_0x1bb892(0x15a)+_0x1bb892(0x1d9)+_0x1bb892(0x18e),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x1bb892(0x206),'description':_0x1bb892(0x19c)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x1bb892(0x159)+_0x1bb892(0x1ff)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x5c41bc=_0x236934[_0x1bb892(0x21a)](_0x2ba2c6=>{const _0x9184c3=_0x1bb892;if(DISABLED_TOOLS[_0x9184c3(0x23d)](_0x2ba2c6[_0x9184c3(0x242)]))return console[_0x9184c3(0x1c8)](_0x9184c3(0x196)+_0x2ba2c6['name']+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if(_0x9184c3(0x1db)in _0x2ba2c6&&_0x2ba2c6[_0x9184c3(0x1db)]&&!MORPH_API_KEY)return logMcpStderr(_0x9184c3(0x1a7)+_0x2ba2c6['name']+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x5c41bc['map'](_0x19babd=>({'name':_0x19babd[_0x1bb892(0x242)],'description':_0x19babd[_0x1bb892(0x261)],'inputSchema':_0x19babd[_0x1bb892(0x24b)]}))};}),server[a0_0x408e5e(0x217)](CallToolRequestSchema,async _0x35424c=>{const _0x2383b7=a0_0x408e5e,{name:_0x4c27d0,arguments:_0x4ac9e3}=_0x35424c[_0x2383b7(0x197)];try{if(!MORPH_API_KEY)return{'content':[{'type':_0x2383b7(0x1fa),'text':_0x2383b7(0x194)}],'isError':!![]};if(!MORPH_API_KEY[_0x2383b7(0x243)](_0x2383b7(0x22c))&&!MORPH_API_KEY['startsWith'](_0x2383b7(0x1ab)))return{'content':[{'type':_0x2383b7(0x1fa),'text':'Invalid\x20Morph\x20API\x20key\x20format.\x20API\x20keys\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key.'}],'isError':!![]};if(DISABLED_TOOLS[_0x2383b7(0x23d)](_0x4c27d0))throw new Error(_0x2383b7(0x175)+_0x4c27d0+_0x2383b7(0x170));switch(_0x4c27d0){case'edit_file':{const _0x2ef0b8=_0x4ac9e3&&typeof _0x4ac9e3==='object'&&_0x2383b7(0x20b)in _0x4ac9e3&&!('instruction'in _0x4ac9e3)?{..._0x4ac9e3,'instruction':_0x4ac9e3[_0x2383b7(0x20b)],'instructions':undefined}:_0x4ac9e3,_0x5442db=MorphEditFileArgsSchema[_0x2383b7(0x20e)](_0x2ef0b8);if(!_0x5442db[_0x2383b7(0x1c2)])throw new Error(_0x2383b7(0x16a)+_0x5442db['error']);const _0x14a9ed=await validatePath(_0x5442db[_0x2383b7(0x233)]['path']);let _0x4dee56=null,_0x2449d2=!![],_0x268686=null;try{_0x4dee56=await a0_0x42b15d[_0x2383b7(0x1fe)](_0x14a9ed,_0x2383b7(0x1de));}catch(_0x3c9978){const _0x5f373a=_0x3c9978[_0x2383b7(0x1bf)];_0x5f373a==='ENOENT'?(_0x2449d2=![],_0x4dee56=''):(_0x268686=_0x2383b7(0x25a)+(_0x5f373a||_0x2383b7(0x1d2))+'\x20-\x20'+(_0x3c9978 instanceof Error?_0x3c9978['message']:String(_0x3c9978)),logMcpStderr('Warning:\x20'+_0x268686));}let _0x31d628;try{const _0x46b0b6=MORPH_API_KEY;if(!_0x46b0b6)throw new Error(_0x2383b7(0x14b));const _0x477614=a0_0x1d35aa[_0x2383b7(0x1ba)](_0x14a9ed),_0x43aca2=a0_0x1d35aa['basename'](_0x14a9ed),_0xaf88a0=await executeEditFile({'target_filepath':_0x43aca2,'code_edit':_0x5442db[_0x2383b7(0x233)]['code_edit'],'instruction':_0x5442db[_0x2383b7(0x233)][_0x2383b7(0x199)]},{'morphApiKey':_0x46b0b6,'morphApiUrl':MORPH_API_URL,'fast':MORPH_FAST_APPLY,'baseDir':_0x477614,'autoWrite':!_0x5442db['data'][_0x2383b7(0x179)],'generateUdiff':![],'debug':![]});_0x31d628=_0xaf88a0[_0x2383b7(0x1fb)];if(!_0xaf88a0[_0x2383b7(0x1c2)])throw new Error(_0xaf88a0[_0x2383b7(0x1c8)]||_0x2383b7(0x158));const _0x3f1be2=_0xaf88a0['changes'],_0x16756e=_0x2383b7(0x25d)+_0x3f1be2['linesAdded']+_0x2383b7(0x171)+_0x3f1be2['linesRemoved']+_0x2383b7(0x1d0)+_0x3f1be2[_0x2383b7(0x182)];if(_0x5442db['data']['dryRun'])return{'content':[{'type':_0x2383b7(0x1fa),'text':_0x2383b7(0x1a8)+(_0x2449d2?'':_0x2383b7(0x186))+':\x20'+_0x5442db[_0x2383b7(0x233)][_0x2383b7(0x199)]+_0x2383b7(0x1fd)+_0x16756e+_0x2383b7(0x201)+_0x5442db[_0x2383b7(0x233)][_0x2383b7(0x1f5)]+'.'}]};return{'content':[{'type':_0x2383b7(0x1fa),'text':_0x2383b7(0x20c)+(_0x2449d2?_0x2383b7(0x212):_0x2383b7(0x1b2))+':\x20'+_0x5442db['data']['instruction']+_0x2383b7(0x1fd)+_0x16756e+_0x2383b7(0x201)+_0x5442db[_0x2383b7(0x233)]['path']+'.'}]};}catch(_0x185020){const _0x57780e=handleMorphAPIError(_0x185020);if(_0x57780e)return _0x57780e;const _0x6b5e10=_0x185020 instanceof Error?_0x185020[_0x2383b7(0x22e)]:String(_0x185020);return reportMorphError({'error_message':_0x6b5e10,'error_type':_0x185020 instanceof Error?_0x185020[_0x2383b7(0x1e5)]['name']:_0x2383b7(0x1f9),'context':{'tool':_0x2383b7(0x1b3),'completion_id':_0x31d628,'file_path':_0x5442db[_0x2383b7(0x233)][_0x2383b7(0x1f5)],'validated_path':_0x14a9ed,'instruction':_0x5442db[_0x2383b7(0x233)]['instruction'],'model':MORPH_FAST_APPLY?_0x2383b7(0x255):'morph-v3-large','dry_run':_0x5442db[_0x2383b7(0x233)][_0x2383b7(0x179)],'file_exists':_0x2449d2,'file_read_error':_0x268686,'file_readable':_0x4dee56!==null,'request_content':{'path':_0x5442db[_0x2383b7(0x233)][_0x2383b7(0x1f5)],'code_edit':_0x5442db[_0x2383b7(0x233)]['code_edit'],'instruction':_0x5442db[_0x2383b7(0x233)]['instruction'],'original_code':_0x4dee56!==null?_0x4dee56['length']>0xc350?_0x4dee56[_0x2383b7(0x1f4)](0x0,0xc350)+_0x2383b7(0x1f6)+_0x4dee56[_0x2383b7(0x238)]+_0x2383b7(0x1ec):_0x4dee56:_0x2383b7(0x190)+(_0x268686||_0x2383b7(0x15e))+']','original_code_length':_0x4dee56?.[_0x2383b7(0x238)]??0x0,'model':MORPH_FAST_APPLY?_0x2383b7(0x255):_0x2383b7(0x154),'dry_run':_0x5442db['data'][_0x2383b7(0x179)]}},'stack_trace':_0x185020 instanceof Error?_0x185020['stack']:undefined,'source':_0x2383b7(0x19d)})['catch'](()=>{}),{'content':[{'type':_0x2383b7(0x1fa),'text':_0x2383b7(0x24c)+_0x6b5e10}],'isError':!![]};}}case _0x2383b7(0x206):{const _0x37cd85=WarpGrepArgsSchema[_0x2383b7(0x20e)](_0x4ac9e3);if(!_0x37cd85['success'])return{'content':[{'type':_0x2383b7(0x1fa),'text':_0x2383b7(0x17b)+_0x37cd85['error']}],'isError':!![]};const _0x253c4d=_0x363f59=>{const _0x46074a=_0x2383b7,_0x1ef391=[];for(const _0x45c761 of _0x363f59||[]){if(_0x45c761[_0x46074a(0x260)]===_0x46074a(0x25e)&&Array[_0x46074a(0x22f)](_0x45c761[_0x46074a(0x1cf)]))for(const _0x23b868 of _0x45c761['tool_calls']){try{const _0x42077e=_0x23b868[_0x46074a(0x239)]?.[_0x46074a(0x242)],_0x50e24f=JSON[_0x46074a(0x1b9)](_0x23b868['function']?.[_0x46074a(0x230)]||'{}');if(_0x42077e===_0x46074a(0x174))_0x1ef391[_0x46074a(0x1c1)](_0x46074a(0x14d)+_0x50e24f['pattern']+'\x27\x20'+(_0x50e24f[_0x46074a(0x1f5)]||'.'));else{if(_0x42077e===_0x46074a(0x224))_0x1ef391[_0x46074a(0x1c1)](_0x46074a(0x188)+_0x50e24f[_0x46074a(0x1f5)]);else{if(_0x42077e===_0x46074a(0x235))_0x1ef391['push']('list_directory\x20'+(_0x50e24f['command']||'.'));else{if(_0x42077e==='glob')_0x1ef391[_0x46074a(0x1c1)](_0x46074a(0x164)+_0x50e24f[_0x46074a(0x166)]+'\x27\x20'+(_0x50e24f['path']||'.'));else _0x42077e===_0x46074a(0x14e)&&_0x1ef391['push']('finish');}}}}catch{}}}return _0x1ef391;},_0x38682b=_0x29315b=>{const _0x1860e8=_0x2383b7,_0x263126=[];if(!_0x29315b||!Array[_0x1860e8(0x22f)](_0x29315b))return _0x263126;const _0x19b4f9=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':'FileNotFound','tool':_0x1860e8(0x224)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x1860e8(0x226),'tool':_0x1860e8(0x224)},{'pattern':/\[READ ERROR\]/,'error_type':_0x1860e8(0x1ae),'tool':_0x1860e8(0x224)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x1860e8(0x1ea),'tool':_0x1860e8(0x224)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x1860e8(0x16d),'tool':_0x1860e8(0x262)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x1860e8(0x223),'tool':_0x1860e8(0x262)},{'pattern':/\[BINARY FILE\]/,'error_type':'BinaryFile','tool':_0x1860e8(0x224)},{'pattern':/\[SYMLINK\]/,'error_type':_0x1860e8(0x257),'tool':'read'},{'pattern':/not a text file/,'error_type':_0x1860e8(0x1ea),'tool':_0x1860e8(0x224)},{'pattern':/symbolic link/,'error_type':_0x1860e8(0x257),'tool':'read'},{'pattern':/Error reading file:/,'error_type':_0x1860e8(0x1ae),'tool':_0x1860e8(0x224)},{'pattern':/status="error"/,'error_type':'ToolException','tool':_0x1860e8(0x1d2)}];let _0x1dfe09=0x0;for(const _0x3edbfa of _0x29315b){_0x3edbfa[_0x1860e8(0x260)]===_0x1860e8(0x25e)&&Array['isArray'](_0x3edbfa[_0x1860e8(0x1cf)])&&_0x1dfe09++;const _0x488b3e=_0x3edbfa[_0x1860e8(0x1ef)];if((_0x3edbfa[_0x1860e8(0x260)]==='tool'||_0x3edbfa[_0x1860e8(0x260)]===_0x1860e8(0x1e8))&&_0x488b3e&&typeof _0x488b3e===_0x1860e8(0x265))for(const {pattern:_0x150ca0,error_type:_0x3e9b5e,tool:_0x220fb6}of _0x19b4f9){const _0x5cbbaf=_0x488b3e['match'](new RegExp(_0x150ca0[_0x1860e8(0x24f)],'g'));if(_0x5cbbaf)for(const _0xe9768 of _0x5cbbaf){const _0x5d28b6=_0x488b3e[_0x1860e8(0x227)](_0xe9768),_0x3ad729=_0x488b3e[_0x1860e8(0x1f4)](_0x5d28b6,Math[_0x1860e8(0x1cd)](_0x5d28b6+0xc8,_0x488b3e[_0x1860e8(0x238)]));_0x263126[_0x1860e8(0x1c1)]({'tool':_0x220fb6,'error_type':_0x3e9b5e,'error_message':_0x3ad729[_0x1860e8(0x1a1)]('\x0a')[0x0],'turn':_0x1dfe09});}}}return _0x263126;};try{const _0x44ef38=a0_0x1d35aa['resolve'](_0x37cd85[_0x2383b7(0x233)][_0x2383b7(0x1f1)]),_0x19aee0=_0x37cd85[_0x2383b7(0x233)][_0x2383b7(0x153)],_0x525f44=_0x19aee0===_0x2383b7(0x1dc)?{'allowNames':[_0x2383b7(0x1dc)]}:undefined,_0x4d9692=new LocalRipgrepProvider(_0x44ef38,undefined,_0x525f44),_0x14df11=await runWarpGrep({'searchTerm':_0x37cd85['data'][_0x2383b7(0x176)],'repoRoot':_0x44ef38,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x4d9692,'search_type':_0x19aee0}),_0x4ed9db=_0x38682b(_0x14df11[_0x2383b7(0x187)]);_0x4ed9db['length']>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x4ed9db['length']+_0x2383b7(0x23c),'error_type':_0x2383b7(0x1cc),'level':_0x2383b7(0x1eb),'tool':'codebase_search','context':{'repo_path':_0x37cd85['data'][_0x2383b7(0x1f1)],'query':_0x37cd85[_0x2383b7(0x233)][_0x2383b7(0x176)],'model':_0x2383b7(0x167),'termination_reason':_0x14df11['terminationReason'],'sub_tool_errors':_0x4ed9db,'timings':_0x14df11[_0x2383b7(0x1c7)],'tool_calls':_0x253c4d(_0x14df11[_0x2383b7(0x187)]),'messages':_0x14df11[_0x2383b7(0x187)]?.['map'](_0x3c59d6=>({'role':_0x3c59d6[_0x2383b7(0x260)],'content':_0x3c59d6['content'],..._0x3c59d6[_0x2383b7(0x1cf)]?{'tool_calls':_0x3c59d6[_0x2383b7(0x1cf)][_0x2383b7(0x238)]}:{},..._0x3c59d6['tool_call_id']?{'tool_call_id':_0x3c59d6[_0x2383b7(0x240)]}:{}}))},'source':_0x2383b7(0x19d)})[_0x2383b7(0x16c)](()=>{});let _0x48e3a7='';if(_0x14df11[_0x2383b7(0x207)]===_0x2383b7(0x17d)&&_0x14df11['finish']?.['metadata']?.[_0x2383b7(0x17e)]){const _0x2fd90b=_0x14df11[_0x2383b7(0x14e)][_0x2383b7(0x23f)][_0x2383b7(0x17e)];if(_0x2fd90b['length']===0x0)return _0x48e3a7=_0x14df11[_0x2383b7(0x14e)][_0x2383b7(0x247)]||_0x2383b7(0x25b),{'content':[{'type':_0x2383b7(0x1fa),'text':_0x48e3a7}]};const _0x1bb26d=[],_0x4d0987=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x516123 of _0x14df11['messages']){if(_0x516123[_0x2383b7(0x260)]===_0x2383b7(0x25e)&&Array['isArray'](_0x516123[_0x2383b7(0x1cf)]))for(const _0x110a6a of _0x516123['tool_calls']){try{const _0xa3fe73=_0x110a6a[_0x2383b7(0x239)]?.[_0x2383b7(0x242)],_0x22a72a=JSON[_0x2383b7(0x1b9)](_0x110a6a[_0x2383b7(0x239)]?.[_0x2383b7(0x230)]||'{}');if(_0xa3fe73==='grep_search')_0x4d0987[_0x2383b7(0x1c1)](_0x2383b7(0x248)+_0x22a72a[_0x2383b7(0x166)]+'\x27\x20in\x20`'+(_0x22a72a[_0x2383b7(0x1f5)]||'.')+'`');else{if(_0xa3fe73===_0x2383b7(0x224))_0x4d0987['push'](_0x2383b7(0x19e)+_0x22a72a[_0x2383b7(0x1f5)]+'`');else{if(_0xa3fe73===_0x2383b7(0x235))_0x4d0987['push'](_0x2383b7(0x228)+(_0x22a72a[_0x2383b7(0x1a9)]||'.')+'`');else _0xa3fe73===_0x2383b7(0x1b6)&&_0x4d0987[_0x2383b7(0x1c1)](_0x2383b7(0x181)+_0x22a72a[_0x2383b7(0x166)]+'`\x20in\x20`'+(_0x22a72a[_0x2383b7(0x1f5)]||'.')+'`');}}}catch{}}}_0x1bb26d[_0x2383b7(0x1c1)](_0x4d0987[_0x2383b7(0x16f)]('\x0a'));const _0x2871cb=['',_0x2383b7(0x177)];for(const _0x459f48 of _0x2fd90b){if(_0x459f48[_0x2383b7(0x253)]==='*')_0x2871cb[_0x2383b7(0x1c1)]('-\x20'+_0x459f48[_0x2383b7(0x1f5)]+':*');else{if(Array[_0x2383b7(0x22f)](_0x459f48[_0x2383b7(0x253)])){const _0x21357a=_0x459f48[_0x2383b7(0x253)][_0x2383b7(0x1e4)](([_0x3917d4,_0x2f1a5e])=>{if(_0x3917d4===_0x2f1a5e)return''+_0x3917d4;return _0x3917d4+'-'+_0x2f1a5e;});_0x2871cb['push']('-\x20'+_0x459f48[_0x2383b7(0x1f5)]+':'+_0x21357a[_0x2383b7(0x16f)](','));}else _0x2871cb[_0x2383b7(0x1c1)]('-\x20'+_0x459f48[_0x2383b7(0x1f5)]+':*');}}_0x2871cb[_0x2383b7(0x1c1)](''),_0x1bb26d[_0x2383b7(0x1c1)](_0x2871cb[_0x2383b7(0x16f)]('\x0a')),_0x1bb26d[_0x2383b7(0x1c1)](_0x2383b7(0x189));const _0x2edba3=[],_0x126c4a=[];for(const _0xcb56c8 of _0x2fd90b){let _0x4e392c=a0_0x1d35aa['resolve'](_0x37cd85['data'][_0x2383b7(0x1f1)],_0xcb56c8['path']),_0x18d166=null,_0x482bdf=null;try{_0x18d166=await a0_0x42b15d[_0x2383b7(0x1fe)](_0x4e392c,{'encoding':_0x2383b7(0x1de)});}catch(_0x5b2fcc){const _0x952f6d=fixPathRepetition(_0x4e392c);if(_0x952f6d)try{_0x18d166=await a0_0x42b15d[_0x2383b7(0x1fe)](_0x952f6d,{'encoding':_0x2383b7(0x1de)}),_0x4e392c=_0x952f6d;}catch{_0x482bdf=_0x5b2fcc instanceof Error?_0x5b2fcc:new Error(String(_0x5b2fcc));}else _0x482bdf=_0x5b2fcc instanceof Error?_0x5b2fcc:new Error(String(_0x5b2fcc));}if(_0x18d166!==null){const _0x425919=_0x18d166[_0x2383b7(0x1a1)](/\r?\n/),_0x2727c3=[];if(_0xcb56c8[_0x2383b7(0x253)]==='*'||!Array['isArray'](_0xcb56c8['lines']))for(let _0x3d40b9=0x1;_0x3d40b9<=_0x425919[_0x2383b7(0x238)];_0x3d40b9++){const _0x441725=_0x425919[_0x3d40b9-0x1];_0x2727c3['push'](_0x3d40b9+'|\x20'+_0x441725);}else for(const [_0x1e8966,_0x4dec59]of _0xcb56c8['lines']){_0x2727c3[_0x2383b7(0x238)]>0x0&&_0x2727c3[_0x2383b7(0x1c1)]('');for(let _0x45bef6=_0x1e8966;_0x45bef6<=_0x4dec59&&_0x45bef6<=_0x425919[_0x2383b7(0x238)];_0x45bef6++){const _0x587c2b=_0x425919[_0x45bef6-0x1];_0x2727c3[_0x2383b7(0x1c1)](_0x45bef6+'|\x20'+_0x587c2b);}}_0x126c4a['push']({'path':_0xcb56c8[_0x2383b7(0x1f5)],'content':_0x2727c3['join']('\x0a')});}else _0x2edba3[_0x2383b7(0x1c1)](_0x2383b7(0x22a)+_0xcb56c8[_0x2383b7(0x1f5)]+_0x2383b7(0x23e)+(_0x482bdf?.['message']||_0x2383b7(0x173))+'\x0a</file>');}try{const _0x599b3f=await compactFileContexts(_0x126c4a,_0x37cd85[_0x2383b7(0x233)]['search_string'],MORPH_API_KEY,MORPH_API_URL);for(const _0x466fd6 of _0x599b3f){_0x2edba3[_0x2383b7(0x1c1)](_0x2383b7(0x22a)+_0x466fd6[_0x2383b7(0x1f5)]+_0x2383b7(0x185)+_0x466fd6['content']+_0x2383b7(0x18f));}}catch(_0x878eb6){console[_0x2383b7(0x1c8)](_0x2383b7(0x15f),_0x878eb6);for(const _0x24db60 of _0x126c4a){_0x2edba3[_0x2383b7(0x1c1)]('<file\x20path=\x22'+_0x24db60[_0x2383b7(0x1f5)]+_0x2383b7(0x185)+_0x24db60[_0x2383b7(0x1ef)]+_0x2383b7(0x18f));}}_0x1bb26d[_0x2383b7(0x1c1)](_0x2edba3[_0x2383b7(0x16f)]('\x0a\x0a')),_0x48e3a7=_0x1bb26d[_0x2383b7(0x16f)]('\x0a');const _0x3c4f8f=_0x14df11[_0x2383b7(0x204)]?.[_0x2383b7(0x21a)](_0x574dd4=>_0x574dd4['message']?.['startsWith'](_0x2383b7(0x221)))||[];if(_0x3c4f8f[_0x2383b7(0x238)]>0x0){const _0x794b9a=_0x3c4f8f[_0x2383b7(0x1e4)](_0x4360bc=>_0x4360bc[_0x2383b7(0x22e)])[_0x2383b7(0x16f)](';\x20');reportMorphError({'error_message':_0x794b9a,'error_type':_0x2383b7(0x14f),'context':{'tool':'codebase_search','repo_path':_0x37cd85[_0x2383b7(0x233)]['repo_path'],'query':_0x37cd85[_0x2383b7(0x233)][_0x2383b7(0x176)],'model':_0x2383b7(0x167),'termination_reason':'completed_with_file_errors','error_count':_0x3c4f8f[_0x2383b7(0x238)],'is_timeout':![],'timings':_0x14df11[_0x2383b7(0x1c7)],'files_attempted':_0x2fd90b[_0x2383b7(0x1e4)](_0x31b6fb=>({'path':_0x31b6fb[_0x2383b7(0x1f5)],'lines':_0x31b6fb[_0x2383b7(0x253)]})),'tool_calls':_0x253c4d(_0x14df11['messages']),'messages':_0x14df11[_0x2383b7(0x187)]?.['map'](_0x36d012=>({'role':_0x36d012[_0x2383b7(0x260)],'content':_0x36d012[_0x2383b7(0x1ef)],..._0x36d012[_0x2383b7(0x1cf)]?{'tool_calls':_0x36d012[_0x2383b7(0x1cf)][_0x2383b7(0x238)]}:{},..._0x36d012[_0x2383b7(0x240)]?{'tool_call_id':_0x36d012[_0x2383b7(0x240)]}:{}})),'request_content':{'query':_0x37cd85['data'][_0x2383b7(0x176)],'repo_path':_0x37cd85['data'][_0x2383b7(0x1f1)],'repoRoot':a0_0x1d35aa['resolve'](_0x37cd85[_0x2383b7(0x233)][_0x2383b7(0x1f1)]),'model':_0x2383b7(0x167)}},'source':_0x2383b7(0x19d)})[_0x2383b7(0x16c)](()=>{});}}else{if(_0x14df11[_0x2383b7(0x207)]==='terminated'&&_0x14df11[_0x2383b7(0x204)][_0x2383b7(0x238)]>0x0){const _0x2fbea6=_0x14df11[_0x2383b7(0x204)]['map'](_0x321f96=>_0x321f96[_0x2383b7(0x22e)])[_0x2383b7(0x16f)](';\x20');_0x48e3a7='Error:\x20'+_0x2fbea6;const _0x3a2712=_0x2fbea6[_0x2383b7(0x23b)]()[_0x2383b7(0x1e9)](_0x2383b7(0x152))||_0x2fbea6[_0x2383b7(0x23b)]()[_0x2383b7(0x1e9)](_0x2383b7(0x1d3))||_0x2fbea6[_0x2383b7(0x23b)]()['includes'](_0x2383b7(0x25c)),_0x478bf0=_0x14df11['finish']?.[_0x2383b7(0x23f)]?.[_0x2383b7(0x17e)],_0x831664=_0x14df11[_0x2383b7(0x204)][0x0];reportMorphError({'error_message':_0x2fbea6,'error_type':_0x3a2712?_0x2383b7(0x200):_0x831664?.[_0x2383b7(0x1e5)]?.['name']||_0x2383b7(0x1b1),'context':{'tool':_0x2383b7(0x206),'repo_path':_0x37cd85[_0x2383b7(0x233)]['repo_path'],'query':_0x37cd85[_0x2383b7(0x233)][_0x2383b7(0x176)],'model':'morph-warp-grep-v2.1','termination_reason':_0x14df11[_0x2383b7(0x207)],'error_count':_0x14df11[_0x2383b7(0x204)]['length'],'is_timeout':_0x3a2712,'timings':_0x14df11[_0x2383b7(0x1c7)],'files_attempted':_0x478bf0?.[_0x2383b7(0x1e4)](_0x214f57=>({'path':_0x214f57[_0x2383b7(0x1f5)],'lines':_0x214f57[_0x2383b7(0x253)]})),'tool_calls':_0x253c4d(_0x14df11[_0x2383b7(0x187)]),'messages':_0x14df11['messages']?.['map'](_0xc1aea6=>({'role':_0xc1aea6['role'],'content':_0xc1aea6[_0x2383b7(0x1ef)],..._0xc1aea6[_0x2383b7(0x1cf)]?{'tool_calls':_0xc1aea6[_0x2383b7(0x1cf)]['length']}:{},..._0xc1aea6[_0x2383b7(0x240)]?{'tool_call_id':_0xc1aea6[_0x2383b7(0x240)]}:{}})),'request_content':{'query':_0x37cd85[_0x2383b7(0x233)][_0x2383b7(0x176)],'repo_path':_0x37cd85[_0x2383b7(0x233)][_0x2383b7(0x1f1)],'repoRoot':a0_0x1d35aa['resolve'](_0x37cd85['data'][_0x2383b7(0x1f1)]),'model':_0x2383b7(0x167)}},'stack_trace':_0x831664?.[_0x2383b7(0x21e)]||undefined,'source':_0x2383b7(0x19d)})[_0x2383b7(0x16c)](()=>{});}else _0x48e3a7=_0x2383b7(0x15b);}return{'content':[{'type':_0x2383b7(0x1fa),'text':_0x48e3a7}]};}catch(_0x525cd2){const _0x395a46=handleMorphAPIError(_0x525cd2);if(_0x395a46)return _0x395a46;const _0x411a0e=_0x525cd2 instanceof Error?_0x525cd2['message']:String(_0x525cd2),_0x4281c2=_0x411a0e['toLowerCase']()['includes']('timeout')||_0x411a0e[_0x2383b7(0x23b)]()[_0x2383b7(0x1e9)](_0x2383b7(0x1d3))||_0x411a0e['toLowerCase']()[_0x2383b7(0x1e9)](_0x2383b7(0x25c))||_0x525cd2 instanceof Error&&_0x525cd2[_0x2383b7(0x242)]==='TimeoutError';return reportMorphError({'error_message':_0x411a0e,'error_type':_0x4281c2?_0x2383b7(0x200):_0x525cd2 instanceof Error?_0x525cd2[_0x2383b7(0x1e5)][_0x2383b7(0x242)]:_0x2383b7(0x1f9),'context':{'tool':'codebase_search','repo_path':_0x37cd85[_0x2383b7(0x233)][_0x2383b7(0x1f1)],'query':_0x37cd85[_0x2383b7(0x233)][_0x2383b7(0x176)],'model':_0x2383b7(0x167),'is_timeout':_0x4281c2,'exception_phase':_0x2383b7(0x222),'request_content':{'query':_0x37cd85[_0x2383b7(0x233)]['search_string'],'repo_path':_0x37cd85[_0x2383b7(0x233)][_0x2383b7(0x1f1)],'repoRoot':a0_0x1d35aa[_0x2383b7(0x1f7)](_0x37cd85[_0x2383b7(0x233)][_0x2383b7(0x1f1)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x525cd2 instanceof Error?_0x525cd2[_0x2383b7(0x21e)]:undefined,'source':'mcp-filesystem'})['catch'](()=>{}),{'content':[{'type':_0x2383b7(0x1fa),'text':_0x2383b7(0x1f0)+_0x411a0e}],'isError':![]};}}case _0x2383b7(0x1c9):{const _0x48bb7a=WarpGrepGitHubArgsSchema['safeParse'](_0x4ac9e3);if(!_0x48bb7a[_0x2383b7(0x1c2)])return{'content':[{'type':'text','text':_0x2383b7(0x17b)+_0x48bb7a[_0x2383b7(0x1c8)]}],'isError':!![]};const _0x40b4cc=_0x48bb7a[_0x2383b7(0x233)][_0x2383b7(0x16e)]||_0x48bb7a[_0x2383b7(0x233)][_0x2383b7(0x1ed)];if(!_0x40b4cc)return{'content':[{'type':_0x2383b7(0x1fa),'text':'Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id'}],'isError':!![]};const _0x1e7b39=MORPH_API_KEY;if(!_0x1e7b39)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x388e40=Date['now']();logMcpStderr(_0x2383b7(0x191)+_0x40b4cc+'\x20for:\x20\x22'+_0x48bb7a[_0x2383b7(0x233)][_0x2383b7(0x176)]+'\x22');try{const _0x350fb8=new WarpGrepClient({'morphApiKey':_0x1e7b39,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x4e3cc1=await _0x350fb8[_0x2383b7(0x1b8)]({'searchTerm':_0x48bb7a[_0x2383b7(0x233)][_0x2383b7(0x176)],'github':_0x40b4cc,'branch':_0x48bb7a[_0x2383b7(0x233)][_0x2383b7(0x20a)]}),_0x360aff=Date['now']()-_0x388e40;logMcpStderr(_0x2383b7(0x169)+_0x360aff+_0x2383b7(0x16b)+_0x4e3cc1[_0x2383b7(0x1c2)]);const _0x662c0d=formatResult(_0x4e3cc1);return{'content':[{'type':'text','text':_0x662c0d}]};}catch(_0x3c5035){const _0x33a1b6=handleMorphAPIError(_0x3c5035);if(_0x33a1b6)return _0x33a1b6;const _0xa3856e=Date[_0x2383b7(0x1af)]()-_0x388e40,_0x525ca0=_0x3c5035 instanceof Error?_0x3c5035[_0x2383b7(0x22e)]:String(_0x3c5035);return logMcpStderr('[github_codebase_search]\x20Failed\x20in\x20'+_0xa3856e+_0x2383b7(0x267),_0x525ca0),reportMorphError({'error_message':_0x525ca0,'error_type':_0x3c5035 instanceof Error?_0x3c5035[_0x2383b7(0x1e5)]['name']:'UnknownError','context':{'tool':'github_codebase_search','github_url':_0x40b4cc,'search_string':_0x48bb7a[_0x2383b7(0x233)][_0x2383b7(0x176)],'branch':_0x48bb7a['data'][_0x2383b7(0x20a)]},'stack_trace':_0x3c5035 instanceof Error?_0x3c5035[_0x2383b7(0x21e)]:undefined,'source':_0x2383b7(0x19d),'tool':_0x2383b7(0x1c9),'latency_ms':_0xa3856e})['catch'](()=>{}),{'content':[{'type':'text','text':_0x2383b7(0x1cb)+_0x525ca0}],'isError':![]};}}default:throw new Error(_0x2383b7(0x193)+_0x4c27d0);}}catch(_0x13e7e8){const _0x223f9d=_0x13e7e8 instanceof Error?_0x13e7e8[_0x2383b7(0x22e)]:String(_0x13e7e8);return reportMorphError({'error_message':_0x223f9d,'error_type':_0x13e7e8 instanceof Error?_0x13e7e8[_0x2383b7(0x1e5)][_0x2383b7(0x242)]:_0x2383b7(0x1f9),'context':{'tool':_0x4c27d0,'arguments':_0x4ac9e3?JSON[_0x2383b7(0x195)](_0x4ac9e3)['substring'](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x13e7e8 instanceof Error?_0x13e7e8[_0x2383b7(0x21e)]:undefined,'source':_0x2383b7(0x19d)})[_0x2383b7(0x16c)](()=>{}),{'content':[{'type':'text','text':_0x2383b7(0x258)+_0x223f9d}],'isError':!![]};}});function a0_0x3c79(_0x26dcc1,_0x5dbc26){_0x26dcc1=_0x26dcc1-0x148;const _0x9452ad=a0_0x9452();let _0x3c79e0=_0x9452ad[_0x26dcc1];return _0x3c79e0;}async function updateAllowedDirectoriesFromRoots(_0x20de9f){const _0x153436=a0_0x408e5e,_0x50d6af=await getValidRootDirectories(_0x20de9f);if(_0x50d6af[_0x153436(0x238)]>0x0)allowedDirectories=[..._0x50d6af],logMcpStderr(_0x153436(0x1d1)+_0x50d6af[_0x153436(0x238)]+_0x153436(0x1ce));else{logMcpStderr(_0x153436(0x165));if(ENABLE_WORKSPACE_MODE)try{const _0x12e3ca=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x12e3ca&&(allowedDirectories=[_0x12e3ca],logMcpStderr(_0x153436(0x160)+_0x12e3ca));}catch(_0x386889){logMcpStderr(_0x153436(0x259)+_0x386889);}}}server[a0_0x408e5e(0x244)](RootsListChangedNotificationSchema,async()=>{const _0x87b805=a0_0x408e5e;try{const _0xb821d8=await server[_0x87b805(0x19a)]();_0xb821d8&&_0x87b805(0x220)in _0xb821d8&&await updateAllowedDirectoriesFromRoots(_0xb821d8[_0x87b805(0x220)]);}catch(_0x3c0d22){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x3c0d22 instanceof Error?_0x3c0d22['message']:String(_0x3c0d22));}}),server[a0_0x408e5e(0x18c)]=async()=>{const _0x1964ce=a0_0x408e5e,_0x466c4b=server['getClientCapabilities']();if(_0x466c4b?.[_0x1964ce(0x220)])try{const _0x45a620=await server[_0x1964ce(0x19a)]();_0x45a620&&_0x1964ce(0x220)in _0x45a620?await updateAllowedDirectoriesFromRoots(_0x45a620[_0x1964ce(0x220)]):logMcpStderr(_0x1964ce(0x180));}catch(_0x52e9c5){logMcpStderr(_0x1964ce(0x1d8),_0x52e9c5 instanceof Error?_0x52e9c5[_0x1964ce(0x22e)]:String(_0x52e9c5));}else{if(allowedDirectories[_0x1964ce(0x238)]>0x0)logMcpStderr(_0x1964ce(0x231),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode');else throw new Error(_0x1964ce(0x1bd));}}};async function runServer(){const _0xd0fc16=a0_0x408e5e,_0x1219f6=new StdioServerTransport();await server[_0xd0fc16(0x24e)](_0x1219f6),logMcpStderr(_0xd0fc16(0x218)),allowedDirectories[_0xd0fc16(0x238)]===0x0&&logMcpStderr(_0xd0fc16(0x1c5));}runServer()[a0_0x408e5e(0x16c)](_0x516d1b=>{const _0x225579=a0_0x408e5e;logMcpStderr('Fatal\x20error\x20running\x20server:',_0x516d1b),process[_0x225579(0x15d)](0x1);});
2
+ const a0_0x1a5b57=a0_0x1493;(function(_0x2096d5,_0x1156e8){const _0x17d0f1=a0_0x1493,_0x1754e8=_0x2096d5();while(!![]){try{const _0x24449c=parseInt(_0x17d0f1(0x187))/0x1*(-parseInt(_0x17d0f1(0x1a2))/0x2)+-parseInt(_0x17d0f1(0x185))/0x3+parseInt(_0x17d0f1(0x13e))/0x4+parseInt(_0x17d0f1(0x15a))/0x5+-parseInt(_0x17d0f1(0x231))/0x6+-parseInt(_0x17d0f1(0x1f2))/0x7*(-parseInt(_0x17d0f1(0x13d))/0x8)+-parseInt(_0x17d0f1(0x194))/0x9*(-parseInt(_0x17d0f1(0x183))/0xa);if(_0x24449c===_0x1156e8)break;else _0x1754e8['push'](_0x1754e8['shift']());}catch(_0x5b0e5c){_0x1754e8['push'](_0x1754e8['shift']());}}}(a0_0x5976,0x250ba));import{Server}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import{CallToolRequestSchema,ListToolsRequestSchema,RootsListChangedNotificationSchema}from'@modelcontextprotocol/sdk/types.js';import a0_0x19d0f1 from'fs/promises';import a0_0x3aa9a0 from'path';import a0_0x3ac3ed 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{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0x32a4d3 from'axios';function fixPathRepetition(_0x398bee){const _0x25e8f0=a0_0x1493,_0xd96c4f=_0x398bee[_0x25e8f0(0x196)](a0_0x3aa9a0[_0x25e8f0(0x1e1)])[_0x25e8f0(0x155)](Boolean);if(_0xd96c4f[_0x25e8f0(0x257)]<0x2)return null;for(let _0x175e7c=Math[_0x25e8f0(0x145)](_0xd96c4f[_0x25e8f0(0x257)]/0x2);_0x175e7c>=0x1;_0x175e7c--){for(let _0x1a37da=0x0;_0x1a37da<=_0xd96c4f['length']-0x2*_0x175e7c;_0x1a37da++){const _0x1317f0=_0xd96c4f[_0x25e8f0(0x252)](_0x1a37da,_0x1a37da+_0x175e7c),_0x328bba=_0xd96c4f[_0x25e8f0(0x252)](_0x1a37da+_0x175e7c,_0x1a37da+0x2*_0x175e7c);if(_0x1317f0[_0x25e8f0(0x215)]((_0xb4c036,_0x446889)=>_0xb4c036===_0x328bba[_0x446889])){const _0x14139c=[..._0xd96c4f[_0x25e8f0(0x252)](0x0,_0x1a37da),..._0xd96c4f[_0x25e8f0(0x252)](_0x1a37da+_0x175e7c)];return a0_0x3aa9a0[_0x25e8f0(0x1e1)]+_0x14139c[_0x25e8f0(0x1e2)](a0_0x3aa9a0[_0x25e8f0(0x1e1)]);}}}return null;}const require=createRequire(import.meta.url);function a0_0x5976(){const _0x5c513b=['files','map','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','messages','FileNotFound','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','morph-warp-grep-v2.1','370zWzVbA','Invalid\x20Morph\x20API\x20key\x20format.\x20API\x20keys\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key.','605028YGYbgZ','Bearer\x20','139974cZKPgs','error','../package.json','https://morphllm.com/api/error-report','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','source','Error\x20accessing\x20directory\x20','roots','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','includes','\x0aOptions:','function','Here\x20is\x20the\x20content\x20of\x20files:\x0a','115677YTKiyU','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','split','@morphllm/morphmcp\x20','pattern','assistant','response','\x20valid\x20directories','\x20chars)','grep\x20\x27','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','some','\x27\x20in\x20`','sk-','4IJjeBL','context','default','all','startsWith','Relevant\x20context\x20found:','arguments','\x20for:\x20\x22','github_codebase_search','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','payload','argv','path','go.mod','Specific\x20commit\x20hash\x20to\x20search','<file\x20path=\x22','Tool\x20\x22','safeParse','\x22>\x0a','Unknown\x20tool:\x20','.cursor','application/json','unknown','has','isArray','--version','morph-v3-fast','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','Cargo.toml','resolve','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','search_type','linesRemoved','GitHub\x20search\x20failed:\x20','terminated','content','❌\x20Morph\x20Edit\x20Failed:\x20','linesModified','\x20-\x20','optional','\x0a</file>','readFile','.\x20Changes:\x20','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','toLowerCase','\x22>\x0aError\x20reading\x20file:\x20','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','now','normalize','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)',',\x20removed\x20','runWarpGrep_call','Error:\x20','user','api-key','name','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','--api-key','\x20is\x20not\x20a\x20directory','pyproject.toml','dirname','enum','role','sep','join','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','description','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','tool_call_id','ToolException','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','utf-8','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','completionId','Fatal\x20error\x20running\x20server:','SymlinkError','[codebase_search]\x20compaction\x20failed','codebase_search','--api-key=','371fsutUt','dryRun','0.2.0','-\x20Grepped\x20\x27','log','ms.\x20Success:\x20','.\x20Path:\x20','WarpGrepError','trim','Warning:\x20Workspace\x20fallback\x20failed:\x20','command','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.','completed','lines','Invalid\x20arguments:\x20','Workspace\x20mode\x20enabled:\x20Using\x20','size','composer.json','list_directory','inputSchema','stack','--help','tool','describe','Disabled\x20tools:\x20','post','version','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','metadata','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','data','\x20error(s)','exit','array','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','every','WarpGrep\x20sub-tool\x20errors:\x20','DISABLED_TOOLS','tsconfig.json','Error\x20running\x20fast\x20context\x20search:\x20','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','\x0aExamples:','boolean','morph-v3-large','MORPH_LARGE_APPLY','listRoots','string','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','Morph\x20Edit\x20','object','getClientCapabilities','min','basename','timed\x20out','params','access','Tool\x20','ENOENT','-\x20Read\x20file\x20`','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','number','timings','RipgrepError','1714536vDHwCo','ReadError','requiresApiKey','grep','oninitialized','text','substring','read','status','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','.git','[could\x20not\x20read\x20file:\x20','finish','list_directory\x20','PWD','catch','Authentication\x20failed:\x20Your\x20Morph\x20API\x20key\x20is\x20invalid\x20or\x20has\x20been\x20revoked.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key,\x20then\x20update\x20your\x20MCP\x20configuration.','Failed\x20to\x20request\x20roots\x20from\x20client:','searchGitHub','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','false','repo_path',',\x20modified\x20','Morph\x20FastApply\x20failed\x20without\x20error\x20message','Parent\x20directory\x20does\x20not\x20exist:\x20','MORPH_API_KEY','glob\x20\x27','[github_codebase_search]\x20Done\x20in\x20','Created\x20File','MORPH_API_URL','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','stringify','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','slice','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','node_modules','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','length','instruction','terminationReason','timeout','11912vwFBaL','1155128cUfWug','added\x20','read\x20','message','changes','parse','Rules:\x0a','floor','ENABLE_WORKSPACE_MODE','Morph\x20Edit\x20Preview','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','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.','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','success','Max\x20results\x20to\x20return','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','-\x20Glob\x20search\x20`','env','search_string','match','errors','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','UnknownError','filter','realpath','TimeoutError','\x20disabled\x20via\x20DISABLED_TOOLS','branch','379290YbfUUb','Applied','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','push','edit_file','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','cwd','PathError','connect','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','Unknown\x20error','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','Benefits:\x0a','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','\x22.\x20Known\x20tools:\x20','tool_calls','glob','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','\x20as\x20allowed\x20directory','constructor','completed_with_file_errors','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','WORKSPACE_ROOT','`\x20in\x20`','isDirectory','code_edit','toISOString','code','setRequestHandler','etimedout','BinaryFile','morph-','mcp-filesystem'];a0_0x5976=function(){return _0x5c513b;};return a0_0x5976();}function getPackageVersion(){const _0x3fb79f=a0_0x1493;try{const _0x16d26c=require(_0x3fb79f(0x189));return _0x16d26c[_0x3fb79f(0x20c)]??_0x3fb79f(0x1b8);}catch(_0x11301e){return logMcpStderr(_0x3fb79f(0x21a),_0x11301e),_0x3fb79f(0x1b8);}}function printHelp(){const _0x17abbe=a0_0x1493;console[_0x17abbe(0x1f6)](_0x17abbe(0x197)+getPackageVersion()),console[_0x17abbe(0x1f6)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console['log'](_0x17abbe(0x191)),console[_0x17abbe(0x1f6)]('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x17abbe(0x1f6)](_0x17abbe(0x244)),console[_0x17abbe(0x1f6)](_0x17abbe(0x181)),console['log'](_0x17abbe(0x21b)),console['log']('\x20\x20morph-mcp'),console[_0x17abbe(0x1f6)](_0x17abbe(0x15f));}const cliArgs=process[a0_0x1a5b57(0x1ad)]['slice'](0x2),VERSION_FLAGS=new Set([a0_0x1a5b57(0x1bb),'-v','-V']),HELP_FLAGS=new Set([a0_0x1a5b57(0x207),'-h']);cliArgs['some'](_0x477e22=>VERSION_FLAGS['has'](_0x477e22))&&(console[a0_0x1a5b57(0x1f6)]('@morphllm/morphmcp\x20'+getPackageVersion()),process[a0_0x1a5b57(0x212)](0x0));cliArgs[a0_0x1a5b57(0x19f)](_0x32d6e6=>HELP_FLAGS[a0_0x1a5b57(0x1b9)](_0x32d6e6))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x207a51){const _0x25afe7=a0_0x1a5b57;for(let _0x4885da=0x0;_0x4885da<cliArgs['length'];_0x4885da++){const _0x16df74=cliArgs[_0x4885da];if(_0x16df74[_0x25afe7(0x1a6)]('--'+_0x207a51+'='))return _0x16df74[_0x25afe7(0x252)](('--'+_0x207a51+'=')[_0x25afe7(0x257)]);if(_0x16df74==='--'+_0x207a51&&_0x4885da+0x1<cliArgs[_0x25afe7(0x257)])return cliArgs[_0x4885da+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x1a5b57(0x257)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x1a5b57(0x1b9)](arg)||HELP_FLAGS[a0_0x1a5b57(0x1b9)](arg))continue;if(arg['startsWith'](a0_0x1a5b57(0x1f1)))continue;if(arg===a0_0x1a5b57(0x1db)){i++;continue;}args[a0_0x1a5b57(0x15d)](arg);}const WORKSPACE_ROOT=process['env'][a0_0x1a5b57(0x171)]||process[a0_0x1a5b57(0x14f)][a0_0x1a5b57(0x23f)]||process[a0_0x1a5b57(0x160)](),ENABLE_WORKSPACE_MODE=process[a0_0x1a5b57(0x14f)][a0_0x1a5b57(0x146)]!==a0_0x1a5b57(0x245),MORPH_API_KEY=getCliArg(a0_0x1a5b57(0x1d8))??process[a0_0x1a5b57(0x14f)][a0_0x1a5b57(0x24a)],MORPH_API_URL=process['env'][a0_0x1a5b57(0x24e)],MORPH_LARGE_APPLY=process[a0_0x1a5b57(0x14f)][a0_0x1a5b57(0x21e)]!==a0_0x1a5b57(0x245),MORPH_WARP_GREP_TIMEOUT=process[a0_0x1a5b57(0x14f)]['MORPH_WARP_GREP_TIMEOUT']?parseInt(process['env']['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x1a5b57(0x15e),a0_0x1a5b57(0x1f0),a0_0x1a5b57(0x1aa)]),DISABLED_TOOLS=process[a0_0x1a5b57(0x14f)][a0_0x1a5b57(0x217)]?new Set(process['env']['DISABLED_TOOLS'][a0_0x1a5b57(0x196)](',')[a0_0x1a5b57(0x17d)](_0x2e7226=>_0x2e7226[a0_0x1a5b57(0x1fa)]())['filter'](_0x35bfcd=>_0x35bfcd[a0_0x1a5b57(0x257)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0x1a5b57(0x202)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x1a5b57(0x1b9)](tool)&&console[a0_0x1a5b57(0x188)](a0_0x1a5b57(0x1e3)+tool+a0_0x1a5b57(0x169)+[...KNOWN_TOOL_NAMES][a0_0x1a5b57(0x1e2)](',\x20'));}console['error'](a0_0x1a5b57(0x20a)+[...DISABLED_TOOLS][a0_0x1a5b57(0x1e2)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x1a5b57(0x1a6)](a0_0x1a5b57(0x1a1))&&!MORPH_API_KEY[a0_0x1a5b57(0x1a6)](a0_0x1a5b57(0x17a))&&logMcpStderr(a0_0x1a5b57(0x153));async function reportMorphError(_0x2978bd){const _0x4002ef=a0_0x1a5b57;try{await a0_0x32a4d3[_0x4002ef(0x20b)](_0x4002ef(0x18a),{..._0x2978bd,'timestamp':new Date()[_0x4002ef(0x175)](),'source':_0x2978bd[_0x4002ef(0x18c)]||_0x4002ef(0x17b),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x2978bd[_0x4002ef(0x1a3)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x4002ef(0x1b7),'Authorization':_0x4002ef(0x186)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x4b3178,_0x29da18){const _0x37a2da=a0_0x1a5b57;if(_0x4b3178&&typeof _0x4b3178===_0x37a2da(0x223)&&'status'in _0x4b3178)return _0x4b3178[_0x37a2da(0x239)];if(_0x4b3178&&typeof _0x4b3178===_0x37a2da(0x223)&&_0x37a2da(0x19a)in _0x4b3178)return _0x4b3178[_0x37a2da(0x19a)]?.['status'];const _0x3e6c59=_0x29da18[_0x37a2da(0x151)](/\b(401|429)\b/);return _0x3e6c59?parseInt(_0x3e6c59[0x1],0xa):null;}function handleMorphAPIError(_0x56d21e){const _0x4d031f=a0_0x1a5b57,_0x3d033c=_0x56d21e instanceof Error?_0x56d21e[_0x4d031f(0x141)]:String(_0x56d21e),_0x3df5ed=extractStatusCode(_0x56d21e,_0x3d033c);switch(_0x3df5ed){case 0x191:return{'content':[{'type':_0x4d031f(0x236),'text':_0x4d031f(0x241)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x4d031f(0x236),'text':'Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.'}],'isError':!![]};default:return null;}}args['length']===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x1a5b57(0x18f)),logMcpStderr('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),logMcpStderr(a0_0x1a5b57(0x1e5)),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr('\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)'),logMcpStderr(a0_0x1a5b57(0x14a)));function normalizePath(_0x85444c){const _0x3aa3b3=a0_0x1a5b57;return a0_0x3aa9a0[_0x3aa3b3(0x1d2)](_0x85444c);}function expandHome(_0x2313f6){const _0x31ede2=a0_0x1a5b57;if(_0x2313f6[_0x31ede2(0x1a6)]('~/')||_0x2313f6==='~')return a0_0x3aa9a0['join'](a0_0x3ac3ed['homedir'](),_0x2313f6['slice'](0x1));return _0x2313f6;}let allowedDirectories=await Promise[a0_0x1a5b57(0x1a5)](args[a0_0x1a5b57(0x17d)](async _0x55bbef=>{const _0x2a5f02=a0_0x1a5b57,_0x4532fb=expandHome(_0x55bbef),_0x252e25=a0_0x3aa9a0[_0x2a5f02(0x1bf)](_0x4532fb);try{const _0x2a3449=await a0_0x19d0f1[_0x2a5f02(0x156)](_0x252e25);return normalizePath(_0x2a3449);}catch(_0xf3e434){return normalizePath(_0x252e25);}}));function a0_0x1493(_0x598ea7,_0x530754){_0x598ea7=_0x598ea7-0x13a;const _0x59761a=a0_0x5976();let _0x1493b8=_0x59761a[_0x598ea7];return _0x1493b8;}if(ENABLE_WORKSPACE_MODE&&args[a0_0x1a5b57(0x257)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x1a5b57(0x15d)](workspaceDir),logMcpStderr(a0_0x1a5b57(0x201)+workspaceDir+a0_0x1a5b57(0x16d)));}catch(a0_0x323d0){logMcpStderr('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x323d0);}async function detectWorkspaceRoot(_0x32bf6f){const _0x4a29ae=a0_0x1a5b57;let _0x1805d7=a0_0x3aa9a0['resolve'](_0x32bf6f);const _0x1a9da5=[_0x4a29ae(0x23b),'.vscode','package.json',_0x4a29ae(0x1be),_0x4a29ae(0x1dd),_0x4a29ae(0x1af),_0x4a29ae(0x1b6),_0x4a29ae(0x218),_0x4a29ae(0x203)];while(_0x1805d7!==a0_0x3aa9a0[_0x4a29ae(0x1de)](_0x1805d7)){for(const _0x1310c5 of _0x1a9da5){const _0x5084eb=a0_0x3aa9a0[_0x4a29ae(0x1e2)](_0x1805d7,_0x1310c5);try{return await a0_0x19d0f1[_0x4a29ae(0x229)](_0x5084eb),normalizePath(_0x1805d7);}catch{}}_0x1805d7=a0_0x3aa9a0['dirname'](_0x1805d7);}return normalizePath(_0x32bf6f);}await Promise['all'](args[a0_0x1a5b57(0x17d)](async _0x54cbde=>{const _0x2ddb46=a0_0x1a5b57;try{const _0x550b21=await a0_0x19d0f1['stat'](expandHome(_0x54cbde));!_0x550b21[_0x2ddb46(0x173)]()&&(logMcpStderr(_0x2ddb46(0x1d6)+_0x54cbde+_0x2ddb46(0x1dc)),process[_0x2ddb46(0x212)](0x1));}catch(_0x4be411){logMcpStderr(_0x2ddb46(0x18d)+_0x54cbde+':',_0x4be411),process['exit'](0x1);}}));async function validatePath(_0x50043b){const _0xc0c892=a0_0x1a5b57,_0x1e9f46=expandHome(_0x50043b),_0x3cd735=a0_0x3aa9a0[_0xc0c892(0x1bf)](_0x1e9f46);try{const _0x5d2252=await a0_0x19d0f1['realpath'](_0x3cd735);return _0x5d2252;}catch(_0x4c30c2){if(_0x4c30c2[_0xc0c892(0x176)]===_0xc0c892(0x22b)){const _0x2f2c0d=a0_0x3aa9a0[_0xc0c892(0x1de)](_0x3cd735);try{const _0x4c1958=await a0_0x19d0f1[_0xc0c892(0x156)](_0x2f2c0d);return a0_0x3aa9a0[_0xc0c892(0x1e2)](_0x4c1958,a0_0x3aa9a0[_0xc0c892(0x226)](_0x3cd735));}catch{throw new Error(_0xc0c892(0x249)+_0x2f2c0d);}}throw _0x4c30c2;}}const MorphEditFileArgsSchema=z['object']({'path':z[a0_0x1a5b57(0x220)](),'code_edit':z[a0_0x1a5b57(0x220)]()['describe']('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z['string']()['describe']('A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.'),'dryRun':z[a0_0x1a5b57(0x21c)]()[a0_0x1a5b57(0x1a4)](![])[a0_0x1a5b57(0x209)]('Preview\x20changes\x20without\x20applying\x20them.')}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x1a5b57(0x149),WarpGrepArgsSchema=z[a0_0x1a5b57(0x223)]({'search_string':z['string']()[a0_0x1a5b57(0x209)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z['string']()[a0_0x1a5b57(0x209)](a0_0x1a5b57(0x148)),'search_type':z[a0_0x1a5b57(0x1df)]([a0_0x1a5b57(0x1a4),a0_0x1a5b57(0x255)])[a0_0x1a5b57(0x1c9)]()[a0_0x1a5b57(0x209)](a0_0x1a5b57(0x19e))}),WarpGrepGitHubArgsSchema=z[a0_0x1a5b57(0x223)]({'search_string':z[a0_0x1a5b57(0x220)]()[a0_0x1a5b57(0x209)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()[a0_0x1a5b57(0x1c9)]()[a0_0x1a5b57(0x209)](a0_0x1a5b57(0x1fd)),'owner_repo':z[a0_0x1a5b57(0x220)]()[a0_0x1a5b57(0x1c9)]()['describe'](a0_0x1a5b57(0x20d)),'branch':z[a0_0x1a5b57(0x220)]()[a0_0x1a5b57(0x1c9)]()[a0_0x1a5b57(0x209)](a0_0x1a5b57(0x1d3))}),CodebaseSearchArgsSchema=z[a0_0x1a5b57(0x223)]({'query':z[a0_0x1a5b57(0x220)]()[a0_0x1a5b57(0x209)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x1a5b57(0x220)]()[a0_0x1a5b57(0x209)]('Repository\x20identifier'),'branch':z[a0_0x1a5b57(0x220)]()['optional']()[a0_0x1a5b57(0x209)](a0_0x1a5b57(0x1d0)),'commitHash':z[a0_0x1a5b57(0x220)]()['optional']()[a0_0x1a5b57(0x209)](a0_0x1a5b57(0x1b0)),'targetDirectories':z[a0_0x1a5b57(0x213)](z['string']())[a0_0x1a5b57(0x1a4)]([])[a0_0x1a5b57(0x209)](a0_0x1a5b57(0x251)),'limit':z[a0_0x1a5b57(0x22e)]()[a0_0x1a5b57(0x1c9)]()['default'](0xa)['describe'](a0_0x1a5b57(0x14c))}),server=new Server({'name':'morph-mcp','version':a0_0x1a5b57(0x1f4)},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x58b355=a0_0x1a5b57,_0x20a890=[{'name':_0x58b355(0x15e),'description':_0x58b355(0x1e8)+'⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a'+_0x58b355(0x1cd)+_0x58b355(0x18b)+_0x58b355(0x166)+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x58b355(0x16c)+_0x58b355(0x1da)+'-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a'+_0x58b355(0x1ab)+_0x58b355(0x214)+_0x58b355(0x165)+'For\x20deletions:\x0a'+_0x58b355(0x167)+_0x58b355(0x256)+_0x58b355(0x144)+_0x58b355(0x20f)+_0x58b355(0x1bd)+_0x58b355(0x1e9)+_0x58b355(0x254)+_0x58b355(0x253)+'-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a'+_0x58b355(0x15c),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x58b355(0x1f0),'description':_0x58b355(0x1c0)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+'Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20'+'You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20'+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x54231b=_0x20a890[_0x58b355(0x155)](_0x202758=>{const _0x141265=_0x58b355;if(DISABLED_TOOLS[_0x141265(0x1b9)](_0x202758[_0x141265(0x1d9)]))return console[_0x141265(0x188)](_0x141265(0x22a)+_0x202758[_0x141265(0x1d9)]+_0x141265(0x158)),![];if(_0x141265(0x233)in _0x202758&&_0x202758[_0x141265(0x233)]&&!MORPH_API_KEY)return logMcpStderr('Warning:\x20'+_0x202758[_0x141265(0x1d9)]+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x54231b['map'](_0x3ae587=>({'name':_0x3ae587[_0x58b355(0x1d9)],'description':_0x3ae587[_0x58b355(0x1e4)],'inputSchema':_0x3ae587[_0x58b355(0x205)]}))};}),server[a0_0x1a5b57(0x177)](CallToolRequestSchema,async _0x93c339=>{const _0x5aaf95=a0_0x1a5b57,{name:_0x33a2ab,arguments:_0x233690}=_0x93c339[_0x5aaf95(0x228)];try{if(!MORPH_API_KEY)return{'content':[{'type':_0x5aaf95(0x236),'text':_0x5aaf95(0x24f)}],'isError':!![]};if(!MORPH_API_KEY['startsWith'](_0x5aaf95(0x1a1))&&!MORPH_API_KEY[_0x5aaf95(0x1a6)](_0x5aaf95(0x17a)))return{'content':[{'type':'text','text':_0x5aaf95(0x184)}],'isError':!![]};if(DISABLED_TOOLS[_0x5aaf95(0x1b9)](_0x33a2ab))throw new Error(_0x5aaf95(0x1b2)+_0x33a2ab+'\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable');switch(_0x33a2ab){case _0x5aaf95(0x15e):{const _0x4f56cb=_0x233690&&typeof _0x233690===_0x5aaf95(0x223)&&'instructions'in _0x233690&&!(_0x5aaf95(0x13a)in _0x233690)?{..._0x233690,'instruction':_0x233690['instructions'],'instructions':undefined}:_0x233690,_0x361a82=MorphEditFileArgsSchema[_0x5aaf95(0x1b3)](_0x4f56cb);if(!_0x361a82['success'])throw new Error(_0x5aaf95(0x195)+_0x361a82[_0x5aaf95(0x188)]);const _0x1e48e0=await validatePath(_0x361a82['data']['path']);let _0x3c310a=null,_0x111444=!![],_0x39580e=null;try{_0x3c310a=await a0_0x19d0f1[_0x5aaf95(0x1cb)](_0x1e48e0,'utf-8');}catch(_0x86805c){const _0xabe81b=_0x86805c[_0x5aaf95(0x176)];_0xabe81b==='ENOENT'?(_0x111444=![],_0x3c310a=''):(_0x39580e='Failed\x20to\x20read\x20file:\x20'+(_0xabe81b||_0x5aaf95(0x1b8))+_0x5aaf95(0x1c8)+(_0x86805c instanceof Error?_0x86805c[_0x5aaf95(0x141)]:String(_0x86805c)),logMcpStderr('Warning:\x20'+_0x39580e));}let _0xbbea1;try{const _0x4f033b=MORPH_API_KEY;if(!_0x4f033b)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0xdfde2b=a0_0x3aa9a0[_0x5aaf95(0x1de)](_0x1e48e0),_0x15e417=a0_0x3aa9a0[_0x5aaf95(0x226)](_0x1e48e0),_0x2e0f2d=await executeEditFile({'target_filepath':_0x15e417,'code_edit':_0x361a82[_0x5aaf95(0x210)][_0x5aaf95(0x174)],'instruction':_0x361a82[_0x5aaf95(0x210)]['instruction']},{'morphApiKey':_0x4f033b,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0xdfde2b,'autoWrite':!_0x361a82['data'][_0x5aaf95(0x1f3)],'generateUdiff':![],'debug':![]});_0xbbea1=_0x2e0f2d[_0x5aaf95(0x1ec)];if(!_0x2e0f2d[_0x5aaf95(0x14b)])throw new Error(_0x2e0f2d[_0x5aaf95(0x188)]||_0x5aaf95(0x248));const _0x3d5bf9=_0x2e0f2d[_0x5aaf95(0x142)],_0xbd62ce=_0x5aaf95(0x13f)+_0x3d5bf9['linesAdded']+_0x5aaf95(0x1d4)+_0x3d5bf9[_0x5aaf95(0x1c2)]+_0x5aaf95(0x247)+_0x3d5bf9[_0x5aaf95(0x1c7)];if(_0x361a82[_0x5aaf95(0x210)][_0x5aaf95(0x1f3)])return{'content':[{'type':'text','text':_0x5aaf95(0x147)+(_0x111444?'':'\x20(new\x20file)')+':\x20'+_0x361a82[_0x5aaf95(0x210)]['instruction']+_0x5aaf95(0x1cc)+_0xbd62ce+_0x5aaf95(0x1f8)+_0x361a82['data']['path']+'.'}]};return{'content':[{'type':_0x5aaf95(0x236),'text':_0x5aaf95(0x222)+(_0x111444?_0x5aaf95(0x15b):_0x5aaf95(0x24d))+':\x20'+_0x361a82[_0x5aaf95(0x210)][_0x5aaf95(0x13a)]+_0x5aaf95(0x1cc)+_0xbd62ce+_0x5aaf95(0x1f8)+_0x361a82[_0x5aaf95(0x210)][_0x5aaf95(0x1ae)]+'.'}]};}catch(_0x3f1c7b){const _0x3a21d0=handleMorphAPIError(_0x3f1c7b);if(_0x3a21d0)return _0x3a21d0;const _0x1c92b4=_0x3f1c7b instanceof Error?_0x3f1c7b[_0x5aaf95(0x141)]:String(_0x3f1c7b);return reportMorphError({'error_message':_0x1c92b4,'error_type':_0x3f1c7b instanceof Error?_0x3f1c7b[_0x5aaf95(0x16e)]['name']:'UnknownError','context':{'tool':_0x5aaf95(0x15e),'completion_id':_0xbbea1,'file_path':_0x361a82[_0x5aaf95(0x210)]['path'],'validated_path':_0x1e48e0,'instruction':_0x361a82[_0x5aaf95(0x210)]['instruction'],'model':MORPH_LARGE_APPLY?_0x5aaf95(0x21d):_0x5aaf95(0x1bc),'dry_run':_0x361a82['data'][_0x5aaf95(0x1f3)],'file_exists':_0x111444,'file_read_error':_0x39580e,'file_readable':_0x3c310a!==null,'request_content':{'path':_0x361a82['data'][_0x5aaf95(0x1ae)],'code_edit':_0x361a82[_0x5aaf95(0x210)][_0x5aaf95(0x174)],'instruction':_0x361a82[_0x5aaf95(0x210)][_0x5aaf95(0x13a)],'original_code':_0x3c310a!==null?_0x3c310a[_0x5aaf95(0x257)]>0xc350?_0x3c310a[_0x5aaf95(0x237)](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x3c310a['length']+_0x5aaf95(0x19c):_0x3c310a:_0x5aaf95(0x23c)+(_0x39580e||'unknown\x20error')+']','original_code_length':_0x3c310a?.['length']??0x0,'model':MORPH_LARGE_APPLY?'morph-v3-large':_0x5aaf95(0x1bc),'dry_run':_0x361a82['data']['dryRun']}},'stack_trace':_0x3f1c7b instanceof Error?_0x3f1c7b[_0x5aaf95(0x206)]:undefined,'source':'mcp-filesystem'})[_0x5aaf95(0x240)](()=>{}),{'content':[{'type':_0x5aaf95(0x236),'text':_0x5aaf95(0x1c6)+_0x1c92b4}],'isError':!![]};}}case'codebase_search':{const _0x237c4f=WarpGrepArgsSchema[_0x5aaf95(0x1b3)](_0x233690);if(!_0x237c4f[_0x5aaf95(0x14b)])return{'content':[{'type':_0x5aaf95(0x236),'text':_0x5aaf95(0x200)+_0x237c4f[_0x5aaf95(0x188)]}],'isError':!![]};const _0x339757=_0x37ed0c=>{const _0x21fe56=_0x5aaf95,_0x41bc1d=[];for(const _0x226ce1 of _0x37ed0c||[]){if(_0x226ce1['role']===_0x21fe56(0x199)&&Array[_0x21fe56(0x1ba)](_0x226ce1[_0x21fe56(0x16a)]))for(const _0x243965 of _0x226ce1[_0x21fe56(0x16a)]){try{const _0x5d4f3b=_0x243965['function']?.['name'],_0x33bc12=JSON['parse'](_0x243965[_0x21fe56(0x192)]?.['arguments']||'{}');if(_0x5d4f3b==='grep_search')_0x41bc1d[_0x21fe56(0x15d)](_0x21fe56(0x19d)+_0x33bc12[_0x21fe56(0x198)]+'\x27\x20'+(_0x33bc12[_0x21fe56(0x1ae)]||'.'));else{if(_0x5d4f3b===_0x21fe56(0x238))_0x41bc1d[_0x21fe56(0x15d)](_0x21fe56(0x140)+_0x33bc12[_0x21fe56(0x1ae)]);else{if(_0x5d4f3b===_0x21fe56(0x204))_0x41bc1d[_0x21fe56(0x15d)](_0x21fe56(0x23e)+(_0x33bc12[_0x21fe56(0x1fc)]||'.'));else{if(_0x5d4f3b===_0x21fe56(0x16b))_0x41bc1d[_0x21fe56(0x15d)](_0x21fe56(0x24b)+_0x33bc12[_0x21fe56(0x198)]+'\x27\x20'+(_0x33bc12[_0x21fe56(0x1ae)]||'.'));else _0x5d4f3b===_0x21fe56(0x23d)&&_0x41bc1d['push'](_0x21fe56(0x23d));}}}}catch{}}}return _0x41bc1d;},_0x2a58e4=_0xc44f11=>{const _0x1f3482=_0x5aaf95,_0x12b596=[];if(!_0xc44f11||!Array[_0x1f3482(0x1ba)](_0xc44f11))return _0x12b596;const _0x1db639=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x1f3482(0x180),'tool':_0x1f3482(0x238)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x1f3482(0x161),'tool':_0x1f3482(0x238)},{'pattern':/\[READ ERROR\]/,'error_type':_0x1f3482(0x232),'tool':_0x1f3482(0x238)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x1f3482(0x179),'tool':_0x1f3482(0x238)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x1f3482(0x230),'tool':_0x1f3482(0x234)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':'RipgrepNotAvailable','tool':_0x1f3482(0x234)},{'pattern':/\[BINARY FILE\]/,'error_type':'BinaryFile','tool':_0x1f3482(0x238)},{'pattern':/\[SYMLINK\]/,'error_type':_0x1f3482(0x1ee),'tool':_0x1f3482(0x238)},{'pattern':/not a text file/,'error_type':_0x1f3482(0x179),'tool':_0x1f3482(0x238)},{'pattern':/symbolic link/,'error_type':_0x1f3482(0x1ee),'tool':_0x1f3482(0x238)},{'pattern':/Error reading file:/,'error_type':_0x1f3482(0x232),'tool':_0x1f3482(0x238)},{'pattern':/status="error"/,'error_type':_0x1f3482(0x1e7),'tool':'unknown'}];let _0x1b3e10=0x0;for(const _0x3b8734 of _0xc44f11){_0x3b8734[_0x1f3482(0x1e0)]===_0x1f3482(0x199)&&Array[_0x1f3482(0x1ba)](_0x3b8734[_0x1f3482(0x16a)])&&_0x1b3e10++;const _0x56e629=_0x3b8734['content'];if((_0x3b8734[_0x1f3482(0x1e0)]===_0x1f3482(0x208)||_0x3b8734['role']===_0x1f3482(0x1d7))&&_0x56e629&&typeof _0x56e629==='string')for(const {pattern:_0x59c849,error_type:_0x4287c4,tool:_0x496076}of _0x1db639){const _0x5df403=_0x56e629['match'](new RegExp(_0x59c849[_0x1f3482(0x18c)],'g'));if(_0x5df403)for(const _0x4f695f of _0x5df403){const _0x2c858d=_0x56e629['indexOf'](_0x4f695f),_0x1a03f4=_0x56e629['substring'](_0x2c858d,Math[_0x1f3482(0x225)](_0x2c858d+0xc8,_0x56e629[_0x1f3482(0x257)]));_0x12b596[_0x1f3482(0x15d)]({'tool':_0x496076,'error_type':_0x4287c4,'error_message':_0x1a03f4[_0x1f3482(0x196)]('\x0a')[0x0],'turn':_0x1b3e10});}}}return _0x12b596;};try{const _0x5bf622=a0_0x3aa9a0['resolve'](_0x237c4f['data'][_0x5aaf95(0x246)]),_0x9aa8b9=_0x237c4f[_0x5aaf95(0x210)][_0x5aaf95(0x1c1)],_0x5e1f6a=_0x9aa8b9===_0x5aaf95(0x255)?{'allowNames':['node_modules']}:undefined,_0x808682=new LocalRipgrepProvider(_0x5bf622,undefined,_0x5e1f6a),_0x37a879=await runWarpGrep({'searchTerm':_0x237c4f[_0x5aaf95(0x210)][_0x5aaf95(0x150)],'repoRoot':_0x5bf622,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x808682,'search_type':_0x9aa8b9}),_0x9e70ea=_0x2a58e4(_0x37a879[_0x5aaf95(0x17f)]);_0x9e70ea[_0x5aaf95(0x257)]>0x0&&reportMorphError({'error_message':_0x5aaf95(0x216)+_0x9e70ea[_0x5aaf95(0x257)]+_0x5aaf95(0x211),'error_type':'SubToolError','level':'warn','tool':_0x5aaf95(0x1f0),'context':{'repo_path':_0x237c4f[_0x5aaf95(0x210)][_0x5aaf95(0x246)],'query':_0x237c4f['data'][_0x5aaf95(0x150)],'model':'morph-warp-grep-v2.1','termination_reason':_0x37a879[_0x5aaf95(0x13b)],'sub_tool_errors':_0x9e70ea,'timings':_0x37a879[_0x5aaf95(0x22f)],'tool_calls':_0x339757(_0x37a879[_0x5aaf95(0x17f)]),'messages':_0x37a879['messages']?.['map'](_0x4b4b63=>({'role':_0x4b4b63[_0x5aaf95(0x1e0)],'content':_0x4b4b63[_0x5aaf95(0x1c5)],..._0x4b4b63[_0x5aaf95(0x16a)]?{'tool_calls':_0x4b4b63[_0x5aaf95(0x16a)][_0x5aaf95(0x257)]}:{},..._0x4b4b63[_0x5aaf95(0x1e6)]?{'tool_call_id':_0x4b4b63['tool_call_id']}:{}}))},'source':'mcp-filesystem'})[_0x5aaf95(0x240)](()=>{});let _0x4191af='';if(_0x37a879['terminationReason']===_0x5aaf95(0x1fe)&&_0x37a879[_0x5aaf95(0x23d)]?.['metadata']?.[_0x5aaf95(0x17c)]){const _0x10bce8=_0x37a879[_0x5aaf95(0x23d)]['metadata'][_0x5aaf95(0x17c)];if(_0x10bce8[_0x5aaf95(0x257)]===0x0)return _0x4191af=_0x37a879[_0x5aaf95(0x23d)][_0x5aaf95(0x1ac)]||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x5aaf95(0x236),'text':_0x4191af}]};const _0x110e88=[],_0xc5ba8e=[_0x5aaf95(0x23a)];for(const _0x54860f of _0x37a879[_0x5aaf95(0x17f)]){if(_0x54860f[_0x5aaf95(0x1e0)]==='assistant'&&Array[_0x5aaf95(0x1ba)](_0x54860f['tool_calls']))for(const _0x265e2c of _0x54860f[_0x5aaf95(0x16a)]){try{const _0x466f1f=_0x265e2c[_0x5aaf95(0x192)]?.['name'],_0x1386cf=JSON[_0x5aaf95(0x143)](_0x265e2c[_0x5aaf95(0x192)]?.[_0x5aaf95(0x1a8)]||'{}');if(_0x466f1f==='grep_search')_0xc5ba8e[_0x5aaf95(0x15d)](_0x5aaf95(0x1f5)+_0x1386cf[_0x5aaf95(0x198)]+_0x5aaf95(0x1a0)+(_0x1386cf['path']||'.')+'`');else{if(_0x466f1f===_0x5aaf95(0x238))_0xc5ba8e[_0x5aaf95(0x15d)](_0x5aaf95(0x22c)+_0x1386cf[_0x5aaf95(0x1ae)]+'`');else{if(_0x466f1f===_0x5aaf95(0x204))_0xc5ba8e['push']('-\x20Listed\x20directory\x20`'+(_0x1386cf[_0x5aaf95(0x1fc)]||'.')+'`');else _0x466f1f==='glob'&&_0xc5ba8e[_0x5aaf95(0x15d)](_0x5aaf95(0x14e)+_0x1386cf[_0x5aaf95(0x198)]+_0x5aaf95(0x172)+(_0x1386cf[_0x5aaf95(0x1ae)]||'.')+'`');}}}catch{}}}_0x110e88[_0x5aaf95(0x15d)](_0xc5ba8e['join']('\x0a'));const _0x25f34b=['',_0x5aaf95(0x1a7)];for(const _0x1149b4 of _0x10bce8){if(_0x1149b4[_0x5aaf95(0x1ff)]==='*')_0x25f34b['push']('-\x20'+_0x1149b4[_0x5aaf95(0x1ae)]+':*');else{if(Array[_0x5aaf95(0x1ba)](_0x1149b4[_0x5aaf95(0x1ff)])){const _0x2965e2=_0x1149b4[_0x5aaf95(0x1ff)]['map'](([_0x276a1b,_0x393d5d])=>{if(_0x276a1b===_0x393d5d)return''+_0x276a1b;return _0x276a1b+'-'+_0x393d5d;});_0x25f34b[_0x5aaf95(0x15d)]('-\x20'+_0x1149b4[_0x5aaf95(0x1ae)]+':'+_0x2965e2[_0x5aaf95(0x1e2)](','));}else _0x25f34b[_0x5aaf95(0x15d)]('-\x20'+_0x1149b4[_0x5aaf95(0x1ae)]+':*');}}_0x25f34b[_0x5aaf95(0x15d)](''),_0x110e88[_0x5aaf95(0x15d)](_0x25f34b['join']('\x0a')),_0x110e88['push'](_0x5aaf95(0x193));const _0x9bad42=[],_0x45d429=[];for(const _0x55a7fe of _0x10bce8){let _0x46a053=a0_0x3aa9a0['resolve'](_0x237c4f[_0x5aaf95(0x210)][_0x5aaf95(0x246)],_0x55a7fe[_0x5aaf95(0x1ae)]),_0x2fe95b=null,_0xf3fadb=null;try{_0x2fe95b=await a0_0x19d0f1[_0x5aaf95(0x1cb)](_0x46a053,{'encoding':_0x5aaf95(0x1ea)});}catch(_0xd6c5d8){const _0x24a5fa=fixPathRepetition(_0x46a053);if(_0x24a5fa)try{_0x2fe95b=await a0_0x19d0f1[_0x5aaf95(0x1cb)](_0x24a5fa,{'encoding':_0x5aaf95(0x1ea)}),_0x46a053=_0x24a5fa;}catch{_0xf3fadb=_0xd6c5d8 instanceof Error?_0xd6c5d8:new Error(String(_0xd6c5d8));}else _0xf3fadb=_0xd6c5d8 instanceof Error?_0xd6c5d8:new Error(String(_0xd6c5d8));}if(_0x2fe95b!==null){const _0x5befb1=_0x2fe95b[_0x5aaf95(0x196)](/\r?\n/),_0x3cf37d=[];if(_0x55a7fe[_0x5aaf95(0x1ff)]==='*'||!Array[_0x5aaf95(0x1ba)](_0x55a7fe[_0x5aaf95(0x1ff)]))for(let _0x47833d=0x1;_0x47833d<=_0x5befb1['length'];_0x47833d++){const _0x5b8933=_0x5befb1[_0x47833d-0x1];_0x3cf37d[_0x5aaf95(0x15d)](_0x47833d+'|\x20'+_0x5b8933);}else for(const [_0x4827f2,_0x29dcb7]of _0x55a7fe[_0x5aaf95(0x1ff)]){_0x3cf37d['length']>0x0&&_0x3cf37d[_0x5aaf95(0x15d)]('');for(let _0x4eb193=_0x4827f2;_0x4eb193<=_0x29dcb7&&_0x4eb193<=_0x5befb1[_0x5aaf95(0x257)];_0x4eb193++){const _0x4b793d=_0x5befb1[_0x4eb193-0x1];_0x3cf37d[_0x5aaf95(0x15d)](_0x4eb193+'|\x20'+_0x4b793d);}}_0x45d429['push']({'path':_0x55a7fe[_0x5aaf95(0x1ae)],'content':_0x3cf37d['join']('\x0a')});}else _0x9bad42[_0x5aaf95(0x15d)](_0x5aaf95(0x1b1)+_0x55a7fe['path']+_0x5aaf95(0x1cf)+(_0xf3fadb?.[_0x5aaf95(0x141)]||_0x5aaf95(0x164))+'\x0a</file>');}try{const _0x4a8c0b=await compactFileContexts(_0x45d429,_0x237c4f['data'][_0x5aaf95(0x150)],MORPH_API_KEY,MORPH_API_URL);for(const _0x13383e of _0x4a8c0b){_0x9bad42['push']('<file\x20path=\x22'+_0x13383e['path']+_0x5aaf95(0x1b4)+_0x13383e['content']+_0x5aaf95(0x1ca));}}catch(_0x57b217){console['error'](_0x5aaf95(0x1ef),_0x57b217);for(const _0x6b8581 of _0x45d429){_0x9bad42[_0x5aaf95(0x15d)](_0x5aaf95(0x1b1)+_0x6b8581[_0x5aaf95(0x1ae)]+_0x5aaf95(0x1b4)+_0x6b8581[_0x5aaf95(0x1c5)]+_0x5aaf95(0x1ca));}}_0x110e88['push'](_0x9bad42[_0x5aaf95(0x1e2)]('\x0a\x0a')),_0x4191af=_0x110e88[_0x5aaf95(0x1e2)]('\x0a');const _0x116eba=_0x37a879['errors']?.['filter'](_0x3c5351=>_0x3c5351[_0x5aaf95(0x141)]?.[_0x5aaf95(0x1a6)]('File\x20read\x20error:'))||[];if(_0x116eba[_0x5aaf95(0x257)]>0x0){const _0x14512e=_0x116eba['map'](_0x3da6c7=>_0x3da6c7[_0x5aaf95(0x141)])['join'](';\x20');reportMorphError({'error_message':_0x14512e,'error_type':'FileReadError','context':{'tool':_0x5aaf95(0x1f0),'repo_path':_0x237c4f[_0x5aaf95(0x210)][_0x5aaf95(0x246)],'query':_0x237c4f['data']['search_string'],'model':'morph-warp-grep-v2.1','termination_reason':_0x5aaf95(0x16f),'error_count':_0x116eba[_0x5aaf95(0x257)],'is_timeout':![],'timings':_0x37a879[_0x5aaf95(0x22f)],'files_attempted':_0x10bce8['map'](_0x14a9d1=>({'path':_0x14a9d1[_0x5aaf95(0x1ae)],'lines':_0x14a9d1[_0x5aaf95(0x1ff)]})),'tool_calls':_0x339757(_0x37a879['messages']),'messages':_0x37a879[_0x5aaf95(0x17f)]?.['map'](_0x8781fd=>({'role':_0x8781fd[_0x5aaf95(0x1e0)],'content':_0x8781fd[_0x5aaf95(0x1c5)],..._0x8781fd[_0x5aaf95(0x16a)]?{'tool_calls':_0x8781fd['tool_calls'][_0x5aaf95(0x257)]}:{},..._0x8781fd[_0x5aaf95(0x1e6)]?{'tool_call_id':_0x8781fd['tool_call_id']}:{}})),'request_content':{'query':_0x237c4f['data']['search_string'],'repo_path':_0x237c4f[_0x5aaf95(0x210)]['repo_path'],'repoRoot':a0_0x3aa9a0[_0x5aaf95(0x1bf)](_0x237c4f[_0x5aaf95(0x210)][_0x5aaf95(0x246)]),'model':_0x5aaf95(0x182)}},'source':_0x5aaf95(0x17b)})[_0x5aaf95(0x240)](()=>{});}}else{if(_0x37a879[_0x5aaf95(0x13b)]===_0x5aaf95(0x1c4)&&_0x37a879[_0x5aaf95(0x152)][_0x5aaf95(0x257)]>0x0){const _0x5b81a6=_0x37a879[_0x5aaf95(0x152)][_0x5aaf95(0x17d)](_0x5a7ea4=>_0x5a7ea4['message'])[_0x5aaf95(0x1e2)](';\x20');_0x4191af='Error:\x20'+_0x5b81a6;const _0x10b51f=_0x5b81a6[_0x5aaf95(0x1ce)]()[_0x5aaf95(0x190)](_0x5aaf95(0x13c))||_0x5b81a6[_0x5aaf95(0x1ce)]()[_0x5aaf95(0x190)]('timed\x20out')||_0x5b81a6['toLowerCase']()[_0x5aaf95(0x190)]('etimedout'),_0x1ae06a=_0x37a879[_0x5aaf95(0x23d)]?.[_0x5aaf95(0x20e)]?.[_0x5aaf95(0x17c)],_0x3969cb=_0x37a879[_0x5aaf95(0x152)][0x0];reportMorphError({'error_message':_0x5b81a6,'error_type':_0x10b51f?_0x5aaf95(0x157):_0x3969cb?.[_0x5aaf95(0x16e)]?.[_0x5aaf95(0x1d9)]||_0x5aaf95(0x1f9),'context':{'tool':_0x5aaf95(0x1f0),'repo_path':_0x237c4f['data'][_0x5aaf95(0x246)],'query':_0x237c4f[_0x5aaf95(0x210)][_0x5aaf95(0x150)],'model':_0x5aaf95(0x182),'termination_reason':_0x37a879[_0x5aaf95(0x13b)],'error_count':_0x37a879['errors'][_0x5aaf95(0x257)],'is_timeout':_0x10b51f,'timings':_0x37a879['timings'],'files_attempted':_0x1ae06a?.['map'](_0x455e98=>({'path':_0x455e98[_0x5aaf95(0x1ae)],'lines':_0x455e98[_0x5aaf95(0x1ff)]})),'tool_calls':_0x339757(_0x37a879[_0x5aaf95(0x17f)]),'messages':_0x37a879[_0x5aaf95(0x17f)]?.[_0x5aaf95(0x17d)](_0xcadfcc=>({'role':_0xcadfcc[_0x5aaf95(0x1e0)],'content':_0xcadfcc[_0x5aaf95(0x1c5)],..._0xcadfcc[_0x5aaf95(0x16a)]?{'tool_calls':_0xcadfcc[_0x5aaf95(0x16a)][_0x5aaf95(0x257)]}:{},..._0xcadfcc[_0x5aaf95(0x1e6)]?{'tool_call_id':_0xcadfcc[_0x5aaf95(0x1e6)]}:{}})),'request_content':{'query':_0x237c4f[_0x5aaf95(0x210)][_0x5aaf95(0x150)],'repo_path':_0x237c4f[_0x5aaf95(0x210)][_0x5aaf95(0x246)],'repoRoot':a0_0x3aa9a0[_0x5aaf95(0x1bf)](_0x237c4f[_0x5aaf95(0x210)][_0x5aaf95(0x246)]),'model':_0x5aaf95(0x182)}},'stack_trace':_0x3969cb?.['stack']||undefined,'source':_0x5aaf95(0x17b)})[_0x5aaf95(0x240)](()=>{});}else _0x4191af=_0x5aaf95(0x170);}return{'content':[{'type':_0x5aaf95(0x236),'text':_0x4191af}]};}catch(_0x10ddf1){const _0x2f3e51=handleMorphAPIError(_0x10ddf1);if(_0x2f3e51)return _0x2f3e51;const _0x32c342=_0x10ddf1 instanceof Error?_0x10ddf1[_0x5aaf95(0x141)]:String(_0x10ddf1),_0x45c4b7=_0x32c342[_0x5aaf95(0x1ce)]()['includes'](_0x5aaf95(0x13c))||_0x32c342[_0x5aaf95(0x1ce)]()[_0x5aaf95(0x190)](_0x5aaf95(0x227))||_0x32c342[_0x5aaf95(0x1ce)]()[_0x5aaf95(0x190)](_0x5aaf95(0x178))||_0x10ddf1 instanceof Error&&_0x10ddf1['name']===_0x5aaf95(0x157);return reportMorphError({'error_message':_0x32c342,'error_type':_0x45c4b7?_0x5aaf95(0x157):_0x10ddf1 instanceof Error?_0x10ddf1[_0x5aaf95(0x16e)][_0x5aaf95(0x1d9)]:_0x5aaf95(0x154),'context':{'tool':_0x5aaf95(0x1f0),'repo_path':_0x237c4f[_0x5aaf95(0x210)]['repo_path'],'query':_0x237c4f[_0x5aaf95(0x210)]['search_string'],'model':_0x5aaf95(0x182),'is_timeout':_0x45c4b7,'exception_phase':_0x5aaf95(0x1d5),'request_content':{'query':_0x237c4f['data'][_0x5aaf95(0x150)],'repo_path':_0x237c4f[_0x5aaf95(0x210)]['repo_path'],'repoRoot':a0_0x3aa9a0[_0x5aaf95(0x1bf)](_0x237c4f[_0x5aaf95(0x210)][_0x5aaf95(0x246)]),'model':_0x5aaf95(0x182)}},'stack_trace':_0x10ddf1 instanceof Error?_0x10ddf1[_0x5aaf95(0x206)]:undefined,'source':_0x5aaf95(0x17b)})[_0x5aaf95(0x240)](()=>{}),{'content':[{'type':_0x5aaf95(0x236),'text':_0x5aaf95(0x219)+_0x32c342}],'isError':![]};}}case _0x5aaf95(0x1aa):{const _0x58f36b=WarpGrepGitHubArgsSchema[_0x5aaf95(0x1b3)](_0x233690);if(!_0x58f36b[_0x5aaf95(0x14b)])return{'content':[{'type':_0x5aaf95(0x236),'text':'Invalid\x20arguments:\x20'+_0x58f36b['error']}],'isError':!![]};const _0x250584=_0x58f36b['data']['github_url']||_0x58f36b[_0x5aaf95(0x210)]['owner_repo'];if(!_0x250584)return{'content':[{'type':'text','text':_0x5aaf95(0x221)}],'isError':!![]};const _0x5cf3fb=MORPH_API_KEY;if(!_0x5cf3fb)throw new Error(_0x5aaf95(0x168));const _0x28b284=Date[_0x5aaf95(0x1d1)]();logMcpStderr('[github_codebase_search]\x20Searching\x20'+_0x250584+_0x5aaf95(0x1a9)+_0x58f36b['data']['search_string']+'\x22');try{const _0x190914=new WarpGrepClient({'morphApiKey':_0x5cf3fb,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0xebf2cc=await _0x190914[_0x5aaf95(0x243)]({'searchTerm':_0x58f36b[_0x5aaf95(0x210)]['search_string'],'github':_0x250584,'branch':_0x58f36b['data'][_0x5aaf95(0x159)]}),_0x1fa8ee=Date['now']()-_0x28b284;logMcpStderr(_0x5aaf95(0x24c)+_0x1fa8ee+_0x5aaf95(0x1f7)+_0xebf2cc[_0x5aaf95(0x14b)]);const _0x5b6110=formatResult(_0xebf2cc);return{'content':[{'type':_0x5aaf95(0x236),'text':_0x5b6110}]};}catch(_0xd0e06d){const _0x18171f=handleMorphAPIError(_0xd0e06d);if(_0x18171f)return _0x18171f;const _0x21e531=Date[_0x5aaf95(0x1d1)]()-_0x28b284,_0x1666f4=_0xd0e06d instanceof Error?_0xd0e06d[_0x5aaf95(0x141)]:String(_0xd0e06d);return logMcpStderr('[github_codebase_search]\x20Failed\x20in\x20'+_0x21e531+'ms:',_0x1666f4),reportMorphError({'error_message':_0x1666f4,'error_type':_0xd0e06d instanceof Error?_0xd0e06d[_0x5aaf95(0x16e)]['name']:_0x5aaf95(0x154),'context':{'tool':'github_codebase_search','github_url':_0x250584,'search_string':_0x58f36b[_0x5aaf95(0x210)]['search_string'],'branch':_0x58f36b[_0x5aaf95(0x210)][_0x5aaf95(0x159)]},'stack_trace':_0xd0e06d instanceof Error?_0xd0e06d[_0x5aaf95(0x206)]:undefined,'source':'mcp-filesystem','tool':_0x5aaf95(0x1aa),'latency_ms':_0x21e531})[_0x5aaf95(0x240)](()=>{}),{'content':[{'type':_0x5aaf95(0x236),'text':_0x5aaf95(0x1c3)+_0x1666f4}],'isError':![]};}}default:throw new Error(_0x5aaf95(0x1b5)+_0x33a2ab);}}catch(_0x2a7bea){const _0x13023d=_0x2a7bea instanceof Error?_0x2a7bea[_0x5aaf95(0x141)]:String(_0x2a7bea);return reportMorphError({'error_message':_0x13023d,'error_type':_0x2a7bea instanceof Error?_0x2a7bea[_0x5aaf95(0x16e)]['name']:'UnknownError','context':{'tool':_0x33a2ab,'arguments':_0x233690?JSON[_0x5aaf95(0x250)](_0x233690)[_0x5aaf95(0x237)](0x0,0x1f4):undefined,'mcp_server_version':_0x5aaf95(0x1f4)},'stack_trace':_0x2a7bea instanceof Error?_0x2a7bea['stack']:undefined,'source':'mcp-filesystem'})[_0x5aaf95(0x240)](()=>{}),{'content':[{'type':_0x5aaf95(0x236),'text':'Error:\x20'+_0x13023d}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x331a9e){const _0x31cfa6=a0_0x1a5b57,_0x336d7b=await getValidRootDirectories(_0x331a9e);if(_0x336d7b[_0x31cfa6(0x257)]>0x0)allowedDirectories=[..._0x336d7b],logMcpStderr(_0x31cfa6(0x17e)+_0x336d7b[_0x31cfa6(0x257)]+_0x31cfa6(0x19b));else{logMcpStderr(_0x31cfa6(0x1eb));if(ENABLE_WORKSPACE_MODE)try{const _0x477fbb=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x477fbb&&(allowedDirectories=[_0x477fbb],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x477fbb));}catch(_0x5ec110){logMcpStderr(_0x31cfa6(0x1fb)+_0x5ec110);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x4c1ad8=a0_0x1a5b57;try{const _0x201074=await server[_0x4c1ad8(0x21f)]();_0x201074&&'roots'in _0x201074&&await updateAllowedDirectoriesFromRoots(_0x201074['roots']);}catch(_0x4f1fe6){logMcpStderr(_0x4c1ad8(0x242),_0x4f1fe6 instanceof Error?_0x4f1fe6[_0x4c1ad8(0x141)]:String(_0x4f1fe6));}}),server[a0_0x1a5b57(0x235)]=async()=>{const _0x45b8e0=a0_0x1a5b57,_0x2b729a=server[_0x45b8e0(0x224)]();if(_0x2b729a?.['roots'])try{const _0x2622c0=await server[_0x45b8e0(0x21f)]();_0x2622c0&&_0x45b8e0(0x18e)in _0x2622c0?await updateAllowedDirectoriesFromRoots(_0x2622c0['roots']):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x54fb3f){logMcpStderr('Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:',_0x54fb3f instanceof Error?_0x54fb3f['message']:String(_0x54fb3f));}else{if(allowedDirectories[_0x45b8e0(0x257)]>0x0)logMcpStderr(_0x45b8e0(0x22d),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x45b8e0(0x163));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 _0x1b0062=a0_0x1a5b57,_0x938594=new StdioServerTransport();await server[_0x1b0062(0x162)](_0x938594),logMcpStderr('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories['length']===0x0&&logMcpStderr(_0x1b0062(0x14d));}runServer()[a0_0x1a5b57(0x240)](_0x57ecf4=>{const _0x16b6f7=a0_0x1a5b57;logMcpStderr(_0x16b6f7(0x1ed),_0x57ecf4),process[_0x16b6f7(0x212)](0x1);});
package/dist/log-utils.js CHANGED
@@ -1 +1 @@
1
- var a1_0x4c7436=a1_0x2320;(function(_0x3a9907,_0x54c3a8){var _0x4db1ec=a1_0x2320,_0x462141=_0x3a9907();while(!![]){try{var _0x4a3d52=parseInt(_0x4db1ec(0x12a))/0x1*(parseInt(_0x4db1ec(0x12d))/0x2)+parseInt(_0x4db1ec(0x129))/0x3*(parseInt(_0x4db1ec(0x133))/0x4)+-parseInt(_0x4db1ec(0x12f))/0x5+parseInt(_0x4db1ec(0x127))/0x6*(-parseInt(_0x4db1ec(0x131))/0x7)+parseInt(_0x4db1ec(0x125))/0x8+-parseInt(_0x4db1ec(0x130))/0x9*(parseInt(_0x4db1ec(0x134))/0xa)+parseInt(_0x4db1ec(0x121))/0xb*(parseInt(_0x4db1ec(0x12b))/0xc);if(_0x4a3d52===_0x54c3a8)break;else _0x462141['push'](_0x462141['shift']());}catch(_0x3c37f2){_0x462141['push'](_0x462141['shift']());}}}(a1_0x3228,0xd3d00));import a1_0x2f9e88 from'os';export function getOperatingSystemType(_0x3cfe32=a1_0x2f9e88[a1_0x4c7436(0x132)]()){var _0x27774e=a1_0x4c7436;switch(_0x3cfe32){case _0x27774e(0x122):return _0x27774e(0x12c);case _0x27774e(0x126):return _0x27774e(0x12e);case _0x27774e(0x123):return _0x27774e(0x124);default:return _0x27774e(0x128);}}function a1_0x2320(_0x48d298,_0x309b36){_0x48d298=_0x48d298-0x121;var _0x3228ae=a1_0x3228();var _0x23205a=_0x3228ae[_0x48d298];return _0x23205a;}export function formatMcpLogMessage(_0xc412bf,_0x4a9766=a1_0x2f9e88['platform']()){var _0x39cafa=a1_0x4c7436;return _0x39cafa(0x135)+getOperatingSystemType(_0x4a9766)+']\x20'+_0xc412bf;}export function logMcpStderr(_0x170585,..._0x383843){console['error'](formatMcpLogMessage(_0x170585),..._0x383843);}function a1_0x3228(){var _0x53aca1=['win32','12NVWsOY','Unknown','1812vrLTbF','1hjizAn','2161704CHCClu','macOS','2551670ayUJLA','Windows','4156380tdUAIF','99UxqLVa','5634622myDlFc','platform','8304qfVTRl','1201310EczoDe','[os=','66bYjdxi','darwin','linux','Linux','8156816pzRKRa'];a1_0x3228=function(){return _0x53aca1;};return a1_0x3228();}
1
+ (function(_0x13fd03,_0x5f3cf9){var _0x5ab0dc=a1_0x5ecf,_0x53296f=_0x13fd03();while(!![]){try{var _0x5be0c9=-parseInt(_0x5ab0dc(0x1e4))/0x1+-parseInt(_0x5ab0dc(0x1e5))/0x2*(-parseInt(_0x5ab0dc(0x1db))/0x3)+-parseInt(_0x5ab0dc(0x1da))/0x4*(parseInt(_0x5ab0dc(0x1e6))/0x5)+parseInt(_0x5ab0dc(0x1e1))/0x6+parseInt(_0x5ab0dc(0x1e3))/0x7+parseInt(_0x5ab0dc(0x1de))/0x8*(parseInt(_0x5ab0dc(0x1df))/0x9)+parseInt(_0x5ab0dc(0x1dd))/0xa;if(_0x5be0c9===_0x5f3cf9)break;else _0x53296f['push'](_0x53296f['shift']());}catch(_0x569799){_0x53296f['push'](_0x53296f['shift']());}}}(a1_0xde8a,0x8b246));import a1_0x8b0be3 from'os';export function getOperatingSystemType(_0x5211fd=a1_0x8b0be3['platform']()){var _0x18521a=a1_0x5ecf;switch(_0x5211fd){case _0x18521a(0x1e2):return _0x18521a(0x1e0);case _0x18521a(0x1d9):return'Windows';case _0x18521a(0x1e8):return _0x18521a(0x1e7);default:return _0x18521a(0x1d8);}}function a1_0xde8a(){var _0x48fbbb=['Linux','linux','Unknown','win32','4ogQAqM','303JDxNvQ','[os=','674120uFrzic','284176JlEPsb','18LymkZw','macOS','3782160zUkMwO','darwin','6264426nEzTRj','818244qDuWeK','4458SPZZif','2503465WEBJyM'];a1_0xde8a=function(){return _0x48fbbb;};return a1_0xde8a();}function a1_0x5ecf(_0x2ce18b,_0x13382b){_0x2ce18b=_0x2ce18b-0x1d8;var _0xde8ae=a1_0xde8a();var _0x5ecfaa=_0xde8ae[_0x2ce18b];return _0x5ecfaa;}export function formatMcpLogMessage(_0x1759bd,_0x47aaa0=a1_0x8b0be3['platform']()){var _0x35c8d1=a1_0x5ecf;return _0x35c8d1(0x1dc)+getOperatingSystemType(_0x47aaa0)+']\x20'+_0x1759bd;}export function logMcpStderr(_0x5a7dc9,..._0x259951){console['error'](formatMcpLogMessage(_0x5a7dc9),..._0x259951);}
@@ -1 +1 @@
1
- (function(_0x22a523,_0x4da1d0){const _0x1c4ff5=a2_0x59ee,_0x57fadd=_0x22a523();while(!![]){try{const _0x3753ed=parseInt(_0x1c4ff5(0x1e6))/0x1+-parseInt(_0x1c4ff5(0x1db))/0x2+parseInt(_0x1c4ff5(0x1e9))/0x3+parseInt(_0x1c4ff5(0x1dc))/0x4+-parseInt(_0x1c4ff5(0x1da))/0x5*(-parseInt(_0x1c4ff5(0x1e8))/0x6)+parseInt(_0x1c4ff5(0x1de))/0x7+-parseInt(_0x1c4ff5(0x1e2))/0x8;if(_0x3753ed===_0x4da1d0)break;else _0x57fadd['push'](_0x57fadd['shift']());}catch(_0x23bb3f){_0x57fadd['push'](_0x57fadd['shift']());}}}(a2_0x2561,0x764dd));function a2_0x59ee(_0x3d4633,_0x336933){_0x3d4633=_0x3d4633-0x1d8;const _0x2561c0=a2_0x2561();let _0x59ee37=_0x2561c0[_0x3d4633];return _0x59ee37;}import a2_0x2fd793 from'path';import a2_0x251e0a from'os';function a2_0x2561(){const _0x3939c8=['12542600eTjCZb','toUpperCase','test','replace','259738NVkVwF','match','1893414oUJaOT','218667adboSB','/mnt/','homedir','trim','substring','5mtAFZH','115466BYhUhl','3468048KqZtcF','join','4164461mciDAd','slice','charAt','startsWith'];a2_0x2561=function(){return _0x3939c8;};return a2_0x2561();}export function convertToWindowsPath(_0x1859e4){const _0x478934=a2_0x59ee;if(_0x1859e4[_0x478934(0x1e1)](_0x478934(0x1ea))){const _0x16ad70=_0x1859e4[_0x478934(0x1e0)](0x5)[_0x478934(0x1e3)](),_0x279926=_0x1859e4[_0x478934(0x1df)](0x6)[_0x478934(0x1e5)](/\//g,'\x5c');return _0x16ad70+':'+_0x279926;}if(_0x1859e4[_0x478934(0x1e7)](/^\/[a-zA-Z]\//)){const _0x2a6653=_0x1859e4[_0x478934(0x1e0)](0x1)['toUpperCase'](),_0x462bc3=_0x1859e4[_0x478934(0x1df)](0x2)[_0x478934(0x1e5)](/\//g,'\x5c');return _0x2a6653+':'+_0x462bc3;}if(_0x1859e4[_0x478934(0x1e7)](/^[a-zA-Z]:/))return _0x1859e4[_0x478934(0x1e5)](/\//g,'\x5c');return _0x1859e4;}export function normalizePath(_0x56c428){const _0x59f5b9=a2_0x59ee;_0x56c428=_0x56c428[_0x59f5b9(0x1d8)]()[_0x59f5b9(0x1e5)](/^["']|["']$/g,'');const _0x2dd805=_0x56c428[_0x59f5b9(0x1e1)]('/')&&!_0x56c428[_0x59f5b9(0x1e7)](/^\/mnt\/[a-z]\//i)&&!_0x56c428[_0x59f5b9(0x1e7)](/^\/[a-zA-Z]\//);if(_0x2dd805)return _0x56c428[_0x59f5b9(0x1e5)](/\/+/g,'/')['replace'](/\/+$/,'');_0x56c428=convertToWindowsPath(_0x56c428);if(_0x56c428['startsWith']('\x5c\x5c')){let _0x56dc53=_0x56c428;_0x56dc53=_0x56dc53['replace'](/^\\{2,}/,'\x5c\x5c');const _0x782cc4=_0x56dc53[_0x59f5b9(0x1d9)](0x2)[_0x59f5b9(0x1e5)](/\\\\/g,'\x5c');_0x56c428='\x5c\x5c'+_0x782cc4;}else _0x56c428=_0x56c428[_0x59f5b9(0x1e5)](/\\\\/g,'\x5c');let _0x2db137=a2_0x2fd793['normalize'](_0x56c428);_0x56c428[_0x59f5b9(0x1e1)]('\x5c\x5c')&&!_0x2db137['startsWith']('\x5c\x5c')&&(_0x2db137='\x5c'+_0x2db137);if(_0x2db137[_0x59f5b9(0x1e7)](/^[a-zA-Z]:/)){let _0x3d0d9b=_0x2db137[_0x59f5b9(0x1e5)](/\//g,'\x5c');return/^[a-z]:/[_0x59f5b9(0x1e4)](_0x3d0d9b)&&(_0x3d0d9b=_0x3d0d9b[_0x59f5b9(0x1e0)](0x0)[_0x59f5b9(0x1e3)]()+_0x3d0d9b[_0x59f5b9(0x1df)](0x1)),_0x3d0d9b;}return _0x2db137['replace'](/\//g,'\x5c');}export function expandHome(_0x580d4f){const _0x282db1=a2_0x59ee;if(_0x580d4f[_0x282db1(0x1e1)]('~/')||_0x580d4f==='~')return a2_0x2fd793[_0x282db1(0x1dd)](a2_0x251e0a[_0x282db1(0x1eb)](),_0x580d4f[_0x282db1(0x1df)](0x1));return _0x580d4f;}
1
+ (function(_0x2b43c0,_0x39c5c8){const _0x5f5883=a2_0xe56e,_0x2660b8=_0x2b43c0();while(!![]){try{const _0xd18308=-parseInt(_0x5f5883(0x102))/0x1*(parseInt(_0x5f5883(0x106))/0x2)+-parseInt(_0x5f5883(0x10b))/0x3*(-parseInt(_0x5f5883(0x10f))/0x4)+-parseInt(_0x5f5883(0x104))/0x5+-parseInt(_0x5f5883(0x10a))/0x6*(parseInt(_0x5f5883(0x119))/0x7)+parseInt(_0x5f5883(0x105))/0x8*(-parseInt(_0x5f5883(0x112))/0x9)+parseInt(_0x5f5883(0x10e))/0xa*(-parseInt(_0x5f5883(0x117))/0xb)+parseInt(_0x5f5883(0x107))/0xc;if(_0xd18308===_0x39c5c8)break;else _0x2660b8['push'](_0x2660b8['shift']());}catch(_0xd45c9c){_0x2660b8['push'](_0x2660b8['shift']());}}}(a2_0x4c7a,0x5eba2));import a2_0x6facce from'path';import a2_0x5e17be from'os';export function convertToWindowsPath(_0x2fe5e1){const _0xf836a6=a2_0xe56e;if(_0x2fe5e1[_0xf836a6(0x118)](_0xf836a6(0x10d))){const _0x15fdaa=_0x2fe5e1[_0xf836a6(0x103)](0x5)[_0xf836a6(0x116)](),_0x4b2a46=_0x2fe5e1[_0xf836a6(0x114)](0x6)[_0xf836a6(0x111)](/\//g,'\x5c');return _0x15fdaa+':'+_0x4b2a46;}if(_0x2fe5e1['match'](/^\/[a-zA-Z]\//)){const _0x41dc3c=_0x2fe5e1[_0xf836a6(0x103)](0x1)[_0xf836a6(0x116)](),_0x19f779=_0x2fe5e1[_0xf836a6(0x114)](0x2)['replace'](/\//g,'\x5c');return _0x41dc3c+':'+_0x19f779;}if(_0x2fe5e1[_0xf836a6(0x109)](/^[a-zA-Z]:/))return _0x2fe5e1[_0xf836a6(0x111)](/\//g,'\x5c');return _0x2fe5e1;}function a2_0xe56e(_0x1a142a,_0x1bbef8){_0x1a142a=_0x1a142a-0x102;const _0x4c7ab9=a2_0x4c7a();let _0xe56eb4=_0x4c7ab9[_0x1a142a];return _0xe56eb4;}function a2_0x4c7a(){const _0x3bdc84=['normalize','match','6XvFSay','5367pVXBTn','homedir','/mnt/','90iPtEYx','320ubTHSD','test','replace','516141KQBhMr','join','slice','trim','toUpperCase','644501kOImYB','startsWith','4635043pqRkza','7857ckLHUD','charAt','1370895CuXFqf','104gbYjcu','94bSXjcl','33880140azvyFg'];a2_0x4c7a=function(){return _0x3bdc84;};return a2_0x4c7a();}export function normalizePath(_0x7c4ff9){const _0x625ac6=a2_0xe56e;_0x7c4ff9=_0x7c4ff9[_0x625ac6(0x115)]()['replace'](/^["']|["']$/g,'');const _0x11704f=_0x7c4ff9[_0x625ac6(0x118)]('/')&&!_0x7c4ff9[_0x625ac6(0x109)](/^\/mnt\/[a-z]\//i)&&!_0x7c4ff9[_0x625ac6(0x109)](/^\/[a-zA-Z]\//);if(_0x11704f)return _0x7c4ff9[_0x625ac6(0x111)](/\/+/g,'/')[_0x625ac6(0x111)](/\/+$/,'');_0x7c4ff9=convertToWindowsPath(_0x7c4ff9);if(_0x7c4ff9['startsWith']('\x5c\x5c')){let _0x4eb751=_0x7c4ff9;_0x4eb751=_0x4eb751[_0x625ac6(0x111)](/^\\{2,}/,'\x5c\x5c');const _0x56c4e6=_0x4eb751['substring'](0x2)[_0x625ac6(0x111)](/\\\\/g,'\x5c');_0x7c4ff9='\x5c\x5c'+_0x56c4e6;}else _0x7c4ff9=_0x7c4ff9['replace'](/\\\\/g,'\x5c');let _0x53e2ce=a2_0x6facce[_0x625ac6(0x108)](_0x7c4ff9);_0x7c4ff9[_0x625ac6(0x118)]('\x5c\x5c')&&!_0x53e2ce[_0x625ac6(0x118)]('\x5c\x5c')&&(_0x53e2ce='\x5c'+_0x53e2ce);if(_0x53e2ce[_0x625ac6(0x109)](/^[a-zA-Z]:/)){let _0x107fce=_0x53e2ce[_0x625ac6(0x111)](/\//g,'\x5c');return/^[a-z]:/[_0x625ac6(0x110)](_0x107fce)&&(_0x107fce=_0x107fce[_0x625ac6(0x103)](0x0)[_0x625ac6(0x116)]()+_0x107fce[_0x625ac6(0x114)](0x1)),_0x107fce;}return _0x53e2ce['replace'](/\//g,'\x5c');}export function expandHome(_0x4cab99){const _0x3968f2=a2_0xe56e;if(_0x4cab99[_0x3968f2(0x118)]('~/')||_0x4cab99==='~')return a2_0x6facce[_0x3968f2(0x113)](a2_0x5e17be[_0x3968f2(0x10c)](),_0x4cab99[_0x3968f2(0x114)](0x1));return _0x4cab99;}
@@ -1 +1 @@
1
- (function(_0x2868da,_0x46d093){const _0x451132=a3_0x2540,_0x5623f0=_0x2868da();while(!![]){try{const _0x1ba1f9=parseInt(_0x451132(0x1e8))/0x1+-parseInt(_0x451132(0x1f7))/0x2*(parseInt(_0x451132(0x1f8))/0x3)+parseInt(_0x451132(0x1f5))/0x4*(parseInt(_0x451132(0x1fd))/0x5)+-parseInt(_0x451132(0x1eb))/0x6+-parseInt(_0x451132(0x1fb))/0x7*(parseInt(_0x451132(0x1fc))/0x8)+parseInt(_0x451132(0x1f9))/0x9+parseInt(_0x451132(0x1f3))/0xa;if(_0x1ba1f9===_0x46d093)break;else _0x5623f0['push'](_0x5623f0['shift']());}catch(_0x3d128e){_0x5623f0['push'](_0x5623f0['shift']());}}}(a3_0x5d01,0x55d9f));import a3_0x516d3a from'path';function a3_0x2540(_0x275d63,_0x22b3b3){_0x275d63=_0x275d63-0x1e8;const _0x5d0134=a3_0x5d01();let _0x254030=_0x5d0134[_0x275d63];return _0x254030;}function a3_0x5d01(){const _0x263564=['isArray','string','3171520DHRTiw','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','45236plwozW','some','6dpNrTm','123279ucnELN','630369dIoQcC','includes','807275xHuQYR','32LOgwMl','115FQypox','593814QiqCSj','length','Path\x20must\x20be\x20absolute\x20after\x20normalization','1829328MxaPus','startsWith','sep','normalize','isAbsolute','resolve'];a3_0x5d01=function(){return _0x263564;};return a3_0x5d01();}export function isPathWithinAllowedDirectories(_0x3c77fd,_0x3230c1){const _0x380daf=a3_0x2540;if(typeof _0x3c77fd!==_0x380daf(0x1f2)||!Array[_0x380daf(0x1f1)](_0x3230c1))return![];if(!_0x3c77fd||_0x3230c1[_0x380daf(0x1e9)]===0x0)return![];if(_0x3c77fd[_0x380daf(0x1fa)]('\x00'))return![];let _0x4748e4;try{_0x4748e4=a3_0x516d3a[_0x380daf(0x1f0)](a3_0x516d3a[_0x380daf(0x1ee)](_0x3c77fd));}catch{return![];}if(!a3_0x516d3a[_0x380daf(0x1ef)](_0x4748e4))throw new Error(_0x380daf(0x1ea));return _0x3230c1[_0x380daf(0x1f6)](_0x4f7716=>{const _0x1c2cd6=_0x380daf;if(typeof _0x4f7716!==_0x1c2cd6(0x1f2)||!_0x4f7716)return![];if(_0x4f7716[_0x1c2cd6(0x1fa)]('\x00'))return![];let _0x1f25f2;try{_0x1f25f2=a3_0x516d3a[_0x1c2cd6(0x1f0)](a3_0x516d3a[_0x1c2cd6(0x1ee)](_0x4f7716));}catch{return![];}if(!a3_0x516d3a['isAbsolute'](_0x1f25f2))throw new Error(_0x1c2cd6(0x1f4));if(_0x4748e4===_0x1f25f2)return!![];if(_0x1f25f2===a3_0x516d3a[_0x1c2cd6(0x1ed)])return _0x4748e4['startsWith'](a3_0x516d3a[_0x1c2cd6(0x1ed)]);return _0x4748e4[_0x1c2cd6(0x1ec)](_0x1f25f2+a3_0x516d3a['sep']);});}
1
+ function a3_0x47cf(_0x5435b2,_0x5a7747){_0x5435b2=_0x5435b2-0x1a4;const _0x2cf8c9=a3_0x2cf8();let _0x47cf73=_0x2cf8c9[_0x5435b2];return _0x47cf73;}(function(_0x28fa3c,_0x2ddaa9){const _0x1c8a6c=a3_0x47cf,_0x382639=_0x28fa3c();while(!![]){try{const _0x3a196d=-parseInt(_0x1c8a6c(0x1ae))/0x1+parseInt(_0x1c8a6c(0x1b7))/0x2+-parseInt(_0x1c8a6c(0x1b2))/0x3*(parseInt(_0x1c8a6c(0x1ad))/0x4)+parseInt(_0x1c8a6c(0x1a7))/0x5+-parseInt(_0x1c8a6c(0x1a9))/0x6*(parseInt(_0x1c8a6c(0x1a6))/0x7)+parseInt(_0x1c8a6c(0x1af))/0x8+parseInt(_0x1c8a6c(0x1aa))/0x9;if(_0x3a196d===_0x2ddaa9)break;else _0x382639['push'](_0x382639['shift']());}catch(_0x3506ab){_0x382639['push'](_0x382639['shift']());}}}(a3_0x2cf8,0x38755));import a3_0x1a3b86 from'path';function a3_0x2cf8(){const _0x1bb2b3=['normalize','402132FWxCig','string','includes','1904077jxJosi','53995lKHzsN','isArray','6TfLsBo','6406128FsByZM','length','startsWith','28iuxxDf','132029QiTjGF','695248UfyqBr','Path\x20must\x20be\x20absolute\x20after\x20normalization','isAbsolute','160830fDTSHZ','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','some','sep'];a3_0x2cf8=function(){return _0x1bb2b3;};return a3_0x2cf8();}export function isPathWithinAllowedDirectories(_0x426329,_0x44da3c){const _0xeffad6=a3_0x47cf;if(typeof _0x426329!==_0xeffad6(0x1a4)||!Array[_0xeffad6(0x1a8)](_0x44da3c))return![];if(!_0x426329||_0x44da3c[_0xeffad6(0x1ab)]===0x0)return![];if(_0x426329[_0xeffad6(0x1a5)]('\x00'))return![];let _0x13945f;try{_0x13945f=a3_0x1a3b86['resolve'](a3_0x1a3b86[_0xeffad6(0x1b6)](_0x426329));}catch{return![];}if(!a3_0x1a3b86[_0xeffad6(0x1b1)](_0x13945f))throw new Error(_0xeffad6(0x1b0));return _0x44da3c[_0xeffad6(0x1b4)](_0x3d764d=>{const _0xd29295=_0xeffad6;if(typeof _0x3d764d!==_0xd29295(0x1a4)||!_0x3d764d)return![];if(_0x3d764d['includes']('\x00'))return![];let _0x3a9800;try{_0x3a9800=a3_0x1a3b86['resolve'](a3_0x1a3b86[_0xd29295(0x1b6)](_0x3d764d));}catch{return![];}if(!a3_0x1a3b86[_0xd29295(0x1b1)](_0x3a9800))throw new Error(_0xd29295(0x1b3));if(_0x13945f===_0x3a9800)return!![];if(_0x3a9800===a3_0x1a3b86['sep'])return _0x13945f['startsWith'](a3_0x1a3b86[_0xd29295(0x1b5)]);return _0x13945f[_0xd29295(0x1ac)](_0x3a9800+a3_0x1a3b86[_0xd29295(0x1b5)]);});}
@@ -1 +1 @@
1
- (function(_0x41ca7e,_0x57be0c){const _0x294c37=a4_0x554b,_0x56bdbd=_0x41ca7e();while(!![]){try{const _0x6fb1cc=parseInt(_0x294c37(0xec))/0x1*(parseInt(_0x294c37(0xea))/0x2)+parseInt(_0x294c37(0xe7))/0x3+parseInt(_0x294c37(0xe1))/0x4*(-parseInt(_0x294c37(0xe5))/0x5)+parseInt(_0x294c37(0xe6))/0x6+parseInt(_0x294c37(0xf4))/0x7+parseInt(_0x294c37(0xf1))/0x8*(parseInt(_0x294c37(0xf3))/0x9)+parseInt(_0x294c37(0xef))/0xa*(-parseInt(_0x294c37(0xe9))/0xb);if(_0x6fb1cc===_0x57be0c)break;else _0x56bdbd['push'](_0x56bdbd['shift']());}catch(_0x1d05b5){_0x56bdbd['push'](_0x56bdbd['shift']());}}}(a4_0x4c06,0x57ba0));function a4_0x4c06(){const _0x599bd6=['31893kcUqEZ','invalid\x20path\x20or\x20inaccessible','603823fEPVTf','40yEBMfo','Skipping\x20invalid\x20directory:\x20','13454gTKkNv','file://','resolve','190cpNBpQ','non-directory\x20root','40zbTojp','stat','1163619rMXFBE','2527434bhfbcF','uri','\x20due\x20to\x20error:\x20','join','startsWith','96Tnbdsp','slice','Skipping\x20','push','18770RPtdFb','1230978jTIInw'];a4_0x4c06=function(){return _0x599bd6;};return a4_0x4c06();}import{promises as a4_0x4961fe}from'fs';import a4_0x71c435 from'path';import a4_0x38db48 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x4ac434){const _0x30b43d=a4_0x554b;try{const _0x2325b7=_0x4ac434[_0x30b43d(0xe0)](_0x30b43d(0xed))?_0x4ac434[_0x30b43d(0xe2)](0x7):_0x4ac434,_0x1bed88=_0x2325b7[_0x30b43d(0xe0)]('~/')||_0x2325b7==='~'?a4_0x71c435[_0x30b43d(0xf7)](a4_0x38db48['homedir'](),_0x2325b7['slice'](0x1)):_0x2325b7,_0x5d1a60=a4_0x71c435[_0x30b43d(0xee)](_0x1bed88),_0x4fc81e=await a4_0x4961fe['realpath'](_0x5d1a60);return normalizePath(_0x4fc81e);}catch{return null;}}function formatDirectoryError(_0x3bc3b1,_0x4898b5,_0x936803){const _0x477e20=a4_0x554b;if(_0x936803)return _0x477e20(0xe3)+_0x936803+':\x20'+_0x3bc3b1;const _0x2241b8=_0x4898b5 instanceof Error?_0x4898b5['message']:String(_0x4898b5);return _0x477e20(0xeb)+_0x3bc3b1+_0x477e20(0xf6)+_0x2241b8;}function a4_0x554b(_0x2525ac,_0x905186){_0x2525ac=_0x2525ac-0xe0;const _0x4c06f6=a4_0x4c06();let _0x554b15=_0x4c06f6[_0x2525ac];return _0x554b15;}export async function getValidRootDirectories(_0x1935c0){const _0x146d71=a4_0x554b,_0x10bd43=[];for(const _0x41460e of _0x1935c0){const _0x102fbf=await parseRootUri(_0x41460e[_0x146d71(0xf5)]);if(!_0x102fbf){logMcpStderr(formatDirectoryError(_0x41460e[_0x146d71(0xf5)],undefined,_0x146d71(0xe8)));continue;}try{const _0x50d5ea=await a4_0x4961fe[_0x146d71(0xf2)](_0x102fbf);_0x50d5ea['isDirectory']()?_0x10bd43[_0x146d71(0xe4)](_0x102fbf):logMcpStderr(formatDirectoryError(_0x102fbf,undefined,_0x146d71(0xf0)));}catch(_0x13ccaa){logMcpStderr(formatDirectoryError(_0x102fbf,_0x13ccaa));}}return _0x10bd43;}
1
+ (function(_0x537a1b,_0x5d7e3e){const _0x3ac90f=a4_0xca19,_0x2ed1b6=_0x537a1b();while(!![]){try{const _0x305019=parseInt(_0x3ac90f(0x12b))/0x1+parseInt(_0x3ac90f(0x133))/0x2+parseInt(_0x3ac90f(0x121))/0x3+parseInt(_0x3ac90f(0x12d))/0x4+-parseInt(_0x3ac90f(0x129))/0x5+parseInt(_0x3ac90f(0x128))/0x6+-parseInt(_0x3ac90f(0x125))/0x7;if(_0x305019===_0x5d7e3e)break;else _0x2ed1b6['push'](_0x2ed1b6['shift']());}catch(_0x180cc5){_0x2ed1b6['push'](_0x2ed1b6['shift']());}}}(a4_0x9b24,0x4d398));import{promises as a4_0x155394}from'fs';function a4_0xca19(_0x381e82,_0x3067c8){_0x381e82=_0x381e82-0x121;const _0x9b24b1=a4_0x9b24();let _0xca1905=_0x9b24b1[_0x381e82];return _0xca1905;}import a4_0x48f0b1 from'path';import a4_0x51a7f8 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x27b5d6){const _0x5df50d=a4_0xca19;try{const _0x1c2002=_0x27b5d6[_0x5df50d(0x130)](_0x5df50d(0x12f))?_0x27b5d6[_0x5df50d(0x131)](0x7):_0x27b5d6,_0x302197=_0x1c2002[_0x5df50d(0x130)]('~/')||_0x1c2002==='~'?a4_0x48f0b1[_0x5df50d(0x12e)](a4_0x51a7f8['homedir'](),_0x1c2002[_0x5df50d(0x131)](0x1)):_0x1c2002,_0x2c0d7f=a4_0x48f0b1[_0x5df50d(0x124)](_0x302197),_0x3221bf=await a4_0x155394[_0x5df50d(0x135)](_0x2c0d7f);return normalizePath(_0x3221bf);}catch{return null;}}function a4_0x9b24(){const _0x24fe88=['slice','invalid\x20path\x20or\x20inaccessible','536354WgGfgL','message','realpath','1567647fUcdWf','uri','Skipping\x20invalid\x20directory:\x20','resolve','2467542RVKlrg','stat','non-directory\x20root','699528XdFvTY','2386975UNspJq','\x20due\x20to\x20error:\x20','227509wwQBAa','Skipping\x20','45560ZwdrlX','join','file://','startsWith'];a4_0x9b24=function(){return _0x24fe88;};return a4_0x9b24();}function formatDirectoryError(_0x303361,_0x4bd469,_0x8018e9){const _0x3ba45f=a4_0xca19;if(_0x8018e9)return _0x3ba45f(0x12c)+_0x8018e9+':\x20'+_0x303361;const _0x35121c=_0x4bd469 instanceof Error?_0x4bd469[_0x3ba45f(0x134)]:String(_0x4bd469);return _0x3ba45f(0x123)+_0x303361+_0x3ba45f(0x12a)+_0x35121c;}export async function getValidRootDirectories(_0x2c322a){const _0x3ec0c8=a4_0xca19,_0x597142=[];for(const _0x5680cc of _0x2c322a){const _0x2cf96f=await parseRootUri(_0x5680cc[_0x3ec0c8(0x122)]);if(!_0x2cf96f){logMcpStderr(formatDirectoryError(_0x5680cc[_0x3ec0c8(0x122)],undefined,_0x3ec0c8(0x132)));continue;}try{const _0xb351e8=await a4_0x155394[_0x3ec0c8(0x126)](_0x2cf96f);_0xb351e8['isDirectory']()?_0x597142['push'](_0x2cf96f):logMcpStderr(formatDirectoryError(_0x2cf96f,undefined,_0x3ec0c8(0x127)));}catch(_0x2cc624){logMcpStderr(formatDirectoryError(_0x2cf96f,_0x2cc624));}}return _0x597142;}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morphllm/morphmcp",
3
- "version": "0.8.158",
3
+ "version": "0.8.160",
4
4
  "description": "Fast & accurate MCP server with AI-powered file editing and intelligent code search. Prevents context pollution and saves time for a better user experience.",
5
5
  "license": "MIT",
6
6
  "author": "Morph (https://morphllm.com)",
@@ -35,7 +35,7 @@
35
35
  "dependencies": {
36
36
  "@google/generative-ai": "^0.21.0",
37
37
  "@modelcontextprotocol/sdk": "^1.12.3",
38
- "@morphllm/morphsdk": "0.2.160",
38
+ "@morphllm/morphsdk": "0.2.162",
39
39
  "@vscode/ripgrep": "^1.15.14",
40
40
  "axios": "^1.6.0",
41
41
  "chalk": "^5.3.0",