@morphllm/morphmcp 0.8.131 → 0.8.132

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_0x444965=a0_0x2930;(function(_0xe86024,_0x1f8e2a){const _0x40ac54=a0_0x2930,_0x5db14f=_0xe86024();while(!![]){try{const _0x486139=-parseInt(_0x40ac54(0x175))/0x1*(-parseInt(_0x40ac54(0xdf))/0x2)+parseInt(_0x40ac54(0xe9))/0x3+-parseInt(_0x40ac54(0x179))/0x4*(parseInt(_0x40ac54(0xfc))/0x5)+parseInt(_0x40ac54(0x12c))/0x6*(parseInt(_0x40ac54(0xa1))/0x7)+parseInt(_0x40ac54(0x174))/0x8*(parseInt(_0x40ac54(0xf5))/0x9)+parseInt(_0x40ac54(0x182))/0xa+-parseInt(_0x40ac54(0xbb))/0xb*(parseInt(_0x40ac54(0x101))/0xc);if(_0x486139===_0x1f8e2a)break;else _0x5db14f['push'](_0x5db14f['shift']());}catch(_0x25cbbd){_0x5db14f['push'](_0x5db14f['shift']());}}}(a0_0x47b8,0xe0d50));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_0x15f2b5 from'fs/promises';import a0_0x1f560b from'path';import a0_0x342a8b 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_0x2ab830 from'axios';function fixPathRepetition(_0x5296ec){const _0x346309=a0_0x2930,_0x21ec54=_0x5296ec[_0x346309(0xa3)](a0_0x1f560b[_0x346309(0xee)])[_0x346309(0x142)](Boolean);if(_0x21ec54['length']<0x2)return null;for(let _0x349f64=Math[_0x346309(0x170)](_0x21ec54[_0x346309(0xa7)]/0x2);_0x349f64>=0x1;_0x349f64--){for(let _0x42d8d1=0x0;_0x42d8d1<=_0x21ec54['length']-0x2*_0x349f64;_0x42d8d1++){const _0x3be415=_0x21ec54[_0x346309(0x151)](_0x42d8d1,_0x42d8d1+_0x349f64),_0x1c597e=_0x21ec54['slice'](_0x42d8d1+_0x349f64,_0x42d8d1+0x2*_0x349f64);if(_0x3be415[_0x346309(0xdc)]((_0x2da36e,_0x2261b7)=>_0x2da36e===_0x1c597e[_0x2261b7])){const _0x5694aa=[..._0x21ec54['slice'](0x0,_0x42d8d1),..._0x21ec54[_0x346309(0x151)](_0x42d8d1+_0x349f64)];return a0_0x1f560b['sep']+_0x5694aa['join'](a0_0x1f560b[_0x346309(0xee)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x30b182=a0_0x2930;try{const _0x1b313f=require(_0x30b182(0x164));return _0x1b313f['version']??_0x30b182(0xe8);}catch(_0x1d1d2d){return logMcpStderr(_0x30b182(0x15e),_0x1d1d2d),_0x30b182(0xe8);}}function printHelp(){const _0x169ee2=a0_0x2930;console[_0x169ee2(0xea)](_0x169ee2(0x14a)+getPackageVersion()),console[_0x169ee2(0xea)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0x169ee2(0xea)](_0x169ee2(0x88)),console['log']('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x169ee2(0xea)](_0x169ee2(0x107)),console[_0x169ee2(0xea)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console['log'](_0x169ee2(0xde)),console[_0x169ee2(0xea)](_0x169ee2(0xd5)),console['log']('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process['argv'][a0_0x444965(0x151)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set([a0_0x444965(0x122),'-h']);cliArgs[a0_0x444965(0x109)](_0x74bba0=>VERSION_FLAGS[a0_0x444965(0x16e)](_0x74bba0))&&(console['log'](a0_0x444965(0x14a)+getPackageVersion()),process[a0_0x444965(0x12e)](0x0));cliArgs['some'](_0x476688=>HELP_FLAGS['has'](_0x476688))&&(printHelp(),process[a0_0x444965(0x12e)](0x0));function getCliArg(_0x202a5a){const _0x5ed05d=a0_0x444965;for(let _0x2b2f33=0x0;_0x2b2f33<cliArgs[_0x5ed05d(0xa7)];_0x2b2f33++){const _0x316e11=cliArgs[_0x2b2f33];if(_0x316e11[_0x5ed05d(0xbc)]('--'+_0x202a5a+'='))return _0x316e11[_0x5ed05d(0x151)](('--'+_0x202a5a+'=')[_0x5ed05d(0xa7)]);if(_0x316e11==='--'+_0x202a5a&&_0x2b2f33+0x1<cliArgs[_0x5ed05d(0xa7)])return cliArgs[_0x2b2f33+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x444965(0xa7)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x444965(0x16e)](arg)||HELP_FLAGS[a0_0x444965(0x16e)](arg))continue;if(arg[a0_0x444965(0xbc)](a0_0x444965(0xf8)))continue;if(arg==='--api-key'){i++;continue;}args[a0_0x444965(0xca)](arg);}const WORKSPACE_ROOT=process[a0_0x444965(0xa8)][a0_0x444965(0xe2)]||process[a0_0x444965(0xa8)][a0_0x444965(0x7f)]||process[a0_0x444965(0xd1)](),ENABLE_WORKSPACE_MODE=process[a0_0x444965(0xa8)]['ENABLE_WORKSPACE_MODE']!==a0_0x444965(0x168),MORPH_API_KEY=getCliArg('api-key')??process[a0_0x444965(0xa8)][a0_0x444965(0x184)],MORPH_API_URL=process[a0_0x444965(0xa8)][a0_0x444965(0x9e)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x444965(0xa8)][a0_0x444965(0x90)]?parseInt(process['env']['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x444965(0x125),'codebase_search','github_codebase_search']),DISABLED_TOOLS=process[a0_0x444965(0xa8)]['DISABLED_TOOLS']?new Set(process['env'][a0_0x444965(0x108)][a0_0x444965(0xa3)](',')[a0_0x444965(0x94)](_0x2597af=>_0x2597af[a0_0x444965(0x185)]())['filter'](_0x388ddb=>_0x388ddb[a0_0x444965(0xa7)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0x444965(0xf4)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x444965(0x16e)](tool)&&console[a0_0x444965(0x18a)](a0_0x444965(0xb4)+tool+'\x22.\x20Known\x20tools:\x20'+[...KNOWN_TOOL_NAMES]['join'](',\x20'));}console[a0_0x444965(0x18a)](a0_0x444965(0xb7)+[...DISABLED_TOOLS]['join'](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x444965(0xbc)](a0_0x444965(0xac))&&!MORPH_API_KEY['startsWith'](a0_0x444965(0xa5))&&logMcpStderr(a0_0x444965(0x111));async function reportMorphError(_0x1aac6a){const _0x81438d=a0_0x444965;try{await a0_0x2ab830[_0x81438d(0xbf)]('https://morphllm.com/api/error-report',{..._0x1aac6a,'timestamp':new Date()[_0x81438d(0x171)](),'source':_0x1aac6a['source']||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x1aac6a[_0x81438d(0xd9)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x81438d(0x163),'Authorization':_0x81438d(0x134)+MORPH_API_KEY}});}catch{}}args['length']===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x444965(0xec)),logMcpStderr(a0_0x444965(0x14c)),logMcpStderr(a0_0x444965(0x118)),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr(a0_0x444965(0x147)),logMcpStderr(a0_0x444965(0x15f)));function normalizePath(_0x54ea06){const _0x46e948=a0_0x444965;return a0_0x1f560b[_0x46e948(0x187)](_0x54ea06);}function a0_0x2930(_0x3a00cf,_0x3b673d){_0x3a00cf=_0x3a00cf-0x7f;const _0x47b805=a0_0x47b8();let _0x29307a=_0x47b805[_0x3a00cf];return _0x29307a;}function expandHome(_0x1908a2){const _0x15db7e=a0_0x444965;if(_0x1908a2[_0x15db7e(0xbc)]('~/')||_0x1908a2==='~')return a0_0x1f560b[_0x15db7e(0x115)](a0_0x342a8b[_0x15db7e(0x17b)](),_0x1908a2[_0x15db7e(0x151)](0x1));return _0x1908a2;}let allowedDirectories=await Promise[a0_0x444965(0xe5)](args[a0_0x444965(0x94)](async _0x3c5860=>{const _0x31e398=a0_0x444965,_0x1467b0=expandHome(_0x3c5860),_0x4cb00c=a0_0x1f560b[_0x31e398(0x97)](_0x1467b0);try{const _0x1ad698=await a0_0x15f2b5[_0x31e398(0x181)](_0x4cb00c);return normalizePath(_0x1ad698);}catch(_0xfeefc5){return normalizePath(_0x4cb00c);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x444965(0xa7)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x444965(0xca)](workspaceDir),logMcpStderr(a0_0x444965(0x173)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x37e0ad){logMcpStderr(a0_0x444965(0xc4)+a0_0x37e0ad);}async function detectWorkspaceRoot(_0x349d06){const _0x17b8f4=a0_0x444965;let _0x166577=a0_0x1f560b[_0x17b8f4(0x97)](_0x349d06);const _0x5d3dcf=[_0x17b8f4(0x96),_0x17b8f4(0xc9),_0x17b8f4(0x16c),_0x17b8f4(0x12d),_0x17b8f4(0x140),'go.mod','.cursor',_0x17b8f4(0x131),'composer.json'];while(_0x166577!==a0_0x1f560b[_0x17b8f4(0x135)](_0x166577)){for(const _0x275291 of _0x5d3dcf){const _0x1bf1db=a0_0x1f560b[_0x17b8f4(0x115)](_0x166577,_0x275291);try{return await a0_0x15f2b5[_0x17b8f4(0xb9)](_0x1bf1db),normalizePath(_0x166577);}catch{}}_0x166577=a0_0x1f560b[_0x17b8f4(0x135)](_0x166577);}return normalizePath(_0x349d06);}await Promise[a0_0x444965(0xe5)](args[a0_0x444965(0x94)](async _0x224dcd=>{const _0x3ea8a9=a0_0x444965;try{const _0x27f723=await a0_0x15f2b5[_0x3ea8a9(0x99)](expandHome(_0x224dcd));!_0x27f723[_0x3ea8a9(0xff)]()&&(logMcpStderr('Error:\x20'+_0x224dcd+_0x3ea8a9(0xb2)),process['exit'](0x1));}catch(_0xfc499c){logMcpStderr(_0x3ea8a9(0x183)+_0x224dcd+':',_0xfc499c),process['exit'](0x1);}}));async function validatePath(_0x3655dc){const _0x51b53e=a0_0x444965,_0x2befce=expandHome(_0x3655dc),_0x56133b=a0_0x1f560b[_0x51b53e(0x97)](_0x2befce);try{const _0x5b96a2=await a0_0x15f2b5[_0x51b53e(0x181)](_0x56133b);return _0x5b96a2;}catch(_0x2d70ae){if(_0x2d70ae[_0x51b53e(0xa0)]===_0x51b53e(0xed)){const _0x5a7b21=a0_0x1f560b[_0x51b53e(0x135)](_0x56133b);try{const _0x16ff44=await a0_0x15f2b5[_0x51b53e(0x181)](_0x5a7b21);return a0_0x1f560b[_0x51b53e(0x115)](_0x16ff44,a0_0x1f560b[_0x51b53e(0xf6)](_0x56133b));}catch{throw new Error(_0x51b53e(0x161)+_0x5a7b21);}}throw _0x2d70ae;}}const MorphEditFileArgsSchema=z['object']({'path':z['string'](),'code_edit':z[a0_0x444965(0xfe)]()[a0_0x444965(0xef)]('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z[a0_0x444965(0xfe)]()[a0_0x444965(0xef)](a0_0x444965(0x86)),'dryRun':z[a0_0x444965(0x127)]()[a0_0x444965(0x129)](![])['describe'](a0_0x444965(0xd3))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x444965(0x17e),WarpGrepArgsSchema=z[a0_0x444965(0x16f)]({'search_string':z['string']()[a0_0x444965(0xef)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z['string']()[a0_0x444965(0xef)]('The\x20absolute\x20path\x20of\x20the\x20folder\x20where\x20the\x20search\x20should\x20be\x20performed.\x20In\x20multi-repo\x20workspaces,\x20you\x20have\x20to\x20specify\x20a\x20subfolder\x20where\x20the\x20search\x20should\x20be\x20performed,\x20to\x20avoid\x20searching\x20across\x20all\x20repos'),'search_type':z['enum'](['default',a0_0x444965(0xaa)])[a0_0x444965(0x113)]()[a0_0x444965(0xef)]('Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.')}),WarpGrepGitHubArgsSchema=z[a0_0x444965(0x16f)]({'search_string':z[a0_0x444965(0xfe)]()[a0_0x444965(0xef)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x444965(0xfe)]()[a0_0x444965(0x113)]()['describe'](a0_0x444965(0x11d)),'owner_repo':z['string']()[a0_0x444965(0x113)]()['describe'](a0_0x444965(0x98)),'branch':z[a0_0x444965(0xfe)]()['optional']()['describe'](a0_0x444965(0x14b))}),CodebaseSearchArgsSchema=z[a0_0x444965(0x16f)]({'query':z[a0_0x444965(0xfe)]()[a0_0x444965(0xef)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x444965(0xfe)]()[a0_0x444965(0xef)](a0_0x444965(0x8b)),'branch':z['string']()['optional']()['describe']('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x444965(0xfe)]()['optional']()[a0_0x444965(0xef)](a0_0x444965(0xd2)),'targetDirectories':z[a0_0x444965(0x10e)](z[a0_0x444965(0xfe)]())[a0_0x444965(0x129)]([])[a0_0x444965(0xef)](a0_0x444965(0x11f)),'limit':z[a0_0x444965(0xda)]()[a0_0x444965(0x113)]()[a0_0x444965(0x129)](0xa)[a0_0x444965(0xef)](a0_0x444965(0xcc))}),server=new Server({'name':a0_0x444965(0xc5),'version':a0_0x444965(0x12a)},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x292c3e=a0_0x444965,_0x16f0b4=[{'name':_0x292c3e(0x125),'description':_0x292c3e(0x11a)+'⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a'+'🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a'+_0x292c3e(0xb6)+_0x292c3e(0x169)+_0x292c3e(0x14f)+_0x292c3e(0x177)+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+_0x292c3e(0x8e)+_0x292c3e(0x8d)+'ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a'+_0x292c3e(0x148)+_0x292c3e(0xeb)+_0x292c3e(0x13d)+_0x292c3e(0x85)+'Rules:\x0a'+_0x292c3e(0xe7)+_0x292c3e(0x144)+_0x292c3e(0x103)+_0x292c3e(0x10f)+_0x292c3e(0x13b)+_0x292c3e(0x8f)+_0x292c3e(0x124),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x292c3e(0xa9),'description':_0x292c3e(0x119)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x292c3e(0xf9)+'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':!![]}],_0x15b6e3=_0x16f0b4[_0x292c3e(0x142)](_0x22b755=>{const _0x3a3a6b=_0x292c3e;if(DISABLED_TOOLS[_0x3a3a6b(0x16e)](_0x22b755[_0x3a3a6b(0x13a)]))return console[_0x3a3a6b(0x18a)](_0x3a3a6b(0xdb)+_0x22b755[_0x3a3a6b(0x13a)]+_0x3a3a6b(0x110)),![];if(_0x3a3a6b(0x116)in _0x22b755&&_0x22b755[_0x3a3a6b(0x116)]&&!MORPH_API_KEY)return logMcpStderr('Warning:\x20'+_0x22b755['name']+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x15b6e3['map'](_0x4fc509=>({'name':_0x4fc509[_0x292c3e(0x13a)],'description':_0x4fc509[_0x292c3e(0x8a)],'inputSchema':_0x4fc509[_0x292c3e(0x178)]}))};}),server[a0_0x444965(0x160)](CallToolRequestSchema,async _0x102dcb=>{const _0x500b25=a0_0x444965,{name:_0x2f223f,arguments:_0x27ba84}=_0x102dcb[_0x500b25(0xc6)];try{if(DISABLED_TOOLS['has'](_0x2f223f))throw new Error(_0x500b25(0xd0)+_0x2f223f+'\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable');switch(_0x2f223f){case _0x500b25(0x125):{const _0x2011e0=MorphEditFileArgsSchema[_0x500b25(0x12b)](_0x27ba84);if(!_0x2011e0[_0x500b25(0x17f)])throw new Error(_0x500b25(0xbd)+_0x2011e0[_0x500b25(0x18a)]);const _0x28ce79=await validatePath(_0x2011e0[_0x500b25(0x128)][_0x500b25(0x159)]);let _0x2be91d=null,_0x40a3e4=!![],_0x113164=null;try{_0x2be91d=await a0_0x15f2b5['readFile'](_0x28ce79,'utf-8');}catch(_0x2e81ee){const _0x40e4a0=_0x2e81ee[_0x500b25(0xa0)];_0x40e4a0===_0x500b25(0xed)?(_0x40a3e4=![],_0x2be91d=''):(_0x113164=_0x500b25(0x180)+(_0x40e4a0||_0x500b25(0xe8))+_0x500b25(0x156)+(_0x2e81ee instanceof Error?_0x2e81ee[_0x500b25(0xd7)]:String(_0x2e81ee)),logMcpStderr(_0x500b25(0xf0)+_0x113164));}let _0x4eaab4;try{const _0x519f70=MORPH_API_KEY;if(!_0x519f70)throw new Error(_0x500b25(0x112));const _0x4af24a=a0_0x1f560b['dirname'](_0x28ce79),_0x38987c=a0_0x1f560b[_0x500b25(0xf6)](_0x28ce79),_0x16df74=await executeEditFile({'target_filepath':_0x38987c,'code_edit':_0x2011e0[_0x500b25(0x128)][_0x500b25(0x14d)],'instructions':_0x2011e0[_0x500b25(0x128)][_0x500b25(0xad)]},{'morphApiKey':_0x519f70,'morphApiUrl':MORPH_API_URL,'baseDir':_0x4af24a,'autoWrite':!_0x2011e0[_0x500b25(0x128)][_0x500b25(0x13f)],'generateUdiff':![],'debug':![]});_0x4eaab4=_0x16df74[_0x500b25(0x8c)];if(!_0x16df74[_0x500b25(0x17f)])throw new Error(_0x16df74[_0x500b25(0x18a)]||_0x500b25(0xc7));const _0xdefb26=_0x16df74[_0x500b25(0xc2)],_0xf04faf=_0x500b25(0x81)+_0xdefb26[_0x500b25(0x9a)]+',\x20removed\x20'+_0xdefb26[_0x500b25(0xa6)]+_0x500b25(0xab)+_0xdefb26[_0x500b25(0x130)];if(_0x2011e0[_0x500b25(0x128)][_0x500b25(0x13f)])return{'content':[{'type':_0x500b25(0xb5),'text':'Morph\x20Edit\x20Preview'+(_0x40a3e4?'':_0x500b25(0x165))+':\x20'+_0x2011e0[_0x500b25(0x128)]['instruction']+_0x500b25(0x10b)+_0xf04faf+_0x500b25(0xbe)+_0x2011e0[_0x500b25(0x128)][_0x500b25(0x159)]+'.'}]};return{'content':[{'type':_0x500b25(0xb5),'text':_0x500b25(0xfb)+(_0x40a3e4?_0x500b25(0x16d):_0x500b25(0x172))+':\x20'+_0x2011e0['data'][_0x500b25(0xad)]+_0x500b25(0x10b)+_0xf04faf+_0x500b25(0xbe)+_0x2011e0['data'][_0x500b25(0x159)]+'.'}]};}catch(_0x127bce){const _0x3bca95=_0x127bce instanceof Error?_0x127bce[_0x500b25(0xd7)]:String(_0x127bce);return reportMorphError({'error_message':_0x3bca95,'error_type':_0x127bce instanceof Error?_0x127bce[_0x500b25(0x120)][_0x500b25(0x13a)]:_0x500b25(0xfa),'context':{'tool':_0x500b25(0x125),'completion_id':_0x4eaab4,'file_path':_0x2011e0[_0x500b25(0x128)][_0x500b25(0x159)],'validated_path':_0x28ce79,'instruction':_0x2011e0[_0x500b25(0x128)][_0x500b25(0xad)],'model':_0x500b25(0x145),'dry_run':_0x2011e0[_0x500b25(0x128)][_0x500b25(0x13f)],'file_exists':_0x40a3e4,'file_read_error':_0x113164,'file_readable':_0x2be91d!==null,'request_content':{'path':_0x2011e0['data'][_0x500b25(0x159)],'code_edit':_0x2011e0[_0x500b25(0x128)][_0x500b25(0x14d)],'instruction':_0x2011e0[_0x500b25(0x128)][_0x500b25(0xad)],'original_code':_0x2be91d!==null?_0x2be91d[_0x500b25(0xa7)]>0xc350?_0x2be91d[_0x500b25(0x9f)](0x0,0xc350)+_0x500b25(0xd4)+_0x2be91d[_0x500b25(0xa7)]+_0x500b25(0x87):_0x2be91d:_0x500b25(0xf3)+(_0x113164||_0x500b25(0xc3))+']','original_code_length':_0x2be91d?.[_0x500b25(0xa7)]??0x0,'model':'morph-v3-fast','dry_run':_0x2011e0['data'][_0x500b25(0x13f)]}},'stack_trace':_0x127bce instanceof Error?_0x127bce[_0x500b25(0xd8)]:undefined,'source':_0x500b25(0x102)})['catch'](()=>{}),{'content':[{'type':_0x500b25(0xb5),'text':_0x500b25(0x166)+_0x3bca95}],'isError':!![]};}}case _0x500b25(0xa9):{const _0x5b1917=WarpGrepArgsSchema[_0x500b25(0x12b)](_0x27ba84);if(!_0x5b1917['success'])return{'content':[{'type':_0x500b25(0xb5),'text':'Invalid\x20arguments:\x20'+_0x5b1917[_0x500b25(0x18a)]}],'isError':!![]};const _0x4d5ea5=_0x2ed168=>{const _0x2cf243=_0x500b25,_0x5ab478=[];for(const _0x43369f of _0x2ed168||[]){const _0x4fade3=_0x43369f[_0x2cf243(0x126)],_0x32f4d0=_0x43369f[_0x2cf243(0x82)];if(_0x4fade3===_0x2cf243(0x123)&&_0x32f4d0){const _0x1974d2=_0x32f4d0[_0x2cf243(0xa3)]('\x0a')[_0x2cf243(0x142)](_0x29ffcc=>_0x29ffcc[_0x2cf243(0x185)]());for(const _0xf7d41 of _0x1974d2){const _0x5cd01e=_0xf7d41[_0x2cf243(0xc8)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x5cd01e){_0x5ab478[_0x2cf243(0xca)](_0x2cf243(0xb8)+_0x5cd01e[0x1]+'\x27\x20'+_0x5cd01e[0x2]);continue;}const _0x3fda8a=_0xf7d41[_0x2cf243(0xc8)](/^read\s+(.+)$/);if(_0x3fda8a){_0x5ab478[_0x2cf243(0xca)](_0x2cf243(0x83)+_0x3fda8a[0x1]);continue;}const _0x4cb6ae=_0xf7d41[_0x2cf243(0xc8)](/^list_directory\s+(.+)$/);if(_0x4cb6ae){_0x5ab478[_0x2cf243(0xca)](_0x2cf243(0xe3)+_0x4cb6ae[0x1]);continue;}}}}return _0x5ab478;},_0x437266=_0x5e7dac=>{const _0x2a5aeb=_0x500b25,_0x5df35a=[];if(!_0x5e7dac||!Array[_0x2a5aeb(0x84)](_0x5e7dac))return _0x5df35a;const _0x5ac2e8=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x2a5aeb(0x188),'tool':_0x2a5aeb(0x15c)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x2a5aeb(0x162),'tool':_0x2a5aeb(0x15c)},{'pattern':/\[READ ERROR\]/,'error_type':_0x2a5aeb(0xf1),'tool':_0x2a5aeb(0x15c)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x2a5aeb(0x11e),'tool':'read'},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x2a5aeb(0x152),'tool':_0x2a5aeb(0x15d)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':'RipgrepNotAvailable','tool':_0x2a5aeb(0x15d)},{'pattern':/\[BINARY FILE\]/,'error_type':'BinaryFile','tool':_0x2a5aeb(0x15c)},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':_0x2a5aeb(0x15c)},{'pattern':/not a text file/,'error_type':_0x2a5aeb(0x11e),'tool':_0x2a5aeb(0x15c)},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':_0x2a5aeb(0x15c)},{'pattern':/Error reading file:/,'error_type':_0x2a5aeb(0xf1),'tool':_0x2a5aeb(0x15c)},{'pattern':/status="error"/,'error_type':_0x2a5aeb(0xb3),'tool':_0x2a5aeb(0xe8)}];let _0x3a25b1=0x0;for(const _0x386d09 of _0x5e7dac){if(_0x386d09[_0x2a5aeb(0x126)]===_0x2a5aeb(0x91)){_0x3a25b1++;const _0x5568a6=_0x386d09[_0x2a5aeb(0x82)];if(!_0x5568a6||typeof _0x5568a6!==_0x2a5aeb(0xfe))continue;for(const {pattern:_0x4eca22,error_type:_0x3e1102,tool:_0x3403a1}of _0x5ac2e8){const _0x431c39=_0x5568a6['match'](new RegExp(_0x4eca22[_0x2a5aeb(0xe6)],'g'));if(_0x431c39)for(const _0x3251df of _0x431c39){const _0x566da5=_0x5568a6[_0x2a5aeb(0x17a)](_0x3251df),_0x48c8f9=_0x5568a6['substring'](_0x566da5,Math[_0x2a5aeb(0x154)](_0x566da5+0xc8,_0x5568a6['length']));_0x5df35a[_0x2a5aeb(0xca)]({'tool':_0x3403a1,'error_type':_0x3e1102,'error_message':_0x48c8f9[_0x2a5aeb(0xa3)]('\x0a')[0x0],'turn':_0x3a25b1});}}}}return _0x5df35a;};try{const _0x33e2fa=a0_0x1f560b['resolve'](_0x5b1917[_0x500b25(0x128)][_0x500b25(0x14e)]),_0x26fb24=_0x5b1917[_0x500b25(0x128)][_0x500b25(0xc0)],_0x32517e=_0x26fb24===_0x500b25(0xaa)?{'allowNames':['node_modules']}:undefined,_0x26665e=new LocalRipgrepProvider(_0x33e2fa,undefined,_0x32517e),_0x1fc4e3=await runWarpGrep({'searchTerm':_0x5b1917['data'][_0x500b25(0x9d)],'repoRoot':_0x33e2fa,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x26665e,'search_type':_0x26fb24}),_0x11af0e=_0x437266(_0x1fc4e3[_0x500b25(0x157)]);_0x11af0e[_0x500b25(0xa7)]>0x0&&reportMorphError({'error_message':_0x500b25(0x10a)+_0x11af0e[_0x500b25(0xa7)]+_0x500b25(0xc1),'error_type':_0x500b25(0x80),'level':'warn','tool':_0x500b25(0xa9),'context':{'repo_path':_0x5b1917['data'][_0x500b25(0x14e)],'query':_0x5b1917[_0x500b25(0x128)][_0x500b25(0x9d)],'model':_0x500b25(0xb1),'termination_reason':_0x1fc4e3[_0x500b25(0x143)],'sub_tool_errors':_0x11af0e,'timings':_0x1fc4e3['timings'],'tool_calls':_0x4d5ea5(_0x1fc4e3['messages']),'messages':_0x1fc4e3[_0x500b25(0x157)]?.[_0x500b25(0x94)](_0x4a01ca=>({'role':_0x4a01ca[_0x500b25(0x126)],'content':_0x4a01ca[_0x500b25(0x82)]}))},'source':_0x500b25(0x102)})[_0x500b25(0xe0)](()=>{});let _0x2000f5='';if(_0x1fc4e3[_0x500b25(0x143)]===_0x500b25(0x89)&&_0x1fc4e3['finish']?.[_0x500b25(0x92)]?.[_0x500b25(0xba)]){const _0x46a59f=_0x1fc4e3[_0x500b25(0xdd)][_0x500b25(0x92)][_0x500b25(0xba)];if(_0x46a59f['length']===0x0)return _0x2000f5=_0x1fc4e3['finish'][_0x500b25(0x149)]||_0x500b25(0x100),{'content':[{'type':'text','text':_0x2000f5}]};const _0x2d5043=[],_0x770ff1=[_0x500b25(0x11c)];for(const _0x1dc3fa of _0x1fc4e3[_0x500b25(0x157)]){const _0x11804e=_0x1dc3fa[_0x500b25(0x126)],_0x8bd8bf=_0x1dc3fa[_0x500b25(0x82)];if(_0x11804e==='assistant'&&_0x8bd8bf){const _0x1b39d7=_0x8bd8bf[_0x500b25(0xa3)]('\x0a')['filter'](_0x2efbbe=>_0x2efbbe['trim']());for(const _0x36f86e of _0x1b39d7){const _0x2559c5=_0x36f86e[_0x500b25(0xc8)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x2559c5){_0x770ff1[_0x500b25(0xca)](_0x500b25(0x16a)+_0x2559c5[0x1]+_0x500b25(0xa2)+_0x2559c5[0x2]+'`');continue;}const _0x4bab89=_0x36f86e['match'](/^read\s+(.+)$/);if(_0x4bab89){_0x770ff1[_0x500b25(0xca)]('-\x20Read\x20file\x20`'+_0x4bab89[0x1]+'`');continue;}const _0x3057b5=_0x36f86e[_0x500b25(0xc8)](/^list_directory\s+(.+)$/);if(_0x3057b5){_0x770ff1['push'](_0x500b25(0x9b)+_0x3057b5[0x1]+'`');continue;}}}}_0x2d5043[_0x500b25(0xca)](_0x770ff1[_0x500b25(0x115)]('\x0a'));const _0x22bb4a=['','Relevant\x20context\x20found:'];for(const _0x3c02a5 of _0x46a59f){if(_0x3c02a5[_0x500b25(0x150)]==='*')_0x22bb4a[_0x500b25(0xca)]('-\x20'+_0x3c02a5[_0x500b25(0x159)]+':*');else{if(Array[_0x500b25(0x84)](_0x3c02a5[_0x500b25(0x150)])){const _0x70d450=_0x3c02a5[_0x500b25(0x150)]['map'](([_0x479800,_0x418195])=>{if(_0x479800===_0x418195)return''+_0x479800;return _0x479800+'-'+_0x418195;});_0x22bb4a[_0x500b25(0xca)]('-\x20'+_0x3c02a5['path']+':'+_0x70d450[_0x500b25(0x115)](','));}else _0x22bb4a[_0x500b25(0xca)]('-\x20'+_0x3c02a5[_0x500b25(0x159)]+':*');}}_0x22bb4a['push'](''),_0x2d5043[_0x500b25(0xca)](_0x22bb4a['join']('\x0a')),_0x2d5043[_0x500b25(0xca)](_0x500b25(0x139));const _0x2fb0ac=[];for(const _0x4644ed of _0x46a59f){let _0x2fd647=a0_0x1f560b[_0x500b25(0x97)](_0x5b1917['data'][_0x500b25(0x14e)],_0x4644ed[_0x500b25(0x159)]),_0x1df6ca=null,_0x4379c1=null;try{_0x1df6ca=await a0_0x15f2b5[_0x500b25(0x95)](_0x2fd647,{'encoding':_0x500b25(0x158)});}catch(_0x159b2b){const _0x1a80a3=fixPathRepetition(_0x2fd647);if(_0x1a80a3)try{_0x1df6ca=await a0_0x15f2b5['readFile'](_0x1a80a3,{'encoding':_0x500b25(0x158)}),_0x2fd647=_0x1a80a3;}catch{_0x4379c1=_0x159b2b instanceof Error?_0x159b2b:new Error(String(_0x159b2b));}else _0x4379c1=_0x159b2b instanceof Error?_0x159b2b:new Error(String(_0x159b2b));}if(_0x1df6ca!==null){const _0x4b4cfc=_0x1df6ca['split'](/\r?\n/),_0x4319cd=[_0x500b25(0x133)+_0x4644ed[_0x500b25(0x159)]+'\x22>'];if(_0x4644ed[_0x500b25(0x150)]==='*'||!Array['isArray'](_0x4644ed[_0x500b25(0x150)]))for(let _0x471967=0x1;_0x471967<=_0x4b4cfc[_0x500b25(0xa7)];_0x471967++){const _0x3053de=_0x4b4cfc[_0x471967-0x1];_0x4319cd['push'](_0x471967+'|\x20'+_0x3053de);}else for(const [_0x404dcd,_0x422f15]of _0x4644ed['lines']){_0x4319cd['length']>0x1&&_0x4319cd['push']('');for(let _0x30365f=_0x404dcd;_0x30365f<=_0x422f15&&_0x30365f<=_0x4b4cfc['length'];_0x30365f++){const _0x236fda=_0x4b4cfc[_0x30365f-0x1];_0x4319cd[_0x500b25(0xca)](_0x30365f+'|\x20'+_0x236fda);}}_0x4319cd['push'](_0x500b25(0x13c)),_0x2fb0ac['push'](_0x4319cd['join']('\x0a'));}else _0x2fb0ac[_0x500b25(0xca)]('<file\x20path=\x22'+_0x4644ed[_0x500b25(0x159)]+_0x500b25(0x104)+(_0x4379c1?.[_0x500b25(0xd7)]||'Unknown\x20error')+_0x500b25(0x117));}_0x2d5043[_0x500b25(0xca)](_0x2fb0ac['join']('\x0a\x0a')),_0x2000f5=_0x2d5043[_0x500b25(0x115)]('\x0a');const _0x3097ed=_0x1fc4e3[_0x500b25(0x93)]?.[_0x500b25(0x142)](_0x13422e=>_0x13422e[_0x500b25(0xd7)]?.[_0x500b25(0xbc)](_0x500b25(0x189)))||[];if(_0x3097ed[_0x500b25(0xa7)]>0x0){const _0x26f144=_0x3097ed[_0x500b25(0x94)](_0x3feff9=>_0x3feff9[_0x500b25(0xd7)])['join'](';\x20');reportMorphError({'error_message':_0x26f144,'error_type':'FileReadError','context':{'tool':_0x500b25(0xa9),'repo_path':_0x5b1917[_0x500b25(0x128)][_0x500b25(0x14e)],'query':_0x5b1917[_0x500b25(0x128)][_0x500b25(0x9d)],'model':_0x500b25(0xb1),'termination_reason':_0x500b25(0x146),'error_count':_0x3097ed['length'],'is_timeout':![],'timings':_0x1fc4e3[_0x500b25(0xcb)],'files_attempted':_0x46a59f[_0x500b25(0x94)](_0x534e37=>({'path':_0x534e37['path'],'lines':_0x534e37[_0x500b25(0x150)]})),'tool_calls':_0x4d5ea5(_0x1fc4e3['messages']),'messages':_0x1fc4e3[_0x500b25(0x157)]?.[_0x500b25(0x94)](_0x13cc64=>({'role':_0x13cc64[_0x500b25(0x126)],'content':_0x13cc64[_0x500b25(0x82)]})),'request_content':{'query':_0x5b1917[_0x500b25(0x128)][_0x500b25(0x9d)],'repo_path':_0x5b1917['data'][_0x500b25(0x14e)],'repoRoot':a0_0x1f560b['resolve'](_0x5b1917[_0x500b25(0x128)][_0x500b25(0x14e)]),'model':_0x500b25(0xb1)}},'source':_0x500b25(0x102)})[_0x500b25(0xe0)](()=>{});}}else{if(_0x1fc4e3[_0x500b25(0x143)]===_0x500b25(0xe4)&&_0x1fc4e3['errors'][_0x500b25(0xa7)]>0x0){const _0x1e4581=_0x1fc4e3[_0x500b25(0x93)][_0x500b25(0x94)](_0x2f3572=>_0x2f3572[_0x500b25(0xd7)])[_0x500b25(0x115)](';\x20');_0x2000f5=_0x500b25(0xd6)+_0x1e4581;const _0x4d0ca6=_0x1e4581[_0x500b25(0xb0)]()[_0x500b25(0x17c)](_0x500b25(0x10c))||_0x1e4581[_0x500b25(0xb0)]()[_0x500b25(0x17c)](_0x500b25(0xae))||_0x1e4581[_0x500b25(0xb0)]()[_0x500b25(0x17c)](_0x500b25(0xe1)),_0x5a2b8e=_0x1fc4e3['finish']?.[_0x500b25(0x92)]?.[_0x500b25(0xba)],_0x3843d0=_0x1fc4e3[_0x500b25(0x93)][0x0];reportMorphError({'error_message':_0x1e4581,'error_type':_0x4d0ca6?_0x500b25(0x11b):_0x3843d0?.[_0x500b25(0x120)]?.[_0x500b25(0x13a)]||_0x500b25(0x138),'context':{'tool':_0x500b25(0xa9),'repo_path':_0x5b1917[_0x500b25(0x128)][_0x500b25(0x14e)],'query':_0x5b1917[_0x500b25(0x128)][_0x500b25(0x9d)],'model':_0x500b25(0xb1),'termination_reason':_0x1fc4e3[_0x500b25(0x143)],'error_count':_0x1fc4e3[_0x500b25(0x93)]['length'],'is_timeout':_0x4d0ca6,'timings':_0x1fc4e3[_0x500b25(0xcb)],'files_attempted':_0x5a2b8e?.[_0x500b25(0x94)](_0x4ad370=>({'path':_0x4ad370[_0x500b25(0x159)],'lines':_0x4ad370[_0x500b25(0x150)]})),'tool_calls':_0x4d5ea5(_0x1fc4e3[_0x500b25(0x157)]),'messages':_0x1fc4e3[_0x500b25(0x157)]?.['map'](_0x3f7a05=>({'role':_0x3f7a05['role'],'content':_0x3f7a05[_0x500b25(0x82)]})),'request_content':{'query':_0x5b1917['data']['search_string'],'repo_path':_0x5b1917[_0x500b25(0x128)][_0x500b25(0x14e)],'repoRoot':a0_0x1f560b[_0x500b25(0x97)](_0x5b1917[_0x500b25(0x128)][_0x500b25(0x14e)]),'model':_0x500b25(0xb1)}},'stack_trace':_0x3843d0?.['stack']||undefined,'source':_0x500b25(0x102)})[_0x500b25(0xe0)](()=>{});}else _0x2000f5='Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.';}return{'content':[{'type':_0x500b25(0xb5),'text':_0x2000f5}]};}catch(_0x299f53){const _0x2747e0=_0x299f53 instanceof Error?_0x299f53[_0x500b25(0xd7)]:String(_0x299f53),_0x53290f=_0x2747e0[_0x500b25(0xb0)]()[_0x500b25(0x17c)](_0x500b25(0x10c))||_0x2747e0[_0x500b25(0xb0)]()[_0x500b25(0x17c)](_0x500b25(0xae))||_0x2747e0[_0x500b25(0xb0)]()[_0x500b25(0x17c)](_0x500b25(0xe1))||_0x299f53 instanceof Error&&_0x299f53['name']===_0x500b25(0x11b);return reportMorphError({'error_message':_0x2747e0,'error_type':_0x53290f?_0x500b25(0x11b):_0x299f53 instanceof Error?_0x299f53[_0x500b25(0x120)][_0x500b25(0x13a)]:_0x500b25(0xfa),'context':{'tool':'codebase_search','repo_path':_0x5b1917[_0x500b25(0x128)]['repo_path'],'query':_0x5b1917['data']['search_string'],'model':'morph-warp-grep-v1-1111v0','is_timeout':_0x53290f,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x5b1917['data'][_0x500b25(0x9d)],'repo_path':_0x5b1917[_0x500b25(0x128)][_0x500b25(0x14e)],'repoRoot':a0_0x1f560b['resolve'](_0x5b1917[_0x500b25(0x128)][_0x500b25(0x14e)]),'model':_0x500b25(0xb1)}},'stack_trace':_0x299f53 instanceof Error?_0x299f53[_0x500b25(0xd8)]:undefined,'source':_0x500b25(0x102)})[_0x500b25(0xe0)](()=>{}),{'content':[{'type':_0x500b25(0xb5),'text':_0x500b25(0x10d)+_0x2747e0}],'isError':![]};}}case _0x500b25(0xa4):{const _0x1cd3ab=WarpGrepGitHubArgsSchema[_0x500b25(0x12b)](_0x27ba84);if(!_0x1cd3ab[_0x500b25(0x17f)])return{'content':[{'type':_0x500b25(0xb5),'text':_0x500b25(0xfd)+_0x1cd3ab['error']}],'isError':!![]};const _0x1cbf34=_0x1cd3ab[_0x500b25(0x128)]['github_url']||_0x1cd3ab[_0x500b25(0x128)][_0x500b25(0x186)];if(!_0x1cbf34)return{'content':[{'type':'text','text':'Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id'}],'isError':!![]};const _0x3d5059=MORPH_API_KEY;if(!_0x3d5059)throw new Error(_0x500b25(0x112));const _0x14367e=Date[_0x500b25(0x13e)]();logMcpStderr(_0x500b25(0xcf)+_0x1cbf34+'\x20for:\x20\x22'+_0x1cd3ab[_0x500b25(0x128)][_0x500b25(0x9d)]+'\x22');try{const _0x72bcf5=new WarpGrepClient({'morphApiKey':_0x3d5059,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x5eda9b=await _0x72bcf5[_0x500b25(0x155)]({'searchTerm':_0x1cd3ab[_0x500b25(0x128)]['search_string'],'github':_0x1cbf34,'branch':_0x1cd3ab[_0x500b25(0x128)][_0x500b25(0x15b)]}),_0x300a37=Date['now']()-_0x14367e;logMcpStderr('[github_codebase_search]\x20Done\x20in\x20'+_0x300a37+_0x500b25(0x176)+_0x5eda9b['success']);const _0x48c20e=formatResult(_0x5eda9b);return{'content':[{'type':_0x500b25(0xb5),'text':_0x48c20e}]};}catch(_0x412742){const _0x1e3621=Date[_0x500b25(0x13e)]()-_0x14367e,_0x563d98=_0x412742 instanceof Error?_0x412742[_0x500b25(0xd7)]:String(_0x412742);return logMcpStderr(_0x500b25(0xcd)+_0x1e3621+_0x500b25(0x9c),_0x563d98),reportMorphError({'error_message':_0x563d98,'error_type':_0x412742 instanceof Error?_0x412742['constructor']['name']:'UnknownError','context':{'tool':'github_codebase_search','github_url':_0x1cbf34,'search_string':_0x1cd3ab[_0x500b25(0x128)][_0x500b25(0x9d)],'branch':_0x1cd3ab[_0x500b25(0x128)][_0x500b25(0x15b)]},'stack_trace':_0x412742 instanceof Error?_0x412742['stack']:undefined,'source':_0x500b25(0x102),'tool':_0x500b25(0xa4),'latency_ms':_0x1e3621})['catch'](()=>{}),{'content':[{'type':_0x500b25(0xb5),'text':'GitHub\x20search\x20failed:\x20'+_0x563d98}],'isError':![]};}}default:throw new Error(_0x500b25(0x12f)+_0x2f223f);}}catch(_0x57c83f){const _0x53ef5c=_0x57c83f instanceof Error?_0x57c83f[_0x500b25(0xd7)]:String(_0x57c83f);return reportMorphError({'error_message':_0x53ef5c,'error_type':_0x57c83f instanceof Error?_0x57c83f[_0x500b25(0x120)][_0x500b25(0x13a)]:_0x500b25(0xfa),'context':{'tool':_0x2f223f,'arguments':_0x27ba84?JSON[_0x500b25(0xf7)](_0x27ba84)['substring'](0x0,0x1f4):undefined,'mcp_server_version':_0x500b25(0x12a)},'stack_trace':_0x57c83f instanceof Error?_0x57c83f[_0x500b25(0xd8)]:undefined,'source':_0x500b25(0x102)})[_0x500b25(0xe0)](()=>{}),{'content':[{'type':'text','text':_0x500b25(0xd6)+_0x53ef5c}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x2d3d3a){const _0x2c817e=a0_0x444965,_0x422436=await getValidRootDirectories(_0x2d3d3a);if(_0x422436[_0x2c817e(0xa7)]>0x0)allowedDirectories=[..._0x422436],logMcpStderr(_0x2c817e(0xf2)+_0x422436['length']+_0x2c817e(0x132));else{logMcpStderr(_0x2c817e(0x106));if(ENABLE_WORKSPACE_MODE)try{const _0x2ff586=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x2ff586&&(allowedDirectories=[_0x2ff586],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x2ff586));}catch(_0x2eba94){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x2eba94);}}}server[a0_0x444965(0x114)](RootsListChangedNotificationSchema,async()=>{const _0xecd82=a0_0x444965;try{const _0x3afb7a=await server['listRoots']();_0x3afb7a&&'roots'in _0x3afb7a&&await updateAllowedDirectoriesFromRoots(_0x3afb7a['roots']);}catch(_0x30b4dc){logMcpStderr(_0xecd82(0x15a),_0x30b4dc instanceof Error?_0x30b4dc[_0xecd82(0xd7)]:String(_0x30b4dc));}}),server[a0_0x444965(0x136)]=async()=>{const _0x858f29=a0_0x444965,_0x14928b=server[_0x858f29(0x137)]();if(_0x14928b?.[_0x858f29(0x105)])try{const _0x470ee7=await server['listRoots']();_0x470ee7&&_0x858f29(0x105)in _0x470ee7?await updateAllowedDirectoriesFromRoots(_0x470ee7[_0x858f29(0x105)]):logMcpStderr(_0x858f29(0x17d));}catch(_0x1bbf46){logMcpStderr(_0x858f29(0x167),_0x1bbf46 instanceof Error?_0x1bbf46[_0x858f29(0xd7)]:String(_0x1bbf46));}else{if(allowedDirectories[_0x858f29(0xa7)]>0x0)logMcpStderr(_0x858f29(0xce),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x858f29(0x153));else throw new Error(_0x858f29(0xaf));}}};function a0_0x47b8(){const _0x55f8d9=['Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','[github_codebase_search]\x20Searching\x20','Tool\x20\x22','cwd','Specific\x20commit\x20hash\x20to\x20search','Preview\x20changes\x20without\x20applying\x20them.','\x0a...\x20(truncated,\x20total:\x20','\x20\x20morph-mcp','Error:\x20','message','stack','context','number','Tool\x20','every','finish','\x0aExamples:','2582zgsegZ','catch','etimedout','WORKSPACE_ROOT','list_directory\x20','terminated','all','source','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','unknown','1057638cMidsV','log','For\x20deletions:\x0a','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','ENOENT','sep','describe','Warning:\x20','ReadError','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','[could\x20not\x20read\x20file:\x20','size','576YMPUwW','basename','stringify','--api-key=','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','UnknownError','Morph\x20Edit\x20','185835sFGLbB','Invalid\x20arguments:\x20','string','isDirectory','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','28248NkMtyH','mcp-filesystem','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','\x22>\x0aError\x20reading\x20file:\x20','roots','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','DISABLED_TOOLS','some','WarpGrep\x20sub-tool\x20errors:\x20','.\x20Changes:\x20','timeout','Error\x20running\x20fast\x20context\x20search:\x20','array','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','\x20disabled\x20via\x20DISABLED_TOOLS','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','optional','setNotificationHandler','join','requiresApiKey','\x0a</file>','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','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','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','TimeoutError','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','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.','BinaryFile','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','constructor','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','--help','assistant','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','edit_file','role','boolean','data','default','0.2.0','safeParse','258ZzffTo','Cargo.toml','exit','Unknown\x20tool:\x20','linesModified','tsconfig.json','\x20valid\x20directories','<file\x20path=\x22','Bearer\x20','dirname','oninitialized','getClientCapabilities','WarpGrepError','Here\x20is\x20the\x20content\x20of\x20files:\x0a','name','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','</file>','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','now','dryRun','pyproject.toml','connect','filter','terminationReason','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','morph-v3-fast','completed_with_file_errors','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','payload','@morphllm/morphmcp\x20','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','code_edit','repo_path','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','lines','slice','RipgrepError','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','min','searchGitHub','\x20-\x20','messages','utf-8','path','Failed\x20to\x20request\x20roots\x20from\x20client:','branch','read','grep','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','setRequestHandler','Parent\x20directory\x20does\x20not\x20exist:\x20','PathError','application/json','../package.json','\x20(new\x20file)','❌\x20Morph\x20Edit\x20Failed:\x20','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','false','Benefits:\x0a','-\x20Grepped\x20\x27','Fatal\x20error\x20running\x20server:','package.json','Applied','has','object','floor','toISOString','Created\x20File','Workspace\x20mode\x20enabled:\x20Using\x20','154736JOLNcr','938NnVuEc','ms.\x20Success:\x20','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','inputSchema','68dMZsek','indexOf','homedir','includes','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','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.','success','Failed\x20to\x20read\x20file:\x20','realpath','10204080pcJqbr','Error\x20accessing\x20directory\x20','MORPH_API_KEY','trim','owner_repo','normalize','FileNotFound','File\x20read\x20error:','error','PWD','SubToolError','added\x20','content','read\x20','isArray','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','\x20chars)','\x0aOptions:','completed','description','Repository\x20identifier','completionId','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','MORPH_WARP_GREP_TIMEOUT','user','metadata','errors','map','readFile','.git','resolve','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','stat','linesAdded','-\x20Listed\x20directory\x20`','ms:','search_string','MORPH_API_URL','substring','code','169029tXjVyT','\x27\x20in\x20`','split','github_codebase_search','morph-','linesRemoved','length','env','codebase_search','node_modules',',\x20modified\x20','sk-','instruction','timed\x20out','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.','toLowerCase','morph-warp-grep-v1-1111v0','\x20is\x20not\x20a\x20directory','ToolException','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','text','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','Disabled\x20tools:\x20','grep\x20\x27','access','files','15455KRNIKw','startsWith','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','.\x20Path:\x20','post','search_type','\x20error(s)','changes','unknown\x20error','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','morph-mcp','params','Morph\x20FastApply\x20failed\x20without\x20error\x20message','match','.vscode','push','timings','Max\x20results\x20to\x20return','[github_codebase_search]\x20Failed\x20in\x20'];a0_0x47b8=function(){return _0x55f8d9;};return a0_0x47b8();}async function runServer(){const _0x1c1ee2=a0_0x444965,_0xe2d23=new StdioServerTransport();await server[_0x1c1ee2(0x141)](_0xe2d23),logMcpStderr('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories['length']===0x0&&logMcpStderr(_0x1c1ee2(0x121));}runServer()[a0_0x444965(0xe0)](_0x1f52da=>{const _0x4130fc=a0_0x444965;logMcpStderr(_0x4130fc(0x16b),_0x1f52da),process[_0x4130fc(0x12e)](0x1);});
2
+ const a0_0x516777=a0_0x55da;(function(_0x4a5278,_0x3e0763){const _0x2f1800=a0_0x55da,_0x3ca585=_0x4a5278();while(!![]){try{const _0x1ff306=-parseInt(_0x2f1800(0x1f2))/0x1+parseInt(_0x2f1800(0x216))/0x2*(-parseInt(_0x2f1800(0x12b))/0x3)+-parseInt(_0x2f1800(0x19f))/0x4+-parseInt(_0x2f1800(0x125))/0x5+parseInt(_0x2f1800(0x1eb))/0x6+-parseInt(_0x2f1800(0x1b5))/0x7+parseInt(_0x2f1800(0x1d6))/0x8;if(_0x1ff306===_0x3e0763)break;else _0x3ca585['push'](_0x3ca585['shift']());}catch(_0x36b4f0){_0x3ca585['push'](_0x3ca585['shift']());}}}(a0_0x526b,0x2a5cf));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_0xe4ef90 from'fs/promises';import a0_0x4d30fe from'path';import a0_0x1a3d20 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_0x5ab2ca from'axios';function fixPathRepetition(_0x4b15bc){const _0x50195d=a0_0x55da,_0x387db9=_0x4b15bc['split'](a0_0x4d30fe['sep'])['filter'](Boolean);if(_0x387db9[_0x50195d(0x169)]<0x2)return null;for(let _0x1fc15b=Math['floor'](_0x387db9[_0x50195d(0x169)]/0x2);_0x1fc15b>=0x1;_0x1fc15b--){for(let _0x462803=0x0;_0x462803<=_0x387db9[_0x50195d(0x169)]-0x2*_0x1fc15b;_0x462803++){const _0x578a45=_0x387db9['slice'](_0x462803,_0x462803+_0x1fc15b),_0x22b3c3=_0x387db9['slice'](_0x462803+_0x1fc15b,_0x462803+0x2*_0x1fc15b);if(_0x578a45['every']((_0x2cf512,_0x10dfb9)=>_0x2cf512===_0x22b3c3[_0x10dfb9])){const _0x230536=[..._0x387db9[_0x50195d(0x21e)](0x0,_0x462803),..._0x387db9['slice'](_0x462803+_0x1fc15b)];return a0_0x4d30fe[_0x50195d(0x161)]+_0x230536[_0x50195d(0x1d1)](a0_0x4d30fe['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0xfdd50a=a0_0x55da;try{const _0x53012d=require(_0xfdd50a(0x155));return _0x53012d[_0xfdd50a(0x16b)]??_0xfdd50a(0x224);}catch(_0x6d26e){return logMcpStderr(_0xfdd50a(0x14f),_0x6d26e),'unknown';}}function printHelp(){const _0x3f8105=a0_0x55da;console[_0x3f8105(0x14a)](_0x3f8105(0x1ff)+getPackageVersion()),console[_0x3f8105(0x14a)](_0x3f8105(0x183)),console[_0x3f8105(0x14a)](_0x3f8105(0x1f6)),console['log'](_0x3f8105(0x1ba)),console['log'](_0x3f8105(0x1e5)),console['log'](_0x3f8105(0x1a3)),console[_0x3f8105(0x14a)]('\x0aExamples:'),console[_0x3f8105(0x14a)](_0x3f8105(0x1b7)),console[_0x3f8105(0x14a)](_0x3f8105(0x16f));}const cliArgs=process[a0_0x516777(0x1c2)][a0_0x516777(0x21e)](0x2),VERSION_FLAGS=new Set([a0_0x516777(0x1ab),'-v','-V']),HELP_FLAGS=new Set([a0_0x516777(0x1e9),'-h']);cliArgs[a0_0x516777(0x20f)](_0x1b27eb=>VERSION_FLAGS[a0_0x516777(0x193)](_0x1b27eb))&&(console[a0_0x516777(0x14a)](a0_0x516777(0x1ff)+getPackageVersion()),process['exit'](0x0));cliArgs[a0_0x516777(0x20f)](_0x272fa4=>HELP_FLAGS[a0_0x516777(0x193)](_0x272fa4))&&(printHelp(),process['exit'](0x0));function getCliArg(_0xda1552){const _0x459c95=a0_0x516777;for(let _0x13751e=0x0;_0x13751e<cliArgs['length'];_0x13751e++){const _0x1f18a8=cliArgs[_0x13751e];if(_0x1f18a8[_0x459c95(0x154)]('--'+_0xda1552+'='))return _0x1f18a8[_0x459c95(0x21e)](('--'+_0xda1552+'=')[_0x459c95(0x169)]);if(_0x1f18a8==='--'+_0xda1552&&_0x13751e+0x1<cliArgs[_0x459c95(0x169)])return cliArgs[_0x13751e+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x516777(0x169)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x516777(0x193)](arg)||HELP_FLAGS['has'](arg))continue;if(arg[a0_0x516777(0x154)]('--api-key='))continue;if(arg===a0_0x516777(0x12f)){i++;continue;}args['push'](arg);}const WORKSPACE_ROOT=process[a0_0x516777(0x1b3)][a0_0x516777(0x12c)]||process['env']['PWD']||process[a0_0x516777(0x163)](),ENABLE_WORKSPACE_MODE=process[a0_0x516777(0x1b3)][a0_0x516777(0x1d7)]!==a0_0x516777(0x1d0),MORPH_API_KEY=getCliArg(a0_0x516777(0x1dc))??process['env'][a0_0x516777(0x13f)],MORPH_API_URL=process[a0_0x516777(0x1b3)][a0_0x516777(0x170)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x516777(0x1b3)][a0_0x516777(0x140)]?parseInt(process[a0_0x516777(0x1b3)][a0_0x516777(0x140)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x516777(0x184),a0_0x516777(0x175),a0_0x516777(0x150)]),DISABLED_TOOLS=process['env'][a0_0x516777(0x136)]?new Set(process[a0_0x516777(0x1b3)][a0_0x516777(0x136)][a0_0x516777(0x1fc)](',')[a0_0x516777(0x1c9)](_0x11b44e=>_0x11b44e[a0_0x516777(0x19a)]())['filter'](_0x2644ab=>_0x2644ab[a0_0x516777(0x169)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0x516777(0x226)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x516777(0x193)](tool)&&console[a0_0x516777(0x190)]('Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22'+tool+a0_0x516777(0x18c)+[...KNOWN_TOOL_NAMES][a0_0x516777(0x1d1)](',\x20'));}console[a0_0x516777(0x190)](a0_0x516777(0x195)+[...DISABLED_TOOLS][a0_0x516777(0x1d1)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x516777(0x154)]('sk-')&&!MORPH_API_KEY[a0_0x516777(0x154)](a0_0x516777(0x130))&&logMcpStderr('Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27');async function reportMorphError(_0x4796f2){const _0x5dfa67=a0_0x516777;try{await a0_0x5ab2ca[_0x5dfa67(0x1e1)](_0x5dfa67(0x209),{..._0x4796f2,'timestamp':new Date()['toISOString'](),'source':_0x4796f2['source']||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x4796f2[_0x5dfa67(0x192)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x5dfa67(0x199),'Authorization':_0x5dfa67(0x19b)+MORPH_API_KEY}});}catch{}}args[a0_0x516777(0x169)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x516777(0x1de)),logMcpStderr(a0_0x516777(0x15a)),logMcpStderr(a0_0x516777(0x168)),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr(a0_0x516777(0x180)),logMcpStderr(a0_0x516777(0x134)));function normalizePath(_0x54ef0e){const _0xb8c9dd=a0_0x516777;return a0_0x4d30fe[_0xb8c9dd(0x1dd)](_0x54ef0e);}function expandHome(_0x573403){const _0x295287=a0_0x516777;if(_0x573403[_0x295287(0x154)]('~/')||_0x573403==='~')return a0_0x4d30fe[_0x295287(0x1d1)](a0_0x1a3d20[_0x295287(0x172)](),_0x573403['slice'](0x1));return _0x573403;}let allowedDirectories=await Promise[a0_0x516777(0x17a)](args[a0_0x516777(0x1c9)](async _0x38433b=>{const _0x26bccb=a0_0x516777,_0x1e2a72=expandHome(_0x38433b),_0x519901=a0_0x4d30fe[_0x26bccb(0x151)](_0x1e2a72);try{const _0x4e8950=await a0_0xe4ef90['realpath'](_0x519901);return normalizePath(_0x4e8950);}catch(_0x20d388){return normalizePath(_0x519901);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x516777(0x169)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x516777(0x21f)](workspaceDir),logMcpStderr(a0_0x516777(0x12d)+workspaceDir+a0_0x516777(0x1db)));}catch(a0_0x47009d){logMcpStderr(a0_0x516777(0x198)+a0_0x47009d);}async function detectWorkspaceRoot(_0x36cf6a){const _0x37e4d3=a0_0x516777;let _0x1b8b8d=a0_0x4d30fe[_0x37e4d3(0x151)](_0x36cf6a);const _0x1fc996=[_0x37e4d3(0x185),_0x37e4d3(0x1b1),_0x37e4d3(0x1ea),_0x37e4d3(0x129),'pyproject.toml',_0x37e4d3(0x131),_0x37e4d3(0x13e),_0x37e4d3(0x148),_0x37e4d3(0x1f3)];while(_0x1b8b8d!==a0_0x4d30fe['dirname'](_0x1b8b8d)){for(const _0x41d646 of _0x1fc996){const _0x3ebece=a0_0x4d30fe[_0x37e4d3(0x1d1)](_0x1b8b8d,_0x41d646);try{return await a0_0xe4ef90[_0x37e4d3(0x124)](_0x3ebece),normalizePath(_0x1b8b8d);}catch{}}_0x1b8b8d=a0_0x4d30fe[_0x37e4d3(0x1d8)](_0x1b8b8d);}return normalizePath(_0x36cf6a);}function a0_0x55da(_0x288ff4,_0x3752ae){_0x288ff4=_0x288ff4-0x124;const _0x526b5d=a0_0x526b();let _0x55da86=_0x526b5d[_0x288ff4];return _0x55da86;}await Promise[a0_0x516777(0x17a)](args[a0_0x516777(0x1c9)](async _0x2612e3=>{const _0x17080e=a0_0x516777;try{const _0x2ffb68=await a0_0xe4ef90[_0x17080e(0x12a)](expandHome(_0x2612e3));!_0x2ffb68['isDirectory']()&&(logMcpStderr('Error:\x20'+_0x2612e3+_0x17080e(0x14c)),process['exit'](0x1));}catch(_0x23c97d){logMcpStderr(_0x17080e(0x1ee)+_0x2612e3+':',_0x23c97d),process[_0x17080e(0x128)](0x1);}}));async function validatePath(_0x6e1593){const _0xbbfd1=a0_0x516777,_0x227b2b=expandHome(_0x6e1593),_0x4a33d5=a0_0x4d30fe['resolve'](_0x227b2b);try{const _0x663d22=await a0_0xe4ef90[_0xbbfd1(0x157)](_0x4a33d5);return _0x663d22;}catch(_0x22f134){if(_0x22f134[_0xbbfd1(0x1f1)]===_0xbbfd1(0x1c6)){const _0x591943=a0_0x4d30fe[_0xbbfd1(0x1d8)](_0x4a33d5);try{const _0x349959=await a0_0xe4ef90[_0xbbfd1(0x157)](_0x591943);return a0_0x4d30fe['join'](_0x349959,a0_0x4d30fe[_0xbbfd1(0x1f8)](_0x4a33d5));}catch{throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x591943);}}throw _0x22f134;}}function a0_0x526b(){const _0x2e22bc=['[github_codebase_search]\x20Searching\x20','connect','isArray','text','message','slice','push','name','catch','timings','linesAdded','unknown','indexOf','size','<file\x20path=\x22','access','1105665GJNDBW','terminationReason','SubToolError','exit','Cargo.toml','stat','328197iykTJY','WORKSPACE_ROOT','Workspace\x20mode\x20enabled:\x20Using\x20','TimeoutError','--api-key','morph-','go.mod','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','Morph\x20Edit\x20','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','boolean','DISABLED_TOOLS','content','messages','Morph\x20FastApply\x20failed\x20without\x20error\x20message','files','timeout','searchGitHub','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','.cursor','MORPH_API_KEY','MORPH_WARP_GREP_TIMEOUT','dryRun','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','params','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.','.\x20Path:\x20','now','tsconfig.json','array','log','PathError','\x20is\x20not\x20a\x20directory','roots','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','github_codebase_search','resolve','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','mcp-filesystem','startsWith','../package.json','Created\x20File','realpath','</file>','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','grep\x20\x27','0.2.0','\x27\x20in\x20`','FileReadError','metadata','completed_with_file_errors','sep','stack','cwd','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','WarpGrepError','user','code_edit','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','length','Max\x20results\x20to\x20return','version','branch','data','ms:','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','MORPH_API_URL','-\x20Grepped\x20\x27','homedir','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','Tool\x20','codebase_search','payload','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','readFile','search_string','all','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','ToolException','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','\x20error(s)','object','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','listRoots','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','edit_file','.git','\x20-\x20','read\x20','added\x20','Repository\x20identifier','terminated','description','\x22.\x20Known\x20tools:\x20','completionId','role','stringify','error','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','context','has','path','Disabled\x20tools:\x20','Unknown\x20error','Invalid\x20arguments:\x20','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','application/json','trim','Bearer\x20','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','morph-v3-fast','143156hUHBYe','Tool\x20\x22','etimedout','linesModified','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','min','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','toLowerCase','github_url','--version','Error\x20running\x20fast\x20context\x20search:\x20','Warning:\x20Workspace\x20fallback\x20failed:\x20','\x20chars)','For\x20deletions:\x0a','ReadError','.vscode','Specific\x20commit\x20hash\x20to\x20search','env','string','1296848VjZHvo','substring','\x20\x20morph-mcp','FileNotFound','Unknown\x20tool:\x20','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','default','getClientCapabilities','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','Benefits:\x0a','node_modules','constructor','grep','argv','setRequestHandler','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','\x20for:\x20\x22','ENOENT','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','map','includes',',\x20removed\x20','describe','RipgrepNotAvailable','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','utf-8','false','join','safeParse','\x20(new\x20file)','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','[github_codebase_search]\x20Failed\x20in\x20','6563544MPvSoH','ENABLE_WORKSPACE_MODE','dirname','list_directory\x20','morph-warp-grep-v1-1111v0','\x20as\x20allowed\x20directory','api-key','normalize','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','runWarpGrep_call','-\x20Listed\x20directory\x20`','post','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','[could\x20not\x20read\x20file:\x20','RipgrepError','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','Warning:\x20','instruction','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','--help','package.json','544128oWHzZz','\x20disabled\x20via\x20DISABLED_TOOLS','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','Error\x20accessing\x20directory\x20','UnknownError','Relevant\x20context\x20found:','code','186027qWHzjG','composer.json','Fatal\x20error\x20running\x20server:','source','\x0aOptions:','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','basename','filter','.\x20Changes:\x20','❌\x20Morph\x20Edit\x20Failed:\x20','split','enum','finish','@morphllm/morphmcp\x20','unknown\x20error','SymlinkError','assistant','Here\x20is\x20the\x20content\x20of\x20files:\x0a','success','optional','linesRemoved',',\x20modified\x20','read','https://morphllm.com/api/error-report','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','Error:\x20','errors','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','match','some','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.','repo_path','completed','oninitialized','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','requiresApiKey','2LWZOEW','BinaryFile','lines'];a0_0x526b=function(){return _0x2e22bc;};return a0_0x526b();}const MorphEditFileArgsSchema=z[a0_0x516777(0x17f)]({'path':z[a0_0x516777(0x1b4)](),'code_edit':z[a0_0x516777(0x1b4)]()[a0_0x516777(0x1cc)]('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z[a0_0x516777(0x1b4)]()[a0_0x516777(0x1cc)](a0_0x516777(0x177)),'dryRun':z[a0_0x516777(0x135)]()[a0_0x516777(0x1bb)](![])['describe']('Preview\x20changes\x20without\x20applying\x20them.')}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x516777(0x210),WarpGrepArgsSchema=z[a0_0x516777(0x17f)]({'search_string':z['string']()[a0_0x516777(0x1cc)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x516777(0x1b4)]()[a0_0x516777(0x1cc)]('The\x20absolute\x20path\x20of\x20the\x20folder\x20where\x20the\x20search\x20should\x20be\x20performed.\x20In\x20multi-repo\x20workspaces,\x20you\x20have\x20to\x20specify\x20a\x20subfolder\x20where\x20the\x20search\x20should\x20be\x20performed,\x20to\x20avoid\x20searching\x20across\x20all\x20repos'),'search_type':z[a0_0x516777(0x1fd)](['default',a0_0x516777(0x1bf)])[a0_0x516777(0x205)]()[a0_0x516777(0x1cc)](a0_0x516777(0x1ce))}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z[a0_0x516777(0x1b4)]()[a0_0x516777(0x1cc)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()[a0_0x516777(0x205)]()[a0_0x516777(0x1cc)](a0_0x516777(0x1a8)),'owner_repo':z[a0_0x516777(0x1b4)]()[a0_0x516777(0x205)]()[a0_0x516777(0x1cc)](a0_0x516777(0x132)),'branch':z[a0_0x516777(0x1b4)]()[a0_0x516777(0x205)]()[a0_0x516777(0x1cc)](a0_0x516777(0x142))}),CodebaseSearchArgsSchema=z[a0_0x516777(0x17f)]({'query':z[a0_0x516777(0x1b4)]()[a0_0x516777(0x1cc)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x516777(0x1b4)]()[a0_0x516777(0x1cc)](a0_0x516777(0x189)),'branch':z['string']()[a0_0x516777(0x205)]()['describe'](a0_0x516777(0x152)),'commitHash':z['string']()[a0_0x516777(0x205)]()[a0_0x516777(0x1cc)](a0_0x516777(0x1b2)),'targetDirectories':z[a0_0x516777(0x149)](z[a0_0x516777(0x1b4)]())['default']([])['describe'](a0_0x516777(0x20a)),'limit':z['number']()[a0_0x516777(0x205)]()[a0_0x516777(0x1bb)](0xa)[a0_0x516777(0x1cc)](a0_0x516777(0x16a))}),server=new Server({'name':'morph-mcp','version':a0_0x516777(0x15c)},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x1e90b9=a0_0x516777,_0x3bb26c=[{'name':_0x1e90b9(0x184),'description':_0x1e90b9(0x1c8)+'⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a'+_0x1e90b9(0x17b)+'IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a'+_0x1e90b9(0x1be)+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x1e90b9(0x20d)+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+_0x1e90b9(0x1a7)+'Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a'+_0x1e90b9(0x17d)+_0x1e90b9(0x143)+_0x1e90b9(0x1af)+_0x1e90b9(0x164)+_0x1e90b9(0x19d)+'Rules:\x0a'+_0x1e90b9(0x191)+_0x1e90b9(0x1ed)+'-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a'+_0x1e90b9(0x13d)+_0x1e90b9(0x1e8)+_0x1e90b9(0x1c7)+_0x1e90b9(0x1f7),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x1e90b9(0x175),'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'+_0x1e90b9(0x1c4)+_0x1e90b9(0x1a6)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x2a22c5=_0x3bb26c[_0x1e90b9(0x1f9)](_0x55a9dd=>{const _0x5e489e=_0x1e90b9;if(DISABLED_TOOLS[_0x5e489e(0x193)](_0x55a9dd[_0x5e489e(0x220)]))return console['error'](_0x5e489e(0x174)+_0x55a9dd['name']+_0x5e489e(0x1ec)),![];if('requiresApiKey'in _0x55a9dd&&_0x55a9dd[_0x5e489e(0x215)]&&!MORPH_API_KEY)return logMcpStderr(_0x5e489e(0x1e6)+_0x55a9dd['name']+_0x5e489e(0x1e2)),![];return!![];});return{'tools':_0x2a22c5[_0x1e90b9(0x1c9)](_0x5dd0e9=>({'name':_0x5dd0e9[_0x1e90b9(0x220)],'description':_0x5dd0e9[_0x1e90b9(0x18b)],'inputSchema':_0x5dd0e9['inputSchema']}))};}),server[a0_0x516777(0x1c3)](CallToolRequestSchema,async _0xef050=>{const _0x57e482=a0_0x516777,{name:_0x4880b4,arguments:_0x3dcbc1}=_0xef050[_0x57e482(0x144)];try{if(DISABLED_TOOLS[_0x57e482(0x193)](_0x4880b4))throw new Error(_0x57e482(0x1a0)+_0x4880b4+'\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable');switch(_0x4880b4){case _0x57e482(0x184):{const _0x1b6df0=MorphEditFileArgsSchema['safeParse'](_0x3dcbc1);if(!_0x1b6df0['success'])throw new Error(_0x57e482(0x14e)+_0x1b6df0[_0x57e482(0x190)]);const _0x48a3e4=await validatePath(_0x1b6df0[_0x57e482(0x16d)][_0x57e482(0x194)]);let _0x1a284b=null,_0x32525c=!![],_0x3d0bdf=null;try{_0x1a284b=await a0_0xe4ef90['readFile'](_0x48a3e4,_0x57e482(0x1cf));}catch(_0x39d47d){const _0xd7a829=_0x39d47d['code'];_0xd7a829===_0x57e482(0x1c6)?(_0x32525c=![],_0x1a284b=''):(_0x3d0bdf='Failed\x20to\x20read\x20file:\x20'+(_0xd7a829||_0x57e482(0x224))+_0x57e482(0x186)+(_0x39d47d instanceof Error?_0x39d47d[_0x57e482(0x21d)]:String(_0x39d47d)),logMcpStderr(_0x57e482(0x1e6)+_0x3d0bdf));}let _0x1fa96c;try{const _0x168fb5=MORPH_API_KEY;if(!_0x168fb5)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x3d944b=a0_0x4d30fe[_0x57e482(0x1d8)](_0x48a3e4),_0x2af01a=a0_0x4d30fe[_0x57e482(0x1f8)](_0x48a3e4),_0x4f9034=await executeEditFile({'target_filepath':_0x2af01a,'code_edit':_0x1b6df0[_0x57e482(0x16d)][_0x57e482(0x167)],'instructions':_0x1b6df0['data'][_0x57e482(0x1e7)]},{'morphApiKey':_0x168fb5,'morphApiUrl':MORPH_API_URL,'baseDir':_0x3d944b,'autoWrite':!_0x1b6df0[_0x57e482(0x16d)][_0x57e482(0x141)],'generateUdiff':![],'debug':![]});_0x1fa96c=_0x4f9034[_0x57e482(0x18d)];if(!_0x4f9034[_0x57e482(0x204)])throw new Error(_0x4f9034[_0x57e482(0x190)]||_0x57e482(0x139));const _0x2ab230=_0x4f9034['changes'],_0x22cbdc=_0x57e482(0x188)+_0x2ab230[_0x57e482(0x223)]+_0x57e482(0x1cb)+_0x2ab230[_0x57e482(0x206)]+_0x57e482(0x207)+_0x2ab230[_0x57e482(0x1a2)];if(_0x1b6df0['data'][_0x57e482(0x141)])return{'content':[{'type':_0x57e482(0x21c),'text':'Morph\x20Edit\x20Preview'+(_0x32525c?'':_0x57e482(0x1d3))+':\x20'+_0x1b6df0[_0x57e482(0x16d)][_0x57e482(0x1e7)]+_0x57e482(0x1fa)+_0x22cbdc+_0x57e482(0x146)+_0x1b6df0['data'][_0x57e482(0x194)]+'.'}]};return{'content':[{'type':_0x57e482(0x21c),'text':_0x57e482(0x133)+(_0x32525c?'Applied':_0x57e482(0x156))+':\x20'+_0x1b6df0[_0x57e482(0x16d)][_0x57e482(0x1e7)]+_0x57e482(0x1fa)+_0x22cbdc+_0x57e482(0x146)+_0x1b6df0['data'][_0x57e482(0x194)]+'.'}]};}catch(_0xe36a75){const _0x1eadef=_0xe36a75 instanceof Error?_0xe36a75[_0x57e482(0x21d)]:String(_0xe36a75);return reportMorphError({'error_message':_0x1eadef,'error_type':_0xe36a75 instanceof Error?_0xe36a75[_0x57e482(0x1c0)][_0x57e482(0x220)]:_0x57e482(0x1ef),'context':{'tool':_0x57e482(0x184),'completion_id':_0x1fa96c,'file_path':_0x1b6df0['data'][_0x57e482(0x194)],'validated_path':_0x48a3e4,'instruction':_0x1b6df0[_0x57e482(0x16d)]['instruction'],'model':_0x57e482(0x19e),'dry_run':_0x1b6df0[_0x57e482(0x16d)][_0x57e482(0x141)],'file_exists':_0x32525c,'file_read_error':_0x3d0bdf,'file_readable':_0x1a284b!==null,'request_content':{'path':_0x1b6df0['data'][_0x57e482(0x194)],'code_edit':_0x1b6df0[_0x57e482(0x16d)][_0x57e482(0x167)],'instruction':_0x1b6df0[_0x57e482(0x16d)][_0x57e482(0x1e7)],'original_code':_0x1a284b!==null?_0x1a284b[_0x57e482(0x169)]>0xc350?_0x1a284b[_0x57e482(0x1b6)](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x1a284b[_0x57e482(0x169)]+_0x57e482(0x1ae):_0x1a284b:_0x57e482(0x1e3)+(_0x3d0bdf||_0x57e482(0x200))+']','original_code_length':_0x1a284b?.[_0x57e482(0x169)]??0x0,'model':_0x57e482(0x19e),'dry_run':_0x1b6df0[_0x57e482(0x16d)][_0x57e482(0x141)]}},'stack_trace':_0xe36a75 instanceof Error?_0xe36a75[_0x57e482(0x162)]:undefined,'source':_0x57e482(0x153)})[_0x57e482(0x221)](()=>{}),{'content':[{'type':_0x57e482(0x21c),'text':_0x57e482(0x1fb)+_0x1eadef}],'isError':!![]};}}case'codebase_search':{const _0x586427=WarpGrepArgsSchema['safeParse'](_0x3dcbc1);if(!_0x586427[_0x57e482(0x204)])return{'content':[{'type':_0x57e482(0x21c),'text':_0x57e482(0x197)+_0x586427[_0x57e482(0x190)]}],'isError':!![]};const _0x223a73=_0x463f98=>{const _0xb5b3aa=_0x57e482,_0x351a3f=[];for(const _0x323d9e of _0x463f98||[]){const _0x4bcbac=_0x323d9e[_0xb5b3aa(0x18e)],_0x598566=_0x323d9e['content'];if(_0x4bcbac===_0xb5b3aa(0x202)&&_0x598566){const _0x1170bf=_0x598566[_0xb5b3aa(0x1fc)]('\x0a')[_0xb5b3aa(0x1f9)](_0x1525bd=>_0x1525bd[_0xb5b3aa(0x19a)]());for(const _0x4aaf4c of _0x1170bf){const _0x5d68de=_0x4aaf4c[_0xb5b3aa(0x20e)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x5d68de){_0x351a3f[_0xb5b3aa(0x21f)](_0xb5b3aa(0x15b)+_0x5d68de[0x1]+'\x27\x20'+_0x5d68de[0x2]);continue;}const _0x4ea50c=_0x4aaf4c['match'](/^read\s+(.+)$/);if(_0x4ea50c){_0x351a3f[_0xb5b3aa(0x21f)](_0xb5b3aa(0x187)+_0x4ea50c[0x1]);continue;}const _0x5a41be=_0x4aaf4c[_0xb5b3aa(0x20e)](/^list_directory\s+(.+)$/);if(_0x5a41be){_0x351a3f['push'](_0xb5b3aa(0x1d9)+_0x5a41be[0x1]);continue;}}}}return _0x351a3f;},_0x4fb404=_0x5efd75=>{const _0x56e8f3=_0x57e482,_0x34f074=[];if(!_0x5efd75||!Array[_0x56e8f3(0x21b)](_0x5efd75))return _0x34f074;const _0x1dfc35=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x56e8f3(0x1b8),'tool':_0x56e8f3(0x208)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x56e8f3(0x14b),'tool':_0x56e8f3(0x208)},{'pattern':/\[READ ERROR\]/,'error_type':_0x56e8f3(0x1b0),'tool':_0x56e8f3(0x208)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x56e8f3(0x217),'tool':_0x56e8f3(0x208)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x56e8f3(0x1e4),'tool':_0x56e8f3(0x1c1)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x56e8f3(0x1cd),'tool':_0x56e8f3(0x1c1)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x56e8f3(0x217),'tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':'read'},{'pattern':/not a text file/,'error_type':_0x56e8f3(0x217),'tool':'read'},{'pattern':/symbolic link/,'error_type':_0x56e8f3(0x201),'tool':_0x56e8f3(0x208)},{'pattern':/Error reading file:/,'error_type':_0x56e8f3(0x1b0),'tool':_0x56e8f3(0x208)},{'pattern':/status="error"/,'error_type':_0x56e8f3(0x17c),'tool':'unknown'}];let _0x200bbc=0x0;for(const _0x56e18b of _0x5efd75){if(_0x56e18b[_0x56e8f3(0x18e)]===_0x56e8f3(0x166)){_0x200bbc++;const _0x202f0f=_0x56e18b['content'];if(!_0x202f0f||typeof _0x202f0f!=='string')continue;for(const {pattern:_0x4db7ae,error_type:_0x16402f,tool:_0x18f6bd}of _0x1dfc35){const _0x1de3a2=_0x202f0f[_0x56e8f3(0x20e)](new RegExp(_0x4db7ae[_0x56e8f3(0x1f5)],'g'));if(_0x1de3a2)for(const _0x488ebd of _0x1de3a2){const _0x32c016=_0x202f0f[_0x56e8f3(0x225)](_0x488ebd),_0x2f344e=_0x202f0f[_0x56e8f3(0x1b6)](_0x32c016,Math[_0x56e8f3(0x1a4)](_0x32c016+0xc8,_0x202f0f[_0x56e8f3(0x169)]));_0x34f074[_0x56e8f3(0x21f)]({'tool':_0x18f6bd,'error_type':_0x16402f,'error_message':_0x2f344e['split']('\x0a')[0x0],'turn':_0x200bbc});}}}}return _0x34f074;};try{const _0x58744d=a0_0x4d30fe[_0x57e482(0x151)](_0x586427[_0x57e482(0x16d)][_0x57e482(0x211)]),_0x1a30cb=_0x586427['data']['search_type'],_0x128092=_0x1a30cb===_0x57e482(0x1bf)?{'allowNames':['node_modules']}:undefined,_0xfd53b8=new LocalRipgrepProvider(_0x58744d,undefined,_0x128092),_0x322d67=await runWarpGrep({'searchTerm':_0x586427[_0x57e482(0x16d)][_0x57e482(0x179)],'repoRoot':_0x58744d,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0xfd53b8,'search_type':_0x1a30cb}),_0x34396e=_0x4fb404(_0x322d67[_0x57e482(0x138)]);_0x34396e[_0x57e482(0x169)]>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x34396e['length']+_0x57e482(0x17e),'error_type':_0x57e482(0x127),'level':'warn','tool':'codebase_search','context':{'repo_path':_0x586427['data'][_0x57e482(0x211)],'query':_0x586427['data'][_0x57e482(0x179)],'model':_0x57e482(0x1da),'termination_reason':_0x322d67[_0x57e482(0x126)],'sub_tool_errors':_0x34396e,'timings':_0x322d67[_0x57e482(0x222)],'tool_calls':_0x223a73(_0x322d67['messages']),'messages':_0x322d67[_0x57e482(0x138)]?.[_0x57e482(0x1c9)](_0x155884=>({'role':_0x155884[_0x57e482(0x18e)],'content':_0x155884[_0x57e482(0x137)]}))},'source':_0x57e482(0x153)})['catch'](()=>{});let _0x1d901a='';if(_0x322d67[_0x57e482(0x126)]===_0x57e482(0x212)&&_0x322d67[_0x57e482(0x1fe)]?.['metadata']?.['files']){const _0x3847cb=_0x322d67[_0x57e482(0x1fe)][_0x57e482(0x15f)][_0x57e482(0x13a)];if(_0x3847cb[_0x57e482(0x169)]===0x0)return _0x1d901a=_0x322d67['finish'][_0x57e482(0x176)]||_0x57e482(0x159),{'content':[{'type':'text','text':_0x1d901a}]};const _0x482779=[],_0x47acda=[_0x57e482(0x19c)];for(const _0x389700 of _0x322d67[_0x57e482(0x138)]){const _0x97a639=_0x389700[_0x57e482(0x18e)],_0x195d5e=_0x389700['content'];if(_0x97a639===_0x57e482(0x202)&&_0x195d5e){const _0x447130=_0x195d5e[_0x57e482(0x1fc)]('\x0a')[_0x57e482(0x1f9)](_0x39f1a3=>_0x39f1a3['trim']());for(const _0x404246 of _0x447130){const _0x56f614=_0x404246[_0x57e482(0x20e)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x56f614){_0x47acda[_0x57e482(0x21f)](_0x57e482(0x171)+_0x56f614[0x1]+_0x57e482(0x15d)+_0x56f614[0x2]+'`');continue;}const _0x1f776f=_0x404246[_0x57e482(0x20e)](/^read\s+(.+)$/);if(_0x1f776f){_0x47acda[_0x57e482(0x21f)]('-\x20Read\x20file\x20`'+_0x1f776f[0x1]+'`');continue;}const _0x36667f=_0x404246[_0x57e482(0x20e)](/^list_directory\s+(.+)$/);if(_0x36667f){_0x47acda[_0x57e482(0x21f)](_0x57e482(0x1e0)+_0x36667f[0x1]+'`');continue;}}}}_0x482779[_0x57e482(0x21f)](_0x47acda[_0x57e482(0x1d1)]('\x0a'));const _0x2a439a=['',_0x57e482(0x1f0)];for(const _0x137ccc of _0x3847cb){if(_0x137ccc[_0x57e482(0x218)]==='*')_0x2a439a['push']('-\x20'+_0x137ccc['path']+':*');else{if(Array[_0x57e482(0x21b)](_0x137ccc['lines'])){const _0x31cb93=_0x137ccc[_0x57e482(0x218)][_0x57e482(0x1c9)](([_0xe1973c,_0x45d77f])=>{if(_0xe1973c===_0x45d77f)return''+_0xe1973c;return _0xe1973c+'-'+_0x45d77f;});_0x2a439a['push']('-\x20'+_0x137ccc[_0x57e482(0x194)]+':'+_0x31cb93['join'](','));}else _0x2a439a['push']('-\x20'+_0x137ccc[_0x57e482(0x194)]+':*');}}_0x2a439a[_0x57e482(0x21f)](''),_0x482779['push'](_0x2a439a[_0x57e482(0x1d1)]('\x0a')),_0x482779[_0x57e482(0x21f)](_0x57e482(0x203));const _0x6f5dbd=[];for(const _0x2ca3d3 of _0x3847cb){let _0x55510a=a0_0x4d30fe[_0x57e482(0x151)](_0x586427[_0x57e482(0x16d)]['repo_path'],_0x2ca3d3['path']),_0x2077b6=null,_0x2b3326=null;try{_0x2077b6=await a0_0xe4ef90[_0x57e482(0x178)](_0x55510a,{'encoding':_0x57e482(0x1cf)});}catch(_0x25396){const _0x405052=fixPathRepetition(_0x55510a);if(_0x405052)try{_0x2077b6=await a0_0xe4ef90[_0x57e482(0x178)](_0x405052,{'encoding':'utf-8'}),_0x55510a=_0x405052;}catch{_0x2b3326=_0x25396 instanceof Error?_0x25396:new Error(String(_0x25396));}else _0x2b3326=_0x25396 instanceof Error?_0x25396:new Error(String(_0x25396));}if(_0x2077b6!==null){const _0x373d2b=_0x2077b6[_0x57e482(0x1fc)](/\r?\n/),_0x5f245d=[_0x57e482(0x227)+_0x2ca3d3[_0x57e482(0x194)]+'\x22>'];if(_0x2ca3d3[_0x57e482(0x218)]==='*'||!Array[_0x57e482(0x21b)](_0x2ca3d3[_0x57e482(0x218)]))for(let _0x346dc8=0x1;_0x346dc8<=_0x373d2b[_0x57e482(0x169)];_0x346dc8++){const _0x1cafaa=_0x373d2b[_0x346dc8-0x1];_0x5f245d['push'](_0x346dc8+'|\x20'+_0x1cafaa);}else for(const [_0x99d447,_0x1a3957]of _0x2ca3d3['lines']){_0x5f245d[_0x57e482(0x169)]>0x1&&_0x5f245d[_0x57e482(0x21f)]('');for(let _0x593387=_0x99d447;_0x593387<=_0x1a3957&&_0x593387<=_0x373d2b[_0x57e482(0x169)];_0x593387++){const _0x4783ce=_0x373d2b[_0x593387-0x1];_0x5f245d['push'](_0x593387+'|\x20'+_0x4783ce);}}_0x5f245d[_0x57e482(0x21f)](_0x57e482(0x158)),_0x6f5dbd[_0x57e482(0x21f)](_0x5f245d[_0x57e482(0x1d1)]('\x0a'));}else _0x6f5dbd[_0x57e482(0x21f)](_0x57e482(0x227)+_0x2ca3d3[_0x57e482(0x194)]+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x2b3326?.[_0x57e482(0x21d)]||_0x57e482(0x196))+'\x0a</file>');}_0x482779[_0x57e482(0x21f)](_0x6f5dbd['join']('\x0a\x0a')),_0x1d901a=_0x482779[_0x57e482(0x1d1)]('\x0a');const _0x38b29c=_0x322d67[_0x57e482(0x20c)]?.[_0x57e482(0x1f9)](_0x44b75b=>_0x44b75b[_0x57e482(0x21d)]?.[_0x57e482(0x154)]('File\x20read\x20error:'))||[];if(_0x38b29c['length']>0x0){const _0x3dca4a=_0x38b29c[_0x57e482(0x1c9)](_0x54edd4=>_0x54edd4[_0x57e482(0x21d)])[_0x57e482(0x1d1)](';\x20');reportMorphError({'error_message':_0x3dca4a,'error_type':_0x57e482(0x15e),'context':{'tool':'codebase_search','repo_path':_0x586427[_0x57e482(0x16d)][_0x57e482(0x211)],'query':_0x586427[_0x57e482(0x16d)][_0x57e482(0x179)],'model':_0x57e482(0x1da),'termination_reason':_0x57e482(0x160),'error_count':_0x38b29c[_0x57e482(0x169)],'is_timeout':![],'timings':_0x322d67[_0x57e482(0x222)],'files_attempted':_0x3847cb[_0x57e482(0x1c9)](_0x457103=>({'path':_0x457103['path'],'lines':_0x457103[_0x57e482(0x218)]})),'tool_calls':_0x223a73(_0x322d67[_0x57e482(0x138)]),'messages':_0x322d67['messages']?.[_0x57e482(0x1c9)](_0x5ca33a=>({'role':_0x5ca33a[_0x57e482(0x18e)],'content':_0x5ca33a[_0x57e482(0x137)]})),'request_content':{'query':_0x586427[_0x57e482(0x16d)][_0x57e482(0x179)],'repo_path':_0x586427[_0x57e482(0x16d)][_0x57e482(0x211)],'repoRoot':a0_0x4d30fe[_0x57e482(0x151)](_0x586427[_0x57e482(0x16d)][_0x57e482(0x211)]),'model':_0x57e482(0x1da)}},'source':_0x57e482(0x153)})['catch'](()=>{});}}else{if(_0x322d67[_0x57e482(0x126)]===_0x57e482(0x18a)&&_0x322d67['errors'][_0x57e482(0x169)]>0x0){const _0x429ae7=_0x322d67[_0x57e482(0x20c)][_0x57e482(0x1c9)](_0x28560b=>_0x28560b['message'])[_0x57e482(0x1d1)](';\x20');_0x1d901a=_0x57e482(0x20b)+_0x429ae7;const _0x187679=_0x429ae7[_0x57e482(0x1a9)]()[_0x57e482(0x1ca)](_0x57e482(0x13b))||_0x429ae7[_0x57e482(0x1a9)]()['includes']('timed\x20out')||_0x429ae7[_0x57e482(0x1a9)]()[_0x57e482(0x1ca)](_0x57e482(0x1a1)),_0x57655e=_0x322d67[_0x57e482(0x1fe)]?.['metadata']?.[_0x57e482(0x13a)],_0x2e2569=_0x322d67[_0x57e482(0x20c)][0x0];reportMorphError({'error_message':_0x429ae7,'error_type':_0x187679?_0x57e482(0x12e):_0x2e2569?.[_0x57e482(0x1c0)]?.[_0x57e482(0x220)]||_0x57e482(0x165),'context':{'tool':_0x57e482(0x175),'repo_path':_0x586427[_0x57e482(0x16d)][_0x57e482(0x211)],'query':_0x586427[_0x57e482(0x16d)][_0x57e482(0x179)],'model':_0x57e482(0x1da),'termination_reason':_0x322d67[_0x57e482(0x126)],'error_count':_0x322d67[_0x57e482(0x20c)][_0x57e482(0x169)],'is_timeout':_0x187679,'timings':_0x322d67[_0x57e482(0x222)],'files_attempted':_0x57655e?.[_0x57e482(0x1c9)](_0x3765ca=>({'path':_0x3765ca[_0x57e482(0x194)],'lines':_0x3765ca[_0x57e482(0x218)]})),'tool_calls':_0x223a73(_0x322d67[_0x57e482(0x138)]),'messages':_0x322d67[_0x57e482(0x138)]?.[_0x57e482(0x1c9)](_0x1a3dc6=>({'role':_0x1a3dc6[_0x57e482(0x18e)],'content':_0x1a3dc6['content']})),'request_content':{'query':_0x586427[_0x57e482(0x16d)][_0x57e482(0x179)],'repo_path':_0x586427[_0x57e482(0x16d)][_0x57e482(0x211)],'repoRoot':a0_0x4d30fe[_0x57e482(0x151)](_0x586427[_0x57e482(0x16d)]['repo_path']),'model':'morph-warp-grep-v1-1111v0'}},'stack_trace':_0x2e2569?.['stack']||undefined,'source':_0x57e482(0x153)})[_0x57e482(0x221)](()=>{});}else _0x1d901a='Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.';}return{'content':[{'type':_0x57e482(0x21c),'text':_0x1d901a}]};}catch(_0x150ac5){const _0x213d2d=_0x150ac5 instanceof Error?_0x150ac5[_0x57e482(0x21d)]:String(_0x150ac5),_0x21005b=_0x213d2d[_0x57e482(0x1a9)]()['includes'](_0x57e482(0x13b))||_0x213d2d['toLowerCase']()[_0x57e482(0x1ca)]('timed\x20out')||_0x213d2d[_0x57e482(0x1a9)]()[_0x57e482(0x1ca)]('etimedout')||_0x150ac5 instanceof Error&&_0x150ac5['name']===_0x57e482(0x12e);return reportMorphError({'error_message':_0x213d2d,'error_type':_0x21005b?_0x57e482(0x12e):_0x150ac5 instanceof Error?_0x150ac5['constructor'][_0x57e482(0x220)]:'UnknownError','context':{'tool':_0x57e482(0x175),'repo_path':_0x586427[_0x57e482(0x16d)][_0x57e482(0x211)],'query':_0x586427[_0x57e482(0x16d)][_0x57e482(0x179)],'model':_0x57e482(0x1da),'is_timeout':_0x21005b,'exception_phase':_0x57e482(0x1df),'request_content':{'query':_0x586427[_0x57e482(0x16d)][_0x57e482(0x179)],'repo_path':_0x586427[_0x57e482(0x16d)][_0x57e482(0x211)],'repoRoot':a0_0x4d30fe[_0x57e482(0x151)](_0x586427[_0x57e482(0x16d)][_0x57e482(0x211)]),'model':_0x57e482(0x1da)}},'stack_trace':_0x150ac5 instanceof Error?_0x150ac5[_0x57e482(0x162)]:undefined,'source':_0x57e482(0x153)})[_0x57e482(0x221)](()=>{}),{'content':[{'type':'text','text':_0x57e482(0x1ac)+_0x213d2d}],'isError':![]};}}case _0x57e482(0x150):{const _0xa44b15=WarpGrepGitHubArgsSchema[_0x57e482(0x1d2)](_0x3dcbc1);if(!_0xa44b15['success'])return{'content':[{'type':_0x57e482(0x21c),'text':'Invalid\x20arguments:\x20'+_0xa44b15[_0x57e482(0x190)]}],'isError':!![]};const _0x3c1421=_0xa44b15[_0x57e482(0x16d)][_0x57e482(0x1aa)]||_0xa44b15[_0x57e482(0x16d)]['owner_repo'];if(!_0x3c1421)return{'content':[{'type':_0x57e482(0x21c),'text':_0x57e482(0x1a5)}],'isError':!![]};const _0x3e85b9=MORPH_API_KEY;if(!_0x3e85b9)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x5b1d8a=Date[_0x57e482(0x147)]();logMcpStderr(_0x57e482(0x219)+_0x3c1421+_0x57e482(0x1c5)+_0xa44b15[_0x57e482(0x16d)][_0x57e482(0x179)]+'\x22');try{const _0x2201f8=new WarpGrepClient({'morphApiKey':_0x3e85b9,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x4e5f1c=await _0x2201f8[_0x57e482(0x13c)]({'searchTerm':_0xa44b15['data'][_0x57e482(0x179)],'github':_0x3c1421,'branch':_0xa44b15[_0x57e482(0x16d)][_0x57e482(0x16c)]}),_0x4d4aa7=Date[_0x57e482(0x147)]()-_0x5b1d8a;logMcpStderr('[github_codebase_search]\x20Done\x20in\x20'+_0x4d4aa7+'ms.\x20Success:\x20'+_0x4e5f1c[_0x57e482(0x204)]);const _0x49875f=formatResult(_0x4e5f1c);return{'content':[{'type':_0x57e482(0x21c),'text':_0x49875f}]};}catch(_0x4fc322){const _0x1375a2=Date[_0x57e482(0x147)]()-_0x5b1d8a,_0x239904=_0x4fc322 instanceof Error?_0x4fc322[_0x57e482(0x21d)]:String(_0x4fc322);return logMcpStderr(_0x57e482(0x1d5)+_0x1375a2+_0x57e482(0x16e),_0x239904),reportMorphError({'error_message':_0x239904,'error_type':_0x4fc322 instanceof Error?_0x4fc322[_0x57e482(0x1c0)][_0x57e482(0x220)]:_0x57e482(0x1ef),'context':{'tool':_0x57e482(0x150),'github_url':_0x3c1421,'search_string':_0xa44b15[_0x57e482(0x16d)][_0x57e482(0x179)],'branch':_0xa44b15['data'][_0x57e482(0x16c)]},'stack_trace':_0x4fc322 instanceof Error?_0x4fc322[_0x57e482(0x162)]:undefined,'source':_0x57e482(0x153),'tool':_0x57e482(0x150),'latency_ms':_0x1375a2})[_0x57e482(0x221)](()=>{}),{'content':[{'type':_0x57e482(0x21c),'text':'GitHub\x20search\x20failed:\x20'+_0x239904}],'isError':![]};}}default:throw new Error(_0x57e482(0x1b9)+_0x4880b4);}}catch(_0x344520){const _0x497099=_0x344520 instanceof Error?_0x344520[_0x57e482(0x21d)]:String(_0x344520);return reportMorphError({'error_message':_0x497099,'error_type':_0x344520 instanceof Error?_0x344520[_0x57e482(0x1c0)][_0x57e482(0x220)]:_0x57e482(0x1ef),'context':{'tool':_0x4880b4,'arguments':_0x3dcbc1?JSON[_0x57e482(0x18f)](_0x3dcbc1)[_0x57e482(0x1b6)](0x0,0x1f4):undefined,'mcp_server_version':_0x57e482(0x15c)},'stack_trace':_0x344520 instanceof Error?_0x344520[_0x57e482(0x162)]:undefined,'source':'mcp-filesystem'})[_0x57e482(0x221)](()=>{}),{'content':[{'type':_0x57e482(0x21c),'text':'Error:\x20'+_0x497099}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x4a9d21){const _0x2e9e6b=a0_0x516777,_0x1cd4aa=await getValidRootDirectories(_0x4a9d21);if(_0x1cd4aa[_0x2e9e6b(0x169)]>0x0)allowedDirectories=[..._0x1cd4aa],logMcpStderr(_0x2e9e6b(0x1bd)+_0x1cd4aa['length']+'\x20valid\x20directories');else{logMcpStderr(_0x2e9e6b(0x214));if(ENABLE_WORKSPACE_MODE)try{const _0x4d3cd7=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x4d3cd7&&(allowedDirectories=[_0x4d3cd7],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x4d3cd7));}catch(_0xcd0834){logMcpStderr(_0x2e9e6b(0x1ad)+_0xcd0834);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x10ef48=a0_0x516777;try{const _0x12b7dd=await server[_0x10ef48(0x182)]();_0x12b7dd&&_0x10ef48(0x14d)in _0x12b7dd&&await updateAllowedDirectoriesFromRoots(_0x12b7dd[_0x10ef48(0x14d)]);}catch(_0x23c5cb){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x23c5cb instanceof Error?_0x23c5cb['message']:String(_0x23c5cb));}}),server[a0_0x516777(0x213)]=async()=>{const _0x42eba1=a0_0x516777,_0x47bbf7=server[_0x42eba1(0x1bc)]();if(_0x47bbf7?.[_0x42eba1(0x14d)])try{const _0x2f22d2=await server[_0x42eba1(0x182)]();_0x2f22d2&&_0x42eba1(0x14d)in _0x2f22d2?await updateAllowedDirectoriesFromRoots(_0x2f22d2['roots']):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x5e3b49){logMcpStderr(_0x42eba1(0x181),_0x5e3b49 instanceof Error?_0x5e3b49[_0x42eba1(0x21d)]:String(_0x5e3b49));}else{if(allowedDirectories['length']>0x0)logMcpStderr(_0x42eba1(0x1d4),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x42eba1(0x173));else throw new Error(_0x42eba1(0x145));}}};async function runServer(){const _0x147f75=a0_0x516777,_0x34e601=new StdioServerTransport();await server[_0x147f75(0x21a)](_0x34e601),logMcpStderr('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories[_0x147f75(0x169)]===0x0&&logMcpStderr('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()['catch'](_0x4b24d2=>{const _0x544618=a0_0x516777;logMcpStderr(_0x544618(0x1f4),_0x4b24d2),process['exit'](0x1);});
package/dist/log-utils.js CHANGED
@@ -1 +1 @@
1
- var a1_0x5b1d56=a1_0x5c23;(function(_0x1defe7,_0x1945e0){var _0x2db73a=a1_0x5c23,_0x47a7de=_0x1defe7();while(!![]){try{var _0x27d77=-parseInt(_0x2db73a(0x8b))/0x1*(parseInt(_0x2db73a(0x92))/0x2)+-parseInt(_0x2db73a(0x97))/0x3+parseInt(_0x2db73a(0x96))/0x4*(-parseInt(_0x2db73a(0x95))/0x5)+-parseInt(_0x2db73a(0x98))/0x6+parseInt(_0x2db73a(0x89))/0x7+parseInt(_0x2db73a(0x91))/0x8*(-parseInt(_0x2db73a(0x90))/0x9)+-parseInt(_0x2db73a(0x8f))/0xa*(-parseInt(_0x2db73a(0x8d))/0xb);if(_0x27d77===_0x1945e0)break;else _0x47a7de['push'](_0x47a7de['shift']());}catch(_0x55e08d){_0x47a7de['push'](_0x47a7de['shift']());}}}(a1_0x46bd,0xecf16));function a1_0x5c23(_0x49b57c,_0x49a04e){_0x49b57c=_0x49b57c-0x84;var _0x46bdca=a1_0x46bd();var _0x5c2301=_0x46bdca[_0x49b57c];return _0x5c2301;}import a1_0x23f092 from'os';export function getOperatingSystemType(_0x60c9c7=a1_0x23f092[a1_0x5b1d56(0x85)]()){var _0x346059=a1_0x5b1d56;switch(_0x60c9c7){case _0x346059(0x84):return _0x346059(0x94);case _0x346059(0x8a):return _0x346059(0x8c);case _0x346059(0x87):return _0x346059(0x88);default:return _0x346059(0x93);}}export function formatMcpLogMessage(_0x279b7f,_0x11e814=a1_0x23f092[a1_0x5b1d56(0x85)]()){var _0x5d4bd2=a1_0x5b1d56;return _0x5d4bd2(0x8e)+getOperatingSystemType(_0x11e814)+']\x20'+_0x279b7f;}function a1_0x46bd(){var _0x5a0b54=['Linux','9853095UCSLPj','win32','72519QeUGaG','Windows','17121346ONEdik','[os=','20rXqbJK','108711llSaHo','552QKtKQA','26ekdBBY','Unknown','macOS','11665zctDHl','1016rdQncj','3148977lsOrwu','789600wLYMWE','darwin','platform','error','linux'];a1_0x46bd=function(){return _0x5a0b54;};return a1_0x46bd();}export function logMcpStderr(_0x5e0c23,..._0x39a706){var _0x56ee20=a1_0x5b1d56;console[_0x56ee20(0x86)](formatMcpLogMessage(_0x5e0c23),..._0x39a706);}
1
+ var a1_0x23bcac=a1_0x3646;function a1_0x45de(){var _0x5e0c33=['32934HkHzSK','darwin','win32','1453590toaoNO','6JIRoxY','29511kOfxRs','linux','2592KYMJoy','690SxbsvF','6HAaXPv','platform','macOS','540236FfUbNd','98UkEoUs','124602gnMPua','1671328scXuCg','64604ylrphh'];a1_0x45de=function(){return _0x5e0c33;};return a1_0x45de();}function a1_0x3646(_0x33cd30,_0xe781c4){_0x33cd30=_0x33cd30-0x161;var _0x45de1b=a1_0x45de();var _0x3646bc=_0x45de1b[_0x33cd30];return _0x3646bc;}(function(_0x5d3878,_0x3d579c){var _0x33f18c=a1_0x3646,_0x3e83a6=_0x5d3878();while(!![]){try{var _0x7cee33=-parseInt(_0x33f18c(0x167))/0x1*(parseInt(_0x33f18c(0x16c))/0x2)+-parseInt(_0x33f18c(0x171))/0x3*(parseInt(_0x33f18c(0x163))/0x4)+-parseInt(_0x33f18c(0x16b))/0x5+-parseInt(_0x33f18c(0x165))/0x6*(-parseInt(_0x33f18c(0x164))/0x7)+parseInt(_0x33f18c(0x166))/0x8+parseInt(_0x33f18c(0x16d))/0x9*(-parseInt(_0x33f18c(0x170))/0xa)+-parseInt(_0x33f18c(0x168))/0xb*(-parseInt(_0x33f18c(0x16f))/0xc);if(_0x7cee33===_0x3d579c)break;else _0x3e83a6['push'](_0x3e83a6['shift']());}catch(_0xc880a0){_0x3e83a6['push'](_0x3e83a6['shift']());}}}(a1_0x45de,0x28653));import a1_0x15afdf from'os';export function getOperatingSystemType(_0x5387da=a1_0x15afdf[a1_0x23bcac(0x161)]()){var _0x5e6f39=a1_0x23bcac;switch(_0x5387da){case _0x5e6f39(0x169):return _0x5e6f39(0x162);case _0x5e6f39(0x16a):return'Windows';case _0x5e6f39(0x16e):return'Linux';default:return'Unknown';}}export function formatMcpLogMessage(_0xf9daa7,_0x33f682=a1_0x15afdf[a1_0x23bcac(0x161)]()){return'[os='+getOperatingSystemType(_0x33f682)+']\x20'+_0xf9daa7;}export function logMcpStderr(_0x286398,..._0x5169a0){console['error'](formatMcpLogMessage(_0x286398),..._0x5169a0);}
@@ -1 +1 @@
1
- (function(_0x8e3760,_0x24714a){const _0x3f7dd6=a2_0x5efc,_0x14102c=_0x8e3760();while(!![]){try{const _0x17771b=parseInt(_0x3f7dd6(0x17c))/0x1+-parseInt(_0x3f7dd6(0x185))/0x2*(parseInt(_0x3f7dd6(0x186))/0x3)+-parseInt(_0x3f7dd6(0x192))/0x4*(-parseInt(_0x3f7dd6(0x190))/0x5)+parseInt(_0x3f7dd6(0x17d))/0x6*(-parseInt(_0x3f7dd6(0x194))/0x7)+parseInt(_0x3f7dd6(0x18f))/0x8*(-parseInt(_0x3f7dd6(0x189))/0x9)+-parseInt(_0x3f7dd6(0x195))/0xa*(-parseInt(_0x3f7dd6(0x18b))/0xb)+parseInt(_0x3f7dd6(0x188))/0xc*(parseInt(_0x3f7dd6(0x183))/0xd);if(_0x17771b===_0x24714a)break;else _0x14102c['push'](_0x14102c['shift']());}catch(_0x5bac44){_0x14102c['push'](_0x14102c['shift']());}}}(a2_0xdad6,0xde235));import a2_0x56a854 from'path';import a2_0x1d6f39 from'os';function a2_0xdad6(){const _0x18c898=['test','/mnt/','272gRRyhx','45QjPDvQ','join','496916zfbCzh','charAt','1926239WeHdXT','4692290qcTGER','1672204BTMrwa','24dHGATf','startsWith','normalize','substring','trim','replace','2171zyGUHU','slice','254466WhtjYr','36CBrUoz','homedir','31260aqGwVV','41598hBkAiI','toUpperCase','11cRYGKS','match'];a2_0xdad6=function(){return _0x18c898;};return a2_0xdad6();}export function convertToWindowsPath(_0xa16eb2){const _0x506f21=a2_0x5efc;if(_0xa16eb2[_0x506f21(0x17e)](_0x506f21(0x18e))){const _0x2459b5=_0xa16eb2[_0x506f21(0x193)](0x5)[_0x506f21(0x18a)](),_0x165315=_0xa16eb2[_0x506f21(0x184)](0x6)[_0x506f21(0x182)](/\//g,'\x5c');return _0x2459b5+':'+_0x165315;}if(_0xa16eb2[_0x506f21(0x18c)](/^\/[a-zA-Z]\//)){const _0x49966f=_0xa16eb2[_0x506f21(0x193)](0x1)[_0x506f21(0x18a)](),_0x511da0=_0xa16eb2[_0x506f21(0x184)](0x2)[_0x506f21(0x182)](/\//g,'\x5c');return _0x49966f+':'+_0x511da0;}if(_0xa16eb2[_0x506f21(0x18c)](/^[a-zA-Z]:/))return _0xa16eb2[_0x506f21(0x182)](/\//g,'\x5c');return _0xa16eb2;}export function normalizePath(_0x900d81){const _0x3196e8=a2_0x5efc;_0x900d81=_0x900d81[_0x3196e8(0x181)]()[_0x3196e8(0x182)](/^["']|["']$/g,'');const _0x40c802=_0x900d81[_0x3196e8(0x17e)]('/')&&!_0x900d81[_0x3196e8(0x18c)](/^\/mnt\/[a-z]\//i)&&!_0x900d81['match'](/^\/[a-zA-Z]\//);if(_0x40c802)return _0x900d81[_0x3196e8(0x182)](/\/+/g,'/')[_0x3196e8(0x182)](/\/+$/,'');_0x900d81=convertToWindowsPath(_0x900d81);if(_0x900d81['startsWith']('\x5c\x5c')){let _0x40a8ca=_0x900d81;_0x40a8ca=_0x40a8ca[_0x3196e8(0x182)](/^\\{2,}/,'\x5c\x5c');const _0x47cce7=_0x40a8ca[_0x3196e8(0x180)](0x2)['replace'](/\\\\/g,'\x5c');_0x900d81='\x5c\x5c'+_0x47cce7;}else _0x900d81=_0x900d81[_0x3196e8(0x182)](/\\\\/g,'\x5c');let _0x56de2b=a2_0x56a854[_0x3196e8(0x17f)](_0x900d81);_0x900d81[_0x3196e8(0x17e)]('\x5c\x5c')&&!_0x56de2b[_0x3196e8(0x17e)]('\x5c\x5c')&&(_0x56de2b='\x5c'+_0x56de2b);if(_0x56de2b[_0x3196e8(0x18c)](/^[a-zA-Z]:/)){let _0x5b1e8b=_0x56de2b[_0x3196e8(0x182)](/\//g,'\x5c');return/^[a-z]:/[_0x3196e8(0x18d)](_0x5b1e8b)&&(_0x5b1e8b=_0x5b1e8b['charAt'](0x0)[_0x3196e8(0x18a)]()+_0x5b1e8b[_0x3196e8(0x184)](0x1)),_0x5b1e8b;}return _0x56de2b[_0x3196e8(0x182)](/\//g,'\x5c');}function a2_0x5efc(_0x26e004,_0x1ca634){_0x26e004=_0x26e004-0x17c;const _0xdad610=a2_0xdad6();let _0x5efc15=_0xdad610[_0x26e004];return _0x5efc15;}export function expandHome(_0x3f29e1){const _0x482cb7=a2_0x5efc;if(_0x3f29e1[_0x482cb7(0x17e)]('~/')||_0x3f29e1==='~')return a2_0x56a854[_0x482cb7(0x191)](a2_0x1d6f39[_0x482cb7(0x187)](),_0x3f29e1[_0x482cb7(0x184)](0x1));return _0x3f29e1;}
1
+ (function(_0x513723,_0x465a31){const _0x5db65c=a2_0x52ef,_0x25c7fc=_0x513723();while(!![]){try{const _0x292c22=-parseInt(_0x5db65c(0xf3))/0x1*(parseInt(_0x5db65c(0x103))/0x2)+parseInt(_0x5db65c(0x102))/0x3*(-parseInt(_0x5db65c(0xf2))/0x4)+-parseInt(_0x5db65c(0xf7))/0x5*(parseInt(_0x5db65c(0xfb))/0x6)+-parseInt(_0x5db65c(0x105))/0x7+-parseInt(_0x5db65c(0xf8))/0x8+-parseInt(_0x5db65c(0xf6))/0x9*(parseInt(_0x5db65c(0x101))/0xa)+parseInt(_0x5db65c(0x104))/0xb;if(_0x292c22===_0x465a31)break;else _0x25c7fc['push'](_0x25c7fc['shift']());}catch(_0x458f4a){_0x25c7fc['push'](_0x25c7fc['shift']());}}}(a2_0x8f30,0x92ada));import a2_0x247438 from'path';function a2_0x52ef(_0x3cd0e5,_0x4f5b15){_0x3cd0e5=_0x3cd0e5-0xf2;const _0x8f30ca=a2_0x8f30();let _0x52ef25=_0x8f30ca[_0x3cd0e5];return _0x52ef25;}import a2_0x181f39 from'os';export function convertToWindowsPath(_0x21af16){const _0x3c7ed4=a2_0x52ef;if(_0x21af16[_0x3c7ed4(0x108)](_0x3c7ed4(0xf5))){const _0xb56a0d=_0x21af16['charAt'](0x5)[_0x3c7ed4(0x109)](),_0x43fd97=_0x21af16['slice'](0x6)[_0x3c7ed4(0x100)](/\//g,'\x5c');return _0xb56a0d+':'+_0x43fd97;}if(_0x21af16[_0x3c7ed4(0x106)](/^\/[a-zA-Z]\//)){const _0x250225=_0x21af16[_0x3c7ed4(0xfd)](0x1)[_0x3c7ed4(0x109)](),_0x3f3733=_0x21af16[_0x3c7ed4(0xfc)](0x2)[_0x3c7ed4(0x100)](/\//g,'\x5c');return _0x250225+':'+_0x3f3733;}if(_0x21af16['match'](/^[a-zA-Z]:/))return _0x21af16['replace'](/\//g,'\x5c');return _0x21af16;}function a2_0x8f30(){const _0x160caf=['534GLTDxo','substring','/mnt/','63dsmBkN','487015ZpkyUE','5980944DhNILF','join','test','6mkeUGA','slice','charAt','homedir','normalize','replace','415830nxZHeA','33ZCVoEf','4354sjUsAB','43139822YVqwSY','2335438GkWRwI','match','trim','startsWith','toUpperCase','250456URSGcU'];a2_0x8f30=function(){return _0x160caf;};return a2_0x8f30();}export function normalizePath(_0xd5ab3){const _0x253ba8=a2_0x52ef;_0xd5ab3=_0xd5ab3[_0x253ba8(0x107)]()[_0x253ba8(0x100)](/^["']|["']$/g,'');const _0x308ad8=_0xd5ab3[_0x253ba8(0x108)]('/')&&!_0xd5ab3['match'](/^\/mnt\/[a-z]\//i)&&!_0xd5ab3[_0x253ba8(0x106)](/^\/[a-zA-Z]\//);if(_0x308ad8)return _0xd5ab3[_0x253ba8(0x100)](/\/+/g,'/')['replace'](/\/+$/,'');_0xd5ab3=convertToWindowsPath(_0xd5ab3);if(_0xd5ab3['startsWith']('\x5c\x5c')){let _0x1d88db=_0xd5ab3;_0x1d88db=_0x1d88db[_0x253ba8(0x100)](/^\\{2,}/,'\x5c\x5c');const _0x2b7e55=_0x1d88db[_0x253ba8(0xf4)](0x2)[_0x253ba8(0x100)](/\\\\/g,'\x5c');_0xd5ab3='\x5c\x5c'+_0x2b7e55;}else _0xd5ab3=_0xd5ab3[_0x253ba8(0x100)](/\\\\/g,'\x5c');let _0x4c45cf=a2_0x247438[_0x253ba8(0xff)](_0xd5ab3);_0xd5ab3[_0x253ba8(0x108)]('\x5c\x5c')&&!_0x4c45cf[_0x253ba8(0x108)]('\x5c\x5c')&&(_0x4c45cf='\x5c'+_0x4c45cf);if(_0x4c45cf['match'](/^[a-zA-Z]:/)){let _0x4bd385=_0x4c45cf[_0x253ba8(0x100)](/\//g,'\x5c');return/^[a-z]:/[_0x253ba8(0xfa)](_0x4bd385)&&(_0x4bd385=_0x4bd385[_0x253ba8(0xfd)](0x0)[_0x253ba8(0x109)]()+_0x4bd385['slice'](0x1)),_0x4bd385;}return _0x4c45cf['replace'](/\//g,'\x5c');}export function expandHome(_0x325167){const _0x1d40cf=a2_0x52ef;if(_0x325167[_0x1d40cf(0x108)]('~/')||_0x325167==='~')return a2_0x247438[_0x1d40cf(0xf9)](a2_0x181f39[_0x1d40cf(0xfe)](),_0x325167['slice'](0x1));return _0x325167;}
@@ -1 +1 @@
1
- (function(_0x1ac411,_0x41b745){const _0x3d6903=a3_0x15db,_0x45679b=_0x1ac411();while(!![]){try{const _0x2f1199=-parseInt(_0x3d6903(0x76))/0x1*(-parseInt(_0x3d6903(0x7a))/0x2)+parseInt(_0x3d6903(0x74))/0x3*(-parseInt(_0x3d6903(0x82))/0x4)+-parseInt(_0x3d6903(0x79))/0x5+parseInt(_0x3d6903(0x87))/0x6*(parseInt(_0x3d6903(0x81))/0x7)+parseInt(_0x3d6903(0x80))/0x8+-parseInt(_0x3d6903(0x83))/0x9+parseInt(_0x3d6903(0x7f))/0xa*(parseInt(_0x3d6903(0x7e))/0xb);if(_0x2f1199===_0x41b745)break;else _0x45679b['push'](_0x45679b['shift']());}catch(_0x250b2c){_0x45679b['push'](_0x45679b['shift']());}}}(a3_0x4d1a,0x2fc60));import a3_0x233d0a from'path';function a3_0x15db(_0x1d928a,_0x4b23a3){_0x1d928a=_0x1d928a-0x73;const _0x4d1a9e=a3_0x4d1a();let _0x15db8a=_0x4d1a9e[_0x1d928a];return _0x15db8a;}export function isPathWithinAllowedDirectories(_0x258186,_0x1ec307){const _0x13d007=a3_0x15db;if(typeof _0x258186!==_0x13d007(0x84)||!Array[_0x13d007(0x7d)](_0x1ec307))return![];if(!_0x258186||_0x1ec307['length']===0x0)return![];if(_0x258186[_0x13d007(0x85)]('\x00'))return![];let _0x2bc9c6;try{_0x2bc9c6=a3_0x233d0a[_0x13d007(0x77)](a3_0x233d0a['normalize'](_0x258186));}catch{return![];}if(!a3_0x233d0a[_0x13d007(0x86)](_0x2bc9c6))throw new Error(_0x13d007(0x7b));return _0x1ec307[_0x13d007(0x78)](_0x26f331=>{const _0x482140=_0x13d007;if(typeof _0x26f331!=='string'||!_0x26f331)return![];if(_0x26f331[_0x482140(0x85)]('\x00'))return![];let _0xa0f6e7;try{_0xa0f6e7=a3_0x233d0a['resolve'](a3_0x233d0a['normalize'](_0x26f331));}catch{return![];}if(!a3_0x233d0a[_0x482140(0x86)](_0xa0f6e7))throw new Error(_0x482140(0x73));if(_0x2bc9c6===_0xa0f6e7)return!![];if(_0xa0f6e7===a3_0x233d0a[_0x482140(0x75)])return _0x2bc9c6[_0x482140(0x7c)](a3_0x233d0a['sep']);return _0x2bc9c6[_0x482140(0x7c)](_0xa0f6e7+a3_0x233d0a[_0x482140(0x75)]);});}function a3_0x4d1a(){const _0x434152=['Path\x20must\x20be\x20absolute\x20after\x20normalization','startsWith','isArray','209fZnAqB','126460TDEsaF','625880wumyQU','24437oEJvXT','4rSCqIK','1570104yZsEXC','string','includes','isAbsolute','150ZYKUHK','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','306219mWaKil','sep','19055tcciRE','resolve','some','715900QpJimK','22hXIpqH'];a3_0x4d1a=function(){return _0x434152;};return a3_0x4d1a();}
1
+ (function(_0x446ceb,_0x68c41d){const _0x38be77=a3_0x1452,_0x50da33=_0x446ceb();while(!![]){try{const _0x55cd6b=parseInt(_0x38be77(0x1ba))/0x1*(parseInt(_0x38be77(0x1af))/0x2)+parseInt(_0x38be77(0x1ac))/0x3*(-parseInt(_0x38be77(0x1aa))/0x4)+parseInt(_0x38be77(0x1bc))/0x5*(-parseInt(_0x38be77(0x1ab))/0x6)+-parseInt(_0x38be77(0x1b4))/0x7*(parseInt(_0x38be77(0x1ae))/0x8)+-parseInt(_0x38be77(0x1b0))/0x9+parseInt(_0x38be77(0x1b5))/0xa+parseInt(_0x38be77(0x1b3))/0xb;if(_0x55cd6b===_0x68c41d)break;else _0x50da33['push'](_0x50da33['shift']());}catch(_0x54656c){_0x50da33['push'](_0x50da33['shift']());}}}(a3_0xa7cc,0xa67c3));function a3_0x1452(_0x1d52a2,_0x58c3c3){_0x1d52a2=_0x1d52a2-0x1a8;const _0xa7cca5=a3_0xa7cc();let _0x145260=_0xa7cca5[_0x1d52a2];return _0x145260;}import a3_0x2e5f0e from'path';export function isPathWithinAllowedDirectories(_0x18cb23,_0x11508d){const _0x17ddd8=a3_0x1452;if(typeof _0x18cb23!==_0x17ddd8(0x1b9)||!Array['isArray'](_0x11508d))return![];if(!_0x18cb23||_0x11508d[_0x17ddd8(0x1a8)]===0x0)return![];if(_0x18cb23[_0x17ddd8(0x1b7)]('\x00'))return![];let _0x3adf2c;try{_0x3adf2c=a3_0x2e5f0e[_0x17ddd8(0x1a9)](a3_0x2e5f0e[_0x17ddd8(0x1b2)](_0x18cb23));}catch{return![];}if(!a3_0x2e5f0e[_0x17ddd8(0x1ad)](_0x3adf2c))throw new Error(_0x17ddd8(0x1b6));return _0x11508d['some'](_0x32440a=>{const _0x3fcae4=_0x17ddd8;if(typeof _0x32440a!==_0x3fcae4(0x1b9)||!_0x32440a)return![];if(_0x32440a['includes']('\x00'))return![];let _0x3018f0;try{_0x3018f0=a3_0x2e5f0e[_0x3fcae4(0x1a9)](a3_0x2e5f0e[_0x3fcae4(0x1b2)](_0x32440a));}catch{return![];}if(!a3_0x2e5f0e['isAbsolute'](_0x3018f0))throw new Error(_0x3fcae4(0x1b8));if(_0x3adf2c===_0x3018f0)return!![];if(_0x3018f0===a3_0x2e5f0e[_0x3fcae4(0x1bb)])return _0x3adf2c[_0x3fcae4(0x1b1)](a3_0x2e5f0e[_0x3fcae4(0x1bb)]);return _0x3adf2c[_0x3fcae4(0x1b1)](_0x3018f0+a3_0x2e5f0e['sep']);});}function a3_0xa7cc(){const _0x57152b=['15687848qytkxD','3521861AyhzBt','4559910MpsfBg','Path\x20must\x20be\x20absolute\x20after\x20normalization','includes','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','string','368241BRQmNH','sep','5nUaknZ','length','resolve','4AhPHDl','311154EkBboq','1261815akWQht','isAbsolute','16CbmBAZ','4hOacZT','4122072oGErRP','startsWith','normalize'];a3_0xa7cc=function(){return _0x57152b;};return a3_0xa7cc();}
@@ -1 +1 @@
1
- (function(_0xf36ca8,_0x4bdfd0){const _0x3b9425=a4_0x7bee,_0x2ee642=_0xf36ca8();while(!![]){try{const _0x2c0ada=-parseInt(_0x3b9425(0x79))/0x1*(-parseInt(_0x3b9425(0x72))/0x2)+parseInt(_0x3b9425(0x7f))/0x3*(-parseInt(_0x3b9425(0x84))/0x4)+parseInt(_0x3b9425(0x8b))/0x5+-parseInt(_0x3b9425(0x7c))/0x6*(parseInt(_0x3b9425(0x74))/0x7)+-parseInt(_0x3b9425(0x80))/0x8*(parseInt(_0x3b9425(0x86))/0x9)+parseInt(_0x3b9425(0x85))/0xa+parseInt(_0x3b9425(0x89))/0xb;if(_0x2c0ada===_0x4bdfd0)break;else _0x2ee642['push'](_0x2ee642['shift']());}catch(_0x321135){_0x2ee642['push'](_0x2ee642['shift']());}}}(a4_0x2f98,0x924ac));import{promises as a4_0x34385e}from'fs';import a4_0x44c95a from'path';import a4_0x48e49f from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x432ffb){const _0x2300d6=a4_0x7bee;try{const _0x59f896=_0x432ffb[_0x2300d6(0x75)](_0x2300d6(0x81))?_0x432ffb[_0x2300d6(0x71)](0x7):_0x432ffb,_0x3c033d=_0x59f896[_0x2300d6(0x75)]('~/')||_0x59f896==='~'?a4_0x44c95a[_0x2300d6(0x78)](a4_0x48e49f[_0x2300d6(0x83)](),_0x59f896[_0x2300d6(0x71)](0x1)):_0x59f896,_0x1683c9=a4_0x44c95a[_0x2300d6(0x76)](_0x3c033d),_0x50ae58=await a4_0x34385e[_0x2300d6(0x7d)](_0x1683c9);return normalizePath(_0x50ae58);}catch{return null;}}function a4_0x2f98(){const _0x3e1a9d=['push','Skipping\x20invalid\x20directory:\x20','17971987LdsMog','Skipping\x20','3553665ZLETTE','slice','1766348bHyAkS','uri','28714XjLubA','startsWith','resolve','invalid\x20path\x20or\x20inaccessible','join','1qIcpmY','\x20due\x20to\x20error:\x20','isDirectory','1506YbMEAo','realpath','stat','162366vhCWGT','72ebKcss','file://','message','homedir','44vpswYs','965110ITogYD','1100079XaXPYF'];a4_0x2f98=function(){return _0x3e1a9d;};return a4_0x2f98();}function a4_0x7bee(_0x132c80,_0xa83cff){_0x132c80=_0x132c80-0x71;const _0x2f98d9=a4_0x2f98();let _0x7beea7=_0x2f98d9[_0x132c80];return _0x7beea7;}function formatDirectoryError(_0x756972,_0x3dd3ad,_0x258f1b){const _0x3070bf=a4_0x7bee;if(_0x258f1b)return _0x3070bf(0x8a)+_0x258f1b+':\x20'+_0x756972;const _0x1ab9f0=_0x3dd3ad instanceof Error?_0x3dd3ad[_0x3070bf(0x82)]:String(_0x3dd3ad);return _0x3070bf(0x88)+_0x756972+_0x3070bf(0x7a)+_0x1ab9f0;}export async function getValidRootDirectories(_0x40f8b3){const _0x279e15=a4_0x7bee,_0x12db70=[];for(const _0x52fa5 of _0x40f8b3){const _0x10ffb0=await parseRootUri(_0x52fa5['uri']);if(!_0x10ffb0){logMcpStderr(formatDirectoryError(_0x52fa5[_0x279e15(0x73)],undefined,_0x279e15(0x77)));continue;}try{const _0x1fe37a=await a4_0x34385e[_0x279e15(0x7e)](_0x10ffb0);_0x1fe37a[_0x279e15(0x7b)]()?_0x12db70[_0x279e15(0x87)](_0x10ffb0):logMcpStderr(formatDirectoryError(_0x10ffb0,undefined,'non-directory\x20root'));}catch(_0x5ec496){logMcpStderr(formatDirectoryError(_0x10ffb0,_0x5ec496));}}return _0x12db70;}
1
+ (function(_0x192320,_0x34a89a){const _0x49eb0e=a4_0x1d8d,_0x360536=_0x192320();while(!![]){try{const _0x2f1161=-parseInt(_0x49eb0e(0x188))/0x1+-parseInt(_0x49eb0e(0x18a))/0x2*(-parseInt(_0x49eb0e(0x19c))/0x3)+-parseInt(_0x49eb0e(0x191))/0x4*(parseInt(_0x49eb0e(0x19b))/0x5)+parseInt(_0x49eb0e(0x18c))/0x6+-parseInt(_0x49eb0e(0x193))/0x7+parseInt(_0x49eb0e(0x189))/0x8+parseInt(_0x49eb0e(0x18b))/0x9;if(_0x2f1161===_0x34a89a)break;else _0x360536['push'](_0x360536['shift']());}catch(_0x3fbe66){_0x360536['push'](_0x360536['shift']());}}}(a4_0x3e8d,0x85bc0));import{promises as a4_0x1ac395}from'fs';import a4_0x456e5b from'path';function a4_0x3e8d(){const _0x2b6150=['uri','invalid\x20path\x20or\x20inaccessible','\x20due\x20to\x20error:\x20','realpath','17615aelgRT','307569QBxwRi','homedir','Skipping\x20invalid\x20directory:\x20','stat','resolve','509918hDfAGt','5825464oTAQWb','18AOMvrK','924426RBrMap','1796334wlvCvq','startsWith','file://','non-directory\x20root','Skipping\x20','52oBDPCk','isDirectory','6646500hlFHbN','slice','push','message'];a4_0x3e8d=function(){return _0x2b6150;};return a4_0x3e8d();}import a4_0x23ea0d from'os';function a4_0x1d8d(_0x53d8b0,_0x42f76c){_0x53d8b0=_0x53d8b0-0x184;const _0x3e8d31=a4_0x3e8d();let _0x1d8df0=_0x3e8d31[_0x53d8b0];return _0x1d8df0;}import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x576a66){const _0x47b3f0=a4_0x1d8d;try{const _0x394bf5=_0x576a66['startsWith'](_0x47b3f0(0x18e))?_0x576a66[_0x47b3f0(0x194)](0x7):_0x576a66,_0x5a5761=_0x394bf5[_0x47b3f0(0x18d)]('~/')||_0x394bf5==='~'?a4_0x456e5b['join'](a4_0x23ea0d[_0x47b3f0(0x184)](),_0x394bf5[_0x47b3f0(0x194)](0x1)):_0x394bf5,_0x11b65a=a4_0x456e5b[_0x47b3f0(0x187)](_0x5a5761),_0x59cf77=await a4_0x1ac395[_0x47b3f0(0x19a)](_0x11b65a);return normalizePath(_0x59cf77);}catch{return null;}}function formatDirectoryError(_0x200fc0,_0x43b6ca,_0x262220){const _0x464c83=a4_0x1d8d;if(_0x262220)return _0x464c83(0x190)+_0x262220+':\x20'+_0x200fc0;const _0x1c4c96=_0x43b6ca instanceof Error?_0x43b6ca[_0x464c83(0x196)]:String(_0x43b6ca);return _0x464c83(0x185)+_0x200fc0+_0x464c83(0x199)+_0x1c4c96;}export async function getValidRootDirectories(_0x2500f4){const _0x58ce7d=a4_0x1d8d,_0x47a0e0=[];for(const _0x2468a3 of _0x2500f4){const _0x1e713a=await parseRootUri(_0x2468a3[_0x58ce7d(0x197)]);if(!_0x1e713a){logMcpStderr(formatDirectoryError(_0x2468a3[_0x58ce7d(0x197)],undefined,_0x58ce7d(0x198)));continue;}try{const _0x2a4751=await a4_0x1ac395[_0x58ce7d(0x186)](_0x1e713a);_0x2a4751[_0x58ce7d(0x192)]()?_0x47a0e0[_0x58ce7d(0x195)](_0x1e713a):logMcpStderr(formatDirectoryError(_0x1e713a,undefined,_0x58ce7d(0x18f)));}catch(_0x4bba4f){logMcpStderr(formatDirectoryError(_0x1e713a,_0x4bba4f));}}return _0x47a0e0;}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morphllm/morphmcp",
3
- "version": "0.8.131",
3
+ "version": "0.8.132",
4
4
  "description": "Fast & accurate MCP server with AI-powered file editing and intelligent code search. Prevents context pollution and saves time for a better user experience.",
5
5
  "license": "MIT",
6
6
  "author": "Morph (https://morphllm.com)",
@@ -35,7 +35,7 @@
35
35
  "dependencies": {
36
36
  "@google/generative-ai": "^0.21.0",
37
37
  "@modelcontextprotocol/sdk": "^1.12.3",
38
- "@morphllm/morphsdk": "0.2.139",
38
+ "@morphllm/morphsdk": "0.2.140",
39
39
  "@vscode/ripgrep": "^1.15.14",
40
40
  "axios": "^1.6.0",
41
41
  "chalk": "^5.3.0",