@morphllm/morphmcp 0.8.155 → 0.8.156
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 +1 -1
- package/dist/log-utils.js +1 -1
- package/dist/path-utils.js +1 -1
- package/dist/path-validation.js +1 -1
- package/dist/roots-utils.js +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const a0_0x6a1d90=a0_0x510c;(function(_0x78ebf1,_0x2933ff){const _0x1f5056=a0_0x510c,_0x1e9bd9=_0x78ebf1();while(!![]){try{const _0xf00c43=parseInt(_0x1f5056(0x142))/0x1*(-parseInt(_0x1f5056(0x172))/0x2)+-parseInt(_0x1f5056(0x13a))/0x3+parseInt(_0x1f5056(0x154))/0x4+-parseInt(_0x1f5056(0x190))/0x5+parseInt(_0x1f5056(0x155))/0x6*(-parseInt(_0x1f5056(0x91))/0x7)+parseInt(_0x1f5056(0x99))/0x8*(parseInt(_0x1f5056(0x133))/0x9)+parseInt(_0x1f5056(0x16e))/0xa;if(_0xf00c43===_0x2933ff)break;else _0x1e9bd9['push'](_0x1e9bd9['shift']());}catch(_0x224215){_0x1e9bd9['push'](_0x1e9bd9['shift']());}}}(a0_0x118d,0x5f2e7));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_0xfa1d17 from'fs/promises';import a0_0xf80882 from'path';import a0_0x183998 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';function a0_0x510c(_0x4f9f60,_0x4e7000){_0x4f9f60=_0x4f9f60-0x8a;const _0x118d7c=a0_0x118d();let _0x510cc3=_0x118d7c[_0x4f9f60];return _0x510cc3;}import{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0x186284 from'axios';function fixPathRepetition(_0x3210da){const _0x2b7f02=a0_0x510c,_0x144cae=_0x3210da[_0x2b7f02(0x147)](a0_0xf80882['sep'])['filter'](Boolean);if(_0x144cae[_0x2b7f02(0x116)]<0x2)return null;for(let _0x2abba9=Math[_0x2b7f02(0xd8)](_0x144cae['length']/0x2);_0x2abba9>=0x1;_0x2abba9--){for(let _0x599706=0x0;_0x599706<=_0x144cae[_0x2b7f02(0x116)]-0x2*_0x2abba9;_0x599706++){const _0x44a838=_0x144cae[_0x2b7f02(0x12a)](_0x599706,_0x599706+_0x2abba9),_0x3b3f5e=_0x144cae[_0x2b7f02(0x12a)](_0x599706+_0x2abba9,_0x599706+0x2*_0x2abba9);if(_0x44a838['every']((_0x2ffde8,_0x1d4412)=>_0x2ffde8===_0x3b3f5e[_0x1d4412])){const _0x1dc45c=[..._0x144cae['slice'](0x0,_0x599706),..._0x144cae[_0x2b7f02(0x12a)](_0x599706+_0x2abba9)];return a0_0xf80882[_0x2b7f02(0xe4)]+_0x1dc45c[_0x2b7f02(0x16d)](a0_0xf80882[_0x2b7f02(0xe4)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x1a7578=a0_0x510c;try{const _0x5d75ab=require(_0x1a7578(0x18e));return _0x5d75ab[_0x1a7578(0x12b)]??_0x1a7578(0x137);}catch(_0xf1a60e){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0xf1a60e),_0x1a7578(0x137);}}function printHelp(){const _0x5ac528=a0_0x510c;console[_0x5ac528(0x14f)]('@morphllm/morphmcp\x20'+getPackageVersion()),console['log']('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0x5ac528(0x14f)](_0x5ac528(0x106)),console[_0x5ac528(0x14f)]('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console['log']('\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit'),console[_0x5ac528(0x14f)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console['log'](_0x5ac528(0x146)),console[_0x5ac528(0x14f)]('\x20\x20morph-mcp'),console[_0x5ac528(0x14f)](_0x5ac528(0x149));}const cliArgs=process[a0_0x6a1d90(0xfa)][a0_0x6a1d90(0x12a)](0x2),VERSION_FLAGS=new Set([a0_0x6a1d90(0x13d),'-v','-V']),HELP_FLAGS=new Set([a0_0x6a1d90(0xe2),'-h']);cliArgs[a0_0x6a1d90(0x165)](_0x38613b=>VERSION_FLAGS[a0_0x6a1d90(0x1a6)](_0x38613b))&&(console['log'](a0_0x6a1d90(0x188)+getPackageVersion()),process[a0_0x6a1d90(0x18c)](0x0));cliArgs[a0_0x6a1d90(0x165)](_0x407b55=>HELP_FLAGS['has'](_0x407b55))&&(printHelp(),process[a0_0x6a1d90(0x18c)](0x0));function getCliArg(_0xf610f9){const _0x3a8da9=a0_0x6a1d90;for(let _0x5642f3=0x0;_0x5642f3<cliArgs[_0x3a8da9(0x116)];_0x5642f3++){const _0x43ebe3=cliArgs[_0x5642f3];if(_0x43ebe3[_0x3a8da9(0x122)]('--'+_0xf610f9+'='))return _0x43ebe3[_0x3a8da9(0x12a)](('--'+_0xf610f9+'=')[_0x3a8da9(0x116)]);if(_0x43ebe3==='--'+_0xf610f9&&_0x5642f3+0x1<cliArgs[_0x3a8da9(0x116)])return cliArgs[_0x5642f3+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x6a1d90(0x116)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x6a1d90(0x1a6)](arg)||HELP_FLAGS[a0_0x6a1d90(0x1a6)](arg))continue;if(arg[a0_0x6a1d90(0x122)]('--api-key='))continue;if(arg===a0_0x6a1d90(0xe3)){i++;continue;}args[a0_0x6a1d90(0x170)](arg);}const WORKSPACE_ROOT=process[a0_0x6a1d90(0xc4)][a0_0x6a1d90(0x121)]||process[a0_0x6a1d90(0xc4)][a0_0x6a1d90(0xec)]||process[a0_0x6a1d90(0xee)](),ENABLE_WORKSPACE_MODE=process[a0_0x6a1d90(0xc4)][a0_0x6a1d90(0x13e)]!=='false',MORPH_API_KEY=getCliArg(a0_0x6a1d90(0x14a))??process['env'][a0_0x6a1d90(0x11a)],MORPH_API_URL=process['env'][a0_0x6a1d90(0xba)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x6a1d90(0xc4)][a0_0x6a1d90(0xb1)]?parseInt(process[a0_0x6a1d90(0xc4)][a0_0x6a1d90(0xb1)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x6a1d90(0xe0),'codebase_search',a0_0x6a1d90(0x139)]),DISABLED_TOOLS=process[a0_0x6a1d90(0xc4)][a0_0x6a1d90(0x177)]?new Set(process[a0_0x6a1d90(0xc4)][a0_0x6a1d90(0x177)]['split'](',')[a0_0x6a1d90(0x157)](_0x151389=>_0x151389[a0_0x6a1d90(0x179)]())[a0_0x6a1d90(0xbf)](_0x3dc206=>_0x3dc206[a0_0x6a1d90(0x116)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0x6a1d90(0xc6)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES['has'](tool)&&console[a0_0x6a1d90(0xf2)](a0_0x6a1d90(0x183)+tool+'\x22.\x20Known\x20tools:\x20'+[...KNOWN_TOOL_NAMES][a0_0x6a1d90(0x16d)](',\x20'));}console[a0_0x6a1d90(0xf2)](a0_0x6a1d90(0x13f)+[...DISABLED_TOOLS]['join'](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x6a1d90(0x122)]('sk-')&&!MORPH_API_KEY[a0_0x6a1d90(0x122)]('morph-')&&logMcpStderr(a0_0x6a1d90(0xfe));async function reportMorphError(_0x645140){const _0x1bb282=a0_0x6a1d90;try{await a0_0x186284['post'](_0x1bb282(0x19a),{..._0x645140,'timestamp':new Date()[_0x1bb282(0x184)](),'source':_0x645140['source']||_0x1bb282(0x119),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x645140['context']}},{'timeout':0x1388,'headers':{'Content-Type':_0x1bb282(0x176),'Authorization':'Bearer\x20'+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x273334,_0x5a96ac){const _0x624a12=a0_0x6a1d90;if(_0x273334&&typeof _0x273334===_0x624a12(0x102)&&_0x624a12(0x1aa)in _0x273334)return _0x273334[_0x624a12(0x1aa)];if(_0x273334&&typeof _0x273334===_0x624a12(0x102)&&_0x624a12(0xdd)in _0x273334)return _0x273334[_0x624a12(0xdd)]?.[_0x624a12(0x1aa)];const _0xcda2ec=_0x5a96ac[_0x624a12(0x160)](/\b(401|429)\b/);return _0xcda2ec?parseInt(_0xcda2ec[0x1],0xa):null;}function handleMorphAPIError(_0x311101){const _0x25145d=a0_0x6a1d90,_0x3be6d4=_0x311101 instanceof Error?_0x311101[_0x25145d(0xbe)]:String(_0x311101),_0x3f9795=extractStatusCode(_0x311101,_0x3be6d4);switch(_0x3f9795){case 0x191:return{'content':[{'type':_0x25145d(0x163),'text':_0x25145d(0x9c)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x25145d(0x163),'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_0x6a1d90(0x116)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x6a1d90(0x167)),logMcpStderr(a0_0x6a1d90(0x1a2)),logMcpStderr(a0_0x6a1d90(0x189)),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr(a0_0x6a1d90(0xf8)),logMcpStderr(a0_0x6a1d90(0x1a0)));function normalizePath(_0x4597ba){return a0_0xf80882['normalize'](_0x4597ba);}function a0_0x118d(){const _0x1214ef=['Fatal\x20error\x20running\x20server:','`\x20in\x20`','source','stack','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','slice','version','indexOf','Unknown\x20error','warn','read','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','isArray','branch','1246149JtwqwT','utf-8','morph-warp-grep-v2.1','Max\x20results\x20to\x20return','unknown','all','github_codebase_search','401610EqNZWE','TimeoutError','\x20as\x20allowed\x20directory','--version','ENABLE_WORKSPACE_MODE','Disabled\x20tools:\x20','success','Fallback:\x20Using\x20workspace\x20root\x20','159NOSiZu','catch','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','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','\x0aExamples:','split','toLowerCase','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','api-key','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.','description','Tool\x20','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','log','ms.\x20Success:\x20','Specific\x20commit\x20hash\x20to\x20search','WarpGrepError','includes','963604LmEHJA','6odRitk','ENOENT','map','function','substring','stringify','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','ReadError','[github_codebase_search]\x20Failed\x20in\x20','readFile','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','match','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','Cargo.toml','text','completed','some','morph-','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','isDirectory','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','setNotificationHandler','RipgrepError','[github_codebase_search]\x20Done\x20in\x20','join','12378920UOxaqo','FileNotFound','push','code_edit','3048dyXgAY','number','\x20error(s)','morph-v3-fast','application/json','DISABLED_TOOLS','[github_codebase_search]\x20Searching\x20','trim','files','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.','GitHub\x20search\x20failed:\x20','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','pyproject.toml','string','stat','.git','terminated','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','toISOString','terminationReason','PathError','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','@morphllm/morphmcp\x20','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','errors','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','exit','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','../package.json','github_url','1599835rTzRuI','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','parse','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','ToolException','runWarpGrep_call','File\x20read\x20error:','realpath','\x20disabled\x20via\x20DISABLED_TOOLS','package.json','https://morphllm.com/api/error-report','Warning:\x20','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','[codebase_search]\x20compaction\x20failed','\x27\x20in\x20`','boolean','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','\x22>\x0a','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','Morph\x20Edit\x20','has','[could\x20not\x20read\x20file:\x20','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','status','connect','timeout','constructor','Tool\x20\x22','Invalid\x20arguments:\x20','setRequestHandler','❌\x20Morph\x20Edit\x20Failed:\x20','3718666SlEsDi','Relevant\x20context\x20found:','morph-mcp',',\x20removed\x20','.\x20Changes:\x20','homedir','searchGitHub','\x20is\x20not\x20a\x20directory','8heBBCU','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','added\x20','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.','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','roots','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','\x22>\x0aError\x20reading\x20file:\x20','dirname','listRoots','payload','Morph\x20FastApply\x20failed\x20without\x20error\x20message','Error:\x20','assistant','grep_search','requiresApiKey','Repository\x20identifier','Preview\x20changes\x20without\x20applying\x20them.','repo_path','<file\x20path=\x22','command','describe','Error\x20accessing\x20directory\x20','now','MORPH_WARP_GREP_TIMEOUT','SymlinkError','composer.json','Error\x20running\x20fast\x20context\x20search:\x20','-\x20Read\x20file\x20`','UnknownError','pattern','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','finish','MORPH_API_URL','linesRemoved','\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable','node_modules','message','filter','codebase_search','-\x20Grepped\x20\x27','params','RipgrepNotAvailable','env','role','size','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','ms:','linesAdded','grep','metadata','data','tool_calls','enum','list_directory','search_type','search_string','read\x20','dryRun','\x20for:\x20\x22','Created\x20File','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','Failed\x20to\x20request\x20roots\x20from\x20client:','floor','go.mod','WarpGrep\x20sub-tool\x20errors:\x20','glob\x20\x27','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','response','code','inputSchema','edit_file','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','--help','--api-key','sep','Applied','path','default','tool_call_id','.vscode','Unknown\x20tool:\x20','content','PWD','.cursor','cwd','timed\x20out','lines','glob','error','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','messages','For\x20deletions:\x0a','safeParse','min','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','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.','argv','basename','unknown\x20error','Parent\x20directory\x20does\x20not\x20exist:\x20','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','FileReadError','Workspace\x20mode\x20enabled:\x20Using\x20','instructions','object','arguments','changes','completionId','\x0aOptions:','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','Warning:\x20Workspace\x20fallback\x20failed:\x20','Benefits:\x0a','timings','\x0a</file>','sk-','name',',\x20modified\x20','instruction','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.','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','optional','resolve','length','BinaryFile','0.2.0','mcp-filesystem','MORPH_API_KEY','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','linesModified','.\x20Path:\x20','\x20valid\x20directories','array','etimedout','WORKSPACE_ROOT','startsWith','\x20chars)','owner_repo'];a0_0x118d=function(){return _0x1214ef;};return a0_0x118d();}function expandHome(_0x2b9364){const _0xd4f890=a0_0x6a1d90;if(_0x2b9364['startsWith']('~/')||_0x2b9364==='~')return a0_0xf80882['join'](a0_0x183998[_0xd4f890(0x96)](),_0x2b9364[_0xd4f890(0x12a)](0x1));return _0x2b9364;}let allowedDirectories=await Promise[a0_0x6a1d90(0x138)](args['map'](async _0x3e0dfb=>{const _0x5681f1=a0_0x6a1d90,_0x307059=expandHome(_0x3e0dfb),_0x365e4f=a0_0xf80882[_0x5681f1(0x115)](_0x307059);try{const _0x20d9e8=await a0_0xfa1d17[_0x5681f1(0x197)](_0x365e4f);return normalizePath(_0x20d9e8);}catch(_0x58c225){return normalizePath(_0x365e4f);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x6a1d90(0x116)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x6a1d90(0x170)](workspaceDir),logMcpStderr(a0_0x6a1d90(0x100)+workspaceDir+a0_0x6a1d90(0x13c)));}catch(a0_0x178045){logMcpStderr(a0_0x6a1d90(0x193)+a0_0x178045);}async function detectWorkspaceRoot(_0x58d9f8){const _0x24a3bd=a0_0x6a1d90;let _0x395258=a0_0xf80882['resolve'](_0x58d9f8);const _0x5c2afc=[_0x24a3bd(0x181),_0x24a3bd(0xe9),_0x24a3bd(0x199),_0x24a3bd(0x162),_0x24a3bd(0x17e),_0x24a3bd(0xd9),_0x24a3bd(0xed),'tsconfig.json',_0x24a3bd(0xb3)];while(_0x395258!==a0_0xf80882[_0x24a3bd(0xa1)](_0x395258)){for(const _0x39fdd6 of _0x5c2afc){const _0x31f7c3=a0_0xf80882[_0x24a3bd(0x16d)](_0x395258,_0x39fdd6);try{return await a0_0xfa1d17['access'](_0x31f7c3),normalizePath(_0x395258);}catch{}}_0x395258=a0_0xf80882['dirname'](_0x395258);}return normalizePath(_0x58d9f8);}await Promise['all'](args[a0_0x6a1d90(0x157)](async _0x46fa9b=>{const _0x46e2cb=a0_0x6a1d90;try{const _0x1fc90f=await a0_0xfa1d17[_0x46e2cb(0x180)](expandHome(_0x46fa9b));!_0x1fc90f[_0x46e2cb(0x168)]()&&(logMcpStderr(_0x46e2cb(0xa5)+_0x46fa9b+_0x46e2cb(0x98)),process[_0x46e2cb(0x18c)](0x1));}catch(_0x471909){logMcpStderr(_0x46e2cb(0xaf)+_0x46fa9b+':',_0x471909),process[_0x46e2cb(0x18c)](0x1);}}));async function validatePath(_0x2f7f77){const _0x28a3f7=a0_0x6a1d90,_0xb8d55e=expandHome(_0x2f7f77),_0x28887b=a0_0xf80882['resolve'](_0xb8d55e);try{const _0x46d122=await a0_0xfa1d17[_0x28a3f7(0x197)](_0x28887b);return _0x46d122;}catch(_0x29d1c0){if(_0x29d1c0[_0x28a3f7(0xde)]===_0x28a3f7(0x156)){const _0x22e949=a0_0xf80882[_0x28a3f7(0xa1)](_0x28887b);try{const _0x148d94=await a0_0xfa1d17[_0x28a3f7(0x197)](_0x22e949);return a0_0xf80882[_0x28a3f7(0x16d)](_0x148d94,a0_0xf80882[_0x28a3f7(0xfb)](_0x28887b));}catch{throw new Error(_0x28a3f7(0xfd)+_0x22e949);}}throw _0x29d1c0;}}const MorphEditFileArgsSchema=z[a0_0x6a1d90(0x102)]({'path':z[a0_0x6a1d90(0x17f)](),'code_edit':z[a0_0x6a1d90(0x17f)]()[a0_0x6a1d90(0xae)](a0_0x6a1d90(0x129)),'instruction':z[a0_0x6a1d90(0x17f)]()[a0_0x6a1d90(0xae)](a0_0x6a1d90(0x187)),'dryRun':z[a0_0x6a1d90(0x19f)]()[a0_0x6a1d90(0xe7)](![])[a0_0x6a1d90(0xae)](a0_0x6a1d90(0xaa))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x6a1d90(0x17b),WarpGrepArgsSchema=z[a0_0x6a1d90(0x102)]({'search_string':z['string']()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x6a1d90(0x17f)]()[a0_0x6a1d90(0xae)](a0_0x6a1d90(0x144)),'search_type':z[a0_0x6a1d90(0xce)]([a0_0x6a1d90(0xe7),a0_0x6a1d90(0xbd)])['optional']()[a0_0x6a1d90(0xae)](a0_0x6a1d90(0xb8))}),WarpGrepGitHubArgsSchema=z[a0_0x6a1d90(0x102)]({'search_string':z[a0_0x6a1d90(0x17f)]()[a0_0x6a1d90(0xae)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x6a1d90(0x17f)]()['optional']()['describe'](a0_0x6a1d90(0xf9)),'owner_repo':z[a0_0x6a1d90(0x17f)]()[a0_0x6a1d90(0x114)]()['describe'](a0_0x6a1d90(0x161)),'branch':z['string']()[a0_0x6a1d90(0x114)]()[a0_0x6a1d90(0xae)](a0_0x6a1d90(0x9f))}),CodebaseSearchArgsSchema=z[a0_0x6a1d90(0x102)]({'query':z[a0_0x6a1d90(0x17f)]()[a0_0x6a1d90(0xae)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z['string']()['describe'](a0_0x6a1d90(0xa9)),'branch':z[a0_0x6a1d90(0x17f)]()[a0_0x6a1d90(0x114)]()[a0_0x6a1d90(0xae)]('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x6a1d90(0x17f)]()['optional']()['describe'](a0_0x6a1d90(0x151)),'targetDirectories':z[a0_0x6a1d90(0x11f)](z[a0_0x6a1d90(0x17f)]())[a0_0x6a1d90(0xe7)]([])[a0_0x6a1d90(0xae)](a0_0x6a1d90(0x18b)),'limit':z[a0_0x6a1d90(0x173)]()[a0_0x6a1d90(0x114)]()[a0_0x6a1d90(0xe7)](0xa)[a0_0x6a1d90(0xae)](a0_0x6a1d90(0x136))}),server=new Server({'name':a0_0x6a1d90(0x93),'version':a0_0x6a1d90(0x118)},{'capabilities':{'tools':{}}});server[a0_0x6a1d90(0x8f)](ListToolsRequestSchema,async()=>{const _0xf5c857=a0_0x6a1d90,_0x10ac1c=[{'name':_0xf5c857(0xe0),'description':_0xf5c857(0x169)+'⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a'+_0xf5c857(0x1a8)+_0xf5c857(0xc7)+_0xf5c857(0x109)+_0xf5c857(0x14e)+_0xf5c857(0x19c)+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+_0xf5c857(0x9a)+_0xf5c857(0x130)+_0xf5c857(0x1a3)+_0xf5c857(0x107)+_0xf5c857(0xf5)+'-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a'+_0xf5c857(0x1a9)+'Rules:\x0a'+'-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a'+'-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a'+_0xf5c857(0x113)+_0xf5c857(0x1a4)+_0xf5c857(0xdc)+_0xf5c857(0x17d)+'IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0xf5c857(0xc0),'description':'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'+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'+_0xf5c857(0x9d)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x2ed784=_0x10ac1c[_0xf5c857(0xbf)](_0x36bb66=>{const _0x2c1b0b=_0xf5c857;if(DISABLED_TOOLS['has'](_0x36bb66['name']))return console[_0x2c1b0b(0xf2)](_0x2c1b0b(0x14d)+_0x36bb66[_0x2c1b0b(0x10d)]+_0x2c1b0b(0x198)),![];if(_0x2c1b0b(0xa8)in _0x36bb66&&_0x36bb66[_0x2c1b0b(0xa8)]&&!MORPH_API_KEY)return logMcpStderr(_0x2c1b0b(0x19b)+_0x36bb66[_0x2c1b0b(0x10d)]+_0x2c1b0b(0x145)),![];return!![];});return{'tools':_0x2ed784[_0xf5c857(0x157)](_0x2ea795=>({'name':_0x2ea795[_0xf5c857(0x10d)],'description':_0x2ea795[_0xf5c857(0x14c)],'inputSchema':_0x2ea795[_0xf5c857(0xdf)]}))};}),server[a0_0x6a1d90(0x8f)](CallToolRequestSchema,async _0x29562c=>{const _0x3ced32=a0_0x6a1d90,{name:_0x3c070f,arguments:_0x4b75f2}=_0x29562c[_0x3ced32(0xc2)];try{if(!MORPH_API_KEY)return{'content':[{'type':'text','text':_0x3ced32(0x15f)}],'isError':!![]};if(!MORPH_API_KEY[_0x3ced32(0x122)](_0x3ced32(0x10c))&&!MORPH_API_KEY['startsWith'](_0x3ced32(0x166)))return{'content':[{'type':'text','text':_0x3ced32(0x14b)}],'isError':!![]};if(DISABLED_TOOLS[_0x3ced32(0x1a6)](_0x3c070f))throw new Error(_0x3ced32(0x8d)+_0x3c070f+_0x3ced32(0xbc));switch(_0x3c070f){case _0x3ced32(0xe0):{const _0x5ea977=_0x4b75f2&&typeof _0x4b75f2===_0x3ced32(0x102)&&_0x3ced32(0x101)in _0x4b75f2&&!('instruction'in _0x4b75f2)?{..._0x4b75f2,'instruction':_0x4b75f2[_0x3ced32(0x101)],'instructions':undefined}:_0x4b75f2,_0x11a759=MorphEditFileArgsSchema[_0x3ced32(0xf6)](_0x5ea977);if(!_0x11a759[_0x3ced32(0x140)])throw new Error(_0x3ced32(0x11b)+_0x11a759[_0x3ced32(0xf2)]);const _0x5c4d02=await validatePath(_0x11a759['data'][_0x3ced32(0xe6)]);let _0x4e0613=null,_0x26dd67=!![],_0x2b10c8=null;try{_0x4e0613=await a0_0xfa1d17[_0x3ced32(0x15e)](_0x5c4d02,_0x3ced32(0x134));}catch(_0x5b1cfc){const _0x39bc11=_0x5b1cfc[_0x3ced32(0xde)];_0x39bc11===_0x3ced32(0x156)?(_0x26dd67=![],_0x4e0613=''):(_0x2b10c8='Failed\x20to\x20read\x20file:\x20'+(_0x39bc11||'unknown')+'\x20-\x20'+(_0x5b1cfc instanceof Error?_0x5b1cfc[_0x3ced32(0xbe)]:String(_0x5b1cfc)),logMcpStderr(_0x3ced32(0x19b)+_0x2b10c8));}let _0x283f09;try{const _0x568ccb=MORPH_API_KEY;if(!_0x568ccb)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x352bff=a0_0xf80882['dirname'](_0x5c4d02),_0x2b8ef1=a0_0xf80882['basename'](_0x5c4d02),_0x577374=await executeEditFile({'target_filepath':_0x2b8ef1,'code_edit':_0x11a759['data'][_0x3ced32(0x171)],'instruction':_0x11a759[_0x3ced32(0xcc)][_0x3ced32(0x10f)]},{'morphApiKey':_0x568ccb,'morphApiUrl':MORPH_API_URL,'baseDir':_0x352bff,'autoWrite':!_0x11a759[_0x3ced32(0xcc)][_0x3ced32(0xd3)],'generateUdiff':![],'debug':![]});_0x283f09=_0x577374[_0x3ced32(0x105)];if(!_0x577374[_0x3ced32(0x140)])throw new Error(_0x577374[_0x3ced32(0xf2)]||_0x3ced32(0xa4));const _0x3b9b26=_0x577374[_0x3ced32(0x104)],_0x2f64cd=_0x3ced32(0x9b)+_0x3b9b26[_0x3ced32(0xc9)]+_0x3ced32(0x94)+_0x3b9b26[_0x3ced32(0xbb)]+_0x3ced32(0x10e)+_0x3b9b26[_0x3ced32(0x11c)];if(_0x11a759[_0x3ced32(0xcc)]['dryRun'])return{'content':[{'type':_0x3ced32(0x163),'text':'Morph\x20Edit\x20Preview'+(_0x26dd67?'':'\x20(new\x20file)')+':\x20'+_0x11a759['data'][_0x3ced32(0x10f)]+_0x3ced32(0x95)+_0x2f64cd+_0x3ced32(0x11d)+_0x11a759['data'][_0x3ced32(0xe6)]+'.'}]};return{'content':[{'type':'text','text':_0x3ced32(0x1a5)+(_0x26dd67?_0x3ced32(0xe5):_0x3ced32(0xd5))+':\x20'+_0x11a759[_0x3ced32(0xcc)][_0x3ced32(0x10f)]+'.\x20Changes:\x20'+_0x2f64cd+_0x3ced32(0x11d)+_0x11a759[_0x3ced32(0xcc)]['path']+'.'}]};}catch(_0x2b9bd7){const _0x517e17=handleMorphAPIError(_0x2b9bd7);if(_0x517e17)return _0x517e17;const _0x14e73e=_0x2b9bd7 instanceof Error?_0x2b9bd7['message']:String(_0x2b9bd7);return reportMorphError({'error_message':_0x14e73e,'error_type':_0x2b9bd7 instanceof Error?_0x2b9bd7[_0x3ced32(0x8c)][_0x3ced32(0x10d)]:_0x3ced32(0xb6),'context':{'tool':_0x3ced32(0xe0),'completion_id':_0x283f09,'file_path':_0x11a759[_0x3ced32(0xcc)][_0x3ced32(0xe6)],'validated_path':_0x5c4d02,'instruction':_0x11a759[_0x3ced32(0xcc)][_0x3ced32(0x10f)],'model':_0x3ced32(0x175),'dry_run':_0x11a759[_0x3ced32(0xcc)][_0x3ced32(0xd3)],'file_exists':_0x26dd67,'file_read_error':_0x2b10c8,'file_readable':_0x4e0613!==null,'request_content':{'path':_0x11a759['data'][_0x3ced32(0xe6)],'code_edit':_0x11a759[_0x3ced32(0xcc)][_0x3ced32(0x171)],'instruction':_0x11a759['data'][_0x3ced32(0x10f)],'original_code':_0x4e0613!==null?_0x4e0613[_0x3ced32(0x116)]>0xc350?_0x4e0613[_0x3ced32(0x159)](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x4e0613[_0x3ced32(0x116)]+_0x3ced32(0x123):_0x4e0613:_0x3ced32(0x1a7)+(_0x2b10c8||_0x3ced32(0xfc))+']','original_code_length':_0x4e0613?.[_0x3ced32(0x116)]??0x0,'model':'morph-v3-fast','dry_run':_0x11a759[_0x3ced32(0xcc)][_0x3ced32(0xd3)]}},'stack_trace':_0x2b9bd7 instanceof Error?_0x2b9bd7[_0x3ced32(0x128)]:undefined,'source':_0x3ced32(0x119)})[_0x3ced32(0x143)](()=>{}),{'content':[{'type':_0x3ced32(0x163),'text':_0x3ced32(0x90)+_0x14e73e}],'isError':!![]};}}case _0x3ced32(0xc0):{const _0x6a6635=WarpGrepArgsSchema['safeParse'](_0x4b75f2);if(!_0x6a6635[_0x3ced32(0x140)])return{'content':[{'type':'text','text':'Invalid\x20arguments:\x20'+_0x6a6635['error']}],'isError':!![]};const _0x48c7ee=_0x33998c=>{const _0x10f1ff=_0x3ced32,_0x26002a=[];for(const _0x4514b3 of _0x33998c||[]){if(_0x4514b3[_0x10f1ff(0xc5)]===_0x10f1ff(0xa6)&&Array[_0x10f1ff(0x131)](_0x4514b3['tool_calls']))for(const _0x10b4a7 of _0x4514b3[_0x10f1ff(0xcd)]){try{const _0x4a3f3d=_0x10b4a7['function']?.[_0x10f1ff(0x10d)],_0x18efc1=JSON['parse'](_0x10b4a7['function']?.[_0x10f1ff(0x103)]||'{}');if(_0x4a3f3d===_0x10f1ff(0xa7))_0x26002a['push']('grep\x20\x27'+_0x18efc1[_0x10f1ff(0xb7)]+'\x27\x20'+(_0x18efc1['path']||'.'));else{if(_0x4a3f3d==='read')_0x26002a['push'](_0x10f1ff(0xd2)+_0x18efc1['path']);else{if(_0x4a3f3d===_0x10f1ff(0xcf))_0x26002a[_0x10f1ff(0x170)]('list_directory\x20'+(_0x18efc1['command']||'.'));else{if(_0x4a3f3d==='glob')_0x26002a['push'](_0x10f1ff(0xdb)+_0x18efc1[_0x10f1ff(0xb7)]+'\x27\x20'+(_0x18efc1[_0x10f1ff(0xe6)]||'.'));else _0x4a3f3d===_0x10f1ff(0xb9)&&_0x26002a['push'](_0x10f1ff(0xb9));}}}}catch{}}}return _0x26002a;},_0x578a0f=_0xe826ab=>{const _0x1f34ba=_0x3ced32,_0x16a1db=[];if(!_0xe826ab||!Array[_0x1f34ba(0x131)](_0xe826ab))return _0x16a1db;const _0x3773ea=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x1f34ba(0x16f),'tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':_0x1f34ba(0x186),'tool':_0x1f34ba(0x12f)},{'pattern':/\[READ ERROR\]/,'error_type':_0x1f34ba(0x15c),'tool':_0x1f34ba(0x12f)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':'BinaryFile','tool':'read'},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x1f34ba(0x16b),'tool':_0x1f34ba(0xca)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x1f34ba(0xc3),'tool':'grep'},{'pattern':/\[BINARY FILE\]/,'error_type':_0x1f34ba(0x117),'tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':_0x1f34ba(0xb2),'tool':_0x1f34ba(0x12f)},{'pattern':/not a text file/,'error_type':_0x1f34ba(0x117),'tool':_0x1f34ba(0x12f)},{'pattern':/symbolic link/,'error_type':_0x1f34ba(0xb2),'tool':_0x1f34ba(0x12f)},{'pattern':/Error reading file:/,'error_type':_0x1f34ba(0x15c),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x1f34ba(0x194),'tool':_0x1f34ba(0x137)}];let _0x415f75=0x0;for(const _0x247cdc of _0xe826ab){_0x247cdc[_0x1f34ba(0xc5)]===_0x1f34ba(0xa6)&&Array['isArray'](_0x247cdc['tool_calls'])&&_0x415f75++;const _0x443640=_0x247cdc[_0x1f34ba(0xeb)];if((_0x247cdc[_0x1f34ba(0xc5)]==='tool'||_0x247cdc[_0x1f34ba(0xc5)]==='user')&&_0x443640&&typeof _0x443640===_0x1f34ba(0x17f))for(const {pattern:_0x2c6bb0,error_type:_0x42f601,tool:_0x44204f}of _0x3773ea){const _0x5a7800=_0x443640['match'](new RegExp(_0x2c6bb0[_0x1f34ba(0x127)],'g'));if(_0x5a7800)for(const _0x2b05ed of _0x5a7800){const _0x1cf14f=_0x443640[_0x1f34ba(0x12c)](_0x2b05ed),_0x1d054a=_0x443640[_0x1f34ba(0x159)](_0x1cf14f,Math[_0x1f34ba(0xf7)](_0x1cf14f+0xc8,_0x443640[_0x1f34ba(0x116)]));_0x16a1db['push']({'tool':_0x44204f,'error_type':_0x42f601,'error_message':_0x1d054a[_0x1f34ba(0x147)]('\x0a')[0x0],'turn':_0x415f75});}}}return _0x16a1db;};try{const _0x2725cf=a0_0xf80882['resolve'](_0x6a6635[_0x3ced32(0xcc)][_0x3ced32(0xab)]),_0x275229=_0x6a6635['data'][_0x3ced32(0xd0)],_0x24d3e1=_0x275229===_0x3ced32(0xbd)?{'allowNames':['node_modules']}:undefined,_0x894d43=new LocalRipgrepProvider(_0x2725cf,undefined,_0x24d3e1),_0x1e8483=await runWarpGrep({'searchTerm':_0x6a6635['data'][_0x3ced32(0xd1)],'repoRoot':_0x2725cf,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x894d43,'search_type':_0x275229}),_0x513f4b=_0x578a0f(_0x1e8483[_0x3ced32(0xf4)]);_0x513f4b['length']>0x0&&reportMorphError({'error_message':_0x3ced32(0xda)+_0x513f4b['length']+_0x3ced32(0x174),'error_type':'SubToolError','level':_0x3ced32(0x12e),'tool':_0x3ced32(0xc0),'context':{'repo_path':_0x6a6635[_0x3ced32(0xcc)][_0x3ced32(0xab)],'query':_0x6a6635[_0x3ced32(0xcc)]['search_string'],'model':'morph-warp-grep-v2.1','termination_reason':_0x1e8483[_0x3ced32(0x185)],'sub_tool_errors':_0x513f4b,'timings':_0x1e8483['timings'],'tool_calls':_0x48c7ee(_0x1e8483[_0x3ced32(0xf4)]),'messages':_0x1e8483[_0x3ced32(0xf4)]?.['map'](_0x262b01=>({'role':_0x262b01[_0x3ced32(0xc5)],'content':_0x262b01[_0x3ced32(0xeb)],..._0x262b01[_0x3ced32(0xcd)]?{'tool_calls':_0x262b01['tool_calls'][_0x3ced32(0x116)]}:{},..._0x262b01[_0x3ced32(0xe8)]?{'tool_call_id':_0x262b01['tool_call_id']}:{}}))},'source':'mcp-filesystem'})[_0x3ced32(0x143)](()=>{});let _0x315696='';if(_0x1e8483['terminationReason']===_0x3ced32(0x164)&&_0x1e8483[_0x3ced32(0xb9)]?.['metadata']?.[_0x3ced32(0x17a)]){const _0x274d43=_0x1e8483[_0x3ced32(0xb9)][_0x3ced32(0xcb)][_0x3ced32(0x17a)];if(_0x274d43[_0x3ced32(0x116)]===0x0)return _0x315696=_0x1e8483[_0x3ced32(0xb9)][_0x3ced32(0xa3)]||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x3ced32(0x163),'text':_0x315696}]};const _0x4d7179=[],_0x2b4e00=[_0x3ced32(0x191)];for(const _0x4e6612 of _0x1e8483[_0x3ced32(0xf4)]){if(_0x4e6612[_0x3ced32(0xc5)]==='assistant'&&Array[_0x3ced32(0x131)](_0x4e6612['tool_calls']))for(const _0x127822 of _0x4e6612[_0x3ced32(0xcd)]){try{const _0x28e1d2=_0x127822[_0x3ced32(0x158)]?.['name'],_0x50e38c=JSON[_0x3ced32(0x192)](_0x127822[_0x3ced32(0x158)]?.[_0x3ced32(0x103)]||'{}');if(_0x28e1d2==='grep_search')_0x2b4e00[_0x3ced32(0x170)](_0x3ced32(0xc1)+_0x50e38c[_0x3ced32(0xb7)]+_0x3ced32(0x19e)+(_0x50e38c[_0x3ced32(0xe6)]||'.')+'`');else{if(_0x28e1d2===_0x3ced32(0x12f))_0x2b4e00[_0x3ced32(0x170)](_0x3ced32(0xb5)+_0x50e38c[_0x3ced32(0xe6)]+'`');else{if(_0x28e1d2===_0x3ced32(0xcf))_0x2b4e00[_0x3ced32(0x170)]('-\x20Listed\x20directory\x20`'+(_0x50e38c[_0x3ced32(0xad)]||'.')+'`');else _0x28e1d2===_0x3ced32(0xf1)&&_0x2b4e00[_0x3ced32(0x170)]('-\x20Glob\x20search\x20`'+_0x50e38c[_0x3ced32(0xb7)]+_0x3ced32(0x126)+(_0x50e38c[_0x3ced32(0xe6)]||'.')+'`');}}}catch{}}}_0x4d7179[_0x3ced32(0x170)](_0x2b4e00['join']('\x0a'));const _0x43c167=['',_0x3ced32(0x92)];for(const _0x5c306d of _0x274d43){if(_0x5c306d[_0x3ced32(0xf0)]==='*')_0x43c167[_0x3ced32(0x170)]('-\x20'+_0x5c306d[_0x3ced32(0xe6)]+':*');else{if(Array[_0x3ced32(0x131)](_0x5c306d[_0x3ced32(0xf0)])){const _0x2ad441=_0x5c306d['lines'][_0x3ced32(0x157)](([_0xe9254d,_0x3592e8])=>{if(_0xe9254d===_0x3592e8)return''+_0xe9254d;return _0xe9254d+'-'+_0x3592e8;});_0x43c167[_0x3ced32(0x170)]('-\x20'+_0x5c306d[_0x3ced32(0xe6)]+':'+_0x2ad441[_0x3ced32(0x16d)](','));}else _0x43c167['push']('-\x20'+_0x5c306d[_0x3ced32(0xe6)]+':*');}}_0x43c167[_0x3ced32(0x170)](''),_0x4d7179[_0x3ced32(0x170)](_0x43c167['join']('\x0a')),_0x4d7179['push']('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x1f1085=[],_0x3d80f3=[];for(const _0x535d38 of _0x274d43){let _0x21fcf6=a0_0xf80882[_0x3ced32(0x115)](_0x6a6635['data'][_0x3ced32(0xab)],_0x535d38[_0x3ced32(0xe6)]),_0x2e3750=null,_0x5ca29c=null;try{_0x2e3750=await a0_0xfa1d17[_0x3ced32(0x15e)](_0x21fcf6,{'encoding':_0x3ced32(0x134)});}catch(_0x21cbe1){const _0x260e49=fixPathRepetition(_0x21fcf6);if(_0x260e49)try{_0x2e3750=await a0_0xfa1d17[_0x3ced32(0x15e)](_0x260e49,{'encoding':_0x3ced32(0x134)}),_0x21fcf6=_0x260e49;}catch{_0x5ca29c=_0x21cbe1 instanceof Error?_0x21cbe1:new Error(String(_0x21cbe1));}else _0x5ca29c=_0x21cbe1 instanceof Error?_0x21cbe1:new Error(String(_0x21cbe1));}if(_0x2e3750!==null){const _0x27a72a=_0x2e3750['split'](/\r?\n/),_0x382291=[];if(_0x535d38[_0x3ced32(0xf0)]==='*'||!Array[_0x3ced32(0x131)](_0x535d38[_0x3ced32(0xf0)]))for(let _0x1b1ca4=0x1;_0x1b1ca4<=_0x27a72a[_0x3ced32(0x116)];_0x1b1ca4++){const _0x2cf3d0=_0x27a72a[_0x1b1ca4-0x1];_0x382291[_0x3ced32(0x170)](_0x1b1ca4+'|\x20'+_0x2cf3d0);}else for(const [_0xb6f575,_0x49ea96]of _0x535d38['lines']){_0x382291['length']>0x0&&_0x382291[_0x3ced32(0x170)]('');for(let _0x29fb87=_0xb6f575;_0x29fb87<=_0x49ea96&&_0x29fb87<=_0x27a72a['length'];_0x29fb87++){const _0xb75eae=_0x27a72a[_0x29fb87-0x1];_0x382291[_0x3ced32(0x170)](_0x29fb87+'|\x20'+_0xb75eae);}}_0x3d80f3[_0x3ced32(0x170)]({'path':_0x535d38[_0x3ced32(0xe6)],'content':_0x382291[_0x3ced32(0x16d)]('\x0a')});}else _0x1f1085[_0x3ced32(0x170)](_0x3ced32(0xac)+_0x535d38['path']+_0x3ced32(0xa0)+(_0x5ca29c?.[_0x3ced32(0xbe)]||_0x3ced32(0x12d))+_0x3ced32(0x10b));}try{const _0x165566=await compactFileContexts(_0x3d80f3,_0x6a6635[_0x3ced32(0xcc)]['search_string'],MORPH_API_KEY,MORPH_API_URL);for(const _0x38c0a9 of _0x165566){_0x1f1085[_0x3ced32(0x170)](_0x3ced32(0xac)+_0x38c0a9[_0x3ced32(0xe6)]+_0x3ced32(0x1a1)+_0x38c0a9['content']+'\x0a</file>');}}catch(_0x4ec629){console[_0x3ced32(0xf2)](_0x3ced32(0x19d),_0x4ec629);for(const _0x9be840 of _0x3d80f3){_0x1f1085[_0x3ced32(0x170)]('<file\x20path=\x22'+_0x9be840[_0x3ced32(0xe6)]+_0x3ced32(0x1a1)+_0x9be840[_0x3ced32(0xeb)]+_0x3ced32(0x10b));}}_0x4d7179[_0x3ced32(0x170)](_0x1f1085['join']('\x0a\x0a')),_0x315696=_0x4d7179[_0x3ced32(0x16d)]('\x0a');const _0x1c7f8d=_0x1e8483[_0x3ced32(0x18a)]?.[_0x3ced32(0xbf)](_0x41aa43=>_0x41aa43[_0x3ced32(0xbe)]?.[_0x3ced32(0x122)](_0x3ced32(0x196)))||[];if(_0x1c7f8d['length']>0x0){const _0xba8e35=_0x1c7f8d['map'](_0x2cd890=>_0x2cd890['message'])[_0x3ced32(0x16d)](';\x20');reportMorphError({'error_message':_0xba8e35,'error_type':_0x3ced32(0xff),'context':{'tool':_0x3ced32(0xc0),'repo_path':_0x6a6635[_0x3ced32(0xcc)]['repo_path'],'query':_0x6a6635[_0x3ced32(0xcc)][_0x3ced32(0xd1)],'model':_0x3ced32(0x135),'termination_reason':'completed_with_file_errors','error_count':_0x1c7f8d[_0x3ced32(0x116)],'is_timeout':![],'timings':_0x1e8483[_0x3ced32(0x10a)],'files_attempted':_0x274d43[_0x3ced32(0x157)](_0x523506=>({'path':_0x523506[_0x3ced32(0xe6)],'lines':_0x523506[_0x3ced32(0xf0)]})),'tool_calls':_0x48c7ee(_0x1e8483[_0x3ced32(0xf4)]),'messages':_0x1e8483[_0x3ced32(0xf4)]?.[_0x3ced32(0x157)](_0x5880b0=>({'role':_0x5880b0[_0x3ced32(0xc5)],'content':_0x5880b0['content'],..._0x5880b0[_0x3ced32(0xcd)]?{'tool_calls':_0x5880b0[_0x3ced32(0xcd)][_0x3ced32(0x116)]}:{},..._0x5880b0[_0x3ced32(0xe8)]?{'tool_call_id':_0x5880b0['tool_call_id']}:{}})),'request_content':{'query':_0x6a6635['data']['search_string'],'repo_path':_0x6a6635[_0x3ced32(0xcc)]['repo_path'],'repoRoot':a0_0xf80882[_0x3ced32(0x115)](_0x6a6635['data'][_0x3ced32(0xab)]),'model':_0x3ced32(0x135)}},'source':_0x3ced32(0x119)})['catch'](()=>{});}}else{if(_0x1e8483[_0x3ced32(0x185)]===_0x3ced32(0x182)&&_0x1e8483['errors'][_0x3ced32(0x116)]>0x0){const _0x2c1769=_0x1e8483['errors'][_0x3ced32(0x157)](_0x59c3eb=>_0x59c3eb['message'])[_0x3ced32(0x16d)](';\x20');_0x315696='Error:\x20'+_0x2c1769;const _0xfb3aee=_0x2c1769[_0x3ced32(0x148)]()[_0x3ced32(0x153)]('timeout')||_0x2c1769[_0x3ced32(0x148)]()[_0x3ced32(0x153)](_0x3ced32(0xef))||_0x2c1769[_0x3ced32(0x148)]()[_0x3ced32(0x153)]('etimedout'),_0x584fe5=_0x1e8483[_0x3ced32(0xb9)]?.[_0x3ced32(0xcb)]?.[_0x3ced32(0x17a)],_0x15a493=_0x1e8483['errors'][0x0];reportMorphError({'error_message':_0x2c1769,'error_type':_0xfb3aee?_0x3ced32(0x13b):_0x15a493?.[_0x3ced32(0x8c)]?.[_0x3ced32(0x10d)]||_0x3ced32(0x152),'context':{'tool':_0x3ced32(0xc0),'repo_path':_0x6a6635[_0x3ced32(0xcc)][_0x3ced32(0xab)],'query':_0x6a6635[_0x3ced32(0xcc)][_0x3ced32(0xd1)],'model':_0x3ced32(0x135),'termination_reason':_0x1e8483['terminationReason'],'error_count':_0x1e8483['errors'][_0x3ced32(0x116)],'is_timeout':_0xfb3aee,'timings':_0x1e8483[_0x3ced32(0x10a)],'files_attempted':_0x584fe5?.[_0x3ced32(0x157)](_0x251ef0=>({'path':_0x251ef0[_0x3ced32(0xe6)],'lines':_0x251ef0[_0x3ced32(0xf0)]})),'tool_calls':_0x48c7ee(_0x1e8483[_0x3ced32(0xf4)]),'messages':_0x1e8483[_0x3ced32(0xf4)]?.[_0x3ced32(0x157)](_0x24fec2=>({'role':_0x24fec2['role'],'content':_0x24fec2['content'],..._0x24fec2[_0x3ced32(0xcd)]?{'tool_calls':_0x24fec2[_0x3ced32(0xcd)]['length']}:{},..._0x24fec2[_0x3ced32(0xe8)]?{'tool_call_id':_0x24fec2['tool_call_id']}:{}})),'request_content':{'query':_0x6a6635[_0x3ced32(0xcc)][_0x3ced32(0xd1)],'repo_path':_0x6a6635[_0x3ced32(0xcc)][_0x3ced32(0xab)],'repoRoot':a0_0xf80882[_0x3ced32(0x115)](_0x6a6635[_0x3ced32(0xcc)][_0x3ced32(0xab)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x15a493?.[_0x3ced32(0x128)]||undefined,'source':_0x3ced32(0x119)})[_0x3ced32(0x143)](()=>{});}else _0x315696=_0x3ced32(0x15b);}return{'content':[{'type':_0x3ced32(0x163),'text':_0x315696}]};}catch(_0x357f2e){const _0x4486c3=handleMorphAPIError(_0x357f2e);if(_0x4486c3)return _0x4486c3;const _0xfdad21=_0x357f2e instanceof Error?_0x357f2e[_0x3ced32(0xbe)]:String(_0x357f2e),_0x30bce6=_0xfdad21['toLowerCase']()[_0x3ced32(0x153)](_0x3ced32(0x8b))||_0xfdad21[_0x3ced32(0x148)]()[_0x3ced32(0x153)](_0x3ced32(0xef))||_0xfdad21[_0x3ced32(0x148)]()[_0x3ced32(0x153)](_0x3ced32(0x120))||_0x357f2e instanceof Error&&_0x357f2e[_0x3ced32(0x10d)]===_0x3ced32(0x13b);return reportMorphError({'error_message':_0xfdad21,'error_type':_0x30bce6?'TimeoutError':_0x357f2e instanceof Error?_0x357f2e[_0x3ced32(0x8c)][_0x3ced32(0x10d)]:_0x3ced32(0xb6),'context':{'tool':_0x3ced32(0xc0),'repo_path':_0x6a6635[_0x3ced32(0xcc)][_0x3ced32(0xab)],'query':_0x6a6635[_0x3ced32(0xcc)][_0x3ced32(0xd1)],'model':'morph-warp-grep-v2.1','is_timeout':_0x30bce6,'exception_phase':_0x3ced32(0x195),'request_content':{'query':_0x6a6635[_0x3ced32(0xcc)][_0x3ced32(0xd1)],'repo_path':_0x6a6635[_0x3ced32(0xcc)][_0x3ced32(0xab)],'repoRoot':a0_0xf80882[_0x3ced32(0x115)](_0x6a6635[_0x3ced32(0xcc)][_0x3ced32(0xab)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x357f2e instanceof Error?_0x357f2e[_0x3ced32(0x128)]:undefined,'source':_0x3ced32(0x119)})['catch'](()=>{}),{'content':[{'type':'text','text':_0x3ced32(0xb4)+_0xfdad21}],'isError':![]};}}case _0x3ced32(0x139):{const _0x118f5a=WarpGrepGitHubArgsSchema['safeParse'](_0x4b75f2);if(!_0x118f5a[_0x3ced32(0x140)])return{'content':[{'type':_0x3ced32(0x163),'text':_0x3ced32(0x8e)+_0x118f5a[_0x3ced32(0xf2)]}],'isError':!![]};const _0x2b4a8c=_0x118f5a[_0x3ced32(0xcc)][_0x3ced32(0x18f)]||_0x118f5a['data'][_0x3ced32(0x124)];if(!_0x2b4a8c)return{'content':[{'type':_0x3ced32(0x163),'text':_0x3ced32(0x112)}],'isError':!![]};const _0x5b1211=MORPH_API_KEY;if(!_0x5b1211)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x3a966e=Date['now']();logMcpStderr(_0x3ced32(0x178)+_0x2b4a8c+_0x3ced32(0xd4)+_0x118f5a[_0x3ced32(0xcc)][_0x3ced32(0xd1)]+'\x22');try{const _0x15ed17=new WarpGrepClient({'morphApiKey':_0x5b1211,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x15980d=await _0x15ed17[_0x3ced32(0x97)]({'searchTerm':_0x118f5a[_0x3ced32(0xcc)][_0x3ced32(0xd1)],'github':_0x2b4a8c,'branch':_0x118f5a[_0x3ced32(0xcc)][_0x3ced32(0x132)]}),_0x4195db=Date['now']()-_0x3a966e;logMcpStderr(_0x3ced32(0x16c)+_0x4195db+_0x3ced32(0x150)+_0x15980d[_0x3ced32(0x140)]);const _0x2972a8=formatResult(_0x15980d);return{'content':[{'type':_0x3ced32(0x163),'text':_0x2972a8}]};}catch(_0x8fd194){const _0x6b47fe=handleMorphAPIError(_0x8fd194);if(_0x6b47fe)return _0x6b47fe;const _0x5d1f20=Date[_0x3ced32(0xb0)]()-_0x3a966e,_0x2ceb9d=_0x8fd194 instanceof Error?_0x8fd194[_0x3ced32(0xbe)]:String(_0x8fd194);return logMcpStderr(_0x3ced32(0x15d)+_0x5d1f20+_0x3ced32(0xc8),_0x2ceb9d),reportMorphError({'error_message':_0x2ceb9d,'error_type':_0x8fd194 instanceof Error?_0x8fd194[_0x3ced32(0x8c)][_0x3ced32(0x10d)]:_0x3ced32(0xb6),'context':{'tool':_0x3ced32(0x139),'github_url':_0x2b4a8c,'search_string':_0x118f5a[_0x3ced32(0xcc)][_0x3ced32(0xd1)],'branch':_0x118f5a[_0x3ced32(0xcc)]['branch']},'stack_trace':_0x8fd194 instanceof Error?_0x8fd194[_0x3ced32(0x128)]:undefined,'source':_0x3ced32(0x119),'tool':_0x3ced32(0x139),'latency_ms':_0x5d1f20})[_0x3ced32(0x143)](()=>{}),{'content':[{'type':_0x3ced32(0x163),'text':_0x3ced32(0x17c)+_0x2ceb9d}],'isError':![]};}}default:throw new Error(_0x3ced32(0xea)+_0x3c070f);}}catch(_0x40ec1b){const _0x237d3e=_0x40ec1b instanceof Error?_0x40ec1b['message']:String(_0x40ec1b);return reportMorphError({'error_message':_0x237d3e,'error_type':_0x40ec1b instanceof Error?_0x40ec1b[_0x3ced32(0x8c)][_0x3ced32(0x10d)]:_0x3ced32(0xb6),'context':{'tool':_0x3c070f,'arguments':_0x4b75f2?JSON[_0x3ced32(0x15a)](_0x4b75f2)[_0x3ced32(0x159)](0x0,0x1f4):undefined,'mcp_server_version':_0x3ced32(0x118)},'stack_trace':_0x40ec1b instanceof Error?_0x40ec1b[_0x3ced32(0x128)]:undefined,'source':_0x3ced32(0x119)})['catch'](()=>{}),{'content':[{'type':_0x3ced32(0x163),'text':_0x3ced32(0xa5)+_0x237d3e}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x21991e){const _0x318bcd=a0_0x6a1d90,_0x709567=await getValidRootDirectories(_0x21991e);if(_0x709567[_0x318bcd(0x116)]>0x0)allowedDirectories=[..._0x709567],logMcpStderr(_0x318bcd(0x111)+_0x709567[_0x318bcd(0x116)]+_0x318bcd(0x11e));else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x3c1f2f=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x3c1f2f&&(allowedDirectories=[_0x3c1f2f],logMcpStderr(_0x318bcd(0x141)+_0x3c1f2f));}catch(_0xac0cbc){logMcpStderr(_0x318bcd(0x108)+_0xac0cbc);}}}server[a0_0x6a1d90(0x16a)](RootsListChangedNotificationSchema,async()=>{const _0x20a6f5=a0_0x6a1d90;try{const _0x51fe0f=await server[_0x20a6f5(0xa2)]();_0x51fe0f&&_0x20a6f5(0x9e)in _0x51fe0f&&await updateAllowedDirectoriesFromRoots(_0x51fe0f[_0x20a6f5(0x9e)]);}catch(_0x975f33){logMcpStderr(_0x20a6f5(0xd7),_0x975f33 instanceof Error?_0x975f33[_0x20a6f5(0xbe)]:String(_0x975f33));}}),server['oninitialized']=async()=>{const _0x467ec3=a0_0x6a1d90,_0x2ad80f=server['getClientCapabilities']();if(_0x2ad80f?.['roots'])try{const _0x1bfa0a=await server[_0x467ec3(0xa2)]();_0x1bfa0a&&_0x467ec3(0x9e)in _0x1bfa0a?await updateAllowedDirectoriesFromRoots(_0x1bfa0a['roots']):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x467aa9){logMcpStderr('Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:',_0x467aa9 instanceof Error?_0x467aa9[_0x467ec3(0xbe)]:String(_0x467aa9));}else{if(allowedDirectories[_0x467ec3(0x116)]>0x0)logMcpStderr(_0x467ec3(0xd6),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x467ec3(0x18d));else throw new Error(_0x467ec3(0x110));}}};async function runServer(){const _0x46a665=a0_0x6a1d90,_0xe9e671=new StdioServerTransport();await server[_0x46a665(0x8a)](_0xe9e671),logMcpStderr(_0x46a665(0xf3)),allowedDirectories['length']===0x0&&logMcpStderr(_0x46a665(0xe1));}runServer()[a0_0x6a1d90(0x143)](_0x1285cf=>{const _0x5d099d=a0_0x6a1d90;logMcpStderr(_0x5d099d(0x125),_0x1285cf),process[_0x5d099d(0x18c)](0x1);});
|
|
2
|
+
const a0_0xcc9db7=a0_0x3cea;(function(_0x57c828,_0x447205){const _0x39fe2b=a0_0x3cea,_0x2a5b71=_0x57c828();while(!![]){try{const _0x1978b7=-parseInt(_0x39fe2b(0x22c))/0x1+parseInt(_0x39fe2b(0x2ec))/0x2+parseInt(_0x39fe2b(0x243))/0x3+-parseInt(_0x39fe2b(0x2d3))/0x4*(parseInt(_0x39fe2b(0x2bc))/0x5)+parseInt(_0x39fe2b(0x2d5))/0x6*(parseInt(_0x39fe2b(0x25d))/0x7)+-parseInt(_0x39fe2b(0x2a0))/0x8+-parseInt(_0x39fe2b(0x26c))/0x9*(-parseInt(_0x39fe2b(0x1da))/0xa);if(_0x1978b7===_0x447205)break;else _0x2a5b71['push'](_0x2a5b71['shift']());}catch(_0x25cdad){_0x2a5b71['push'](_0x2a5b71['shift']());}}}(a0_0x43fc,0xd0980));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_0xcc5c7c from'fs/promises';import a0_0x40dc77 from'path';function a0_0x43fc(){const _0x42685b=['payload','Failed\x20to\x20read\x20file:\x20','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','-\x20Grepped\x20\x27','metadata','\x22.\x20Known\x20tools:\x20','WarpGrep\x20sub-tool\x20errors:\x20','startsWith','TimeoutError','Error\x20running\x20fast\x20context\x20search:\x20','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','searchGitHub','false','6744776VLqtRQ','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','\x22>\x0a','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','utf-8','path','describe','stat','\x22>\x0aError\x20reading\x20file:\x20','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','Unknown\x20tool:\x20','setRequestHandler','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','Applied','pattern','toLowerCase','runWarpGrep_call','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','Failed\x20to\x20request\x20roots\x20from\x20client:','MORPH_WARP_GREP_TIMEOUT','number','--help','timeout','owner_repo','<file\x20path=\x22','match','Fatal\x20error\x20running\x20server:','795eaHySg','GitHub\x20search\x20failed:\x20','FileReadError','Repository\x20identifier','mcp-filesystem','FileNotFound','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','stack','\x20valid\x20directories','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','glob\x20\x27','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','normalize','search_string','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','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.','completed','\x20-\x20','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','sk-','DISABLED_TOOLS','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','15648TgdNSl','repo_path','371526AMEMsA','stringify','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','filter','name','messages','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','optional','node_modules','timed\x20out','now','--api-key=','grep_search','ENOENT','context','constructor','github_codebase_search','Bearer\x20','code','\x20\x20morph-mcp','\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable','--api-key','886312LmYrkq','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','SubToolError',',\x20removed\x20','oninitialized','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','PathError','success','boolean','function','finish','api-key','every','getClientCapabilities','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','70bRbbtN','cwd','catch','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','Warning:\x20','tsconfig.json','[codebase_search]\x20compaction\x20failed','string','enum','tool_call_id','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.','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','dirname','size','\x20as\x20allowed\x20directory','edit_file','Cargo.toml','morph-mcp','Fallback:\x20Using\x20workspace\x20root\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.',',\x20modified\x20','composer.json','ENABLE_WORKSPACE_MODE','`\x20in\x20`','instruction','ms.\x20Success:\x20','errors','tool_calls','\x27\x20in\x20`','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','isDirectory','read\x20','has','Invalid\x20arguments:\x20','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','min','timings','map','access','For\x20deletions:\x0a','❌\x20Morph\x20Edit\x20Failed:\x20','indexOf','safeParse','assistant','source','unknown','--version','Benefits:\x0a','unknown\x20error','Preview\x20changes\x20without\x20applying\x20them.','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','terminated','readFile','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','\x20for:\x20\x22','version','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','text','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','ms:','tool','sep','Error\x20accessing\x20directory\x20','application/json','content','terminationReason','WORKSPACE_ROOT','Unknown\x20error','.\x20Path:\x20','list_directory','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','BinaryFile','user','basename','morph-','MORPH_API_KEY','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.','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','linesAdded','.\x20Changes:\x20','@morphllm/morphmcp\x20','916204rcQbdJ','morph-warp-grep-v2.1','warn','pyproject.toml','\x0a...\x20(truncated,\x20total:\x20','-\x20Listed\x20directory\x20`','object','roots','error','read','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','linesModified','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','Disabled\x20tools:\x20','[github_codebase_search]\x20Failed\x20in\x20','IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','trim','0.2.0','parse','params','join','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','595716rOpXzp','linesRemoved','go.mod','floor','\x20error(s)','command','env','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','Rules:\x0a','changes','\x20is\x20not\x20a\x20directory','added\x20','ReadError','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','data','argv','status','includes','PWD','push','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','https://morphllm.com/api/error-report','some','../package.json','substring','lines','63lILcnQ','[github_codebase_search]\x20Searching\x20','default','File\x20read\x20error:','length','resolve','slice','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','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.','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.','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','log','exit','MORPH_API_URL','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','2618604cqXZjc','listRoots','\x0a</file>','.cursor','\x20disabled\x20via\x20DISABLED_TOOLS','message','.git','glob','list_directory\x20','codebase_search','Created\x20File','isArray','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','split','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','description','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','role','[github_codebase_search]\x20Done\x20in\x20','requiresApiKey','response','instructions','arguments','SymlinkError','UnknownError','realpath','etimedout','-\x20Read\x20file\x20`','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','toISOString','Error:\x20','homedir','morph-v3-fast','Here\x20is\x20the\x20content\x20of\x20files:\x0a','grep','dryRun','[could\x20not\x20read\x20file:\x20','ToolException'];a0_0x43fc=function(){return _0x42685b;};return a0_0x43fc();}import a0_0x5a0768 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_0x4f84fa from'axios';function fixPathRepetition(_0x21e2c9){const _0x28d7a8=a0_0x3cea,_0x33003a=_0x21e2c9[_0x28d7a8(0x279)](a0_0x40dc77[_0x28d7a8(0x218)])[_0x28d7a8(0x2d8)](Boolean);if(_0x33003a[_0x28d7a8(0x261)]<0x2)return null;for(let _0x3e9247=Math[_0x28d7a8(0x246)](_0x33003a[_0x28d7a8(0x261)]/0x2);_0x3e9247>=0x1;_0x3e9247--){for(let _0x435fed=0x0;_0x435fed<=_0x33003a[_0x28d7a8(0x261)]-0x2*_0x3e9247;_0x435fed++){const _0x5084f4=_0x33003a[_0x28d7a8(0x263)](_0x435fed,_0x435fed+_0x3e9247),_0x50e3e5=_0x33003a[_0x28d7a8(0x263)](_0x435fed+_0x3e9247,_0x435fed+0x2*_0x3e9247);if(_0x5084f4[_0x28d7a8(0x2f9)]((_0x5f239a,_0x5f3b27)=>_0x5f239a===_0x50e3e5[_0x5f3b27])){const _0x2a64a2=[..._0x33003a[_0x28d7a8(0x263)](0x0,_0x435fed),..._0x33003a['slice'](_0x435fed+_0x3e9247)];return a0_0x40dc77[_0x28d7a8(0x218)]+_0x2a64a2[_0x28d7a8(0x241)](a0_0x40dc77[_0x28d7a8(0x218)]);}}}return null;}function a0_0x3cea(_0x1cb5c5,_0x57c1d5){_0x1cb5c5=_0x1cb5c5-0x1d8;const _0x43fc58=a0_0x43fc();let _0x3ceac3=_0x43fc58[_0x1cb5c5];return _0x3ceac3;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x5a9254=a0_0x3cea;try{const _0x1e2126=require(_0x5a9254(0x25a));return _0x1e2126[_0x5a9254(0x212)]??_0x5a9254(0x207);}catch(_0x4e6557){return logMcpStderr(_0x5a9254(0x20f),_0x4e6557),_0x5a9254(0x207);}}function printHelp(){const _0x2223a6=a0_0x3cea;console[_0x2223a6(0x268)]('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x2223a6(0x268)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console['log']('\x0aOptions:'),console['log'](_0x2223a6(0x1d9)),console['log'](_0x2223a6(0x23c)),console[_0x2223a6(0x268)](_0x2223a6(0x2ee)),console[_0x2223a6(0x268)]('\x0aExamples:'),console[_0x2223a6(0x268)](_0x2223a6(0x2e9)),console[_0x2223a6(0x268)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0xcc9db7(0x252)]['slice'](0x2),VERSION_FLAGS=new Set([a0_0xcc9db7(0x208),'-v','-V']),HELP_FLAGS=new Set([a0_0xcc9db7(0x2b6),'-h']);cliArgs[a0_0xcc9db7(0x259)](_0x24a3e1=>VERSION_FLAGS['has'](_0x24a3e1))&&(console['log'](a0_0xcc9db7(0x22b)+getPackageVersion()),process['exit'](0x0));cliArgs[a0_0xcc9db7(0x259)](_0x244caf=>HELP_FLAGS['has'](_0x244caf))&&(printHelp(),process[a0_0xcc9db7(0x269)](0x0));function getCliArg(_0x4a0438){const _0x22e87f=a0_0xcc9db7;for(let _0x22ff9b=0x0;_0x22ff9b<cliArgs[_0x22e87f(0x261)];_0x22ff9b++){const _0x12892d=cliArgs[_0x22ff9b];if(_0x12892d[_0x22e87f(0x29a)]('--'+_0x4a0438+'='))return _0x12892d[_0x22e87f(0x263)](('--'+_0x4a0438+'=')[_0x22e87f(0x261)]);if(_0x12892d==='--'+_0x4a0438&&_0x22ff9b+0x1<cliArgs[_0x22e87f(0x261)])return cliArgs[_0x22ff9b+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0xcc9db7(0x261)];i++){const arg=cliArgs[i];if(VERSION_FLAGS['has'](arg)||HELP_FLAGS[a0_0xcc9db7(0x1fa)](arg))continue;if(arg[a0_0xcc9db7(0x29a)](a0_0xcc9db7(0x2e1)))continue;if(arg===a0_0xcc9db7(0x2eb)){i++;continue;}args[a0_0xcc9db7(0x256)](arg);}const WORKSPACE_ROOT=process[a0_0xcc9db7(0x249)][a0_0xcc9db7(0x21d)]||process[a0_0xcc9db7(0x249)][a0_0xcc9db7(0x255)]||process[a0_0xcc9db7(0x1db)](),ENABLE_WORKSPACE_MODE=process[a0_0xcc9db7(0x249)][a0_0xcc9db7(0x1f0)]!==a0_0xcc9db7(0x29f),MORPH_API_KEY=getCliArg(a0_0xcc9db7(0x2f8))??process[a0_0xcc9db7(0x249)][a0_0xcc9db7(0x226)],MORPH_API_URL=process[a0_0xcc9db7(0x249)][a0_0xcc9db7(0x26a)],MORPH_WARP_GREP_TIMEOUT=process[a0_0xcc9db7(0x249)][a0_0xcc9db7(0x2b4)]?parseInt(process['env'][a0_0xcc9db7(0x2b4)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0xcc9db7(0x1e9),a0_0xcc9db7(0x275),a0_0xcc9db7(0x2e6)]),DISABLED_TOOLS=process[a0_0xcc9db7(0x249)][a0_0xcc9db7(0x2d1)]?new Set(process['env']['DISABLED_TOOLS'][a0_0xcc9db7(0x279)](',')[a0_0xcc9db7(0x1ff)](_0x538835=>_0x538835[a0_0xcc9db7(0x23d)]())[a0_0xcc9db7(0x2d8)](_0x3b8212=>_0x3b8212[a0_0xcc9db7(0x261)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0xcc9db7(0x1e7)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES['has'](tool)&&console[a0_0xcc9db7(0x234)]('Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22'+tool+a0_0xcc9db7(0x298)+[...KNOWN_TOOL_NAMES]['join'](',\x20'));}console[a0_0xcc9db7(0x234)](a0_0xcc9db7(0x239)+[...DISABLED_TOOLS][a0_0xcc9db7(0x241)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0xcc9db7(0x29a)](a0_0xcc9db7(0x2d0))&&!MORPH_API_KEY[a0_0xcc9db7(0x29a)](a0_0xcc9db7(0x225))&&logMcpStderr(a0_0xcc9db7(0x2ac));async function reportMorphError(_0x3a5ddc){const _0x43b6d9=a0_0xcc9db7;try{await a0_0x4f84fa['post'](_0x43b6d9(0x258),{..._0x3a5ddc,'timestamp':new Date()[_0x43b6d9(0x28a)](),'source':_0x3a5ddc[_0x43b6d9(0x206)]||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x3a5ddc[_0x43b6d9(0x2e4)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x43b6d9(0x21a),'Authorization':_0x43b6d9(0x2e7)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x3957e2,_0x4aefca){const _0x570e84=a0_0xcc9db7;if(_0x3957e2&&typeof _0x3957e2==='object'&&_0x570e84(0x253)in _0x3957e2)return _0x3957e2[_0x570e84(0x253)];if(_0x3957e2&&typeof _0x3957e2===_0x570e84(0x232)&&_0x570e84(0x281)in _0x3957e2)return _0x3957e2['response']?.[_0x570e84(0x253)];const _0x140c18=_0x4aefca[_0x570e84(0x2ba)](/\b(401|429)\b/);return _0x140c18?parseInt(_0x140c18[0x1],0xa):null;}function handleMorphAPIError(_0x2b6185){const _0x5847db=a0_0xcc9db7,_0x41951a=_0x2b6185 instanceof Error?_0x2b6185[_0x5847db(0x271)]:String(_0x2b6185),_0xf6b881=extractStatusCode(_0x2b6185,_0x41951a);switch(_0xf6b881){case 0x191:return{'content':[{'type':_0x5847db(0x214),'text':_0x5847db(0x265)}],'isError':!![]};case 0x1ad:return{'content':[{'type':'text','text':_0x5847db(0x2c7)}],'isError':!![]};default:return null;}}args[a0_0xcc9db7(0x261)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0xcc9db7(0x2dc)),logMcpStderr(a0_0xcc9db7(0x295)),logMcpStderr(a0_0xcc9db7(0x2cf)),logMcpStderr(a0_0xcc9db7(0x264)),logMcpStderr(a0_0xcc9db7(0x1fc)),logMcpStderr(a0_0xcc9db7(0x1d8)));function normalizePath(_0x5b84b7){const _0x55707b=a0_0xcc9db7;return a0_0x40dc77[_0x55707b(0x2c9)](_0x5b84b7);}function expandHome(_0x455405){const _0x13b435=a0_0xcc9db7;if(_0x455405[_0x13b435(0x29a)]('~/')||_0x455405==='~')return a0_0x40dc77[_0x13b435(0x241)](a0_0x5a0768[_0x13b435(0x28c)](),_0x455405['slice'](0x1));return _0x455405;}let allowedDirectories=await Promise['all'](args[a0_0xcc9db7(0x1ff)](async _0x485c34=>{const _0x1824eb=a0_0xcc9db7,_0x544a39=expandHome(_0x485c34),_0x187a93=a0_0x40dc77[_0x1824eb(0x262)](_0x544a39);try{const _0x31fdf7=await a0_0xcc5c7c[_0x1824eb(0x286)](_0x187a93);return normalizePath(_0x31fdf7);}catch(_0x44cab0){return normalizePath(_0x187a93);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0xcc9db7(0x261)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0xcc9db7(0x256)](workspaceDir),logMcpStderr('Workspace\x20mode\x20enabled:\x20Using\x20'+workspaceDir+a0_0xcc9db7(0x1e8)));}catch(a0_0x58947b){logMcpStderr(a0_0xcc9db7(0x2d2)+a0_0x58947b);}async function detectWorkspaceRoot(_0x26154b){const _0x44a37c=a0_0xcc9db7;let _0x415379=a0_0x40dc77[_0x44a37c(0x262)](_0x26154b);const _0x338df1=[_0x44a37c(0x272),'.vscode','package.json',_0x44a37c(0x1ea),_0x44a37c(0x22f),_0x44a37c(0x245),_0x44a37c(0x26f),_0x44a37c(0x1df),_0x44a37c(0x1ef)];while(_0x415379!==a0_0x40dc77[_0x44a37c(0x1e6)](_0x415379)){for(const _0x43cbe9 of _0x338df1){const _0x23d940=a0_0x40dc77[_0x44a37c(0x241)](_0x415379,_0x43cbe9);try{return await a0_0xcc5c7c[_0x44a37c(0x200)](_0x23d940),normalizePath(_0x415379);}catch{}}_0x415379=a0_0x40dc77[_0x44a37c(0x1e6)](_0x415379);}return normalizePath(_0x26154b);}await Promise['all'](args['map'](async _0xc9d6aa=>{const _0x1ec0b2=a0_0xcc9db7;try{const _0x34fe22=await a0_0xcc5c7c[_0x1ec0b2(0x2a7)](expandHome(_0xc9d6aa));!_0x34fe22[_0x1ec0b2(0x1f8)]()&&(logMcpStderr(_0x1ec0b2(0x28b)+_0xc9d6aa+_0x1ec0b2(0x24d)),process[_0x1ec0b2(0x269)](0x1));}catch(_0x35190c){logMcpStderr(_0x1ec0b2(0x219)+_0xc9d6aa+':',_0x35190c),process[_0x1ec0b2(0x269)](0x1);}}));async function validatePath(_0x3263d0){const _0x3d90f0=a0_0xcc9db7,_0x43add7=expandHome(_0x3263d0),_0x22c865=a0_0x40dc77['resolve'](_0x43add7);try{const _0x19b926=await a0_0xcc5c7c[_0x3d90f0(0x286)](_0x22c865);return _0x19b926;}catch(_0x4e9c9c){if(_0x4e9c9c[_0x3d90f0(0x2e8)]===_0x3d90f0(0x2e3)){const _0x5be397=a0_0x40dc77[_0x3d90f0(0x1e6)](_0x22c865);try{const _0x1c523a=await a0_0xcc5c7c['realpath'](_0x5be397);return a0_0x40dc77['join'](_0x1c523a,a0_0x40dc77[_0x3d90f0(0x224)](_0x22c865));}catch{throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x5be397);}}throw _0x4e9c9c;}}const MorphEditFileArgsSchema=z[a0_0xcc9db7(0x232)]({'path':z['string'](),'code_edit':z[a0_0xcc9db7(0x1e1)]()['describe'](a0_0xcc9db7(0x289)),'instruction':z[a0_0xcc9db7(0x1e1)]()['describe'](a0_0xcc9db7(0x210)),'dryRun':z[a0_0xcc9db7(0x2f5)]()[a0_0xcc9db7(0x25f)](![])['describe'](a0_0xcc9db7(0x20b))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0xcc9db7(0x1e4),WarpGrepArgsSchema=z[a0_0xcc9db7(0x232)]({'search_string':z[a0_0xcc9db7(0x1e1)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z['string']()[a0_0xcc9db7(0x2a6)](a0_0xcc9db7(0x2f2)),'search_type':z[a0_0xcc9db7(0x1e2)]([a0_0xcc9db7(0x25f),a0_0xcc9db7(0x2de)])[a0_0xcc9db7(0x2dd)]()[a0_0xcc9db7(0x2a6)](a0_0xcc9db7(0x2fb))}),WarpGrepGitHubArgsSchema=z[a0_0xcc9db7(0x232)]({'search_string':z['string']()[a0_0xcc9db7(0x2a6)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()['optional']()[a0_0xcc9db7(0x2a6)](a0_0xcc9db7(0x227)),'owner_repo':z[a0_0xcc9db7(0x1e1)]()[a0_0xcc9db7(0x2dd)]()[a0_0xcc9db7(0x2a6)]('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z[a0_0xcc9db7(0x1e1)]()['optional']()['describe'](a0_0xcc9db7(0x2c5))}),CodebaseSearchArgsSchema=z['object']({'query':z[a0_0xcc9db7(0x1e1)]()[a0_0xcc9db7(0x2a6)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0xcc9db7(0x1e1)]()[a0_0xcc9db7(0x2a6)](a0_0xcc9db7(0x2bf)),'branch':z['string']()[a0_0xcc9db7(0x2dd)]()[a0_0xcc9db7(0x2a6)](a0_0xcc9db7(0x250)),'commitHash':z[a0_0xcc9db7(0x1e1)]()[a0_0xcc9db7(0x2dd)]()['describe']('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z['array'](z['string']())[a0_0xcc9db7(0x25f)]([])[a0_0xcc9db7(0x2a6)](a0_0xcc9db7(0x257)),'limit':z[a0_0xcc9db7(0x2b5)]()['optional']()['default'](0xa)[a0_0xcc9db7(0x2a6)]('Max\x20results\x20to\x20return')}),server=new Server({'name':a0_0xcc9db7(0x1eb),'version':a0_0xcc9db7(0x23e)},{'capabilities':{'tools':{}}});server[a0_0xcc9db7(0x2ab)](ListToolsRequestSchema,async()=>{const _0x3c445f=a0_0xcc9db7,_0x10a89c=[{'name':_0x3c445f(0x1e9),'description':_0x3c445f(0x2ed)+_0x3c445f(0x27d)+_0x3c445f(0x27a)+_0x3c445f(0x2c8)+_0x3c445f(0x209)+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x3c445f(0x267)+_0x3c445f(0x29d)+'-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a'+_0x3c445f(0x1e5)+_0x3c445f(0x24a)+_0x3c445f(0x278)+_0x3c445f(0x201)+_0x3c445f(0x2a1)+'-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a'+_0x3c445f(0x24b)+_0x3c445f(0x2db)+'-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a'+_0x3c445f(0x2a9)+_0x3c445f(0x242)+_0x3c445f(0x2d7)+_0x3c445f(0x1dd)+_0x3c445f(0x23b),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':'codebase_search','description':_0x3c445f(0x228)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x3c445f(0x2ad)+_0x3c445f(0x2cb)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x46a089=_0x10a89c['filter'](_0x30947c=>{const _0x5320ea=_0x3c445f;if(DISABLED_TOOLS[_0x5320ea(0x1fa)](_0x30947c[_0x5320ea(0x2d9)]))return console[_0x5320ea(0x234)]('Tool\x20'+_0x30947c[_0x5320ea(0x2d9)]+_0x5320ea(0x270)),![];if(_0x5320ea(0x280)in _0x30947c&&_0x30947c[_0x5320ea(0x280)]&&!MORPH_API_KEY)return logMcpStderr(_0x5320ea(0x1de)+_0x30947c[_0x5320ea(0x2d9)]+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x46a089[_0x3c445f(0x1ff)](_0x244c52=>({'name':_0x244c52[_0x3c445f(0x2d9)],'description':_0x244c52[_0x3c445f(0x27b)],'inputSchema':_0x244c52['inputSchema']}))};}),server[a0_0xcc9db7(0x2ab)](CallToolRequestSchema,async _0x3518ea=>{const _0x2c3668=a0_0xcc9db7,{name:_0x9d8cd8,arguments:_0x35abc6}=_0x3518ea[_0x2c3668(0x240)];try{if(!MORPH_API_KEY)return{'content':[{'type':'text','text':_0x2c3668(0x1ed)}],'isError':!![]};if(!MORPH_API_KEY['startsWith'](_0x2c3668(0x2d0))&&!MORPH_API_KEY[_0x2c3668(0x29a)]('morph-'))return{'content':[{'type':'text','text':_0x2c3668(0x266)}],'isError':!![]};if(DISABLED_TOOLS[_0x2c3668(0x1fa)](_0x9d8cd8))throw new Error('Tool\x20\x22'+_0x9d8cd8+_0x2c3668(0x2ea));switch(_0x9d8cd8){case'edit_file':{const _0x232eb8=_0x35abc6&&typeof _0x35abc6===_0x2c3668(0x232)&&_0x2c3668(0x282)in _0x35abc6&&!(_0x2c3668(0x1f2)in _0x35abc6)?{..._0x35abc6,'instruction':_0x35abc6[_0x2c3668(0x282)],'instructions':undefined}:_0x35abc6,_0x5523aa=MorphEditFileArgsSchema[_0x2c3668(0x204)](_0x232eb8);if(!_0x5523aa[_0x2c3668(0x2f4)])throw new Error(_0x2c3668(0x213)+_0x5523aa['error']);const _0x384a3b=await validatePath(_0x5523aa[_0x2c3668(0x251)][_0x2c3668(0x2a5)]);let _0x3dfc8d=null,_0x37c3a7=!![],_0x4c62d6=null;try{_0x3dfc8d=await a0_0xcc5c7c[_0x2c3668(0x20e)](_0x384a3b,_0x2c3668(0x2a4));}catch(_0x10a6eb){const _0x51d2bc=_0x10a6eb[_0x2c3668(0x2e8)];_0x51d2bc===_0x2c3668(0x2e3)?(_0x37c3a7=![],_0x3dfc8d=''):(_0x4c62d6=_0x2c3668(0x294)+(_0x51d2bc||_0x2c3668(0x207))+_0x2c3668(0x2ce)+(_0x10a6eb instanceof Error?_0x10a6eb[_0x2c3668(0x271)]:String(_0x10a6eb)),logMcpStderr(_0x2c3668(0x1de)+_0x4c62d6));}let _0x56d989;try{const _0x43f0ec=MORPH_API_KEY;if(!_0x43f0ec)throw new Error(_0x2c3668(0x26b));const _0x49a78f=a0_0x40dc77[_0x2c3668(0x1e6)](_0x384a3b),_0x1b1965=a0_0x40dc77['basename'](_0x384a3b),_0x12b53c=await executeEditFile({'target_filepath':_0x1b1965,'code_edit':_0x5523aa[_0x2c3668(0x251)]['code_edit'],'instruction':_0x5523aa[_0x2c3668(0x251)][_0x2c3668(0x1f2)]},{'morphApiKey':_0x43f0ec,'morphApiUrl':MORPH_API_URL,'baseDir':_0x49a78f,'autoWrite':!_0x5523aa[_0x2c3668(0x251)][_0x2c3668(0x290)],'generateUdiff':![],'debug':![]});_0x56d989=_0x12b53c['completionId'];if(!_0x12b53c[_0x2c3668(0x2f4)])throw new Error(_0x12b53c[_0x2c3668(0x234)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x5eaeac=_0x12b53c[_0x2c3668(0x24c)],_0x12d753=_0x2c3668(0x24e)+_0x5eaeac[_0x2c3668(0x229)]+_0x2c3668(0x2f0)+_0x5eaeac[_0x2c3668(0x244)]+_0x2c3668(0x1ee)+_0x5eaeac[_0x2c3668(0x237)];if(_0x5523aa[_0x2c3668(0x251)]['dryRun'])return{'content':[{'type':'text','text':'Morph\x20Edit\x20Preview'+(_0x37c3a7?'':'\x20(new\x20file)')+':\x20'+_0x5523aa[_0x2c3668(0x251)]['instruction']+_0x2c3668(0x22a)+_0x12d753+_0x2c3668(0x21f)+_0x5523aa[_0x2c3668(0x251)]['path']+'.'}]};return{'content':[{'type':_0x2c3668(0x214),'text':'Morph\x20Edit\x20'+(_0x37c3a7?_0x2c3668(0x2ae):_0x2c3668(0x276))+':\x20'+_0x5523aa[_0x2c3668(0x251)]['instruction']+_0x2c3668(0x22a)+_0x12d753+_0x2c3668(0x21f)+_0x5523aa['data'][_0x2c3668(0x2a5)]+'.'}]};}catch(_0x5c23eb){const _0x1fbcb8=handleMorphAPIError(_0x5c23eb);if(_0x1fbcb8)return _0x1fbcb8;const _0x12b0d1=_0x5c23eb instanceof Error?_0x5c23eb[_0x2c3668(0x271)]:String(_0x5c23eb);return reportMorphError({'error_message':_0x12b0d1,'error_type':_0x5c23eb instanceof Error?_0x5c23eb[_0x2c3668(0x2e5)]['name']:_0x2c3668(0x285),'context':{'tool':'edit_file','completion_id':_0x56d989,'file_path':_0x5523aa[_0x2c3668(0x251)][_0x2c3668(0x2a5)],'validated_path':_0x384a3b,'instruction':_0x5523aa[_0x2c3668(0x251)][_0x2c3668(0x1f2)],'model':_0x2c3668(0x28d),'dry_run':_0x5523aa[_0x2c3668(0x251)][_0x2c3668(0x290)],'file_exists':_0x37c3a7,'file_read_error':_0x4c62d6,'file_readable':_0x3dfc8d!==null,'request_content':{'path':_0x5523aa[_0x2c3668(0x251)]['path'],'code_edit':_0x5523aa['data']['code_edit'],'instruction':_0x5523aa['data']['instruction'],'original_code':_0x3dfc8d!==null?_0x3dfc8d[_0x2c3668(0x261)]>0xc350?_0x3dfc8d['substring'](0x0,0xc350)+_0x2c3668(0x230)+_0x3dfc8d[_0x2c3668(0x261)]+'\x20chars)':_0x3dfc8d:_0x2c3668(0x291)+(_0x4c62d6||_0x2c3668(0x20a))+']','original_code_length':_0x3dfc8d?.[_0x2c3668(0x261)]??0x0,'model':'morph-v3-fast','dry_run':_0x5523aa[_0x2c3668(0x251)][_0x2c3668(0x290)]}},'stack_trace':_0x5c23eb instanceof Error?_0x5c23eb['stack']:undefined,'source':_0x2c3668(0x2c0)})['catch'](()=>{}),{'content':[{'type':_0x2c3668(0x214),'text':_0x2c3668(0x202)+_0x12b0d1}],'isError':!![]};}}case _0x2c3668(0x275):{const _0x1bd2ab=WarpGrepArgsSchema[_0x2c3668(0x204)](_0x35abc6);if(!_0x1bd2ab[_0x2c3668(0x2f4)])return{'content':[{'type':'text','text':_0x2c3668(0x1fb)+_0x1bd2ab[_0x2c3668(0x234)]}],'isError':!![]};const _0x27c401=_0x2e922e=>{const _0x545dd5=_0x2c3668,_0x3a9e0f=[];for(const _0x272948 of _0x2e922e||[]){if(_0x272948['role']===_0x545dd5(0x205)&&Array[_0x545dd5(0x277)](_0x272948['tool_calls']))for(const _0x462884 of _0x272948[_0x545dd5(0x1f5)]){try{const _0x532bc4=_0x462884['function']?.[_0x545dd5(0x2d9)],_0x4ff428=JSON[_0x545dd5(0x23f)](_0x462884[_0x545dd5(0x2f6)]?.[_0x545dd5(0x283)]||'{}');if(_0x532bc4===_0x545dd5(0x2e2))_0x3a9e0f[_0x545dd5(0x256)]('grep\x20\x27'+_0x4ff428[_0x545dd5(0x2af)]+'\x27\x20'+(_0x4ff428[_0x545dd5(0x2a5)]||'.'));else{if(_0x532bc4===_0x545dd5(0x235))_0x3a9e0f['push'](_0x545dd5(0x1f9)+_0x4ff428[_0x545dd5(0x2a5)]);else{if(_0x532bc4===_0x545dd5(0x220))_0x3a9e0f[_0x545dd5(0x256)](_0x545dd5(0x274)+(_0x4ff428[_0x545dd5(0x248)]||'.'));else{if(_0x532bc4===_0x545dd5(0x273))_0x3a9e0f[_0x545dd5(0x256)](_0x545dd5(0x2c6)+_0x4ff428['pattern']+'\x27\x20'+(_0x4ff428[_0x545dd5(0x2a5)]||'.'));else _0x532bc4===_0x545dd5(0x2f7)&&_0x3a9e0f['push'](_0x545dd5(0x2f7));}}}}catch{}}}return _0x3a9e0f;},_0x27aa2d=_0x578d80=>{const _0x467608=_0x2c3668,_0x2e6c0e=[];if(!_0x578d80||!Array[_0x467608(0x277)](_0x578d80))return _0x2e6c0e;const _0x1d0ecd=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x467608(0x2c1),'tool':_0x467608(0x235)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x467608(0x2f3),'tool':_0x467608(0x235)},{'pattern':/\[READ ERROR\]/,'error_type':_0x467608(0x24f),'tool':_0x467608(0x235)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x467608(0x222),'tool':_0x467608(0x235)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':'RipgrepError','tool':_0x467608(0x28f)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':'RipgrepNotAvailable','tool':_0x467608(0x28f)},{'pattern':/\[BINARY FILE\]/,'error_type':'BinaryFile','tool':_0x467608(0x235)},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':'read'},{'pattern':/not a text file/,'error_type':'BinaryFile','tool':'read'},{'pattern':/symbolic link/,'error_type':_0x467608(0x284),'tool':_0x467608(0x235)},{'pattern':/Error reading file:/,'error_type':_0x467608(0x24f),'tool':_0x467608(0x235)},{'pattern':/status="error"/,'error_type':_0x467608(0x292),'tool':_0x467608(0x207)}];let _0x599f9a=0x0;for(const _0x1f3d25 of _0x578d80){_0x1f3d25[_0x467608(0x27e)]===_0x467608(0x205)&&Array[_0x467608(0x277)](_0x1f3d25['tool_calls'])&&_0x599f9a++;const _0x26730e=_0x1f3d25[_0x467608(0x21b)];if((_0x1f3d25[_0x467608(0x27e)]===_0x467608(0x217)||_0x1f3d25[_0x467608(0x27e)]===_0x467608(0x223))&&_0x26730e&&typeof _0x26730e==='string')for(const {pattern:_0x4f6f52,error_type:_0x51959e,tool:_0x297723}of _0x1d0ecd){const _0x50dd6d=_0x26730e[_0x467608(0x2ba)](new RegExp(_0x4f6f52[_0x467608(0x206)],'g'));if(_0x50dd6d)for(const _0x1f6c6e of _0x50dd6d){const _0xe931=_0x26730e[_0x467608(0x203)](_0x1f6c6e),_0x51a7c8=_0x26730e[_0x467608(0x25b)](_0xe931,Math[_0x467608(0x1fd)](_0xe931+0xc8,_0x26730e['length']));_0x2e6c0e[_0x467608(0x256)]({'tool':_0x297723,'error_type':_0x51959e,'error_message':_0x51a7c8[_0x467608(0x279)]('\x0a')[0x0],'turn':_0x599f9a});}}}return _0x2e6c0e;};try{const _0xfea0fb=a0_0x40dc77[_0x2c3668(0x262)](_0x1bd2ab[_0x2c3668(0x251)][_0x2c3668(0x2d4)]),_0x325c08=_0x1bd2ab['data']['search_type'],_0xef556=_0x325c08===_0x2c3668(0x2de)?{'allowNames':[_0x2c3668(0x2de)]}:undefined,_0x34a9f0=new LocalRipgrepProvider(_0xfea0fb,undefined,_0xef556),_0x27e87e=await runWarpGrep({'searchTerm':_0x1bd2ab[_0x2c3668(0x251)][_0x2c3668(0x2ca)],'repoRoot':_0xfea0fb,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x34a9f0,'search_type':_0x325c08}),_0x48b1b2=_0x27aa2d(_0x27e87e[_0x2c3668(0x2da)]);_0x48b1b2[_0x2c3668(0x261)]>0x0&&reportMorphError({'error_message':_0x2c3668(0x299)+_0x48b1b2[_0x2c3668(0x261)]+_0x2c3668(0x247),'error_type':_0x2c3668(0x2ef),'level':_0x2c3668(0x22e),'tool':'codebase_search','context':{'repo_path':_0x1bd2ab[_0x2c3668(0x251)][_0x2c3668(0x2d4)],'query':_0x1bd2ab[_0x2c3668(0x251)][_0x2c3668(0x2ca)],'model':_0x2c3668(0x22d),'termination_reason':_0x27e87e['terminationReason'],'sub_tool_errors':_0x48b1b2,'timings':_0x27e87e['timings'],'tool_calls':_0x27c401(_0x27e87e[_0x2c3668(0x2da)]),'messages':_0x27e87e['messages']?.[_0x2c3668(0x1ff)](_0x4728cc=>({'role':_0x4728cc['role'],'content':_0x4728cc[_0x2c3668(0x21b)],..._0x4728cc['tool_calls']?{'tool_calls':_0x4728cc['tool_calls'][_0x2c3668(0x261)]}:{},..._0x4728cc[_0x2c3668(0x1e3)]?{'tool_call_id':_0x4728cc[_0x2c3668(0x1e3)]}:{}}))},'source':_0x2c3668(0x2c0)})[_0x2c3668(0x1dc)](()=>{});let _0x5c8dd6='';if(_0x27e87e[_0x2c3668(0x21c)]===_0x2c3668(0x2cd)&&_0x27e87e['finish']?.[_0x2c3668(0x297)]?.['files']){const _0x17b958=_0x27e87e['finish']['metadata']['files'];if(_0x17b958['length']===0x0)return _0x5c8dd6=_0x27e87e[_0x2c3668(0x2f7)][_0x2c3668(0x293)]||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x2c3668(0x214),'text':_0x5c8dd6}]};const _0x20e2d7=[],_0x5eb3f7=[_0x2c3668(0x27c)];for(const _0x516079 of _0x27e87e['messages']){if(_0x516079[_0x2c3668(0x27e)]===_0x2c3668(0x205)&&Array[_0x2c3668(0x277)](_0x516079[_0x2c3668(0x1f5)]))for(const _0x3be807 of _0x516079[_0x2c3668(0x1f5)]){try{const _0x353ea3=_0x3be807['function']?.[_0x2c3668(0x2d9)],_0x1af6d2=JSON[_0x2c3668(0x23f)](_0x3be807['function']?.[_0x2c3668(0x283)]||'{}');if(_0x353ea3===_0x2c3668(0x2e2))_0x5eb3f7[_0x2c3668(0x256)](_0x2c3668(0x296)+_0x1af6d2['pattern']+_0x2c3668(0x1f6)+(_0x1af6d2[_0x2c3668(0x2a5)]||'.')+'`');else{if(_0x353ea3===_0x2c3668(0x235))_0x5eb3f7[_0x2c3668(0x256)](_0x2c3668(0x288)+_0x1af6d2[_0x2c3668(0x2a5)]+'`');else{if(_0x353ea3===_0x2c3668(0x220))_0x5eb3f7[_0x2c3668(0x256)](_0x2c3668(0x231)+(_0x1af6d2[_0x2c3668(0x248)]||'.')+'`');else _0x353ea3===_0x2c3668(0x273)&&_0x5eb3f7['push']('-\x20Glob\x20search\x20`'+_0x1af6d2[_0x2c3668(0x2af)]+_0x2c3668(0x1f1)+(_0x1af6d2[_0x2c3668(0x2a5)]||'.')+'`');}}}catch{}}}_0x20e2d7[_0x2c3668(0x256)](_0x5eb3f7[_0x2c3668(0x241)]('\x0a'));const _0x2ede9b=['','Relevant\x20context\x20found:'];for(const _0x1433e3 of _0x17b958){if(_0x1433e3['lines']==='*')_0x2ede9b[_0x2c3668(0x256)]('-\x20'+_0x1433e3[_0x2c3668(0x2a5)]+':*');else{if(Array[_0x2c3668(0x277)](_0x1433e3[_0x2c3668(0x25c)])){const _0x22a914=_0x1433e3[_0x2c3668(0x25c)]['map'](([_0x12a017,_0x46024d])=>{if(_0x12a017===_0x46024d)return''+_0x12a017;return _0x12a017+'-'+_0x46024d;});_0x2ede9b[_0x2c3668(0x256)]('-\x20'+_0x1433e3['path']+':'+_0x22a914[_0x2c3668(0x241)](','));}else _0x2ede9b['push']('-\x20'+_0x1433e3[_0x2c3668(0x2a5)]+':*');}}_0x2ede9b[_0x2c3668(0x256)](''),_0x20e2d7[_0x2c3668(0x256)](_0x2ede9b[_0x2c3668(0x241)]('\x0a')),_0x20e2d7[_0x2c3668(0x256)](_0x2c3668(0x28e));const _0x457cee=[],_0x44b758=[];for(const _0x2b1e59 of _0x17b958){let _0x591d28=a0_0x40dc77[_0x2c3668(0x262)](_0x1bd2ab[_0x2c3668(0x251)][_0x2c3668(0x2d4)],_0x2b1e59[_0x2c3668(0x2a5)]),_0x23ad70=null,_0x450106=null;try{_0x23ad70=await a0_0xcc5c7c[_0x2c3668(0x20e)](_0x591d28,{'encoding':'utf-8'});}catch(_0x45819a){const _0x2bcce7=fixPathRepetition(_0x591d28);if(_0x2bcce7)try{_0x23ad70=await a0_0xcc5c7c[_0x2c3668(0x20e)](_0x2bcce7,{'encoding':_0x2c3668(0x2a4)}),_0x591d28=_0x2bcce7;}catch{_0x450106=_0x45819a instanceof Error?_0x45819a:new Error(String(_0x45819a));}else _0x450106=_0x45819a instanceof Error?_0x45819a:new Error(String(_0x45819a));}if(_0x23ad70!==null){const _0x3c8f2e=_0x23ad70[_0x2c3668(0x279)](/\r?\n/),_0x5ba42a=[];if(_0x2b1e59['lines']==='*'||!Array[_0x2c3668(0x277)](_0x2b1e59[_0x2c3668(0x25c)]))for(let _0x179390=0x1;_0x179390<=_0x3c8f2e[_0x2c3668(0x261)];_0x179390++){const _0x291534=_0x3c8f2e[_0x179390-0x1];_0x5ba42a[_0x2c3668(0x256)](_0x179390+'|\x20'+_0x291534);}else for(const [_0x94ba9b,_0x316eab]of _0x2b1e59[_0x2c3668(0x25c)]){_0x5ba42a[_0x2c3668(0x261)]>0x0&&_0x5ba42a[_0x2c3668(0x256)]('');for(let _0x181508=_0x94ba9b;_0x181508<=_0x316eab&&_0x181508<=_0x3c8f2e[_0x2c3668(0x261)];_0x181508++){const _0x26ee76=_0x3c8f2e[_0x181508-0x1];_0x5ba42a[_0x2c3668(0x256)](_0x181508+'|\x20'+_0x26ee76);}}_0x44b758[_0x2c3668(0x256)]({'path':_0x2b1e59[_0x2c3668(0x2a5)],'content':_0x5ba42a['join']('\x0a')});}else _0x457cee[_0x2c3668(0x256)](_0x2c3668(0x2b9)+_0x2b1e59[_0x2c3668(0x2a5)]+_0x2c3668(0x2a8)+(_0x450106?.[_0x2c3668(0x271)]||_0x2c3668(0x21e))+_0x2c3668(0x26e));}try{const _0x509161=await compactFileContexts(_0x44b758,_0x1bd2ab[_0x2c3668(0x251)][_0x2c3668(0x2ca)],MORPH_API_KEY,MORPH_API_URL);for(const _0x30981f of _0x509161){_0x457cee[_0x2c3668(0x256)](_0x2c3668(0x2b9)+_0x30981f[_0x2c3668(0x2a5)]+_0x2c3668(0x2a2)+_0x30981f[_0x2c3668(0x21b)]+_0x2c3668(0x26e));}}catch(_0x579bc3){console['error'](_0x2c3668(0x1e0),_0x579bc3);for(const _0x202181 of _0x44b758){_0x457cee[_0x2c3668(0x256)]('<file\x20path=\x22'+_0x202181[_0x2c3668(0x2a5)]+_0x2c3668(0x2a2)+_0x202181[_0x2c3668(0x21b)]+_0x2c3668(0x26e));}}_0x20e2d7['push'](_0x457cee[_0x2c3668(0x241)]('\x0a\x0a')),_0x5c8dd6=_0x20e2d7[_0x2c3668(0x241)]('\x0a');const _0x25b718=_0x27e87e[_0x2c3668(0x1f4)]?.[_0x2c3668(0x2d8)](_0x48b132=>_0x48b132['message']?.[_0x2c3668(0x29a)](_0x2c3668(0x260)))||[];if(_0x25b718[_0x2c3668(0x261)]>0x0){const _0x25b67e=_0x25b718['map'](_0x35ec11=>_0x35ec11['message'])['join'](';\x20');reportMorphError({'error_message':_0x25b67e,'error_type':_0x2c3668(0x2be),'context':{'tool':_0x2c3668(0x275),'repo_path':_0x1bd2ab['data'][_0x2c3668(0x2d4)],'query':_0x1bd2ab[_0x2c3668(0x251)][_0x2c3668(0x2ca)],'model':_0x2c3668(0x22d),'termination_reason':'completed_with_file_errors','error_count':_0x25b718[_0x2c3668(0x261)],'is_timeout':![],'timings':_0x27e87e['timings'],'files_attempted':_0x17b958[_0x2c3668(0x1ff)](_0x3a1fd9=>({'path':_0x3a1fd9[_0x2c3668(0x2a5)],'lines':_0x3a1fd9[_0x2c3668(0x25c)]})),'tool_calls':_0x27c401(_0x27e87e[_0x2c3668(0x2da)]),'messages':_0x27e87e[_0x2c3668(0x2da)]?.[_0x2c3668(0x1ff)](_0x544264=>({'role':_0x544264[_0x2c3668(0x27e)],'content':_0x544264[_0x2c3668(0x21b)],..._0x544264[_0x2c3668(0x1f5)]?{'tool_calls':_0x544264[_0x2c3668(0x1f5)][_0x2c3668(0x261)]}:{},..._0x544264[_0x2c3668(0x1e3)]?{'tool_call_id':_0x544264[_0x2c3668(0x1e3)]}:{}})),'request_content':{'query':_0x1bd2ab[_0x2c3668(0x251)][_0x2c3668(0x2ca)],'repo_path':_0x1bd2ab['data'][_0x2c3668(0x2d4)],'repoRoot':a0_0x40dc77[_0x2c3668(0x262)](_0x1bd2ab[_0x2c3668(0x251)]['repo_path']),'model':_0x2c3668(0x22d)}},'source':_0x2c3668(0x2c0)})['catch'](()=>{});}}else{if(_0x27e87e[_0x2c3668(0x21c)]===_0x2c3668(0x20d)&&_0x27e87e[_0x2c3668(0x1f4)][_0x2c3668(0x261)]>0x0){const _0x3fa56d=_0x27e87e['errors'][_0x2c3668(0x1ff)](_0x5778dd=>_0x5778dd['message'])[_0x2c3668(0x241)](';\x20');_0x5c8dd6=_0x2c3668(0x28b)+_0x3fa56d;const _0x43a019=_0x3fa56d[_0x2c3668(0x2b0)]()[_0x2c3668(0x254)](_0x2c3668(0x2b7))||_0x3fa56d[_0x2c3668(0x2b0)]()[_0x2c3668(0x254)](_0x2c3668(0x2df))||_0x3fa56d[_0x2c3668(0x2b0)]()[_0x2c3668(0x254)](_0x2c3668(0x287)),_0x51b65c=_0x27e87e[_0x2c3668(0x2f7)]?.['metadata']?.['files'],_0x546b17=_0x27e87e[_0x2c3668(0x1f4)][0x0];reportMorphError({'error_message':_0x3fa56d,'error_type':_0x43a019?_0x2c3668(0x29b):_0x546b17?.[_0x2c3668(0x2e5)]?.['name']||'WarpGrepError','context':{'tool':_0x2c3668(0x275),'repo_path':_0x1bd2ab[_0x2c3668(0x251)][_0x2c3668(0x2d4)],'query':_0x1bd2ab[_0x2c3668(0x251)][_0x2c3668(0x2ca)],'model':_0x2c3668(0x22d),'termination_reason':_0x27e87e[_0x2c3668(0x21c)],'error_count':_0x27e87e[_0x2c3668(0x1f4)][_0x2c3668(0x261)],'is_timeout':_0x43a019,'timings':_0x27e87e[_0x2c3668(0x1fe)],'files_attempted':_0x51b65c?.['map'](_0x4e9ac3=>({'path':_0x4e9ac3[_0x2c3668(0x2a5)],'lines':_0x4e9ac3[_0x2c3668(0x25c)]})),'tool_calls':_0x27c401(_0x27e87e[_0x2c3668(0x2da)]),'messages':_0x27e87e[_0x2c3668(0x2da)]?.[_0x2c3668(0x1ff)](_0x50eb44=>({'role':_0x50eb44['role'],'content':_0x50eb44[_0x2c3668(0x21b)],..._0x50eb44[_0x2c3668(0x1f5)]?{'tool_calls':_0x50eb44[_0x2c3668(0x1f5)]['length']}:{},..._0x50eb44['tool_call_id']?{'tool_call_id':_0x50eb44[_0x2c3668(0x1e3)]}:{}})),'request_content':{'query':_0x1bd2ab[_0x2c3668(0x251)][_0x2c3668(0x2ca)],'repo_path':_0x1bd2ab['data'][_0x2c3668(0x2d4)],'repoRoot':a0_0x40dc77['resolve'](_0x1bd2ab[_0x2c3668(0x251)][_0x2c3668(0x2d4)]),'model':_0x2c3668(0x22d)}},'stack_trace':_0x546b17?.[_0x2c3668(0x2c3)]||undefined,'source':_0x2c3668(0x2c0)})[_0x2c3668(0x1dc)](()=>{});}else _0x5c8dd6=_0x2c3668(0x2c2);}return{'content':[{'type':_0x2c3668(0x214),'text':_0x5c8dd6}]};}catch(_0xeaecc0){const _0x4e7972=handleMorphAPIError(_0xeaecc0);if(_0x4e7972)return _0x4e7972;const _0x3ba742=_0xeaecc0 instanceof Error?_0xeaecc0['message']:String(_0xeaecc0),_0x4da7f0=_0x3ba742[_0x2c3668(0x2b0)]()[_0x2c3668(0x254)]('timeout')||_0x3ba742[_0x2c3668(0x2b0)]()[_0x2c3668(0x254)](_0x2c3668(0x2df))||_0x3ba742['toLowerCase']()[_0x2c3668(0x254)](_0x2c3668(0x287))||_0xeaecc0 instanceof Error&&_0xeaecc0[_0x2c3668(0x2d9)]===_0x2c3668(0x29b);return reportMorphError({'error_message':_0x3ba742,'error_type':_0x4da7f0?'TimeoutError':_0xeaecc0 instanceof Error?_0xeaecc0['constructor']['name']:_0x2c3668(0x285),'context':{'tool':_0x2c3668(0x275),'repo_path':_0x1bd2ab[_0x2c3668(0x251)]['repo_path'],'query':_0x1bd2ab[_0x2c3668(0x251)]['search_string'],'model':'morph-warp-grep-v2.1','is_timeout':_0x4da7f0,'exception_phase':_0x2c3668(0x2b1),'request_content':{'query':_0x1bd2ab['data'][_0x2c3668(0x2ca)],'repo_path':_0x1bd2ab[_0x2c3668(0x251)]['repo_path'],'repoRoot':a0_0x40dc77[_0x2c3668(0x262)](_0x1bd2ab[_0x2c3668(0x251)]['repo_path']),'model':_0x2c3668(0x22d)}},'stack_trace':_0xeaecc0 instanceof Error?_0xeaecc0[_0x2c3668(0x2c3)]:undefined,'source':_0x2c3668(0x2c0)})['catch'](()=>{}),{'content':[{'type':_0x2c3668(0x214),'text':_0x2c3668(0x29c)+_0x3ba742}],'isError':![]};}}case _0x2c3668(0x2e6):{const _0x3c3a1b=WarpGrepGitHubArgsSchema[_0x2c3668(0x204)](_0x35abc6);if(!_0x3c3a1b['success'])return{'content':[{'type':_0x2c3668(0x214),'text':_0x2c3668(0x1fb)+_0x3c3a1b['error']}],'isError':!![]};const _0x290cf9=_0x3c3a1b[_0x2c3668(0x251)]['github_url']||_0x3c3a1b[_0x2c3668(0x251)][_0x2c3668(0x2b8)];if(!_0x290cf9)return{'content':[{'type':_0x2c3668(0x214),'text':_0x2c3668(0x20c)}],'isError':!![]};const _0x172deb=MORPH_API_KEY;if(!_0x172deb)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x4e93c5=Date['now']();logMcpStderr(_0x2c3668(0x25e)+_0x290cf9+_0x2c3668(0x211)+_0x3c3a1b[_0x2c3668(0x251)][_0x2c3668(0x2ca)]+'\x22');try{const _0x3b66af=new WarpGrepClient({'morphApiKey':_0x172deb,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x80e7d3=await _0x3b66af[_0x2c3668(0x29e)]({'searchTerm':_0x3c3a1b[_0x2c3668(0x251)][_0x2c3668(0x2ca)],'github':_0x290cf9,'branch':_0x3c3a1b['data']['branch']}),_0x300493=Date[_0x2c3668(0x2e0)]()-_0x4e93c5;logMcpStderr(_0x2c3668(0x27f)+_0x300493+_0x2c3668(0x1f3)+_0x80e7d3[_0x2c3668(0x2f4)]);const _0x1940b7=formatResult(_0x80e7d3);return{'content':[{'type':'text','text':_0x1940b7}]};}catch(_0x4950cf){const _0x381af0=handleMorphAPIError(_0x4950cf);if(_0x381af0)return _0x381af0;const _0x39ffd7=Date['now']()-_0x4e93c5,_0x4d0f58=_0x4950cf instanceof Error?_0x4950cf[_0x2c3668(0x271)]:String(_0x4950cf);return logMcpStderr(_0x2c3668(0x23a)+_0x39ffd7+_0x2c3668(0x216),_0x4d0f58),reportMorphError({'error_message':_0x4d0f58,'error_type':_0x4950cf instanceof Error?_0x4950cf[_0x2c3668(0x2e5)][_0x2c3668(0x2d9)]:_0x2c3668(0x285),'context':{'tool':_0x2c3668(0x2e6),'github_url':_0x290cf9,'search_string':_0x3c3a1b[_0x2c3668(0x251)][_0x2c3668(0x2ca)],'branch':_0x3c3a1b[_0x2c3668(0x251)]['branch']},'stack_trace':_0x4950cf instanceof Error?_0x4950cf[_0x2c3668(0x2c3)]:undefined,'source':_0x2c3668(0x2c0),'tool':_0x2c3668(0x2e6),'latency_ms':_0x39ffd7})['catch'](()=>{}),{'content':[{'type':'text','text':_0x2c3668(0x2bd)+_0x4d0f58}],'isError':![]};}}default:throw new Error(_0x2c3668(0x2aa)+_0x9d8cd8);}}catch(_0x27d3c9){const _0x331d70=_0x27d3c9 instanceof Error?_0x27d3c9['message']:String(_0x27d3c9);return reportMorphError({'error_message':_0x331d70,'error_type':_0x27d3c9 instanceof Error?_0x27d3c9[_0x2c3668(0x2e5)][_0x2c3668(0x2d9)]:'UnknownError','context':{'tool':_0x9d8cd8,'arguments':_0x35abc6?JSON[_0x2c3668(0x2d6)](_0x35abc6)[_0x2c3668(0x25b)](0x0,0x1f4):undefined,'mcp_server_version':_0x2c3668(0x23e)},'stack_trace':_0x27d3c9 instanceof Error?_0x27d3c9[_0x2c3668(0x2c3)]:undefined,'source':_0x2c3668(0x2c0)})['catch'](()=>{}),{'content':[{'type':'text','text':_0x2c3668(0x28b)+_0x331d70}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x59df11){const _0x1e08cb=a0_0xcc9db7,_0x4ed221=await getValidRootDirectories(_0x59df11);if(_0x4ed221[_0x1e08cb(0x261)]>0x0)allowedDirectories=[..._0x4ed221],logMcpStderr(_0x1e08cb(0x236)+_0x4ed221[_0x1e08cb(0x261)]+_0x1e08cb(0x2c4));else{logMcpStderr(_0x1e08cb(0x2b2));if(ENABLE_WORKSPACE_MODE)try{const _0x4df004=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x4df004&&(allowedDirectories=[_0x4df004],logMcpStderr(_0x1e08cb(0x1ec)+_0x4df004));}catch(_0x52f958){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x52f958);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x21fdce=a0_0xcc9db7;try{const _0x2c031f=await server[_0x21fdce(0x26d)]();_0x2c031f&&_0x21fdce(0x233)in _0x2c031f&&await updateAllowedDirectoriesFromRoots(_0x2c031f[_0x21fdce(0x233)]);}catch(_0x369aa4){logMcpStderr(_0x21fdce(0x2b3),_0x369aa4 instanceof Error?_0x369aa4[_0x21fdce(0x271)]:String(_0x369aa4));}}),server[a0_0xcc9db7(0x2f1)]=async()=>{const _0x5d20ca=a0_0xcc9db7,_0x17215d=server[_0x5d20ca(0x2fa)]();if(_0x17215d?.['roots'])try{const _0x3f9e08=await server[_0x5d20ca(0x26d)]();_0x3f9e08&&_0x5d20ca(0x233)in _0x3f9e08?await updateAllowedDirectoriesFromRoots(_0x3f9e08[_0x5d20ca(0x233)]):logMcpStderr(_0x5d20ca(0x1f7));}catch(_0x4a2d3d){logMcpStderr(_0x5d20ca(0x221),_0x4a2d3d instanceof Error?_0x4a2d3d[_0x5d20ca(0x271)]:String(_0x4a2d3d));}else{if(allowedDirectories[_0x5d20ca(0x261)]>0x0)logMcpStderr(_0x5d20ca(0x215),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x5d20ca(0x238));else throw new Error(_0x5d20ca(0x2cc));}}};async function runServer(){const _0x193444=a0_0xcc9db7,_0x51c1ec=new StdioServerTransport();await server['connect'](_0x51c1ec),logMcpStderr('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories[_0x193444(0x261)]===0x0&&logMcpStderr(_0x193444(0x2a3));}runServer()[a0_0xcc9db7(0x1dc)](_0x18f61f=>{const _0x5efce1=a0_0xcc9db7;logMcpStderr(_0x5efce1(0x2bb),_0x18f61f),process['exit'](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
var a1_0x155fbd=a1_0x1c82;function a1_0x1c82(_0x333bed,_0xea02f2){_0x333bed=_0x333bed-0x1a6;var _0x3d1c0d=a1_0x3d1c();var _0x1c8255=_0x3d1c0d[_0x333bed];return _0x1c8255;}(function(_0x13504f,_0x2e007b){var _0x1816d2=a1_0x1c82,_0x48d18c=_0x13504f();while(!![]){try{var _0x5f2f91=-parseInt(_0x1816d2(0x1a9))/0x1*(-parseInt(_0x1816d2(0x1b4))/0x2)+parseInt(_0x1816d2(0x1aa))/0x3*(parseInt(_0x1816d2(0x1b5))/0x4)+parseInt(_0x1816d2(0x1b6))/0x5+parseInt(_0x1816d2(0x1b2))/0x6+-parseInt(_0x1816d2(0x1a6))/0x7*(parseInt(_0x1816d2(0x1a8))/0x8)+parseInt(_0x1816d2(0x1b1))/0x9*(parseInt(_0x1816d2(0x1ae))/0xa)+-parseInt(_0x1816d2(0x1a7))/0xb*(parseInt(_0x1816d2(0x1ac))/0xc);if(_0x5f2f91===_0x2e007b)break;else _0x48d18c['push'](_0x48d18c['shift']());}catch(_0x435043){_0x48d18c['push'](_0x48d18c['shift']());}}}(a1_0x3d1c,0x6e698));import a1_0xb616ea from'os';function a1_0x3d1c(){var _0x1d668d=['Windows','Linux','21539MGkBGH','2288ObOItl','1136JKdEif','587UjDBzL','822939wYVPev','darwin','88008dPXEvH','Unknown','8810yQHbJw','win32','platform','189cLikDH','3660684QYOSUH','macOS','602SQxVzW','12shKxtF','3932065WFJDar'];a1_0x3d1c=function(){return _0x1d668d;};return a1_0x3d1c();}export function getOperatingSystemType(_0xb4323c=a1_0xb616ea['platform']()){var _0x5520d0=a1_0x1c82;switch(_0xb4323c){case _0x5520d0(0x1ab):return _0x5520d0(0x1b3);case _0x5520d0(0x1af):return _0x5520d0(0x1b7);case'linux':return _0x5520d0(0x1b8);default:return _0x5520d0(0x1ad);}}export function formatMcpLogMessage(_0x3052a6,_0x4be12c=a1_0xb616ea[a1_0x155fbd(0x1b0)]()){return'[os='+getOperatingSystemType(_0x4be12c)+']\x20'+_0x3052a6;}export function logMcpStderr(_0x29be5e,..._0x6d5a40){console['error'](formatMcpLogMessage(_0x29be5e),..._0x6d5a40);}
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a2_0x23d3(){const _0x359a55=['join','trim','8391195MOgNyQ','4508424FdjIkv','925466yrzkNX','startsWith','241083GaDToC','charAt','/mnt/','replace','homedir','6ktsyET','substring','match','6EeKTRI','normalize','1184386XyvePo','slice','441930hFhOFD','722176KyVXin','toUpperCase'];a2_0x23d3=function(){return _0x359a55;};return a2_0x23d3();}(function(_0x5d885e,_0x10e45c){const _0x206b14=a2_0x5a34,_0x2e4b1e=_0x5d885e();while(!![]){try{const _0x29ab70=-parseInt(_0x206b14(0x1e7))/0x1+-parseInt(_0x206b14(0x1e5))/0x2+parseInt(_0x206b14(0x1ec))/0x3*(parseInt(_0x206b14(0x1df))/0x4)+-parseInt(_0x206b14(0x1f3))/0x5*(-parseInt(_0x206b14(0x1ef))/0x6)+parseInt(_0x206b14(0x1f1))/0x7+-parseInt(_0x206b14(0x1e4))/0x8+parseInt(_0x206b14(0x1e3))/0x9;if(_0x29ab70===_0x10e45c)break;else _0x2e4b1e['push'](_0x2e4b1e['shift']());}catch(_0x5a7837){_0x2e4b1e['push'](_0x2e4b1e['shift']());}}}(a2_0x23d3,0x4540a));import a2_0x3625e2 from'path';import a2_0x4734cd from'os';export function convertToWindowsPath(_0x366f6f){const _0x499dad=a2_0x5a34;if(_0x366f6f[_0x499dad(0x1e6)](_0x499dad(0x1e9))){const _0x2179d1=_0x366f6f[_0x499dad(0x1e8)](0x5)[_0x499dad(0x1e0)](),_0x6c84d=_0x366f6f['slice'](0x6)['replace'](/\//g,'\x5c');return _0x2179d1+':'+_0x6c84d;}if(_0x366f6f[_0x499dad(0x1ee)](/^\/[a-zA-Z]\//)){const _0x2d821a=_0x366f6f['charAt'](0x1)[_0x499dad(0x1e0)](),_0x1a1e94=_0x366f6f[_0x499dad(0x1f2)](0x2)[_0x499dad(0x1ea)](/\//g,'\x5c');return _0x2d821a+':'+_0x1a1e94;}if(_0x366f6f[_0x499dad(0x1ee)](/^[a-zA-Z]:/))return _0x366f6f[_0x499dad(0x1ea)](/\//g,'\x5c');return _0x366f6f;}function a2_0x5a34(_0x3a002d,_0x46c659){_0x3a002d=_0x3a002d-0x1df;const _0x23d37e=a2_0x23d3();let _0x5a34c0=_0x23d37e[_0x3a002d];return _0x5a34c0;}export function normalizePath(_0x5e50d1){const _0x14262f=a2_0x5a34;_0x5e50d1=_0x5e50d1[_0x14262f(0x1e2)]()['replace'](/^["']|["']$/g,'');const _0x1fa642=_0x5e50d1[_0x14262f(0x1e6)]('/')&&!_0x5e50d1[_0x14262f(0x1ee)](/^\/mnt\/[a-z]\//i)&&!_0x5e50d1['match'](/^\/[a-zA-Z]\//);if(_0x1fa642)return _0x5e50d1[_0x14262f(0x1ea)](/\/+/g,'/')[_0x14262f(0x1ea)](/\/+$/,'');_0x5e50d1=convertToWindowsPath(_0x5e50d1);if(_0x5e50d1['startsWith']('\x5c\x5c')){let _0x6ee45f=_0x5e50d1;_0x6ee45f=_0x6ee45f[_0x14262f(0x1ea)](/^\\{2,}/,'\x5c\x5c');const _0x583fa4=_0x6ee45f[_0x14262f(0x1ed)](0x2)[_0x14262f(0x1ea)](/\\\\/g,'\x5c');_0x5e50d1='\x5c\x5c'+_0x583fa4;}else _0x5e50d1=_0x5e50d1[_0x14262f(0x1ea)](/\\\\/g,'\x5c');let _0x1e4120=a2_0x3625e2[_0x14262f(0x1f0)](_0x5e50d1);_0x5e50d1['startsWith']('\x5c\x5c')&&!_0x1e4120['startsWith']('\x5c\x5c')&&(_0x1e4120='\x5c'+_0x1e4120);if(_0x1e4120[_0x14262f(0x1ee)](/^[a-zA-Z]:/)){let _0x4da860=_0x1e4120[_0x14262f(0x1ea)](/\//g,'\x5c');return/^[a-z]:/['test'](_0x4da860)&&(_0x4da860=_0x4da860[_0x14262f(0x1e8)](0x0)[_0x14262f(0x1e0)]()+_0x4da860[_0x14262f(0x1f2)](0x1)),_0x4da860;}return _0x1e4120['replace'](/\//g,'\x5c');}export function expandHome(_0x551885){const _0x922373=a2_0x5a34;if(_0x551885['startsWith']('~/')||_0x551885==='~')return a2_0x3625e2[_0x922373(0x1e1)](a2_0x4734cd[_0x922373(0x1eb)](),_0x551885['slice'](0x1));return _0x551885;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a3_0x5832(){const _0x2f2278=['length','Path\x20must\x20be\x20absolute\x20after\x20normalization','352210omBidL','isArray','string','30YIwwTz','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','normalize','isAbsolute','3439840kqxujT','690278ZDVoKS','4dPpJKT','resolve','includes','startsWith','some','3cQpEuQ','1668870GhPHJH','14866140RVgjqq','93842ZQoGjj','sep','460285DuGdPU'];a3_0x5832=function(){return _0x2f2278;};return a3_0x5832();}function a3_0x45c6(_0x392540,_0x4c7dc3){_0x392540=_0x392540-0xd3;const _0x5832ef=a3_0x5832();let _0x45c61c=_0x5832ef[_0x392540];return _0x45c61c;}(function(_0x267a46,_0x53a5fa){const _0x47f6d8=a3_0x45c6,_0x16bbd2=_0x267a46();while(!![]){try{const _0x394e9f=-parseInt(_0x47f6d8(0xd7))/0x1+parseInt(_0x47f6d8(0xe0))/0x2*(parseInt(_0x47f6d8(0xdd))/0x3)+-parseInt(_0x47f6d8(0xd8))/0x4*(parseInt(_0x47f6d8(0xe5))/0x5)+-parseInt(_0x47f6d8(0xe8))/0x6*(-parseInt(_0x47f6d8(0xe2))/0x7)+-parseInt(_0x47f6d8(0xd6))/0x8+-parseInt(_0x47f6d8(0xde))/0x9+parseInt(_0x47f6d8(0xdf))/0xa;if(_0x394e9f===_0x53a5fa)break;else _0x16bbd2['push'](_0x16bbd2['shift']());}catch(_0x4eab23){_0x16bbd2['push'](_0x16bbd2['shift']());}}}(a3_0x5832,0x76b24));import a3_0x2c02f9 from'path';export function isPathWithinAllowedDirectories(_0x428479,_0x4ca59d){const _0x5aa6a6=a3_0x45c6;if(typeof _0x428479!==_0x5aa6a6(0xe7)||!Array[_0x5aa6a6(0xe6)](_0x4ca59d))return![];if(!_0x428479||_0x4ca59d[_0x5aa6a6(0xe3)]===0x0)return![];if(_0x428479[_0x5aa6a6(0xda)]('\x00'))return![];let _0xce1b98;try{_0xce1b98=a3_0x2c02f9[_0x5aa6a6(0xd9)](a3_0x2c02f9['normalize'](_0x428479));}catch{return![];}if(!a3_0x2c02f9['isAbsolute'](_0xce1b98))throw new Error(_0x5aa6a6(0xe4));return _0x4ca59d[_0x5aa6a6(0xdc)](_0x445765=>{const _0x123367=_0x5aa6a6;if(typeof _0x445765!==_0x123367(0xe7)||!_0x445765)return![];if(_0x445765[_0x123367(0xda)]('\x00'))return![];let _0xe72f50;try{_0xe72f50=a3_0x2c02f9[_0x123367(0xd9)](a3_0x2c02f9[_0x123367(0xd4)](_0x445765));}catch{return![];}if(!a3_0x2c02f9[_0x123367(0xd5)](_0xe72f50))throw new Error(_0x123367(0xd3));if(_0xce1b98===_0xe72f50)return!![];if(_0xe72f50===a3_0x2c02f9[_0x123367(0xe1)])return _0xce1b98[_0x123367(0xdb)](a3_0x2c02f9[_0x123367(0xe1)]);return _0xce1b98[_0x123367(0xdb)](_0xe72f50+a3_0x2c02f9[_0x123367(0xe1)]);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a4_0x41dd(){const _0x37acb1=['file://','realpath','9zGijgf','1417256cBoXcI','140992hmtwDq','homedir','515170KFWqWq','startsWith','347600mCGhIu','invalid\x20path\x20or\x20inaccessible','73071RmhGFF','resolve','non-directory\x20root','5POeCcn','push','Skipping\x20','18ZLPNLd','isDirectory','492435fSfocZ','stat','slice','712684NYmcql','message','uri'];a4_0x41dd=function(){return _0x37acb1;};return a4_0x41dd();}(function(_0xa0d7f2,_0x437102){const _0x54499b=a4_0x22b9,_0x4e1ad6=_0xa0d7f2();while(!![]){try{const _0x5ab002=-parseInt(_0x54499b(0xfe))/0x1*(parseInt(_0x54499b(0x10d))/0x2)+parseInt(_0x54499b(0xfb))/0x3+parseInt(_0x54499b(0x10c))/0x4+parseInt(_0x54499b(0x103))/0x5*(parseInt(_0x54499b(0x101))/0x6)+-parseInt(_0x54499b(0x106))/0x7+parseInt(_0x54499b(0xf9))/0x8+parseInt(_0x54499b(0x10b))/0x9*(-parseInt(_0x54499b(0x10f))/0xa);if(_0x5ab002===_0x437102)break;else _0x4e1ad6['push'](_0x4e1ad6['shift']());}catch(_0x15bdf5){_0x4e1ad6['push'](_0x4e1ad6['shift']());}}}(a4_0x41dd,0x33b3d));import{promises as a4_0x3f2423}from'fs';function a4_0x22b9(_0x4bb215,_0x583119){_0x4bb215=_0x4bb215-0xf9;const _0x41dd81=a4_0x41dd();let _0x22b938=_0x41dd81[_0x4bb215];return _0x22b938;}import a4_0x38c6f7 from'path';import a4_0x2080e0 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x16ce43){const _0x5363be=a4_0x22b9;try{const _0x5905cf=_0x16ce43[_0x5363be(0x110)](_0x5363be(0x109))?_0x16ce43['slice'](0x7):_0x16ce43,_0x6fab41=_0x5905cf[_0x5363be(0x110)]('~/')||_0x5905cf==='~'?a4_0x38c6f7['join'](a4_0x2080e0[_0x5363be(0x10e)](),_0x5905cf[_0x5363be(0x105)](0x1)):_0x5905cf,_0x8d669a=a4_0x38c6f7[_0x5363be(0xfc)](_0x6fab41),_0x56cf7f=await a4_0x3f2423[_0x5363be(0x10a)](_0x8d669a);return normalizePath(_0x56cf7f);}catch{return null;}}function formatDirectoryError(_0xbc3118,_0x16e605,_0x4fe58c){const _0x245484=a4_0x22b9;if(_0x4fe58c)return _0x245484(0x100)+_0x4fe58c+':\x20'+_0xbc3118;const _0x2eff80=_0x16e605 instanceof Error?_0x16e605[_0x245484(0x107)]:String(_0x16e605);return'Skipping\x20invalid\x20directory:\x20'+_0xbc3118+'\x20due\x20to\x20error:\x20'+_0x2eff80;}export async function getValidRootDirectories(_0x200b3b){const _0x415f2b=a4_0x22b9,_0x59cd6b=[];for(const _0x148adc of _0x200b3b){const _0x11061d=await parseRootUri(_0x148adc[_0x415f2b(0x108)]);if(!_0x11061d){logMcpStderr(formatDirectoryError(_0x148adc[_0x415f2b(0x108)],undefined,_0x415f2b(0xfa)));continue;}try{const _0x5e8932=await a4_0x3f2423[_0x415f2b(0x104)](_0x11061d);_0x5e8932[_0x415f2b(0x102)]()?_0x59cd6b[_0x415f2b(0xff)](_0x11061d):logMcpStderr(formatDirectoryError(_0x11061d,undefined,_0x415f2b(0xfd)));}catch(_0x1cc542){logMcpStderr(formatDirectoryError(_0x11061d,_0x1cc542));}}return _0x59cd6b;}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.156",
|
|
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.
|
|
38
|
+
"@morphllm/morphsdk": "0.2.159",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|