@morphllm/morphmcp 0.8.159 → 0.8.161

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_0x14f8f4=a0_0x5ca9;(function(_0x4d01a8,_0x24c66e){const _0x376039=a0_0x5ca9,_0x2f820a=_0x4d01a8();while(!![]){try{const _0x2fb6b2=parseInt(_0x376039(0x16e))/0x1*(-parseInt(_0x376039(0x217))/0x2)+-parseInt(_0x376039(0x191))/0x3+-parseInt(_0x376039(0x258))/0x4*(parseInt(_0x376039(0x1b0))/0x5)+-parseInt(_0x376039(0x16c))/0x6+parseInt(_0x376039(0x19b))/0x7*(parseInt(_0x376039(0x1b9))/0x8)+parseInt(_0x376039(0x18b))/0x9+-parseInt(_0x376039(0x25f))/0xa*(-parseInt(_0x376039(0x210))/0xb);if(_0x2fb6b2===_0x24c66e)break;else _0x2f820a['push'](_0x2f820a['shift']());}catch(_0x3b94d6){_0x2f820a['push'](_0x2f820a['shift']());}}}(a0_0x4e5c,0xdfcde));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_0x3a9187 from'fs/promises';import a0_0x53019e from'path';import a0_0x13efd6 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0x4d8637 from'axios';function fixPathRepetition(_0x1fc51f){const _0x262b98=a0_0x5ca9,_0x1ba3c3=_0x1fc51f[_0x262b98(0x164)](a0_0x53019e['sep'])[_0x262b98(0x26e)](Boolean);if(_0x1ba3c3[_0x262b98(0x230)]<0x2)return null;for(let _0x407968=Math[_0x262b98(0x154)](_0x1ba3c3['length']/0x2);_0x407968>=0x1;_0x407968--){for(let _0x11cf8f=0x0;_0x11cf8f<=_0x1ba3c3[_0x262b98(0x230)]-0x2*_0x407968;_0x11cf8f++){const _0x592ebf=_0x1ba3c3[_0x262b98(0x209)](_0x11cf8f,_0x11cf8f+_0x407968),_0x4cdd38=_0x1ba3c3[_0x262b98(0x209)](_0x11cf8f+_0x407968,_0x11cf8f+0x2*_0x407968);if(_0x592ebf[_0x262b98(0x1e3)]((_0x445b22,_0x3965cf)=>_0x445b22===_0x4cdd38[_0x3965cf])){const _0x2de5ad=[..._0x1ba3c3[_0x262b98(0x209)](0x0,_0x11cf8f),..._0x1ba3c3['slice'](_0x11cf8f+_0x407968)];return a0_0x53019e['sep']+_0x2de5ad['join'](a0_0x53019e['sep']);}}}return null;}function a0_0x4e5c(){const _0x276c30=['\x0a...\x20(truncated,\x20total:\x20','searchGitHub','Fallback:\x20Using\x20workspace\x20root\x20','branch','text','messages','stringify','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','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','\x27\x20in\x20`','MORPH_FAST_APPLY','safeParse','morph-v3-fast','\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable','read','status','PWD','readFile','\x0aOptions:','timings','sk-','Relevant\x20context\x20found:','\x20valid\x20directories','grep_search','role','optional','884264uiokbr','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','response','<file\x20path=\x22','FileReadError','includes','glob\x20\x27','10PZXPzR','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','isArray','github_codebase_search','Cargo.toml','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','toISOString','-\x20Grepped\x20\x27','context','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','morph-mcp','[codebase_search]\x20compaction\x20failed','warn','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','filter','array','isDirectory','content','path','ToolException','floor','source','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','BinaryFile','Warning:\x20','Invalid\x20arguments:\x20','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','--help','code_edit','stack','some','ms:','application/json','Applied','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','Error:\x20','split','\x20as\x20allowed\x20directory','MORPH_API_KEY','metadata','list_directory','env','-\x20Read\x20file\x20`','\x0aExamples:','228444onDSpG','success','9463SCHAkt','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','user','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','tool_calls','SymlinkError','version','ENABLE_WORKSPACE_MODE','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','Natural-language\x20question/description\x20about\x20the\x20code\x20you\x20want\x20to\x20understand.\x20Good\x20example:\x20\x22Where\x20does\x20auth\x20get\x20handled,\x20what\x20are\x20the\x20different\x20oauth\x20methods\x20supported?\x22,\x20\x22Trace\x20all\x20code\x20that\x20relates\x20to\x20how\x20data\x20is\x20injested\x20and\x20processed\x22.\x20Bad\x20example:\x20\x22auth()\x22,\x20\x22auth\x20login\x20dashoard\x20google\x20email\x22.\x20This\x20tool\x20does\x20NOT\x20accept\x20regex,\x20keyword\x20dumps,\x20or\x20symbol-only\x20queries.','utf-8','package.json','error','[github_codebase_search]\x20Done\x20in\x20','Authentication\x20failed:\x20Your\x20Morph\x20API\x20key\x20is\x20invalid\x20or\x20has\x20been\x20revoked.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key,\x20then\x20update\x20your\x20MCP\x20configuration.','tool_call_id','timed\x20out','Benefits:\x0a','linesAdded','push','SubToolError','completionId','repo_path','\x20\x20morph-mcp','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','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.','Max\x20results\x20to\x20return','10383948tYzhFc','search_string','read\x20','Unknown\x20tool:\x20','linesRemoved','❌\x20Morph\x20Edit\x20Failed:\x20','2719134DdKrnz','Tool\x20','getClientCapabilities','morph-','has','pattern','connect','\x20disabled\x20via\x20DISABLED_TOOLS','WarpGrep\x20sub-tool\x20errors:\x20','assistant','83363CYPVcZ','match','\x22>\x0aError\x20reading\x20file:\x20','Here\x20is\x20the\x20content\x20of\x20files:\x0a','terminationReason','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','--version','name','files','-\x20Glob\x20search\x20`','tool','@morphllm/morphmcp\x20','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','completed','indexOf','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','join','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','Failed\x20to\x20read\x20file:\x20','exit','Rules:\x0a','10aHqkHv','UnknownError','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','GitHub\x20search\x20failed:\x20','etimedout','command','unknown\x20error','0.2.0','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','1032xOHuAu','Created\x20File','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','list_directory\x20','[github_codebase_search]\x20Failed\x20in\x20','../package.json','grep\x20\x27','search_type','\x20-\x20','substring','setNotificationHandler','MORPH_API_URL','TimeoutError','unknown','normalize','.\x20Path:\x20','\x20(new\x20file)','go.mod','enum','ReadError','Parent\x20directory\x20does\x20not\x20exist:\x20','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','realpath','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','basename','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','Morph\x20Edit\x20Preview','startsWith','\x0a</file>','mcp-filesystem','code','stat','changes','WORKSPACE_ROOT','dryRun','edit_file','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','all','catch','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','every','default','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','argv','Morph\x20FastApply\x20failed\x20without\x20error\x20message','Repository\x20identifier','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','Invalid\x20Morph\x20API\x20key\x20format.\x20API\x20keys\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key.','Failed\x20to\x20request\x20roots\x20from\x20client:','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','glob','Specific\x20commit\x20hash\x20to\x20search','morph-warp-grep-v2.1','arguments','grep','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','DISABLED_TOOLS','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','payload','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','.git','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','true','finish','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','\x20error(s)','map','homedir','api-key','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','completed_with_file_errors','resolve','cwd','message','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','constructor','slice',',\x20removed\x20','describe','errors','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','Disabled\x20tools:\x20','requiresApiKey','5010060AxklRz','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','tsconfig.json','instruction','timeout','178INpAGY','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','pyproject.toml','post','inputSchema','data','.\x20Changes:\x20','Error\x20accessing\x20directory\x20','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','terminated','[could\x20not\x20read\x20file:\x20','--api-key=','parse','toLowerCase','node_modules','codebase_search','MORPH_WARP_GREP_TIMEOUT','object','function','morph-v3-large','oninitialized','roots','owner_repo','listRoots','length','\x20is\x20not\x20a\x20directory','.vscode','dirname','ms.\x20Success:\x20','now','Warning:\x20Workspace\x20fallback\x20failed:\x20','log','string','FileNotFound','lines','false','description'];a0_0x4e5c=function(){return _0x276c30;};return a0_0x4e5c();}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x2caec2=a0_0x5ca9;try{const _0x288f44=require(_0x2caec2(0x1be));return _0x288f44[_0x2caec2(0x175)]??_0x2caec2(0x1c6);}catch(_0x2b72c0){return logMcpStderr(_0x2caec2(0x259),_0x2b72c0),_0x2caec2(0x1c6);}}function printHelp(){const _0x444f35=a0_0x5ca9;console[_0x444f35(0x237)](_0x444f35(0x1a6)+getPackageVersion()),console[_0x444f35(0x237)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0x444f35(0x237)](_0x444f35(0x250)),console[_0x444f35(0x237)](_0x444f35(0x246)),console['log'](_0x444f35(0x265)),console['log']('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console['log'](_0x444f35(0x16b)),console[_0x444f35(0x237)](_0x444f35(0x187)),console[_0x444f35(0x237)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0x14f8f4(0x1e7)][a0_0x14f8f4(0x209)](0x2),VERSION_FLAGS=new Set([a0_0x14f8f4(0x1a1),'-v','-V']),HELP_FLAGS=new Set([a0_0x14f8f4(0x15b),'-h']);cliArgs[a0_0x14f8f4(0x15e)](_0x5c54bb=>VERSION_FLAGS['has'](_0x5c54bb))&&(console[a0_0x14f8f4(0x237)](a0_0x14f8f4(0x1a6)+getPackageVersion()),process['exit'](0x0));cliArgs[a0_0x14f8f4(0x15e)](_0x4eabde=>HELP_FLAGS[a0_0x14f8f4(0x195)](_0x4eabde))&&(printHelp(),process[a0_0x14f8f4(0x1ae)](0x0));function getCliArg(_0x3c4450){const _0x490c35=a0_0x14f8f4;for(let _0x531f89=0x0;_0x531f89<cliArgs[_0x490c35(0x230)];_0x531f89++){const _0x20f0e1=cliArgs[_0x531f89];if(_0x20f0e1[_0x490c35(0x1d4)]('--'+_0x3c4450+'='))return _0x20f0e1[_0x490c35(0x209)](('--'+_0x3c4450+'=')[_0x490c35(0x230)]);if(_0x20f0e1==='--'+_0x3c4450&&_0x531f89+0x1<cliArgs[_0x490c35(0x230)])return cliArgs[_0x531f89+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x14f8f4(0x230)];i++){const arg=cliArgs[i];if(VERSION_FLAGS['has'](arg)||HELP_FLAGS[a0_0x14f8f4(0x195)](arg))continue;if(arg[a0_0x14f8f4(0x1d4)](a0_0x14f8f4(0x223)))continue;if(arg==='--api-key'){i++;continue;}args['push'](arg);}const WORKSPACE_ROOT=process[a0_0x14f8f4(0x169)][a0_0x14f8f4(0x1da)]||process[a0_0x14f8f4(0x169)][a0_0x14f8f4(0x24e)]||process[a0_0x14f8f4(0x205)](),ENABLE_WORKSPACE_MODE=process[a0_0x14f8f4(0x169)][a0_0x14f8f4(0x176)]!==a0_0x14f8f4(0x23b),MORPH_API_KEY=getCliArg(a0_0x14f8f4(0x201))??process[a0_0x14f8f4(0x169)][a0_0x14f8f4(0x166)],MORPH_API_URL=process[a0_0x14f8f4(0x169)][a0_0x14f8f4(0x1c4)],MORPH_FAST_APPLY=process[a0_0x14f8f4(0x169)][a0_0x14f8f4(0x248)]===a0_0x14f8f4(0x1fb),MORPH_WARP_GREP_TIMEOUT=process[a0_0x14f8f4(0x169)]['MORPH_WARP_GREP_TIMEOUT']?parseInt(process[a0_0x14f8f4(0x169)][a0_0x14f8f4(0x228)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x14f8f4(0x1dc),'codebase_search',a0_0x14f8f4(0x262)]),DISABLED_TOOLS=process['env'][a0_0x14f8f4(0x1f4)]?new Set(process[a0_0x14f8f4(0x169)][a0_0x14f8f4(0x1f4)][a0_0x14f8f4(0x164)](',')[a0_0x14f8f4(0x1ff)](_0xa08c90=>_0xa08c90['trim']())[a0_0x14f8f4(0x26e)](_0x26fc1a=>_0x26fc1a[a0_0x14f8f4(0x230)]>0x0)):new Set();function a0_0x5ca9(_0x310b76,_0x2f0a4b){_0x310b76=_0x310b76-0x14f;const _0x4e5c00=a0_0x4e5c();let _0x5ca9a8=_0x4e5c00[_0x310b76];return _0x5ca9a8;}if(DISABLED_TOOLS['size']>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x14f8f4(0x195)](tool)&&console['error']('Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22'+tool+'\x22.\x20Known\x20tools:\x20'+[...KNOWN_TOOL_NAMES][a0_0x14f8f4(0x1ab)](',\x20'));}console[a0_0x14f8f4(0x17c)](a0_0x14f8f4(0x20e)+[...DISABLED_TOOLS]['join'](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x14f8f4(0x1d4)](a0_0x14f8f4(0x252))&&!MORPH_API_KEY[a0_0x14f8f4(0x1d4)](a0_0x14f8f4(0x194))&&logMcpStderr(a0_0x14f8f4(0x212));async function reportMorphError(_0x251a18){const _0x2a1e66=a0_0x14f8f4;try{await a0_0x4d8637[_0x2a1e66(0x21a)]('https://morphllm.com/api/error-report',{..._0x251a18,'timestamp':new Date()[_0x2a1e66(0x266)](),'source':_0x251a18[_0x2a1e66(0x155)]||_0x2a1e66(0x1d6),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x251a18[_0x2a1e66(0x268)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x2a1e66(0x160),'Authorization':'Bearer\x20'+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x4dd3ce,_0x2eaec8){const _0x346da8=a0_0x14f8f4;if(_0x4dd3ce&&typeof _0x4dd3ce===_0x346da8(0x229)&&_0x346da8(0x24d)in _0x4dd3ce)return _0x4dd3ce[_0x346da8(0x24d)];if(_0x4dd3ce&&typeof _0x4dd3ce===_0x346da8(0x229)&&_0x346da8(0x25a)in _0x4dd3ce)return _0x4dd3ce[_0x346da8(0x25a)]?.[_0x346da8(0x24d)];const _0x2cb2f9=_0x2eaec8['match'](/\b(401|429)\b/);return _0x2cb2f9?parseInt(_0x2cb2f9[0x1],0xa):null;}function handleMorphAPIError(_0x51774d){const _0x5c94d6=a0_0x14f8f4,_0x45c8e7=_0x51774d instanceof Error?_0x51774d[_0x5c94d6(0x206)]:String(_0x51774d),_0x4cc972=extractStatusCode(_0x51774d,_0x45c8e7);switch(_0x4cc972){case 0x191:return{'content':[{'type':'text','text':_0x5c94d6(0x17e)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x5c94d6(0x241),'text':_0x5c94d6(0x245)}],'isError':!![]};default:return null;}}args[a0_0x14f8f4(0x230)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x14f8f4(0x211)),logMcpStderr(a0_0x14f8f4(0x1f6)),logMcpStderr('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),logMcpStderr(a0_0x14f8f4(0x260)),logMcpStderr(a0_0x14f8f4(0x202)),logMcpStderr('At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.'));function normalizePath(_0x386e79){const _0x1e2db9=a0_0x14f8f4;return a0_0x53019e[_0x1e2db9(0x1c7)](_0x386e79);}function expandHome(_0x5127b7){const _0x3a616a=a0_0x14f8f4;if(_0x5127b7['startsWith']('~/')||_0x5127b7==='~')return a0_0x53019e[_0x3a616a(0x1ab)](a0_0x13efd6[_0x3a616a(0x200)](),_0x5127b7[_0x3a616a(0x209)](0x1));return _0x5127b7;}let allowedDirectories=await Promise[a0_0x14f8f4(0x1df)](args[a0_0x14f8f4(0x1ff)](async _0x414989=>{const _0x155bd1=a0_0x14f8f4,_0x1323cb=expandHome(_0x414989),_0x334308=a0_0x53019e['resolve'](_0x1323cb);try{const _0x34ea32=await a0_0x3a9187[_0x155bd1(0x1cf)](_0x334308);return normalizePath(_0x34ea32);}catch(_0x39b8d6){return normalizePath(_0x334308);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x14f8f4(0x230)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x14f8f4(0x183)](workspaceDir),logMcpStderr('Workspace\x20mode\x20enabled:\x20Using\x20'+workspaceDir+a0_0x14f8f4(0x165)));}catch(a0_0x291712){logMcpStderr(a0_0x14f8f4(0x16f)+a0_0x291712);}async function detectWorkspaceRoot(_0x2d5acf){const _0x4c8c0a=a0_0x14f8f4;let _0x38f027=a0_0x53019e['resolve'](_0x2d5acf);const _0x5cc05f=[_0x4c8c0a(0x1f9),_0x4c8c0a(0x232),_0x4c8c0a(0x17b),_0x4c8c0a(0x263),_0x4c8c0a(0x219),_0x4c8c0a(0x1ca),'.cursor',_0x4c8c0a(0x214),'composer.json'];while(_0x38f027!==a0_0x53019e['dirname'](_0x38f027)){for(const _0x2a482f of _0x5cc05f){const _0x1c13cd=a0_0x53019e[_0x4c8c0a(0x1ab)](_0x38f027,_0x2a482f);try{return await a0_0x3a9187['access'](_0x1c13cd),normalizePath(_0x38f027);}catch{}}_0x38f027=a0_0x53019e['dirname'](_0x38f027);}return normalizePath(_0x2d5acf);}await Promise[a0_0x14f8f4(0x1df)](args['map'](async _0x553188=>{const _0xa03cb=a0_0x14f8f4;try{const _0x6ab034=await a0_0x3a9187[_0xa03cb(0x1d8)](expandHome(_0x553188));!_0x6ab034[_0xa03cb(0x150)]()&&(logMcpStderr(_0xa03cb(0x163)+_0x553188+_0xa03cb(0x231)),process[_0xa03cb(0x1ae)](0x1));}catch(_0x5dcb04){logMcpStderr(_0xa03cb(0x21e)+_0x553188+':',_0x5dcb04),process[_0xa03cb(0x1ae)](0x1);}}));async function validatePath(_0x1c6d10){const _0x31bf4f=a0_0x14f8f4,_0x476726=expandHome(_0x1c6d10),_0x1cc764=a0_0x53019e[_0x31bf4f(0x204)](_0x476726);try{const _0x51ca36=await a0_0x3a9187[_0x31bf4f(0x1cf)](_0x1cc764);return _0x51ca36;}catch(_0x370bf5){if(_0x370bf5[_0x31bf4f(0x1d7)]==='ENOENT'){const _0x3a9699=a0_0x53019e[_0x31bf4f(0x233)](_0x1cc764);try{const _0x4a2504=await a0_0x3a9187[_0x31bf4f(0x1cf)](_0x3a9699);return a0_0x53019e[_0x31bf4f(0x1ab)](_0x4a2504,a0_0x53019e[_0x31bf4f(0x1d1)](_0x1cc764));}catch{throw new Error(_0x31bf4f(0x1cd)+_0x3a9699);}}throw _0x370bf5;}}const MorphEditFileArgsSchema=z[a0_0x14f8f4(0x229)]({'path':z['string'](),'code_edit':z[a0_0x14f8f4(0x238)]()[a0_0x14f8f4(0x20b)](a0_0x14f8f4(0x1d2)),'instruction':z['string']()[a0_0x14f8f4(0x20b)](a0_0x14f8f4(0x15a)),'dryRun':z['boolean']()[a0_0x14f8f4(0x1e4)](![])[a0_0x14f8f4(0x20b)]('Preview\x20changes\x20without\x20applying\x20them.')}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x14f8f4(0x179),WarpGrepArgsSchema=z[a0_0x14f8f4(0x229)]({'search_string':z['string']()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z['string']()[a0_0x14f8f4(0x20b)]('The\x20absolute\x20path\x20of\x20the\x20folder\x20where\x20the\x20search\x20should\x20be\x20performed.\x20In\x20multi-repo\x20workspaces,\x20you\x20have\x20to\x20specify\x20a\x20subfolder\x20where\x20the\x20search\x20should\x20be\x20performed,\x20to\x20avoid\x20searching\x20across\x20all\x20repos'),'search_type':z[a0_0x14f8f4(0x1cb)]([a0_0x14f8f4(0x1e4),a0_0x14f8f4(0x226)])['optional']()[a0_0x14f8f4(0x20b)](a0_0x14f8f4(0x26d))}),WarpGrepGitHubArgsSchema=z[a0_0x14f8f4(0x229)]({'search_string':z['string']()[a0_0x14f8f4(0x20b)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()[a0_0x14f8f4(0x257)]()[a0_0x14f8f4(0x20b)]('GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'owner_repo':z[a0_0x14f8f4(0x238)]()[a0_0x14f8f4(0x257)]()[a0_0x14f8f4(0x20b)](a0_0x14f8f4(0x162)),'branch':z[a0_0x14f8f4(0x238)]()[a0_0x14f8f4(0x257)]()[a0_0x14f8f4(0x20b)](a0_0x14f8f4(0x1f5))}),CodebaseSearchArgsSchema=z[a0_0x14f8f4(0x229)]({'query':z[a0_0x14f8f4(0x238)]()[a0_0x14f8f4(0x20b)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x14f8f4(0x238)]()[a0_0x14f8f4(0x20b)](a0_0x14f8f4(0x1e9)),'branch':z[a0_0x14f8f4(0x238)]()['optional']()[a0_0x14f8f4(0x20b)](a0_0x14f8f4(0x207)),'commitHash':z[a0_0x14f8f4(0x238)]()['optional']()[a0_0x14f8f4(0x20b)](a0_0x14f8f4(0x1ef)),'targetDirectories':z[a0_0x14f8f4(0x14f)](z[a0_0x14f8f4(0x238)]())[a0_0x14f8f4(0x1e4)]([])[a0_0x14f8f4(0x20b)](a0_0x14f8f4(0x1ea)),'limit':z['number']()['optional']()[a0_0x14f8f4(0x1e4)](0xa)[a0_0x14f8f4(0x20b)](a0_0x14f8f4(0x18a))}),server=new Server({'name':a0_0x14f8f4(0x26a),'version':a0_0x14f8f4(0x1b7)},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x43bdb5=a0_0x14f8f4,_0x3c1238=[{'name':_0x43bdb5(0x1dc),'description':_0x43bdb5(0x1b8)+_0x43bdb5(0x172)+_0x43bdb5(0x1ed)+_0x43bdb5(0x20d)+_0x43bdb5(0x181)+_0x43bdb5(0x1ac)+'-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a'+_0x43bdb5(0x269)+_0x43bdb5(0x1de)+_0x43bdb5(0x177)+_0x43bdb5(0x1e1)+_0x43bdb5(0x1e2)+'For\x20deletions:\x0a'+_0x43bdb5(0x1b2)+'-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a'+_0x43bdb5(0x1af)+_0x43bdb5(0x1ce)+_0x43bdb5(0x1dd)+_0x43bdb5(0x1fd)+_0x43bdb5(0x1bb)+_0x43bdb5(0x21f)+_0x43bdb5(0x156)+_0x43bdb5(0x244),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x43bdb5(0x227),'description':'A\x20code\x20exploration\x20tool,\x20use\x20this\x20tool\x20when\x20exploring\x20an\x20unfamiliar\x20codebase,\x20and\x20you\x27re\x20unsure\x20of\x20the\x20exact\x20file\x20or\x20string\x20to\x20look\x20for.\x20This\x20tool\x20will\x20find\x20all\x20relevant\x20bits\x20of\x20code\x20given\x20a\x20natural\x20lanugage\x20description,\x20or\x20questin\x20of\x20the\x20thing\x20you\x27re\x20looking\x20for.\x20'+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x43bdb5(0x171)+_0x43bdb5(0x1a0)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x268001=_0x3c1238['filter'](_0x436312=>{const _0x1f05e3=_0x43bdb5;if(DISABLED_TOOLS['has'](_0x436312[_0x1f05e3(0x1a2)]))return console[_0x1f05e3(0x17c)](_0x1f05e3(0x192)+_0x436312[_0x1f05e3(0x1a2)]+_0x1f05e3(0x198)),![];if('requiresApiKey'in _0x436312&&_0x436312[_0x1f05e3(0x20f)]&&!MORPH_API_KEY)return logMcpStderr(_0x1f05e3(0x158)+_0x436312[_0x1f05e3(0x1a2)]+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x268001[_0x43bdb5(0x1ff)](_0x2fcc74=>({'name':_0x2fcc74[_0x43bdb5(0x1a2)],'description':_0x2fcc74[_0x43bdb5(0x23c)],'inputSchema':_0x2fcc74[_0x43bdb5(0x21b)]}))};}),server['setRequestHandler'](CallToolRequestSchema,async _0xf56e0=>{const _0x35d84e=a0_0x14f8f4,{name:_0x4af50c,arguments:_0x5a8813}=_0xf56e0['params'];try{if(!MORPH_API_KEY)return{'content':[{'type':_0x35d84e(0x241),'text':_0x35d84e(0x1fa)}],'isError':!![]};if(!MORPH_API_KEY[_0x35d84e(0x1d4)](_0x35d84e(0x252))&&!MORPH_API_KEY[_0x35d84e(0x1d4)]('morph-'))return{'content':[{'type':_0x35d84e(0x241),'text':_0x35d84e(0x1eb)}],'isError':!![]};if(DISABLED_TOOLS['has'](_0x4af50c))throw new Error('Tool\x20\x22'+_0x4af50c+_0x35d84e(0x24b));switch(_0x4af50c){case _0x35d84e(0x1dc):{const _0x2821a1=_0x5a8813&&typeof _0x5a8813==='object'&&'instructions'in _0x5a8813&&!('instruction'in _0x5a8813)?{..._0x5a8813,'instruction':_0x5a8813['instructions'],'instructions':undefined}:_0x5a8813,_0x10867c=MorphEditFileArgsSchema[_0x35d84e(0x249)](_0x2821a1);if(!_0x10867c[_0x35d84e(0x16d)])throw new Error(_0x35d84e(0x1e6)+_0x10867c[_0x35d84e(0x17c)]);const _0x6bc59b=await validatePath(_0x10867c['data'][_0x35d84e(0x152)]);let _0x88888=null,_0x4f1f4c=!![],_0x24c94c=null;try{_0x88888=await a0_0x3a9187['readFile'](_0x6bc59b,_0x35d84e(0x17a));}catch(_0x58ac9b){const _0x51d3c3=_0x58ac9b[_0x35d84e(0x1d7)];_0x51d3c3==='ENOENT'?(_0x4f1f4c=![],_0x88888=''):(_0x24c94c=_0x35d84e(0x1ad)+(_0x51d3c3||_0x35d84e(0x1c6))+_0x35d84e(0x1c1)+(_0x58ac9b instanceof Error?_0x58ac9b['message']:String(_0x58ac9b)),logMcpStderr('Warning:\x20'+_0x24c94c));}let _0x2d02f9;try{const _0x75513a=MORPH_API_KEY;if(!_0x75513a)throw new Error(_0x35d84e(0x188));const _0x5de15c=a0_0x53019e[_0x35d84e(0x233)](_0x6bc59b),_0x5ad155=a0_0x53019e['basename'](_0x6bc59b),_0x587735=await executeEditFile({'target_filepath':_0x5ad155,'code_edit':_0x10867c[_0x35d84e(0x21c)][_0x35d84e(0x15c)],'instruction':_0x10867c[_0x35d84e(0x21c)]['instruction']},{'morphApiKey':_0x75513a,'morphApiUrl':MORPH_API_URL,'fast':MORPH_FAST_APPLY,'baseDir':_0x5de15c,'autoWrite':!_0x10867c[_0x35d84e(0x21c)][_0x35d84e(0x1db)],'generateUdiff':![],'debug':![]});_0x2d02f9=_0x587735[_0x35d84e(0x185)];if(!_0x587735['success'])throw new Error(_0x587735[_0x35d84e(0x17c)]||_0x35d84e(0x1e8));const _0x1e2da3=_0x587735[_0x35d84e(0x1d9)],_0x5419d5='added\x20'+_0x1e2da3[_0x35d84e(0x182)]+_0x35d84e(0x20a)+_0x1e2da3[_0x35d84e(0x18f)]+',\x20modified\x20'+_0x1e2da3['linesModified'];if(_0x10867c[_0x35d84e(0x21c)]['dryRun'])return{'content':[{'type':_0x35d84e(0x241),'text':_0x35d84e(0x1d3)+(_0x4f1f4c?'':_0x35d84e(0x1c9))+':\x20'+_0x10867c[_0x35d84e(0x21c)]['instruction']+_0x35d84e(0x21d)+_0x5419d5+_0x35d84e(0x1c8)+_0x10867c[_0x35d84e(0x21c)][_0x35d84e(0x152)]+'.'}]};return{'content':[{'type':_0x35d84e(0x241),'text':'Morph\x20Edit\x20'+(_0x4f1f4c?_0x35d84e(0x161):_0x35d84e(0x1ba))+':\x20'+_0x10867c[_0x35d84e(0x21c)][_0x35d84e(0x215)]+'.\x20Changes:\x20'+_0x5419d5+'.\x20Path:\x20'+_0x10867c['data']['path']+'.'}]};}catch(_0x3a55a1){const _0x10543c=handleMorphAPIError(_0x3a55a1);if(_0x10543c)return _0x10543c;const _0x51a7d4=_0x3a55a1 instanceof Error?_0x3a55a1['message']:String(_0x3a55a1);return reportMorphError({'error_message':_0x51a7d4,'error_type':_0x3a55a1 instanceof Error?_0x3a55a1[_0x35d84e(0x208)][_0x35d84e(0x1a2)]:'UnknownError','context':{'tool':_0x35d84e(0x1dc),'completion_id':_0x2d02f9,'file_path':_0x10867c['data'][_0x35d84e(0x152)],'validated_path':_0x6bc59b,'instruction':_0x10867c[_0x35d84e(0x21c)][_0x35d84e(0x215)],'model':MORPH_FAST_APPLY?'morph-v3-fast':'morph-v3-large','dry_run':_0x10867c[_0x35d84e(0x21c)]['dryRun'],'file_exists':_0x4f1f4c,'file_read_error':_0x24c94c,'file_readable':_0x88888!==null,'request_content':{'path':_0x10867c[_0x35d84e(0x21c)][_0x35d84e(0x152)],'code_edit':_0x10867c[_0x35d84e(0x21c)][_0x35d84e(0x15c)],'instruction':_0x10867c['data'][_0x35d84e(0x215)],'original_code':_0x88888!==null?_0x88888[_0x35d84e(0x230)]>0xc350?_0x88888[_0x35d84e(0x1c2)](0x0,0xc350)+_0x35d84e(0x23d)+_0x88888['length']+'\x20chars)':_0x88888:_0x35d84e(0x222)+(_0x24c94c||_0x35d84e(0x1b6))+']','original_code_length':_0x88888?.[_0x35d84e(0x230)]??0x0,'model':MORPH_FAST_APPLY?_0x35d84e(0x24a):_0x35d84e(0x22b),'dry_run':_0x10867c[_0x35d84e(0x21c)][_0x35d84e(0x1db)]}},'stack_trace':_0x3a55a1 instanceof Error?_0x3a55a1[_0x35d84e(0x15d)]:undefined,'source':'mcp-filesystem'})['catch'](()=>{}),{'content':[{'type':_0x35d84e(0x241),'text':_0x35d84e(0x190)+_0x51a7d4}],'isError':!![]};}}case _0x35d84e(0x227):{const _0x387a00=WarpGrepArgsSchema[_0x35d84e(0x249)](_0x5a8813);if(!_0x387a00[_0x35d84e(0x16d)])return{'content':[{'type':_0x35d84e(0x241),'text':_0x35d84e(0x159)+_0x387a00['error']}],'isError':!![]};const _0x22ee9e=_0x235a49=>{const _0x50aa68=_0x35d84e,_0x1dbc8a=[];for(const _0x5b1170 of _0x235a49||[]){if(_0x5b1170['role']===_0x50aa68(0x19a)&&Array[_0x50aa68(0x261)](_0x5b1170[_0x50aa68(0x173)]))for(const _0x2b5b89 of _0x5b1170[_0x50aa68(0x173)]){try{const _0x38d77d=_0x2b5b89[_0x50aa68(0x22a)]?.[_0x50aa68(0x1a2)],_0x2a1e71=JSON[_0x50aa68(0x224)](_0x2b5b89[_0x50aa68(0x22a)]?.[_0x50aa68(0x1f1)]||'{}');if(_0x38d77d===_0x50aa68(0x255))_0x1dbc8a['push'](_0x50aa68(0x1bf)+_0x2a1e71[_0x50aa68(0x196)]+'\x27\x20'+(_0x2a1e71[_0x50aa68(0x152)]||'.'));else{if(_0x38d77d==='read')_0x1dbc8a['push'](_0x50aa68(0x18d)+_0x2a1e71['path']);else{if(_0x38d77d===_0x50aa68(0x168))_0x1dbc8a[_0x50aa68(0x183)](_0x50aa68(0x1bc)+(_0x2a1e71['command']||'.'));else{if(_0x38d77d==='glob')_0x1dbc8a[_0x50aa68(0x183)](_0x50aa68(0x25e)+_0x2a1e71[_0x50aa68(0x196)]+'\x27\x20'+(_0x2a1e71['path']||'.'));else _0x38d77d==='finish'&&_0x1dbc8a[_0x50aa68(0x183)](_0x50aa68(0x1fc));}}}}catch{}}}return _0x1dbc8a;},_0x16bccb=_0x50255c=>{const _0x2b7774=_0x35d84e,_0x555ae6=[];if(!_0x50255c||!Array[_0x2b7774(0x261)](_0x50255c))return _0x555ae6;const _0x19a2ec=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x2b7774(0x239),'tool':_0x2b7774(0x24c)},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x2b7774(0x24c)},{'pattern':/\[READ ERROR\]/,'error_type':_0x2b7774(0x1cc),'tool':_0x2b7774(0x24c)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x2b7774(0x157),'tool':_0x2b7774(0x24c)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':'RipgrepError','tool':_0x2b7774(0x1f2)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':'RipgrepNotAvailable','tool':_0x2b7774(0x1f2)},{'pattern':/\[BINARY FILE\]/,'error_type':'BinaryFile','tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':_0x2b7774(0x174),'tool':'read'},{'pattern':/not a text file/,'error_type':_0x2b7774(0x157),'tool':_0x2b7774(0x24c)},{'pattern':/symbolic link/,'error_type':_0x2b7774(0x174),'tool':_0x2b7774(0x24c)},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':_0x2b7774(0x24c)},{'pattern':/status="error"/,'error_type':_0x2b7774(0x153),'tool':_0x2b7774(0x1c6)}];let _0x1bc810=0x0;for(const _0x34d43f of _0x50255c){_0x34d43f[_0x2b7774(0x256)]===_0x2b7774(0x19a)&&Array[_0x2b7774(0x261)](_0x34d43f[_0x2b7774(0x173)])&&_0x1bc810++;const _0x25bd60=_0x34d43f[_0x2b7774(0x151)];if((_0x34d43f[_0x2b7774(0x256)]===_0x2b7774(0x1a5)||_0x34d43f[_0x2b7774(0x256)]===_0x2b7774(0x170))&&_0x25bd60&&typeof _0x25bd60==='string')for(const {pattern:_0x2cf977,error_type:_0x50aee2,tool:_0x3cfa54}of _0x19a2ec){const _0x19c918=_0x25bd60[_0x2b7774(0x19c)](new RegExp(_0x2cf977[_0x2b7774(0x155)],'g'));if(_0x19c918)for(const _0x438664 of _0x19c918){const _0x2c207c=_0x25bd60[_0x2b7774(0x1a9)](_0x438664),_0x3cb696=_0x25bd60[_0x2b7774(0x1c2)](_0x2c207c,Math['min'](_0x2c207c+0xc8,_0x25bd60[_0x2b7774(0x230)]));_0x555ae6[_0x2b7774(0x183)]({'tool':_0x3cfa54,'error_type':_0x50aee2,'error_message':_0x3cb696['split']('\x0a')[0x0],'turn':_0x1bc810});}}}return _0x555ae6;};try{const _0x46a6e8=a0_0x53019e[_0x35d84e(0x204)](_0x387a00[_0x35d84e(0x21c)][_0x35d84e(0x186)]),_0x2d5f9b=_0x387a00[_0x35d84e(0x21c)][_0x35d84e(0x1c0)],_0xdd8a1f=_0x2d5f9b==='node_modules'?{'allowNames':[_0x35d84e(0x226)]}:undefined,_0x372ef2=new LocalRipgrepProvider(_0x46a6e8,undefined,_0xdd8a1f),_0x1656cd=await runWarpGrep({'searchTerm':_0x387a00['data'][_0x35d84e(0x18c)],'repoRoot':_0x46a6e8,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x372ef2,'search_type':_0x2d5f9b}),_0x5a838f=_0x16bccb(_0x1656cd[_0x35d84e(0x242)]);_0x5a838f[_0x35d84e(0x230)]>0x0&&reportMorphError({'error_message':_0x35d84e(0x199)+_0x5a838f[_0x35d84e(0x230)]+_0x35d84e(0x1fe),'error_type':_0x35d84e(0x184),'level':_0x35d84e(0x26c),'tool':_0x35d84e(0x227),'context':{'repo_path':_0x387a00[_0x35d84e(0x21c)][_0x35d84e(0x186)],'query':_0x387a00[_0x35d84e(0x21c)][_0x35d84e(0x18c)],'model':_0x35d84e(0x1f0),'termination_reason':_0x1656cd[_0x35d84e(0x19f)],'sub_tool_errors':_0x5a838f,'timings':_0x1656cd[_0x35d84e(0x251)],'tool_calls':_0x22ee9e(_0x1656cd[_0x35d84e(0x242)]),'messages':_0x1656cd[_0x35d84e(0x242)]?.[_0x35d84e(0x1ff)](_0x4c95dc=>({'role':_0x4c95dc[_0x35d84e(0x256)],'content':_0x4c95dc[_0x35d84e(0x151)],..._0x4c95dc['tool_calls']?{'tool_calls':_0x4c95dc[_0x35d84e(0x173)][_0x35d84e(0x230)]}:{},..._0x4c95dc[_0x35d84e(0x17f)]?{'tool_call_id':_0x4c95dc[_0x35d84e(0x17f)]}:{}}))},'source':'mcp-filesystem'})[_0x35d84e(0x1e0)](()=>{});let _0x38f5ce='';if(_0x1656cd[_0x35d84e(0x19f)]===_0x35d84e(0x1a8)&&_0x1656cd[_0x35d84e(0x1fc)]?.['metadata']?.['files']){const _0x1d1d09=_0x1656cd['finish'][_0x35d84e(0x167)][_0x35d84e(0x1a3)];if(_0x1d1d09['length']===0x0)return _0x38f5ce=_0x1656cd[_0x35d84e(0x1fc)][_0x35d84e(0x1f7)]||_0x35d84e(0x1d0),{'content':[{'type':_0x35d84e(0x241),'text':_0x38f5ce}]};const _0x10574b=[],_0xcb9113=[_0x35d84e(0x264)];for(const _0x116922 of _0x1656cd[_0x35d84e(0x242)]){if(_0x116922[_0x35d84e(0x256)]===_0x35d84e(0x19a)&&Array[_0x35d84e(0x261)](_0x116922['tool_calls']))for(const _0x4836a4 of _0x116922[_0x35d84e(0x173)]){try{const _0x4fc09f=_0x4836a4[_0x35d84e(0x22a)]?.[_0x35d84e(0x1a2)],_0x22f065=JSON[_0x35d84e(0x224)](_0x4836a4['function']?.['arguments']||'{}');if(_0x4fc09f===_0x35d84e(0x255))_0xcb9113[_0x35d84e(0x183)](_0x35d84e(0x267)+_0x22f065[_0x35d84e(0x196)]+_0x35d84e(0x247)+(_0x22f065[_0x35d84e(0x152)]||'.')+'`');else{if(_0x4fc09f==='read')_0xcb9113[_0x35d84e(0x183)](_0x35d84e(0x16a)+_0x22f065[_0x35d84e(0x152)]+'`');else{if(_0x4fc09f===_0x35d84e(0x168))_0xcb9113[_0x35d84e(0x183)]('-\x20Listed\x20directory\x20`'+(_0x22f065[_0x35d84e(0x1b5)]||'.')+'`');else _0x4fc09f===_0x35d84e(0x1ee)&&_0xcb9113[_0x35d84e(0x183)](_0x35d84e(0x1a4)+_0x22f065[_0x35d84e(0x196)]+'`\x20in\x20`'+(_0x22f065['path']||'.')+'`');}}}catch{}}}_0x10574b[_0x35d84e(0x183)](_0xcb9113['join']('\x0a'));const _0x7ee561=['',_0x35d84e(0x253)];for(const _0x28e359 of _0x1d1d09){if(_0x28e359[_0x35d84e(0x23a)]==='*')_0x7ee561[_0x35d84e(0x183)]('-\x20'+_0x28e359['path']+':*');else{if(Array[_0x35d84e(0x261)](_0x28e359[_0x35d84e(0x23a)])){const _0x5c1c4e=_0x28e359[_0x35d84e(0x23a)][_0x35d84e(0x1ff)](([_0x35753e,_0x13a39a])=>{if(_0x35753e===_0x13a39a)return''+_0x35753e;return _0x35753e+'-'+_0x13a39a;});_0x7ee561[_0x35d84e(0x183)]('-\x20'+_0x28e359['path']+':'+_0x5c1c4e['join'](','));}else _0x7ee561[_0x35d84e(0x183)]('-\x20'+_0x28e359[_0x35d84e(0x152)]+':*');}}_0x7ee561['push'](''),_0x10574b[_0x35d84e(0x183)](_0x7ee561[_0x35d84e(0x1ab)]('\x0a')),_0x10574b[_0x35d84e(0x183)](_0x35d84e(0x19e));const _0x3ecb31=[],_0x3ae822=[];for(const _0x1832e1 of _0x1d1d09){let _0x457a7f=a0_0x53019e[_0x35d84e(0x204)](_0x387a00[_0x35d84e(0x21c)][_0x35d84e(0x186)],_0x1832e1[_0x35d84e(0x152)]),_0x59c757=null,_0x5e288e=null;try{_0x59c757=await a0_0x3a9187[_0x35d84e(0x24f)](_0x457a7f,{'encoding':_0x35d84e(0x17a)});}catch(_0xb4925b){const _0x39b8d2=fixPathRepetition(_0x457a7f);if(_0x39b8d2)try{_0x59c757=await a0_0x3a9187[_0x35d84e(0x24f)](_0x39b8d2,{'encoding':_0x35d84e(0x17a)}),_0x457a7f=_0x39b8d2;}catch{_0x5e288e=_0xb4925b instanceof Error?_0xb4925b:new Error(String(_0xb4925b));}else _0x5e288e=_0xb4925b instanceof Error?_0xb4925b:new Error(String(_0xb4925b));}if(_0x59c757!==null){const _0x3a7ec6=_0x59c757[_0x35d84e(0x164)](/\r?\n/),_0x3d10fd=[];if(_0x1832e1[_0x35d84e(0x23a)]==='*'||!Array[_0x35d84e(0x261)](_0x1832e1['lines']))for(let _0x30dc38=0x1;_0x30dc38<=_0x3a7ec6[_0x35d84e(0x230)];_0x30dc38++){const _0x5f0b9d=_0x3a7ec6[_0x30dc38-0x1];_0x3d10fd['push'](_0x30dc38+'|\x20'+_0x5f0b9d);}else for(const [_0x1f73c0,_0x3e6e25]of _0x1832e1[_0x35d84e(0x23a)]){_0x3d10fd['length']>0x0&&_0x3d10fd['push']('');for(let _0x216b33=_0x1f73c0;_0x216b33<=_0x3e6e25&&_0x216b33<=_0x3a7ec6[_0x35d84e(0x230)];_0x216b33++){const _0x5d8c4c=_0x3a7ec6[_0x216b33-0x1];_0x3d10fd[_0x35d84e(0x183)](_0x216b33+'|\x20'+_0x5d8c4c);}}_0x3ae822[_0x35d84e(0x183)]({'path':_0x1832e1['path'],'content':_0x3d10fd[_0x35d84e(0x1ab)]('\x0a')});}else _0x3ecb31['push'](_0x35d84e(0x25b)+_0x1832e1['path']+_0x35d84e(0x19d)+(_0x5e288e?.[_0x35d84e(0x206)]||'Unknown\x20error')+_0x35d84e(0x1d5));}try{const _0x5582b0=await compactFileContexts(_0x3ae822,_0x387a00['data']['search_string'],MORPH_API_KEY,MORPH_API_URL);for(const _0x110695 of _0x5582b0){_0x3ecb31[_0x35d84e(0x183)](_0x35d84e(0x25b)+_0x110695['path']+'\x22>\x0a'+_0x110695[_0x35d84e(0x151)]+_0x35d84e(0x1d5));}}catch(_0x5a1a82){console[_0x35d84e(0x17c)](_0x35d84e(0x26b),_0x5a1a82);for(const _0x3dd604 of _0x3ae822){_0x3ecb31['push'](_0x35d84e(0x25b)+_0x3dd604[_0x35d84e(0x152)]+'\x22>\x0a'+_0x3dd604[_0x35d84e(0x151)]+_0x35d84e(0x1d5));}}_0x10574b['push'](_0x3ecb31[_0x35d84e(0x1ab)]('\x0a\x0a')),_0x38f5ce=_0x10574b[_0x35d84e(0x1ab)]('\x0a');const _0x5c066d=_0x1656cd[_0x35d84e(0x20c)]?.[_0x35d84e(0x26e)](_0x49af9d=>_0x49af9d[_0x35d84e(0x206)]?.[_0x35d84e(0x1d4)]('File\x20read\x20error:'))||[];if(_0x5c066d[_0x35d84e(0x230)]>0x0){const _0x5dcd63=_0x5c066d[_0x35d84e(0x1ff)](_0x53aafa=>_0x53aafa[_0x35d84e(0x206)])[_0x35d84e(0x1ab)](';\x20');reportMorphError({'error_message':_0x5dcd63,'error_type':_0x35d84e(0x25c),'context':{'tool':_0x35d84e(0x227),'repo_path':_0x387a00['data'][_0x35d84e(0x186)],'query':_0x387a00[_0x35d84e(0x21c)][_0x35d84e(0x18c)],'model':_0x35d84e(0x1f0),'termination_reason':_0x35d84e(0x203),'error_count':_0x5c066d[_0x35d84e(0x230)],'is_timeout':![],'timings':_0x1656cd[_0x35d84e(0x251)],'files_attempted':_0x1d1d09[_0x35d84e(0x1ff)](_0x5b5be6=>({'path':_0x5b5be6['path'],'lines':_0x5b5be6[_0x35d84e(0x23a)]})),'tool_calls':_0x22ee9e(_0x1656cd[_0x35d84e(0x242)]),'messages':_0x1656cd['messages']?.[_0x35d84e(0x1ff)](_0x9baed=>({'role':_0x9baed['role'],'content':_0x9baed[_0x35d84e(0x151)],..._0x9baed[_0x35d84e(0x173)]?{'tool_calls':_0x9baed[_0x35d84e(0x173)][_0x35d84e(0x230)]}:{},..._0x9baed['tool_call_id']?{'tool_call_id':_0x9baed[_0x35d84e(0x17f)]}:{}})),'request_content':{'query':_0x387a00[_0x35d84e(0x21c)][_0x35d84e(0x18c)],'repo_path':_0x387a00[_0x35d84e(0x21c)]['repo_path'],'repoRoot':a0_0x53019e['resolve'](_0x387a00[_0x35d84e(0x21c)]['repo_path']),'model':_0x35d84e(0x1f0)}},'source':_0x35d84e(0x1d6)})['catch'](()=>{});}}else{if(_0x1656cd[_0x35d84e(0x19f)]===_0x35d84e(0x221)&&_0x1656cd[_0x35d84e(0x20c)][_0x35d84e(0x230)]>0x0){const _0x34cf57=_0x1656cd[_0x35d84e(0x20c)][_0x35d84e(0x1ff)](_0x41733d=>_0x41733d[_0x35d84e(0x206)])['join'](';\x20');_0x38f5ce='Error:\x20'+_0x34cf57;const _0x42a7cd=_0x34cf57[_0x35d84e(0x225)]()[_0x35d84e(0x25d)](_0x35d84e(0x216))||_0x34cf57[_0x35d84e(0x225)]()[_0x35d84e(0x25d)]('timed\x20out')||_0x34cf57[_0x35d84e(0x225)]()[_0x35d84e(0x25d)]('etimedout'),_0x2031fe=_0x1656cd['finish']?.[_0x35d84e(0x167)]?.[_0x35d84e(0x1a3)],_0x5f0185=_0x1656cd[_0x35d84e(0x20c)][0x0];reportMorphError({'error_message':_0x34cf57,'error_type':_0x42a7cd?_0x35d84e(0x1c5):_0x5f0185?.[_0x35d84e(0x208)]?.[_0x35d84e(0x1a2)]||'WarpGrepError','context':{'tool':_0x35d84e(0x227),'repo_path':_0x387a00[_0x35d84e(0x21c)][_0x35d84e(0x186)],'query':_0x387a00[_0x35d84e(0x21c)][_0x35d84e(0x18c)],'model':_0x35d84e(0x1f0),'termination_reason':_0x1656cd[_0x35d84e(0x19f)],'error_count':_0x1656cd[_0x35d84e(0x20c)][_0x35d84e(0x230)],'is_timeout':_0x42a7cd,'timings':_0x1656cd['timings'],'files_attempted':_0x2031fe?.[_0x35d84e(0x1ff)](_0x47e109=>({'path':_0x47e109[_0x35d84e(0x152)],'lines':_0x47e109[_0x35d84e(0x23a)]})),'tool_calls':_0x22ee9e(_0x1656cd[_0x35d84e(0x242)]),'messages':_0x1656cd[_0x35d84e(0x242)]?.[_0x35d84e(0x1ff)](_0x358745=>({'role':_0x358745['role'],'content':_0x358745[_0x35d84e(0x151)],..._0x358745['tool_calls']?{'tool_calls':_0x358745[_0x35d84e(0x173)][_0x35d84e(0x230)]}:{},..._0x358745[_0x35d84e(0x17f)]?{'tool_call_id':_0x358745[_0x35d84e(0x17f)]}:{}})),'request_content':{'query':_0x387a00[_0x35d84e(0x21c)]['search_string'],'repo_path':_0x387a00['data']['repo_path'],'repoRoot':a0_0x53019e[_0x35d84e(0x204)](_0x387a00[_0x35d84e(0x21c)][_0x35d84e(0x186)]),'model':_0x35d84e(0x1f0)}},'stack_trace':_0x5f0185?.['stack']||undefined,'source':'mcp-filesystem'})[_0x35d84e(0x1e0)](()=>{});}else _0x38f5ce=_0x35d84e(0x1aa);}return{'content':[{'type':_0x35d84e(0x241),'text':_0x38f5ce}]};}catch(_0x217f86){const _0x5c85c2=handleMorphAPIError(_0x217f86);if(_0x5c85c2)return _0x5c85c2;const _0x5d2fcd=_0x217f86 instanceof Error?_0x217f86['message']:String(_0x217f86),_0x463129=_0x5d2fcd[_0x35d84e(0x225)]()[_0x35d84e(0x25d)](_0x35d84e(0x216))||_0x5d2fcd[_0x35d84e(0x225)]()[_0x35d84e(0x25d)](_0x35d84e(0x180))||_0x5d2fcd['toLowerCase']()[_0x35d84e(0x25d)](_0x35d84e(0x1b4))||_0x217f86 instanceof Error&&_0x217f86[_0x35d84e(0x1a2)]===_0x35d84e(0x1c5);return reportMorphError({'error_message':_0x5d2fcd,'error_type':_0x463129?'TimeoutError':_0x217f86 instanceof Error?_0x217f86[_0x35d84e(0x208)][_0x35d84e(0x1a2)]:'UnknownError','context':{'tool':_0x35d84e(0x227),'repo_path':_0x387a00[_0x35d84e(0x21c)][_0x35d84e(0x186)],'query':_0x387a00[_0x35d84e(0x21c)][_0x35d84e(0x18c)],'model':'morph-warp-grep-v2.1','is_timeout':_0x463129,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x387a00[_0x35d84e(0x21c)][_0x35d84e(0x18c)],'repo_path':_0x387a00['data'][_0x35d84e(0x186)],'repoRoot':a0_0x53019e[_0x35d84e(0x204)](_0x387a00[_0x35d84e(0x21c)][_0x35d84e(0x186)]),'model':_0x35d84e(0x1f0)}},'stack_trace':_0x217f86 instanceof Error?_0x217f86[_0x35d84e(0x15d)]:undefined,'source':'mcp-filesystem'})[_0x35d84e(0x1e0)](()=>{}),{'content':[{'type':_0x35d84e(0x241),'text':'Error\x20running\x20fast\x20context\x20search:\x20'+_0x5d2fcd}],'isError':![]};}}case _0x35d84e(0x262):{const _0x1b4453=WarpGrepGitHubArgsSchema[_0x35d84e(0x249)](_0x5a8813);if(!_0x1b4453['success'])return{'content':[{'type':_0x35d84e(0x241),'text':_0x35d84e(0x159)+_0x1b4453['error']}],'isError':!![]};const _0x5a023e=_0x1b4453['data']['github_url']||_0x1b4453[_0x35d84e(0x21c)][_0x35d84e(0x22e)];if(!_0x5a023e)return{'content':[{'type':_0x35d84e(0x241),'text':_0x35d84e(0x1f3)}],'isError':!![]};const _0x431dea=MORPH_API_KEY;if(!_0x431dea)throw new Error(_0x35d84e(0x188));const _0x307140=Date[_0x35d84e(0x235)]();logMcpStderr('[github_codebase_search]\x20Searching\x20'+_0x5a023e+'\x20for:\x20\x22'+_0x1b4453['data'][_0x35d84e(0x18c)]+'\x22');try{const _0x3404d5=new WarpGrepClient({'morphApiKey':_0x431dea,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x521237=await _0x3404d5[_0x35d84e(0x23e)]({'searchTerm':_0x1b4453[_0x35d84e(0x21c)][_0x35d84e(0x18c)],'github':_0x5a023e,'branch':_0x1b4453[_0x35d84e(0x21c)][_0x35d84e(0x240)]}),_0x4280c2=Date['now']()-_0x307140;logMcpStderr(_0x35d84e(0x17d)+_0x4280c2+_0x35d84e(0x234)+_0x521237['success']);const _0x11756e=formatResult(_0x521237);return{'content':[{'type':'text','text':_0x11756e}]};}catch(_0xcc0ac4){const _0x4866ba=handleMorphAPIError(_0xcc0ac4);if(_0x4866ba)return _0x4866ba;const _0xbf0b78=Date[_0x35d84e(0x235)]()-_0x307140,_0x131fdc=_0xcc0ac4 instanceof Error?_0xcc0ac4[_0x35d84e(0x206)]:String(_0xcc0ac4);return logMcpStderr(_0x35d84e(0x1bd)+_0xbf0b78+_0x35d84e(0x15f),_0x131fdc),reportMorphError({'error_message':_0x131fdc,'error_type':_0xcc0ac4 instanceof Error?_0xcc0ac4[_0x35d84e(0x208)][_0x35d84e(0x1a2)]:_0x35d84e(0x1b1),'context':{'tool':'github_codebase_search','github_url':_0x5a023e,'search_string':_0x1b4453[_0x35d84e(0x21c)][_0x35d84e(0x18c)],'branch':_0x1b4453[_0x35d84e(0x21c)][_0x35d84e(0x240)]},'stack_trace':_0xcc0ac4 instanceof Error?_0xcc0ac4[_0x35d84e(0x15d)]:undefined,'source':_0x35d84e(0x1d6),'tool':_0x35d84e(0x262),'latency_ms':_0xbf0b78})[_0x35d84e(0x1e0)](()=>{}),{'content':[{'type':_0x35d84e(0x241),'text':_0x35d84e(0x1b3)+_0x131fdc}],'isError':![]};}}default:throw new Error(_0x35d84e(0x18e)+_0x4af50c);}}catch(_0x1df703){const _0xbbd905=_0x1df703 instanceof Error?_0x1df703[_0x35d84e(0x206)]:String(_0x1df703);return reportMorphError({'error_message':_0xbbd905,'error_type':_0x1df703 instanceof Error?_0x1df703[_0x35d84e(0x208)][_0x35d84e(0x1a2)]:_0x35d84e(0x1b1),'context':{'tool':_0x4af50c,'arguments':_0x5a8813?JSON[_0x35d84e(0x243)](_0x5a8813)[_0x35d84e(0x1c2)](0x0,0x1f4):undefined,'mcp_server_version':_0x35d84e(0x1b7)},'stack_trace':_0x1df703 instanceof Error?_0x1df703[_0x35d84e(0x15d)]:undefined,'source':_0x35d84e(0x1d6)})[_0x35d84e(0x1e0)](()=>{}),{'content':[{'type':_0x35d84e(0x241),'text':_0x35d84e(0x163)+_0xbbd905}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x27fbb6){const _0x2e8748=a0_0x14f8f4,_0x46d742=await getValidRootDirectories(_0x27fbb6);if(_0x46d742['length']>0x0)allowedDirectories=[..._0x46d742],logMcpStderr(_0x2e8748(0x220)+_0x46d742[_0x2e8748(0x230)]+_0x2e8748(0x254));else{logMcpStderr(_0x2e8748(0x178));if(ENABLE_WORKSPACE_MODE)try{const _0x20fef0=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x20fef0&&(allowedDirectories=[_0x20fef0],logMcpStderr(_0x2e8748(0x23f)+_0x20fef0));}catch(_0x335d90){logMcpStderr(_0x2e8748(0x236)+_0x335d90);}}}server[a0_0x14f8f4(0x1c3)](RootsListChangedNotificationSchema,async()=>{const _0xaac054=a0_0x14f8f4;try{const _0x4acc38=await server[_0xaac054(0x22f)]();_0x4acc38&&_0xaac054(0x22d)in _0x4acc38&&await updateAllowedDirectoriesFromRoots(_0x4acc38[_0xaac054(0x22d)]);}catch(_0x17953e){logMcpStderr(_0xaac054(0x1ec),_0x17953e instanceof Error?_0x17953e[_0xaac054(0x206)]:String(_0x17953e));}}),server[a0_0x14f8f4(0x22c)]=async()=>{const _0x2e15b2=a0_0x14f8f4,_0xd80c73=server[_0x2e15b2(0x193)]();if(_0xd80c73?.['roots'])try{const _0x3a6bea=await server[_0x2e15b2(0x22f)]();_0x3a6bea&&'roots'in _0x3a6bea?await updateAllowedDirectoriesFromRoots(_0x3a6bea[_0x2e15b2(0x22d)]):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x353727){logMcpStderr(_0x2e15b2(0x218),_0x353727 instanceof Error?_0x353727[_0x2e15b2(0x206)]:String(_0x353727));}else{if(allowedDirectories[_0x2e15b2(0x230)]>0x0)logMcpStderr(_0x2e15b2(0x1a7),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x2e15b2(0x1f8));else throw new Error(_0x2e15b2(0x189));}}};async function runServer(){const _0x3ac564=a0_0x14f8f4,_0xfc7f14=new StdioServerTransport();await server[_0x3ac564(0x197)](_0xfc7f14),logMcpStderr(_0x3ac564(0x1e5)),allowedDirectories['length']===0x0&&logMcpStderr(_0x3ac564(0x213));}runServer()['catch'](_0x40a847=>{const _0x1bcebd=a0_0x14f8f4;logMcpStderr('Fatal\x20error\x20running\x20server:',_0x40a847),process[_0x1bcebd(0x1ae)](0x1);});
2
+ const a0_0x5f54a9=a0_0x456e;(function(_0x224d7f,_0x26894a){const _0x4d9f48=a0_0x456e,_0xee9df3=_0x224d7f();while(!![]){try{const _0x5d178c=-parseInt(_0x4d9f48(0x24a))/0x1*(parseInt(_0x4d9f48(0x306))/0x2)+parseInt(_0x4d9f48(0x27d))/0x3+parseInt(_0x4d9f48(0x2cd))/0x4+parseInt(_0x4d9f48(0x2e5))/0x5*(parseInt(_0x4d9f48(0x27c))/0x6)+parseInt(_0x4d9f48(0x24b))/0x7*(-parseInt(_0x4d9f48(0x1fb))/0x8)+parseInt(_0x4d9f48(0x230))/0x9*(parseInt(_0x4d9f48(0x28d))/0xa)+-parseInt(_0x4d9f48(0x2cb))/0xb;if(_0x5d178c===_0x26894a)break;else _0xee9df3['push'](_0xee9df3['shift']());}catch(_0x1990a2){_0xee9df3['push'](_0xee9df3['shift']());}}}(a0_0x3ca4,0x64d82));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_0x1abd69 from'fs/promises';import a0_0x12f5ba from'path';import a0_0x32978a from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{logger}from'./logger.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0x31c9b5 from'axios';function fixPathRepetition(_0x34548a){const _0x1b6cc5=a0_0x456e,_0x36f3de=_0x34548a[_0x1b6cc5(0x26c)](a0_0x12f5ba[_0x1b6cc5(0x2ec)])[_0x1b6cc5(0x21e)](Boolean);if(_0x36f3de[_0x1b6cc5(0x248)]<0x2)return null;for(let _0x1ba080=Math['floor'](_0x36f3de[_0x1b6cc5(0x248)]/0x2);_0x1ba080>=0x1;_0x1ba080--){for(let _0x1e76cc=0x0;_0x1e76cc<=_0x36f3de[_0x1b6cc5(0x248)]-0x2*_0x1ba080;_0x1e76cc++){const _0x30416a=_0x36f3de['slice'](_0x1e76cc,_0x1e76cc+_0x1ba080),_0x3f62ed=_0x36f3de[_0x1b6cc5(0x27e)](_0x1e76cc+_0x1ba080,_0x1e76cc+0x2*_0x1ba080);if(_0x30416a['every']((_0x57e3d,_0x3927c5)=>_0x57e3d===_0x3f62ed[_0x3927c5])){const _0x397c49=[..._0x36f3de[_0x1b6cc5(0x27e)](0x0,_0x1e76cc),..._0x36f3de[_0x1b6cc5(0x27e)](_0x1e76cc+_0x1ba080)];return a0_0x12f5ba[_0x1b6cc5(0x2ec)]+_0x397c49[_0x1b6cc5(0x236)](a0_0x12f5ba[_0x1b6cc5(0x2ec)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x31d5fd=a0_0x456e;try{const _0x56f2cb=require('../package.json');return _0x56f2cb[_0x31d5fd(0x21f)]??_0x31d5fd(0x250);}catch(_0x275ee6){return logMcpStderr(_0x31d5fd(0x1fe),_0x275ee6),'unknown';}}function printHelp(){const _0x556528=a0_0x456e;console['log'](_0x556528(0x2fd)+getPackageVersion()),console[_0x556528(0x205)](_0x556528(0x1f6)),console[_0x556528(0x205)]('\x0aOptions:'),console[_0x556528(0x205)](_0x556528(0x246)),console[_0x556528(0x205)]('\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit'),console[_0x556528(0x205)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console[_0x556528(0x205)](_0x556528(0x27a)),console[_0x556528(0x205)](_0x556528(0x20f)),console[_0x556528(0x205)](_0x556528(0x1f9));}const cliArgs=process[a0_0x5f54a9(0x254)][a0_0x5f54a9(0x27e)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set([a0_0x5f54a9(0x2de),'-h']);cliArgs[a0_0x5f54a9(0x282)](_0xa2477f=>VERSION_FLAGS[a0_0x5f54a9(0x2f1)](_0xa2477f))&&(console[a0_0x5f54a9(0x205)](a0_0x5f54a9(0x2fd)+getPackageVersion()),process[a0_0x5f54a9(0x242)](0x0));cliArgs['some'](_0x3144ef=>HELP_FLAGS[a0_0x5f54a9(0x2f1)](_0x3144ef))&&(printHelp(),process[a0_0x5f54a9(0x242)](0x0));function getCliArg(_0x374122){const _0x4a7f07=a0_0x5f54a9;for(let _0xf94457=0x0;_0xf94457<cliArgs[_0x4a7f07(0x248)];_0xf94457++){const _0x2a2a88=cliArgs[_0xf94457];if(_0x2a2a88[_0x4a7f07(0x2b0)]('--'+_0x374122+'='))return _0x2a2a88['slice'](('--'+_0x374122+'=')[_0x4a7f07(0x248)]);if(_0x2a2a88==='--'+_0x374122&&_0xf94457+0x1<cliArgs[_0x4a7f07(0x248)])return cliArgs[_0xf94457+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x5f54a9(0x248)];i++){const arg=cliArgs[i];if(VERSION_FLAGS['has'](arg)||HELP_FLAGS[a0_0x5f54a9(0x2f1)](arg))continue;if(arg[a0_0x5f54a9(0x2b0)](a0_0x5f54a9(0x20d)))continue;if(arg===a0_0x5f54a9(0x262)){i++;continue;}args[a0_0x5f54a9(0x2c5)](arg);}const WORKSPACE_ROOT=process[a0_0x5f54a9(0x247)][a0_0x5f54a9(0x2e0)]||process[a0_0x5f54a9(0x247)][a0_0x5f54a9(0x267)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process['env'][a0_0x5f54a9(0x290)]!==a0_0x5f54a9(0x1f4),MORPH_API_KEY=getCliArg(a0_0x5f54a9(0x2d9))??process[a0_0x5f54a9(0x247)]['MORPH_API_KEY'],MORPH_API_URL=process[a0_0x5f54a9(0x247)]['MORPH_API_URL'],MORPH_LARGE_APPLY=process['env'][a0_0x5f54a9(0x297)]!=='false',MORPH_WARP_GREP_TIMEOUT=process[a0_0x5f54a9(0x247)][a0_0x5f54a9(0x29e)]?parseInt(process['env']['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x5f54a9(0x231),a0_0x5f54a9(0x220),a0_0x5f54a9(0x29d)]),DISABLED_TOOLS=process[a0_0x5f54a9(0x247)][a0_0x5f54a9(0x2cf)]?new Set(process['env']['DISABLED_TOOLS'][a0_0x5f54a9(0x26c)](',')[a0_0x5f54a9(0x202)](_0x1e8737=>_0x1e8737[a0_0x5f54a9(0x21a)]())[a0_0x5f54a9(0x21e)](_0x2a00b2=>_0x2a00b2[a0_0x5f54a9(0x248)]>0x0)):new Set();if(DISABLED_TOOLS['size']>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x5f54a9(0x2f1)](tool)&&console[a0_0x5f54a9(0x2b1)](a0_0x5f54a9(0x2c1)+tool+'\x22.\x20Known\x20tools:\x20'+[...KNOWN_TOOL_NAMES][a0_0x5f54a9(0x236)](',\x20'));}console[a0_0x5f54a9(0x2b1)](a0_0x5f54a9(0x240)+[...DISABLED_TOOLS][a0_0x5f54a9(0x236)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x5f54a9(0x2b0)](a0_0x5f54a9(0x212))&&!MORPH_API_KEY[a0_0x5f54a9(0x2b0)](a0_0x5f54a9(0x22d))&&logMcpStderr(a0_0x5f54a9(0x2a0));async function reportMorphError(_0x2ebfaa){const _0x37c0f1=a0_0x5f54a9;try{await a0_0x31c9b5['post'](_0x37c0f1(0x255),{..._0x2ebfaa,'timestamp':new Date()['toISOString'](),'source':_0x2ebfaa['source']||_0x37c0f1(0x2d5),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x2ebfaa['context']}},{'timeout':0x1388,'headers':{'Content-Type':_0x37c0f1(0x30c),'Authorization':_0x37c0f1(0x277)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x290191,_0x44c59f){const _0x1e490b=a0_0x5f54a9;if(_0x290191&&typeof _0x290191===_0x1e490b(0x2d2)&&_0x1e490b(0x1ee)in _0x290191)return _0x290191[_0x1e490b(0x1ee)];if(_0x290191&&typeof _0x290191===_0x1e490b(0x2d2)&&_0x1e490b(0x27f)in _0x290191)return _0x290191['response']?.[_0x1e490b(0x1ee)];const _0x2dd273=_0x44c59f[_0x1e490b(0x1f3)](/\b(401|429)\b/);return _0x2dd273?parseInt(_0x2dd273[0x1],0xa):null;}function handleMorphAPIError(_0x3a47b9){const _0x2788e6=a0_0x5f54a9,_0xdf9695=_0x3a47b9 instanceof Error?_0x3a47b9[_0x2788e6(0x2d4)]:String(_0x3a47b9),_0xdb8efa=extractStatusCode(_0x3a47b9,_0xdf9695);switch(_0xdb8efa){case 0x191:return{'content':[{'type':_0x2788e6(0x23a),'text':_0x2788e6(0x283)}],'isError':!![]};case 0x1ad:return{'content':[{'type':'text','text':'Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.'}],'isError':!![]};default:return null;}}args[a0_0x5f54a9(0x248)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),logMcpStderr(a0_0x5f54a9(0x2e1)),logMcpStderr('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),logMcpStderr(a0_0x5f54a9(0x232)),logMcpStderr('\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)'),logMcpStderr(a0_0x5f54a9(0x284)));function a0_0x3ca4(){const _0x22deca=['Warning:\x20Unable\x20to\x20determine\x20package\x20version:','optional','tool_call_id','ToolException','map','runWarpGrep_call','Natural-language\x20question/description\x20about\x20the\x20code\x20you\x20want\x20to\x20understand.\x20Good\x20example:\x20\x22Where\x20does\x20auth\x20get\x20handled,\x20what\x20are\x20the\x20different\x20oauth\x20methods\x20supported?\x22,\x20\x22Trace\x20all\x20code\x20that\x20relates\x20to\x20how\x20data\x20is\x20injested\x20and\x20processed\x22.\x20Bad\x20example:\x20\x22auth()\x22,\x20\x22auth\x20login\x20dashoard\x20google\x20email\x22.\x20This\x20tool\x20does\x20NOT\x20accept\x20regex,\x20keyword\x20dumps,\x20or\x20symbol-only\x20queries.','log','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','catch','\x22>\x0aError\x20reading\x20file:\x20','warn','❌\x20Morph\x20Edit\x20Failed:\x20','ReadError','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','--api-key=','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','\x20\x20morph-mcp','finish','now','sk-','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','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.','normalize','GitHub\x20search\x20failed:\x20','readFile','path_validation_start','trim','stringify','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','data','filter','version','codebase_search','toLowerCase','Error\x20running\x20fast\x20context\x20search:\x20','describe','provider_created','messages','FileReadError','Invalid\x20arguments:\x20','node_modules','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','[github_codebase_search]\x20Done\x20in\x20','glob\x20\x27','source','morph-','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','Cargo.toml','7404732sHZGgZ','edit_file','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','errors','github_url','.vscode','join','\x20as\x20allowed\x20directory','code',',\x20modified\x20','text','Error:\x20','pattern','oninitialized','Relevant\x20context\x20found:','path','Disabled\x20tools:\x20','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','exit','completed','instructions','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','env','length','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','3170wCXWIt','28LftKdr','assistant','user','Preview\x20changes\x20without\x20applying\x20them.','completionId','unknown','\x20(new\x20file)','getClientCapabilities','debug','argv','https://morphllm.com/api/error-report','changes','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','list_directory','-\x20Read\x20file\x20`','boolean','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','repo_path','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','-\x20Grepped\x20\x27','BinaryFile','min','files','--api-key','Warning:\x20','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','Failed\x20to\x20read\x20file:\x20','stack','PWD','description','string','grep','0.2.0','split','instruction','<file\x20path=\x22','Morph\x20FastApply\x20failed\x20without\x20error\x20message','lines','Failed\x20to\x20request\x20roots\x20from\x20client:','Here\x20is\x20the\x20content\x20of\x20files:\x0a','path_validation_failed','roots','composer.json','RipgrepError','Bearer\x20','basename','default','\x0aExamples:','\x0a</file>','19932Wecadt','1551741vliFPP','slice','response','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','metadata','some','Authentication\x20failed:\x20Your\x20Morph\x20API\x20key\x20is\x20invalid\x20or\x20has\x20been\x20revoked.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key,\x20then\x20update\x20your\x20MCP\x20configuration.','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','realpath','timings','unknown\x20error','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','github_search_start','Morph\x20Edit\x20','morph-warp-grep-v2.1','branch','10eaprqo','morph-mcp','code_edit','ENABLE_WORKSPACE_MODE','payload','searchGitHub','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','warp_grep_start','access','isDirectory','MORPH_LARGE_APPLY','path_validation_resolved','\x20disabled\x20via\x20DISABLED_TOOLS','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','[could\x20not\x20read\x20file:\x20','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','github_codebase_search','MORPH_WARP_GREP_TIMEOUT','role','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','MCP','content','dirname','terminated','terminationReason','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','Rules:\x0a','tool','resolve','\x20chars)','added\x20','package.json','ms:','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','Applied','startsWith','error','Tool\x20\x22','name','.git','`\x20in\x20`','Parent\x20directory\x20does\x20not\x20exist:\x20','TimeoutError','Error\x20accessing\x20directory\x20','Unknown\x20tool:\x20','arguments','dryRun','timed\x20out','FileNotFound','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','Max\x20results\x20to\x20return','search_type','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','function','Fallback:\x20Using\x20workspace\x20root\x20','push','search_string','success','setNotificationHandler','isArray','includes','6023116nygslU','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','2373596DqUIou','\x22>\x0a','DISABLED_TOOLS','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','listRoots','object','timeout','message','mcp-filesystem','\x27\x20in\x20`','.cursor','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','api-key','\x20valid\x20directories','.\x20Path:\x20','utf-8','RipgrepNotAvailable','--help','substring','WORKSPACE_ROOT','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','go.mod','api_request_start','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','415dGmQba','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','tool_call_error','For\x20deletions:\x0a','Created\x20File','compaction_failed','UnknownError','sep','constructor','morph-v3-fast','\x0a...\x20(truncated,\x20total:\x20','etimedout','has','.\x20Changes:\x20','morph-v3-large','enum','setRequestHandler','tool_calls','file_read_complete','pyproject.toml','Workspace\x20mode\x20enabled:\x20Using\x20','File\x20read\x20error:','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','all','@morphllm/morphmcp\x20','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','API\x20error\x20(auth/rate-limit)','indexOf','Tool\x20','ENOENT','grep_search','inputSchema','parse','334KSnrsL','WarpGrep\x20sub-tool\x20errors:\x20','Morph\x20Edit\x20Preview','glob','read','owner_repo','application/json','stat','Repository\x20identifier','status','number','tool_call_complete','connect','safeParse','match','false','linesRemoved','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','-\x20Glob\x20search\x20`','completed_with_file_errors','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','requiresApiKey','1438232TSaZYm','list_directory\x20','linesModified'];a0_0x3ca4=function(){return _0x22deca;};return a0_0x3ca4();}function normalizePath(_0x10fb6b){const _0x411ba3=a0_0x5f54a9;return a0_0x12f5ba[_0x411ba3(0x216)](_0x10fb6b);}function expandHome(_0x517583){const _0x425c08=a0_0x5f54a9;if(_0x517583[_0x425c08(0x2b0)]('~/')||_0x517583==='~')return a0_0x12f5ba['join'](a0_0x32978a['homedir'](),_0x517583[_0x425c08(0x27e)](0x1));return _0x517583;}let allowedDirectories=await Promise[a0_0x5f54a9(0x2fc)](args[a0_0x5f54a9(0x202)](async _0x10ef9b=>{const _0x14bd6e=a0_0x5f54a9,_0x1592c5=expandHome(_0x10ef9b),_0x57fd3d=a0_0x12f5ba[_0x14bd6e(0x2a9)](_0x1592c5);try{const _0x9b0981=await a0_0x1abd69[_0x14bd6e(0x285)](_0x57fd3d);return normalizePath(_0x9b0981);}catch(_0x19bfff){return normalizePath(_0x57fd3d);}}));function a0_0x456e(_0x29e59a,_0x26c575){_0x29e59a=_0x29e59a-0x1ee;const _0x3ca46d=a0_0x3ca4();let _0x456edc=_0x3ca46d[_0x29e59a];return _0x456edc;}if(ENABLE_WORKSPACE_MODE&&args[a0_0x5f54a9(0x248)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x5f54a9(0x2c5)](workspaceDir),logMcpStderr(a0_0x5f54a9(0x2f9)+workspaceDir+a0_0x5f54a9(0x237)));}catch(a0_0xabd90c){logMcpStderr(a0_0x5f54a9(0x20c)+a0_0xabd90c);}async function detectWorkspaceRoot(_0x4aafb3){const _0x19d3eb=a0_0x5f54a9;let _0x7845eb=a0_0x12f5ba['resolve'](_0x4aafb3);const _0x5d0065=[_0x19d3eb(0x2b4),_0x19d3eb(0x235),_0x19d3eb(0x2ac),_0x19d3eb(0x22f),_0x19d3eb(0x2f8),_0x19d3eb(0x2e2),_0x19d3eb(0x2d7),'tsconfig.json',_0x19d3eb(0x275)];while(_0x7845eb!==a0_0x12f5ba[_0x19d3eb(0x2a3)](_0x7845eb)){for(const _0x53b6ba of _0x5d0065){const _0x58e505=a0_0x12f5ba['join'](_0x7845eb,_0x53b6ba);try{return await a0_0x1abd69[_0x19d3eb(0x295)](_0x58e505),normalizePath(_0x7845eb);}catch{}}_0x7845eb=a0_0x12f5ba['dirname'](_0x7845eb);}return normalizePath(_0x4aafb3);}await Promise[a0_0x5f54a9(0x2fc)](args[a0_0x5f54a9(0x202)](async _0x181473=>{const _0xbc34cd=a0_0x5f54a9;try{const _0x4c109d=await a0_0x1abd69[_0xbc34cd(0x30d)](expandHome(_0x181473));!_0x4c109d[_0xbc34cd(0x296)]()&&(logMcpStderr(_0xbc34cd(0x23b)+_0x181473+'\x20is\x20not\x20a\x20directory'),process[_0xbc34cd(0x242)](0x1));}catch(_0x50e75d){logMcpStderr(_0xbc34cd(0x2b8)+_0x181473+':',_0x50e75d),process[_0xbc34cd(0x242)](0x1);}}));async function validatePath(_0x43dc93){const _0x19bd91=a0_0x5f54a9,_0x1b8299=expandHome(_0x43dc93),_0x5106c9=a0_0x12f5ba['resolve'](_0x1b8299);logger['debug']('MCP',_0x19bd91(0x219),{'raw_path':_0x43dc93,'absolute':_0x5106c9});try{const _0x193c2c=await a0_0x1abd69[_0x19bd91(0x285)](_0x5106c9);return logger[_0x19bd91(0x253)]('MCP',_0x19bd91(0x298),{'resolved':_0x193c2c,'symlink':_0x193c2c!==_0x5106c9}),_0x193c2c;}catch(_0x4f7c44){if(_0x4f7c44[_0x19bd91(0x238)]===_0x19bd91(0x302)){const _0x34a7a2=a0_0x12f5ba[_0x19bd91(0x2a3)](_0x5106c9);try{const _0x17c97b=await a0_0x1abd69[_0x19bd91(0x285)](_0x34a7a2),_0x3f363c=a0_0x12f5ba[_0x19bd91(0x236)](_0x17c97b,a0_0x12f5ba[_0x19bd91(0x278)](_0x5106c9));return logger[_0x19bd91(0x253)](_0x19bd91(0x2a1),_0x19bd91(0x298),{'resolved':_0x3f363c,'new_file':!![]}),_0x3f363c;}catch{logger[_0x19bd91(0x2b1)](_0x19bd91(0x2a1),_0x19bd91(0x273),{'raw_path':_0x43dc93,'error':_0x19bd91(0x2b6)+_0x34a7a2});throw new Error(_0x19bd91(0x2b6)+_0x34a7a2);}}logger[_0x19bd91(0x2b1)](_0x19bd91(0x2a1),_0x19bd91(0x273),{'raw_path':_0x43dc93,'error':_0x4f7c44[_0x19bd91(0x2d4)]});throw _0x4f7c44;}}const MorphEditFileArgsSchema=z[a0_0x5f54a9(0x2d2)]({'path':z[a0_0x5f54a9(0x269)](),'code_edit':z[a0_0x5f54a9(0x269)]()[a0_0x5f54a9(0x223)](a0_0x5f54a9(0x264)),'instruction':z[a0_0x5f54a9(0x269)]()[a0_0x5f54a9(0x223)]('A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.'),'dryRun':z[a0_0x5f54a9(0x25a)]()[a0_0x5f54a9(0x279)](![])[a0_0x5f54a9(0x223)](a0_0x5f54a9(0x24e))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x5f54a9(0x204),WarpGrepArgsSchema=z[a0_0x5f54a9(0x2d2)]({'search_string':z[a0_0x5f54a9(0x269)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x5f54a9(0x269)]()['describe']('The\x20absolute\x20path\x20of\x20the\x20folder\x20where\x20the\x20search\x20should\x20be\x20performed.\x20In\x20multi-repo\x20workspaces,\x20you\x20have\x20to\x20specify\x20a\x20subfolder\x20where\x20the\x20search\x20should\x20be\x20performed,\x20to\x20avoid\x20searching\x20across\x20all\x20repos'),'search_type':z[a0_0x5f54a9(0x2f4)]([a0_0x5f54a9(0x279),a0_0x5f54a9(0x228)])[a0_0x5f54a9(0x1ff)]()[a0_0x5f54a9(0x223)]('Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.')}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z['string']()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x5f54a9(0x269)]()['optional']()[a0_0x5f54a9(0x223)](a0_0x5f54a9(0x214)),'owner_repo':z['string']()[a0_0x5f54a9(0x1ff)]()[a0_0x5f54a9(0x223)]('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z[a0_0x5f54a9(0x269)]()[a0_0x5f54a9(0x1ff)]()[a0_0x5f54a9(0x223)](a0_0x5f54a9(0x229))}),CodebaseSearchArgsSchema=z[a0_0x5f54a9(0x2d2)]({'query':z[a0_0x5f54a9(0x269)]()[a0_0x5f54a9(0x223)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x5f54a9(0x269)]()['describe'](a0_0x5f54a9(0x30e)),'branch':z['string']()[a0_0x5f54a9(0x1ff)]()[a0_0x5f54a9(0x223)](a0_0x5f54a9(0x2d8)),'commitHash':z['string']()[a0_0x5f54a9(0x1ff)]()[a0_0x5f54a9(0x223)]('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z['array'](z[a0_0x5f54a9(0x269)]())[a0_0x5f54a9(0x279)]([])[a0_0x5f54a9(0x223)]('Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all'),'limit':z[a0_0x5f54a9(0x1ef)]()[a0_0x5f54a9(0x1ff)]()[a0_0x5f54a9(0x279)](0xa)[a0_0x5f54a9(0x223)](a0_0x5f54a9(0x2bf))}),server=new Server({'name':a0_0x5f54a9(0x28e),'version':a0_0x5f54a9(0x26b)},{'capabilities':{'tools':{}}});server[a0_0x5f54a9(0x2f5)](ListToolsRequestSchema,async()=>{const _0x471499=a0_0x5f54a9,_0x46c8e5=[{'name':_0x471499(0x231),'description':_0x471499(0x2fe)+_0x471499(0x25d)+_0x471499(0x206)+'IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a'+'Benefits:\x0a'+_0x471499(0x2cc)+_0x471499(0x2e6)+_0x471499(0x2e4)+_0x471499(0x280)+_0x471499(0x2c2)+_0x471499(0x257)+_0x471499(0x249)+_0x471499(0x2e8)+'-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a'+'-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a'+_0x471499(0x2a7)+'-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a'+_0x471499(0x213)+'-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a'+'-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a'+_0x471499(0x2fb)+'-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a'+'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':_0x471499(0x220),'description':'A\x20code\x20exploration\x20tool,\x20use\x20this\x20tool\x20when\x20exploring\x20an\x20unfamiliar\x20codebase,\x20and\x20you\x27re\x20unsure\x20of\x20the\x20exact\x20file\x20or\x20string\x20to\x20look\x20for.\x20This\x20tool\x20will\x20find\x20all\x20relevant\x20bits\x20of\x20code\x20given\x20a\x20natural\x20lanugage\x20description,\x20or\x20questin\x20of\x20the\x20thing\x20you\x27re\x20looking\x20for.\x20'+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+'Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20'+_0x471499(0x22e)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x296741=_0x46c8e5[_0x471499(0x21e)](_0x5a3cc2=>{const _0x3207d4=_0x471499;if(DISABLED_TOOLS['has'](_0x5a3cc2[_0x3207d4(0x2b3)]))return console[_0x3207d4(0x2b1)](_0x3207d4(0x301)+_0x5a3cc2['name']+_0x3207d4(0x299)),![];if(_0x3207d4(0x1fa)in _0x5a3cc2&&_0x5a3cc2[_0x3207d4(0x1fa)]&&!MORPH_API_KEY)return logMcpStderr('Warning:\x20'+_0x5a3cc2[_0x3207d4(0x2b3)]+_0x3207d4(0x288)),![];return!![];});return{'tools':_0x296741[_0x471499(0x202)](_0x1a5b1e=>({'name':_0x1a5b1e[_0x471499(0x2b3)],'description':_0x1a5b1e[_0x471499(0x268)],'inputSchema':_0x1a5b1e[_0x471499(0x304)]}))};}),server[a0_0x5f54a9(0x2f5)](CallToolRequestSchema,async _0x1a5e89=>{const _0x5e2582=a0_0x5f54a9,{name:_0x432b8b,arguments:_0x1768a6}=_0x1a5e89['params'],_0x390172=Date[_0x5e2582(0x211)]();logger[_0x5e2582(0x253)](_0x5e2582(0x2a1),'tool_call_received',{'tool':_0x432b8b,'args':_0x432b8b===_0x5e2582(0x231)?{'path':_0x1768a6?.[_0x5e2582(0x23f)],'instruction':_0x1768a6?.[_0x5e2582(0x26d)]||_0x1768a6?.['instructions'],'dryRun':_0x1768a6?.[_0x5e2582(0x2bb)]}:_0x1768a6});try{if(!MORPH_API_KEY)return{'content':[{'type':'text','text':_0x5e2582(0x2be)}],'isError':!![]};if(!MORPH_API_KEY['startsWith'](_0x5e2582(0x212))&&!MORPH_API_KEY[_0x5e2582(0x2b0)]('morph-'))return{'content':[{'type':'text','text':'Invalid\x20Morph\x20API\x20key\x20format.\x20API\x20keys\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key.'}],'isError':!![]};if(DISABLED_TOOLS[_0x5e2582(0x2f1)](_0x432b8b))throw new Error(_0x5e2582(0x2b2)+_0x432b8b+'\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable');switch(_0x432b8b){case _0x5e2582(0x231):{const _0x11d180=_0x1768a6&&typeof _0x1768a6===_0x5e2582(0x2d2)&&_0x5e2582(0x244)in _0x1768a6&&!(_0x5e2582(0x26d)in _0x1768a6)?{..._0x1768a6,'instruction':_0x1768a6[_0x5e2582(0x244)],'instructions':undefined}:_0x1768a6,_0x293af9=MorphEditFileArgsSchema['safeParse'](_0x11d180);if(!_0x293af9[_0x5e2582(0x2c7)])throw new Error(_0x5e2582(0x25b)+_0x293af9[_0x5e2582(0x2b1)]);const _0x4ec2d4=await validatePath(_0x293af9[_0x5e2582(0x21d)][_0x5e2582(0x23f)]);let _0x12a0f0=null,_0x331eb7=!![],_0x21bdc4=null;try{_0x12a0f0=await a0_0x1abd69[_0x5e2582(0x218)](_0x4ec2d4,'utf-8'),logger[_0x5e2582(0x253)](_0x5e2582(0x2a1),_0x5e2582(0x2f7),{'path':_0x4ec2d4,'size_bytes':_0x12a0f0[_0x5e2582(0x248)]});}catch(_0x431818){const _0x1566d8=_0x431818[_0x5e2582(0x238)];_0x1566d8===_0x5e2582(0x302)?(_0x331eb7=![],_0x12a0f0='',logger[_0x5e2582(0x253)]('MCP','file_read_complete',{'path':_0x4ec2d4,'exists':![]})):(_0x21bdc4=_0x5e2582(0x265)+(_0x1566d8||'unknown')+'\x20-\x20'+(_0x431818 instanceof Error?_0x431818[_0x5e2582(0x2d4)]:String(_0x431818)),logger[_0x5e2582(0x2b1)](_0x5e2582(0x2a1),'file_read_failed',{'path':_0x4ec2d4,'error':_0x21bdc4}),logMcpStderr(_0x5e2582(0x263)+_0x21bdc4));}let _0x169453;try{const _0x72c830=MORPH_API_KEY;if(!_0x72c830)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x4621c3=a0_0x12f5ba['dirname'](_0x4ec2d4),_0x2ba967=a0_0x12f5ba['basename'](_0x4ec2d4);logger[_0x5e2582(0x253)](_0x5e2582(0x2a1),_0x5e2582(0x2e3),{'model':_0x5e2582(0x2ee),'path':_0x293af9['data']['path'],'instruction_len':_0x293af9['data']['instruction']['length'],'code_edit_len':_0x293af9['data'][_0x5e2582(0x28f)][_0x5e2582(0x248)],'original_code_len':_0x12a0f0?.[_0x5e2582(0x248)]??0x0,'dry_run':_0x293af9[_0x5e2582(0x21d)][_0x5e2582(0x2bb)]});const _0x1c04fc=Date['now'](),_0xb9dd68=await executeEditFile({'target_filepath':_0x2ba967,'code_edit':_0x293af9[_0x5e2582(0x21d)][_0x5e2582(0x28f)],'instruction':_0x293af9[_0x5e2582(0x21d)]['instruction']},{'morphApiKey':_0x72c830,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x4621c3,'autoWrite':!_0x293af9[_0x5e2582(0x21d)][_0x5e2582(0x2bb)],'generateUdiff':![],'debug':![]}),_0x474d12=Date['now']()-_0x1c04fc;_0x169453=_0xb9dd68[_0x5e2582(0x24f)];if(!_0xb9dd68[_0x5e2582(0x2c7)])throw new Error(_0xb9dd68['error']||_0x5e2582(0x26f));const _0x3dd6a5=_0xb9dd68[_0x5e2582(0x256)],_0x4ed0b0=_0x5e2582(0x2ab)+_0x3dd6a5['linesAdded']+',\x20removed\x20'+_0x3dd6a5['linesRemoved']+_0x5e2582(0x239)+_0x3dd6a5[_0x5e2582(0x1fd)];logger[_0x5e2582(0x253)](_0x5e2582(0x2a1),_0x5e2582(0x1f0),{'tool':_0x5e2582(0x231),'success':!![],'latency_ms':Date['now']()-_0x390172,'edit_latency_ms':_0x474d12,'changes':{'added':_0x3dd6a5['linesAdded'],'removed':_0x3dd6a5[_0x5e2582(0x1f5)],'modified':_0x3dd6a5[_0x5e2582(0x1fd)]},'completion_id':_0x169453});if(_0x293af9['data'][_0x5e2582(0x2bb)])return{'content':[{'type':_0x5e2582(0x23a),'text':_0x5e2582(0x308)+(_0x331eb7?'':_0x5e2582(0x251))+':\x20'+_0x293af9['data'][_0x5e2582(0x26d)]+_0x5e2582(0x2f2)+_0x4ed0b0+_0x5e2582(0x2db)+_0x293af9['data'][_0x5e2582(0x23f)]+'.'}]};return{'content':[{'type':_0x5e2582(0x23a),'text':_0x5e2582(0x28a)+(_0x331eb7?_0x5e2582(0x2af):_0x5e2582(0x2e9))+':\x20'+_0x293af9['data'][_0x5e2582(0x26d)]+'.\x20Changes:\x20'+_0x4ed0b0+'.\x20Path:\x20'+_0x293af9[_0x5e2582(0x21d)][_0x5e2582(0x23f)]+'.'}]};}catch(_0x30f764){const _0x2807fb=handleMorphAPIError(_0x30f764);if(_0x2807fb)return logger[_0x5e2582(0x2b1)](_0x5e2582(0x2a1),_0x5e2582(0x2e7),{'tool':_0x5e2582(0x231),'error':_0x5e2582(0x2ff),'latency_ms':Date[_0x5e2582(0x211)]()-_0x390172}),_0x2807fb;const _0x5037c6=_0x30f764 instanceof Error?_0x30f764[_0x5e2582(0x2d4)]:String(_0x30f764);return logger['error'](_0x5e2582(0x2a1),_0x5e2582(0x2e7),{'tool':_0x5e2582(0x231),'error':_0x5037c6,'path':_0x293af9[_0x5e2582(0x21d)][_0x5e2582(0x23f)],'validated_path':_0x4ec2d4,'latency_ms':Date[_0x5e2582(0x211)]()-_0x390172,'stack':_0x30f764 instanceof Error?_0x30f764[_0x5e2582(0x266)]:undefined}),reportMorphError({'error_message':_0x5037c6,'error_type':_0x30f764 instanceof Error?_0x30f764[_0x5e2582(0x2ed)][_0x5e2582(0x2b3)]:'UnknownError','context':{'tool':_0x5e2582(0x231),'completion_id':_0x169453,'file_path':_0x293af9['data']['path'],'validated_path':_0x4ec2d4,'instruction':_0x293af9[_0x5e2582(0x21d)][_0x5e2582(0x26d)],'model':MORPH_LARGE_APPLY?_0x5e2582(0x2f3):'morph-v3-fast','dry_run':_0x293af9[_0x5e2582(0x21d)][_0x5e2582(0x2bb)],'file_exists':_0x331eb7,'file_read_error':_0x21bdc4,'file_readable':_0x12a0f0!==null,'request_content':{'path':_0x293af9[_0x5e2582(0x21d)][_0x5e2582(0x23f)],'code_edit':_0x293af9[_0x5e2582(0x21d)][_0x5e2582(0x28f)],'instruction':_0x293af9[_0x5e2582(0x21d)][_0x5e2582(0x26d)],'original_code':_0x12a0f0!==null?_0x12a0f0['length']>0xc350?_0x12a0f0['substring'](0x0,0xc350)+_0x5e2582(0x2ef)+_0x12a0f0['length']+_0x5e2582(0x2aa):_0x12a0f0:_0x5e2582(0x29b)+(_0x21bdc4||_0x5e2582(0x287))+']','original_code_length':_0x12a0f0?.[_0x5e2582(0x248)]??0x0,'model':MORPH_LARGE_APPLY?_0x5e2582(0x2f3):_0x5e2582(0x2ee),'dry_run':_0x293af9[_0x5e2582(0x21d)]['dryRun']}},'stack_trace':_0x30f764 instanceof Error?_0x30f764[_0x5e2582(0x266)]:undefined,'source':_0x5e2582(0x2d5)})[_0x5e2582(0x207)](()=>{}),{'content':[{'type':_0x5e2582(0x23a),'text':_0x5e2582(0x20a)+_0x5037c6}],'isError':!![]};}}case _0x5e2582(0x220):{const _0x2b8e7d=WarpGrepArgsSchema[_0x5e2582(0x1f2)](_0x1768a6);if(!_0x2b8e7d[_0x5e2582(0x2c7)])return{'content':[{'type':'text','text':_0x5e2582(0x227)+_0x2b8e7d[_0x5e2582(0x2b1)]}],'isError':!![]};const _0x35005a=_0x28ec60=>{const _0x2dd80b=_0x5e2582,_0x324b43=[];for(const _0x3b128c of _0x28ec60||[]){if(_0x3b128c[_0x2dd80b(0x29f)]===_0x2dd80b(0x24c)&&Array[_0x2dd80b(0x2c9)](_0x3b128c[_0x2dd80b(0x2f6)]))for(const _0x5cf616 of _0x3b128c[_0x2dd80b(0x2f6)]){try{const _0x1eefb2=_0x5cf616[_0x2dd80b(0x2c3)]?.[_0x2dd80b(0x2b3)],_0x4c30f6=JSON['parse'](_0x5cf616[_0x2dd80b(0x2c3)]?.[_0x2dd80b(0x2ba)]||'{}');if(_0x1eefb2===_0x2dd80b(0x303))_0x324b43[_0x2dd80b(0x2c5)]('grep\x20\x27'+_0x4c30f6[_0x2dd80b(0x23c)]+'\x27\x20'+(_0x4c30f6[_0x2dd80b(0x23f)]||'.'));else{if(_0x1eefb2===_0x2dd80b(0x30a))_0x324b43[_0x2dd80b(0x2c5)]('read\x20'+_0x4c30f6[_0x2dd80b(0x23f)]);else{if(_0x1eefb2===_0x2dd80b(0x258))_0x324b43[_0x2dd80b(0x2c5)](_0x2dd80b(0x1fc)+(_0x4c30f6['command']||'.'));else{if(_0x1eefb2===_0x2dd80b(0x309))_0x324b43['push'](_0x2dd80b(0x22b)+_0x4c30f6[_0x2dd80b(0x23c)]+'\x27\x20'+(_0x4c30f6['path']||'.'));else _0x1eefb2===_0x2dd80b(0x210)&&_0x324b43[_0x2dd80b(0x2c5)](_0x2dd80b(0x210));}}}}catch{}}}return _0x324b43;},_0x325d80=_0x44925c=>{const _0x46a15c=_0x5e2582,_0x27b45f=[];if(!_0x44925c||!Array[_0x46a15c(0x2c9)](_0x44925c))return _0x27b45f;const _0x52d5e4=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x46a15c(0x2bd),'tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x46a15c(0x30a)},{'pattern':/\[READ ERROR\]/,'error_type':_0x46a15c(0x20b),'tool':_0x46a15c(0x30a)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x46a15c(0x25f),'tool':'read'},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x46a15c(0x276),'tool':_0x46a15c(0x26a)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x46a15c(0x2dd),'tool':_0x46a15c(0x26a)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x46a15c(0x25f),'tool':_0x46a15c(0x30a)},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':_0x46a15c(0x30a)},{'pattern':/not a text file/,'error_type':_0x46a15c(0x25f),'tool':_0x46a15c(0x30a)},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':'read'},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':'read'},{'pattern':/status="error"/,'error_type':_0x46a15c(0x201),'tool':_0x46a15c(0x250)}];let _0x15bc09=0x0;for(const _0x505289 of _0x44925c){_0x505289[_0x46a15c(0x29f)]===_0x46a15c(0x24c)&&Array[_0x46a15c(0x2c9)](_0x505289[_0x46a15c(0x2f6)])&&_0x15bc09++;const _0x45b54f=_0x505289[_0x46a15c(0x2a2)];if((_0x505289[_0x46a15c(0x29f)]===_0x46a15c(0x2a8)||_0x505289[_0x46a15c(0x29f)]===_0x46a15c(0x24d))&&_0x45b54f&&typeof _0x45b54f==='string')for(const {pattern:_0x4251b9,error_type:_0x108163,tool:_0xfa4143}of _0x52d5e4){const _0x200bd8=_0x45b54f[_0x46a15c(0x1f3)](new RegExp(_0x4251b9[_0x46a15c(0x22c)],'g'));if(_0x200bd8)for(const _0x5deb0c of _0x200bd8){const _0x4e3c07=_0x45b54f[_0x46a15c(0x300)](_0x5deb0c),_0x1237b4=_0x45b54f[_0x46a15c(0x2df)](_0x4e3c07,Math[_0x46a15c(0x260)](_0x4e3c07+0xc8,_0x45b54f[_0x46a15c(0x248)]));_0x27b45f[_0x46a15c(0x2c5)]({'tool':_0xfa4143,'error_type':_0x108163,'error_message':_0x1237b4['split']('\x0a')[0x0],'turn':_0x15bc09});}}}return _0x27b45f;};try{const _0x1a568c=a0_0x12f5ba[_0x5e2582(0x2a9)](_0x2b8e7d[_0x5e2582(0x21d)]['repo_path']),_0x4d5389=_0x2b8e7d['data'][_0x5e2582(0x2c0)],_0x28fb59=_0x4d5389==='node_modules'?{'allowNames':[_0x5e2582(0x228)]}:undefined,_0x25706d=new LocalRipgrepProvider(_0x1a568c,undefined,_0x28fb59);logger[_0x5e2582(0x253)](_0x5e2582(0x2a1),_0x5e2582(0x224),{'type':'LocalRipgrepProvider','repo_root':_0x1a568c,'search_type':_0x4d5389||_0x5e2582(0x279)}),logger[_0x5e2582(0x253)](_0x5e2582(0x2a1),_0x5e2582(0x294),{'query':_0x2b8e7d['data'][_0x5e2582(0x2c6)],'repo_root':_0x1a568c,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x20fa3=Date['now'](),_0x59df3a=await runWarpGrep({'searchTerm':_0x2b8e7d[_0x5e2582(0x21d)][_0x5e2582(0x2c6)],'repoRoot':_0x1a568c,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x25706d,'search_type':_0x4d5389}),_0x197271=Date[_0x5e2582(0x211)]()-_0x20fa3,_0x8fbabf=_0x59df3a[_0x5e2582(0x210)]?.[_0x5e2582(0x281)]?.[_0x5e2582(0x261)]?.['length']??0x0;logger[_0x5e2582(0x253)](_0x5e2582(0x2a1),'warp_grep_complete',{'termination':_0x59df3a[_0x5e2582(0x2a5)],'turns':_0x59df3a['timings']?.['turns']??0x0,'files_found':_0x8fbabf,'latency_ms':_0x197271});const _0x372858=_0x325d80(_0x59df3a[_0x5e2582(0x225)]);_0x372858['length']>0x0&&reportMorphError({'error_message':_0x5e2582(0x307)+_0x372858['length']+'\x20error(s)','error_type':'SubToolError','level':_0x5e2582(0x209),'tool':_0x5e2582(0x220),'context':{'repo_path':_0x2b8e7d['data'][_0x5e2582(0x25c)],'query':_0x2b8e7d[_0x5e2582(0x21d)][_0x5e2582(0x2c6)],'model':'morph-warp-grep-v2.1','termination_reason':_0x59df3a['terminationReason'],'sub_tool_errors':_0x372858,'timings':_0x59df3a[_0x5e2582(0x286)],'tool_calls':_0x35005a(_0x59df3a[_0x5e2582(0x225)]),'messages':_0x59df3a[_0x5e2582(0x225)]?.['map'](_0x145a5c=>({'role':_0x145a5c['role'],'content':_0x145a5c[_0x5e2582(0x2a2)],..._0x145a5c[_0x5e2582(0x2f6)]?{'tool_calls':_0x145a5c['tool_calls'][_0x5e2582(0x248)]}:{},..._0x145a5c['tool_call_id']?{'tool_call_id':_0x145a5c[_0x5e2582(0x200)]}:{}}))},'source':_0x5e2582(0x2d5)})['catch'](()=>{});let _0x1971fa='';if(_0x59df3a[_0x5e2582(0x2a5)]===_0x5e2582(0x243)&&_0x59df3a[_0x5e2582(0x210)]?.[_0x5e2582(0x281)]?.[_0x5e2582(0x261)]){const _0x52521a=_0x59df3a[_0x5e2582(0x210)]['metadata']['files'];if(_0x52521a[_0x5e2582(0x248)]===0x0)return _0x1971fa=_0x59df3a[_0x5e2582(0x210)][_0x5e2582(0x291)]||_0x5e2582(0x2ae),{'content':[{'type':_0x5e2582(0x23a),'text':_0x1971fa}]};const _0x303f2c=[],_0x1dd8ae=[_0x5e2582(0x20e)];for(const _0x2254c6 of _0x59df3a['messages']){if(_0x2254c6['role']===_0x5e2582(0x24c)&&Array[_0x5e2582(0x2c9)](_0x2254c6[_0x5e2582(0x2f6)]))for(const _0x1155b4 of _0x2254c6[_0x5e2582(0x2f6)]){try{const _0x3ad18d=_0x1155b4[_0x5e2582(0x2c3)]?.[_0x5e2582(0x2b3)],_0x54c592=JSON[_0x5e2582(0x305)](_0x1155b4[_0x5e2582(0x2c3)]?.[_0x5e2582(0x2ba)]||'{}');if(_0x3ad18d===_0x5e2582(0x303))_0x1dd8ae[_0x5e2582(0x2c5)](_0x5e2582(0x25e)+_0x54c592[_0x5e2582(0x23c)]+_0x5e2582(0x2d6)+(_0x54c592[_0x5e2582(0x23f)]||'.')+'`');else{if(_0x3ad18d===_0x5e2582(0x30a))_0x1dd8ae[_0x5e2582(0x2c5)](_0x5e2582(0x259)+_0x54c592['path']+'`');else{if(_0x3ad18d===_0x5e2582(0x258))_0x1dd8ae[_0x5e2582(0x2c5)]('-\x20Listed\x20directory\x20`'+(_0x54c592['command']||'.')+'`');else _0x3ad18d===_0x5e2582(0x309)&&_0x1dd8ae['push'](_0x5e2582(0x1f7)+_0x54c592[_0x5e2582(0x23c)]+_0x5e2582(0x2b5)+(_0x54c592['path']||'.')+'`');}}}catch{}}}_0x303f2c['push'](_0x1dd8ae[_0x5e2582(0x236)]('\x0a'));const _0x350c33=['',_0x5e2582(0x23e)];for(const _0xa55aef of _0x52521a){if(_0xa55aef[_0x5e2582(0x270)]==='*')_0x350c33[_0x5e2582(0x2c5)]('-\x20'+_0xa55aef[_0x5e2582(0x23f)]+':*');else{if(Array[_0x5e2582(0x2c9)](_0xa55aef['lines'])){const _0x5920e0=_0xa55aef[_0x5e2582(0x270)][_0x5e2582(0x202)](([_0x3e4c94,_0x3f8366])=>{if(_0x3e4c94===_0x3f8366)return''+_0x3e4c94;return _0x3e4c94+'-'+_0x3f8366;});_0x350c33[_0x5e2582(0x2c5)]('-\x20'+_0xa55aef['path']+':'+_0x5920e0[_0x5e2582(0x236)](','));}else _0x350c33[_0x5e2582(0x2c5)]('-\x20'+_0xa55aef['path']+':*');}}_0x350c33[_0x5e2582(0x2c5)](''),_0x303f2c[_0x5e2582(0x2c5)](_0x350c33[_0x5e2582(0x236)]('\x0a')),_0x303f2c[_0x5e2582(0x2c5)](_0x5e2582(0x272));const _0x58e67c=[],_0x129b40=[];for(const _0x47052d of _0x52521a){let _0xd9af80=a0_0x12f5ba[_0x5e2582(0x2a9)](_0x2b8e7d[_0x5e2582(0x21d)][_0x5e2582(0x25c)],_0x47052d[_0x5e2582(0x23f)]),_0x52df17=null,_0x5dfbd0=null;try{_0x52df17=await a0_0x1abd69[_0x5e2582(0x218)](_0xd9af80,{'encoding':_0x5e2582(0x2dc)});}catch(_0x3b8a08){const _0x15a2b5=fixPathRepetition(_0xd9af80);if(_0x15a2b5)try{_0x52df17=await a0_0x1abd69[_0x5e2582(0x218)](_0x15a2b5,{'encoding':_0x5e2582(0x2dc)}),_0xd9af80=_0x15a2b5;}catch{_0x5dfbd0=_0x3b8a08 instanceof Error?_0x3b8a08:new Error(String(_0x3b8a08));}else _0x5dfbd0=_0x3b8a08 instanceof Error?_0x3b8a08:new Error(String(_0x3b8a08));}if(_0x52df17!==null){const _0x3bbfa3=_0x52df17[_0x5e2582(0x26c)](/\r?\n/),_0x37e448=[];if(_0x47052d['lines']==='*'||!Array[_0x5e2582(0x2c9)](_0x47052d[_0x5e2582(0x270)]))for(let _0x122391=0x1;_0x122391<=_0x3bbfa3[_0x5e2582(0x248)];_0x122391++){const _0x1c1b72=_0x3bbfa3[_0x122391-0x1];_0x37e448[_0x5e2582(0x2c5)](_0x122391+'|\x20'+_0x1c1b72);}else for(const [_0x17c8c1,_0x4ac5aa]of _0x47052d[_0x5e2582(0x270)]){_0x37e448[_0x5e2582(0x248)]>0x0&&_0x37e448[_0x5e2582(0x2c5)]('');for(let _0x5bf3bf=_0x17c8c1;_0x5bf3bf<=_0x4ac5aa&&_0x5bf3bf<=_0x3bbfa3['length'];_0x5bf3bf++){const _0x5a831c=_0x3bbfa3[_0x5bf3bf-0x1];_0x37e448[_0x5e2582(0x2c5)](_0x5bf3bf+'|\x20'+_0x5a831c);}}_0x129b40[_0x5e2582(0x2c5)]({'path':_0x47052d['path'],'content':_0x37e448['join']('\x0a')});}else _0x58e67c['push'](_0x5e2582(0x26e)+_0x47052d[_0x5e2582(0x23f)]+_0x5e2582(0x208)+(_0x5dfbd0?.[_0x5e2582(0x2d4)]||'Unknown\x20error')+_0x5e2582(0x27b));}try{const _0x2248c0=await compactFileContexts(_0x129b40,_0x2b8e7d[_0x5e2582(0x21d)][_0x5e2582(0x2c6)],MORPH_API_KEY,MORPH_API_URL);for(const _0x455aad of _0x2248c0){_0x58e67c[_0x5e2582(0x2c5)](_0x5e2582(0x26e)+_0x455aad[_0x5e2582(0x23f)]+_0x5e2582(0x2ce)+_0x455aad[_0x5e2582(0x2a2)]+'\x0a</file>');}}catch(_0x578fa0){logger[_0x5e2582(0x209)](_0x5e2582(0x2a1),_0x5e2582(0x2ea),{'error':_0x578fa0 instanceof Error?_0x578fa0[_0x5e2582(0x2d4)]:String(_0x578fa0),'files_count':_0x129b40['length']});for(const _0x2ad258 of _0x129b40){_0x58e67c[_0x5e2582(0x2c5)](_0x5e2582(0x26e)+_0x2ad258[_0x5e2582(0x23f)]+_0x5e2582(0x2ce)+_0x2ad258[_0x5e2582(0x2a2)]+'\x0a</file>');}}_0x303f2c['push'](_0x58e67c['join']('\x0a\x0a')),_0x1971fa=_0x303f2c[_0x5e2582(0x236)]('\x0a');const _0x181fd4=_0x59df3a[_0x5e2582(0x233)]?.[_0x5e2582(0x21e)](_0x2a4b9f=>_0x2a4b9f[_0x5e2582(0x2d4)]?.['startsWith'](_0x5e2582(0x2fa)))||[];if(_0x181fd4['length']>0x0){const _0x507e6e=_0x181fd4['map'](_0x2c03b1=>_0x2c03b1[_0x5e2582(0x2d4)])[_0x5e2582(0x236)](';\x20');reportMorphError({'error_message':_0x507e6e,'error_type':_0x5e2582(0x226),'context':{'tool':_0x5e2582(0x220),'repo_path':_0x2b8e7d[_0x5e2582(0x21d)][_0x5e2582(0x25c)],'query':_0x2b8e7d['data'][_0x5e2582(0x2c6)],'model':_0x5e2582(0x28b),'termination_reason':_0x5e2582(0x1f8),'error_count':_0x181fd4[_0x5e2582(0x248)],'is_timeout':![],'timings':_0x59df3a[_0x5e2582(0x286)],'files_attempted':_0x52521a['map'](_0x465b06=>({'path':_0x465b06[_0x5e2582(0x23f)],'lines':_0x465b06[_0x5e2582(0x270)]})),'tool_calls':_0x35005a(_0x59df3a[_0x5e2582(0x225)]),'messages':_0x59df3a[_0x5e2582(0x225)]?.['map'](_0x488302=>({'role':_0x488302['role'],'content':_0x488302[_0x5e2582(0x2a2)],..._0x488302[_0x5e2582(0x2f6)]?{'tool_calls':_0x488302[_0x5e2582(0x2f6)]['length']}:{},..._0x488302[_0x5e2582(0x200)]?{'tool_call_id':_0x488302[_0x5e2582(0x200)]}:{}})),'request_content':{'query':_0x2b8e7d[_0x5e2582(0x21d)][_0x5e2582(0x2c6)],'repo_path':_0x2b8e7d['data'][_0x5e2582(0x25c)],'repoRoot':a0_0x12f5ba[_0x5e2582(0x2a9)](_0x2b8e7d[_0x5e2582(0x21d)][_0x5e2582(0x25c)]),'model':_0x5e2582(0x28b)}},'source':_0x5e2582(0x2d5)})[_0x5e2582(0x207)](()=>{});}}else{if(_0x59df3a[_0x5e2582(0x2a5)]===_0x5e2582(0x2a4)&&_0x59df3a[_0x5e2582(0x233)][_0x5e2582(0x248)]>0x0){const _0x5b059b=_0x59df3a[_0x5e2582(0x233)][_0x5e2582(0x202)](_0x33dfb5=>_0x33dfb5[_0x5e2582(0x2d4)])['join'](';\x20');_0x1971fa=_0x5e2582(0x23b)+_0x5b059b;const _0x3c219c=_0x5b059b[_0x5e2582(0x221)]()[_0x5e2582(0x2ca)](_0x5e2582(0x2d3))||_0x5b059b[_0x5e2582(0x221)]()[_0x5e2582(0x2ca)]('timed\x20out')||_0x5b059b['toLowerCase']()[_0x5e2582(0x2ca)](_0x5e2582(0x2f0)),_0x32e1e3=_0x59df3a['finish']?.['metadata']?.['files'],_0x586826=_0x59df3a[_0x5e2582(0x233)][0x0];reportMorphError({'error_message':_0x5b059b,'error_type':_0x3c219c?_0x5e2582(0x2b7):_0x586826?.[_0x5e2582(0x2ed)]?.[_0x5e2582(0x2b3)]||'WarpGrepError','context':{'tool':'codebase_search','repo_path':_0x2b8e7d[_0x5e2582(0x21d)][_0x5e2582(0x25c)],'query':_0x2b8e7d[_0x5e2582(0x21d)][_0x5e2582(0x2c6)],'model':_0x5e2582(0x28b),'termination_reason':_0x59df3a[_0x5e2582(0x2a5)],'error_count':_0x59df3a[_0x5e2582(0x233)]['length'],'is_timeout':_0x3c219c,'timings':_0x59df3a[_0x5e2582(0x286)],'files_attempted':_0x32e1e3?.[_0x5e2582(0x202)](_0x1db940=>({'path':_0x1db940[_0x5e2582(0x23f)],'lines':_0x1db940[_0x5e2582(0x270)]})),'tool_calls':_0x35005a(_0x59df3a['messages']),'messages':_0x59df3a['messages']?.[_0x5e2582(0x202)](_0x472e8b=>({'role':_0x472e8b[_0x5e2582(0x29f)],'content':_0x472e8b[_0x5e2582(0x2a2)],..._0x472e8b[_0x5e2582(0x2f6)]?{'tool_calls':_0x472e8b[_0x5e2582(0x2f6)]['length']}:{},..._0x472e8b[_0x5e2582(0x200)]?{'tool_call_id':_0x472e8b[_0x5e2582(0x200)]}:{}})),'request_content':{'query':_0x2b8e7d[_0x5e2582(0x21d)][_0x5e2582(0x2c6)],'repo_path':_0x2b8e7d[_0x5e2582(0x21d)]['repo_path'],'repoRoot':a0_0x12f5ba['resolve'](_0x2b8e7d[_0x5e2582(0x21d)][_0x5e2582(0x25c)]),'model':_0x5e2582(0x28b)}},'stack_trace':_0x586826?.['stack']||undefined,'source':_0x5e2582(0x2d5)})['catch'](()=>{});}else _0x1971fa=_0x5e2582(0x2d0);}return{'content':[{'type':_0x5e2582(0x23a),'text':_0x1971fa}]};}catch(_0x2c3538){const _0x2ec6f3=handleMorphAPIError(_0x2c3538);if(_0x2ec6f3)return logger[_0x5e2582(0x2b1)](_0x5e2582(0x2a1),_0x5e2582(0x2e7),{'tool':_0x5e2582(0x220),'error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date['now']()-_0x390172}),_0x2ec6f3;const _0x5ed1f6=_0x2c3538 instanceof Error?_0x2c3538[_0x5e2582(0x2d4)]:String(_0x2c3538);logger[_0x5e2582(0x2b1)]('MCP',_0x5e2582(0x2e7),{'tool':_0x5e2582(0x220),'error':_0x5ed1f6,'repo_path':_0x2b8e7d[_0x5e2582(0x21d)][_0x5e2582(0x25c)],'query':_0x2b8e7d[_0x5e2582(0x21d)][_0x5e2582(0x2c6)],'latency_ms':Date[_0x5e2582(0x211)]()-_0x390172});const _0x322d01=_0x5ed1f6[_0x5e2582(0x221)]()['includes']('timeout')||_0x5ed1f6[_0x5e2582(0x221)]()[_0x5e2582(0x2ca)](_0x5e2582(0x2bc))||_0x5ed1f6[_0x5e2582(0x221)]()[_0x5e2582(0x2ca)](_0x5e2582(0x2f0))||_0x2c3538 instanceof Error&&_0x2c3538[_0x5e2582(0x2b3)]==='TimeoutError';return reportMorphError({'error_message':_0x5ed1f6,'error_type':_0x322d01?_0x5e2582(0x2b7):_0x2c3538 instanceof Error?_0x2c3538[_0x5e2582(0x2ed)]['name']:_0x5e2582(0x2eb),'context':{'tool':_0x5e2582(0x220),'repo_path':_0x2b8e7d[_0x5e2582(0x21d)][_0x5e2582(0x25c)],'query':_0x2b8e7d[_0x5e2582(0x21d)]['search_string'],'model':_0x5e2582(0x28b),'is_timeout':_0x322d01,'exception_phase':_0x5e2582(0x203),'request_content':{'query':_0x2b8e7d[_0x5e2582(0x21d)][_0x5e2582(0x2c6)],'repo_path':_0x2b8e7d[_0x5e2582(0x21d)][_0x5e2582(0x25c)],'repoRoot':a0_0x12f5ba[_0x5e2582(0x2a9)](_0x2b8e7d[_0x5e2582(0x21d)]['repo_path']),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x2c3538 instanceof Error?_0x2c3538[_0x5e2582(0x266)]:undefined,'source':_0x5e2582(0x2d5)})[_0x5e2582(0x207)](()=>{}),{'content':[{'type':'text','text':_0x5e2582(0x222)+_0x5ed1f6}],'isError':![]};}}case _0x5e2582(0x29d):{const _0x1657ab=WarpGrepGitHubArgsSchema[_0x5e2582(0x1f2)](_0x1768a6);if(!_0x1657ab[_0x5e2582(0x2c7)])return{'content':[{'type':_0x5e2582(0x23a),'text':_0x5e2582(0x227)+_0x1657ab[_0x5e2582(0x2b1)]}],'isError':!![]};const _0x181efb=_0x1657ab['data'][_0x5e2582(0x234)]||_0x1657ab['data'][_0x5e2582(0x30b)];if(!_0x181efb)return{'content':[{'type':_0x5e2582(0x23a),'text':_0x5e2582(0x241)}],'isError':!![]};const _0x565248=MORPH_API_KEY;if(!_0x565248)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0xc2aeb9=Date[_0x5e2582(0x211)]();logger[_0x5e2582(0x253)]('MCP',_0x5e2582(0x289),{'identifier':_0x181efb,'query':_0x1657ab['data'][_0x5e2582(0x2c6)],'branch':_0x1657ab['data'][_0x5e2582(0x28c)]});try{const _0x72a2b9=new WarpGrepClient({'morphApiKey':_0x565248,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x1ec6a8=await _0x72a2b9[_0x5e2582(0x292)]({'searchTerm':_0x1657ab['data'][_0x5e2582(0x2c6)],'github':_0x181efb,'branch':_0x1657ab[_0x5e2582(0x21d)]['branch']}),_0x405efe=Date['now']()-_0xc2aeb9;logMcpStderr(_0x5e2582(0x22a)+_0x405efe+'ms.\x20Success:\x20'+_0x1ec6a8[_0x5e2582(0x2c7)]);const _0x374b45=formatResult(_0x1ec6a8);return{'content':[{'type':'text','text':_0x374b45}]};}catch(_0x1526e5){const _0x22ac46=handleMorphAPIError(_0x1526e5);if(_0x22ac46)return _0x22ac46;const _0x1e1ccc=Date[_0x5e2582(0x211)]()-_0xc2aeb9,_0x168f91=_0x1526e5 instanceof Error?_0x1526e5[_0x5e2582(0x2d4)]:String(_0x1526e5);return logMcpStderr('[github_codebase_search]\x20Failed\x20in\x20'+_0x1e1ccc+_0x5e2582(0x2ad),_0x168f91),reportMorphError({'error_message':_0x168f91,'error_type':_0x1526e5 instanceof Error?_0x1526e5[_0x5e2582(0x2ed)][_0x5e2582(0x2b3)]:_0x5e2582(0x2eb),'context':{'tool':_0x5e2582(0x29d),'github_url':_0x181efb,'search_string':_0x1657ab[_0x5e2582(0x21d)][_0x5e2582(0x2c6)],'branch':_0x1657ab[_0x5e2582(0x21d)][_0x5e2582(0x28c)]},'stack_trace':_0x1526e5 instanceof Error?_0x1526e5[_0x5e2582(0x266)]:undefined,'source':'mcp-filesystem','tool':_0x5e2582(0x29d),'latency_ms':_0x1e1ccc})['catch'](()=>{}),{'content':[{'type':_0x5e2582(0x23a),'text':_0x5e2582(0x217)+_0x168f91}],'isError':![]};}}default:throw new Error(_0x5e2582(0x2b9)+_0x432b8b);}}catch(_0x3380f8){const _0x317751=_0x3380f8 instanceof Error?_0x3380f8['message']:String(_0x3380f8);return reportMorphError({'error_message':_0x317751,'error_type':_0x3380f8 instanceof Error?_0x3380f8['constructor']['name']:_0x5e2582(0x2eb),'context':{'tool':_0x432b8b,'arguments':_0x1768a6?JSON[_0x5e2582(0x21b)](_0x1768a6)[_0x5e2582(0x2df)](0x0,0x1f4):undefined,'mcp_server_version':_0x5e2582(0x26b)},'stack_trace':_0x3380f8 instanceof Error?_0x3380f8[_0x5e2582(0x266)]:undefined,'source':_0x5e2582(0x2d5)})[_0x5e2582(0x207)](()=>{}),{'content':[{'type':'text','text':_0x5e2582(0x23b)+_0x317751}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x45f6b7){const _0x3129f3=a0_0x5f54a9,_0x4e15b2=await getValidRootDirectories(_0x45f6b7);if(_0x4e15b2[_0x3129f3(0x248)]>0x0)allowedDirectories=[..._0x4e15b2],logMcpStderr(_0x3129f3(0x2a6)+_0x4e15b2[_0x3129f3(0x248)]+_0x3129f3(0x2da));else{logMcpStderr(_0x3129f3(0x245));if(ENABLE_WORKSPACE_MODE)try{const _0x6c3c2a=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x6c3c2a&&(allowedDirectories=[_0x6c3c2a],logMcpStderr(_0x3129f3(0x2c4)+_0x6c3c2a));}catch(_0x432307){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x432307);}}}server[a0_0x5f54a9(0x2c8)](RootsListChangedNotificationSchema,async()=>{const _0x53f863=a0_0x5f54a9;try{const _0x5123e4=await server[_0x53f863(0x2d1)]();_0x5123e4&&_0x53f863(0x274)in _0x5123e4&&await updateAllowedDirectoriesFromRoots(_0x5123e4[_0x53f863(0x274)]);}catch(_0x30c5b6){logMcpStderr(_0x53f863(0x271),_0x30c5b6 instanceof Error?_0x30c5b6[_0x53f863(0x2d4)]:String(_0x30c5b6));}}),server[a0_0x5f54a9(0x23d)]=async()=>{const _0x2d6d41=a0_0x5f54a9,_0x106024=server[_0x2d6d41(0x252)]();if(_0x106024?.[_0x2d6d41(0x274)])try{const _0x36a0c8=await server['listRoots']();_0x36a0c8&&_0x2d6d41(0x274)in _0x36a0c8?await updateAllowedDirectoriesFromRoots(_0x36a0c8[_0x2d6d41(0x274)]):logMcpStderr(_0x2d6d41(0x293));}catch(_0x3ddd5b){logMcpStderr(_0x2d6d41(0x29c),_0x3ddd5b instanceof Error?_0x3ddd5b[_0x2d6d41(0x2d4)]:String(_0x3ddd5b));}else{if(allowedDirectories[_0x2d6d41(0x248)]>0x0)logMcpStderr(_0x2d6d41(0x21c),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode');else throw new Error(_0x2d6d41(0x215));}}};async function runServer(){const _0x5ae22e=a0_0x5f54a9,_0x3d9995=new StdioServerTransport();await server[_0x5ae22e(0x1f1)](_0x3d9995),logMcpStderr(_0x5ae22e(0x29a)),allowedDirectories[_0x5ae22e(0x248)]===0x0&&logMcpStderr('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()[a0_0x5f54a9(0x207)](_0x3e3417=>{const _0x507be1=a0_0x5f54a9;logMcpStderr('Fatal\x20error\x20running\x20server:',_0x3e3417),process[_0x507be1(0x242)](0x1);});
package/dist/log-utils.js CHANGED
@@ -1 +1 @@
1
- function a1_0x207c(_0x3c4279,_0x832f06){_0x3c4279=_0x3c4279-0xd0;var _0x12e876=a1_0x12e8();var _0x207ccb=_0x12e876[_0x3c4279];return _0x207ccb;}var a1_0x1c4fce=a1_0x207c;(function(_0x441525,_0x7374eb){var _0x44ee2f=a1_0x207c,_0x747d6e=_0x441525();while(!![]){try{var _0x21b010=parseInt(_0x44ee2f(0xd0))/0x1*(parseInt(_0x44ee2f(0xe0))/0x2)+parseInt(_0x44ee2f(0xd5))/0x3*(parseInt(_0x44ee2f(0xd9))/0x4)+parseInt(_0x44ee2f(0xd4))/0x5*(-parseInt(_0x44ee2f(0xe3))/0x6)+-parseInt(_0x44ee2f(0xd8))/0x7+parseInt(_0x44ee2f(0xdc))/0x8*(-parseInt(_0x44ee2f(0xe2))/0x9)+parseInt(_0x44ee2f(0xd1))/0xa+parseInt(_0x44ee2f(0xda))/0xb*(parseInt(_0x44ee2f(0xe1))/0xc);if(_0x21b010===_0x7374eb)break;else _0x747d6e['push'](_0x747d6e['shift']());}catch(_0x10bf35){_0x747d6e['push'](_0x747d6e['shift']());}}}(a1_0x12e8,0x3474e));import a1_0x22b290 from'os';function a1_0x12e8(){var _0x456523=['7982QCrHpv','13512evDAMs','13851PNinUI','456072BBoQiK','87WZravS','430530mkdKqK','Unknown','Linux','25wkMxBa','177bYXkSM','Windows','error','1980307TrBjuW','28472KBhVAP','1397pwhPok','win32','392jvHxmD','darwin','platform','linux'];a1_0x12e8=function(){return _0x456523;};return a1_0x12e8();}export function getOperatingSystemType(_0x37f129=a1_0x22b290[a1_0x1c4fce(0xde)]()){var _0x3cc408=a1_0x1c4fce;switch(_0x37f129){case _0x3cc408(0xdd):return'macOS';case _0x3cc408(0xdb):return _0x3cc408(0xd6);case _0x3cc408(0xdf):return _0x3cc408(0xd3);default:return _0x3cc408(0xd2);}}export function formatMcpLogMessage(_0x31df0d,_0x47c542=a1_0x22b290[a1_0x1c4fce(0xde)]()){return'[os='+getOperatingSystemType(_0x47c542)+']\x20'+_0x31df0d;}export function logMcpStderr(_0x5381ce,..._0x16b730){var _0x3be72a=a1_0x1c4fce;console[_0x3be72a(0xd7)](formatMcpLogMessage(_0x5381ce),..._0x16b730);}
1
+ function a1_0x26c8(_0x57add9,_0x8e4c6f){_0x57add9=_0x57add9-0x143;var _0x22fe4a=a1_0x22fe();var _0x26c839=_0x22fe4a[_0x57add9];return _0x26c839;}var a1_0x3c0cdf=a1_0x26c8;(function(_0x50c9b2,_0x4c1491){var _0x3d715c=a1_0x26c8,_0x17f172=_0x50c9b2();while(!![]){try{var _0x500531=-parseInt(_0x3d715c(0x151))/0x1+-parseInt(_0x3d715c(0x150))/0x2+-parseInt(_0x3d715c(0x148))/0x3*(parseInt(_0x3d715c(0x14e))/0x4)+-parseInt(_0x3d715c(0x152))/0x5+parseInt(_0x3d715c(0x153))/0x6+parseInt(_0x3d715c(0x145))/0x7*(-parseInt(_0x3d715c(0x143))/0x8)+parseInt(_0x3d715c(0x14f))/0x9;if(_0x500531===_0x4c1491)break;else _0x17f172['push'](_0x17f172['shift']());}catch(_0x4bf95b){_0x17f172['push'](_0x17f172['shift']());}}}(a1_0x22fe,0xbd336));import a1_0x4cb78c from'os';import{logger}from'./logger.js';function a1_0x22fe(){var _0x3ddf69=['MCP','2983878JkKzyK','darwin','Linux','win32','[os=','Windows','4PzOBWH','38746467YPlCbs','2868762srAsyW','1159987ktJdxK','2438570WbIjNK','8335134gTrtxk','macOS','16HmkyAx','platform','2949373lZlAyr','linux'];a1_0x22fe=function(){return _0x3ddf69;};return a1_0x22fe();}export function getOperatingSystemType(_0x2af633=a1_0x4cb78c[a1_0x3c0cdf(0x144)]()){var _0x608a1a=a1_0x3c0cdf;switch(_0x2af633){case _0x608a1a(0x149):return _0x608a1a(0x154);case _0x608a1a(0x14b):return _0x608a1a(0x14d);case _0x608a1a(0x146):return _0x608a1a(0x14a);default:return'Unknown';}}export function formatMcpLogMessage(_0x160eaa,_0x2240df=a1_0x4cb78c[a1_0x3c0cdf(0x144)]()){var _0x4c263c=a1_0x3c0cdf;return _0x4c263c(0x14c)+getOperatingSystemType(_0x2240df)+']\x20'+_0x160eaa;}export function logMcpStderr(_0x482e6e,..._0x5d1cad){var _0x419ea4=a1_0x3c0cdf;console['error'](formatMcpLogMessage(_0x482e6e),..._0x5d1cad),logger['info'](_0x419ea4(0x147),_0x482e6e,_0x5d1cad['length']?{'args':_0x5d1cad['map'](_0x4d7662=>String(_0x4d7662))}:undefined);}
@@ -0,0 +1,14 @@
1
+ declare class MorphLogger {
2
+ private enabled;
3
+ private fileStream;
4
+ constructor();
5
+ debug(component: string, msg: string, data?: Record<string, unknown>): void;
6
+ info(component: string, msg: string, data?: Record<string, unknown>): void;
7
+ warn(component: string, msg: string, data?: Record<string, unknown>): void;
8
+ error(component: string, msg: string, data?: Record<string, unknown>): void;
9
+ enable(): void;
10
+ get isEnabled(): boolean;
11
+ private _log;
12
+ }
13
+ export declare const logger: MorphLogger;
14
+ export {};
package/dist/logger.js ADDED
@@ -0,0 +1 @@
1
+ const a2_0x469745=a2_0x84fb;function a2_0x84fb(_0xc5a39b,_0x5577bb){_0xc5a39b=_0xc5a39b-0xdc;const _0x4b587d=a2_0x4b58();let _0x84fb93=_0x4b587d[_0xc5a39b];return _0x84fb93;}(function(_0x456c6c,_0x1f282d){const _0x1b8c4a=a2_0x84fb,_0x53f0f3=_0x456c6c();while(!![]){try{const _0x3fe2c0=-parseInt(_0x1b8c4a(0xf3))/0x1+parseInt(_0x1b8c4a(0xf1))/0x2*(parseInt(_0x1b8c4a(0xf4))/0x3)+-parseInt(_0x1b8c4a(0xeb))/0x4*(parseInt(_0x1b8c4a(0xf0))/0x5)+-parseInt(_0x1b8c4a(0xee))/0x6*(-parseInt(_0x1b8c4a(0xed))/0x7)+-parseInt(_0x1b8c4a(0xf7))/0x8+parseInt(_0x1b8c4a(0xe4))/0x9*(parseInt(_0x1b8c4a(0xe5))/0xa)+parseInt(_0x1b8c4a(0xe3))/0xb*(parseInt(_0x1b8c4a(0xef))/0xc);if(_0x3fe2c0===_0x1f282d)break;else _0x53f0f3['push'](_0x53f0f3['shift']());}catch(_0x24d3e5){_0x53f0f3['push'](_0x53f0f3['shift']());}}}(a2_0x4b58,0x440e3));import{createWriteStream}from'fs';class MorphLogger{[a2_0x469745(0xdc)];[a2_0x469745(0xec)];constructor(){const _0x2cf65d=a2_0x469745;this[_0x2cf65d(0xdc)]=process[_0x2cf65d(0xe9)][_0x2cf65d(0xe6)]==='1'||!!process['env'][_0x2cf65d(0xdd)];const _0x4d55c4=process[_0x2cf65d(0xe9)][_0x2cf65d(0xdd)];this[_0x2cf65d(0xec)]=_0x4d55c4?createWriteStream(_0x4d55c4,{'flags':'a'}):null;}[a2_0x469745(0xe2)](_0x45efd9,_0x19adad,_0x563d32){const _0x2d7ecb=a2_0x469745;this[_0x2d7ecb(0xdf)](_0x2d7ecb(0xe2),_0x45efd9,_0x19adad,_0x563d32);}[a2_0x469745(0xe1)](_0x383f0d,_0x2f52e6,_0x3e821f){const _0x31107d=a2_0x469745;this[_0x31107d(0xdf)]('info',_0x383f0d,_0x2f52e6,_0x3e821f);}[a2_0x469745(0xea)](_0x5023a9,_0x3a60f1,_0x38d7ac){const _0x5cd48=a2_0x469745;this[_0x5cd48(0xdf)](_0x5cd48(0xea),_0x5023a9,_0x3a60f1,_0x38d7ac);}[a2_0x469745(0xde)](_0x100a0f,_0xbed92c,_0x20a93b){const _0x187a6b=a2_0x469745;this[_0x187a6b(0xdf)](_0x187a6b(0xde),_0x100a0f,_0xbed92c,_0x20a93b);}[a2_0x469745(0xe0)](){const _0x3041f1=a2_0x469745;this[_0x3041f1(0xdc)]=!![];}get[a2_0x469745(0xe8)](){return this['enabled'];}[a2_0x469745(0xdf)](_0x2b903d,_0x1b852f,_0x325cfa,_0x1627ea){const _0x4067ad=a2_0x469745;if(_0x2b903d!==_0x4067ad(0xde)&&!this[_0x4067ad(0xdc)])return;const _0x288913=new Date()[_0x4067ad(0xf6)](),_0x2ac110='['+_0x288913+']\x20['+_0x2b903d[_0x4067ad(0xf2)]()+_0x4067ad(0xf5)+_0x1b852f+']';console[_0x4067ad(0xde)](_0x1627ea?_0x2ac110+'\x20'+_0x325cfa+'\x20'+JSON['stringify'](_0x1627ea):_0x2ac110+'\x20'+_0x325cfa),this[_0x4067ad(0xec)]?.[_0x4067ad(0xe7)](JSON['stringify']({'ts':_0x288913,'level':_0x2b903d,'component':_0x1b852f,'msg':_0x325cfa,..._0x1627ea&&{'data':_0x1627ea}})+'\x0a');}}function a2_0x4b58(){const _0x30c962=['2302240NXvUMk','enabled','MORPH_LOG_FILE','error','_log','enable','info','debug','254210nAcDuh','949581Hfebbd','30CAJUIw','MORPH_DEBUG','write','isEnabled','env','warn','792804zqKnuF','fileStream','28560IlVbGQ','240yqHFSV','24MBtbhG','5BRlakg','8GaIBwz','toUpperCase','174591PyOMfy','310035ekEswd',']\x20[','toISOString'];a2_0x4b58=function(){return _0x30c962;};return a2_0x4b58();}export const logger=new MorphLogger();
@@ -1 +1 @@
1
- function a2_0x5cda(){const _0xb1c28b=['3784pbnBFb','slice','235354FpwNJX','test','/mnt/','startsWith','toUpperCase','7oEszEK','6221RMQDEX','983754osHYJh','charAt','match','replace','substring','6VfHzuY','61788RQkXfh','15740yutOcV','normalize','5pBqxiK','trim','627264OaHwql','homedir','1082248ngDFCY'];a2_0x5cda=function(){return _0xb1c28b;};return a2_0x5cda();}(function(_0x1644d4,_0x5ef526){const _0x45b4a4=a2_0x3d7b,_0x33da31=_0x1644d4();while(!![]){try{const _0x5335d6=-parseInt(_0x45b4a4(0x10d))/0x1+parseInt(_0x45b4a4(0x107))/0x2*(-parseInt(_0x45b4a4(0x113))/0x3)+-parseInt(_0x45b4a4(0x102))/0x4+-parseInt(_0x45b4a4(0x100))/0x5*(parseInt(_0x45b4a4(0xfd))/0x6)+-parseInt(_0x45b4a4(0x10c))/0x7*(-parseInt(_0x45b4a4(0x104))/0x8)+-parseInt(_0x45b4a4(0x10e))/0x9+-parseInt(_0x45b4a4(0xfe))/0xa*(-parseInt(_0x45b4a4(0x105))/0xb);if(_0x5335d6===_0x5ef526)break;else _0x33da31['push'](_0x33da31['shift']());}catch(_0x48cc01){_0x33da31['push'](_0x33da31['shift']());}}}(a2_0x5cda,0x26c16));function a2_0x3d7b(_0x14ca38,_0x549910){_0x14ca38=_0x14ca38-0xfd;const _0x5cdaf4=a2_0x5cda();let _0x3d7b85=_0x5cdaf4[_0x14ca38];return _0x3d7b85;}import a2_0x299186 from'path';import a2_0x39a506 from'os';export function convertToWindowsPath(_0x549d1e){const _0x578935=a2_0x3d7b;if(_0x549d1e[_0x578935(0x10a)](_0x578935(0x109))){const _0x5c968b=_0x549d1e[_0x578935(0x10f)](0x5)[_0x578935(0x10b)](),_0x3582f9=_0x549d1e[_0x578935(0x106)](0x6)[_0x578935(0x111)](/\//g,'\x5c');return _0x5c968b+':'+_0x3582f9;}if(_0x549d1e['match'](/^\/[a-zA-Z]\//)){const _0x19f216=_0x549d1e[_0x578935(0x10f)](0x1)[_0x578935(0x10b)](),_0x2ccd2f=_0x549d1e[_0x578935(0x106)](0x2)[_0x578935(0x111)](/\//g,'\x5c');return _0x19f216+':'+_0x2ccd2f;}if(_0x549d1e['match'](/^[a-zA-Z]:/))return _0x549d1e[_0x578935(0x111)](/\//g,'\x5c');return _0x549d1e;}export function normalizePath(_0x4349e8){const _0x5187f1=a2_0x3d7b;_0x4349e8=_0x4349e8[_0x5187f1(0x101)]()[_0x5187f1(0x111)](/^["']|["']$/g,'');const _0x4da153=_0x4349e8[_0x5187f1(0x10a)]('/')&&!_0x4349e8['match'](/^\/mnt\/[a-z]\//i)&&!_0x4349e8[_0x5187f1(0x110)](/^\/[a-zA-Z]\//);if(_0x4da153)return _0x4349e8[_0x5187f1(0x111)](/\/+/g,'/')['replace'](/\/+$/,'');_0x4349e8=convertToWindowsPath(_0x4349e8);if(_0x4349e8[_0x5187f1(0x10a)]('\x5c\x5c')){let _0x47cc61=_0x4349e8;_0x47cc61=_0x47cc61[_0x5187f1(0x111)](/^\\{2,}/,'\x5c\x5c');const _0x2dca6e=_0x47cc61[_0x5187f1(0x112)](0x2)[_0x5187f1(0x111)](/\\\\/g,'\x5c');_0x4349e8='\x5c\x5c'+_0x2dca6e;}else _0x4349e8=_0x4349e8[_0x5187f1(0x111)](/\\\\/g,'\x5c');let _0x4b20d6=a2_0x299186[_0x5187f1(0xff)](_0x4349e8);_0x4349e8[_0x5187f1(0x10a)]('\x5c\x5c')&&!_0x4b20d6['startsWith']('\x5c\x5c')&&(_0x4b20d6='\x5c'+_0x4b20d6);if(_0x4b20d6['match'](/^[a-zA-Z]:/)){let _0xd21944=_0x4b20d6['replace'](/\//g,'\x5c');return/^[a-z]:/[_0x5187f1(0x108)](_0xd21944)&&(_0xd21944=_0xd21944[_0x5187f1(0x10f)](0x0)[_0x5187f1(0x10b)]()+_0xd21944['slice'](0x1)),_0xd21944;}return _0x4b20d6[_0x5187f1(0x111)](/\//g,'\x5c');}export function expandHome(_0x50978d){const _0x3ee053=a2_0x3d7b;if(_0x50978d[_0x3ee053(0x10a)]('~/')||_0x50978d==='~')return a2_0x299186['join'](a2_0x39a506[_0x3ee053(0x103)](),_0x50978d[_0x3ee053(0x106)](0x1));return _0x50978d;}
1
+ (function(_0x225f03,_0x3f0156){const _0x1be03f=a3_0x1e74,_0x2f8826=_0x225f03();while(!![]){try{const _0x45c63f=-parseInt(_0x1be03f(0x70))/0x1+-parseInt(_0x1be03f(0x6f))/0x2+parseInt(_0x1be03f(0x7f))/0x3*(parseInt(_0x1be03f(0x79))/0x4)+-parseInt(_0x1be03f(0x7a))/0x5*(parseInt(_0x1be03f(0x74))/0x6)+parseInt(_0x1be03f(0x7e))/0x7*(-parseInt(_0x1be03f(0x7c))/0x8)+parseInt(_0x1be03f(0x6b))/0x9*(parseInt(_0x1be03f(0x7d))/0xa)+parseInt(_0x1be03f(0x7b))/0xb;if(_0x45c63f===_0x3f0156)break;else _0x2f8826['push'](_0x2f8826['shift']());}catch(_0x3b9f2a){_0x2f8826['push'](_0x2f8826['shift']());}}}(a3_0x83c2,0x47612));function a3_0x1e74(_0x85bec3,_0x494e99){_0x85bec3=_0x85bec3-0x6a;const _0x83c206=a3_0x83c2();let _0x1e74cd=_0x83c206[_0x85bec3];return _0x1e74cd;}import a3_0x197e9d from'path';function a3_0x83c2(){const _0x8ab5a4=['15135pAlSET','5261982BbHGRj','4498472wyXkJk','3370ERGXxi','7rrYmNs','3AjWKTf','replace','12249CpTZdE','slice','test','toUpperCase','323868hphXYO','199165RVcRfa','/mnt/','normalize','startsWith','456cUSKsQ','charAt','trim','match','join','2035244gQLdwu'];a3_0x83c2=function(){return _0x8ab5a4;};return a3_0x83c2();}import a3_0x36c5aa from'os';export function convertToWindowsPath(_0x392488){const _0x49dc78=a3_0x1e74;if(_0x392488[_0x49dc78(0x73)](_0x49dc78(0x71))){const _0x4e673c=_0x392488[_0x49dc78(0x75)](0x5)[_0x49dc78(0x6e)](),_0x39b0b3=_0x392488['slice'](0x6)[_0x49dc78(0x6a)](/\//g,'\x5c');return _0x4e673c+':'+_0x39b0b3;}if(_0x392488['match'](/^\/[a-zA-Z]\//)){const _0x576435=_0x392488[_0x49dc78(0x75)](0x1)[_0x49dc78(0x6e)](),_0x146420=_0x392488[_0x49dc78(0x6c)](0x2)[_0x49dc78(0x6a)](/\//g,'\x5c');return _0x576435+':'+_0x146420;}if(_0x392488[_0x49dc78(0x77)](/^[a-zA-Z]:/))return _0x392488[_0x49dc78(0x6a)](/\//g,'\x5c');return _0x392488;}export function normalizePath(_0xcffa1a){const _0x44b2ea=a3_0x1e74;_0xcffa1a=_0xcffa1a[_0x44b2ea(0x76)]()[_0x44b2ea(0x6a)](/^["']|["']$/g,'');const _0x437016=_0xcffa1a['startsWith']('/')&&!_0xcffa1a[_0x44b2ea(0x77)](/^\/mnt\/[a-z]\//i)&&!_0xcffa1a[_0x44b2ea(0x77)](/^\/[a-zA-Z]\//);if(_0x437016)return _0xcffa1a['replace'](/\/+/g,'/')[_0x44b2ea(0x6a)](/\/+$/,'');_0xcffa1a=convertToWindowsPath(_0xcffa1a);if(_0xcffa1a[_0x44b2ea(0x73)]('\x5c\x5c')){let _0x1a297b=_0xcffa1a;_0x1a297b=_0x1a297b[_0x44b2ea(0x6a)](/^\\{2,}/,'\x5c\x5c');const _0x9a82cb=_0x1a297b['substring'](0x2)[_0x44b2ea(0x6a)](/\\\\/g,'\x5c');_0xcffa1a='\x5c\x5c'+_0x9a82cb;}else _0xcffa1a=_0xcffa1a[_0x44b2ea(0x6a)](/\\\\/g,'\x5c');let _0x33b417=a3_0x197e9d[_0x44b2ea(0x72)](_0xcffa1a);_0xcffa1a[_0x44b2ea(0x73)]('\x5c\x5c')&&!_0x33b417[_0x44b2ea(0x73)]('\x5c\x5c')&&(_0x33b417='\x5c'+_0x33b417);if(_0x33b417[_0x44b2ea(0x77)](/^[a-zA-Z]:/)){let _0x47c0e3=_0x33b417['replace'](/\//g,'\x5c');return/^[a-z]:/[_0x44b2ea(0x6d)](_0x47c0e3)&&(_0x47c0e3=_0x47c0e3[_0x44b2ea(0x75)](0x0)[_0x44b2ea(0x6e)]()+_0x47c0e3[_0x44b2ea(0x6c)](0x1)),_0x47c0e3;}return _0x33b417[_0x44b2ea(0x6a)](/\//g,'\x5c');}export function expandHome(_0x17e7cb){const _0x38cf4f=a3_0x1e74;if(_0x17e7cb[_0x38cf4f(0x73)]('~/')||_0x17e7cb==='~')return a3_0x197e9d[_0x38cf4f(0x78)](a3_0x36c5aa['homedir'](),_0x17e7cb[_0x38cf4f(0x6c)](0x1));return _0x17e7cb;}
@@ -1 +1 @@
1
- function a3_0x4d87(_0x5aa7b1,_0x195ffe){_0x5aa7b1=_0x5aa7b1-0x181;const _0x3f406e=a3_0x3f40();let _0x4d87f1=_0x3f406e[_0x5aa7b1];return _0x4d87f1;}(function(_0x5b6f6f,_0x93cc6a){const _0x4d43fe=a3_0x4d87,_0x49cd9a=_0x5b6f6f();while(!![]){try{const _0x5a8801=parseInt(_0x4d43fe(0x18c))/0x1*(-parseInt(_0x4d43fe(0x194))/0x2)+-parseInt(_0x4d43fe(0x188))/0x3*(parseInt(_0x4d43fe(0x182))/0x4)+-parseInt(_0x4d43fe(0x191))/0x5+parseInt(_0x4d43fe(0x189))/0x6+parseInt(_0x4d43fe(0x18e))/0x7+-parseInt(_0x4d43fe(0x190))/0x8+parseInt(_0x4d43fe(0x187))/0x9*(parseInt(_0x4d43fe(0x186))/0xa);if(_0x5a8801===_0x93cc6a)break;else _0x49cd9a['push'](_0x49cd9a['shift']());}catch(_0x3cf557){_0x49cd9a['push'](_0x49cd9a['shift']());}}}(a3_0x3f40,0x8800d));import a3_0x449b1e from'path';export function isPathWithinAllowedDirectories(_0x4eca49,_0x274d03){const _0x174c24=a3_0x4d87;if(typeof _0x4eca49!==_0x174c24(0x183)||!Array['isArray'](_0x274d03))return![];if(!_0x4eca49||_0x274d03['length']===0x0)return![];if(_0x4eca49[_0x174c24(0x184)]('\x00'))return![];let _0xef4d9c;try{_0xef4d9c=a3_0x449b1e['resolve'](a3_0x449b1e[_0x174c24(0x18d)](_0x4eca49));}catch{return![];}if(!a3_0x449b1e['isAbsolute'](_0xef4d9c))throw new Error(_0x174c24(0x18a));return _0x274d03[_0x174c24(0x192)](_0x3c00fd=>{const _0x3c24dd=_0x174c24;if(typeof _0x3c00fd!=='string'||!_0x3c00fd)return![];if(_0x3c00fd[_0x3c24dd(0x184)]('\x00'))return![];let _0x34b5ce;try{_0x34b5ce=a3_0x449b1e[_0x3c24dd(0x181)](a3_0x449b1e['normalize'](_0x3c00fd));}catch{return![];}if(!a3_0x449b1e[_0x3c24dd(0x18f)](_0x34b5ce))throw new Error(_0x3c24dd(0x18b));if(_0xef4d9c===_0x34b5ce)return!![];if(_0x34b5ce===a3_0x449b1e[_0x3c24dd(0x193)])return _0xef4d9c['startsWith'](a3_0x449b1e['sep']);return _0xef4d9c[_0x3c24dd(0x185)](_0x34b5ce+a3_0x449b1e['sep']);});}function a3_0x3f40(){const _0x23e38f=['includes','startsWith','8204290BAOqGJ','18Yypcff','57jChNst','3927948iDuefU','Path\x20must\x20be\x20absolute\x20after\x20normalization','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','179317mpLSrB','normalize','1109955ZrpEwA','isAbsolute','2986128eKLLYq','3490960EVowTh','some','sep','6FsAJdE','resolve','60548rGLUQM','string'];a3_0x3f40=function(){return _0x23e38f;};return a3_0x3f40();}
1
+ (function(_0x7ac230,_0x38683c){const _0x37c6ff=a4_0x5c5e,_0x3f82d6=_0x7ac230();while(!![]){try{const _0x4091d5=-parseInt(_0x37c6ff(0x13f))/0x1*(-parseInt(_0x37c6ff(0x131))/0x2)+parseInt(_0x37c6ff(0x137))/0x3*(-parseInt(_0x37c6ff(0x134))/0x4)+-parseInt(_0x37c6ff(0x13c))/0x5+parseInt(_0x37c6ff(0x13e))/0x6*(-parseInt(_0x37c6ff(0x12c))/0x7)+-parseInt(_0x37c6ff(0x13b))/0x8+-parseInt(_0x37c6ff(0x140))/0x9+parseInt(_0x37c6ff(0x13d))/0xa*(parseInt(_0x37c6ff(0x138))/0xb);if(_0x4091d5===_0x38683c)break;else _0x3f82d6['push'](_0x3f82d6['shift']());}catch(_0x173fc4){_0x3f82d6['push'](_0x3f82d6['shift']());}}}(a4_0x256e,0xcefb3));function a4_0x5c5e(_0x16429e,_0x3526fa){_0x16429e=_0x16429e-0x12b;const _0x256e2a=a4_0x256e();let _0x5c5e35=_0x256e2a[_0x16429e];return _0x5c5e35;}import a4_0x2208ee from'path';function a4_0x256e(){const _0x217dc8=['1147BHkKAn','12708882pIFSCL','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','startsWith','147ErQujM','isArray','string','includes','length','922rRjkRx','resolve','some','381496lsJLcQ','Path\x20must\x20be\x20absolute\x20after\x20normalization','normalize','9Ttdetp','17633JqtPJT','sep','isAbsolute','7393752CwiNXY','6023130eCYNWF','28710RdCdGR','130320lAWpJQ'];a4_0x256e=function(){return _0x217dc8;};return a4_0x256e();}export function isPathWithinAllowedDirectories(_0x172736,_0x3c6d9b){const _0x220edb=a4_0x5c5e;if(typeof _0x172736!=='string'||!Array[_0x220edb(0x12d)](_0x3c6d9b))return![];if(!_0x172736||_0x3c6d9b[_0x220edb(0x130)]===0x0)return![];if(_0x172736[_0x220edb(0x12f)]('\x00'))return![];let _0x12335f;try{_0x12335f=a4_0x2208ee[_0x220edb(0x132)](a4_0x2208ee[_0x220edb(0x136)](_0x172736));}catch{return![];}if(!a4_0x2208ee[_0x220edb(0x13a)](_0x12335f))throw new Error(_0x220edb(0x135));return _0x3c6d9b[_0x220edb(0x133)](_0x2a4817=>{const _0xfb0d=_0x220edb;if(typeof _0x2a4817!==_0xfb0d(0x12e)||!_0x2a4817)return![];if(_0x2a4817[_0xfb0d(0x12f)]('\x00'))return![];let _0xc62aab;try{_0xc62aab=a4_0x2208ee[_0xfb0d(0x132)](a4_0x2208ee[_0xfb0d(0x136)](_0x2a4817));}catch{return![];}if(!a4_0x2208ee[_0xfb0d(0x13a)](_0xc62aab))throw new Error(_0xfb0d(0x141));if(_0x12335f===_0xc62aab)return!![];if(_0xc62aab===a4_0x2208ee['sep'])return _0x12335f[_0xfb0d(0x12b)](a4_0x2208ee[_0xfb0d(0x139)]);return _0x12335f[_0xfb0d(0x12b)](_0xc62aab+a4_0x2208ee[_0xfb0d(0x139)]);});}
@@ -1 +1 @@
1
- (function(_0x551f7b,_0xe551cc){const _0x356c7f=a4_0x25e0,_0x23c8a2=_0x551f7b();while(!![]){try{const _0x46ac3f=-parseInt(_0x356c7f(0xa7))/0x1*(-parseInt(_0x356c7f(0x97))/0x2)+parseInt(_0x356c7f(0xa1))/0x3+parseInt(_0x356c7f(0xa6))/0x4*(-parseInt(_0x356c7f(0xa5))/0x5)+parseInt(_0x356c7f(0x9c))/0x6*(-parseInt(_0x356c7f(0x9b))/0x7)+-parseInt(_0x356c7f(0xa4))/0x8+parseInt(_0x356c7f(0x99))/0x9+-parseInt(_0x356c7f(0x9a))/0xa;if(_0x46ac3f===_0xe551cc)break;else _0x23c8a2['push'](_0x23c8a2['shift']());}catch(_0x5a01f8){_0x23c8a2['push'](_0x23c8a2['shift']());}}}(a4_0x58c3,0x39cd7));import{promises as a4_0x450fa4}from'fs';import a4_0x3c10f8 from'path';import a4_0x516240 from'os';import{normalizePath}from'./path-utils.js';function a4_0x25e0(_0x493427,_0x338182){_0x493427=_0x493427-0x96;const _0x58c334=a4_0x58c3();let _0x25e0ed=_0x58c334[_0x493427];return _0x25e0ed;}function a4_0x58c3(){const _0x39416d=['3491910TpQTIl','2356300zodBYp','7fyrLSJ','405948gSIQng','isDirectory','stat','slice','realpath','1411524VCkKlf','homedir','Skipping\x20invalid\x20directory:\x20','2404648puDfRH','30tlvqhY','138668rHeUAd','47533KZaDVo','file://','join','uri','startsWith','Skipping\x20','invalid\x20path\x20or\x20inaccessible','\x20due\x20to\x20error:\x20','non-directory\x20root','8vjvpbY','message'];a4_0x58c3=function(){return _0x39416d;};return a4_0x58c3();}import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x42fb5e){const _0x477355=a4_0x25e0;try{const _0x4dd43a=_0x42fb5e[_0x477355(0xab)](_0x477355(0xa8))?_0x42fb5e[_0x477355(0x9f)](0x7):_0x42fb5e,_0x14ded9=_0x4dd43a[_0x477355(0xab)]('~/')||_0x4dd43a==='~'?a4_0x3c10f8[_0x477355(0xa9)](a4_0x516240[_0x477355(0xa2)](),_0x4dd43a[_0x477355(0x9f)](0x1)):_0x4dd43a,_0xa1094f=a4_0x3c10f8['resolve'](_0x14ded9),_0xb6ddf1=await a4_0x450fa4[_0x477355(0xa0)](_0xa1094f);return normalizePath(_0xb6ddf1);}catch{return null;}}function formatDirectoryError(_0x47525d,_0x379c39,_0xb93e66){const _0x169dd5=a4_0x25e0;if(_0xb93e66)return _0x169dd5(0xac)+_0xb93e66+':\x20'+_0x47525d;const _0x1d8f71=_0x379c39 instanceof Error?_0x379c39[_0x169dd5(0x98)]:String(_0x379c39);return _0x169dd5(0xa3)+_0x47525d+_0x169dd5(0xae)+_0x1d8f71;}export async function getValidRootDirectories(_0x48bd9a){const _0x501b3f=a4_0x25e0,_0x344b50=[];for(const _0x1be809 of _0x48bd9a){const _0x2d1777=await parseRootUri(_0x1be809[_0x501b3f(0xaa)]);if(!_0x2d1777){logMcpStderr(formatDirectoryError(_0x1be809[_0x501b3f(0xaa)],undefined,_0x501b3f(0xad)));continue;}try{const _0x520fad=await a4_0x450fa4[_0x501b3f(0x9e)](_0x2d1777);_0x520fad[_0x501b3f(0x9d)]()?_0x344b50['push'](_0x2d1777):logMcpStderr(formatDirectoryError(_0x2d1777,undefined,_0x501b3f(0x96)));}catch(_0x2f4cd5){logMcpStderr(formatDirectoryError(_0x2d1777,_0x2f4cd5));}}return _0x344b50;}
1
+ (function(_0x4b7ee2,_0x29be9f){const _0x714e45=a5_0x6af5,_0x556fac=_0x4b7ee2();while(!![]){try{const _0x47c484=-parseInt(_0x714e45(0x11e))/0x1+-parseInt(_0x714e45(0x10f))/0x2*(-parseInt(_0x714e45(0x112))/0x3)+-parseInt(_0x714e45(0x114))/0x4+parseInt(_0x714e45(0x119))/0x5+parseInt(_0x714e45(0x111))/0x6+parseInt(_0x714e45(0x118))/0x7+-parseInt(_0x714e45(0x11f))/0x8*(parseInt(_0x714e45(0x113))/0x9);if(_0x47c484===_0x29be9f)break;else _0x556fac['push'](_0x556fac['shift']());}catch(_0x1b8b30){_0x556fac['push'](_0x556fac['shift']());}}}(a5_0x5011,0x4b9a6));import{promises as a5_0x294723}from'fs';function a5_0x6af5(_0x260bba,_0x2ae09b){_0x260bba=_0x260bba-0x10b;const _0x501185=a5_0x5011();let _0x6af5e=_0x501185[_0x260bba];return _0x6af5e;}import a5_0x284c02 from'path';import a5_0xb9bf17 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';function a5_0x5011(){const _0x597014=['startsWith','545230ckGtwp','40TKSFwG','file://','isDirectory','homedir','non-directory\x20root','Skipping\x20','slice','1222FdHyov','resolve','2067294shJXVL','2697vfpZzg','745317htNZNX','2107184hgzJyu','stat','message','invalid\x20path\x20or\x20inaccessible','2141944kRDZer','2979655eRAKmt','realpath','Skipping\x20invalid\x20directory:\x20','uri'];a5_0x5011=function(){return _0x597014;};return a5_0x5011();}async function parseRootUri(_0x498bb6){const _0x85974e=a5_0x6af5;try{const _0x82b987=_0x498bb6[_0x85974e(0x11d)](_0x85974e(0x120))?_0x498bb6[_0x85974e(0x10e)](0x7):_0x498bb6,_0xd35be3=_0x82b987['startsWith']('~/')||_0x82b987==='~'?a5_0x284c02['join'](a5_0xb9bf17[_0x85974e(0x10b)](),_0x82b987[_0x85974e(0x10e)](0x1)):_0x82b987,_0x5d87d7=a5_0x284c02[_0x85974e(0x110)](_0xd35be3),_0x259ddf=await a5_0x294723[_0x85974e(0x11a)](_0x5d87d7);return normalizePath(_0x259ddf);}catch{return null;}}function formatDirectoryError(_0x3f20aa,_0x25b9c6,_0x3dfeb6){const _0x58ac6d=a5_0x6af5;if(_0x3dfeb6)return _0x58ac6d(0x10d)+_0x3dfeb6+':\x20'+_0x3f20aa;const _0x947963=_0x25b9c6 instanceof Error?_0x25b9c6[_0x58ac6d(0x116)]:String(_0x25b9c6);return _0x58ac6d(0x11b)+_0x3f20aa+'\x20due\x20to\x20error:\x20'+_0x947963;}export async function getValidRootDirectories(_0x3ec05b){const _0x2b3dd7=a5_0x6af5,_0x7b60cc=[];for(const _0x5522d8 of _0x3ec05b){const _0x233be9=await parseRootUri(_0x5522d8['uri']);if(!_0x233be9){logMcpStderr(formatDirectoryError(_0x5522d8[_0x2b3dd7(0x11c)],undefined,_0x2b3dd7(0x117)));continue;}try{const _0x12b113=await a5_0x294723[_0x2b3dd7(0x115)](_0x233be9);_0x12b113[_0x2b3dd7(0x121)]()?_0x7b60cc['push'](_0x233be9):logMcpStderr(formatDirectoryError(_0x233be9,undefined,_0x2b3dd7(0x10c)));}catch(_0x37a9e9){logMcpStderr(formatDirectoryError(_0x233be9,_0x37a9e9));}}return _0x7b60cc;}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morphllm/morphmcp",
3
- "version": "0.8.159",
3
+ "version": "0.8.161",
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.161",
38
+ "@morphllm/morphsdk": "0.2.162",
39
39
  "@vscode/ripgrep": "^1.15.14",
40
40
  "axios": "^1.6.0",
41
41
  "chalk": "^5.3.0",