@morphllm/morphmcp 0.8.140 → 0.8.141

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_0x3a46c4=a0_0x38bc;(function(_0x28b347,_0x4d517e){const _0xdc87f1=a0_0x38bc,_0x5332bd=_0x28b347();while(!![]){try{const _0x3a6106=-parseInt(_0xdc87f1(0x21c))/0x1+-parseInt(_0xdc87f1(0x198))/0x2+parseInt(_0xdc87f1(0x210))/0x3*(parseInt(_0xdc87f1(0x200))/0x4)+-parseInt(_0xdc87f1(0x1a5))/0x5*(parseInt(_0xdc87f1(0x177))/0x6)+-parseInt(_0xdc87f1(0x1fc))/0x7*(-parseInt(_0xdc87f1(0x19e))/0x8)+parseInt(_0xdc87f1(0x1cf))/0x9+parseInt(_0xdc87f1(0x18b))/0xa;if(_0x3a6106===_0x4d517e)break;else _0x5332bd['push'](_0x5332bd['shift']());}catch(_0x4e5fec){_0x5332bd['push'](_0x5332bd['shift']());}}}(a0_0x20b6,0x1d1d3));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_0x91bb63 from'fs/promises';import a0_0x3a1283 from'path';import a0_0x14d9bb from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import a0_0x411cd4 from'axios';function fixPathRepetition(_0x55c261){const _0xd97fd6=a0_0x38bc,_0x5b4172=_0x55c261[_0xd97fd6(0x1dd)](a0_0x3a1283[_0xd97fd6(0x1fa)])['filter'](Boolean);if(_0x5b4172['length']<0x2)return null;for(let _0x32b3ce=Math[_0xd97fd6(0x255)](_0x5b4172['length']/0x2);_0x32b3ce>=0x1;_0x32b3ce--){for(let _0x1d230e=0x0;_0x1d230e<=_0x5b4172[_0xd97fd6(0x175)]-0x2*_0x32b3ce;_0x1d230e++){const _0x20c762=_0x5b4172[_0xd97fd6(0x21a)](_0x1d230e,_0x1d230e+_0x32b3ce),_0x1fdb10=_0x5b4172['slice'](_0x1d230e+_0x32b3ce,_0x1d230e+0x2*_0x32b3ce);if(_0x20c762['every']((_0x5e41c1,_0x2a17a6)=>_0x5e41c1===_0x1fdb10[_0x2a17a6])){const _0x55ada0=[..._0x5b4172['slice'](0x0,_0x1d230e),..._0x5b4172[_0xd97fd6(0x21a)](_0x1d230e+_0x32b3ce)];return a0_0x3a1283[_0xd97fd6(0x1fa)]+_0x55ada0['join'](a0_0x3a1283[_0xd97fd6(0x1fa)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x3ed30f=a0_0x38bc;try{const _0x542eda=require('../package.json');return _0x542eda['version']??_0x3ed30f(0x25b);}catch(_0xe8ca25){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0xe8ca25),'unknown';}}function printHelp(){const _0xe2f934=a0_0x38bc;console[_0xe2f934(0x184)](_0xe2f934(0x254)+getPackageVersion()),console[_0xe2f934(0x184)](_0xe2f934(0x1c3)),console[_0xe2f934(0x184)](_0xe2f934(0x1ab)),console[_0xe2f934(0x184)]('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0xe2f934(0x184)]('\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit'),console['log'](_0xe2f934(0x1c9)),console[_0xe2f934(0x184)](_0xe2f934(0x1fb)),console[_0xe2f934(0x184)](_0xe2f934(0x225)),console[_0xe2f934(0x184)](_0xe2f934(0x1e2));}const cliArgs=process[a0_0x3a46c4(0x1da)]['slice'](0x2),VERSION_FLAGS=new Set([a0_0x3a46c4(0x1e5),'-v','-V']),HELP_FLAGS=new Set(['--help','-h']);cliArgs['some'](_0x5aa688=>VERSION_FLAGS[a0_0x3a46c4(0x207)](_0x5aa688))&&(console['log']('@morphllm/morphmcp\x20'+getPackageVersion()),process[a0_0x3a46c4(0x214)](0x0));cliArgs['some'](_0x4c3131=>HELP_FLAGS[a0_0x3a46c4(0x207)](_0x4c3131))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x1529ae){const _0x228738=a0_0x3a46c4;for(let _0x2fe6e2=0x0;_0x2fe6e2<cliArgs[_0x228738(0x175)];_0x2fe6e2++){const _0x49fe8a=cliArgs[_0x2fe6e2];if(_0x49fe8a[_0x228738(0x1d4)]('--'+_0x1529ae+'='))return _0x49fe8a[_0x228738(0x21a)](('--'+_0x1529ae+'=')['length']);if(_0x49fe8a==='--'+_0x1529ae&&_0x2fe6e2+0x1<cliArgs[_0x228738(0x175)])return cliArgs[_0x2fe6e2+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x3a46c4(0x175)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x3a46c4(0x207)](arg)||HELP_FLAGS['has'](arg))continue;if(arg['startsWith']('--api-key='))continue;if(arg===a0_0x3a46c4(0x188)){i++;continue;}args[a0_0x3a46c4(0x17b)](arg);}function a0_0x20b6(){const _0x32eeb1=['listRoots','searchGitHub','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','path','application/json','--version','grep\x20\x27','completed_with_file_errors','UnknownError','Unknown\x20tool:\x20','homedir','catch','Warning:\x20Workspace\x20fallback\x20failed:\x20','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','For\x20deletions:\x0a','linesRemoved','api-key','source','lines','\x0a</file>','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','FileReadError','Fatal\x20error\x20running\x20server:','false','TimeoutError','sep','\x0aExamples:','307797aHOlYR','etimedout','<file\x20path=\x22','\x20chars)','32sumYhf','setRequestHandler','success','content','morph-v3-fast','IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','\x20(new\x20file)','has','changes','\x20disabled\x20via\x20DISABLED_TOOLS','\x22.\x20Known\x20tools:\x20','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','basename','.vscode','timings','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','61881gPsmwt','context','[github_codebase_search]\x20Failed\x20in\x20','runWarpGrep_call','exit','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','roots','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','substring','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','slice','role','43751XJfdqw','timed\x20out','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','github_codebase_search','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','post','search_string','terminated','\x20\x20morph-mcp','Rules:\x0a','cwd','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','array','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','mcp-filesystem','size','now','codebase_search','setNotificationHandler','Tool\x20','ReadError','Benefits:\x0a','map','all','.git','safeParse','RipgrepError','readFile','sk-','-\x20Grepped\x20\x27','package.json','oninitialized','\x27\x20in\x20`','\x22>\x0aError\x20reading\x20file:\x20','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.','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','object','File\x20read\x20error:','terminationReason','unknown\x20error','resolve','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.','isArray','BinaryFile','\x20is\x20not\x20a\x20directory','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','read\x20','toISOString','Error:\x20','-\x20Listed\x20directory\x20`','Morph\x20Edit\x20Preview','join','string','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','added\x20','@morphllm/morphmcp\x20','floor','ENABLE_WORKSPACE_MODE','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','Warning:\x20','Morph\x20FastApply\x20failed\x20without\x20error\x20message','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','unknown','go.mod','Morph\x20Edit\x20','name','ENOENT','realpath','stat','dryRun','tsconfig.json','code','\x20valid\x20directories','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','utf-8','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','requiresApiKey','indexOf','length','min','1091214XVsrXM','data','isDirectory','ToolException','push','error','stack','optional','dirname','Tool\x20\x22','number','.cursor','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','log','text','files','[github_codebase_search]\x20Searching\x20','--api-key','errors','\x20-\x20','1348430ApCyBO','enum','getClientCapabilities','toLowerCase','Disabled\x20tools:\x20','node_modules','.\x20Path:\x20','instruction','MORPH_WARP_GREP_TIMEOUT','message','constructor','.\x20Changes:\x20','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','296816ajAmCN','ms.\x20Success:\x20','[github_codebase_search]\x20Done\x20in\x20','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','messages','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','16sMbBgH','filter','❌\x20Morph\x20Edit\x20Failed:\x20','SubToolError','branch','SymlinkError','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','5eqWWTO','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','-\x20Read\x20file\x20`','search_type','Unknown\x20error','includes','\x0aOptions:','finish','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','list_directory\x20','read','Max\x20results\x20to\x20return',',\x20removed\x20','metadata','timeout','Here\x20is\x20the\x20content\x20of\x20files:\x0a','GitHub\x20search\x20failed:\x20','edit_file','Specific\x20commit\x20hash\x20to\x20search','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','grep','describe','Workspace\x20mode\x20enabled:\x20Using\x20','WarpGrep\x20sub-tool\x20errors:\x20','morph-','code_edit','Parent\x20directory\x20does\x20not\x20exist:\x20','match','repo_path','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]',',\x20modified\x20','description','env','\x20for:\x20\x22','DISABLED_TOOLS','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','morph-mcp','morph-warp-grep-v1-1111v0','completionId','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','composer.json','949302pWBxUK','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','Preview\x20changes\x20without\x20applying\x20them.','default','[could\x20not\x20read\x20file:\x20','startsWith','inputSchema','https://morphllm.com/api/error-report','github_url','warn','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','argv','trim','user','split','WORKSPACE_ROOT','access'];a0_0x20b6=function(){return _0x32eeb1;};return a0_0x20b6();}const WORKSPACE_ROOT=process['env'][a0_0x3a46c4(0x1de)]||process['env']['PWD']||process[a0_0x3a46c4(0x227)](),ENABLE_WORKSPACE_MODE=process[a0_0x3a46c4(0x1c6)][a0_0x3a46c4(0x256)]!==a0_0x3a46c4(0x1f8),MORPH_API_KEY=getCliArg(a0_0x3a46c4(0x1f1))??process[a0_0x3a46c4(0x1c6)]['MORPH_API_KEY'],MORPH_API_URL=process['env']['MORPH_API_URL'],MORPH_WARP_GREP_TIMEOUT=process[a0_0x3a46c4(0x1c6)][a0_0x3a46c4(0x193)]?parseInt(process[a0_0x3a46c4(0x1c6)][a0_0x3a46c4(0x193)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x3a46c4(0x1b6),a0_0x3a46c4(0x22e),a0_0x3a46c4(0x21f)]),DISABLED_TOOLS=process[a0_0x3a46c4(0x1c6)][a0_0x3a46c4(0x1c8)]?new Set(process['env'][a0_0x3a46c4(0x1c8)][a0_0x3a46c4(0x1dd)](',')[a0_0x3a46c4(0x233)](_0x3d33fa=>_0x3d33fa[a0_0x3a46c4(0x1db)]())['filter'](_0x4e4ca3=>_0x4e4ca3[a0_0x3a46c4(0x175)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0x3a46c4(0x22c)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x3a46c4(0x207)](tool)&&console[a0_0x3a46c4(0x17c)](a0_0x3a46c4(0x228)+tool+a0_0x3a46c4(0x20a)+[...KNOWN_TOOL_NAMES][a0_0x3a46c4(0x250)](',\x20'));}console[a0_0x3a46c4(0x17c)](a0_0x3a46c4(0x18f)+[...DISABLED_TOOLS]['join'](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x3a46c4(0x1d4)](a0_0x3a46c4(0x239))&&!MORPH_API_KEY[a0_0x3a46c4(0x1d4)](a0_0x3a46c4(0x1be))&&logMcpStderr(a0_0x3a46c4(0x219));async function reportMorphError(_0x1bd136){const _0x1b95ab=a0_0x3a46c4;try{await a0_0x411cd4[_0x1b95ab(0x222)](_0x1b95ab(0x1d6),{..._0x1bd136,'timestamp':new Date()[_0x1b95ab(0x24c)](),'source':_0x1bd136['source']||_0x1b95ab(0x22b),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x1bd136[_0x1b95ab(0x211)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x1b95ab(0x1e4),'Authorization':'Bearer\x20'+MORPH_API_KEY}});}catch{}}args[a0_0x3a46c4(0x175)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x3a46c4(0x20f)),logMcpStderr(a0_0x3a46c4(0x252)),logMcpStderr(a0_0x3a46c4(0x24a)),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr(a0_0x3a46c4(0x25a)),logMcpStderr(a0_0x3a46c4(0x257)));function normalizePath(_0x6b51b6){return a0_0x3a1283['normalize'](_0x6b51b6);}function expandHome(_0x360040){const _0x6e295b=a0_0x3a46c4;if(_0x360040[_0x6e295b(0x1d4)]('~/')||_0x360040==='~')return a0_0x3a1283[_0x6e295b(0x250)](a0_0x14d9bb[_0x6e295b(0x1ea)](),_0x360040[_0x6e295b(0x21a)](0x1));return _0x360040;}let allowedDirectories=await Promise[a0_0x3a46c4(0x234)](args[a0_0x3a46c4(0x233)](async _0x5c997e=>{const _0x154651=a0_0x3a46c4,_0x54b2c7=expandHome(_0x5c997e),_0x223150=a0_0x3a1283[_0x154651(0x245)](_0x54b2c7);try{const _0x570ea0=await a0_0x91bb63[_0x154651(0x260)](_0x223150);return normalizePath(_0x570ea0);}catch(_0x14134f){return normalizePath(_0x223150);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x3a46c4(0x175)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x3a46c4(0x17b)](workspaceDir),logMcpStderr(a0_0x3a46c4(0x1bc)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x4296d1){logMcpStderr('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x4296d1);}async function detectWorkspaceRoot(_0x3dcfc5){const _0x4a6bac=a0_0x3a46c4;let _0x169e4a=a0_0x3a1283[_0x4a6bac(0x245)](_0x3dcfc5);const _0x29b52d=[_0x4a6bac(0x235),_0x4a6bac(0x20d),_0x4a6bac(0x23b),'Cargo.toml','pyproject.toml',_0x4a6bac(0x25c),_0x4a6bac(0x182),_0x4a6bac(0x263),_0x4a6bac(0x1ce)];while(_0x169e4a!==a0_0x3a1283[_0x4a6bac(0x17f)](_0x169e4a)){for(const _0x47771a of _0x29b52d){const _0x396530=a0_0x3a1283[_0x4a6bac(0x250)](_0x169e4a,_0x47771a);try{return await a0_0x91bb63[_0x4a6bac(0x1df)](_0x396530),normalizePath(_0x169e4a);}catch{}}_0x169e4a=a0_0x3a1283['dirname'](_0x169e4a);}return normalizePath(_0x3dcfc5);}await Promise[a0_0x3a46c4(0x234)](args['map'](async _0x35b0c9=>{const _0x5d8418=a0_0x3a46c4;try{const _0x4f705d=await a0_0x91bb63[_0x5d8418(0x261)](expandHome(_0x35b0c9));!_0x4f705d[_0x5d8418(0x179)]()&&(logMcpStderr(_0x5d8418(0x24d)+_0x35b0c9+_0x5d8418(0x249)),process[_0x5d8418(0x214)](0x1));}catch(_0x4447c2){logMcpStderr('Error\x20accessing\x20directory\x20'+_0x35b0c9+':',_0x4447c2),process[_0x5d8418(0x214)](0x1);}}));async function validatePath(_0x159999){const _0x9aa66f=a0_0x3a46c4,_0x43b911=expandHome(_0x159999),_0x134e43=a0_0x3a1283[_0x9aa66f(0x245)](_0x43b911);try{const _0x1620d3=await a0_0x91bb63[_0x9aa66f(0x260)](_0x134e43);return _0x1620d3;}catch(_0x3022e6){if(_0x3022e6[_0x9aa66f(0x264)]===_0x9aa66f(0x25f)){const _0x412bd9=a0_0x3a1283['dirname'](_0x134e43);try{const _0x277020=await a0_0x91bb63[_0x9aa66f(0x260)](_0x412bd9);return a0_0x3a1283['join'](_0x277020,a0_0x3a1283[_0x9aa66f(0x20c)](_0x134e43));}catch{throw new Error(_0x9aa66f(0x1c0)+_0x412bd9);}}throw _0x3022e6;}}function a0_0x38bc(_0x55b44d,_0x4c0054){_0x55b44d=_0x55b44d-0x16f;const _0x20b66a=a0_0x20b6();let _0x38bc4a=_0x20b66a[_0x55b44d];return _0x38bc4a;}const MorphEditFileArgsSchema=z[a0_0x3a46c4(0x241)]({'path':z[a0_0x3a46c4(0x251)](),'code_edit':z[a0_0x3a46c4(0x251)]()['describe'](a0_0x3a46c4(0x172)),'instruction':z[a0_0x3a46c4(0x251)]()[a0_0x3a46c4(0x1bb)](a0_0x3a46c4(0x266)),'dryRun':z['boolean']()[a0_0x3a46c4(0x1d2)](![])['describe'](a0_0x3a46c4(0x1d1))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x3a46c4(0x246),WarpGrepArgsSchema=z[a0_0x3a46c4(0x241)]({'search_string':z[a0_0x3a46c4(0x251)]()[a0_0x3a46c4(0x1bb)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x3a46c4(0x251)]()[a0_0x3a46c4(0x1bb)](a0_0x3a46c4(0x1d9)),'search_type':z[a0_0x3a46c4(0x18c)](['default',a0_0x3a46c4(0x190)])[a0_0x3a46c4(0x17e)]()['describe']('Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.')}),WarpGrepGitHubArgsSchema=z[a0_0x3a46c4(0x241)]({'search_string':z['string']()[a0_0x3a46c4(0x1bb)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x3a46c4(0x251)]()['optional']()[a0_0x3a46c4(0x1bb)](a0_0x3a46c4(0x23f)),'owner_repo':z['string']()[a0_0x3a46c4(0x17e)]()[a0_0x3a46c4(0x1bb)]('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z[a0_0x3a46c4(0x251)]()[a0_0x3a46c4(0x17e)]()['describe'](a0_0x3a46c4(0x240))}),CodebaseSearchArgsSchema=z[a0_0x3a46c4(0x241)]({'query':z['string']()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x3a46c4(0x251)]()[a0_0x3a46c4(0x1bb)]('Repository\x20identifier'),'branch':z[a0_0x3a46c4(0x251)]()[a0_0x3a46c4(0x17e)]()[a0_0x3a46c4(0x1bb)]('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z['string']()[a0_0x3a46c4(0x17e)]()[a0_0x3a46c4(0x1bb)](a0_0x3a46c4(0x1b7)),'targetDirectories':z[a0_0x3a46c4(0x229)](z[a0_0x3a46c4(0x251)]())[a0_0x3a46c4(0x1d2)]([])[a0_0x3a46c4(0x1bb)](a0_0x3a46c4(0x197)),'limit':z[a0_0x3a46c4(0x181)]()[a0_0x3a46c4(0x17e)]()[a0_0x3a46c4(0x1d2)](0xa)[a0_0x3a46c4(0x1bb)](a0_0x3a46c4(0x1b0))}),server=new Server({'name':a0_0x3a46c4(0x1ca),'version':'0.2.0'},{'capabilities':{'tools':{}}});server[a0_0x3a46c4(0x201)](ListToolsRequestSchema,async()=>{const _0x87b198=a0_0x3a46c4,_0x5529c5=[{'name':_0x87b198(0x1b6),'description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a'+'⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a'+_0x87b198(0x171)+_0x87b198(0x1d0)+_0x87b198(0x232)+_0x87b198(0x183)+'-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a'+_0x87b198(0x1cd)+_0x87b198(0x20b)+'Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a'+_0x87b198(0x215)+_0x87b198(0x21e)+_0x87b198(0x1ef)+'-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a'+_0x87b198(0x220)+_0x87b198(0x226)+_0x87b198(0x1ed)+'-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a'+'-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a'+_0x87b198(0x1b9)+'-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a'+_0x87b198(0x19b)+_0x87b198(0x205),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':'codebase_search','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'+_0x87b198(0x1ee)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x49bb6a=_0x5529c5[_0x87b198(0x19f)](_0x474258=>{const _0x4f5b42=_0x87b198;if(DISABLED_TOOLS[_0x4f5b42(0x207)](_0x474258[_0x4f5b42(0x25e)]))return console[_0x4f5b42(0x17c)](_0x4f5b42(0x230)+_0x474258[_0x4f5b42(0x25e)]+_0x4f5b42(0x209)),![];if('requiresApiKey'in _0x474258&&_0x474258[_0x4f5b42(0x173)]&&!MORPH_API_KEY)return logMcpStderr(_0x4f5b42(0x258)+_0x474258[_0x4f5b42(0x25e)]+_0x4f5b42(0x1a6)),![];return!![];});return{'tools':_0x49bb6a[_0x87b198(0x233)](_0x332cb1=>({'name':_0x332cb1[_0x87b198(0x25e)],'description':_0x332cb1[_0x87b198(0x1c5)],'inputSchema':_0x332cb1[_0x87b198(0x1d5)]}))};}),server[a0_0x3a46c4(0x201)](CallToolRequestSchema,async _0x3bc4b1=>{const _0x75058=a0_0x3a46c4,{name:_0x55b7e1,arguments:_0x31b124}=_0x3bc4b1['params'];try{if(DISABLED_TOOLS[_0x75058(0x207)](_0x55b7e1))throw new Error(_0x75058(0x180)+_0x55b7e1+'\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable');switch(_0x55b7e1){case _0x75058(0x1b6):{const _0x3e335c=MorphEditFileArgsSchema[_0x75058(0x236)](_0x31b124);if(!_0x3e335c[_0x75058(0x202)])throw new Error(_0x75058(0x1f5)+_0x3e335c[_0x75058(0x17c)]);const _0x4e47d4=await validatePath(_0x3e335c[_0x75058(0x178)][_0x75058(0x1e3)]);let _0x1aa804=null,_0x1d3f8d=!![],_0x246a54=null;try{_0x1aa804=await a0_0x91bb63[_0x75058(0x238)](_0x4e47d4,_0x75058(0x16f));}catch(_0x169592){const _0x6c2330=_0x169592[_0x75058(0x264)];_0x6c2330===_0x75058(0x25f)?(_0x1d3f8d=![],_0x1aa804=''):(_0x246a54='Failed\x20to\x20read\x20file:\x20'+(_0x6c2330||_0x75058(0x25b))+_0x75058(0x18a)+(_0x169592 instanceof Error?_0x169592[_0x75058(0x194)]:String(_0x169592)),logMcpStderr(_0x75058(0x258)+_0x246a54));}let _0x4c7fee;try{const _0xd5c700=MORPH_API_KEY;if(!_0xd5c700)throw new Error(_0x75058(0x1ad));const _0x2c7861=a0_0x3a1283[_0x75058(0x17f)](_0x4e47d4),_0x3b528e=a0_0x3a1283['basename'](_0x4e47d4),_0x2bc6c3=await executeEditFile({'target_filepath':_0x3b528e,'code_edit':_0x3e335c[_0x75058(0x178)][_0x75058(0x1bf)],'instructions':_0x3e335c[_0x75058(0x178)]['instruction']},{'morphApiKey':_0xd5c700,'morphApiUrl':MORPH_API_URL,'baseDir':_0x2c7861,'autoWrite':!_0x3e335c[_0x75058(0x178)][_0x75058(0x262)],'generateUdiff':![],'debug':![]});_0x4c7fee=_0x2bc6c3[_0x75058(0x1cc)];if(!_0x2bc6c3['success'])throw new Error(_0x2bc6c3[_0x75058(0x17c)]||_0x75058(0x259));const _0x5e0544=_0x2bc6c3[_0x75058(0x208)],_0x2be279=_0x75058(0x253)+_0x5e0544['linesAdded']+_0x75058(0x1b1)+_0x5e0544[_0x75058(0x1f0)]+_0x75058(0x1c4)+_0x5e0544['linesModified'];if(_0x3e335c[_0x75058(0x178)][_0x75058(0x262)])return{'content':[{'type':'text','text':_0x75058(0x24f)+(_0x1d3f8d?'':_0x75058(0x206))+':\x20'+_0x3e335c[_0x75058(0x178)][_0x75058(0x192)]+'.\x20Changes:\x20'+_0x2be279+_0x75058(0x191)+_0x3e335c['data']['path']+'.'}]};return{'content':[{'type':_0x75058(0x185),'text':_0x75058(0x25d)+(_0x1d3f8d?'Applied':'Created\x20File')+':\x20'+_0x3e335c[_0x75058(0x178)]['instruction']+_0x75058(0x196)+_0x2be279+_0x75058(0x191)+_0x3e335c[_0x75058(0x178)][_0x75058(0x1e3)]+'.'}]};}catch(_0x7b83f8){const _0x17e6a4=_0x7b83f8 instanceof Error?_0x7b83f8[_0x75058(0x194)]:String(_0x7b83f8);return reportMorphError({'error_message':_0x17e6a4,'error_type':_0x7b83f8 instanceof Error?_0x7b83f8['constructor'][_0x75058(0x25e)]:_0x75058(0x1e8),'context':{'tool':'edit_file','completion_id':_0x4c7fee,'file_path':_0x3e335c[_0x75058(0x178)][_0x75058(0x1e3)],'validated_path':_0x4e47d4,'instruction':_0x3e335c[_0x75058(0x178)][_0x75058(0x192)],'model':_0x75058(0x204),'dry_run':_0x3e335c[_0x75058(0x178)][_0x75058(0x262)],'file_exists':_0x1d3f8d,'file_read_error':_0x246a54,'file_readable':_0x1aa804!==null,'request_content':{'path':_0x3e335c[_0x75058(0x178)][_0x75058(0x1e3)],'code_edit':_0x3e335c[_0x75058(0x178)][_0x75058(0x1bf)],'instruction':_0x3e335c[_0x75058(0x178)][_0x75058(0x192)],'original_code':_0x1aa804!==null?_0x1aa804[_0x75058(0x175)]>0xc350?_0x1aa804[_0x75058(0x218)](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x1aa804['length']+_0x75058(0x1ff):_0x1aa804:_0x75058(0x1d3)+(_0x246a54||_0x75058(0x244))+']','original_code_length':_0x1aa804?.[_0x75058(0x175)]??0x0,'model':_0x75058(0x204),'dry_run':_0x3e335c[_0x75058(0x178)][_0x75058(0x262)]}},'stack_trace':_0x7b83f8 instanceof Error?_0x7b83f8[_0x75058(0x17d)]:undefined,'source':_0x75058(0x22b)})['catch'](()=>{}),{'content':[{'type':_0x75058(0x185),'text':_0x75058(0x1a0)+_0x17e6a4}],'isError':!![]};}}case _0x75058(0x22e):{const _0x2b7eb2=WarpGrepArgsSchema[_0x75058(0x236)](_0x31b124);if(!_0x2b7eb2[_0x75058(0x202)])return{'content':[{'type':'text','text':'Invalid\x20arguments:\x20'+_0x2b7eb2[_0x75058(0x17c)]}],'isError':!![]};const _0x1a003e=_0x2d7c6d=>{const _0x92ad8f=_0x75058,_0x419cb1=[];for(const _0x499287 of _0x2d7c6d||[]){const _0x6b1906=_0x499287[_0x92ad8f(0x21b)],_0x27dadb=_0x499287['content'];if(_0x6b1906==='assistant'&&_0x27dadb){const _0x4a2ea0=_0x27dadb['split']('\x0a')[_0x92ad8f(0x19f)](_0x2ca268=>_0x2ca268[_0x92ad8f(0x1db)]());for(const _0x17853f of _0x4a2ea0){const _0x47cfcc=_0x17853f[_0x92ad8f(0x1c1)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x47cfcc){_0x419cb1[_0x92ad8f(0x17b)](_0x92ad8f(0x1e6)+_0x47cfcc[0x1]+'\x27\x20'+_0x47cfcc[0x2]);continue;}const _0x4cc3e3=_0x17853f[_0x92ad8f(0x1c1)](/^read\s+(.+)$/);if(_0x4cc3e3){_0x419cb1[_0x92ad8f(0x17b)](_0x92ad8f(0x24b)+_0x4cc3e3[0x1]);continue;}const _0x1c74f3=_0x17853f[_0x92ad8f(0x1c1)](/^list_directory\s+(.+)$/);if(_0x1c74f3){_0x419cb1['push'](_0x92ad8f(0x1ae)+_0x1c74f3[0x1]);continue;}}}}return _0x419cb1;},_0x1a7008=_0x13699a=>{const _0x571825=_0x75058,_0x16c81c=[];if(!_0x13699a||!Array['isArray'](_0x13699a))return _0x16c81c;const _0x5e0966=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':'FileNotFound','tool':_0x571825(0x1af)},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x571825(0x1af)},{'pattern':/\[READ ERROR\]/,'error_type':_0x571825(0x231),'tool':_0x571825(0x1af)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x571825(0x248),'tool':_0x571825(0x1af)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x571825(0x237),'tool':_0x571825(0x1ba)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':'RipgrepNotAvailable','tool':_0x571825(0x1ba)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x571825(0x248),'tool':_0x571825(0x1af)},{'pattern':/\[SYMLINK\]/,'error_type':_0x571825(0x1a3),'tool':_0x571825(0x1af)},{'pattern':/not a text file/,'error_type':_0x571825(0x248),'tool':_0x571825(0x1af)},{'pattern':/symbolic link/,'error_type':_0x571825(0x1a3),'tool':_0x571825(0x1af)},{'pattern':/Error reading file:/,'error_type':_0x571825(0x231),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x571825(0x17a),'tool':_0x571825(0x25b)}];let _0x2ee707=0x0;for(const _0x2ba6c3 of _0x13699a){if(_0x2ba6c3[_0x571825(0x21b)]===_0x571825(0x1dc)){_0x2ee707++;const _0x469234=_0x2ba6c3[_0x571825(0x203)];if(!_0x469234||typeof _0x469234!==_0x571825(0x251))continue;for(const {pattern:_0x5d1232,error_type:_0x2691e5,tool:_0x39a9a9}of _0x5e0966){const _0x4ffe23=_0x469234['match'](new RegExp(_0x5d1232[_0x571825(0x1f2)],'g'));if(_0x4ffe23)for(const _0x538a75 of _0x4ffe23){const _0x4468f3=_0x469234[_0x571825(0x174)](_0x538a75),_0x4548c0=_0x469234[_0x571825(0x218)](_0x4468f3,Math[_0x571825(0x176)](_0x4468f3+0xc8,_0x469234['length']));_0x16c81c[_0x571825(0x17b)]({'tool':_0x39a9a9,'error_type':_0x2691e5,'error_message':_0x4548c0[_0x571825(0x1dd)]('\x0a')[0x0],'turn':_0x2ee707});}}}}return _0x16c81c;};try{const _0x126316=a0_0x3a1283[_0x75058(0x245)](_0x2b7eb2['data'][_0x75058(0x1c2)]),_0xeb7c06=_0x2b7eb2[_0x75058(0x178)][_0x75058(0x1a8)],_0x147a3a=_0xeb7c06===_0x75058(0x190)?{'allowNames':[_0x75058(0x190)]}:undefined,_0x31be1d=new LocalRipgrepProvider(_0x126316,undefined,_0x147a3a),_0x2bcc97=await runWarpGrep({'searchTerm':_0x2b7eb2[_0x75058(0x178)][_0x75058(0x223)],'repoRoot':_0x126316,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x31be1d,'search_type':_0xeb7c06}),_0x55f48c=_0x1a7008(_0x2bcc97[_0x75058(0x19c)]);_0x55f48c[_0x75058(0x175)]>0x0&&reportMorphError({'error_message':_0x75058(0x1bd)+_0x55f48c[_0x75058(0x175)]+'\x20error(s)','error_type':_0x75058(0x1a1),'level':_0x75058(0x1d8),'tool':'codebase_search','context':{'repo_path':_0x2b7eb2['data'][_0x75058(0x1c2)],'query':_0x2b7eb2['data']['search_string'],'model':_0x75058(0x1cb),'termination_reason':_0x2bcc97[_0x75058(0x243)],'sub_tool_errors':_0x55f48c,'timings':_0x2bcc97[_0x75058(0x20e)],'tool_calls':_0x1a003e(_0x2bcc97[_0x75058(0x19c)]),'messages':_0x2bcc97['messages']?.[_0x75058(0x233)](_0x483b17=>({'role':_0x483b17[_0x75058(0x21b)],'content':_0x483b17[_0x75058(0x203)]}))},'source':_0x75058(0x22b)})[_0x75058(0x1eb)](()=>{});let _0x10820d='';if(_0x2bcc97[_0x75058(0x243)]==='completed'&&_0x2bcc97[_0x75058(0x1ac)]?.[_0x75058(0x1b2)]?.[_0x75058(0x186)]){const _0x16a7aa=_0x2bcc97[_0x75058(0x1ac)][_0x75058(0x1b2)][_0x75058(0x186)];if(_0x16a7aa[_0x75058(0x175)]===0x0)return _0x10820d=_0x2bcc97[_0x75058(0x1ac)]['payload']||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x75058(0x185),'text':_0x10820d}]};const _0x2e0dc3=[],_0x3eabe4=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x56a029 of _0x2bcc97[_0x75058(0x19c)]){const _0xab2729=_0x56a029[_0x75058(0x21b)],_0x461db8=_0x56a029[_0x75058(0x203)];if(_0xab2729==='assistant'&&_0x461db8){const _0xcd7117=_0x461db8[_0x75058(0x1dd)]('\x0a')[_0x75058(0x19f)](_0x55b589=>_0x55b589[_0x75058(0x1db)]());for(const _0x20cb1d of _0xcd7117){const _0x2efb77=_0x20cb1d[_0x75058(0x1c1)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x2efb77){_0x3eabe4[_0x75058(0x17b)](_0x75058(0x23a)+_0x2efb77[0x1]+_0x75058(0x23d)+_0x2efb77[0x2]+'`');continue;}const _0x5e3754=_0x20cb1d['match'](/^read\s+(.+)$/);if(_0x5e3754){_0x3eabe4[_0x75058(0x17b)](_0x75058(0x1a7)+_0x5e3754[0x1]+'`');continue;}const _0x433bc8=_0x20cb1d[_0x75058(0x1c1)](/^list_directory\s+(.+)$/);if(_0x433bc8){_0x3eabe4['push'](_0x75058(0x24e)+_0x433bc8[0x1]+'`');continue;}}}}_0x2e0dc3['push'](_0x3eabe4['join']('\x0a'));const _0x5b92b9=['','Relevant\x20context\x20found:'];for(const _0x2df1d5 of _0x16a7aa){if(_0x2df1d5['lines']==='*')_0x5b92b9['push']('-\x20'+_0x2df1d5[_0x75058(0x1e3)]+':*');else{if(Array[_0x75058(0x247)](_0x2df1d5[_0x75058(0x1f3)])){const _0x377c82=_0x2df1d5[_0x75058(0x1f3)][_0x75058(0x233)](([_0x448dbb,_0x15b993])=>{if(_0x448dbb===_0x15b993)return''+_0x448dbb;return _0x448dbb+'-'+_0x15b993;});_0x5b92b9[_0x75058(0x17b)]('-\x20'+_0x2df1d5[_0x75058(0x1e3)]+':'+_0x377c82[_0x75058(0x250)](','));}else _0x5b92b9[_0x75058(0x17b)]('-\x20'+_0x2df1d5[_0x75058(0x1e3)]+':*');}}_0x5b92b9[_0x75058(0x17b)](''),_0x2e0dc3[_0x75058(0x17b)](_0x5b92b9[_0x75058(0x250)]('\x0a')),_0x2e0dc3['push'](_0x75058(0x1b4));const _0x18e3d2=[];for(const _0x4b9a8f of _0x16a7aa){let _0x57c995=a0_0x3a1283['resolve'](_0x2b7eb2['data'][_0x75058(0x1c2)],_0x4b9a8f['path']),_0x3a42b9=null,_0x2269d0=null;try{_0x3a42b9=await a0_0x91bb63[_0x75058(0x238)](_0x57c995,{'encoding':'utf-8'});}catch(_0x49198b){const _0xd71518=fixPathRepetition(_0x57c995);if(_0xd71518)try{_0x3a42b9=await a0_0x91bb63[_0x75058(0x238)](_0xd71518,{'encoding':'utf-8'}),_0x57c995=_0xd71518;}catch{_0x2269d0=_0x49198b instanceof Error?_0x49198b:new Error(String(_0x49198b));}else _0x2269d0=_0x49198b instanceof Error?_0x49198b:new Error(String(_0x49198b));}if(_0x3a42b9!==null){const _0xb11680=_0x3a42b9[_0x75058(0x1dd)](/\r?\n/),_0x355b87=['<file\x20path=\x22'+_0x4b9a8f['path']+'\x22>'];if(_0x4b9a8f[_0x75058(0x1f3)]==='*'||!Array[_0x75058(0x247)](_0x4b9a8f[_0x75058(0x1f3)]))for(let _0x1ed289=0x1;_0x1ed289<=_0xb11680[_0x75058(0x175)];_0x1ed289++){const _0x5b7955=_0xb11680[_0x1ed289-0x1];_0x355b87[_0x75058(0x17b)](_0x1ed289+'|\x20'+_0x5b7955);}else for(const [_0x3ee7c6,_0x35c2ee]of _0x4b9a8f[_0x75058(0x1f3)]){_0x355b87[_0x75058(0x175)]>0x1&&_0x355b87[_0x75058(0x17b)]('');for(let _0x56262a=_0x3ee7c6;_0x56262a<=_0x35c2ee&&_0x56262a<=_0xb11680['length'];_0x56262a++){const _0x30099c=_0xb11680[_0x56262a-0x1];_0x355b87[_0x75058(0x17b)](_0x56262a+'|\x20'+_0x30099c);}}_0x355b87[_0x75058(0x17b)]('</file>'),_0x18e3d2['push'](_0x355b87[_0x75058(0x250)]('\x0a'));}else _0x18e3d2[_0x75058(0x17b)](_0x75058(0x1fe)+_0x4b9a8f[_0x75058(0x1e3)]+_0x75058(0x23e)+(_0x2269d0?.[_0x75058(0x194)]||_0x75058(0x1a9))+_0x75058(0x1f4));}_0x2e0dc3['push'](_0x18e3d2[_0x75058(0x250)]('\x0a\x0a')),_0x10820d=_0x2e0dc3['join']('\x0a');const _0x3a8ece=_0x2bcc97[_0x75058(0x189)]?.[_0x75058(0x19f)](_0x1f1b31=>_0x1f1b31['message']?.[_0x75058(0x1d4)](_0x75058(0x242)))||[];if(_0x3a8ece[_0x75058(0x175)]>0x0){const _0x15ce05=_0x3a8ece[_0x75058(0x233)](_0x57c1ec=>_0x57c1ec[_0x75058(0x194)])['join'](';\x20');reportMorphError({'error_message':_0x15ce05,'error_type':_0x75058(0x1f6),'context':{'tool':_0x75058(0x22e),'repo_path':_0x2b7eb2[_0x75058(0x178)][_0x75058(0x1c2)],'query':_0x2b7eb2[_0x75058(0x178)][_0x75058(0x223)],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x75058(0x1e7),'error_count':_0x3a8ece[_0x75058(0x175)],'is_timeout':![],'timings':_0x2bcc97[_0x75058(0x20e)],'files_attempted':_0x16a7aa[_0x75058(0x233)](_0x209725=>({'path':_0x209725[_0x75058(0x1e3)],'lines':_0x209725['lines']})),'tool_calls':_0x1a003e(_0x2bcc97[_0x75058(0x19c)]),'messages':_0x2bcc97[_0x75058(0x19c)]?.[_0x75058(0x233)](_0x193f69=>({'role':_0x193f69[_0x75058(0x21b)],'content':_0x193f69[_0x75058(0x203)]})),'request_content':{'query':_0x2b7eb2[_0x75058(0x178)][_0x75058(0x223)],'repo_path':_0x2b7eb2['data'][_0x75058(0x1c2)],'repoRoot':a0_0x3a1283[_0x75058(0x245)](_0x2b7eb2['data'][_0x75058(0x1c2)]),'model':'morph-warp-grep-v1-1111v0'}},'source':_0x75058(0x22b)})[_0x75058(0x1eb)](()=>{});}}else{if(_0x2bcc97['terminationReason']===_0x75058(0x224)&&_0x2bcc97['errors'][_0x75058(0x175)]>0x0){const _0x125f1c=_0x2bcc97[_0x75058(0x189)]['map'](_0x5b7cde=>_0x5b7cde[_0x75058(0x194)])[_0x75058(0x250)](';\x20');_0x10820d=_0x75058(0x24d)+_0x125f1c;const _0x4c9566=_0x125f1c['toLowerCase']()[_0x75058(0x1aa)](_0x75058(0x1b3))||_0x125f1c[_0x75058(0x18e)]()[_0x75058(0x1aa)](_0x75058(0x21d))||_0x125f1c[_0x75058(0x18e)]()[_0x75058(0x1aa)](_0x75058(0x1fd)),_0x588d45=_0x2bcc97[_0x75058(0x1ac)]?.[_0x75058(0x1b2)]?.['files'],_0xc34015=_0x2bcc97['errors'][0x0];reportMorphError({'error_message':_0x125f1c,'error_type':_0x4c9566?_0x75058(0x1f9):_0xc34015?.[_0x75058(0x195)]?.[_0x75058(0x25e)]||'WarpGrepError','context':{'tool':_0x75058(0x22e),'repo_path':_0x2b7eb2['data'][_0x75058(0x1c2)],'query':_0x2b7eb2['data'][_0x75058(0x223)],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x2bcc97['terminationReason'],'error_count':_0x2bcc97[_0x75058(0x189)][_0x75058(0x175)],'is_timeout':_0x4c9566,'timings':_0x2bcc97[_0x75058(0x20e)],'files_attempted':_0x588d45?.[_0x75058(0x233)](_0x139e62=>({'path':_0x139e62[_0x75058(0x1e3)],'lines':_0x139e62[_0x75058(0x1f3)]})),'tool_calls':_0x1a003e(_0x2bcc97[_0x75058(0x19c)]),'messages':_0x2bcc97[_0x75058(0x19c)]?.[_0x75058(0x233)](_0x47d734=>({'role':_0x47d734['role'],'content':_0x47d734[_0x75058(0x203)]})),'request_content':{'query':_0x2b7eb2['data']['search_string'],'repo_path':_0x2b7eb2[_0x75058(0x178)]['repo_path'],'repoRoot':a0_0x3a1283['resolve'](_0x2b7eb2[_0x75058(0x178)]['repo_path']),'model':_0x75058(0x1cb)}},'stack_trace':_0xc34015?.['stack']||undefined,'source':_0x75058(0x22b)})[_0x75058(0x1eb)](()=>{});}else _0x10820d=_0x75058(0x217);}return{'content':[{'type':_0x75058(0x185),'text':_0x10820d}]};}catch(_0x3e2bdd){const _0x2fd9df=_0x3e2bdd instanceof Error?_0x3e2bdd['message']:String(_0x3e2bdd),_0x49a111=_0x2fd9df[_0x75058(0x18e)]()['includes'](_0x75058(0x1b3))||_0x2fd9df[_0x75058(0x18e)]()[_0x75058(0x1aa)]('timed\x20out')||_0x2fd9df[_0x75058(0x18e)]()[_0x75058(0x1aa)]('etimedout')||_0x3e2bdd instanceof Error&&_0x3e2bdd['name']===_0x75058(0x1f9);return reportMorphError({'error_message':_0x2fd9df,'error_type':_0x49a111?_0x75058(0x1f9):_0x3e2bdd instanceof Error?_0x3e2bdd[_0x75058(0x195)][_0x75058(0x25e)]:_0x75058(0x1e8),'context':{'tool':_0x75058(0x22e),'repo_path':_0x2b7eb2[_0x75058(0x178)][_0x75058(0x1c2)],'query':_0x2b7eb2[_0x75058(0x178)][_0x75058(0x223)],'model':_0x75058(0x1cb),'is_timeout':_0x49a111,'exception_phase':_0x75058(0x213),'request_content':{'query':_0x2b7eb2[_0x75058(0x178)][_0x75058(0x223)],'repo_path':_0x2b7eb2[_0x75058(0x178)]['repo_path'],'repoRoot':a0_0x3a1283[_0x75058(0x245)](_0x2b7eb2[_0x75058(0x178)]['repo_path']),'model':_0x75058(0x1cb)}},'stack_trace':_0x3e2bdd instanceof Error?_0x3e2bdd['stack']:undefined,'source':_0x75058(0x22b)})[_0x75058(0x1eb)](()=>{}),{'content':[{'type':_0x75058(0x185),'text':'Error\x20running\x20fast\x20context\x20search:\x20'+_0x2fd9df}],'isError':![]};}}case _0x75058(0x21f):{const _0x5d9644=WarpGrepGitHubArgsSchema[_0x75058(0x236)](_0x31b124);if(!_0x5d9644['success'])return{'content':[{'type':_0x75058(0x185),'text':'Invalid\x20arguments:\x20'+_0x5d9644[_0x75058(0x17c)]}],'isError':!![]};const _0x5a9bc1=_0x5d9644['data'][_0x75058(0x1d7)]||_0x5d9644[_0x75058(0x178)]['owner_repo'];if(!_0x5a9bc1)return{'content':[{'type':_0x75058(0x185),'text':_0x75058(0x1a4)}],'isError':!![]};const _0x5eb19=MORPH_API_KEY;if(!_0x5eb19)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x1bd9db=Date[_0x75058(0x22d)]();logMcpStderr(_0x75058(0x187)+_0x5a9bc1+_0x75058(0x1c7)+_0x5d9644[_0x75058(0x178)][_0x75058(0x223)]+'\x22');try{const _0x4c0c1f=new WarpGrepClient({'morphApiKey':_0x5eb19,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x265424=await _0x4c0c1f[_0x75058(0x1e1)]({'searchTerm':_0x5d9644[_0x75058(0x178)]['search_string'],'github':_0x5a9bc1,'branch':_0x5d9644[_0x75058(0x178)][_0x75058(0x1a2)]}),_0x3118f9=Date['now']()-_0x1bd9db;logMcpStderr(_0x75058(0x19a)+_0x3118f9+_0x75058(0x199)+_0x265424[_0x75058(0x202)]);const _0xcdf59f=formatResult(_0x265424);return{'content':[{'type':_0x75058(0x185),'text':_0xcdf59f}]};}catch(_0x1b83e5){const _0x94a218=Date[_0x75058(0x22d)]()-_0x1bd9db,_0x136373=_0x1b83e5 instanceof Error?_0x1b83e5[_0x75058(0x194)]:String(_0x1b83e5);return logMcpStderr(_0x75058(0x212)+_0x94a218+'ms:',_0x136373),reportMorphError({'error_message':_0x136373,'error_type':_0x1b83e5 instanceof Error?_0x1b83e5['constructor'][_0x75058(0x25e)]:_0x75058(0x1e8),'context':{'tool':'github_codebase_search','github_url':_0x5a9bc1,'search_string':_0x5d9644[_0x75058(0x178)]['search_string'],'branch':_0x5d9644[_0x75058(0x178)][_0x75058(0x1a2)]},'stack_trace':_0x1b83e5 instanceof Error?_0x1b83e5[_0x75058(0x17d)]:undefined,'source':'mcp-filesystem','tool':_0x75058(0x21f),'latency_ms':_0x94a218})[_0x75058(0x1eb)](()=>{}),{'content':[{'type':_0x75058(0x185),'text':_0x75058(0x1b5)+_0x136373}],'isError':![]};}}default:throw new Error(_0x75058(0x1e9)+_0x55b7e1);}}catch(_0x69224d){const _0x2ee823=_0x69224d instanceof Error?_0x69224d[_0x75058(0x194)]:String(_0x69224d);return reportMorphError({'error_message':_0x2ee823,'error_type':_0x69224d instanceof Error?_0x69224d[_0x75058(0x195)][_0x75058(0x25e)]:'UnknownError','context':{'tool':_0x55b7e1,'arguments':_0x31b124?JSON['stringify'](_0x31b124)[_0x75058(0x218)](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x69224d instanceof Error?_0x69224d[_0x75058(0x17d)]:undefined,'source':_0x75058(0x22b)})[_0x75058(0x1eb)](()=>{}),{'content':[{'type':_0x75058(0x185),'text':'Error:\x20'+_0x2ee823}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x7e5683){const _0x5262a9=a0_0x3a46c4,_0x2adcf7=await getValidRootDirectories(_0x7e5683);if(_0x2adcf7[_0x5262a9(0x175)]>0x0)allowedDirectories=[..._0x2adcf7],logMcpStderr('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0x2adcf7[_0x5262a9(0x175)]+_0x5262a9(0x265));else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x1511d6=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x1511d6&&(allowedDirectories=[_0x1511d6],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x1511d6));}catch(_0x49a9be){logMcpStderr(_0x5262a9(0x1ec)+_0x49a9be);}}}server[a0_0x3a46c4(0x22f)](RootsListChangedNotificationSchema,async()=>{const _0x18e8cd=a0_0x3a46c4;try{const _0x51ec7e=await server[_0x18e8cd(0x1e0)]();_0x51ec7e&&_0x18e8cd(0x216)in _0x51ec7e&&await updateAllowedDirectoriesFromRoots(_0x51ec7e[_0x18e8cd(0x216)]);}catch(_0x24ce81){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x24ce81 instanceof Error?_0x24ce81[_0x18e8cd(0x194)]:String(_0x24ce81));}}),server[a0_0x3a46c4(0x23c)]=async()=>{const _0xf4378a=a0_0x3a46c4,_0x2fe89c=server[_0xf4378a(0x18d)]();if(_0x2fe89c?.[_0xf4378a(0x216)])try{const _0x2279c1=await server['listRoots']();_0x2279c1&&_0xf4378a(0x216)in _0x2279c1?await updateAllowedDirectoriesFromRoots(_0x2279c1[_0xf4378a(0x216)]):logMcpStderr(_0xf4378a(0x19d));}catch(_0x319b66){logMcpStderr(_0xf4378a(0x221),_0x319b66 instanceof Error?_0x319b66[_0xf4378a(0x194)]:String(_0x319b66));}else{if(allowedDirectories[_0xf4378a(0x175)]>0x0)logMcpStderr(_0xf4378a(0x170),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0xf4378a(0x1b8));else throw new Error('Server\x20cannot\x20operate:\x20No\x20allowed\x20directories\x20available.\x20Server\x20was\x20started\x20without\x20command-line\x20directories\x20and\x20client\x20either\x20does\x20not\x20support\x20MCP\x20roots\x20protocol\x20or\x20provided\x20empty\x20roots.\x20Please\x20either:\x201)\x20Start\x20server\x20with\x20directory\x20arguments,\x202)\x20Use\x20a\x20client\x20that\x20supports\x20MCP\x20roots\x20protocol\x20and\x20provides\x20valid\x20root\x20directories,\x20or\x203)\x20Enable\x20workspace\x20mode\x20with\x20ENABLE_WORKSPACE_MODE=true.');}}};async function runServer(){const _0x33f87a=a0_0x3a46c4,_0x53c814=new StdioServerTransport();await server['connect'](_0x53c814),logMcpStderr(_0x33f87a(0x22a)),allowedDirectories[_0x33f87a(0x175)]===0x0&&logMcpStderr('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()[a0_0x3a46c4(0x1eb)](_0x1476d0=>{const _0x41b6f=a0_0x3a46c4;logMcpStderr(_0x41b6f(0x1f7),_0x1476d0),process[_0x41b6f(0x214)](0x1);});
2
+ const a0_0x44b10e=a0_0x1d14;(function(_0x401b0f,_0x3c11f5){const _0x1f2285=a0_0x1d14,_0x65d860=_0x401b0f();while(!![]){try{const _0x502852=parseInt(_0x1f2285(0x17b))/0x1*(-parseInt(_0x1f2285(0x18c))/0x2)+parseInt(_0x1f2285(0x244))/0x3+-parseInt(_0x1f2285(0x1d8))/0x4+-parseInt(_0x1f2285(0x1ef))/0x5*(parseInt(_0x1f2285(0x192))/0x6)+-parseInt(_0x1f2285(0x1df))/0x7*(-parseInt(_0x1f2285(0x152))/0x8)+-parseInt(_0x1f2285(0x229))/0x9+-parseInt(_0x1f2285(0x23f))/0xa*(-parseInt(_0x1f2285(0x228))/0xb);if(_0x502852===_0x3c11f5)break;else _0x65d860['push'](_0x65d860['shift']());}catch(_0x2f32ea){_0x65d860['push'](_0x65d860['shift']());}}}(a0_0x10ef,0xed94b));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_0x3ad4a4 from'fs/promises';import a0_0x26b8f4 from'path';import a0_0x4b9a88 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import a0_0x59fae9 from'axios';function fixPathRepetition(_0x25cbe2){const _0x571f76=a0_0x1d14,_0x24b296=_0x25cbe2['split'](a0_0x26b8f4['sep'])[_0x571f76(0x1cc)](Boolean);if(_0x24b296[_0x571f76(0x149)]<0x2)return null;for(let _0x10e533=Math['floor'](_0x24b296[_0x571f76(0x149)]/0x2);_0x10e533>=0x1;_0x10e533--){for(let _0x55cff6=0x0;_0x55cff6<=_0x24b296[_0x571f76(0x149)]-0x2*_0x10e533;_0x55cff6++){const _0x1bca32=_0x24b296[_0x571f76(0x1a9)](_0x55cff6,_0x55cff6+_0x10e533),_0x210d37=_0x24b296[_0x571f76(0x1a9)](_0x55cff6+_0x10e533,_0x55cff6+0x2*_0x10e533);if(_0x1bca32[_0x571f76(0x1dd)]((_0x48b0bd,_0x1b2208)=>_0x48b0bd===_0x210d37[_0x1b2208])){const _0x517bd6=[..._0x24b296[_0x571f76(0x1a9)](0x0,_0x55cff6),..._0x24b296['slice'](_0x55cff6+_0x10e533)];return a0_0x26b8f4[_0x571f76(0x1b0)]+_0x517bd6[_0x571f76(0x22e)](a0_0x26b8f4['sep']);}}}return null;}function a0_0x10ef(){const _0x57df6d=['completionId','morph-warp-grep-v2.1','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','Morph\x20Edit\x20','0.2.0','now','glob','Invalid\x20arguments:\x20','split','requiresApiKey','sk-','File\x20read\x20error:','array','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','.git','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','grep','[github_codebase_search]\x20Searching\x20','finish','-\x20Glob\x20search\x20`','\x0a...\x20(truncated,\x20total:\x20','isArray','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','tool','exit','@morphllm/morphmcp\x20','application/json','.\x20Path:\x20','Unknown\x20tool:\x20','Cargo.toml','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','all','search_type','setRequestHandler','Repository\x20identifier','Bearer\x20','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','code','data','realpath','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.','branch','assistant','post','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','<file\x20path=\x22','44KeArEK','13870656qaRqNc','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','DISABLED_TOOLS','node_modules','WarpGrep\x20sub-tool\x20errors:\x20','join','stringify','\x20error(s)','[github_codebase_search]\x20Done\x20in\x20','\x20is\x20not\x20a\x20directory','normalize','boolean','ToolException','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','PathError','optional','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','name','list_directory','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','tool_call_id','2935020POvfFJ','morph-mcp','Morph\x20FastApply\x20failed\x20without\x20error\x20message','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','push','3374130tvZiHD','list_directory\x20','\x20as\x20allowed\x20directory','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.',',\x20removed\x20','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.','env','roots','description','https://morphllm.com/api/error-report','ENABLE_WORKSPACE_MODE','Error\x20running\x20fast\x20context\x20search:\x20','Parent\x20directory\x20does\x20not\x20exist:\x20','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','resolve','Fatal\x20error\x20running\x20server:','Rules:\x0a','linesRemoved','edit_file','payload','listRoots','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','[could\x20not\x20read\x20file:\x20','Disabled\x20tools:\x20','length','read\x20','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','go.mod','Error\x20accessing\x20directory\x20','grep\x20\x27','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','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','8dIDPuD',',\x20modified\x20','match','string','morph-v3-fast','etimedout','Failed\x20to\x20read\x20file:\x20','repo_path','includes','owner_repo','`\x20in\x20`','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','[github_codebase_search]\x20Failed\x20in\x20','FileNotFound','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','BinaryFile','code_edit','\x20for:\x20\x22','Applied','user','timings','Tool\x20\x22','messages','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','unknown','Warning:\x20','function','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','connect','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','-\x20Read\x20file\x20`','log','access','ReadError','terminated','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','completed_with_file_errors','cwd','MORPH_API_KEY','github_codebase_search','role','1236807TPzXPA','map','constructor','Specific\x20commit\x20hash\x20to\x20search','setNotificationHandler','indexOf','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Created\x20File','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','stack','RipgrepError','SymlinkError','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','content','2mHfDGY','basename','Morph\x20Edit\x20Preview','parse','--api-key=','number','30XRSWPc','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.','toLowerCase','Unknown\x20error','completed','substring','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','</file>','FileReadError','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','lines','mcp-filesystem','MORPH_WARP_GREP_TIMEOUT','Failed\x20to\x20request\x20roots\x20from\x20client:','isDirectory','GitHub\x20search\x20failed:\x20','\x20\x20morph-mcp','WORKSPACE_ROOT','../package.json','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','catch','default','utf-8','slice','\x20(new\x20file)','message','composer.json','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','false','--help','sep','UnknownError','safeParse','tsconfig.json','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','object','params','dryRun','pattern','search_string','errors','.vscode','searchGitHub','github_url','Relevant\x20context\x20found:','tool_calls','\x20chars)','has','read','WarpGrepError','grep_search','\x22>\x0aError\x20reading\x20file:\x20','\x22.\x20Known\x20tools:\x20','command','\x27\x20in\x20`','path','success','filter','error','metadata','source','files','dirname','timeout','argv','\x0aExamples:','glob\x20\x27','some','morph-','1382432BmUlRk','size','ms:','startsWith','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','every','Fallback:\x20Using\x20workspace\x20root\x20','12657939UAYNyc','For\x20deletions:\x0a','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','enum','codebase_search','readFile','api-key','ENOENT','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','min','timed\x20out','RipgrepNotAvailable','--api-key','linesAdded','context','describe','10265lqpaCf','Preview\x20changes\x20without\x20applying\x20them.','terminationReason','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','instruction','Error:\x20','.\x20Changes:\x20','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','text','TimeoutError','warn'];a0_0x10ef=function(){return _0x57df6d;};return a0_0x10ef();}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x23f846=a0_0x1d14;try{const _0x5baedf=require(_0x23f846(0x1a4));return _0x5baedf['version']??_0x23f846(0x16a);}catch(_0x24c3df){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x24c3df),_0x23f846(0x16a);}}function printHelp(){const _0x18513a=a0_0x1d14;console[_0x18513a(0x171)](_0x18513a(0x213)+getPackageVersion()),console['log']('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0x18513a(0x171)]('\x0aOptions:'),console[_0x18513a(0x171)](_0x18513a(0x160)),console[_0x18513a(0x171)](_0x18513a(0x22a)),console[_0x18513a(0x171)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console[_0x18513a(0x171)](_0x18513a(0x1d4)),console[_0x18513a(0x171)](_0x18513a(0x1a2)),console['log'](_0x18513a(0x1ad));}const cliArgs=process[a0_0x44b10e(0x1d3)][a0_0x44b10e(0x1a9)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set([a0_0x44b10e(0x1af),'-h']);cliArgs[a0_0x44b10e(0x1d6)](_0x204e46=>VERSION_FLAGS[a0_0x44b10e(0x1c2)](_0x204e46))&&(console[a0_0x44b10e(0x171)](a0_0x44b10e(0x213)+getPackageVersion()),process[a0_0x44b10e(0x212)](0x0));cliArgs[a0_0x44b10e(0x1d6)](_0x6e51ae=>HELP_FLAGS[a0_0x44b10e(0x1c2)](_0x6e51ae))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x51697b){const _0x100a24=a0_0x44b10e;for(let _0x3a7104=0x0;_0x3a7104<cliArgs['length'];_0x3a7104++){const _0x2419d6=cliArgs[_0x3a7104];if(_0x2419d6[_0x100a24(0x1db)]('--'+_0x51697b+'='))return _0x2419d6['slice'](('--'+_0x51697b+'=')[_0x100a24(0x149)]);if(_0x2419d6==='--'+_0x51697b&&_0x3a7104+0x1<cliArgs[_0x100a24(0x149)])return cliArgs[_0x3a7104+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x44b10e(0x149)];i++){const arg=cliArgs[i];if(VERSION_FLAGS['has'](arg)||HELP_FLAGS['has'](arg))continue;if(arg['startsWith'](a0_0x44b10e(0x190)))continue;if(arg===a0_0x44b10e(0x1eb)){i++;continue;}args[a0_0x44b10e(0x243)](arg);}const WORKSPACE_ROOT=process['env'][a0_0x44b10e(0x1a3)]||process[a0_0x44b10e(0x24a)]['PWD']||process[a0_0x44b10e(0x177)](),ENABLE_WORKSPACE_MODE=process[a0_0x44b10e(0x24a)][a0_0x44b10e(0x24e)]!==a0_0x44b10e(0x1ae),MORPH_API_KEY=getCliArg(a0_0x44b10e(0x1e5))??process['env'][a0_0x44b10e(0x178)],MORPH_API_URL=process['env']['MORPH_API_URL'],MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0x44b10e(0x19e)]?parseInt(process[a0_0x44b10e(0x24a)]['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x44b10e(0x256),'codebase_search',a0_0x44b10e(0x179)]),DISABLED_TOOLS=process[a0_0x44b10e(0x24a)][a0_0x44b10e(0x22b)]?new Set(process[a0_0x44b10e(0x24a)]['DISABLED_TOOLS'][a0_0x44b10e(0x202)](',')['map'](_0x4203ac=>_0x4203ac['trim']())[a0_0x44b10e(0x1cc)](_0x1071f7=>_0x1071f7[a0_0x44b10e(0x149)]>0x0)):new Set();function a0_0x1d14(_0x1b6b92,_0x38caef){_0x1b6b92=_0x1b6b92-0x145;const _0x10ef2c=a0_0x10ef();let _0x1d1404=_0x10ef2c[_0x1b6b92];return _0x1d1404;}if(DISABLED_TOOLS[a0_0x44b10e(0x1d9)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x44b10e(0x1c2)](tool)&&console[a0_0x44b10e(0x1cd)]('Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22'+tool+a0_0x44b10e(0x1c7)+[...KNOWN_TOOL_NAMES][a0_0x44b10e(0x22e)](',\x20'));}console['error'](a0_0x44b10e(0x148)+[...DISABLED_TOOLS]['join'](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x44b10e(0x1db)](a0_0x44b10e(0x204))&&!MORPH_API_KEY[a0_0x44b10e(0x1db)](a0_0x44b10e(0x1d7))&&logMcpStderr(a0_0x44b10e(0x1fc));async function reportMorphError(_0x3f58b8){const _0x234063=a0_0x44b10e;try{await a0_0x59fae9[_0x234063(0x225)](_0x234063(0x24d),{..._0x3f58b8,'timestamp':new Date()['toISOString'](),'source':_0x3f58b8[_0x234063(0x1cf)]||_0x234063(0x19d),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x3f58b8[_0x234063(0x1ed)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x234063(0x214),'Authorization':_0x234063(0x21d)+MORPH_API_KEY}});}catch{}}args[a0_0x44b10e(0x149)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),logMcpStderr('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),logMcpStderr(a0_0x44b10e(0x184)),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr(a0_0x44b10e(0x181)),logMcpStderr(a0_0x44b10e(0x251)));function normalizePath(_0xabbb60){const _0xc0c11e=a0_0x44b10e;return a0_0x26b8f4[_0xc0c11e(0x233)](_0xabbb60);}function expandHome(_0x493855){const _0x11107b=a0_0x44b10e;if(_0x493855[_0x11107b(0x1db)]('~/')||_0x493855==='~')return a0_0x26b8f4[_0x11107b(0x22e)](a0_0x4b9a88['homedir'](),_0x493855[_0x11107b(0x1a9)](0x1));return _0x493855;}let allowedDirectories=await Promise[a0_0x44b10e(0x219)](args[a0_0x44b10e(0x17c)](async _0x1552ed=>{const _0x117a93=a0_0x44b10e,_0xc5ec45=expandHome(_0x1552ed),_0x89d2b7=a0_0x26b8f4[_0x117a93(0x252)](_0xc5ec45);try{const _0x37b673=await a0_0x3ad4a4[_0x117a93(0x221)](_0x89d2b7);return normalizePath(_0x37b673);}catch(_0x4c12a7){return normalizePath(_0x89d2b7);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x44b10e(0x149)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x44b10e(0x243)](workspaceDir),logMcpStderr('Workspace\x20mode\x20enabled:\x20Using\x20'+workspaceDir+a0_0x44b10e(0x246)));}catch(a0_0x3b9fab){logMcpStderr('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x3b9fab);}async function detectWorkspaceRoot(_0xf60772){const _0x55d66d=a0_0x44b10e;let _0x391dbf=a0_0x26b8f4['resolve'](_0xf60772);const _0x1d646d=[_0x55d66d(0x208),_0x55d66d(0x1bc),'package.json',_0x55d66d(0x217),'pyproject.toml',_0x55d66d(0x14d),'.cursor',_0x55d66d(0x1b3),_0x55d66d(0x1ac)];while(_0x391dbf!==a0_0x26b8f4[_0x55d66d(0x1d1)](_0x391dbf)){for(const _0x4fcd1f of _0x1d646d){const _0x3315ff=a0_0x26b8f4[_0x55d66d(0x22e)](_0x391dbf,_0x4fcd1f);try{return await a0_0x3ad4a4[_0x55d66d(0x172)](_0x3315ff),normalizePath(_0x391dbf);}catch{}}_0x391dbf=a0_0x26b8f4[_0x55d66d(0x1d1)](_0x391dbf);}return normalizePath(_0xf60772);}await Promise[a0_0x44b10e(0x219)](args[a0_0x44b10e(0x17c)](async _0x421b50=>{const _0x3ad356=a0_0x44b10e;try{const _0x378bd0=await a0_0x3ad4a4['stat'](expandHome(_0x421b50));!_0x378bd0[_0x3ad356(0x1a0)]()&&(logMcpStderr(_0x3ad356(0x1f4)+_0x421b50+_0x3ad356(0x232)),process[_0x3ad356(0x212)](0x1));}catch(_0x760d5a){logMcpStderr(_0x3ad356(0x14e)+_0x421b50+':',_0x760d5a),process[_0x3ad356(0x212)](0x1);}}));async function validatePath(_0x38df6c){const _0x4acfd7=a0_0x44b10e,_0x2eb799=expandHome(_0x38df6c),_0x190575=a0_0x26b8f4['resolve'](_0x2eb799);try{const _0x44864a=await a0_0x3ad4a4[_0x4acfd7(0x221)](_0x190575);return _0x44864a;}catch(_0x1508f4){if(_0x1508f4[_0x4acfd7(0x21f)]==='ENOENT'){const _0x4340ed=a0_0x26b8f4[_0x4acfd7(0x1d1)](_0x190575);try{const _0x2c5903=await a0_0x3ad4a4[_0x4acfd7(0x221)](_0x4340ed);return a0_0x26b8f4[_0x4acfd7(0x22e)](_0x2c5903,a0_0x26b8f4[_0x4acfd7(0x18d)](_0x190575));}catch{throw new Error(_0x4acfd7(0x250)+_0x4340ed);}}throw _0x1508f4;}}const MorphEditFileArgsSchema=z[a0_0x44b10e(0x1b6)]({'path':z[a0_0x44b10e(0x155)](),'code_edit':z[a0_0x44b10e(0x155)]()['describe'](a0_0x44b10e(0x175)),'instruction':z['string']()[a0_0x44b10e(0x1ee)](a0_0x44b10e(0x247)),'dryRun':z[a0_0x44b10e(0x234)]()[a0_0x44b10e(0x1a7)](![])['describe'](a0_0x44b10e(0x1f0))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x44b10e(0x249),WarpGrepArgsSchema=z[a0_0x44b10e(0x1b6)]({'search_string':z['string']()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x44b10e(0x155)]()[a0_0x44b10e(0x1ee)](a0_0x44b10e(0x151)),'search_type':z[a0_0x44b10e(0x1e2)]([a0_0x44b10e(0x1a7),'node_modules'])[a0_0x44b10e(0x238)]()['describe'](a0_0x44b10e(0x15d))}),WarpGrepGitHubArgsSchema=z[a0_0x44b10e(0x1b6)]({'search_string':z['string']()[a0_0x44b10e(0x1ee)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x44b10e(0x155)]()['optional']()['describe'](a0_0x44b10e(0x193)),'owner_repo':z['string']()['optional']()['describe']('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z[a0_0x44b10e(0x155)]()[a0_0x44b10e(0x238)]()['describe'](a0_0x44b10e(0x146))}),CodebaseSearchArgsSchema=z[a0_0x44b10e(0x1b6)]({'query':z[a0_0x44b10e(0x155)]()[a0_0x44b10e(0x1ee)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x44b10e(0x155)]()[a0_0x44b10e(0x1ee)](a0_0x44b10e(0x21c)),'branch':z[a0_0x44b10e(0x155)]()[a0_0x44b10e(0x238)]()[a0_0x44b10e(0x1ee)]('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x44b10e(0x155)]()[a0_0x44b10e(0x238)]()[a0_0x44b10e(0x1ee)](a0_0x44b10e(0x17e)),'targetDirectories':z[a0_0x44b10e(0x206)](z[a0_0x44b10e(0x155)]())[a0_0x44b10e(0x1a7)]([])['describe'](a0_0x44b10e(0x209)),'limit':z[a0_0x44b10e(0x191)]()[a0_0x44b10e(0x238)]()[a0_0x44b10e(0x1a7)](0xa)['describe']('Max\x20results\x20to\x20return')}),server=new Server({'name':a0_0x44b10e(0x240),'version':a0_0x44b10e(0x1fe)},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x5d1cb=a0_0x44b10e,_0xc9b8b3=[{'name':'edit_file','description':_0x5d1cb(0x150)+'⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a'+_0x5d1cb(0x1dc)+_0x5d1cb(0x186)+'Benefits:\x0a'+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x5d1cb(0x14b)+_0x5d1cb(0x16f)+_0x5d1cb(0x198)+_0x5d1cb(0x23a)+_0x5d1cb(0x1b4)+_0x5d1cb(0x1f2)+_0x5d1cb(0x1e0)+_0x5d1cb(0x21e)+'-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a'+_0x5d1cb(0x254)+_0x5d1cb(0x183)+_0x5d1cb(0x207)+_0x5d1cb(0x23d)+_0x5d1cb(0x210)+'-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a'+_0x5d1cb(0x1e1)+_0x5d1cb(0x218),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x5d1cb(0x1e3),'description':_0x5d1cb(0x242)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x5d1cb(0x16d)+'You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20'+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x18774a=_0xc9b8b3[_0x5d1cb(0x1cc)](_0x141a98=>{const _0x4fd4de=_0x5d1cb;if(DISABLED_TOOLS[_0x4fd4de(0x1c2)](_0x141a98[_0x4fd4de(0x23b)]))return console[_0x4fd4de(0x1cd)]('Tool\x20'+_0x141a98[_0x4fd4de(0x23b)]+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if('requiresApiKey'in _0x141a98&&_0x141a98[_0x4fd4de(0x203)]&&!MORPH_API_KEY)return logMcpStderr(_0x4fd4de(0x16b)+_0x141a98[_0x4fd4de(0x23b)]+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x18774a[_0x5d1cb(0x17c)](_0x419e33=>({'name':_0x419e33[_0x5d1cb(0x23b)],'description':_0x419e33[_0x5d1cb(0x24c)],'inputSchema':_0x419e33['inputSchema']}))};}),server[a0_0x44b10e(0x21b)](CallToolRequestSchema,async _0x12eb5a=>{const _0x55d2cb=a0_0x44b10e,{name:_0x55ad1d,arguments:_0x1d290b}=_0x12eb5a[_0x55d2cb(0x1b7)];try{if(DISABLED_TOOLS[_0x55d2cb(0x1c2)](_0x55ad1d))throw new Error(_0x55d2cb(0x167)+_0x55ad1d+'\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable');switch(_0x55ad1d){case _0x55d2cb(0x256):{const _0x4f9864=MorphEditFileArgsSchema[_0x55d2cb(0x1b2)](_0x1d290b);if(!_0x4f9864[_0x55d2cb(0x1cb)])throw new Error(_0x55d2cb(0x226)+_0x4f9864[_0x55d2cb(0x1cd)]);const _0x438405=await validatePath(_0x4f9864[_0x55d2cb(0x220)]['path']);let _0x2c4b7c=null,_0x504a64=!![],_0x3ef712=null;try{_0x2c4b7c=await a0_0x3ad4a4['readFile'](_0x438405,_0x55d2cb(0x1a8));}catch(_0xa9febc){const _0x2feda3=_0xa9febc[_0x55d2cb(0x21f)];_0x2feda3===_0x55d2cb(0x1e6)?(_0x504a64=![],_0x2c4b7c=''):(_0x3ef712=_0x55d2cb(0x158)+(_0x2feda3||_0x55d2cb(0x16a))+'\x20-\x20'+(_0xa9febc instanceof Error?_0xa9febc['message']:String(_0xa9febc)),logMcpStderr(_0x55d2cb(0x16b)+_0x3ef712));}let _0x75e48;try{const _0x3fa5e3=MORPH_API_KEY;if(!_0x3fa5e3)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x983471=a0_0x26b8f4[_0x55d2cb(0x1d1)](_0x438405),_0x411b2e=a0_0x26b8f4[_0x55d2cb(0x18d)](_0x438405),_0x1cde32=await executeEditFile({'target_filepath':_0x411b2e,'code_edit':_0x4f9864['data']['code_edit'],'instructions':_0x4f9864['data'][_0x55d2cb(0x1f3)]},{'morphApiKey':_0x3fa5e3,'morphApiUrl':MORPH_API_URL,'baseDir':_0x983471,'autoWrite':!_0x4f9864['data'][_0x55d2cb(0x1b8)],'generateUdiff':![],'debug':![]});_0x75e48=_0x1cde32[_0x55d2cb(0x1fa)];if(!_0x1cde32['success'])throw new Error(_0x1cde32[_0x55d2cb(0x1cd)]||_0x55d2cb(0x241));const _0x1050b3=_0x1cde32['changes'],_0x426217='added\x20'+_0x1050b3[_0x55d2cb(0x1ec)]+_0x55d2cb(0x248)+_0x1050b3[_0x55d2cb(0x255)]+_0x55d2cb(0x153)+_0x1050b3['linesModified'];if(_0x4f9864['data'][_0x55d2cb(0x1b8)])return{'content':[{'type':_0x55d2cb(0x1f7),'text':_0x55d2cb(0x18e)+(_0x504a64?'':_0x55d2cb(0x1aa))+':\x20'+_0x4f9864['data'][_0x55d2cb(0x1f3)]+_0x55d2cb(0x1f5)+_0x426217+_0x55d2cb(0x215)+_0x4f9864[_0x55d2cb(0x220)][_0x55d2cb(0x1ca)]+'.'}]};return{'content':[{'type':_0x55d2cb(0x1f7),'text':_0x55d2cb(0x1fd)+(_0x504a64?_0x55d2cb(0x164):_0x55d2cb(0x182))+':\x20'+_0x4f9864[_0x55d2cb(0x220)][_0x55d2cb(0x1f3)]+_0x55d2cb(0x1f5)+_0x426217+_0x55d2cb(0x215)+_0x4f9864[_0x55d2cb(0x220)][_0x55d2cb(0x1ca)]+'.'}]};}catch(_0x14a89e){const _0x7d70e3=_0x14a89e instanceof Error?_0x14a89e[_0x55d2cb(0x1ab)]:String(_0x14a89e);return reportMorphError({'error_message':_0x7d70e3,'error_type':_0x14a89e instanceof Error?_0x14a89e[_0x55d2cb(0x17d)][_0x55d2cb(0x23b)]:'UnknownError','context':{'tool':_0x55d2cb(0x256),'completion_id':_0x75e48,'file_path':_0x4f9864[_0x55d2cb(0x220)][_0x55d2cb(0x1ca)],'validated_path':_0x438405,'instruction':_0x4f9864['data'][_0x55d2cb(0x1f3)],'model':_0x55d2cb(0x156),'dry_run':_0x4f9864['data'][_0x55d2cb(0x1b8)],'file_exists':_0x504a64,'file_read_error':_0x3ef712,'file_readable':_0x2c4b7c!==null,'request_content':{'path':_0x4f9864[_0x55d2cb(0x220)][_0x55d2cb(0x1ca)],'code_edit':_0x4f9864[_0x55d2cb(0x220)][_0x55d2cb(0x162)],'instruction':_0x4f9864[_0x55d2cb(0x220)][_0x55d2cb(0x1f3)],'original_code':_0x2c4b7c!==null?_0x2c4b7c[_0x55d2cb(0x149)]>0xc350?_0x2c4b7c['substring'](0x0,0xc350)+_0x55d2cb(0x20e)+_0x2c4b7c[_0x55d2cb(0x149)]+_0x55d2cb(0x1c1):_0x2c4b7c:_0x55d2cb(0x147)+(_0x3ef712||'unknown\x20error')+']','original_code_length':_0x2c4b7c?.[_0x55d2cb(0x149)]??0x0,'model':_0x55d2cb(0x156),'dry_run':_0x4f9864[_0x55d2cb(0x220)][_0x55d2cb(0x1b8)]}},'stack_trace':_0x14a89e instanceof Error?_0x14a89e[_0x55d2cb(0x187)]:undefined,'source':_0x55d2cb(0x19d)})[_0x55d2cb(0x1a6)](()=>{}),{'content':[{'type':_0x55d2cb(0x1f7),'text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x7d70e3}],'isError':!![]};}}case'codebase_search':{const _0x4ba8e2=WarpGrepArgsSchema[_0x55d2cb(0x1b2)](_0x1d290b);if(!_0x4ba8e2['success'])return{'content':[{'type':_0x55d2cb(0x1f7),'text':'Invalid\x20arguments:\x20'+_0x4ba8e2[_0x55d2cb(0x1cd)]}],'isError':!![]};const _0x1c14a7=_0x211625=>{const _0x10b2ac=_0x55d2cb,_0x4080fc=[];for(const _0x3d1ab5 of _0x211625||[]){if(_0x3d1ab5[_0x10b2ac(0x17a)]===_0x10b2ac(0x224)&&Array[_0x10b2ac(0x20f)](_0x3d1ab5[_0x10b2ac(0x1c0)]))for(const _0x189903 of _0x3d1ab5['tool_calls']){try{const _0x4e58e5=_0x189903['function']?.[_0x10b2ac(0x23b)],_0x2797ab=JSON['parse'](_0x189903[_0x10b2ac(0x16c)]?.['arguments']||'{}');if(_0x4e58e5==='grep_search')_0x4080fc['push'](_0x10b2ac(0x14f)+_0x2797ab['pattern']+'\x27\x20'+(_0x2797ab[_0x10b2ac(0x1ca)]||'.'));else{if(_0x4e58e5===_0x10b2ac(0x1c3))_0x4080fc[_0x10b2ac(0x243)](_0x10b2ac(0x14a)+_0x2797ab['path']);else{if(_0x4e58e5==='list_directory')_0x4080fc[_0x10b2ac(0x243)](_0x10b2ac(0x245)+(_0x2797ab[_0x10b2ac(0x1c8)]||'.'));else{if(_0x4e58e5==='glob')_0x4080fc[_0x10b2ac(0x243)](_0x10b2ac(0x1d5)+_0x2797ab[_0x10b2ac(0x1b9)]+'\x27\x20'+(_0x2797ab['path']||'.'));else _0x4e58e5===_0x10b2ac(0x20c)&&_0x4080fc[_0x10b2ac(0x243)](_0x10b2ac(0x20c));}}}}catch{}}}return _0x4080fc;},_0x5ebbab=_0x6705a9=>{const _0x3069b9=_0x55d2cb,_0x27c436=[];if(!_0x6705a9||!Array[_0x3069b9(0x20f)](_0x6705a9))return _0x27c436;const _0x1d59be=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x3069b9(0x15f),'tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':_0x3069b9(0x237),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x3069b9(0x173),'tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x3069b9(0x161),'tool':_0x3069b9(0x1c3)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x3069b9(0x188),'tool':_0x3069b9(0x20a)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x3069b9(0x1ea),'tool':'grep'},{'pattern':/\[BINARY FILE\]/,'error_type':'BinaryFile','tool':_0x3069b9(0x1c3)},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':'read'},{'pattern':/not a text file/,'error_type':_0x3069b9(0x161),'tool':_0x3069b9(0x1c3)},{'pattern':/symbolic link/,'error_type':_0x3069b9(0x189),'tool':_0x3069b9(0x1c3)},{'pattern':/Error reading file:/,'error_type':_0x3069b9(0x173),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x3069b9(0x235),'tool':_0x3069b9(0x16a)}];let _0x3dc4a4=0x0;for(const _0x4f2e5c of _0x6705a9){_0x4f2e5c[_0x3069b9(0x17a)]===_0x3069b9(0x224)&&Array[_0x3069b9(0x20f)](_0x4f2e5c[_0x3069b9(0x1c0)])&&_0x3dc4a4++;const _0x389e1b=_0x4f2e5c[_0x3069b9(0x18b)];if((_0x4f2e5c[_0x3069b9(0x17a)]===_0x3069b9(0x211)||_0x4f2e5c['role']===_0x3069b9(0x165))&&_0x389e1b&&typeof _0x389e1b===_0x3069b9(0x155))for(const {pattern:_0xc5a763,error_type:_0x4d75fc,tool:_0x46ed21}of _0x1d59be){const _0x3749a1=_0x389e1b[_0x3069b9(0x154)](new RegExp(_0xc5a763['source'],'g'));if(_0x3749a1)for(const _0x4ef0f9 of _0x3749a1){const _0x5e3dde=_0x389e1b[_0x3069b9(0x180)](_0x4ef0f9),_0x1da0d8=_0x389e1b[_0x3069b9(0x197)](_0x5e3dde,Math[_0x3069b9(0x1e8)](_0x5e3dde+0xc8,_0x389e1b[_0x3069b9(0x149)]));_0x27c436[_0x3069b9(0x243)]({'tool':_0x46ed21,'error_type':_0x4d75fc,'error_message':_0x1da0d8[_0x3069b9(0x202)]('\x0a')[0x0],'turn':_0x3dc4a4});}}}return _0x27c436;};try{const _0x3293a9=a0_0x26b8f4[_0x55d2cb(0x252)](_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x159)]),_0x55a9ac=_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x21a)],_0x489b01=_0x55a9ac===_0x55d2cb(0x22c)?{'allowNames':[_0x55d2cb(0x22c)]}:undefined,_0x37ea6c=new LocalRipgrepProvider(_0x3293a9,undefined,_0x489b01),_0x34798b=await runWarpGrep({'searchTerm':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x1ba)],'repoRoot':_0x3293a9,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x37ea6c,'search_type':_0x55a9ac}),_0x2d1ebc=_0x5ebbab(_0x34798b[_0x55d2cb(0x168)]);_0x2d1ebc[_0x55d2cb(0x149)]>0x0&&reportMorphError({'error_message':_0x55d2cb(0x22d)+_0x2d1ebc[_0x55d2cb(0x149)]+_0x55d2cb(0x230),'error_type':'SubToolError','level':_0x55d2cb(0x1f9),'tool':_0x55d2cb(0x1e3),'context':{'repo_path':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x159)],'query':_0x4ba8e2[_0x55d2cb(0x220)]['search_string'],'model':_0x55d2cb(0x1fb),'termination_reason':_0x34798b[_0x55d2cb(0x1f1)],'sub_tool_errors':_0x2d1ebc,'timings':_0x34798b['timings'],'tool_calls':_0x1c14a7(_0x34798b['messages']),'messages':_0x34798b['messages']?.[_0x55d2cb(0x17c)](_0x346abb=>({'role':_0x346abb[_0x55d2cb(0x17a)],'content':_0x346abb['content'],..._0x346abb[_0x55d2cb(0x1c0)]?{'tool_calls':_0x346abb[_0x55d2cb(0x1c0)][_0x55d2cb(0x149)]}:{},..._0x346abb[_0x55d2cb(0x23e)]?{'tool_call_id':_0x346abb[_0x55d2cb(0x23e)]}:{}}))},'source':_0x55d2cb(0x19d)})[_0x55d2cb(0x1a6)](()=>{});let _0x365493='';if(_0x34798b[_0x55d2cb(0x1f1)]===_0x55d2cb(0x196)&&_0x34798b['finish']?.[_0x55d2cb(0x1ce)]?.[_0x55d2cb(0x1d0)]){const _0x59df51=_0x34798b['finish'][_0x55d2cb(0x1ce)][_0x55d2cb(0x1d0)];if(_0x59df51[_0x55d2cb(0x149)]===0x0)return _0x365493=_0x34798b[_0x55d2cb(0x20c)][_0x55d2cb(0x257)]||_0x55d2cb(0x1e7),{'content':[{'type':'text','text':_0x365493}]};const _0x3755e2=[],_0x55e544=[_0x55d2cb(0x239)];for(const _0x4791ee of _0x34798b[_0x55d2cb(0x168)]){if(_0x4791ee['role']===_0x55d2cb(0x224)&&Array[_0x55d2cb(0x20f)](_0x4791ee[_0x55d2cb(0x1c0)]))for(const _0x1e2242 of _0x4791ee[_0x55d2cb(0x1c0)]){try{const _0x22cbb2=_0x1e2242[_0x55d2cb(0x16c)]?.[_0x55d2cb(0x23b)],_0x2fdb40=JSON[_0x55d2cb(0x18f)](_0x1e2242[_0x55d2cb(0x16c)]?.['arguments']||'{}');if(_0x22cbb2===_0x55d2cb(0x1c5))_0x55e544[_0x55d2cb(0x243)]('-\x20Grepped\x20\x27'+_0x2fdb40['pattern']+_0x55d2cb(0x1c9)+(_0x2fdb40[_0x55d2cb(0x1ca)]||'.')+'`');else{if(_0x22cbb2===_0x55d2cb(0x1c3))_0x55e544['push'](_0x55d2cb(0x170)+_0x2fdb40['path']+'`');else{if(_0x22cbb2===_0x55d2cb(0x23c))_0x55e544[_0x55d2cb(0x243)]('-\x20Listed\x20directory\x20`'+(_0x2fdb40[_0x55d2cb(0x1c8)]||'.')+'`');else _0x22cbb2===_0x55d2cb(0x200)&&_0x55e544[_0x55d2cb(0x243)](_0x55d2cb(0x20d)+_0x2fdb40[_0x55d2cb(0x1b9)]+_0x55d2cb(0x15c)+(_0x2fdb40[_0x55d2cb(0x1ca)]||'.')+'`');}}}catch{}}}_0x3755e2['push'](_0x55e544['join']('\x0a'));const _0x189459=['',_0x55d2cb(0x1bf)];for(const _0x16aa30 of _0x59df51){if(_0x16aa30['lines']==='*')_0x189459[_0x55d2cb(0x243)]('-\x20'+_0x16aa30[_0x55d2cb(0x1ca)]+':*');else{if(Array[_0x55d2cb(0x20f)](_0x16aa30[_0x55d2cb(0x19c)])){const _0x5d06b6=_0x16aa30[_0x55d2cb(0x19c)][_0x55d2cb(0x17c)](([_0x32c87e,_0x2d063a])=>{if(_0x32c87e===_0x2d063a)return''+_0x32c87e;return _0x32c87e+'-'+_0x2d063a;});_0x189459[_0x55d2cb(0x243)]('-\x20'+_0x16aa30[_0x55d2cb(0x1ca)]+':'+_0x5d06b6[_0x55d2cb(0x22e)](','));}else _0x189459[_0x55d2cb(0x243)]('-\x20'+_0x16aa30[_0x55d2cb(0x1ca)]+':*');}}_0x189459[_0x55d2cb(0x243)](''),_0x3755e2['push'](_0x189459[_0x55d2cb(0x22e)]('\x0a')),_0x3755e2[_0x55d2cb(0x243)]('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x5bbe0a=[];for(const _0x23adb7 of _0x59df51){let _0x5699d3=a0_0x26b8f4['resolve'](_0x4ba8e2[_0x55d2cb(0x220)]['repo_path'],_0x23adb7['path']),_0x389630=null,_0x318a72=null;try{_0x389630=await a0_0x3ad4a4['readFile'](_0x5699d3,{'encoding':'utf-8'});}catch(_0x1d6c6e){const _0x1bed11=fixPathRepetition(_0x5699d3);if(_0x1bed11)try{_0x389630=await a0_0x3ad4a4[_0x55d2cb(0x1e4)](_0x1bed11,{'encoding':_0x55d2cb(0x1a8)}),_0x5699d3=_0x1bed11;}catch{_0x318a72=_0x1d6c6e instanceof Error?_0x1d6c6e:new Error(String(_0x1d6c6e));}else _0x318a72=_0x1d6c6e instanceof Error?_0x1d6c6e:new Error(String(_0x1d6c6e));}if(_0x389630!==null){const _0x3fcd98=_0x389630[_0x55d2cb(0x202)](/\r?\n/),_0x16e044=[_0x55d2cb(0x227)+_0x23adb7['path']+'\x22>'];if(_0x23adb7['lines']==='*'||!Array[_0x55d2cb(0x20f)](_0x23adb7['lines']))for(let _0x4e9a43=0x1;_0x4e9a43<=_0x3fcd98[_0x55d2cb(0x149)];_0x4e9a43++){const _0x577609=_0x3fcd98[_0x4e9a43-0x1];_0x16e044['push'](_0x4e9a43+'|\x20'+_0x577609);}else for(const [_0x556e1c,_0x58b016]of _0x23adb7[_0x55d2cb(0x19c)]){_0x16e044[_0x55d2cb(0x149)]>0x1&&_0x16e044[_0x55d2cb(0x243)]('');for(let _0x3efc6d=_0x556e1c;_0x3efc6d<=_0x58b016&&_0x3efc6d<=_0x3fcd98[_0x55d2cb(0x149)];_0x3efc6d++){const _0x2d71cf=_0x3fcd98[_0x3efc6d-0x1];_0x16e044[_0x55d2cb(0x243)](_0x3efc6d+'|\x20'+_0x2d71cf);}}_0x16e044[_0x55d2cb(0x243)](_0x55d2cb(0x199)),_0x5bbe0a['push'](_0x16e044[_0x55d2cb(0x22e)]('\x0a'));}else _0x5bbe0a['push'](_0x55d2cb(0x227)+_0x23adb7[_0x55d2cb(0x1ca)]+_0x55d2cb(0x1c6)+(_0x318a72?.[_0x55d2cb(0x1ab)]||_0x55d2cb(0x195))+'\x0a</file>');}_0x3755e2['push'](_0x5bbe0a[_0x55d2cb(0x22e)]('\x0a\x0a')),_0x365493=_0x3755e2[_0x55d2cb(0x22e)]('\x0a');const _0x4d3913=_0x34798b[_0x55d2cb(0x1bb)]?.[_0x55d2cb(0x1cc)](_0xb9bb72=>_0xb9bb72[_0x55d2cb(0x1ab)]?.[_0x55d2cb(0x1db)](_0x55d2cb(0x205)))||[];if(_0x4d3913[_0x55d2cb(0x149)]>0x0){const _0x55f336=_0x4d3913['map'](_0x27c33b=>_0x27c33b[_0x55d2cb(0x1ab)])[_0x55d2cb(0x22e)](';\x20');reportMorphError({'error_message':_0x55f336,'error_type':_0x55d2cb(0x19a),'context':{'tool':_0x55d2cb(0x1e3),'repo_path':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x159)],'query':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x1ba)],'model':_0x55d2cb(0x1fb),'termination_reason':_0x55d2cb(0x176),'error_count':_0x4d3913[_0x55d2cb(0x149)],'is_timeout':![],'timings':_0x34798b[_0x55d2cb(0x166)],'files_attempted':_0x59df51[_0x55d2cb(0x17c)](_0xb22048=>({'path':_0xb22048[_0x55d2cb(0x1ca)],'lines':_0xb22048[_0x55d2cb(0x19c)]})),'tool_calls':_0x1c14a7(_0x34798b[_0x55d2cb(0x168)]),'messages':_0x34798b[_0x55d2cb(0x168)]?.['map'](_0xded576=>({'role':_0xded576[_0x55d2cb(0x17a)],'content':_0xded576[_0x55d2cb(0x18b)],..._0xded576['tool_calls']?{'tool_calls':_0xded576[_0x55d2cb(0x1c0)][_0x55d2cb(0x149)]}:{},..._0xded576['tool_call_id']?{'tool_call_id':_0xded576[_0x55d2cb(0x23e)]}:{}})),'request_content':{'query':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x1ba)],'repo_path':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x159)],'repoRoot':a0_0x26b8f4['resolve'](_0x4ba8e2[_0x55d2cb(0x220)]['repo_path']),'model':_0x55d2cb(0x1fb)}},'source':_0x55d2cb(0x19d)})['catch'](()=>{});}}else{if(_0x34798b[_0x55d2cb(0x1f1)]===_0x55d2cb(0x174)&&_0x34798b[_0x55d2cb(0x1bb)][_0x55d2cb(0x149)]>0x0){const _0x482766=_0x34798b['errors'][_0x55d2cb(0x17c)](_0x10fa6e=>_0x10fa6e['message'])['join'](';\x20');_0x365493=_0x55d2cb(0x1f4)+_0x482766;const _0x2cd088=_0x482766[_0x55d2cb(0x194)]()[_0x55d2cb(0x15a)]('timeout')||_0x482766[_0x55d2cb(0x194)]()[_0x55d2cb(0x15a)](_0x55d2cb(0x1e9))||_0x482766[_0x55d2cb(0x194)]()[_0x55d2cb(0x15a)](_0x55d2cb(0x157)),_0x633bbe=_0x34798b[_0x55d2cb(0x20c)]?.[_0x55d2cb(0x1ce)]?.[_0x55d2cb(0x1d0)],_0xd0d476=_0x34798b[_0x55d2cb(0x1bb)][0x0];reportMorphError({'error_message':_0x482766,'error_type':_0x2cd088?_0x55d2cb(0x1f8):_0xd0d476?.['constructor']?.[_0x55d2cb(0x23b)]||_0x55d2cb(0x1c4),'context':{'tool':_0x55d2cb(0x1e3),'repo_path':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x159)],'query':_0x4ba8e2['data']['search_string'],'model':'morph-warp-grep-v2.1','termination_reason':_0x34798b[_0x55d2cb(0x1f1)],'error_count':_0x34798b['errors']['length'],'is_timeout':_0x2cd088,'timings':_0x34798b['timings'],'files_attempted':_0x633bbe?.[_0x55d2cb(0x17c)](_0x1cb2f0=>({'path':_0x1cb2f0[_0x55d2cb(0x1ca)],'lines':_0x1cb2f0[_0x55d2cb(0x19c)]})),'tool_calls':_0x1c14a7(_0x34798b['messages']),'messages':_0x34798b[_0x55d2cb(0x168)]?.[_0x55d2cb(0x17c)](_0xafd9c8=>({'role':_0xafd9c8['role'],'content':_0xafd9c8[_0x55d2cb(0x18b)],..._0xafd9c8[_0x55d2cb(0x1c0)]?{'tool_calls':_0xafd9c8[_0x55d2cb(0x1c0)][_0x55d2cb(0x149)]}:{},..._0xafd9c8[_0x55d2cb(0x23e)]?{'tool_call_id':_0xafd9c8[_0x55d2cb(0x23e)]}:{}})),'request_content':{'query':_0x4ba8e2[_0x55d2cb(0x220)]['search_string'],'repo_path':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x159)],'repoRoot':a0_0x26b8f4[_0x55d2cb(0x252)](_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x159)]),'model':_0x55d2cb(0x1fb)}},'stack_trace':_0xd0d476?.['stack']||undefined,'source':_0x55d2cb(0x19d)})['catch'](()=>{});}else _0x365493=_0x55d2cb(0x185);}return{'content':[{'type':_0x55d2cb(0x1f7),'text':_0x365493}]};}catch(_0x5812b9){const _0x40a6f6=_0x5812b9 instanceof Error?_0x5812b9[_0x55d2cb(0x1ab)]:String(_0x5812b9),_0x967587=_0x40a6f6[_0x55d2cb(0x194)]()['includes'](_0x55d2cb(0x1d2))||_0x40a6f6[_0x55d2cb(0x194)]()[_0x55d2cb(0x15a)](_0x55d2cb(0x1e9))||_0x40a6f6[_0x55d2cb(0x194)]()[_0x55d2cb(0x15a)](_0x55d2cb(0x157))||_0x5812b9 instanceof Error&&_0x5812b9[_0x55d2cb(0x23b)]===_0x55d2cb(0x1f8);return reportMorphError({'error_message':_0x40a6f6,'error_type':_0x967587?'TimeoutError':_0x5812b9 instanceof Error?_0x5812b9[_0x55d2cb(0x17d)]['name']:_0x55d2cb(0x1b1),'context':{'tool':_0x55d2cb(0x1e3),'repo_path':_0x4ba8e2['data'][_0x55d2cb(0x159)],'query':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x1ba)],'model':_0x55d2cb(0x1fb),'is_timeout':_0x967587,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x1ba)],'repo_path':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x159)],'repoRoot':a0_0x26b8f4[_0x55d2cb(0x252)](_0x4ba8e2[_0x55d2cb(0x220)]['repo_path']),'model':_0x55d2cb(0x1fb)}},'stack_trace':_0x5812b9 instanceof Error?_0x5812b9[_0x55d2cb(0x187)]:undefined,'source':'mcp-filesystem'})['catch'](()=>{}),{'content':[{'type':_0x55d2cb(0x1f7),'text':_0x55d2cb(0x24f)+_0x40a6f6}],'isError':![]};}}case _0x55d2cb(0x179):{const _0x1de931=WarpGrepGitHubArgsSchema[_0x55d2cb(0x1b2)](_0x1d290b);if(!_0x1de931[_0x55d2cb(0x1cb)])return{'content':[{'type':_0x55d2cb(0x1f7),'text':_0x55d2cb(0x201)+_0x1de931[_0x55d2cb(0x1cd)]}],'isError':!![]};const _0xbe92b6=_0x1de931[_0x55d2cb(0x220)][_0x55d2cb(0x1be)]||_0x1de931['data'][_0x55d2cb(0x15b)];if(!_0xbe92b6)return{'content':[{'type':_0x55d2cb(0x1f7),'text':'Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id'}],'isError':!![]};const _0x218e2e=MORPH_API_KEY;if(!_0x218e2e)throw new Error(_0x55d2cb(0x19b));const _0x2e441=Date['now']();logMcpStderr(_0x55d2cb(0x20b)+_0xbe92b6+_0x55d2cb(0x163)+_0x1de931[_0x55d2cb(0x220)][_0x55d2cb(0x1ba)]+'\x22');try{const _0x4339b5=new WarpGrepClient({'morphApiKey':_0x218e2e,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x5a9b50=await _0x4339b5[_0x55d2cb(0x1bd)]({'searchTerm':_0x1de931['data'][_0x55d2cb(0x1ba)],'github':_0xbe92b6,'branch':_0x1de931['data'][_0x55d2cb(0x223)]}),_0x172205=Date['now']()-_0x2e441;logMcpStderr(_0x55d2cb(0x231)+_0x172205+'ms.\x20Success:\x20'+_0x5a9b50[_0x55d2cb(0x1cb)]);const _0x45b36=formatResult(_0x5a9b50);return{'content':[{'type':_0x55d2cb(0x1f7),'text':_0x45b36}]};}catch(_0x1f8ef3){const _0x658641=Date[_0x55d2cb(0x1ff)]()-_0x2e441,_0x3ed941=_0x1f8ef3 instanceof Error?_0x1f8ef3[_0x55d2cb(0x1ab)]:String(_0x1f8ef3);return logMcpStderr(_0x55d2cb(0x15e)+_0x658641+_0x55d2cb(0x1da),_0x3ed941),reportMorphError({'error_message':_0x3ed941,'error_type':_0x1f8ef3 instanceof Error?_0x1f8ef3[_0x55d2cb(0x17d)]['name']:_0x55d2cb(0x1b1),'context':{'tool':_0x55d2cb(0x179),'github_url':_0xbe92b6,'search_string':_0x1de931[_0x55d2cb(0x220)][_0x55d2cb(0x1ba)],'branch':_0x1de931[_0x55d2cb(0x220)][_0x55d2cb(0x223)]},'stack_trace':_0x1f8ef3 instanceof Error?_0x1f8ef3[_0x55d2cb(0x187)]:undefined,'source':_0x55d2cb(0x19d),'tool':_0x55d2cb(0x179),'latency_ms':_0x658641})['catch'](()=>{}),{'content':[{'type':_0x55d2cb(0x1f7),'text':_0x55d2cb(0x1a1)+_0x3ed941}],'isError':![]};}}default:throw new Error(_0x55d2cb(0x216)+_0x55ad1d);}}catch(_0x556a1e){const _0x4668f9=_0x556a1e instanceof Error?_0x556a1e['message']:String(_0x556a1e);return reportMorphError({'error_message':_0x4668f9,'error_type':_0x556a1e instanceof Error?_0x556a1e[_0x55d2cb(0x17d)]['name']:_0x55d2cb(0x1b1),'context':{'tool':_0x55ad1d,'arguments':_0x1d290b?JSON[_0x55d2cb(0x22f)](_0x1d290b)[_0x55d2cb(0x197)](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x556a1e instanceof Error?_0x556a1e[_0x55d2cb(0x187)]:undefined,'source':'mcp-filesystem'})[_0x55d2cb(0x1a6)](()=>{}),{'content':[{'type':_0x55d2cb(0x1f7),'text':'Error:\x20'+_0x4668f9}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x3a6c4b){const _0xa2f036=a0_0x44b10e,_0x5ea7be=await getValidRootDirectories(_0x3a6c4b);if(_0x5ea7be[_0xa2f036(0x149)]>0x0)allowedDirectories=[..._0x5ea7be],logMcpStderr(_0xa2f036(0x169)+_0x5ea7be[_0xa2f036(0x149)]+'\x20valid\x20directories');else{logMcpStderr(_0xa2f036(0x1f6));if(ENABLE_WORKSPACE_MODE)try{const _0x1bab50=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x1bab50&&(allowedDirectories=[_0x1bab50],logMcpStderr(_0xa2f036(0x1de)+_0x1bab50));}catch(_0x14a9bb){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x14a9bb);}}}server[a0_0x44b10e(0x17f)](RootsListChangedNotificationSchema,async()=>{const _0x4550f7=a0_0x44b10e;try{const _0x281019=await server[_0x4550f7(0x145)]();_0x281019&&_0x4550f7(0x24b)in _0x281019&&await updateAllowedDirectoriesFromRoots(_0x281019[_0x4550f7(0x24b)]);}catch(_0x4343f2){logMcpStderr(_0x4550f7(0x19f),_0x4343f2 instanceof Error?_0x4343f2[_0x4550f7(0x1ab)]:String(_0x4343f2));}}),server['oninitialized']=async()=>{const _0x3156ae=a0_0x44b10e,_0x46fa78=server['getClientCapabilities']();if(_0x46fa78?.[_0x3156ae(0x24b)])try{const _0x1703b0=await server[_0x3156ae(0x145)]();_0x1703b0&&_0x3156ae(0x24b)in _0x1703b0?await updateAllowedDirectoriesFromRoots(_0x1703b0[_0x3156ae(0x24b)]):logMcpStderr(_0x3156ae(0x14c));}catch(_0x8dd87f){logMcpStderr(_0x3156ae(0x18a),_0x8dd87f instanceof Error?_0x8dd87f[_0x3156ae(0x1ab)]:String(_0x8dd87f));}else{if(allowedDirectories[_0x3156ae(0x149)]>0x0)logMcpStderr(_0x3156ae(0x236),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x3156ae(0x1a5));else throw new Error(_0x3156ae(0x222));}}};async function runServer(){const _0x345199=a0_0x44b10e,_0x1b9c4e=new StdioServerTransport();await server[_0x345199(0x16e)](_0x1b9c4e),logMcpStderr(_0x345199(0x1b5)),allowedDirectories[_0x345199(0x149)]===0x0&&logMcpStderr('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()['catch'](_0x29011d=>{const _0x3bb42e=a0_0x44b10e;logMcpStderr(_0x3bb42e(0x253),_0x29011d),process['exit'](0x1);});
package/dist/log-utils.js CHANGED
@@ -1 +1 @@
1
- var a1_0x5aa4ad=a1_0x2834;(function(_0x2db7c5,_0x355675){var _0x4525f2=a1_0x2834,_0x2379d1=_0x2db7c5();while(!![]){try{var _0x1d7ce1=-parseInt(_0x4525f2(0x10e))/0x1*(parseInt(_0x4525f2(0x102))/0x2)+-parseInt(_0x4525f2(0x100))/0x3*(-parseInt(_0x4525f2(0x10b))/0x4)+-parseInt(_0x4525f2(0x10a))/0x5+-parseInt(_0x4525f2(0x105))/0x6*(-parseInt(_0x4525f2(0x103))/0x7)+parseInt(_0x4525f2(0x104))/0x8+parseInt(_0x4525f2(0x113))/0x9*(-parseInt(_0x4525f2(0x106))/0xa)+parseInt(_0x4525f2(0x109))/0xb;if(_0x1d7ce1===_0x355675)break;else _0x2379d1['push'](_0x2379d1['shift']());}catch(_0x179d35){_0x2379d1['push'](_0x2379d1['shift']());}}}(a1_0x6443,0xdfead));function a1_0x2834(_0x175660,_0x350d9c){_0x175660=_0x175660-0x100;var _0x64432f=a1_0x6443();var _0x283491=_0x64432f[_0x175660];return _0x283491;}function a1_0x6443(){var _0x3130d3=['2398288LZWjzx','36102IapgnQ','530JhbbCW','macOS','linux','15370795YINqEN','8206025lCiTrf','122116sJLvWG','platform','error','359BlHkzg','Unknown','[os=','darwin','win32','39564CbTsgT','123IlvScZ','Windows','2922XFIfWE','427yrvJwi'];a1_0x6443=function(){return _0x3130d3;};return a1_0x6443();}import a1_0x1f06f0 from'os';export function getOperatingSystemType(_0x1e8282=a1_0x1f06f0[a1_0x5aa4ad(0x10c)]()){var _0x46acb0=a1_0x5aa4ad;switch(_0x1e8282){case _0x46acb0(0x111):return _0x46acb0(0x107);case _0x46acb0(0x112):return _0x46acb0(0x101);case _0x46acb0(0x108):return'Linux';default:return _0x46acb0(0x10f);}}export function formatMcpLogMessage(_0x4d21dd,_0x191a74=a1_0x1f06f0[a1_0x5aa4ad(0x10c)]()){var _0x47d2fc=a1_0x5aa4ad;return _0x47d2fc(0x110)+getOperatingSystemType(_0x191a74)+']\x20'+_0x4d21dd;}export function logMcpStderr(_0x13441f,..._0x24a88c){var _0x3c897c=a1_0x5aa4ad;console[_0x3c897c(0x10d)](formatMcpLogMessage(_0x13441f),..._0x24a88c);}
1
+ var a1_0x353cfc=a1_0x2cc7;function a1_0x23bc(){var _0x27721b=['1076744uhnryp','macOS','Unknown','3DQCYaC','736865CPrruF','528752zSnGOF','platform','linux','[os=','2788792Ocmwnu','9YkCsFP','72496OkGjQW','1018794yaMAGJ','darwin','508348DjNduR','Linux','error','Windows'];a1_0x23bc=function(){return _0x27721b;};return a1_0x23bc();}(function(_0x4fa562,_0x423145){var _0x446b1a=a1_0x2cc7,_0x9565fb=_0x4fa562();while(!![]){try{var _0x3e5b71=parseInt(_0x446b1a(0xc1))/0x1+parseInt(_0x446b1a(0xb2))/0x2*(parseInt(_0x446b1a(0xb9))/0x3)+parseInt(_0x446b1a(0xb6))/0x4+parseInt(_0x446b1a(0xba))/0x5+-parseInt(_0x446b1a(0xc2))/0x6+-parseInt(_0x446b1a(0xbb))/0x7+-parseInt(_0x446b1a(0xbf))/0x8*(parseInt(_0x446b1a(0xc0))/0x9);if(_0x3e5b71===_0x423145)break;else _0x9565fb['push'](_0x9565fb['shift']());}catch(_0x1dee34){_0x9565fb['push'](_0x9565fb['shift']());}}}(a1_0x23bc,0x2472f));function a1_0x2cc7(_0x4f6796,_0x4df9f7){_0x4f6796=_0x4f6796-0xb1;var _0x23bcb5=a1_0x23bc();var _0x2cc7f5=_0x23bcb5[_0x4f6796];return _0x2cc7f5;}import a1_0x5ca8d2 from'os';export function getOperatingSystemType(_0x5af354=a1_0x5ca8d2['platform']()){var _0x19a99b=a1_0x2cc7;switch(_0x5af354){case _0x19a99b(0xb1):return _0x19a99b(0xb7);case'win32':return _0x19a99b(0xb5);case _0x19a99b(0xbd):return _0x19a99b(0xb3);default:return _0x19a99b(0xb8);}}export function formatMcpLogMessage(_0x263e29,_0x19b5a8=a1_0x5ca8d2[a1_0x353cfc(0xbc)]()){var _0xdc577d=a1_0x353cfc;return _0xdc577d(0xbe)+getOperatingSystemType(_0x19b5a8)+']\x20'+_0x263e29;}export function logMcpStderr(_0x459ba6,..._0x21e961){var _0x4b8393=a1_0x353cfc;console[_0x4b8393(0xb4)](formatMcpLogMessage(_0x459ba6),..._0x21e961);}
@@ -1 +1 @@
1
- (function(_0x308b22,_0x2f3b02){const _0x417263=a2_0x2fd1,_0x4bdda8=_0x308b22();while(!![]){try{const _0x5ce7d4=parseInt(_0x417263(0x1f8))/0x1+parseInt(_0x417263(0x1ee))/0x2*(-parseInt(_0x417263(0x1ec))/0x3)+-parseInt(_0x417263(0x1f4))/0x4*(-parseInt(_0x417263(0x1f1))/0x5)+-parseInt(_0x417263(0x1ef))/0x6*(-parseInt(_0x417263(0x1fc))/0x7)+parseInt(_0x417263(0x1fe))/0x8*(parseInt(_0x417263(0x1fb))/0x9)+parseInt(_0x417263(0x1f2))/0xa+-parseInt(_0x417263(0x1ea))/0xb*(parseInt(_0x417263(0x1f3))/0xc);if(_0x5ce7d4===_0x2f3b02)break;else _0x4bdda8['push'](_0x4bdda8['shift']());}catch(_0x5ef2f6){_0x4bdda8['push'](_0x4bdda8['shift']());}}}(a2_0x3d61,0xe0bdf));import a2_0x4cbdc2 from'path';import a2_0x2855d8 from'os';export function convertToWindowsPath(_0x585d65){const _0x2dd9cc=a2_0x2fd1;if(_0x585d65[_0x2dd9cc(0x1f5)](_0x2dd9cc(0x1fa))){const _0x1a1f37=_0x585d65[_0x2dd9cc(0x1f6)](0x5)[_0x2dd9cc(0x1f9)](),_0x24dc39=_0x585d65['slice'](0x6)[_0x2dd9cc(0x1fd)](/\//g,'\x5c');return _0x1a1f37+':'+_0x24dc39;}if(_0x585d65[_0x2dd9cc(0x1ff)](/^\/[a-zA-Z]\//)){const _0x4b86d1=_0x585d65[_0x2dd9cc(0x1f6)](0x1)[_0x2dd9cc(0x1f9)](),_0x5e6561=_0x585d65[_0x2dd9cc(0x1ed)](0x2)[_0x2dd9cc(0x1fd)](/\//g,'\x5c');return _0x4b86d1+':'+_0x5e6561;}if(_0x585d65[_0x2dd9cc(0x1ff)](/^[a-zA-Z]:/))return _0x585d65['replace'](/\//g,'\x5c');return _0x585d65;}function a2_0x2fd1(_0x2a2820,_0x17534c){_0x2a2820=_0x2a2820-0x1e9;const _0x3d6151=a2_0x3d61();let _0x2fd166=_0x3d6151[_0x2a2820];return _0x2fd166;}export function normalizePath(_0x15af15){const _0x3aca7f=a2_0x2fd1;_0x15af15=_0x15af15[_0x3aca7f(0x1eb)]()[_0x3aca7f(0x1fd)](/^["']|["']$/g,'');const _0x21622f=_0x15af15[_0x3aca7f(0x1f5)]('/')&&!_0x15af15[_0x3aca7f(0x1ff)](/^\/mnt\/[a-z]\//i)&&!_0x15af15[_0x3aca7f(0x1ff)](/^\/[a-zA-Z]\//);if(_0x21622f)return _0x15af15['replace'](/\/+/g,'/')[_0x3aca7f(0x1fd)](/\/+$/,'');_0x15af15=convertToWindowsPath(_0x15af15);if(_0x15af15['startsWith']('\x5c\x5c')){let _0x594647=_0x15af15;_0x594647=_0x594647[_0x3aca7f(0x1fd)](/^\\{2,}/,'\x5c\x5c');const _0x50cb92=_0x594647[_0x3aca7f(0x1f7)](0x2)['replace'](/\\\\/g,'\x5c');_0x15af15='\x5c\x5c'+_0x50cb92;}else _0x15af15=_0x15af15[_0x3aca7f(0x1fd)](/\\\\/g,'\x5c');let _0x30a9a8=a2_0x4cbdc2[_0x3aca7f(0x1f0)](_0x15af15);_0x15af15[_0x3aca7f(0x1f5)]('\x5c\x5c')&&!_0x30a9a8[_0x3aca7f(0x1f5)]('\x5c\x5c')&&(_0x30a9a8='\x5c'+_0x30a9a8);if(_0x30a9a8[_0x3aca7f(0x1ff)](/^[a-zA-Z]:/)){let _0x412008=_0x30a9a8[_0x3aca7f(0x1fd)](/\//g,'\x5c');return/^[a-z]:/['test'](_0x412008)&&(_0x412008=_0x412008[_0x3aca7f(0x1f6)](0x0)[_0x3aca7f(0x1f9)]()+_0x412008[_0x3aca7f(0x1ed)](0x1)),_0x412008;}return _0x30a9a8[_0x3aca7f(0x1fd)](/\//g,'\x5c');}export function expandHome(_0x506a24){const _0xb2860e=a2_0x2fd1;if(_0x506a24[_0xb2860e(0x1f5)]('~/')||_0x506a24==='~')return a2_0x4cbdc2['join'](a2_0x2855d8[_0xb2860e(0x1e9)](),_0x506a24[_0xb2860e(0x1ed)](0x1));return _0x506a24;}function a2_0x3d61(){const _0x53af2c=['substring','446759YyyPQW','toUpperCase','/mnt/','54198FeXMFW','203DXBmkS','replace','1088LfEIJN','match','homedir','10464179tFtAII','trim','6hMiDGa','slice','1089326NfrxII','278022yjkpaN','normalize','68230oyscLO','7940900cAPcUe','36uQXzgG','428nDHFvX','startsWith','charAt'];a2_0x3d61=function(){return _0x53af2c;};return a2_0x3d61();}
1
+ function a2_0x37ae(_0x5b36cb,_0xf4681f){_0x5b36cb=_0x5b36cb-0x1ca;const _0x575cc7=a2_0x575c();let _0x37ae60=_0x575cc7[_0x5b36cb];return _0x37ae60;}(function(_0x4abd31,_0x6eafc3){const _0x52feff=a2_0x37ae,_0x305a1b=_0x4abd31();while(!![]){try{const _0x1a2420=parseInt(_0x52feff(0x1d5))/0x1+-parseInt(_0x52feff(0x1de))/0x2+parseInt(_0x52feff(0x1ca))/0x3*(parseInt(_0x52feff(0x1da))/0x4)+-parseInt(_0x52feff(0x1cf))/0x5+-parseInt(_0x52feff(0x1d8))/0x6*(-parseInt(_0x52feff(0x1d4))/0x7)+-parseInt(_0x52feff(0x1db))/0x8+parseInt(_0x52feff(0x1df))/0x9*(parseInt(_0x52feff(0x1d0))/0xa);if(_0x1a2420===_0x6eafc3)break;else _0x305a1b['push'](_0x305a1b['shift']());}catch(_0x2581cf){_0x305a1b['push'](_0x305a1b['shift']());}}}(a2_0x575c,0x2cbd3));import a2_0x522ef3 from'path';import a2_0x8149bd from'os';function a2_0x575c(){const _0xa1ff5c=['962300cuArPL','8740fUoked','/mnt/','charAt','normalize','1050105UkEFJr','59469LexDcs','startsWith','match','12akmTiV','test','4YePHEB','2690416xNOlGm','toUpperCase','homedir','687506dpwcim','4743DKtHet','707007VGuEhL','trim','slice','join','replace'];a2_0x575c=function(){return _0xa1ff5c;};return a2_0x575c();}export function convertToWindowsPath(_0x1edd51){const _0x59892c=a2_0x37ae;if(_0x1edd51['startsWith'](_0x59892c(0x1d1))){const _0x5c2a7e=_0x1edd51['charAt'](0x5)[_0x59892c(0x1dc)](),_0x5c0426=_0x1edd51['slice'](0x6)[_0x59892c(0x1ce)](/\//g,'\x5c');return _0x5c2a7e+':'+_0x5c0426;}if(_0x1edd51[_0x59892c(0x1d7)](/^\/[a-zA-Z]\//)){const _0x7452bc=_0x1edd51[_0x59892c(0x1d2)](0x1)[_0x59892c(0x1dc)](),_0x34e7e9=_0x1edd51[_0x59892c(0x1cc)](0x2)[_0x59892c(0x1ce)](/\//g,'\x5c');return _0x7452bc+':'+_0x34e7e9;}if(_0x1edd51[_0x59892c(0x1d7)](/^[a-zA-Z]:/))return _0x1edd51[_0x59892c(0x1ce)](/\//g,'\x5c');return _0x1edd51;}export function normalizePath(_0x288999){const _0x391ee5=a2_0x37ae;_0x288999=_0x288999[_0x391ee5(0x1cb)]()[_0x391ee5(0x1ce)](/^["']|["']$/g,'');const _0x38d387=_0x288999[_0x391ee5(0x1d6)]('/')&&!_0x288999[_0x391ee5(0x1d7)](/^\/mnt\/[a-z]\//i)&&!_0x288999[_0x391ee5(0x1d7)](/^\/[a-zA-Z]\//);if(_0x38d387)return _0x288999[_0x391ee5(0x1ce)](/\/+/g,'/')[_0x391ee5(0x1ce)](/\/+$/,'');_0x288999=convertToWindowsPath(_0x288999);if(_0x288999['startsWith']('\x5c\x5c')){let _0x14eb5c=_0x288999;_0x14eb5c=_0x14eb5c[_0x391ee5(0x1ce)](/^\\{2,}/,'\x5c\x5c');const _0x180c9f=_0x14eb5c['substring'](0x2)['replace'](/\\\\/g,'\x5c');_0x288999='\x5c\x5c'+_0x180c9f;}else _0x288999=_0x288999[_0x391ee5(0x1ce)](/\\\\/g,'\x5c');let _0x136e9f=a2_0x522ef3[_0x391ee5(0x1d3)](_0x288999);_0x288999[_0x391ee5(0x1d6)]('\x5c\x5c')&&!_0x136e9f[_0x391ee5(0x1d6)]('\x5c\x5c')&&(_0x136e9f='\x5c'+_0x136e9f);if(_0x136e9f['match'](/^[a-zA-Z]:/)){let _0x119c10=_0x136e9f['replace'](/\//g,'\x5c');return/^[a-z]:/[_0x391ee5(0x1d9)](_0x119c10)&&(_0x119c10=_0x119c10[_0x391ee5(0x1d2)](0x0)[_0x391ee5(0x1dc)]()+_0x119c10['slice'](0x1)),_0x119c10;}return _0x136e9f[_0x391ee5(0x1ce)](/\//g,'\x5c');}export function expandHome(_0x2a4f6e){const _0x315463=a2_0x37ae;if(_0x2a4f6e[_0x315463(0x1d6)]('~/')||_0x2a4f6e==='~')return a2_0x522ef3[_0x315463(0x1cd)](a2_0x8149bd[_0x315463(0x1dd)](),_0x2a4f6e[_0x315463(0x1cc)](0x1));return _0x2a4f6e;}
@@ -1 +1 @@
1
- function a3_0x2fa3(_0x3636f1,_0x425757){_0x3636f1=_0x3636f1-0x125;const _0xe024be=a3_0xe024();let _0x2fa319=_0xe024be[_0x3636f1];return _0x2fa319;}function a3_0xe024(){const _0x41d64b=['length','4214884dMBZyy','3gBSlid','7180640OyfBAZ','isAbsolute','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','startsWith','159828yBDUFg','3924676qGVAqg','string','normalize','resolve','267863fWFeix','4otTodz','697128mPbndt','10TCKjNS','1397PJgChE','122778zRXIbM','sep','some','56gifKZm','isArray','includes'];a3_0xe024=function(){return _0x41d64b;};return a3_0xe024();}(function(_0xb5e01a,_0x8dd70b){const _0x587e53=a3_0x2fa3,_0x4d550c=_0xb5e01a();while(!![]){try{const _0x44f5a0=-parseInt(_0x587e53(0x12e))/0x1*(parseInt(_0x587e53(0x12f))/0x2)+parseInt(_0x587e53(0x13b))/0x3*(parseInt(_0x587e53(0x13a))/0x4)+-parseInt(_0x587e53(0x131))/0x5*(parseInt(_0x587e53(0x130))/0x6)+-parseInt(_0x587e53(0x12a))/0x7+-parseInt(_0x587e53(0x136))/0x8*(parseInt(_0x587e53(0x133))/0x9)+-parseInt(_0x587e53(0x125))/0xa+parseInt(_0x587e53(0x132))/0xb*(parseInt(_0x587e53(0x129))/0xc);if(_0x44f5a0===_0x8dd70b)break;else _0x4d550c['push'](_0x4d550c['shift']());}catch(_0x709d4f){_0x4d550c['push'](_0x4d550c['shift']());}}}(a3_0xe024,0x9331a));import a3_0xa826e5 from'path';export function isPathWithinAllowedDirectories(_0x24dff8,_0x2c4081){const _0xe42b89=a3_0x2fa3;if(typeof _0x24dff8!==_0xe42b89(0x12b)||!Array[_0xe42b89(0x137)](_0x2c4081))return![];if(!_0x24dff8||_0x2c4081[_0xe42b89(0x139)]===0x0)return![];if(_0x24dff8['includes']('\x00'))return![];let _0x25f019;try{_0x25f019=a3_0xa826e5[_0xe42b89(0x12d)](a3_0xa826e5[_0xe42b89(0x12c)](_0x24dff8));}catch{return![];}if(!a3_0xa826e5[_0xe42b89(0x126)](_0x25f019))throw new Error('Path\x20must\x20be\x20absolute\x20after\x20normalization');return _0x2c4081[_0xe42b89(0x135)](_0x89d0d1=>{const _0x40ccb0=_0xe42b89;if(typeof _0x89d0d1!==_0x40ccb0(0x12b)||!_0x89d0d1)return![];if(_0x89d0d1[_0x40ccb0(0x138)]('\x00'))return![];let _0x28b5cc;try{_0x28b5cc=a3_0xa826e5[_0x40ccb0(0x12d)](a3_0xa826e5[_0x40ccb0(0x12c)](_0x89d0d1));}catch{return![];}if(!a3_0xa826e5['isAbsolute'](_0x28b5cc))throw new Error(_0x40ccb0(0x127));if(_0x25f019===_0x28b5cc)return!![];if(_0x28b5cc===a3_0xa826e5[_0x40ccb0(0x134)])return _0x25f019[_0x40ccb0(0x128)](a3_0xa826e5[_0x40ccb0(0x134)]);return _0x25f019[_0x40ccb0(0x128)](_0x28b5cc+a3_0xa826e5[_0x40ccb0(0x134)]);});}
1
+ (function(_0x7f7053,_0x4498c5){const _0x683ef4=a3_0x43fd,_0x3d2020=_0x7f7053();while(!![]){try{const _0x17d8af=parseInt(_0x683ef4(0x12a))/0x1*(parseInt(_0x683ef4(0x125))/0x2)+parseInt(_0x683ef4(0x124))/0x3*(-parseInt(_0x683ef4(0x137))/0x4)+-parseInt(_0x683ef4(0x139))/0x5+parseInt(_0x683ef4(0x12d))/0x6+parseInt(_0x683ef4(0x12b))/0x7*(-parseInt(_0x683ef4(0x12e))/0x8)+parseInt(_0x683ef4(0x126))/0x9+-parseInt(_0x683ef4(0x138))/0xa*(-parseInt(_0x683ef4(0x128))/0xb);if(_0x17d8af===_0x4498c5)break;else _0x3d2020['push'](_0x3d2020['shift']());}catch(_0x2d84bf){_0x3d2020['push'](_0x3d2020['shift']());}}}(a3_0x2814,0x415e9));function a3_0x43fd(_0x5d99d8,_0x525838){_0x5d99d8=_0x5d99d8-0x124;const _0x2814be=a3_0x2814();let _0x43fdfe=_0x2814be[_0x5d99d8];return _0x43fdfe;}function a3_0x2814(){const _0x203b13=['isAbsolute','961luBDXG','28cOVRiN','resolve','2338434azesec','508512wCagGq','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','startsWith','some','sep','normalize','string','length','includes','20436sqfffm','688780qaJzpB','634745yqdSTN','Path\x20must\x20be\x20absolute\x20after\x20normalization','186lQDWmL','290XJcFvv','2069982muaEyN','isArray','33Vpdtif'];a3_0x2814=function(){return _0x203b13;};return a3_0x2814();}import a3_0x313700 from'path';export function isPathWithinAllowedDirectories(_0x4bce28,_0x33d9fb){const _0x16300b=a3_0x43fd;if(typeof _0x4bce28!==_0x16300b(0x134)||!Array[_0x16300b(0x127)](_0x33d9fb))return![];if(!_0x4bce28||_0x33d9fb[_0x16300b(0x135)]===0x0)return![];if(_0x4bce28['includes']('\x00'))return![];let _0x93d548;try{_0x93d548=a3_0x313700[_0x16300b(0x12c)](a3_0x313700['normalize'](_0x4bce28));}catch{return![];}if(!a3_0x313700[_0x16300b(0x129)](_0x93d548))throw new Error(_0x16300b(0x13a));return _0x33d9fb[_0x16300b(0x131)](_0x3eac29=>{const _0x4ac0ed=_0x16300b;if(typeof _0x3eac29!==_0x4ac0ed(0x134)||!_0x3eac29)return![];if(_0x3eac29[_0x4ac0ed(0x136)]('\x00'))return![];let _0xfa5e2d;try{_0xfa5e2d=a3_0x313700[_0x4ac0ed(0x12c)](a3_0x313700[_0x4ac0ed(0x133)](_0x3eac29));}catch{return![];}if(!a3_0x313700['isAbsolute'](_0xfa5e2d))throw new Error(_0x4ac0ed(0x12f));if(_0x93d548===_0xfa5e2d)return!![];if(_0xfa5e2d===a3_0x313700[_0x4ac0ed(0x132)])return _0x93d548[_0x4ac0ed(0x130)](a3_0x313700['sep']);return _0x93d548[_0x4ac0ed(0x130)](_0xfa5e2d+a3_0x313700[_0x4ac0ed(0x132)]);});}
@@ -1 +1 @@
1
- (function(_0x4aeb0f,_0x132fe5){const _0x1ed889=a4_0x2fdf,_0x3ef995=_0x4aeb0f();while(!![]){try{const _0x1c2b01=parseInt(_0x1ed889(0x1c8))/0x1*(-parseInt(_0x1ed889(0x1c2))/0x2)+-parseInt(_0x1ed889(0x1bc))/0x3*(parseInt(_0x1ed889(0x1c5))/0x4)+-parseInt(_0x1ed889(0x1c1))/0x5+-parseInt(_0x1ed889(0x1c0))/0x6+-parseInt(_0x1ed889(0x1c4))/0x7+parseInt(_0x1ed889(0x1be))/0x8+-parseInt(_0x1ed889(0x1c6))/0x9*(-parseInt(_0x1ed889(0x1b5))/0xa);if(_0x1c2b01===_0x132fe5)break;else _0x3ef995['push'](_0x3ef995['shift']());}catch(_0x5accd1){_0x3ef995['push'](_0x3ef995['shift']());}}}(a4_0x14ed,0x7def1));import{promises as a4_0x1f086a}from'fs';import a4_0x2bc436 from'path';import a4_0x36f355 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';function a4_0x14ed(){const _0x1f35a1=['startsWith','1633208vkASZY','homedir','6182142nWvteY','1944835EGaSXp','18lwAfkQ','invalid\x20path\x20or\x20inaccessible','6295254gPvILP','1688cvmtnB','18684ndTXRP','isDirectory','24826ipXrma','push','join','Skipping\x20','stat','file://','16700zKgtfa','resolve','realpath','non-directory\x20root','slice','Skipping\x20invalid\x20directory:\x20','uri','4359RflLsH'];a4_0x14ed=function(){return _0x1f35a1;};return a4_0x14ed();}async function parseRootUri(_0x162534){const _0x177a30=a4_0x2fdf;try{const _0x5c35b8=_0x162534[_0x177a30(0x1bd)](_0x177a30(0x1b4))?_0x162534[_0x177a30(0x1b9)](0x7):_0x162534,_0x1cb32b=_0x5c35b8[_0x177a30(0x1bd)]('~/')||_0x5c35b8==='~'?a4_0x2bc436[_0x177a30(0x1b1)](a4_0x36f355[_0x177a30(0x1bf)](),_0x5c35b8[_0x177a30(0x1b9)](0x1)):_0x5c35b8,_0x308353=a4_0x2bc436[_0x177a30(0x1b6)](_0x1cb32b),_0x4b457e=await a4_0x1f086a[_0x177a30(0x1b7)](_0x308353);return normalizePath(_0x4b457e);}catch{return null;}}function a4_0x2fdf(_0x594afb,_0x496a23){_0x594afb=_0x594afb-0x1b1;const _0x14ed6a=a4_0x14ed();let _0x2fdfa8=_0x14ed6a[_0x594afb];return _0x2fdfa8;}function formatDirectoryError(_0x50692e,_0x2eacdc,_0x3358c7){const _0x527a45=a4_0x2fdf;if(_0x3358c7)return _0x527a45(0x1b2)+_0x3358c7+':\x20'+_0x50692e;const _0x6b13b3=_0x2eacdc instanceof Error?_0x2eacdc['message']:String(_0x2eacdc);return _0x527a45(0x1ba)+_0x50692e+'\x20due\x20to\x20error:\x20'+_0x6b13b3;}export async function getValidRootDirectories(_0x17537e){const _0x363093=a4_0x2fdf,_0x2f7267=[];for(const _0x301d67 of _0x17537e){const _0x1e1897=await parseRootUri(_0x301d67['uri']);if(!_0x1e1897){logMcpStderr(formatDirectoryError(_0x301d67[_0x363093(0x1bb)],undefined,_0x363093(0x1c3)));continue;}try{const _0x98aab1=await a4_0x1f086a[_0x363093(0x1b3)](_0x1e1897);_0x98aab1[_0x363093(0x1c7)]()?_0x2f7267[_0x363093(0x1c9)](_0x1e1897):logMcpStderr(formatDirectoryError(_0x1e1897,undefined,_0x363093(0x1b8)));}catch(_0x444c7b){logMcpStderr(formatDirectoryError(_0x1e1897,_0x444c7b));}}return _0x2f7267;}
1
+ (function(_0x127e61,_0xa42819){const _0x57f39c=a4_0x1569,_0x3831ca=_0x127e61();while(!![]){try{const _0x85e98e=parseInt(_0x57f39c(0x163))/0x1+parseInt(_0x57f39c(0x15f))/0x2+-parseInt(_0x57f39c(0x150))/0x3+-parseInt(_0x57f39c(0x159))/0x4+-parseInt(_0x57f39c(0x15e))/0x5*(parseInt(_0x57f39c(0x151))/0x6)+-parseInt(_0x57f39c(0x158))/0x7+parseInt(_0x57f39c(0x156))/0x8;if(_0x85e98e===_0xa42819)break;else _0x3831ca['push'](_0x3831ca['shift']());}catch(_0x43fd80){_0x3831ca['push'](_0x3831ca['shift']());}}}(a4_0xe637,0x69c2b));function a4_0xe637(){const _0x5e16d5=['1354914WwQZhO','non-directory\x20root','\x20due\x20to\x20error:\x20','slice','278925PoprJU','uri','isDirectory','homedir','2591286hdHkUv','63174WIaaqG','push','Skipping\x20','join','resolve','9463136vKAgxU','startsWith','361935KLkIZo','1056648xPtawC','message','stat','file://','realpath','250MHkADQ'];a4_0xe637=function(){return _0x5e16d5;};return a4_0xe637();}import{promises as a4_0x489e23}from'fs';import a4_0x58ddc3 from'path';import a4_0x4266ee from'os';import{normalizePath}from'./path-utils.js';function a4_0x1569(_0x303477,_0x358a6c){_0x303477=_0x303477-0x150;const _0xe637df=a4_0xe637();let _0x156907=_0xe637df[_0x303477];return _0x156907;}import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x3709d3){const _0x35744e=a4_0x1569;try{const _0x5ede21=_0x3709d3[_0x35744e(0x157)](_0x35744e(0x15c))?_0x3709d3[_0x35744e(0x162)](0x7):_0x3709d3,_0x4493a9=_0x5ede21[_0x35744e(0x157)]('~/')||_0x5ede21==='~'?a4_0x58ddc3[_0x35744e(0x154)](a4_0x4266ee[_0x35744e(0x166)](),_0x5ede21[_0x35744e(0x162)](0x1)):_0x5ede21,_0x23000f=a4_0x58ddc3[_0x35744e(0x155)](_0x4493a9),_0x372f66=await a4_0x489e23[_0x35744e(0x15d)](_0x23000f);return normalizePath(_0x372f66);}catch{return null;}}function formatDirectoryError(_0x5e2ddc,_0x36d05e,_0x467016){const _0xbbcc19=a4_0x1569;if(_0x467016)return _0xbbcc19(0x153)+_0x467016+':\x20'+_0x5e2ddc;const _0x374de9=_0x36d05e instanceof Error?_0x36d05e[_0xbbcc19(0x15a)]:String(_0x36d05e);return'Skipping\x20invalid\x20directory:\x20'+_0x5e2ddc+_0xbbcc19(0x161)+_0x374de9;}export async function getValidRootDirectories(_0x3ee3e4){const _0x5aa931=a4_0x1569,_0x4cdff9=[];for(const _0x2008a4 of _0x3ee3e4){const _0x3e490d=await parseRootUri(_0x2008a4[_0x5aa931(0x164)]);if(!_0x3e490d){logMcpStderr(formatDirectoryError(_0x2008a4[_0x5aa931(0x164)],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0x3eb90f=await a4_0x489e23[_0x5aa931(0x15b)](_0x3e490d);_0x3eb90f[_0x5aa931(0x165)]()?_0x4cdff9[_0x5aa931(0x152)](_0x3e490d):logMcpStderr(formatDirectoryError(_0x3e490d,undefined,_0x5aa931(0x160)));}catch(_0xa42cc3){logMcpStderr(formatDirectoryError(_0x3e490d,_0xa42cc3));}}return _0x4cdff9;}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morphllm/morphmcp",
3
- "version": "0.8.140",
3
+ "version": "0.8.141",
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)",