@morphllm/morphmcp 0.8.105 → 0.8.107

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- const a0_0xae9690=a0_0x50a9;(function(_0x184982,_0x2fe261){const _0x4023fb=a0_0x50a9,_0xded4a5=_0x184982();while(!![]){try{const _0x744830=-parseInt(_0x4023fb(0xba))/0x1+-parseInt(_0x4023fb(0x137))/0x2*(-parseInt(_0x4023fb(0x151))/0x3)+parseInt(_0x4023fb(0x172))/0x4+-parseInt(_0x4023fb(0x194))/0x5*(parseInt(_0x4023fb(0x111))/0x6)+parseInt(_0x4023fb(0x157))/0x7*(-parseInt(_0x4023fb(0xd5))/0x8)+-parseInt(_0x4023fb(0x16c))/0x9+-parseInt(_0x4023fb(0xbf))/0xa*(-parseInt(_0x4023fb(0xe8))/0xb);if(_0x744830===_0x2fe261)break;else _0xded4a5['push'](_0xded4a5['shift']());}catch(_0x5ad525){_0xded4a5['push'](_0xded4a5['shift']());}}}(a0_0x5020,0x8ef38));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_0xa367a4 from'fs/promises';import a0_0x54c6c3 from'path';import a0_0x4d778e from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';function a0_0x5020(){const _0x57a013=['Created\x20File','Benefits:\x0a','...','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','setRequestHandler','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','array','Preview\x20changes\x20without\x20applying\x20them.','Fallback:\x20Using\x20workspace\x20root\x20','For\x20deletions:\x0a','-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a','indexOf','PWD','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','path','roots','catch','0.2.0','ms:','2swxzKe','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','FileReadError','unknown','timed\x20out','sep','Natural\x20language\x20query\x20to\x20search\x20for\x20code','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','etimedout','isArray','Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','Fatal\x20error\x20running\x20server:','default','Enabled\x20tools:\x20','slice','files','github_url','[warpgrep_github_search]\x20Done\x20in\x20','stats','warpgrep_github_search','log','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','.\x20Path:\x20','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','ms.\x20Success:\x20','607305exdjll','listRoots','\x22>\x0aError\x20reading\x20file:\x20','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','Invalid\x20arguments:\x20','requiresApiKey','7ZpxMkM','env','Specific\x20commit\x20hash\x20to\x20search','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','\x20is\x20not\x20a\x20directory','startsWith','argv','errors','\x20for:\x20\x22','The\x20search\x20term\x20should\x20be\x20a\x20targeted\x20natural\x20language\x20query\x20based\x20on\x20what\x20you\x20are\x20trying\x20to\x20accomplish,\x20like\x20\x27Find\x20where\x20authentication\x20requests\x20are\x20handled\x20in\x20the\x20Express\x20routes\x27\x20or\x20\x27Modify\x20the\x20agentic\x20rollout\x20to\x20use\x20the\x20new\x20tokenizer\x20and\x20chat\x20template\x27\x20or\x20\x27Fix\x20the\x20bug\x20where\x20the\x20user\x20gets\x20redirected\x20from\x20the\x20/feed\x20page\x27.\x20','params','realpath','Warning:\x20','--api-key=','ENOENT','runWarpGrep_call','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','Morph\x20FastApply\x20failed\x20without\x20error\x20message','role','limit','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','7085439aXFjTq','Error\x20running\x20fast\x20context\x20search:\x20','payload','metadata','repoId','linesRemoved','3639284IHkBNO','RipgrepError','MORPH_API_URL','ReadError','boolean','dryRun','toFixed','\x20-\x20','timings','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','UnknownError','Error:\x20','[warpgrep_github_search]\x20Failed\x20in\x20','SubToolError','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a','warpgrep_codebase_search','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','code','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Unknown\x20error','Parent\x20directory\x20does\x20not\x20exist:\x20','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','WarpGrepError','Failed\x20to\x20request\x20roots\x20from\x20client:','split','Cargo.toml','morph-mcp','sk-','No\x20results\x20found\x20for\x20query:\x20\x22','Found\x20','filter','every','results','15nPGXHz','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','toISOString','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','normalize','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','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.','mcp-filesystem','File\x20read\x20error:','readFile','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','Morph\x20Edit\x20Preview','object','grep','filepath','RipgrepNotAvailable','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','%\x20match)\x0a','searchTimeMs','basename','stringify','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','Relevant\x20context\x20found:','\x0aOptions:','stack','Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20','\x20chars)','search_string','text','MORPH_WARP_GREP_TIMEOUT','MORPH_API_KEY','Bearer\x20','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','instruction','ENABLED_TOOLS','access','❌\x20Morph\x20Edit\x20Failed:\x20','exit','post','error','match','map','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','application/json','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','-\x20Grepped\x20\x27','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','stat','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','version',',\x20removed\x20','string','name','toLowerCase','\x20(new\x20file)','578812YDurVK','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','source','added\x20','constructor','784610cELcHs','terminated','\x0a</file>','Applied','includes','ToolException','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','setNotificationHandler','substring','.\x20Changes:\x20','--version','WORKSPACE_ROOT','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','number','lines','tsconfig.json','\x20error(s)','resolve','all','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','Rules:\x0a','\x20\x20\x20Lines\x20','8408152mwJGMz','SymlinkError','data','TimeoutError','[could\x20not\x20read\x20file:\x20','has','morph-v3-fast','branch','completed','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','--api-key','</file>','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','-\x20Read\x20file\x20`','messages','\x20\x20\x20','describe','Repository\x20identifier','content','275VXqIwt','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','Search\x20failed:\x20','join','trim','query','dirname','assistant','safeParse','edit_file','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.','ms:\x0a\x0a','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','now','Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for','--help','success','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','false','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','codebase_search','BinaryFile','targetDirectories','floor','read','morph-warp-grep-v1-1111v0','completionId','unknown\x20error','Here\x20is\x20the\x20content\x20of\x20files:\x0a','pyproject.toml','isDirectory','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','Morph\x20Edit\x20','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','changes','homedir','GitHub\x20search\x20failed:\x20','Warning:\x20Workspace\x20fallback\x20failed:\x20','finish','PathError','inputSchema','142302bBXCYa','<file\x20path=\x22','ENABLE_WORKSPACE_MODE','length','timeout','message','composer.json','min','optional','\x27\x20in\x20`','connect','Note:\x20The\x20files\x20and\x20line\x20ranges\x20returned\x20by\x20this\x20tool\x20may\x20be\x20some\x20of\x20the\x20ones\x20needed\x20to\x20complete\x20the\x20user\x27s\x20request,\x20but\x20you\x20should\x20be\x20careful\x20in\x20evaluating\x20the\x20relevance\x20of\x20the\x20results,\x20since\x20the\x20subagent\x20might\x20make\x20mistakes.\x20','utf-8','FileNotFound','terminationReason','Max\x20results\x20to\x20return','repo_path','push'];a0_0x5020=function(){return _0x57a013;};return a0_0x5020();}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{executeCodebaseSearch}from'@morphllm/morphsdk/tools/codebase-search';import a0_0x29bd7b from'axios';function fixPathRepetition(_0x30b7dc){const _0x2b820d=a0_0x50a9,_0x16059e=_0x30b7dc[_0x2b820d(0x18b)](a0_0x54c6c3['sep'])['filter'](Boolean);if(_0x16059e[_0x2b820d(0x114)]<0x2)return null;for(let _0x25af34=Math[_0x2b820d(0xff)](_0x16059e['length']/0x2);_0x25af34>=0x1;_0x25af34--){for(let _0x3f07ff=0x0;_0x3f07ff<=_0x16059e[_0x2b820d(0x114)]-0x2*_0x25af34;_0x3f07ff++){const _0x45ce75=_0x16059e[_0x2b820d(0x146)](_0x3f07ff,_0x3f07ff+_0x25af34),_0xf3957=_0x16059e['slice'](_0x3f07ff+_0x25af34,_0x3f07ff+0x2*_0x25af34);if(_0x45ce75[_0x2b820d(0x192)]((_0x3d61d6,_0x27996d)=>_0x3d61d6===_0xf3957[_0x27996d])){const _0x5f593e=[..._0x16059e[_0x2b820d(0x146)](0x0,_0x3f07ff),..._0x16059e[_0x2b820d(0x146)](_0x3f07ff+_0x25af34)];return a0_0x54c6c3[_0x2b820d(0x13c)]+_0x5f593e[_0x2b820d(0xeb)](a0_0x54c6c3[_0x2b820d(0x13c)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x1aa434=a0_0x50a9;try{const _0x4dc74e=require('../package.json');return _0x4dc74e[_0x1aa434(0xb4)]??_0x1aa434(0x13a);}catch(_0x515b07){return console[_0x1aa434(0xaa)](_0x1aa434(0xaf),_0x515b07),_0x1aa434(0x13a);}}function printHelp(){const _0x2ead36=a0_0x50a9;console[_0x2ead36(0x14c)]('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x2ead36(0x14c)](_0x2ead36(0xfb)),console['log'](_0x2ead36(0x9a)),console[_0x2ead36(0x14c)](_0x2ead36(0x127)),console[_0x2ead36(0x14c)](_0x2ead36(0x199)),console[_0x2ead36(0x14c)](_0x2ead36(0x109)),console[_0x2ead36(0x14c)]('\x0aExamples:'),console['log']('\x20\x20morph-mcp'),console[_0x2ead36(0x14c)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0xae9690(0x15d)][a0_0xae9690(0x146)](0x2),VERSION_FLAGS=new Set([a0_0xae9690(0xc9),'-v','-V']),HELP_FLAGS=new Set([a0_0xae9690(0xf7),'-h']);cliArgs['some'](_0x3dacdd=>VERSION_FLAGS[a0_0xae9690(0xda)](_0x3dacdd))&&(console[a0_0xae9690(0x14c)]('@morphllm/morphmcp\x20'+getPackageVersion()),process[a0_0xae9690(0xa8)](0x0));cliArgs['some'](_0x4058f2=>HELP_FLAGS[a0_0xae9690(0xda)](_0x4058f2))&&(printHelp(),process[a0_0xae9690(0xa8)](0x0));function getCliArg(_0x2f05b4){const _0x350485=a0_0xae9690;for(let _0x17e2e8=0x0;_0x17e2e8<cliArgs[_0x350485(0x114)];_0x17e2e8++){const _0x1e9662=cliArgs[_0x17e2e8];if(_0x1e9662[_0x350485(0x15c)]('--'+_0x2f05b4+'='))return _0x1e9662['slice'](('--'+_0x2f05b4+'=')[_0x350485(0x114)]);if(_0x1e9662==='--'+_0x2f05b4&&_0x17e2e8+0x1<cliArgs['length'])return cliArgs[_0x17e2e8+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0xae9690(0x114)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0xae9690(0xda)](arg)||HELP_FLAGS['has'](arg))continue;if(arg['startsWith'](a0_0xae9690(0x164)))continue;if(arg===a0_0xae9690(0xdf)){i++;continue;}args[a0_0xae9690(0x122)](arg);}const ALL_TOOLS=['edit_file','warpgrep_codebase_search',a0_0xae9690(0x14b),'codebase_search'],DEFAULT_TOOLS=['edit_file','warpgrep_codebase_search','warpgrep_github_search'],ENABLED_TOOLS=process[a0_0xae9690(0x158)][a0_0xae9690(0xa5)]?process[a0_0xae9690(0x158)][a0_0xae9690(0xa5)]==='all'?ALL_TOOLS:process[a0_0xae9690(0x158)][a0_0xae9690(0xa5)][a0_0xae9690(0x18b)](',')[a0_0xae9690(0xac)](_0x5a5632=>_0x5a5632['trim']()):DEFAULT_TOOLS;console[a0_0xae9690(0xaa)](a0_0xae9690(0x145)+ENABLED_TOOLS['join'](',\x20'));const WORKSPACE_ROOT=process['env'][a0_0xae9690(0xca)]||process['env'][a0_0xae9690(0x130)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process['env'][a0_0xae9690(0x113)]!==a0_0xae9690(0xfa),MORPH_API_KEY=getCliArg('api-key')??process[a0_0xae9690(0x158)][a0_0xae9690(0xa1)],MORPH_API_URL=process[a0_0xae9690(0x158)][a0_0xae9690(0x174)],MORPH_WARP_GREP_TIMEOUT=process[a0_0xae9690(0x158)][a0_0xae9690(0xa0)]?parseInt(process['env'][a0_0xae9690(0xa0)],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY[a0_0xae9690(0x15c)](a0_0xae9690(0x18e))&&!MORPH_API_KEY['startsWith']('morph-')&&console[a0_0xae9690(0xaa)](a0_0xae9690(0x129));async function reportMorphError(_0x4c2044){const _0x504125=a0_0xae9690;try{await a0_0x29bd7b[_0x504125(0xa9)]('https://morphllm.com/api/error-report',{..._0x4c2044,'timestamp':new Date()[_0x504125(0x196)](),'source':_0x4c2044[_0x504125(0xbc)]||'mcp-filesystem'},{'timeout':0x1388,'headers':{'Content-Type':_0x504125(0xae),'Authorization':_0x504125(0xa2)+MORPH_API_KEY}});}catch{}}args[a0_0xae9690(0x114)]===0x0&&!ENABLE_WORKSPACE_MODE&&(console[a0_0xae9690(0xaa)](a0_0xae9690(0x107)),console[a0_0xae9690(0xaa)](a0_0xae9690(0xe1)),console['error'](a0_0xae9690(0x195)),console[a0_0xae9690(0xaa)](a0_0xae9690(0x14f)),console['error'](a0_0xae9690(0x185)),console[a0_0xae9690(0xaa)](a0_0xae9690(0x183)));function normalizePath(_0x4548c4){const _0x142987=a0_0xae9690;return a0_0x54c6c3[_0x142987(0x198)](_0x4548c4);}function expandHome(_0xed3ade){const _0x374ffc=a0_0xae9690;if(_0xed3ade[_0x374ffc(0x15c)]('~/')||_0xed3ade==='~')return a0_0x54c6c3[_0x374ffc(0xeb)](a0_0x4d778e[_0x374ffc(0x10b)](),_0xed3ade[_0x374ffc(0x146)](0x1));return _0xed3ade;}let allowedDirectories=await Promise[a0_0xae9690(0xd1)](args[a0_0xae9690(0xac)](async _0xf69eb4=>{const _0x57ab48=a0_0xae9690,_0x1fb340=expandHome(_0xf69eb4),_0x5ae523=a0_0x54c6c3['resolve'](_0x1fb340);try{const _0x3d61d9=await a0_0xa367a4[_0x57ab48(0x162)](_0x5ae523);return normalizePath(_0x3d61d9);}catch(_0x47790c){return normalizePath(_0x5ae523);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0xae9690(0x114)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0xae9690(0x122)](workspaceDir),console[a0_0xae9690(0xaa)]('Workspace\x20mode\x20enabled:\x20Using\x20'+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0xd0a009){console['error'](a0_0xae9690(0xb1)+a0_0xd0a009);}async function detectWorkspaceRoot(_0x6e8645){const _0x12f7dc=a0_0xae9690;let _0x2f45ca=a0_0x54c6c3[_0x12f7dc(0xd0)](_0x6e8645);const _0x3c683f=['.git','.vscode','package.json',_0x12f7dc(0x18c),_0x12f7dc(0x105),'go.mod','.cursor',_0x12f7dc(0xce),_0x12f7dc(0x117)];while(_0x2f45ca!==a0_0x54c6c3['dirname'](_0x2f45ca)){for(const _0x8fa446 of _0x3c683f){const _0x30f641=a0_0x54c6c3[_0x12f7dc(0xeb)](_0x2f45ca,_0x8fa446);try{return await a0_0xa367a4[_0x12f7dc(0xa6)](_0x30f641),normalizePath(_0x2f45ca);}catch{}}_0x2f45ca=a0_0x54c6c3[_0x12f7dc(0xee)](_0x2f45ca);}return normalizePath(_0x6e8645);}await Promise[a0_0xae9690(0xd1)](args[a0_0xae9690(0xac)](async _0x1f4655=>{const _0x83c97c=a0_0xae9690;try{const _0x508b60=await a0_0xa367a4[_0x83c97c(0xb2)](expandHome(_0x1f4655));!_0x508b60[_0x83c97c(0x106)]()&&(console[_0x83c97c(0xaa)]('Error:\x20'+_0x1f4655+_0x83c97c(0x15b)),process[_0x83c97c(0xa8)](0x1));}catch(_0x1bb565){console[_0x83c97c(0xaa)]('Error\x20accessing\x20directory\x20'+_0x1f4655+':',_0x1bb565),process[_0x83c97c(0xa8)](0x1);}}));async function validatePath(_0x8f6c7a){const _0x2b7355=a0_0xae9690,_0x4415a3=expandHome(_0x8f6c7a),_0x342fa9=a0_0x54c6c3[_0x2b7355(0xd0)](_0x4415a3);try{const _0x5d84d4=await a0_0xa367a4['realpath'](_0x342fa9);return _0x5d84d4;}catch(_0xc30032){if(_0xc30032[_0x2b7355(0x184)]===_0x2b7355(0x165)){const _0x7fd318=a0_0x54c6c3[_0x2b7355(0xee)](_0x342fa9);try{const _0x52737d=await a0_0xa367a4[_0x2b7355(0x162)](_0x7fd318);return a0_0x54c6c3['join'](_0x52737d,a0_0x54c6c3['basename'](_0x342fa9));}catch{throw new Error(_0x2b7355(0x187)+_0x7fd318);}}throw _0xc30032;}}const MorphEditFileArgsSchema=z[a0_0xae9690(0x8f)]({'path':z['string'](),'code_edit':z[a0_0xae9690(0xb6)]()[a0_0xae9690(0xe5)]('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z[a0_0xae9690(0xb6)]()['describe']('A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.'),'dryRun':z[a0_0xae9690(0x176)]()[a0_0xae9690(0x144)](![])['describe'](a0_0xae9690(0x12b))}),WarpGrepArgsSchema=z[a0_0xae9690(0x8f)]({'search_string':z['string']()[a0_0xae9690(0xe5)]('Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for'),'repo_path':z[a0_0xae9690(0xb6)]()['describe'](a0_0xae9690(0xcb))}),WarpGrepGitHubArgsSchema=z[a0_0xae9690(0x8f)]({'search_string':z['string']()['describe'](a0_0xae9690(0xf6)),'github_url':z[a0_0xae9690(0xb6)]()['describe']('GitHub\x20repository\x20URL\x20or\x20\x27owner/repo\x27\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27\x20or\x20\x27https://github.com/vercel/next.js\x27)'),'branch':z[a0_0xae9690(0xb6)]()['optional']()[a0_0xae9690(0xe5)]('Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)')}),CodebaseSearchArgsSchema=z['object']({'query':z[a0_0xae9690(0xb6)]()[a0_0xae9690(0xe5)](a0_0xae9690(0x13d)),'repoId':z['string']()[a0_0xae9690(0xe5)](a0_0xae9690(0xe6)),'branch':z[a0_0xae9690(0xb6)]()[a0_0xae9690(0x119)]()[a0_0xae9690(0xe5)]('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z['string']()[a0_0xae9690(0x119)]()[a0_0xae9690(0xe5)](a0_0xae9690(0x159)),'targetDirectories':z[a0_0xae9690(0x12a)](z[a0_0xae9690(0xb6)]())[a0_0xae9690(0x144)]([])['describe'](a0_0xae9690(0x15a)),'limit':z[a0_0xae9690(0xcc)]()[a0_0xae9690(0x119)]()[a0_0xae9690(0x144)](0xa)[a0_0xae9690(0xe5)](a0_0xae9690(0x120))}),server=new Server({'name':a0_0xae9690(0x18d),'version':a0_0xae9690(0x135)},{'capabilities':{'tools':{}}});server[a0_0xae9690(0x128)](ListToolsRequestSchema,async()=>{const _0x9ab447=a0_0xae9690,_0x496adb=[{'name':_0x9ab447(0xf1),'description':_0x9ab447(0x14d)+'⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a'+_0x9ab447(0x126)+_0x9ab447(0xde)+'Benefits:\x0a'+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x9ab447(0xf9)+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+_0x9ab447(0xe9)+_0x9ab447(0x167)+_0x9ab447(0xf4)+_0x9ab447(0x93)+_0x9ab447(0x12d)+'-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a'+_0x9ab447(0x98)+_0x9ab447(0xd3)+_0x9ab447(0xd2)+_0x9ab447(0x142)+_0x9ab447(0xbb)+'-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a'+_0x9ab447(0x138)+_0x9ab447(0x131)+'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':_0x9ab447(0x182),'description':_0x9ab447(0x17b)+'This\x20tool\x20invokes\x20a\x20subagent\x20that\x20runs\x20parallel\x20grep\x20and\x20readfile\x20calls\x20over\x20multiple\x20turns\x20to\x20locate\x20line\x20ranges\x20and\x20files\x20which\x20might\x20be\x20relevant\x20to\x20the\x20request.\x20'+_0x9ab447(0x160)+'Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20'+_0x9ab447(0xf2)+_0x9ab447(0x11c)+_0x9ab447(0x188)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]},{'name':_0x9ab447(0xfc),'description':'**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a'+'⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a'+'🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a'+_0x9ab447(0x124)+_0x9ab447(0x12e)+'-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a'+'-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a'+_0x9ab447(0x181)+_0x9ab447(0x141)+_0x9ab447(0x9c)+'Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x10016a=_0x496adb[_0x9ab447(0x191)](_0x1fe8bf=>{const _0x53d8a8=_0x9ab447;if(!ENABLED_TOOLS['includes'](_0x1fe8bf['name']))return![];if(_0x53d8a8(0x156)in _0x1fe8bf&&_0x1fe8bf[_0x53d8a8(0x156)]&&!MORPH_API_KEY)return console[_0x53d8a8(0xaa)](_0x53d8a8(0x163)+_0x1fe8bf[_0x53d8a8(0xb7)]+_0x53d8a8(0x8d)),![];return!![];});return{'tools':_0x10016a[_0x9ab447(0xac)](_0x1aa05f=>({'name':_0x1aa05f['name'],'description':_0x1aa05f['description'],'inputSchema':_0x1aa05f[_0x9ab447(0x110)]}))};}),server['setRequestHandler'](CallToolRequestSchema,async _0x48d520=>{const _0x50c1ec=a0_0xae9690;try{const {name:_0x4a5b85,arguments:_0x433186}=_0x48d520[_0x50c1ec(0x161)];switch(_0x4a5b85){case _0x50c1ec(0xf1):{const _0x1e07c8=MorphEditFileArgsSchema[_0x50c1ec(0xf0)](_0x433186);if(!_0x1e07c8[_0x50c1ec(0xf8)])throw new Error(_0x50c1ec(0x16b)+_0x1e07c8[_0x50c1ec(0xaa)]);const _0x11c688=await validatePath(_0x1e07c8['data'][_0x50c1ec(0x132)]);let _0x5d7010=null,_0x4f8cb2=!![],_0x474d68=null;try{_0x5d7010=await a0_0xa367a4[_0x50c1ec(0x8c)](_0x11c688,_0x50c1ec(0x11d));}catch(_0x31463d){const _0x1485be=_0x31463d[_0x50c1ec(0x184)];_0x1485be==='ENOENT'?(_0x4f8cb2=![],_0x5d7010=''):(_0x474d68='Failed\x20to\x20read\x20file:\x20'+(_0x1485be||'unknown')+_0x50c1ec(0x179)+(_0x31463d instanceof Error?_0x31463d[_0x50c1ec(0x116)]:String(_0x31463d)),console[_0x50c1ec(0xaa)]('Warning:\x20'+_0x474d68));}let _0x3568ca;try{const _0x5185d1=MORPH_API_KEY;if(!_0x5185d1)throw new Error(_0x50c1ec(0x13e));const _0x2374a1=a0_0x54c6c3['dirname'](_0x11c688),_0x46d342=a0_0x54c6c3[_0x50c1ec(0x96)](_0x11c688),_0x546dbe=await executeEditFile({'target_filepath':_0x46d342,'code_edit':_0x1e07c8[_0x50c1ec(0xd7)]['code_edit'],'instructions':_0x1e07c8['data'][_0x50c1ec(0xa4)]},{'morphApiKey':_0x5185d1,'morphApiUrl':MORPH_API_URL,'baseDir':_0x2374a1,'autoWrite':!_0x1e07c8[_0x50c1ec(0xd7)][_0x50c1ec(0x177)],'generateUdiff':![],'debug':![]});_0x3568ca=_0x546dbe[_0x50c1ec(0x102)];if(!_0x546dbe[_0x50c1ec(0xf8)])throw new Error(_0x546dbe['error']||_0x50c1ec(0x168));const _0x288146=_0x546dbe[_0x50c1ec(0x10a)],_0x3c94b4=_0x50c1ec(0xbd)+_0x288146['linesAdded']+_0x50c1ec(0xb5)+_0x288146[_0x50c1ec(0x171)]+',\x20modified\x20'+_0x288146['linesModified'];if(_0x1e07c8[_0x50c1ec(0xd7)][_0x50c1ec(0x177)])return{'content':[{'type':'text','text':_0x50c1ec(0x8e)+(_0x4f8cb2?'':_0x50c1ec(0xb9))+':\x20'+_0x1e07c8[_0x50c1ec(0xd7)][_0x50c1ec(0xa4)]+_0x50c1ec(0xc8)+_0x3c94b4+'.\x20Path:\x20'+_0x1e07c8[_0x50c1ec(0xd7)][_0x50c1ec(0x132)]+'.'}]};return{'content':[{'type':_0x50c1ec(0x9f),'text':_0x50c1ec(0x108)+(_0x4f8cb2?_0x50c1ec(0xc2):_0x50c1ec(0x123))+':\x20'+_0x1e07c8[_0x50c1ec(0xd7)][_0x50c1ec(0xa4)]+_0x50c1ec(0xc8)+_0x3c94b4+_0x50c1ec(0x14e)+_0x1e07c8['data'][_0x50c1ec(0x132)]+'.'}]};}catch(_0x4b6f80){const _0x40004f=_0x4b6f80 instanceof Error?_0x4b6f80['message']:String(_0x4b6f80);return reportMorphError({'error_message':_0x40004f,'error_type':_0x4b6f80 instanceof Error?_0x4b6f80['constructor'][_0x50c1ec(0xb7)]:_0x50c1ec(0x17c),'context':{'tool':_0x50c1ec(0xf1),'completion_id':_0x3568ca,'file_path':_0x1e07c8[_0x50c1ec(0xd7)][_0x50c1ec(0x132)],'validated_path':_0x11c688,'instruction':_0x1e07c8[_0x50c1ec(0xd7)][_0x50c1ec(0xa4)],'model':_0x50c1ec(0xdb),'dry_run':_0x1e07c8[_0x50c1ec(0xd7)][_0x50c1ec(0x177)],'file_exists':_0x4f8cb2,'file_read_error':_0x474d68,'file_readable':_0x5d7010!==null,'request_content':{'path':_0x1e07c8[_0x50c1ec(0xd7)][_0x50c1ec(0x132)],'code_edit':_0x1e07c8[_0x50c1ec(0xd7)]['code_edit'],'instruction':_0x1e07c8[_0x50c1ec(0xd7)][_0x50c1ec(0xa4)],'original_code':_0x5d7010!==null?_0x5d7010['length']>0xc350?_0x5d7010[_0x50c1ec(0xc7)](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x5d7010[_0x50c1ec(0x114)]+_0x50c1ec(0x9d):_0x5d7010:_0x50c1ec(0xd9)+(_0x474d68||_0x50c1ec(0x103))+']','original_code_length':_0x5d7010?.['length']??0x0,'model':'morph-v3-fast','dry_run':_0x1e07c8[_0x50c1ec(0xd7)][_0x50c1ec(0x177)]}},'stack_trace':_0x4b6f80 instanceof Error?_0x4b6f80[_0x50c1ec(0x9b)]:undefined,'source':'mcp-filesystem'})[_0x50c1ec(0x134)](()=>{}),{'content':[{'type':_0x50c1ec(0x9f),'text':_0x50c1ec(0xa7)+_0x40004f}],'isError':!![]};}}case'warpgrep_codebase_search':{const _0x5ecac2=WarpGrepArgsSchema[_0x50c1ec(0xf0)](_0x433186);if(!_0x5ecac2['success'])return{'content':[{'type':'text','text':'Invalid\x20arguments:\x20'+_0x5ecac2[_0x50c1ec(0xaa)]}],'isError':!![]};const _0x241f2c=_0x52f0bb=>{const _0xb9522a=_0x50c1ec,_0x455035=[];for(const _0x25aa22 of _0x52f0bb||[]){const _0x4a03ab=_0x25aa22[_0xb9522a(0x169)],_0x154900=_0x25aa22[_0xb9522a(0xe7)];if(_0x4a03ab===_0xb9522a(0xef)&&_0x154900){const _0x5cc87a=_0x154900[_0xb9522a(0x18b)]('\x0a')['filter'](_0x2a0d56=>_0x2a0d56[_0xb9522a(0xec)]());for(const _0x3be803 of _0x5cc87a){const _0x28a016=_0x3be803['match'](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x28a016){_0x455035['push']('grep\x20\x27'+_0x28a016[0x1]+'\x27\x20'+_0x28a016[0x2]);continue;}const _0x4e6ab1=_0x3be803[_0xb9522a(0xab)](/^read\s+(.+)$/);if(_0x4e6ab1){_0x455035[_0xb9522a(0x122)]('read\x20'+_0x4e6ab1[0x1]);continue;}const _0x4da798=_0x3be803['match'](/^list_directory\s+(.+)$/);if(_0x4da798){_0x455035['push']('list_directory\x20'+_0x4da798[0x1]);continue;}}}}return _0x455035;},_0x510353=_0x4a929e=>{const _0x4cf5e3=_0x50c1ec,_0x217adb=[];if(!_0x4a929e||!Array[_0x4cf5e3(0x140)](_0x4a929e))return _0x217adb;const _0x4e6e54=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x4cf5e3(0x11e),'tool':_0x4cf5e3(0x100)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x4cf5e3(0x10f),'tool':_0x4cf5e3(0x100)},{'pattern':/\[READ ERROR\]/,'error_type':_0x4cf5e3(0x175),'tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x4cf5e3(0xfd),'tool':_0x4cf5e3(0x100)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x4cf5e3(0x173),'tool':_0x4cf5e3(0x90)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x4cf5e3(0x92),'tool':_0x4cf5e3(0x90)},{'pattern':/\[BINARY FILE\]/,'error_type':'BinaryFile','tool':_0x4cf5e3(0x100)},{'pattern':/\[SYMLINK\]/,'error_type':_0x4cf5e3(0xd6),'tool':_0x4cf5e3(0x100)},{'pattern':/not a text file/,'error_type':_0x4cf5e3(0xfd),'tool':_0x4cf5e3(0x100)},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':_0x4cf5e3(0x100)},{'pattern':/Error reading file:/,'error_type':_0x4cf5e3(0x175),'tool':_0x4cf5e3(0x100)},{'pattern':/status="error"/,'error_type':_0x4cf5e3(0xc4),'tool':'unknown'}];let _0x5f219d=0x0;for(const _0x16a228 of _0x4a929e){if(_0x16a228[_0x4cf5e3(0x169)]==='user'){_0x5f219d++;const _0x3d7afe=_0x16a228[_0x4cf5e3(0xe7)];if(!_0x3d7afe||typeof _0x3d7afe!==_0x4cf5e3(0xb6))continue;for(const {pattern:_0xfecb82,error_type:_0x50a300,tool:_0x21b1c3}of _0x4e6e54){const _0x51f60e=_0x3d7afe[_0x4cf5e3(0xab)](new RegExp(_0xfecb82[_0x4cf5e3(0xbc)],'g'));if(_0x51f60e)for(const _0x5d1c71 of _0x51f60e){const _0x263e56=_0x3d7afe[_0x4cf5e3(0x12f)](_0x5d1c71),_0x579f65=_0x3d7afe[_0x4cf5e3(0xc7)](_0x263e56,Math[_0x4cf5e3(0x118)](_0x263e56+0xc8,_0x3d7afe[_0x4cf5e3(0x114)]));_0x217adb[_0x4cf5e3(0x122)]({'tool':_0x21b1c3,'error_type':_0x50a300,'error_message':_0x579f65[_0x4cf5e3(0x18b)]('\x0a')[0x0],'turn':_0x5f219d});}}}}return _0x217adb;};try{const _0x43dec7=a0_0x54c6c3[_0x50c1ec(0xd0)](_0x5ecac2['data']['repo_path']),_0x12cfd0=new LocalRipgrepProvider(_0x43dec7),_0x3f708c=await runWarpGrep({'query':_0x5ecac2[_0x50c1ec(0xd7)][_0x50c1ec(0x9e)],'repoRoot':_0x43dec7,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x12cfd0}),_0x480e3e=_0x510353(_0x3f708c['messages']);_0x480e3e[_0x50c1ec(0x114)]>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x480e3e[_0x50c1ec(0x114)]+_0x50c1ec(0xcf),'error_type':_0x50c1ec(0x17f),'level':'warn','tool':_0x50c1ec(0x182),'context':{'repo_path':_0x5ecac2['data'][_0x50c1ec(0x121)],'query':_0x5ecac2[_0x50c1ec(0xd7)][_0x50c1ec(0x9e)],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x3f708c[_0x50c1ec(0x11f)],'sub_tool_errors':_0x480e3e,'timings':_0x3f708c['timings'],'tool_calls':_0x241f2c(_0x3f708c['messages']),'messages':_0x3f708c[_0x50c1ec(0xe3)]?.[_0x50c1ec(0xac)](_0xa45e3c=>({'role':_0xa45e3c['role'],'content':_0xa45e3c[_0x50c1ec(0xe7)]}))},'source':_0x50c1ec(0x19b)})[_0x50c1ec(0x134)](()=>{});let _0x331d35='';if(_0x3f708c['terminationReason']===_0x50c1ec(0xdd)&&_0x3f708c['finish']?.[_0x50c1ec(0x16f)]?.[_0x50c1ec(0x147)]){const _0x29e582=_0x3f708c[_0x50c1ec(0x10e)][_0x50c1ec(0x16f)][_0x50c1ec(0x147)];if(_0x29e582[_0x50c1ec(0x114)]===0x0)return _0x331d35=_0x3f708c[_0x50c1ec(0x10e)][_0x50c1ec(0x16e)]||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x50c1ec(0x9f),'text':_0x331d35}]};const _0x36c5fa=[],_0x17b119=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x4617f3 of _0x3f708c[_0x50c1ec(0xe3)]){const _0x12665c=_0x4617f3[_0x50c1ec(0x169)],_0x49a192=_0x4617f3[_0x50c1ec(0xe7)];if(_0x12665c===_0x50c1ec(0xef)&&_0x49a192){const _0x576a82=_0x49a192[_0x50c1ec(0x18b)]('\x0a')[_0x50c1ec(0x191)](_0x527f0f=>_0x527f0f[_0x50c1ec(0xec)]());for(const _0x52cf2d of _0x576a82){const _0x36ab41=_0x52cf2d[_0x50c1ec(0xab)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x36ab41){_0x17b119['push'](_0x50c1ec(0xb0)+_0x36ab41[0x1]+_0x50c1ec(0x11a)+_0x36ab41[0x2]+'`');continue;}const _0x1f2726=_0x52cf2d[_0x50c1ec(0xab)](/^read\s+(.+)$/);if(_0x1f2726){_0x17b119[_0x50c1ec(0x122)](_0x50c1ec(0xe2)+_0x1f2726[0x1]+'`');continue;}const _0x568554=_0x52cf2d[_0x50c1ec(0xab)](/^list_directory\s+(.+)$/);if(_0x568554){_0x17b119[_0x50c1ec(0x122)]('-\x20Listed\x20directory\x20`'+_0x568554[0x1]+'`');continue;}}}}_0x36c5fa[_0x50c1ec(0x122)](_0x17b119['join']('\x0a'));const _0x24bef6=['',_0x50c1ec(0x99)];for(const _0x3b0461 of _0x29e582){if(_0x3b0461['lines']==='*')_0x24bef6['push']('-\x20'+_0x3b0461[_0x50c1ec(0x132)]+':*');else{if(Array[_0x50c1ec(0x140)](_0x3b0461['lines'])){const _0xa725fc=_0x3b0461[_0x50c1ec(0xcd)][_0x50c1ec(0xac)](([_0x29d8a9,_0x4e9211])=>{if(_0x29d8a9===_0x4e9211)return''+_0x29d8a9;return _0x29d8a9+'-'+_0x4e9211;});_0x24bef6['push']('-\x20'+_0x3b0461[_0x50c1ec(0x132)]+':'+_0xa725fc[_0x50c1ec(0xeb)](','));}else _0x24bef6[_0x50c1ec(0x122)]('-\x20'+_0x3b0461[_0x50c1ec(0x132)]+':*');}}_0x24bef6[_0x50c1ec(0x122)](''),_0x36c5fa[_0x50c1ec(0x122)](_0x24bef6[_0x50c1ec(0xeb)]('\x0a')),_0x36c5fa['push'](_0x50c1ec(0x104));const _0x23f1f6=[];for(const _0x1b7c48 of _0x29e582){let _0x4bc3c5=a0_0x54c6c3[_0x50c1ec(0xd0)](_0x5ecac2[_0x50c1ec(0xd7)][_0x50c1ec(0x121)],_0x1b7c48['path']),_0xd76f32=null,_0x8f7dda=null;try{_0xd76f32=await a0_0xa367a4[_0x50c1ec(0x8c)](_0x4bc3c5,{'encoding':_0x50c1ec(0x11d)});}catch(_0x3b28cb){const _0x445385=fixPathRepetition(_0x4bc3c5);if(_0x445385)try{_0xd76f32=await a0_0xa367a4[_0x50c1ec(0x8c)](_0x445385,{'encoding':'utf-8'}),_0x4bc3c5=_0x445385;}catch{_0x8f7dda=_0x3b28cb instanceof Error?_0x3b28cb:new Error(String(_0x3b28cb));}else _0x8f7dda=_0x3b28cb instanceof Error?_0x3b28cb:new Error(String(_0x3b28cb));}if(_0xd76f32!==null){const _0x5526be=_0xd76f32[_0x50c1ec(0x18b)](/\r?\n/),_0x43dcc4=['<file\x20path=\x22'+_0x1b7c48[_0x50c1ec(0x132)]+'\x22>'];if(_0x1b7c48['lines']==='*'||!Array[_0x50c1ec(0x140)](_0x1b7c48[_0x50c1ec(0xcd)]))for(let _0x562875=0x1;_0x562875<=_0x5526be[_0x50c1ec(0x114)];_0x562875++){const _0x49821d=_0x5526be[_0x562875-0x1];_0x43dcc4[_0x50c1ec(0x122)](_0x562875+'|\x20'+_0x49821d);}else for(const [_0x2be376,_0x420588]of _0x1b7c48[_0x50c1ec(0xcd)]){_0x43dcc4[_0x50c1ec(0x114)]>0x1&&_0x43dcc4[_0x50c1ec(0x122)]('');for(let _0x8e6736=_0x2be376;_0x8e6736<=_0x420588&&_0x8e6736<=_0x5526be[_0x50c1ec(0x114)];_0x8e6736++){const _0x5e36c3=_0x5526be[_0x8e6736-0x1];_0x43dcc4['push'](_0x8e6736+'|\x20'+_0x5e36c3);}}_0x43dcc4['push'](_0x50c1ec(0xe0)),_0x23f1f6[_0x50c1ec(0x122)](_0x43dcc4[_0x50c1ec(0xeb)]('\x0a'));}else _0x23f1f6[_0x50c1ec(0x122)](_0x50c1ec(0x112)+_0x1b7c48[_0x50c1ec(0x132)]+_0x50c1ec(0x153)+(_0x8f7dda?.[_0x50c1ec(0x116)]||_0x50c1ec(0x186))+_0x50c1ec(0xc1));}_0x36c5fa[_0x50c1ec(0x122)](_0x23f1f6['join']('\x0a\x0a')),_0x331d35=_0x36c5fa[_0x50c1ec(0xeb)]('\x0a');const _0x2ebc9c=_0x3f708c[_0x50c1ec(0x15e)]?.['filter'](_0x516abe=>_0x516abe[_0x50c1ec(0x116)]?.[_0x50c1ec(0x15c)](_0x50c1ec(0x19c)))||[];if(_0x2ebc9c[_0x50c1ec(0x114)]>0x0){const _0x5a5fa6=_0x2ebc9c[_0x50c1ec(0xac)](_0x3d6116=>_0x3d6116[_0x50c1ec(0x116)])['join'](';\x20');reportMorphError({'error_message':_0x5a5fa6,'error_type':_0x50c1ec(0x139),'context':{'tool':_0x50c1ec(0x182),'repo_path':_0x5ecac2[_0x50c1ec(0xd7)][_0x50c1ec(0x121)],'query':_0x5ecac2[_0x50c1ec(0xd7)][_0x50c1ec(0x9e)],'model':_0x50c1ec(0x101),'termination_reason':'completed_with_file_errors','error_count':_0x2ebc9c['length'],'is_timeout':![],'timings':_0x3f708c['timings'],'files_attempted':_0x29e582[_0x50c1ec(0xac)](_0x47e558=>({'path':_0x47e558['path'],'lines':_0x47e558[_0x50c1ec(0xcd)]})),'tool_calls':_0x241f2c(_0x3f708c['messages']),'messages':_0x3f708c['messages']?.['map'](_0x379755=>({'role':_0x379755[_0x50c1ec(0x169)],'content':_0x379755['content']})),'request_content':{'query':_0x5ecac2[_0x50c1ec(0xd7)][_0x50c1ec(0x9e)],'repo_path':_0x5ecac2[_0x50c1ec(0xd7)][_0x50c1ec(0x121)],'repoRoot':a0_0x54c6c3[_0x50c1ec(0xd0)](_0x5ecac2['data'][_0x50c1ec(0x121)]),'model':_0x50c1ec(0x101)}},'source':_0x50c1ec(0x19b)})['catch'](()=>{});}}else{if(_0x3f708c[_0x50c1ec(0x11f)]===_0x50c1ec(0xc0)&&_0x3f708c[_0x50c1ec(0x15e)][_0x50c1ec(0x114)]>0x0){const _0x1a3d71=_0x3f708c[_0x50c1ec(0x15e)][_0x50c1ec(0xac)](_0x399d85=>_0x399d85[_0x50c1ec(0x116)])[_0x50c1ec(0xeb)](';\x20');_0x331d35=_0x50c1ec(0x17d)+_0x1a3d71;const _0x3dbd9c=_0x1a3d71['toLowerCase']()[_0x50c1ec(0xc3)](_0x50c1ec(0x115))||_0x1a3d71['toLowerCase']()[_0x50c1ec(0xc3)](_0x50c1ec(0x13b))||_0x1a3d71[_0x50c1ec(0xb8)]()['includes'](_0x50c1ec(0x13f)),_0x500e4c=_0x3f708c[_0x50c1ec(0x10e)]?.[_0x50c1ec(0x16f)]?.[_0x50c1ec(0x147)],_0x523b7c=_0x3f708c[_0x50c1ec(0x15e)][0x0];reportMorphError({'error_message':_0x1a3d71,'error_type':_0x3dbd9c?_0x50c1ec(0xd8):_0x523b7c?.[_0x50c1ec(0xbe)]?.[_0x50c1ec(0xb7)]||_0x50c1ec(0x189),'context':{'tool':_0x50c1ec(0x182),'repo_path':_0x5ecac2[_0x50c1ec(0xd7)][_0x50c1ec(0x121)],'query':_0x5ecac2['data'][_0x50c1ec(0x9e)],'model':_0x50c1ec(0x101),'termination_reason':_0x3f708c[_0x50c1ec(0x11f)],'error_count':_0x3f708c[_0x50c1ec(0x15e)][_0x50c1ec(0x114)],'is_timeout':_0x3dbd9c,'timings':_0x3f708c[_0x50c1ec(0x17a)],'files_attempted':_0x500e4c?.['map'](_0x3f4b82=>({'path':_0x3f4b82[_0x50c1ec(0x132)],'lines':_0x3f4b82['lines']})),'tool_calls':_0x241f2c(_0x3f708c[_0x50c1ec(0xe3)]),'messages':_0x3f708c['messages']?.['map'](_0x4baeef=>({'role':_0x4baeef['role'],'content':_0x4baeef['content']})),'request_content':{'query':_0x5ecac2[_0x50c1ec(0xd7)]['search_string'],'repo_path':_0x5ecac2[_0x50c1ec(0xd7)][_0x50c1ec(0x121)],'repoRoot':a0_0x54c6c3[_0x50c1ec(0xd0)](_0x5ecac2['data'][_0x50c1ec(0x121)]),'model':_0x50c1ec(0x101)}},'stack_trace':_0x523b7c?.[_0x50c1ec(0x9b)]||undefined,'source':_0x50c1ec(0x19b)})['catch'](()=>{});}else _0x331d35=_0x50c1ec(0x180);}return{'content':[{'type':'text','text':_0x331d35}]};}catch(_0x43fe54){const _0xed39d7=_0x43fe54 instanceof Error?_0x43fe54[_0x50c1ec(0x116)]:String(_0x43fe54),_0x423f47=_0xed39d7[_0x50c1ec(0xb8)]()[_0x50c1ec(0xc3)](_0x50c1ec(0x115))||_0xed39d7[_0x50c1ec(0xb8)]()['includes'](_0x50c1ec(0x13b))||_0xed39d7['toLowerCase']()[_0x50c1ec(0xc3)]('etimedout')||_0x43fe54 instanceof Error&&_0x43fe54['name']===_0x50c1ec(0xd8);return reportMorphError({'error_message':_0xed39d7,'error_type':_0x423f47?_0x50c1ec(0xd8):_0x43fe54 instanceof Error?_0x43fe54[_0x50c1ec(0xbe)][_0x50c1ec(0xb7)]:_0x50c1ec(0x17c),'context':{'tool':'warpgrep_codebase_search','repo_path':_0x5ecac2[_0x50c1ec(0xd7)][_0x50c1ec(0x121)],'query':_0x5ecac2[_0x50c1ec(0xd7)][_0x50c1ec(0x9e)],'model':_0x50c1ec(0x101),'is_timeout':_0x423f47,'exception_phase':_0x50c1ec(0x166),'request_content':{'query':_0x5ecac2[_0x50c1ec(0xd7)]['search_string'],'repo_path':_0x5ecac2['data'][_0x50c1ec(0x121)],'repoRoot':a0_0x54c6c3[_0x50c1ec(0xd0)](_0x5ecac2[_0x50c1ec(0xd7)][_0x50c1ec(0x121)]),'model':_0x50c1ec(0x101)}},'stack_trace':_0x43fe54 instanceof Error?_0x43fe54['stack']:undefined,'source':'mcp-filesystem'})[_0x50c1ec(0x134)](()=>{}),{'content':[{'type':_0x50c1ec(0x9f),'text':_0x50c1ec(0x16d)+_0xed39d7}],'isError':![]};}}case'warpgrep_github_search':{const _0x2eb16a=WarpGrepGitHubArgsSchema['safeParse'](_0x433186);if(!_0x2eb16a[_0x50c1ec(0xf8)])return{'content':[{'type':'text','text':_0x50c1ec(0x155)+_0x2eb16a[_0x50c1ec(0xaa)]}],'isError':!![]};const _0xeec67e=MORPH_API_KEY;if(!_0xeec67e)throw new Error(_0x50c1ec(0x13e));const _0x23abbd=Date[_0x50c1ec(0xf5)]();console[_0x50c1ec(0xaa)]('[warpgrep_github_search]\x20Searching\x20'+_0x2eb16a[_0x50c1ec(0xd7)][_0x50c1ec(0x148)]+_0x50c1ec(0x15f)+_0x2eb16a[_0x50c1ec(0xd7)][_0x50c1ec(0x9e)]+'\x22');try{const _0x2f6257=new WarpGrepClient({'morphApiKey':_0xeec67e,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0xefffa5=await _0x2f6257['searchGitHub']({'query':_0x2eb16a[_0x50c1ec(0xd7)]['search_string'],'github':_0x2eb16a[_0x50c1ec(0xd7)][_0x50c1ec(0x148)],'branch':_0x2eb16a[_0x50c1ec(0xd7)][_0x50c1ec(0xdc)]}),_0xb6c82c=Date[_0x50c1ec(0xf5)]()-_0x23abbd;console['error'](_0x50c1ec(0x149)+_0xb6c82c+_0x50c1ec(0x150)+_0xefffa5[_0x50c1ec(0xf8)]);const _0x12a7a5=formatResult(_0xefffa5);return{'content':[{'type':_0x50c1ec(0x9f),'text':_0x12a7a5}]};}catch(_0x2c4077){const _0xb3ae10=Date['now']()-_0x23abbd,_0x43ae64=_0x2c4077 instanceof Error?_0x2c4077['message']:String(_0x2c4077);return console[_0x50c1ec(0xaa)](_0x50c1ec(0x17e)+_0xb3ae10+_0x50c1ec(0x136),_0x43ae64),reportMorphError({'error_message':_0x43ae64,'error_type':_0x2c4077 instanceof Error?_0x2c4077[_0x50c1ec(0xbe)][_0x50c1ec(0xb7)]:_0x50c1ec(0x17c),'context':{'tool':_0x50c1ec(0x14b),'github_url':_0x2eb16a[_0x50c1ec(0xd7)][_0x50c1ec(0x148)],'search_string':_0x2eb16a[_0x50c1ec(0xd7)][_0x50c1ec(0x9e)],'branch':_0x2eb16a[_0x50c1ec(0xd7)]['branch']},'stack_trace':_0x2c4077 instanceof Error?_0x2c4077[_0x50c1ec(0x9b)]:undefined,'source':_0x50c1ec(0x19b),'tool':'warpgrep_github_search','latency_ms':_0xb3ae10})['catch'](()=>{}),{'content':[{'type':'text','text':_0x50c1ec(0x10c)+_0x43ae64}],'isError':![]};}}case _0x50c1ec(0xfc):{const _0x361451=CodebaseSearchArgsSchema['safeParse'](_0x433186);if(!_0x361451[_0x50c1ec(0xf8)])return{'content':[{'type':_0x50c1ec(0x9f),'text':_0x50c1ec(0x155)+_0x361451[_0x50c1ec(0xaa)]}],'isError':!![]};try{const _0x351bcb=MORPH_API_KEY;if(!_0x351bcb)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.');const _0x5f4980=_0x361451[_0x50c1ec(0xd7)]['targetDirectories'],_0x232951=await executeCodebaseSearch({'query':_0x361451[_0x50c1ec(0xd7)][_0x50c1ec(0xed)],'target_directories':_0x5f4980,'limit':_0x361451[_0x50c1ec(0xd7)][_0x50c1ec(0x16a)]},{'apiKey':_0x351bcb,'repoId':_0x361451[_0x50c1ec(0xd7)][_0x50c1ec(0x170)],'branch':_0x361451[_0x50c1ec(0xd7)][_0x50c1ec(0xdc)],'commitHash':_0x361451[_0x50c1ec(0xd7)]['commitHash'],'debug':![]});if(!_0x232951[_0x50c1ec(0xf8)])return{'content':[{'type':_0x50c1ec(0x9f),'text':_0x50c1ec(0xea)+_0x232951[_0x50c1ec(0xaa)]}],'isError':!![]};const _0x39ad0f=_0x232951['results'][_0x50c1ec(0x114)]===0x0?_0x50c1ec(0x18f)+_0x361451[_0x50c1ec(0xd7)][_0x50c1ec(0xed)]+'\x22':_0x50c1ec(0x190)+_0x232951[_0x50c1ec(0x193)]['length']+'\x20results\x20in\x20'+_0x232951[_0x50c1ec(0x14a)][_0x50c1ec(0x95)]+_0x50c1ec(0xf3)+_0x232951[_0x50c1ec(0x193)]['map']((_0xdac8ee,_0x3e7b3e)=>_0x3e7b3e+0x1+'.\x20'+_0xdac8ee[_0x50c1ec(0x91)]+'\x20('+(_0xdac8ee['rerankScore']*0x64)[_0x50c1ec(0x178)](0x1)+_0x50c1ec(0x94)+(_0x50c1ec(0xd4)+_0xdac8ee['startLine']+'-'+_0xdac8ee['endLine']+'\x0a')+(_0x50c1ec(0xe4)+_0xdac8ee[_0x50c1ec(0xe7)][_0x50c1ec(0xc7)](0x0,0xc8)+(_0xdac8ee[_0x50c1ec(0xe7)]['length']>0xc8?_0x50c1ec(0x125):'')+'\x0a'))[_0x50c1ec(0xeb)]('\x0a');return{'content':[{'type':_0x50c1ec(0x9f),'text':_0x39ad0f}]};}catch(_0x2cf8cb){const _0x1814c5=_0x2cf8cb instanceof Error?_0x2cf8cb[_0x50c1ec(0x116)]:String(_0x2cf8cb);return reportMorphError({'error_message':_0x1814c5,'error_type':_0x2cf8cb instanceof Error?_0x2cf8cb[_0x50c1ec(0xbe)]['name']:_0x50c1ec(0x17c),'context':{'tool':'codebase_search','query':_0x361451[_0x50c1ec(0xd7)][_0x50c1ec(0xed)],'repo_id':_0x361451['data'][_0x50c1ec(0x170)],'target_directories':_0x361451[_0x50c1ec(0xd7)][_0x50c1ec(0xfe)]},'stack_trace':_0x2cf8cb instanceof Error?_0x2cf8cb['stack']:undefined,'source':_0x50c1ec(0x19b)})[_0x50c1ec(0x134)](()=>{}),{'content':[{'type':_0x50c1ec(0x9f),'text':_0x50c1ec(0x17d)+_0x1814c5}],'isError':!![]};}}default:throw new Error('Unknown\x20tool:\x20'+_0x4a5b85);}}catch(_0x57d747){const _0x32685a=_0x57d747 instanceof Error?_0x57d747['message']:String(_0x57d747);return reportMorphError({'error_message':_0x32685a,'error_type':_0x57d747 instanceof Error?_0x57d747[_0x50c1ec(0xbe)][_0x50c1ec(0xb7)]:_0x50c1ec(0x17c),'context':{'tool':name,'arguments':args?JSON[_0x50c1ec(0x97)](args)['substring'](0x0,0x1f4):undefined,'mcp_server_version':_0x50c1ec(0x135)},'stack_trace':_0x57d747 instanceof Error?_0x57d747[_0x50c1ec(0x9b)]:undefined,'source':_0x50c1ec(0x19b)})[_0x50c1ec(0x134)](()=>{}),{'content':[{'type':_0x50c1ec(0x9f),'text':_0x50c1ec(0x17d)+_0x32685a}],'isError':!![]};}});function a0_0x50a9(_0x57900e,_0x2af5e8){_0x57900e=_0x57900e-0x8c;const _0x50200b=a0_0x5020();let _0x50a948=_0x50200b[_0x57900e];return _0x50a948;}async function updateAllowedDirectoriesFromRoots(_0x3ded2b){const _0x418927=a0_0xae9690,_0xfba6fb=await getValidRootDirectories(_0x3ded2b);if(_0xfba6fb[_0x418927(0x114)]>0x0)allowedDirectories=[..._0xfba6fb],console['error'](_0x418927(0xa3)+_0xfba6fb[_0x418927(0x114)]+'\x20valid\x20directories');else{console[_0x418927(0xaa)](_0x418927(0x197));if(ENABLE_WORKSPACE_MODE)try{const _0x545239=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x545239&&(allowedDirectories=[_0x545239],console['error'](_0x418927(0x12c)+_0x545239));}catch(_0x284302){console[_0x418927(0xaa)](_0x418927(0x10d)+_0x284302);}}}server[a0_0xae9690(0xc6)](RootsListChangedNotificationSchema,async()=>{const _0x573ae5=a0_0xae9690;try{const _0x572f21=await server['listRoots']();_0x572f21&&_0x573ae5(0x133)in _0x572f21&&await updateAllowedDirectoriesFromRoots(_0x572f21[_0x573ae5(0x133)]);}catch(_0x25610b){console[_0x573ae5(0xaa)](_0x573ae5(0x18a),_0x25610b instanceof Error?_0x25610b[_0x573ae5(0x116)]:String(_0x25610b));}}),server['oninitialized']=async()=>{const _0x457b14=a0_0xae9690,_0x40a134=server['getClientCapabilities']();if(_0x40a134?.['roots'])try{const _0x21d2fd=await server[_0x457b14(0x152)]();_0x21d2fd&&'roots'in _0x21d2fd?await updateAllowedDirectoriesFromRoots(_0x21d2fd[_0x457b14(0x133)]):console['error']('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x305232){console[_0x457b14(0xaa)](_0x457b14(0xc5),_0x305232 instanceof Error?_0x305232[_0x457b14(0x116)]:String(_0x305232));}else{if(allowedDirectories[_0x457b14(0x114)]>0x0)console[_0x457b14(0xaa)]('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:',allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console[_0x457b14(0xaa)](_0x457b14(0xad));else throw new Error(_0x457b14(0x19a));}}};async function runServer(){const _0x2bc1b5=a0_0xae9690,_0x90737d=new StdioServerTransport();await server[_0x2bc1b5(0x11b)](_0x90737d),console[_0x2bc1b5(0xaa)](_0x2bc1b5(0x154)),allowedDirectories[_0x2bc1b5(0x114)]===0x0&&console[_0x2bc1b5(0xaa)](_0x2bc1b5(0xb3));}runServer()[a0_0xae9690(0x134)](_0xc698d0=>{const _0x3e4d9e=a0_0xae9690;console[_0x3e4d9e(0xaa)](_0x3e4d9e(0x143),_0xc698d0),process[_0x3e4d9e(0xa8)](0x1);});
2
+ const a0_0xf26819=a0_0x3807;(function(_0x25fec2,_0x3dfbe6){const _0x23ccd5=a0_0x3807,_0x64b1e7=_0x25fec2();while(!![]){try{const _0x21f902=parseInt(_0x23ccd5(0x29a))/0x1+-parseInt(_0x23ccd5(0x2ad))/0x2*(-parseInt(_0x23ccd5(0x248))/0x3)+parseInt(_0x23ccd5(0x2c8))/0x4*(-parseInt(_0x23ccd5(0x235))/0x5)+-parseInt(_0x23ccd5(0x277))/0x6*(parseInt(_0x23ccd5(0x2a8))/0x7)+parseInt(_0x23ccd5(0x2cc))/0x8*(-parseInt(_0x23ccd5(0x214))/0x9)+parseInt(_0x23ccd5(0x2f7))/0xa+parseInt(_0x23ccd5(0x25e))/0xb*(-parseInt(_0x23ccd5(0x2c0))/0xc);if(_0x21f902===_0x3dfbe6)break;else _0x64b1e7['push'](_0x64b1e7['shift']());}catch(_0x47d89e){_0x64b1e7['push'](_0x64b1e7['shift']());}}}(a0_0x301f,0x9d036));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_0x2a0874 from'fs/promises';import a0_0x400803 from'path';import a0_0x11cd39 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-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{executeCodebaseSearch}from'@morphllm/morphsdk/tools/codebase-search';import a0_0x57d5ba from'axios';function fixPathRepetition(_0x3ea6f7){const _0x472001=a0_0x3807,_0x3489aa=_0x3ea6f7[_0x472001(0x287)](a0_0x400803[_0x472001(0x2ba)])[_0x472001(0x2a0)](Boolean);if(_0x3489aa['length']<0x2)return null;for(let _0x4a4921=Math[_0x472001(0x2e9)](_0x3489aa[_0x472001(0x2ee)]/0x2);_0x4a4921>=0x1;_0x4a4921--){for(let _0x141b1d=0x0;_0x141b1d<=_0x3489aa[_0x472001(0x2ee)]-0x2*_0x4a4921;_0x141b1d++){const _0x258e3a=_0x3489aa[_0x472001(0x2ac)](_0x141b1d,_0x141b1d+_0x4a4921),_0x35dff6=_0x3489aa[_0x472001(0x2ac)](_0x141b1d+_0x4a4921,_0x141b1d+0x2*_0x4a4921);if(_0x258e3a['every']((_0x17e51c,_0x4216ff)=>_0x17e51c===_0x35dff6[_0x4216ff])){const _0xcb501c=[..._0x3489aa['slice'](0x0,_0x141b1d),..._0x3489aa['slice'](_0x141b1d+_0x4a4921)];return a0_0x400803[_0x472001(0x2ba)]+_0xcb501c[_0x472001(0x247)](a0_0x400803[_0x472001(0x2ba)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x303c79=a0_0x3807;try{const _0x3add8c=require(_0x303c79(0x26a));return _0x3add8c[_0x303c79(0x29f)]??_0x303c79(0x2b0);}catch(_0x3e8795){return console['error'](_0x303c79(0x2b5),_0x3e8795),_0x303c79(0x2b0);}}function printHelp(){const _0x49cdff=a0_0x3807;console['log']('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x49cdff(0x244)](_0x49cdff(0x300)),console[_0x49cdff(0x244)](_0x49cdff(0x21e)),console['log'](_0x49cdff(0x24f)),console[_0x49cdff(0x244)](_0x49cdff(0x23b)),console[_0x49cdff(0x244)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console[_0x49cdff(0x244)](_0x49cdff(0x21f)),console[_0x49cdff(0x244)](_0x49cdff(0x219)),console['log'](_0x49cdff(0x256));}const cliArgs=process['argv']['slice'](0x2),VERSION_FLAGS=new Set([a0_0xf26819(0x2c2),'-v','-V']),HELP_FLAGS=new Set(['--help','-h']);cliArgs[a0_0xf26819(0x2a1)](_0x2e223b=>VERSION_FLAGS[a0_0xf26819(0x2a5)](_0x2e223b))&&(console[a0_0xf26819(0x244)](a0_0xf26819(0x2a4)+getPackageVersion()),process[a0_0xf26819(0x26d)](0x0));cliArgs[a0_0xf26819(0x2a1)](_0x5e52bd=>HELP_FLAGS[a0_0xf26819(0x2a5)](_0x5e52bd))&&(printHelp(),process[a0_0xf26819(0x26d)](0x0));function getCliArg(_0x1ddbad){const _0x42ead3=a0_0xf26819;for(let _0x8f99c7=0x0;_0x8f99c7<cliArgs['length'];_0x8f99c7++){const _0x496e6b=cliArgs[_0x8f99c7];if(_0x496e6b['startsWith']('--'+_0x1ddbad+'='))return _0x496e6b[_0x42ead3(0x2ac)](('--'+_0x1ddbad+'=')[_0x42ead3(0x2ee)]);if(_0x496e6b==='--'+_0x1ddbad&&_0x8f99c7+0x1<cliArgs['length'])return cliArgs[_0x8f99c7+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0xf26819(0x2ee)];i++){const arg=cliArgs[i];if(VERSION_FLAGS['has'](arg)||HELP_FLAGS[a0_0xf26819(0x2a5)](arg))continue;if(arg['startsWith'](a0_0xf26819(0x25b)))continue;if(arg===a0_0xf26819(0x2d9)){i++;continue;}args[a0_0xf26819(0x21b)](arg);}const ALL_TOOLS=[a0_0xf26819(0x2ab),a0_0xf26819(0x268),a0_0xf26819(0x27a),a0_0xf26819(0x21c)],DEFAULT_TOOLS=['edit_file','warpgrep_codebase_search',a0_0xf26819(0x27a)],ENABLED_TOOLS=process[a0_0xf26819(0x23a)]['ENABLED_TOOLS']?process[a0_0xf26819(0x23a)][a0_0xf26819(0x294)]===a0_0xf26819(0x223)?ALL_TOOLS:process[a0_0xf26819(0x23a)][a0_0xf26819(0x294)]['split'](',')[a0_0xf26819(0x273)](_0xd95d23=>_0xd95d23['trim']()):DEFAULT_TOOLS;console[a0_0xf26819(0x290)](a0_0xf26819(0x1f2)+ENABLED_TOOLS[a0_0xf26819(0x247)](',\x20'));function a0_0x3807(_0x1312a8,_0x5a728f){_0x1312a8=_0x1312a8-0x1ea;const _0x301f50=a0_0x301f();let _0x380747=_0x301f50[_0x1312a8];return _0x380747;}const WORKSPACE_ROOT=process['env'][a0_0xf26819(0x1fc)]||process[a0_0xf26819(0x23a)]['PWD']||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0xf26819(0x23a)][a0_0xf26819(0x302)]!==a0_0xf26819(0x2c6),MORPH_API_KEY=getCliArg('api-key')??process[a0_0xf26819(0x23a)]['MORPH_API_KEY'],MORPH_API_URL=process[a0_0xf26819(0x23a)][a0_0xf26819(0x288)],MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0xf26819(0x212)]?parseInt(process[a0_0xf26819(0x23a)][a0_0xf26819(0x212)],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY[a0_0xf26819(0x25a)](a0_0xf26819(0x2e7))&&!MORPH_API_KEY[a0_0xf26819(0x25a)](a0_0xf26819(0x228))&&console[a0_0xf26819(0x290)](a0_0xf26819(0x249));async function reportMorphError(_0x1ce3fc){const _0x4d69ba=a0_0xf26819;try{await a0_0x57d5ba['post'](_0x4d69ba(0x269),{..._0x1ce3fc,'timestamp':new Date()[_0x4d69ba(0x237)](),'source':_0x1ce3fc[_0x4d69ba(0x1ff)]||_0x4d69ba(0x281)},{'timeout':0x1388,'headers':{'Content-Type':_0x4d69ba(0x21d),'Authorization':_0x4d69ba(0x218)+MORPH_API_KEY}});}catch{}}args[a0_0xf26819(0x2ee)]===0x0&&!ENABLE_WORKSPACE_MODE&&(console['error'](a0_0xf26819(0x29b)),console['error']('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),console[a0_0xf26819(0x290)](a0_0xf26819(0x22d)),console[a0_0xf26819(0x290)](a0_0xf26819(0x204)),console['error'](a0_0xf26819(0x267)),console['error'](a0_0xf26819(0x28d)));function normalizePath(_0x49e911){const _0x51701f=a0_0xf26819;return a0_0x400803[_0x51701f(0x278)](_0x49e911);}function expandHome(_0x24b67e){const _0x5f1e31=a0_0xf26819;if(_0x24b67e[_0x5f1e31(0x25a)]('~/')||_0x24b67e==='~')return a0_0x400803['join'](a0_0x11cd39['homedir'](),_0x24b67e[_0x5f1e31(0x2ac)](0x1));return _0x24b67e;}let allowedDirectories=await Promise[a0_0xf26819(0x223)](args[a0_0xf26819(0x273)](async _0x451648=>{const _0x34d30a=a0_0xf26819,_0x4bfdd6=expandHome(_0x451648),_0x16baa7=a0_0x400803['resolve'](_0x4bfdd6);try{const _0x3d39af=await a0_0x2a0874[_0x34d30a(0x1ef)](_0x16baa7);return normalizePath(_0x3d39af);}catch(_0x8f5f7a){return normalizePath(_0x16baa7);}}));function a0_0x301f(){const _0x4574ee=['Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','message','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','added\x20','version','filter','some','-\x20Read\x20file\x20`','object','@morphllm/morphmcp\x20','has','boolean','role','2015167APUHNA','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','The\x20search\x20term\x20should\x20be\x20a\x20targeted\x20natural\x20language\x20query\x20based\x20on\x20what\x20you\x20are\x20trying\x20to\x20accomplish,\x20like\x20\x27Find\x20where\x20authentication\x20requests\x20are\x20handled\x20in\x20the\x20Express\x20routes\x27\x20or\x20\x27Modify\x20the\x20agentic\x20rollout\x20to\x20use\x20the\x20new\x20tokenizer\x20and\x20chat\x20template\x27\x20or\x20\x27Fix\x20the\x20bug\x20where\x20the\x20user\x20gets\x20redirected\x20from\x20the\x20/feed\x20page\x27.\x20','edit_file','slice','1073602SbNNVX','Fallback:\x20Using\x20workspace\x20root\x20','timed\x20out','unknown','linesRemoved','WarpGrep\x20sub-tool\x20errors:\x20','SymlinkError','Created\x20File','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','FileReadError','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','Warning:\x20Workspace\x20fallback\x20failed:\x20','Specific\x20commit\x20hash\x20to\x20search','sep','success','now','[could\x20not\x20read\x20file:\x20','ENOENT','Query\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','4398936JWCzhF','ms:','--version','Preview\x20changes\x20without\x20applying\x20them.','Found\x20','Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20','false','node_modules','154984aZYlCe','searchTimeMs','grep\x20\x27','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','2099256eczGit','requiresApiKey','files','Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for','Benefits:\x0a','.\x20Changes:\x20','morph-warp-grep-v1-1111v0','terminationReason','messages','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','repo_path','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','TimeoutError','--api-key','isArray','completed_with_file_errors','code','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.','FileNotFound','toFixed','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','getClientCapabilities','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','dryRun','This\x20tool\x20invokes\x20a\x20subagent\x20that\x20runs\x20parallel\x20grep\x20and\x20readfile\x20calls\x20over\x20multiple\x20turns\x20to\x20locate\x20line\x20ranges\x20and\x20files\x20which\x20might\x20be\x20relevant\x20to\x20the\x20request.\x20','UnknownError','sk-','Error\x20running\x20fast\x20context\x20search:\x20','floor','substring','match','Warning:\x20','endLine','length','optional','rerankScore','\x20results\x20in\x20','linesModified','GitHub\x20repository\x20URL\x20or\x20\x27owner/repo\x27\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27\x20or\x20\x27https://github.com/vercel/next.js\x27)','\x20-\x20','trim','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','6659940xNXfUc','params','grep','terminated','number','user','setRequestHandler','utf-8','\x20chars)','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','\x20is\x20not\x20a\x20directory','ENABLE_WORKSPACE_MODE','Search\x20failed:\x20','etimedout','targetDirectories','\x20(new\x20file)','Error:\x20','realpath','Max\x20results\x20to\x20return','search_string','Enabled\x20tools:\x20','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','\x20for:\x20\x22','errors','Cargo.toml','ReadError','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','-\x20Grepped\x20\x27','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','WORKSPACE_ROOT','read','RipgrepNotAvailable','source','package.json','timings','dirname','stat','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','instruction','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','...','lines','code_edit','content','constructor','assistant','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','includes','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','Workspace\x20mode\x20enabled:\x20Using\x20','MORPH_WARP_GREP_TIMEOUT','safeParse','9ZuqucE','path','commitHash','metadata','Bearer\x20','\x20\x20morph-mcp','query','push','codebase_search','application/json','\x0aOptions:','\x0aExamples:','⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a','tsconfig.json','completed','all','\x20\x20\x20','query_type','Morph\x20Edit\x20','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.','morph-','morph-mcp','array','.\x20Path:\x20','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','0.2.0','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','WarpGrepError','catch','Unknown\x20tool:\x20','pyproject.toml','finish','30ZonzoH','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','toISOString','[warpgrep_github_search]\x20Failed\x20in\x20','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','env','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','warn','toLowerCase','Error\x20accessing\x20directory\x20','describe','access','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20','runWarpGrep_call','completionId','log','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','min','join','3JIpvWh','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','\x22>\x0aError\x20reading\x20file:\x20','❌\x20Morph\x20Edit\x20Failed:\x20','default','-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','[warpgrep_github_search]\x20Searching\x20','stats','Note:\x20The\x20files\x20and\x20line\x20ranges\x20returned\x20by\x20this\x20tool\x20may\x20be\x20some\x20of\x20the\x20ones\x20needed\x20to\x20complete\x20the\x20user\x27s\x20request,\x20but\x20you\x20should\x20be\x20careful\x20in\x20evaluating\x20the\x20relevance\x20of\x20the\x20results,\x20since\x20the\x20subagent\x20might\x20make\x20mistakes.\x20','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','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','GitHub\x20search\x20failed:\x20','stack','startsWith','--api-key=','SubToolError','string','11MPpdua','BinaryFile','Repository\x20identifier','<file\x20path=\x22','branch','Applied','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','basename','name','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','warpgrep_codebase_search','https://morphllm.com/api/error-report','../package.json','enum','-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a','exit','repoId','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','Parent\x20directory\x20does\x20not\x20exist:\x20',',\x20modified\x20','</file>','map','Fatal\x20error\x20running\x20server:','morph-v3-fast','searchGitHub','6EoUFzR','normalize','oninitialized','warpgrep_github_search','linesAdded','resolve','startLine','readFile','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','Invalid\x20arguments:\x20','mcp-filesystem','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.','listRoots','data','stringify','ms:\x0a\x0a','split','MORPH_API_URL','roots',',\x20removed\x20','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','-\x20Listed\x20directory\x20`','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','ToolException','description','error','setNotificationHandler','results','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','ENABLED_TOOLS','text','Morph\x20Edit\x20Preview','inputSchema','No\x20results\x20found\x20for\x20query:\x20\x22','github_url','589673MOpSJr'];a0_0x301f=function(){return _0x4574ee;};return a0_0x301f();}if(ENABLE_WORKSPACE_MODE&&args[a0_0xf26819(0x2ee)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories['push'](workspaceDir),console[a0_0xf26819(0x290)](a0_0xf26819(0x211)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x42e7ba){console[a0_0xf26819(0x290)]('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x42e7ba);}async function detectWorkspaceRoot(_0x1a44b7){const _0x38d7ba=a0_0xf26819;let _0x292051=a0_0x400803[_0x38d7ba(0x27c)](_0x1a44b7);const _0x4ee4c6=['.git','.vscode',_0x38d7ba(0x200),_0x38d7ba(0x1f6),_0x38d7ba(0x233),'go.mod','.cursor',_0x38d7ba(0x221),'composer.json'];while(_0x292051!==a0_0x400803[_0x38d7ba(0x202)](_0x292051)){for(const _0x595164 of _0x4ee4c6){const _0xd8ab1=a0_0x400803[_0x38d7ba(0x247)](_0x292051,_0x595164);try{return await a0_0x2a0874[_0x38d7ba(0x240)](_0xd8ab1),normalizePath(_0x292051);}catch{}}_0x292051=a0_0x400803['dirname'](_0x292051);}return normalizePath(_0x1a44b7);}await Promise[a0_0xf26819(0x223)](args[a0_0xf26819(0x273)](async _0x45418e=>{const _0x98e17b=a0_0xf26819;try{const _0x4645db=await a0_0x2a0874[_0x98e17b(0x203)](expandHome(_0x45418e));!_0x4645db['isDirectory']()&&(console[_0x98e17b(0x290)]('Error:\x20'+_0x45418e+_0x98e17b(0x301)),process[_0x98e17b(0x26d)](0x1));}catch(_0x50f630){console[_0x98e17b(0x290)](_0x98e17b(0x23e)+_0x45418e+':',_0x50f630),process[_0x98e17b(0x26d)](0x1);}}));async function validatePath(_0x170e4e){const _0x8f0ebb=a0_0xf26819,_0x2b678c=expandHome(_0x170e4e),_0x1b584d=a0_0x400803[_0x8f0ebb(0x27c)](_0x2b678c);try{const _0x25f025=await a0_0x2a0874['realpath'](_0x1b584d);return _0x25f025;}catch(_0x538a96){if(_0x538a96[_0x8f0ebb(0x2dc)]===_0x8f0ebb(0x2be)){const _0x611a30=a0_0x400803['dirname'](_0x1b584d);try{const _0x482a7c=await a0_0x2a0874[_0x8f0ebb(0x1ef)](_0x611a30);return a0_0x400803[_0x8f0ebb(0x247)](_0x482a7c,a0_0x400803[_0x8f0ebb(0x265)](_0x1b584d));}catch{throw new Error(_0x8f0ebb(0x270)+_0x611a30);}}throw _0x538a96;}}const MorphEditFileArgsSchema=z['object']({'path':z[a0_0xf26819(0x25d)](),'code_edit':z[a0_0xf26819(0x25d)]()[a0_0xf26819(0x23f)]('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z[a0_0xf26819(0x25d)]()[a0_0xf26819(0x23f)](a0_0xf26819(0x239)),'dryRun':z[a0_0xf26819(0x2a6)]()['default'](![])[a0_0xf26819(0x23f)](a0_0xf26819(0x2c3))}),WarpGrepArgsSchema=z[a0_0xf26819(0x2a3)]({'search_string':z['string']()[a0_0xf26819(0x23f)](a0_0xf26819(0x2cf)),'repo_path':z[a0_0xf26819(0x25d)]()['describe'](a0_0xf26819(0x257)),'query_type':z[a0_0xf26819(0x26b)]([a0_0xf26819(0x24c),'node_modules'])[a0_0xf26819(0x2ef)]()[a0_0xf26819(0x23f)](a0_0xf26819(0x2bf))}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z['string']()['describe'](a0_0xf26819(0x2cf)),'github_url':z[a0_0xf26819(0x25d)]()[a0_0xf26819(0x23f)](a0_0xf26819(0x2f3)),'branch':z[a0_0xf26819(0x25d)]()[a0_0xf26819(0x2ef)]()[a0_0xf26819(0x23f)](a0_0xf26819(0x1f3))}),CodebaseSearchArgsSchema=z[a0_0xf26819(0x2a3)]({'query':z[a0_0xf26819(0x25d)]()[a0_0xf26819(0x23f)]('Natural\x20language\x20query\x20to\x20search\x20for\x20code'),'repoId':z[a0_0xf26819(0x25d)]()[a0_0xf26819(0x23f)](a0_0xf26819(0x260)),'branch':z['string']()['optional']()['describe']('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0xf26819(0x25d)]()['optional']()['describe'](a0_0xf26819(0x2b9)),'targetDirectories':z[a0_0xf26819(0x22a)](z[a0_0xf26819(0x25d)]())[a0_0xf26819(0x24c)]([])[a0_0xf26819(0x23f)](a0_0xf26819(0x28b)),'limit':z[a0_0xf26819(0x2fb)]()[a0_0xf26819(0x2ef)]()['default'](0xa)[a0_0xf26819(0x23f)](a0_0xf26819(0x1f0))}),server=new Server({'name':a0_0xf26819(0x229),'version':a0_0xf26819(0x22e)},{'capabilities':{'tools':{}}});server[a0_0xf26819(0x2fd)](ListToolsRequestSchema,async()=>{const _0x184635=a0_0xf26819,_0x73c421=[{'name':'edit_file','description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a'+_0x184635(0x22c)+_0x184635(0x22f)+_0x184635(0x1fa)+_0x184635(0x2d0)+_0x184635(0x206)+_0x184635(0x2e0)+_0x184635(0x20e)+_0x184635(0x2d5)+_0x184635(0x24e)+_0x184635(0x236)+_0x184635(0x250)+'For\x20deletions:\x0a'+'-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a'+_0x184635(0x2e2)+'Rules:\x0a'+'-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a'+'-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a'+_0x184635(0x26f)+_0x184635(0x29d)+_0x184635(0x293)+'-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a'+_0x184635(0x245),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x184635(0x268),'description':_0x184635(0x2d7)+_0x184635(0x2e5)+_0x184635(0x2aa)+_0x184635(0x241)+_0x184635(0x282)+_0x184635(0x254)+_0x184635(0x1f8)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]},{'name':_0x184635(0x21c),'description':'**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a'+_0x184635(0x220)+'🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a'+_0x184635(0x2d0)+_0x184635(0x24d)+_0x184635(0x26c)+'-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a'+'-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a'+'Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20'+_0x184635(0x2c5)+_0x184635(0x2e3),'inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x327f97=_0x73c421['filter'](_0x76872d=>{const _0xc4d73e=_0x184635;if(!ENABLED_TOOLS['includes'](_0x76872d[_0xc4d73e(0x266)]))return![];if(_0xc4d73e(0x2cd)in _0x76872d&&_0x76872d[_0xc4d73e(0x2cd)]&&!MORPH_API_KEY)return console['error'](_0xc4d73e(0x2ec)+_0x76872d[_0xc4d73e(0x266)]+_0xc4d73e(0x210)),![];return!![];});return{'tools':_0x327f97[_0x184635(0x273)](_0x523f2d=>({'name':_0x523f2d[_0x184635(0x266)],'description':_0x523f2d[_0x184635(0x28f)],'inputSchema':_0x523f2d[_0x184635(0x297)]}))};}),server[a0_0xf26819(0x2fd)](CallToolRequestSchema,async _0xc92c99=>{const _0x54e05e=a0_0xf26819;try{const {name:_0x51d0fe,arguments:_0x2ad7d0}=_0xc92c99[_0x54e05e(0x2f8)];switch(_0x51d0fe){case _0x54e05e(0x2ab):{const _0x198e5a=MorphEditFileArgsSchema[_0x54e05e(0x213)](_0x2ad7d0);if(!_0x198e5a[_0x54e05e(0x2bb)])throw new Error(_0x54e05e(0x2f6)+_0x198e5a['error']);const _0x3e004f=await validatePath(_0x198e5a[_0x54e05e(0x284)][_0x54e05e(0x215)]);let _0x398650=null,_0x32edf3=!![],_0x4fdb8c=null;try{_0x398650=await a0_0x2a0874[_0x54e05e(0x27e)](_0x3e004f,_0x54e05e(0x2fe));}catch(_0x29c095){const _0x5dcfe9=_0x29c095[_0x54e05e(0x2dc)];_0x5dcfe9==='ENOENT'?(_0x32edf3=![],_0x398650=''):(_0x4fdb8c='Failed\x20to\x20read\x20file:\x20'+(_0x5dcfe9||'unknown')+_0x54e05e(0x2f4)+(_0x29c095 instanceof Error?_0x29c095[_0x54e05e(0x29c)]:String(_0x29c095)),console[_0x54e05e(0x290)]('Warning:\x20'+_0x4fdb8c));}let _0x3c7e44;try{const _0x131b75=MORPH_API_KEY;if(!_0x131b75)throw new Error(_0x54e05e(0x27f));const _0x299bdb=a0_0x400803[_0x54e05e(0x202)](_0x3e004f),_0x4499a7=a0_0x400803[_0x54e05e(0x265)](_0x3e004f),_0x4e103e=await executeEditFile({'target_filepath':_0x4499a7,'code_edit':_0x198e5a[_0x54e05e(0x284)][_0x54e05e(0x209)],'instructions':_0x198e5a[_0x54e05e(0x284)]['instruction']},{'morphApiKey':_0x131b75,'morphApiUrl':MORPH_API_URL,'baseDir':_0x299bdb,'autoWrite':!_0x198e5a[_0x54e05e(0x284)]['dryRun'],'generateUdiff':![],'debug':![]});_0x3c7e44=_0x4e103e[_0x54e05e(0x243)];if(!_0x4e103e[_0x54e05e(0x2bb)])throw new Error(_0x4e103e['error']||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x445b34=_0x4e103e['changes'],_0x2310f8=_0x54e05e(0x29e)+_0x445b34[_0x54e05e(0x27b)]+_0x54e05e(0x28a)+_0x445b34[_0x54e05e(0x2b1)]+_0x54e05e(0x271)+_0x445b34[_0x54e05e(0x2f2)];if(_0x198e5a['data'][_0x54e05e(0x2e4)])return{'content':[{'type':_0x54e05e(0x295),'text':_0x54e05e(0x296)+(_0x32edf3?'':_0x54e05e(0x1ed))+':\x20'+_0x198e5a['data'][_0x54e05e(0x205)]+_0x54e05e(0x2d1)+_0x2310f8+_0x54e05e(0x22b)+_0x198e5a[_0x54e05e(0x284)][_0x54e05e(0x215)]+'.'}]};return{'content':[{'type':_0x54e05e(0x295),'text':_0x54e05e(0x226)+(_0x32edf3?_0x54e05e(0x263):_0x54e05e(0x2b4))+':\x20'+_0x198e5a['data'][_0x54e05e(0x205)]+'.\x20Changes:\x20'+_0x2310f8+_0x54e05e(0x22b)+_0x198e5a[_0x54e05e(0x284)][_0x54e05e(0x215)]+'.'}]};}catch(_0x1271a7){const _0x2d0baa=_0x1271a7 instanceof Error?_0x1271a7[_0x54e05e(0x29c)]:String(_0x1271a7);return reportMorphError({'error_message':_0x2d0baa,'error_type':_0x1271a7 instanceof Error?_0x1271a7[_0x54e05e(0x20b)][_0x54e05e(0x266)]:_0x54e05e(0x2e6),'context':{'tool':_0x54e05e(0x2ab),'completion_id':_0x3c7e44,'file_path':_0x198e5a[_0x54e05e(0x284)]['path'],'validated_path':_0x3e004f,'instruction':_0x198e5a[_0x54e05e(0x284)][_0x54e05e(0x205)],'model':_0x54e05e(0x275),'dry_run':_0x198e5a['data']['dryRun'],'file_exists':_0x32edf3,'file_read_error':_0x4fdb8c,'file_readable':_0x398650!==null,'request_content':{'path':_0x198e5a['data'][_0x54e05e(0x215)],'code_edit':_0x198e5a[_0x54e05e(0x284)]['code_edit'],'instruction':_0x198e5a['data'][_0x54e05e(0x205)],'original_code':_0x398650!==null?_0x398650[_0x54e05e(0x2ee)]>0xc350?_0x398650[_0x54e05e(0x2ea)](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x398650[_0x54e05e(0x2ee)]+_0x54e05e(0x2ff):_0x398650:_0x54e05e(0x2bd)+(_0x4fdb8c||'unknown\x20error')+']','original_code_length':_0x398650?.[_0x54e05e(0x2ee)]??0x0,'model':'morph-v3-fast','dry_run':_0x198e5a[_0x54e05e(0x284)]['dryRun']}},'stack_trace':_0x1271a7 instanceof Error?_0x1271a7['stack']:undefined,'source':_0x54e05e(0x281)})[_0x54e05e(0x231)](()=>{}),{'content':[{'type':_0x54e05e(0x295),'text':_0x54e05e(0x24b)+_0x2d0baa}],'isError':!![]};}}case'warpgrep_codebase_search':{const _0x295e95=WarpGrepArgsSchema[_0x54e05e(0x213)](_0x2ad7d0);if(!_0x295e95['success'])return{'content':[{'type':_0x54e05e(0x295),'text':_0x54e05e(0x280)+_0x295e95['error']}],'isError':!![]};const _0x1d208d=_0x14c5de=>{const _0x55048e=_0x54e05e,_0x13b38c=[];for(const _0x9bed44 of _0x14c5de||[]){const _0x2fd379=_0x9bed44[_0x55048e(0x2a7)],_0x2568d5=_0x9bed44[_0x55048e(0x20a)];if(_0x2fd379==='assistant'&&_0x2568d5){const _0x45e44e=_0x2568d5['split']('\x0a')[_0x55048e(0x2a0)](_0x5c94e9=>_0x5c94e9[_0x55048e(0x2f5)]());for(const _0x2acfbe of _0x45e44e){const _0xe2bbb6=_0x2acfbe['match'](/^grep\s+'([^']+)'\s+(.+)$/);if(_0xe2bbb6){_0x13b38c[_0x55048e(0x21b)](_0x55048e(0x2ca)+_0xe2bbb6[0x1]+'\x27\x20'+_0xe2bbb6[0x2]);continue;}const _0x1ac00d=_0x2acfbe[_0x55048e(0x2eb)](/^read\s+(.+)$/);if(_0x1ac00d){_0x13b38c[_0x55048e(0x21b)]('read\x20'+_0x1ac00d[0x1]);continue;}const _0xf0b48f=_0x2acfbe[_0x55048e(0x2eb)](/^list_directory\s+(.+)$/);if(_0xf0b48f){_0x13b38c[_0x55048e(0x21b)]('list_directory\x20'+_0xf0b48f[0x1]);continue;}}}}return _0x13b38c;},_0x3f0b91=_0x3d8018=>{const _0x39f229=_0x54e05e,_0x2e59d2=[];if(!_0x3d8018||!Array[_0x39f229(0x2da)](_0x3d8018))return _0x2e59d2;const _0x5dd9e4=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x39f229(0x2de),'tool':_0x39f229(0x1fd)},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x39f229(0x1fd)},{'pattern':/\[READ ERROR\]/,'error_type':_0x39f229(0x1f7),'tool':_0x39f229(0x1fd)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x39f229(0x25f),'tool':_0x39f229(0x1fd)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':'RipgrepError','tool':_0x39f229(0x2f9)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x39f229(0x1fe),'tool':_0x39f229(0x2f9)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x39f229(0x25f),'tool':_0x39f229(0x1fd)},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':_0x39f229(0x1fd)},{'pattern':/not a text file/,'error_type':_0x39f229(0x25f),'tool':_0x39f229(0x1fd)},{'pattern':/symbolic link/,'error_type':_0x39f229(0x2b3),'tool':_0x39f229(0x1fd)},{'pattern':/Error reading file:/,'error_type':_0x39f229(0x1f7),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x39f229(0x28e),'tool':_0x39f229(0x2b0)}];let _0x16379d=0x0;for(const _0x40bb0c of _0x3d8018){if(_0x40bb0c['role']===_0x39f229(0x2fc)){_0x16379d++;const _0x387e15=_0x40bb0c['content'];if(!_0x387e15||typeof _0x387e15!==_0x39f229(0x25d))continue;for(const {pattern:_0x3be962,error_type:_0x15fa6a,tool:_0x53bd40}of _0x5dd9e4){const _0x1c44b4=_0x387e15[_0x39f229(0x2eb)](new RegExp(_0x3be962[_0x39f229(0x1ff)],'g'));if(_0x1c44b4)for(const _0x31e3c5 of _0x1c44b4){const _0x3eca3c=_0x387e15['indexOf'](_0x31e3c5),_0x3ff5f8=_0x387e15['substring'](_0x3eca3c,Math[_0x39f229(0x246)](_0x3eca3c+0xc8,_0x387e15[_0x39f229(0x2ee)]));_0x2e59d2[_0x39f229(0x21b)]({'tool':_0x53bd40,'error_type':_0x15fa6a,'error_message':_0x3ff5f8[_0x39f229(0x287)]('\x0a')[0x0],'turn':_0x16379d});}}}}return _0x2e59d2;};try{const _0x4c1ab2=a0_0x400803['resolve'](_0x295e95[_0x54e05e(0x284)][_0x54e05e(0x2d6)]),_0x594d9d=_0x295e95[_0x54e05e(0x284)][_0x54e05e(0x225)],_0x138231=_0x594d9d===_0x54e05e(0x2c7)?{'allowNames':[_0x54e05e(0x2c7)]}:undefined,_0x3fd05d=new LocalRipgrepProvider(_0x4c1ab2,undefined,_0x138231),_0x520ba6=await runWarpGrep({'query':_0x295e95[_0x54e05e(0x284)]['search_string'],'repoRoot':_0x4c1ab2,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x3fd05d,'query_type':_0x594d9d}),_0x2c102c=_0x3f0b91(_0x520ba6['messages']);_0x2c102c[_0x54e05e(0x2ee)]>0x0&&reportMorphError({'error_message':_0x54e05e(0x2b2)+_0x2c102c[_0x54e05e(0x2ee)]+'\x20error(s)','error_type':_0x54e05e(0x25c),'level':_0x54e05e(0x23c),'tool':_0x54e05e(0x268),'context':{'repo_path':_0x295e95['data']['repo_path'],'query':_0x295e95[_0x54e05e(0x284)][_0x54e05e(0x1f1)],'model':_0x54e05e(0x2d2),'termination_reason':_0x520ba6['terminationReason'],'sub_tool_errors':_0x2c102c,'timings':_0x520ba6['timings'],'tool_calls':_0x1d208d(_0x520ba6[_0x54e05e(0x2d4)]),'messages':_0x520ba6[_0x54e05e(0x2d4)]?.[_0x54e05e(0x273)](_0x24ee9f=>({'role':_0x24ee9f['role'],'content':_0x24ee9f[_0x54e05e(0x20a)]}))},'source':_0x54e05e(0x281)})[_0x54e05e(0x231)](()=>{});let _0x5b173a='';if(_0x520ba6[_0x54e05e(0x2d3)]===_0x54e05e(0x222)&&_0x520ba6['finish']?.[_0x54e05e(0x217)]?.['files']){const _0x241989=_0x520ba6[_0x54e05e(0x234)][_0x54e05e(0x217)][_0x54e05e(0x2ce)];if(_0x241989[_0x54e05e(0x2ee)]===0x0)return _0x5b173a=_0x520ba6[_0x54e05e(0x234)]['payload']||_0x54e05e(0x2b7),{'content':[{'type':_0x54e05e(0x295),'text':_0x5b173a}]};const _0x2ec688=[],_0x221403=[_0x54e05e(0x264)];for(const _0x5ee522 of _0x520ba6['messages']){const _0x248d49=_0x5ee522[_0x54e05e(0x2a7)],_0x384216=_0x5ee522['content'];if(_0x248d49===_0x54e05e(0x20c)&&_0x384216){const _0xfcc725=_0x384216[_0x54e05e(0x287)]('\x0a')[_0x54e05e(0x2a0)](_0x4223c3=>_0x4223c3[_0x54e05e(0x2f5)]());for(const _0x7eab63 of _0xfcc725){const _0x163866=_0x7eab63[_0x54e05e(0x2eb)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x163866){_0x221403['push'](_0x54e05e(0x1f9)+_0x163866[0x1]+'\x27\x20in\x20`'+_0x163866[0x2]+'`');continue;}const _0x57c35e=_0x7eab63[_0x54e05e(0x2eb)](/^read\s+(.+)$/);if(_0x57c35e){_0x221403[_0x54e05e(0x21b)](_0x54e05e(0x2a2)+_0x57c35e[0x1]+'`');continue;}const _0x58aa25=_0x7eab63[_0x54e05e(0x2eb)](/^list_directory\s+(.+)$/);if(_0x58aa25){_0x221403[_0x54e05e(0x21b)](_0x54e05e(0x28c)+_0x58aa25[0x1]+'`');continue;}}}}_0x2ec688['push'](_0x221403[_0x54e05e(0x247)]('\x0a'));const _0x53cfe3=['','Relevant\x20context\x20found:'];for(const _0x36ae90 of _0x241989){if(_0x36ae90[_0x54e05e(0x208)]==='*')_0x53cfe3[_0x54e05e(0x21b)]('-\x20'+_0x36ae90[_0x54e05e(0x215)]+':*');else{if(Array[_0x54e05e(0x2da)](_0x36ae90['lines'])){const _0x1d8016=_0x36ae90[_0x54e05e(0x208)][_0x54e05e(0x273)](([_0x12fb3c,_0x462bc0])=>{if(_0x12fb3c===_0x462bc0)return''+_0x12fb3c;return _0x12fb3c+'-'+_0x462bc0;});_0x53cfe3[_0x54e05e(0x21b)]('-\x20'+_0x36ae90[_0x54e05e(0x215)]+':'+_0x1d8016[_0x54e05e(0x247)](','));}else _0x53cfe3[_0x54e05e(0x21b)]('-\x20'+_0x36ae90['path']+':*');}}_0x53cfe3[_0x54e05e(0x21b)](''),_0x2ec688[_0x54e05e(0x21b)](_0x53cfe3[_0x54e05e(0x247)]('\x0a')),_0x2ec688['push']('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x23f9a1=[];for(const _0x1cf5ee of _0x241989){let _0x153109=a0_0x400803['resolve'](_0x295e95[_0x54e05e(0x284)]['repo_path'],_0x1cf5ee[_0x54e05e(0x215)]),_0x2aa57e=null,_0x31140a=null;try{_0x2aa57e=await a0_0x2a0874['readFile'](_0x153109,{'encoding':_0x54e05e(0x2fe)});}catch(_0x4a74e8){const _0x58e8b7=fixPathRepetition(_0x153109);if(_0x58e8b7)try{_0x2aa57e=await a0_0x2a0874[_0x54e05e(0x27e)](_0x58e8b7,{'encoding':'utf-8'}),_0x153109=_0x58e8b7;}catch{_0x31140a=_0x4a74e8 instanceof Error?_0x4a74e8:new Error(String(_0x4a74e8));}else _0x31140a=_0x4a74e8 instanceof Error?_0x4a74e8:new Error(String(_0x4a74e8));}if(_0x2aa57e!==null){const _0x4a27d3=_0x2aa57e[_0x54e05e(0x287)](/\r?\n/),_0x21f059=[_0x54e05e(0x261)+_0x1cf5ee[_0x54e05e(0x215)]+'\x22>'];if(_0x1cf5ee['lines']==='*'||!Array[_0x54e05e(0x2da)](_0x1cf5ee[_0x54e05e(0x208)]))for(let _0x367e4a=0x1;_0x367e4a<=_0x4a27d3['length'];_0x367e4a++){const _0x288173=_0x4a27d3[_0x367e4a-0x1];_0x21f059['push'](_0x367e4a+'|\x20'+_0x288173);}else for(const [_0x17f200,_0x2f9526]of _0x1cf5ee[_0x54e05e(0x208)]){_0x21f059['length']>0x1&&_0x21f059[_0x54e05e(0x21b)]('');for(let _0x57f23a=_0x17f200;_0x57f23a<=_0x2f9526&&_0x57f23a<=_0x4a27d3[_0x54e05e(0x2ee)];_0x57f23a++){const _0xbcca89=_0x4a27d3[_0x57f23a-0x1];_0x21f059['push'](_0x57f23a+'|\x20'+_0xbcca89);}}_0x21f059[_0x54e05e(0x21b)](_0x54e05e(0x272)),_0x23f9a1[_0x54e05e(0x21b)](_0x21f059['join']('\x0a'));}else _0x23f9a1[_0x54e05e(0x21b)](_0x54e05e(0x261)+_0x1cf5ee[_0x54e05e(0x215)]+_0x54e05e(0x24a)+(_0x31140a?.[_0x54e05e(0x29c)]||'Unknown\x20error')+'\x0a</file>');}_0x2ec688['push'](_0x23f9a1[_0x54e05e(0x247)]('\x0a\x0a')),_0x5b173a=_0x2ec688[_0x54e05e(0x247)]('\x0a');const _0x1d7d25=_0x520ba6['errors']?.[_0x54e05e(0x2a0)](_0x57c761=>_0x57c761[_0x54e05e(0x29c)]?.['startsWith']('File\x20read\x20error:'))||[];if(_0x1d7d25['length']>0x0){const _0x24d21b=_0x1d7d25[_0x54e05e(0x273)](_0x2a6780=>_0x2a6780[_0x54e05e(0x29c)])[_0x54e05e(0x247)](';\x20');reportMorphError({'error_message':_0x24d21b,'error_type':_0x54e05e(0x2b6),'context':{'tool':_0x54e05e(0x268),'repo_path':_0x295e95[_0x54e05e(0x284)][_0x54e05e(0x2d6)],'query':_0x295e95['data'][_0x54e05e(0x1f1)],'model':_0x54e05e(0x2d2),'termination_reason':_0x54e05e(0x2db),'error_count':_0x1d7d25[_0x54e05e(0x2ee)],'is_timeout':![],'timings':_0x520ba6[_0x54e05e(0x201)],'files_attempted':_0x241989[_0x54e05e(0x273)](_0x3864d1=>({'path':_0x3864d1[_0x54e05e(0x215)],'lines':_0x3864d1['lines']})),'tool_calls':_0x1d208d(_0x520ba6[_0x54e05e(0x2d4)]),'messages':_0x520ba6[_0x54e05e(0x2d4)]?.[_0x54e05e(0x273)](_0x4ac9af=>({'role':_0x4ac9af[_0x54e05e(0x2a7)],'content':_0x4ac9af[_0x54e05e(0x20a)]})),'request_content':{'query':_0x295e95['data'][_0x54e05e(0x1f1)],'repo_path':_0x295e95[_0x54e05e(0x284)][_0x54e05e(0x2d6)],'repoRoot':a0_0x400803[_0x54e05e(0x27c)](_0x295e95['data'][_0x54e05e(0x2d6)]),'model':_0x54e05e(0x2d2)}},'source':_0x54e05e(0x281)})['catch'](()=>{});}}else{if(_0x520ba6[_0x54e05e(0x2d3)]===_0x54e05e(0x2fa)&&_0x520ba6[_0x54e05e(0x1f5)][_0x54e05e(0x2ee)]>0x0){const _0x1e9805=_0x520ba6['errors']['map'](_0x1c02fc=>_0x1c02fc['message'])[_0x54e05e(0x247)](';\x20');_0x5b173a=_0x54e05e(0x1ee)+_0x1e9805;const _0x2f6b87=_0x1e9805[_0x54e05e(0x23d)]()['includes']('timeout')||_0x1e9805[_0x54e05e(0x23d)]()['includes'](_0x54e05e(0x2af))||_0x1e9805[_0x54e05e(0x23d)]()['includes'](_0x54e05e(0x1eb)),_0x5672c2=_0x520ba6['finish']?.['metadata']?.[_0x54e05e(0x2ce)],_0x2b8b89=_0x520ba6['errors'][0x0];reportMorphError({'error_message':_0x1e9805,'error_type':_0x2f6b87?_0x54e05e(0x2d8):_0x2b8b89?.['constructor']?.[_0x54e05e(0x266)]||_0x54e05e(0x230),'context':{'tool':_0x54e05e(0x268),'repo_path':_0x295e95[_0x54e05e(0x284)][_0x54e05e(0x2d6)],'query':_0x295e95[_0x54e05e(0x284)][_0x54e05e(0x1f1)],'model':_0x54e05e(0x2d2),'termination_reason':_0x520ba6[_0x54e05e(0x2d3)],'error_count':_0x520ba6[_0x54e05e(0x1f5)][_0x54e05e(0x2ee)],'is_timeout':_0x2f6b87,'timings':_0x520ba6[_0x54e05e(0x201)],'files_attempted':_0x5672c2?.[_0x54e05e(0x273)](_0x323ab0=>({'path':_0x323ab0[_0x54e05e(0x215)],'lines':_0x323ab0[_0x54e05e(0x208)]})),'tool_calls':_0x1d208d(_0x520ba6['messages']),'messages':_0x520ba6[_0x54e05e(0x2d4)]?.['map'](_0x28786f=>({'role':_0x28786f['role'],'content':_0x28786f[_0x54e05e(0x20a)]})),'request_content':{'query':_0x295e95[_0x54e05e(0x284)][_0x54e05e(0x1f1)],'repo_path':_0x295e95['data'][_0x54e05e(0x2d6)],'repoRoot':a0_0x400803[_0x54e05e(0x27c)](_0x295e95[_0x54e05e(0x284)]['repo_path']),'model':_0x54e05e(0x2d2)}},'stack_trace':_0x2b8b89?.[_0x54e05e(0x259)]||undefined,'source':_0x54e05e(0x281)})['catch'](()=>{});}else _0x5b173a=_0x54e05e(0x1fb);}return{'content':[{'type':_0x54e05e(0x295),'text':_0x5b173a}]};}catch(_0x24f69f){const _0x209244=_0x24f69f instanceof Error?_0x24f69f[_0x54e05e(0x29c)]:String(_0x24f69f),_0x108dc1=_0x209244[_0x54e05e(0x23d)]()[_0x54e05e(0x20f)]('timeout')||_0x209244['toLowerCase']()['includes']('timed\x20out')||_0x209244[_0x54e05e(0x23d)]()[_0x54e05e(0x20f)](_0x54e05e(0x1eb))||_0x24f69f instanceof Error&&_0x24f69f[_0x54e05e(0x266)]===_0x54e05e(0x2d8);return reportMorphError({'error_message':_0x209244,'error_type':_0x108dc1?'TimeoutError':_0x24f69f instanceof Error?_0x24f69f[_0x54e05e(0x20b)][_0x54e05e(0x266)]:_0x54e05e(0x2e6),'context':{'tool':_0x54e05e(0x268),'repo_path':_0x295e95[_0x54e05e(0x284)][_0x54e05e(0x2d6)],'query':_0x295e95[_0x54e05e(0x284)][_0x54e05e(0x1f1)],'model':_0x54e05e(0x2d2),'is_timeout':_0x108dc1,'exception_phase':_0x54e05e(0x242),'request_content':{'query':_0x295e95['data'][_0x54e05e(0x1f1)],'repo_path':_0x295e95[_0x54e05e(0x284)][_0x54e05e(0x2d6)],'repoRoot':a0_0x400803['resolve'](_0x295e95[_0x54e05e(0x284)][_0x54e05e(0x2d6)]),'model':_0x54e05e(0x2d2)}},'stack_trace':_0x24f69f instanceof Error?_0x24f69f[_0x54e05e(0x259)]:undefined,'source':_0x54e05e(0x281)})[_0x54e05e(0x231)](()=>{}),{'content':[{'type':_0x54e05e(0x295),'text':_0x54e05e(0x2e8)+_0x209244}],'isError':![]};}}case _0x54e05e(0x27a):{const _0x4a4594=WarpGrepGitHubArgsSchema[_0x54e05e(0x213)](_0x2ad7d0);if(!_0x4a4594[_0x54e05e(0x2bb)])return{'content':[{'type':_0x54e05e(0x295),'text':'Invalid\x20arguments:\x20'+_0x4a4594['error']}],'isError':!![]};const _0x20ef02=MORPH_API_KEY;if(!_0x20ef02)throw new Error(_0x54e05e(0x27f));const _0x2c5bda=Date[_0x54e05e(0x2bc)]();console[_0x54e05e(0x290)](_0x54e05e(0x252)+_0x4a4594[_0x54e05e(0x284)][_0x54e05e(0x299)]+_0x54e05e(0x1f4)+_0x4a4594[_0x54e05e(0x284)][_0x54e05e(0x1f1)]+'\x22');try{const _0x3bb3c1=new WarpGrepClient({'morphApiKey':_0x20ef02,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x269103=await _0x3bb3c1[_0x54e05e(0x276)]({'query':_0x4a4594[_0x54e05e(0x284)][_0x54e05e(0x1f1)],'github':_0x4a4594[_0x54e05e(0x284)][_0x54e05e(0x299)],'branch':_0x4a4594[_0x54e05e(0x284)]['branch']}),_0x4608f9=Date[_0x54e05e(0x2bc)]()-_0x2c5bda;console['error']('[warpgrep_github_search]\x20Done\x20in\x20'+_0x4608f9+'ms.\x20Success:\x20'+_0x269103[_0x54e05e(0x2bb)]);const _0x55472d=formatResult(_0x269103);return{'content':[{'type':_0x54e05e(0x295),'text':_0x55472d}]};}catch(_0x3770ea){const _0x5df86d=Date[_0x54e05e(0x2bc)]()-_0x2c5bda,_0xd5762f=_0x3770ea instanceof Error?_0x3770ea['message']:String(_0x3770ea);return console[_0x54e05e(0x290)](_0x54e05e(0x238)+_0x5df86d+_0x54e05e(0x2c1),_0xd5762f),reportMorphError({'error_message':_0xd5762f,'error_type':_0x3770ea instanceof Error?_0x3770ea[_0x54e05e(0x20b)][_0x54e05e(0x266)]:'UnknownError','context':{'tool':'warpgrep_github_search','github_url':_0x4a4594[_0x54e05e(0x284)]['github_url'],'search_string':_0x4a4594[_0x54e05e(0x284)]['search_string'],'branch':_0x4a4594['data'][_0x54e05e(0x262)]},'stack_trace':_0x3770ea instanceof Error?_0x3770ea['stack']:undefined,'source':_0x54e05e(0x281),'tool':'warpgrep_github_search','latency_ms':_0x5df86d})[_0x54e05e(0x231)](()=>{}),{'content':[{'type':_0x54e05e(0x295),'text':_0x54e05e(0x258)+_0xd5762f}],'isError':![]};}}case'codebase_search':{const _0x282a96=CodebaseSearchArgsSchema[_0x54e05e(0x213)](_0x2ad7d0);if(!_0x282a96[_0x54e05e(0x2bb)])return{'content':[{'type':_0x54e05e(0x295),'text':_0x54e05e(0x280)+_0x282a96[_0x54e05e(0x290)]}],'isError':!![]};try{const _0x2481e9=MORPH_API_KEY;if(!_0x2481e9)throw new Error(_0x54e05e(0x227));const _0x18b314=_0x282a96[_0x54e05e(0x284)][_0x54e05e(0x1ec)],_0x43431a=await executeCodebaseSearch({'query':_0x282a96[_0x54e05e(0x284)][_0x54e05e(0x21a)],'target_directories':_0x18b314,'limit':_0x282a96['data']['limit']},{'apiKey':_0x2481e9,'repoId':_0x282a96[_0x54e05e(0x284)][_0x54e05e(0x26e)],'branch':_0x282a96[_0x54e05e(0x284)][_0x54e05e(0x262)],'commitHash':_0x282a96['data'][_0x54e05e(0x216)],'debug':![]});if(!_0x43431a['success'])return{'content':[{'type':_0x54e05e(0x295),'text':_0x54e05e(0x1ea)+_0x43431a[_0x54e05e(0x290)]}],'isError':!![]};const _0x3500c3=_0x43431a[_0x54e05e(0x292)][_0x54e05e(0x2ee)]===0x0?_0x54e05e(0x298)+_0x282a96['data'][_0x54e05e(0x21a)]+'\x22':_0x54e05e(0x2c4)+_0x43431a['results']['length']+_0x54e05e(0x2f1)+_0x43431a[_0x54e05e(0x253)][_0x54e05e(0x2c9)]+_0x54e05e(0x286)+_0x43431a['results'][_0x54e05e(0x273)]((_0x1989fa,_0x1b8f96)=>_0x1b8f96+0x1+'.\x20'+_0x1989fa['filepath']+'\x20('+(_0x1989fa[_0x54e05e(0x2f0)]*0x64)[_0x54e05e(0x2df)](0x1)+'%\x20match)\x0a'+('\x20\x20\x20Lines\x20'+_0x1989fa[_0x54e05e(0x27d)]+'-'+_0x1989fa[_0x54e05e(0x2ed)]+'\x0a')+(_0x54e05e(0x224)+_0x1989fa['content']['substring'](0x0,0xc8)+(_0x1989fa['content'][_0x54e05e(0x2ee)]>0xc8?_0x54e05e(0x207):'')+'\x0a'))[_0x54e05e(0x247)]('\x0a');return{'content':[{'type':'text','text':_0x3500c3}]};}catch(_0x487ee5){const _0x938f50=_0x487ee5 instanceof Error?_0x487ee5['message']:String(_0x487ee5);return reportMorphError({'error_message':_0x938f50,'error_type':_0x487ee5 instanceof Error?_0x487ee5[_0x54e05e(0x20b)][_0x54e05e(0x266)]:'UnknownError','context':{'tool':_0x54e05e(0x21c),'query':_0x282a96[_0x54e05e(0x284)]['query'],'repo_id':_0x282a96['data'][_0x54e05e(0x26e)],'target_directories':_0x282a96[_0x54e05e(0x284)][_0x54e05e(0x1ec)]},'stack_trace':_0x487ee5 instanceof Error?_0x487ee5[_0x54e05e(0x259)]:undefined,'source':'mcp-filesystem'})[_0x54e05e(0x231)](()=>{}),{'content':[{'type':_0x54e05e(0x295),'text':_0x54e05e(0x1ee)+_0x938f50}],'isError':!![]};}}default:throw new Error(_0x54e05e(0x232)+_0x51d0fe);}}catch(_0xb5f39d){const _0x438af3=_0xb5f39d instanceof Error?_0xb5f39d['message']:String(_0xb5f39d);return reportMorphError({'error_message':_0x438af3,'error_type':_0xb5f39d instanceof Error?_0xb5f39d[_0x54e05e(0x20b)][_0x54e05e(0x266)]:_0x54e05e(0x2e6),'context':{'tool':name,'arguments':args?JSON[_0x54e05e(0x285)](args)[_0x54e05e(0x2ea)](0x0,0x1f4):undefined,'mcp_server_version':_0x54e05e(0x22e)},'stack_trace':_0xb5f39d instanceof Error?_0xb5f39d[_0x54e05e(0x259)]:undefined,'source':_0x54e05e(0x281)})[_0x54e05e(0x231)](()=>{}),{'content':[{'type':_0x54e05e(0x295),'text':_0x54e05e(0x1ee)+_0x438af3}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x19cc5e){const _0x22323f=a0_0xf26819,_0x4ae9f0=await getValidRootDirectories(_0x19cc5e);if(_0x4ae9f0[_0x22323f(0x2ee)]>0x0)allowedDirectories=[..._0x4ae9f0],console['error'](_0x22323f(0x2a9)+_0x4ae9f0[_0x22323f(0x2ee)]+'\x20valid\x20directories');else{console[_0x22323f(0x290)]('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x2e8f53=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x2e8f53&&(allowedDirectories=[_0x2e8f53],console[_0x22323f(0x290)](_0x22323f(0x2ae)+_0x2e8f53));}catch(_0x43978b){console[_0x22323f(0x290)](_0x22323f(0x2b8)+_0x43978b);}}}server[a0_0xf26819(0x291)](RootsListChangedNotificationSchema,async()=>{const _0x209cc9=a0_0xf26819;try{const _0x932176=await server[_0x209cc9(0x283)]();_0x932176&&_0x209cc9(0x289)in _0x932176&&await updateAllowedDirectoriesFromRoots(_0x932176[_0x209cc9(0x289)]);}catch(_0x1623d3){console[_0x209cc9(0x290)]('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x1623d3 instanceof Error?_0x1623d3[_0x209cc9(0x29c)]:String(_0x1623d3));}}),server[a0_0xf26819(0x279)]=async()=>{const _0x44d709=a0_0xf26819,_0x4b0514=server[_0x44d709(0x2e1)]();if(_0x4b0514?.[_0x44d709(0x289)])try{const _0x3848ed=await server['listRoots']();_0x3848ed&&_0x44d709(0x289)in _0x3848ed?await updateAllowedDirectoriesFromRoots(_0x3848ed['roots']):console['error'](_0x44d709(0x251));}catch(_0x11d5c7){console[_0x44d709(0x290)](_0x44d709(0x20d),_0x11d5c7 instanceof Error?_0x11d5c7[_0x44d709(0x29c)]:String(_0x11d5c7));}else{if(allowedDirectories[_0x44d709(0x2ee)]>0x0)console[_0x44d709(0x290)](_0x44d709(0x2cb),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console['error']('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode');else throw new Error(_0x44d709(0x2dd));}}};async function runServer(){const _0x619a72=a0_0xf26819,_0xc8fc77=new StdioServerTransport();await server['connect'](_0xc8fc77),console[_0x619a72(0x290)](_0x619a72(0x255)),allowedDirectories[_0x619a72(0x2ee)]===0x0&&console[_0x619a72(0x290)]('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()['catch'](_0x18a647=>{const _0x3e98a6=a0_0xf26819;console[_0x3e98a6(0x290)](_0x3e98a6(0x274),_0x18a647),process[_0x3e98a6(0x26d)](0x1);});
@@ -1 +1 @@
1
- function a1_0x18dc(_0x1e75ba,_0x2aad7c){_0x1e75ba=_0x1e75ba-0x185;const _0x395ce3=a1_0x395c();let _0x18dc7a=_0x395ce3[_0x1e75ba];return _0x18dc7a;}(function(_0x3d183b,_0x249282){const _0x27221d=a1_0x18dc,_0x3b7bcf=_0x3d183b();while(!![]){try{const _0x221048=-parseInt(_0x27221d(0x190))/0x1+-parseInt(_0x27221d(0x198))/0x2*(parseInt(_0x27221d(0x192))/0x3)+parseInt(_0x27221d(0x199))/0x4*(-parseInt(_0x27221d(0x186))/0x5)+-parseInt(_0x27221d(0x195))/0x6+parseInt(_0x27221d(0x18f))/0x7*(parseInt(_0x27221d(0x188))/0x8)+-parseInt(_0x27221d(0x185))/0x9+parseInt(_0x27221d(0x197))/0xa;if(_0x221048===_0x249282)break;else _0x3b7bcf['push'](_0x3b7bcf['shift']());}catch(_0x28fe9a){_0x3b7bcf['push'](_0x3b7bcf['shift']());}}}(a1_0x395c,0x4b210));import a1_0x22c9e7 from'path';import a1_0x1fa178 from'os';function a1_0x395c(){const _0x24bd54=['253234hGgLCj','replace','999480eRliMe','normalize','match','3388224RMBttN','join','16391030sBWQtO','2FcgQVr','6988EScyiW','3044691jFFSEl','565SfeLIa','substring','218728SQubtz','startsWith','/mnt/','trim','test','charAt','slice','91OLSJJS'];a1_0x395c=function(){return _0x24bd54;};return a1_0x395c();}export function convertToWindowsPath(_0x48c056){const _0x1e779c=a1_0x18dc;if(_0x48c056['startsWith'](_0x1e779c(0x18a))){const _0x3fffe0=_0x48c056[_0x1e779c(0x18d)](0x5)['toUpperCase'](),_0xaef832=_0x48c056[_0x1e779c(0x18e)](0x6)[_0x1e779c(0x191)](/\//g,'\x5c');return _0x3fffe0+':'+_0xaef832;}if(_0x48c056[_0x1e779c(0x194)](/^\/[a-zA-Z]\//)){const _0x1c77ab=_0x48c056[_0x1e779c(0x18d)](0x1)['toUpperCase'](),_0x59ca90=_0x48c056[_0x1e779c(0x18e)](0x2)['replace'](/\//g,'\x5c');return _0x1c77ab+':'+_0x59ca90;}if(_0x48c056[_0x1e779c(0x194)](/^[a-zA-Z]:/))return _0x48c056['replace'](/\//g,'\x5c');return _0x48c056;}export function normalizePath(_0x498ea0){const _0x5b7073=a1_0x18dc;_0x498ea0=_0x498ea0[_0x5b7073(0x18b)]()['replace'](/^["']|["']$/g,'');const _0x506f42=_0x498ea0[_0x5b7073(0x189)]('/')&&!_0x498ea0[_0x5b7073(0x194)](/^\/mnt\/[a-z]\//i)&&!_0x498ea0[_0x5b7073(0x194)](/^\/[a-zA-Z]\//);if(_0x506f42)return _0x498ea0['replace'](/\/+/g,'/')[_0x5b7073(0x191)](/\/+$/,'');_0x498ea0=convertToWindowsPath(_0x498ea0);if(_0x498ea0['startsWith']('\x5c\x5c')){let _0x101774=_0x498ea0;_0x101774=_0x101774['replace'](/^\\{2,}/,'\x5c\x5c');const _0x888128=_0x101774[_0x5b7073(0x187)](0x2)[_0x5b7073(0x191)](/\\\\/g,'\x5c');_0x498ea0='\x5c\x5c'+_0x888128;}else _0x498ea0=_0x498ea0[_0x5b7073(0x191)](/\\\\/g,'\x5c');let _0x54aeed=a1_0x22c9e7[_0x5b7073(0x193)](_0x498ea0);_0x498ea0[_0x5b7073(0x189)]('\x5c\x5c')&&!_0x54aeed[_0x5b7073(0x189)]('\x5c\x5c')&&(_0x54aeed='\x5c'+_0x54aeed);if(_0x54aeed['match'](/^[a-zA-Z]:/)){let _0x509882=_0x54aeed[_0x5b7073(0x191)](/\//g,'\x5c');return/^[a-z]:/[_0x5b7073(0x18c)](_0x509882)&&(_0x509882=_0x509882[_0x5b7073(0x18d)](0x0)['toUpperCase']()+_0x509882[_0x5b7073(0x18e)](0x1)),_0x509882;}return _0x54aeed['replace'](/\//g,'\x5c');}export function expandHome(_0xd6de12){const _0x230532=a1_0x18dc;if(_0xd6de12[_0x230532(0x189)]('~/')||_0xd6de12==='~')return a1_0x22c9e7[_0x230532(0x196)](a1_0x1fa178['homedir'](),_0xd6de12[_0x230532(0x18e)](0x1));return _0xd6de12;}
1
+ function a1_0x2c80(){const _0x232ce5=['359277cmEKeW','5ewjBrr','test','55QjpIKK','4021370GrEFiI','/mnt/','8799679fQycPm','match','21286824rthtAC','replace','3805212QUlfbB','startsWith','9viwfOl','4sYeZzc','toUpperCase','11tTlYmm','9694XWSqPi','homedir','2483176tVdeNB','join','slice','charAt'];a1_0x2c80=function(){return _0x232ce5;};return a1_0x2c80();}(function(_0x467736,_0xdbb948){const _0x14e510=a1_0x4ab5,_0x32c4fe=_0x467736();while(!![]){try{const _0x3977de=-parseInt(_0x14e510(0x11b))/0x1*(-parseInt(_0x14e510(0x112))/0x2)+parseInt(_0x14e510(0x118))/0x3*(parseInt(_0x14e510(0x10f))/0x4)+parseInt(_0x14e510(0x119))/0x5*(parseInt(_0x14e510(0x122))/0x6)+-parseInt(_0x14e510(0x11e))/0x7+-parseInt(_0x14e510(0x114))/0x8*(parseInt(_0x14e510(0x10e))/0x9)+parseInt(_0x14e510(0x11c))/0xa*(-parseInt(_0x14e510(0x111))/0xb)+parseInt(_0x14e510(0x120))/0xc;if(_0x3977de===_0xdbb948)break;else _0x32c4fe['push'](_0x32c4fe['shift']());}catch(_0x2b50b9){_0x32c4fe['push'](_0x32c4fe['shift']());}}}(a1_0x2c80,0xc95f1));import a1_0x4992a5 from'path';import a1_0x34224c from'os';function a1_0x4ab5(_0x780a0d,_0x3c26eb){_0x780a0d=_0x780a0d-0x10e;const _0x2c8038=a1_0x2c80();let _0x4ab539=_0x2c8038[_0x780a0d];return _0x4ab539;}export function convertToWindowsPath(_0x336966){const _0x59f025=a1_0x4ab5;if(_0x336966[_0x59f025(0x123)](_0x59f025(0x11d))){const _0x50a856=_0x336966[_0x59f025(0x117)](0x5)[_0x59f025(0x110)](),_0x22a770=_0x336966['slice'](0x6)[_0x59f025(0x121)](/\//g,'\x5c');return _0x50a856+':'+_0x22a770;}if(_0x336966[_0x59f025(0x11f)](/^\/[a-zA-Z]\//)){const _0xa40fdd=_0x336966[_0x59f025(0x117)](0x1)[_0x59f025(0x110)](),_0x1fdf62=_0x336966[_0x59f025(0x116)](0x2)['replace'](/\//g,'\x5c');return _0xa40fdd+':'+_0x1fdf62;}if(_0x336966[_0x59f025(0x11f)](/^[a-zA-Z]:/))return _0x336966['replace'](/\//g,'\x5c');return _0x336966;}export function normalizePath(_0x56034c){const _0x5457b3=a1_0x4ab5;_0x56034c=_0x56034c['trim']()[_0x5457b3(0x121)](/^["']|["']$/g,'');const _0x415f1f=_0x56034c[_0x5457b3(0x123)]('/')&&!_0x56034c['match'](/^\/mnt\/[a-z]\//i)&&!_0x56034c[_0x5457b3(0x11f)](/^\/[a-zA-Z]\//);if(_0x415f1f)return _0x56034c[_0x5457b3(0x121)](/\/+/g,'/')[_0x5457b3(0x121)](/\/+$/,'');_0x56034c=convertToWindowsPath(_0x56034c);if(_0x56034c['startsWith']('\x5c\x5c')){let _0x1ca064=_0x56034c;_0x1ca064=_0x1ca064[_0x5457b3(0x121)](/^\\{2,}/,'\x5c\x5c');const _0x356886=_0x1ca064['substring'](0x2)['replace'](/\\\\/g,'\x5c');_0x56034c='\x5c\x5c'+_0x356886;}else _0x56034c=_0x56034c[_0x5457b3(0x121)](/\\\\/g,'\x5c');let _0x3864d0=a1_0x4992a5['normalize'](_0x56034c);_0x56034c[_0x5457b3(0x123)]('\x5c\x5c')&&!_0x3864d0[_0x5457b3(0x123)]('\x5c\x5c')&&(_0x3864d0='\x5c'+_0x3864d0);if(_0x3864d0[_0x5457b3(0x11f)](/^[a-zA-Z]:/)){let _0x32a8eb=_0x3864d0[_0x5457b3(0x121)](/\//g,'\x5c');return/^[a-z]:/[_0x5457b3(0x11a)](_0x32a8eb)&&(_0x32a8eb=_0x32a8eb[_0x5457b3(0x117)](0x0)['toUpperCase']()+_0x32a8eb[_0x5457b3(0x116)](0x1)),_0x32a8eb;}return _0x3864d0['replace'](/\//g,'\x5c');}export function expandHome(_0x486635){const _0x13c08a=a1_0x4ab5;if(_0x486635[_0x13c08a(0x123)]('~/')||_0x486635==='~')return a1_0x4992a5[_0x13c08a(0x115)](a1_0x34224c[_0x13c08a(0x113)](),_0x486635[_0x13c08a(0x116)](0x1));return _0x486635;}
@@ -1 +1 @@
1
- (function(_0x16e8e9,_0x5c4966){const _0x448419=a2_0x223d,_0x252213=_0x16e8e9();while(!![]){try{const _0x292a02=parseInt(_0x448419(0x1a2))/0x1+parseInt(_0x448419(0x1aa))/0x2*(parseInt(_0x448419(0x1a6))/0x3)+-parseInt(_0x448419(0x19c))/0x4*(parseInt(_0x448419(0x1a7))/0x5)+-parseInt(_0x448419(0x19a))/0x6+parseInt(_0x448419(0x198))/0x7*(-parseInt(_0x448419(0x1a0))/0x8)+-parseInt(_0x448419(0x1a8))/0x9*(-parseInt(_0x448419(0x199))/0xa)+parseInt(_0x448419(0x19f))/0xb;if(_0x292a02===_0x5c4966)break;else _0x252213['push'](_0x252213['shift']());}catch(_0x4fae27){_0x252213['push'](_0x252213['shift']());}}}(a2_0x350e,0x2be04));function a2_0x223d(_0x46a4b5,_0x365b01){_0x46a4b5=_0x46a4b5-0x198;const _0x350ecd=a2_0x350e();let _0x223db9=_0x350ecd[_0x46a4b5];return _0x223db9;}import a2_0x4efe29 from'path';export function isPathWithinAllowedDirectories(_0x4dd519,_0x187b21){const _0x41133c=a2_0x223d;if(typeof _0x4dd519!=='string'||!Array[_0x41133c(0x1a9)](_0x187b21))return![];if(!_0x4dd519||_0x187b21['length']===0x0)return![];if(_0x4dd519[_0x41133c(0x1a1)]('\x00'))return![];let _0xf839f2;try{_0xf839f2=a2_0x4efe29[_0x41133c(0x19b)](a2_0x4efe29[_0x41133c(0x19e)](_0x4dd519));}catch{return![];}if(!a2_0x4efe29[_0x41133c(0x1a4)](_0xf839f2))throw new Error('Path\x20must\x20be\x20absolute\x20after\x20normalization');return _0x187b21[_0x41133c(0x1a3)](_0x52cc5a=>{const _0xaeeab2=_0x41133c;if(typeof _0x52cc5a!=='string'||!_0x52cc5a)return![];if(_0x52cc5a[_0xaeeab2(0x1a1)]('\x00'))return![];let _0x5635d1;try{_0x5635d1=a2_0x4efe29['resolve'](a2_0x4efe29[_0xaeeab2(0x19e)](_0x52cc5a));}catch{return![];}if(!a2_0x4efe29[_0xaeeab2(0x1a4)](_0x5635d1))throw new Error(_0xaeeab2(0x1a5));if(_0xf839f2===_0x5635d1)return!![];if(_0x5635d1===a2_0x4efe29['sep'])return _0xf839f2[_0xaeeab2(0x19d)](a2_0x4efe29[_0xaeeab2(0x1ab)]);return _0xf839f2['startsWith'](_0x5635d1+a2_0x4efe29['sep']);});}function a2_0x350e(){const _0x337452=['8PJJKAM','includes','188639wwzHSt','some','isAbsolute','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','63hJLJAe','7635gttmLU','9BZjAat','isArray','23588jDuHHr','sep','24773iiBNQV','1424050emCghn','2069634VqnbCg','resolve','200gQqvnl','startsWith','normalize','284086ogSsEO'];a2_0x350e=function(){return _0x337452;};return a2_0x350e();}
1
+ (function(_0x3ec598,_0x2cf725){const _0x2e096c=a2_0x1cc4,_0x4d8967=_0x3ec598();while(!![]){try{const _0x5c7eef=-parseInt(_0x2e096c(0x14d))/0x1*(parseInt(_0x2e096c(0x14a))/0x2)+parseInt(_0x2e096c(0x155))/0x3*(parseInt(_0x2e096c(0x150))/0x4)+-parseInt(_0x2e096c(0x151))/0x5+-parseInt(_0x2e096c(0x14b))/0x6*(parseInt(_0x2e096c(0x149))/0x7)+parseInt(_0x2e096c(0x15a))/0x8+-parseInt(_0x2e096c(0x154))/0x9+parseInt(_0x2e096c(0x152))/0xa;if(_0x5c7eef===_0x2cf725)break;else _0x4d8967['push'](_0x4d8967['shift']());}catch(_0x558a97){_0x4d8967['push'](_0x4d8967['shift']());}}}(a2_0xd338,0xe96ea));import a2_0x359d41 from'path';function a2_0x1cc4(_0x2e09df,_0x87282d){_0x2e09df=_0x2e09df-0x147;const _0xd33826=a2_0xd338();let _0x1cc48b=_0xd33826[_0x2e09df];return _0x1cc48b;}function a2_0xd338(){const _0x3e19ef=['22998nomBxf','isAbsolute','sep','245756gAUccM','5036490WbCRHh','36245470HQZzgo','resolve','10196334KFKwry','9dMoasj','isArray','string','startsWith','length','3984032jlsBQj','Path\x20must\x20be\x20absolute\x20after\x20normalization','normalize','14SVyOXI','18WeqgWd','3010572POnuQV','includes'];a2_0xd338=function(){return _0x3e19ef;};return a2_0xd338();}export function isPathWithinAllowedDirectories(_0x626bd2,_0x4b1bde){const _0x1cb1b4=a2_0x1cc4;if(typeof _0x626bd2!==_0x1cb1b4(0x157)||!Array[_0x1cb1b4(0x156)](_0x4b1bde))return![];if(!_0x626bd2||_0x4b1bde[_0x1cb1b4(0x159)]===0x0)return![];if(_0x626bd2[_0x1cb1b4(0x14c)]('\x00'))return![];let _0x1bb5e3;try{_0x1bb5e3=a2_0x359d41[_0x1cb1b4(0x153)](a2_0x359d41[_0x1cb1b4(0x148)](_0x626bd2));}catch{return![];}if(!a2_0x359d41[_0x1cb1b4(0x14e)](_0x1bb5e3))throw new Error(_0x1cb1b4(0x147));return _0x4b1bde['some'](_0x229574=>{const _0x1c052e=_0x1cb1b4;if(typeof _0x229574!=='string'||!_0x229574)return![];if(_0x229574[_0x1c052e(0x14c)]('\x00'))return![];let _0x43af12;try{_0x43af12=a2_0x359d41[_0x1c052e(0x153)](a2_0x359d41[_0x1c052e(0x148)](_0x229574));}catch{return![];}if(!a2_0x359d41[_0x1c052e(0x14e)](_0x43af12))throw new Error('Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization');if(_0x1bb5e3===_0x43af12)return!![];if(_0x43af12===a2_0x359d41['sep'])return _0x1bb5e3[_0x1c052e(0x158)](a2_0x359d41[_0x1c052e(0x14f)]);return _0x1bb5e3[_0x1c052e(0x158)](_0x43af12+a2_0x359d41[_0x1c052e(0x14f)]);});}
@@ -1 +1 @@
1
- (function(_0x4d8611,_0x34f277){const _0x50f6a7=a3_0xa8a3,_0x129e14=_0x4d8611();while(!![]){try{const _0x35791c=-parseInt(_0x50f6a7(0x1f1))/0x1*(parseInt(_0x50f6a7(0x1eb))/0x2)+-parseInt(_0x50f6a7(0x1ef))/0x3*(-parseInt(_0x50f6a7(0x1f3))/0x4)+-parseInt(_0x50f6a7(0x1f6))/0x5*(-parseInt(_0x50f6a7(0x1fb))/0x6)+parseInt(_0x50f6a7(0x1f7))/0x7+parseInt(_0x50f6a7(0x1f0))/0x8*(-parseInt(_0x50f6a7(0x1f2))/0x9)+parseInt(_0x50f6a7(0x1e7))/0xa+parseInt(_0x50f6a7(0x1e9))/0xb*(-parseInt(_0x50f6a7(0x1f9))/0xc);if(_0x35791c===_0x34f277)break;else _0x129e14['push'](_0x129e14['shift']());}catch(_0x3c9232){_0x129e14['push'](_0x129e14['shift']());}}}(a3_0x38d8,0x7697f));function a3_0x38d8(){const _0x5e0d28=['homedir','132SOOLRn','slice','join','realpath','startsWith','uri','file://','7742340DoBGPu','isDirectory','4831266hOsRLJ','stat','386JEHxMq','Skipping\x20invalid\x20directory:\x20','invalid\x20path\x20or\x20inaccessible','\x20due\x20to\x20error:\x20','3APuSqs','2017256DQTEhZ','2734vJxeXC','9YaARjt','1000260cCeZfj','push','message','46780rIMBnj','3322571JNUszZ','error','12SlxXJX'];a3_0x38d8=function(){return _0x5e0d28;};return a3_0x38d8();}function a3_0xa8a3(_0x439736,_0x223626){_0x439736=_0x439736-0x1e7;const _0x38d857=a3_0x38d8();let _0xa8a3d4=_0x38d857[_0x439736];return _0xa8a3d4;}import{promises as a3_0x29dcf9}from'fs';import a3_0x5abd2b from'path';import a3_0x3e69e2 from'os';import{normalizePath}from'./path-utils.js';async function parseRootUri(_0x58d71b){const _0x1dd5dd=a3_0xa8a3;try{const _0x69e82d=_0x58d71b[_0x1dd5dd(0x1ff)](_0x1dd5dd(0x201))?_0x58d71b[_0x1dd5dd(0x1fc)](0x7):_0x58d71b,_0x303910=_0x69e82d['startsWith']('~/')||_0x69e82d==='~'?a3_0x5abd2b[_0x1dd5dd(0x1fd)](a3_0x3e69e2[_0x1dd5dd(0x1fa)](),_0x69e82d['slice'](0x1)):_0x69e82d,_0x418c8b=a3_0x5abd2b['resolve'](_0x303910),_0x3ac261=await a3_0x29dcf9[_0x1dd5dd(0x1fe)](_0x418c8b);return normalizePath(_0x3ac261);}catch{return null;}}function formatDirectoryError(_0x4cab96,_0x57a603,_0x106c3a){const _0x2be1d0=a3_0xa8a3;if(_0x106c3a)return'Skipping\x20'+_0x106c3a+':\x20'+_0x4cab96;const _0x5c3838=_0x57a603 instanceof Error?_0x57a603[_0x2be1d0(0x1f5)]:String(_0x57a603);return _0x2be1d0(0x1ec)+_0x4cab96+_0x2be1d0(0x1ee)+_0x5c3838;}export async function getValidRootDirectories(_0xfc55a1){const _0x669c7b=a3_0xa8a3,_0x3aac8e=[];for(const _0x146b87 of _0xfc55a1){const _0x446b9c=await parseRootUri(_0x146b87[_0x669c7b(0x200)]);if(!_0x446b9c){console[_0x669c7b(0x1f8)](formatDirectoryError(_0x146b87['uri'],undefined,_0x669c7b(0x1ed)));continue;}try{const _0x79c76a=await a3_0x29dcf9[_0x669c7b(0x1ea)](_0x446b9c);_0x79c76a[_0x669c7b(0x1e8)]()?_0x3aac8e[_0x669c7b(0x1f4)](_0x446b9c):console['error'](formatDirectoryError(_0x446b9c,undefined,'non-directory\x20root'));}catch(_0x2414b8){console[_0x669c7b(0x1f8)](formatDirectoryError(_0x446b9c,_0x2414b8));}}return _0x3aac8e;}
1
+ (function(_0x10996a,_0x49f008){const _0x531762=a3_0x1fab,_0x337eea=_0x10996a();while(!![]){try{const _0x59200c=-parseInt(_0x531762(0x1d7))/0x1*(-parseInt(_0x531762(0x1c4))/0x2)+-parseInt(_0x531762(0x1d8))/0x3*(-parseInt(_0x531762(0x1d6))/0x4)+parseInt(_0x531762(0x1d4))/0x5+parseInt(_0x531762(0x1c7))/0x6+-parseInt(_0x531762(0x1cf))/0x7+parseInt(_0x531762(0x1c5))/0x8*(parseInt(_0x531762(0x1ce))/0x9)+-parseInt(_0x531762(0x1d5))/0xa*(parseInt(_0x531762(0x1c8))/0xb);if(_0x59200c===_0x49f008)break;else _0x337eea['push'](_0x337eea['shift']());}catch(_0x12da2d){_0x337eea['push'](_0x337eea['shift']());}}}(a3_0x2a27,0xe2990));import{promises as a3_0x5164a6}from'fs';function a3_0x2a27(){const _0x3a8c04=['24HJKVuS','Skipping\x20','861750Amdmnk','33hxDObt','resolve','stat','error','file://','join','262863jgdprf','714238ksnApg','isDirectory','\x20due\x20to\x20error:\x20','message','slice','1875345WcCLCd','3335620UWfdOt','59564eqfnnN','1156511mhyeWd','54fVBnsC','uri','non-directory\x20root','startsWith','realpath','2SLzLkd'];a3_0x2a27=function(){return _0x3a8c04;};return a3_0x2a27();}import a3_0x46e0e2 from'path';function a3_0x1fab(_0x37f534,_0xd2a8fb){_0x37f534=_0x37f534-0x1c0;const _0x2a2743=a3_0x2a27();let _0x1fab4a=_0x2a2743[_0x37f534];return _0x1fab4a;}import a3_0x2d3b16 from'os';import{normalizePath}from'./path-utils.js';async function parseRootUri(_0x45c162){const _0x34e64d=a3_0x1fab;try{const _0x2d6a14=_0x45c162['startsWith'](_0x34e64d(0x1cc))?_0x45c162[_0x34e64d(0x1d3)](0x7):_0x45c162,_0x2bf1ee=_0x2d6a14[_0x34e64d(0x1c2)]('~/')||_0x2d6a14==='~'?a3_0x46e0e2[_0x34e64d(0x1cd)](a3_0x2d3b16['homedir'](),_0x2d6a14[_0x34e64d(0x1d3)](0x1)):_0x2d6a14,_0x11c439=a3_0x46e0e2[_0x34e64d(0x1c9)](_0x2bf1ee),_0x4564cb=await a3_0x5164a6[_0x34e64d(0x1c3)](_0x11c439);return normalizePath(_0x4564cb);}catch{return null;}}function formatDirectoryError(_0x972f54,_0x72919c,_0x26751d){const _0x3b98d3=a3_0x1fab;if(_0x26751d)return _0x3b98d3(0x1c6)+_0x26751d+':\x20'+_0x972f54;const _0x31a42c=_0x72919c instanceof Error?_0x72919c[_0x3b98d3(0x1d2)]:String(_0x72919c);return'Skipping\x20invalid\x20directory:\x20'+_0x972f54+_0x3b98d3(0x1d1)+_0x31a42c;}export async function getValidRootDirectories(_0x81e4a5){const _0x200a31=a3_0x1fab,_0x30e777=[];for(const _0x1c6a82 of _0x81e4a5){const _0xb547c2=await parseRootUri(_0x1c6a82[_0x200a31(0x1c0)]);if(!_0xb547c2){console['error'](formatDirectoryError(_0x1c6a82['uri'],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0x25161d=await a3_0x5164a6[_0x200a31(0x1ca)](_0xb547c2);_0x25161d[_0x200a31(0x1d0)]()?_0x30e777['push'](_0xb547c2):console[_0x200a31(0x1cb)](formatDirectoryError(_0xb547c2,undefined,_0x200a31(0x1c1)));}catch(_0x4f2fef){console['error'](formatDirectoryError(_0xb547c2,_0x4f2fef));}}return _0x30e777;}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morphllm/morphmcp",
3
- "version": "0.8.105",
3
+ "version": "0.8.107",
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.124",
38
+ "@morphllm/morphsdk": "0.2.125",
39
39
  "@vscode/ripgrep": "^1.15.14",
40
40
  "axios": "^1.6.0",
41
41
  "chalk": "^5.3.0",