@morphllm/morphmcp 0.8.72 → 0.8.74

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_0x37c554=a0_0x32af;(function(_0x4f6805,_0x51a856){const _0x5bdcef=a0_0x32af,_0x312559=_0x4f6805();while(!![]){try{const _0x4d5e94=parseInt(_0x5bdcef(0x153))/0x1+parseInt(_0x5bdcef(0xdd))/0x2+parseInt(_0x5bdcef(0x174))/0x3+-parseInt(_0x5bdcef(0xc2))/0x4+parseInt(_0x5bdcef(0x105))/0x5*(-parseInt(_0x5bdcef(0x165))/0x6)+parseInt(_0x5bdcef(0x108))/0x7*(-parseInt(_0x5bdcef(0x100))/0x8)+parseInt(_0x5bdcef(0x14e))/0x9;if(_0x4d5e94===_0x51a856)break;else _0x312559['push'](_0x312559['shift']());}catch(_0x4a318b){_0x312559['push'](_0x312559['shift']());}}}(a0_0x5a79,0xbb23e));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_0x4604e7 from'fs/promises';import a0_0x57fd1b from'path';import a0_0x2170f3 from'os';function a0_0x32af(_0x54d660,_0x36054d){_0x54d660=_0x54d660-0xa9;const _0x5a793c=a0_0x5a79();let _0x32af53=_0x5a793c[_0x54d660];return _0x32af53;}import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider}from'@morphllm/morphsdk/tools/warp-grep';import{executeCodebaseSearch}from'@morphllm/morphsdk/tools/codebase-search';import a0_0x1753c4 from'axios';function fixPathRepetition(_0x2a823b){const _0x17bcc3=a0_0x32af,_0x3b58e1=_0x2a823b['split'](a0_0x57fd1b[_0x17bcc3(0xae)])['filter'](Boolean);if(_0x3b58e1['length']<0x2)return null;for(let _0x4194df=Math[_0x17bcc3(0x171)](_0x3b58e1['length']/0x2);_0x4194df>=0x1;_0x4194df--){for(let _0x45bdca=0x0;_0x45bdca<=_0x3b58e1['length']-0x2*_0x4194df;_0x45bdca++){const _0x969b46=_0x3b58e1[_0x17bcc3(0x17b)](_0x45bdca,_0x45bdca+_0x4194df),_0x3e3450=_0x3b58e1[_0x17bcc3(0x17b)](_0x45bdca+_0x4194df,_0x45bdca+0x2*_0x4194df);if(_0x969b46['every']((_0x1537e4,_0x346dc7)=>_0x1537e4===_0x3e3450[_0x346dc7])){const _0x47a666=[..._0x3b58e1[_0x17bcc3(0x17b)](0x0,_0x45bdca),..._0x3b58e1[_0x17bcc3(0x17b)](_0x45bdca+_0x4194df)];return a0_0x57fd1b['sep']+_0x47a666[_0x17bcc3(0x138)](a0_0x57fd1b['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x47f694=a0_0x32af;try{const _0x242025=require(_0x47f694(0xf7));return _0x242025[_0x47f694(0xdf)]??'unknown';}catch(_0x21d49e){return console[_0x47f694(0x180)]('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x21d49e),_0x47f694(0x107);}}function printHelp(){const _0x1174f9=a0_0x32af;console[_0x1174f9(0x19c)](_0x1174f9(0x147)+getPackageVersion()),console['log'](_0x1174f9(0xb5)),console[_0x1174f9(0x19c)](_0x1174f9(0x17a)),console['log'](_0x1174f9(0xfc)),console[_0x1174f9(0x19c)](_0x1174f9(0x101)),console['log'](_0x1174f9(0x192)),console['log'](_0x1174f9(0xcc)),console[_0x1174f9(0x19c)](_0x1174f9(0xf6));}const cliArgs=process[a0_0x37c554(0x148)][a0_0x37c554(0x17b)](0x2),VERSION_FLAGS=new Set([a0_0x37c554(0xab),'-v','-V']),HELP_FLAGS=new Set(['--help','-h']);cliArgs[a0_0x37c554(0xd1)](_0x29002b=>VERSION_FLAGS[a0_0x37c554(0x193)](_0x29002b))&&(console['log']('@morphllm/morphmcp\x20'+getPackageVersion()),process[a0_0x37c554(0x102)](0x0));cliArgs[a0_0x37c554(0xd1)](_0x8cce5=>HELP_FLAGS[a0_0x37c554(0x193)](_0x8cce5))&&(printHelp(),process[a0_0x37c554(0x102)](0x0));const args=cliArgs[a0_0x37c554(0xc5)](_0x4d0705=>!VERSION_FLAGS[a0_0x37c554(0x193)](_0x4d0705)&&!HELP_FLAGS['has'](_0x4d0705)),ALL_TOOLS=[a0_0x37c554(0x115),a0_0x37c554(0x14d),a0_0x37c554(0x168)],DEFAULT_TOOLS=[a0_0x37c554(0x115),a0_0x37c554(0x14d)],ENABLED_TOOLS=process[a0_0x37c554(0x190)][a0_0x37c554(0xc7)]?process[a0_0x37c554(0x190)][a0_0x37c554(0xc7)]===a0_0x37c554(0x162)?ALL_TOOLS:process[a0_0x37c554(0x190)][a0_0x37c554(0xc7)][a0_0x37c554(0x123)](',')[a0_0x37c554(0x185)](_0x8196e9=>_0x8196e9[a0_0x37c554(0x137)]()):DEFAULT_TOOLS;console['error'](a0_0x37c554(0x179)+ENABLED_TOOLS[a0_0x37c554(0x138)](',\x20'));const WORKSPACE_ROOT=process[a0_0x37c554(0x190)]['WORKSPACE_ROOT']||process[a0_0x37c554(0x190)][a0_0x37c554(0x139)]||process[a0_0x37c554(0xd7)](),ENABLE_WORKSPACE_MODE=process['env']['ENABLE_WORKSPACE_MODE']!==a0_0x37c554(0x197),MORPH_API_KEY=process[a0_0x37c554(0x190)][a0_0x37c554(0x132)],MORPH_API_URL=process[a0_0x37c554(0x190)][a0_0x37c554(0x11a)],MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0x37c554(0x13b)]?parseInt(process[a0_0x37c554(0x190)]['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY[a0_0x37c554(0x18d)](a0_0x37c554(0xca))&&!MORPH_API_KEY[a0_0x37c554(0x18d)]('morph-')&&console[a0_0x37c554(0x180)](a0_0x37c554(0xbf));async function reportMorphError(_0x2dd224){const _0x911aa4=a0_0x37c554;try{await a0_0x1753c4[_0x911aa4(0x13e)](_0x911aa4(0xf0),{..._0x2dd224,'timestamp':new Date()[_0x911aa4(0xd6)](),'source':_0x2dd224['source']||_0x911aa4(0x12e)},{'timeout':0x1388,'headers':{'Content-Type':_0x911aa4(0x16f),'Authorization':_0x911aa4(0xfb)+MORPH_API_KEY}});}catch{}}args['length']===0x0&&!ENABLE_WORKSPACE_MODE&&(console[a0_0x37c554(0x180)](a0_0x37c554(0x109)),console[a0_0x37c554(0x180)](a0_0x37c554(0x10b)),console['error']('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),console[a0_0x37c554(0x180)]('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),console['error'](a0_0x37c554(0x14c)),console['error'](a0_0x37c554(0xb1)));function normalizePath(_0x50cb1d){const _0x23167f=a0_0x37c554;return a0_0x57fd1b[_0x23167f(0xe1)](_0x50cb1d);}function expandHome(_0x32e870){const _0x37ed08=a0_0x37c554;if(_0x32e870[_0x37ed08(0x18d)]('~/')||_0x32e870==='~')return a0_0x57fd1b[_0x37ed08(0x138)](a0_0x2170f3[_0x37ed08(0xbd)](),_0x32e870['slice'](0x1));return _0x32e870;}let allowedDirectories=await Promise[a0_0x37c554(0x162)](args[a0_0x37c554(0x185)](async _0xa35721=>{const _0x76b173=expandHome(_0xa35721),_0x288d1c=a0_0x57fd1b['resolve'](_0x76b173);try{const _0x2c2a9d=await a0_0x4604e7['realpath'](_0x288d1c);return normalizePath(_0x2c2a9d);}catch(_0x2e3af6){return normalizePath(_0x288d1c);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x37c554(0xd2)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories['push'](workspaceDir),console[a0_0x37c554(0x180)](a0_0x37c554(0x13a)+workspaceDir+a0_0x37c554(0xf3)));}catch(a0_0x4ab103){console[a0_0x37c554(0x180)](a0_0x37c554(0x18f)+a0_0x4ab103);}async function detectWorkspaceRoot(_0x248adf){const _0x567ec8=a0_0x37c554;let _0x4cdfb8=a0_0x57fd1b[_0x567ec8(0x110)](_0x248adf);const _0x272fea=['.git',_0x567ec8(0x17c),_0x567ec8(0x182),'Cargo.toml',_0x567ec8(0x198),_0x567ec8(0x10e),_0x567ec8(0xc1),_0x567ec8(0x118),_0x567ec8(0x16c)];while(_0x4cdfb8!==a0_0x57fd1b['dirname'](_0x4cdfb8)){for(const _0x5aa3ee of _0x272fea){const _0x24e43f=a0_0x57fd1b['join'](_0x4cdfb8,_0x5aa3ee);try{return await a0_0x4604e7['access'](_0x24e43f),normalizePath(_0x4cdfb8);}catch{}}_0x4cdfb8=a0_0x57fd1b['dirname'](_0x4cdfb8);}return normalizePath(_0x248adf);}await Promise[a0_0x37c554(0x162)](args['map'](async _0x2e4ddb=>{const _0x4408e4=a0_0x37c554;try{const _0x205d16=await a0_0x4604e7[_0x4408e4(0x158)](expandHome(_0x2e4ddb));!_0x205d16[_0x4408e4(0xbe)]()&&(console[_0x4408e4(0x180)](_0x4408e4(0xb0)+_0x2e4ddb+_0x4408e4(0xee)),process['exit'](0x1));}catch(_0x3cb5e8){console[_0x4408e4(0x180)](_0x4408e4(0x131)+_0x2e4ddb+':',_0x3cb5e8),process['exit'](0x1);}}));async function validatePath(_0x3635fd){const _0x517ef4=a0_0x37c554,_0x33fe84=expandHome(_0x3635fd),_0x18e5d0=a0_0x57fd1b[_0x517ef4(0x110)](_0x33fe84);try{const _0x2267ab=await a0_0x4604e7[_0x517ef4(0x111)](_0x18e5d0);return _0x2267ab;}catch(_0x413e62){if(_0x413e62['code']===_0x517ef4(0x12d)){const _0x381c03=a0_0x57fd1b['dirname'](_0x18e5d0);try{const _0x2b8ad6=await a0_0x4604e7[_0x517ef4(0x111)](_0x381c03);return a0_0x57fd1b[_0x517ef4(0x138)](_0x2b8ad6,a0_0x57fd1b['basename'](_0x18e5d0));}catch{throw new Error(_0x517ef4(0x135)+_0x381c03);}}throw _0x413e62;}}const MorphEditFileArgsSchema=z[a0_0x37c554(0xc6)]({'path':z[a0_0x37c554(0x116)](),'code_edit':z['string']()[a0_0x37c554(0x19d)](a0_0x37c554(0x169)),'instruction':z[a0_0x37c554(0x116)]()[a0_0x37c554(0x19d)](a0_0x37c554(0x183)),'dryRun':z['boolean']()[a0_0x37c554(0x11c)](![])[a0_0x37c554(0x19d)](a0_0x37c554(0x117))}),WarpGrepArgsSchema=z[a0_0x37c554(0xc6)]({'search_string':z[a0_0x37c554(0x116)]()[a0_0x37c554(0x19d)]('Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for'),'repo_path':z[a0_0x37c554(0x116)]()[a0_0x37c554(0x19d)](a0_0x37c554(0xef))}),CodebaseSearchArgsSchema=z['object']({'query':z[a0_0x37c554(0x116)]()['describe']('Natural\x20language\x20query\x20to\x20search\x20for\x20code'),'repoId':z[a0_0x37c554(0x116)]()[a0_0x37c554(0x19d)](a0_0x37c554(0xf4)),'branch':z['string']()['optional']()[a0_0x37c554(0x19d)]('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x37c554(0x116)]()[a0_0x37c554(0x15d)]()[a0_0x37c554(0x19d)](a0_0x37c554(0x140)),'targetDirectories':z[a0_0x37c554(0x104)](z[a0_0x37c554(0x116)]())['default']([])[a0_0x37c554(0x19d)](a0_0x37c554(0xf5)),'limit':z[a0_0x37c554(0xd3)]()[a0_0x37c554(0x15d)]()[a0_0x37c554(0x11c)](0xa)['describe'](a0_0x37c554(0x164))}),server=new Server({'name':a0_0x37c554(0x145),'version':'0.2.0'},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x2210ac=a0_0x37c554,_0x37d333=[{'name':_0x2210ac(0x115),'description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a'+_0x2210ac(0x188)+_0x2210ac(0x161)+_0x2210ac(0x151)+'Benefits:\x0a'+_0x2210ac(0x15e)+_0x2210ac(0xfd)+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+_0x2210ac(0xd0)+_0x2210ac(0x146)+'ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a'+'Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a'+'For\x20deletions:\x0a'+_0x2210ac(0xe3)+'-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a'+_0x2210ac(0x12c)+'-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a'+'-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a'+'-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a'+_0x2210ac(0x122)+_0x2210ac(0xf8)+'-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a'+_0x2210ac(0x12a),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x2210ac(0x14d),'description':_0x2210ac(0x19b)+_0x2210ac(0x187)+_0x2210ac(0x11e)+_0x2210ac(0xce)+_0x2210ac(0x14a)+'Note:\x20The\x20files\x20and\x20line\x20ranges\x20returned\x20by\x20this\x20tool\x20may\x20be\x20some\x20of\x20the\x20ones\x20needed\x20to\x20complete\x20the\x20user\x27s\x20request,\x20but\x20you\x20should\x20be\x20careful\x20in\x20evaluating\x20the\x20relevance\x20of\x20the\x20results,\x20since\x20the\x20subagent\x20might\x20make\x20mistakes.\x20'+_0x2210ac(0x17f)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':_0x2210ac(0x168),'description':_0x2210ac(0x170)+_0x2210ac(0x199)+_0x2210ac(0x114)+_0x2210ac(0x144)+_0x2210ac(0xf1)+_0x2210ac(0xeb)+_0x2210ac(0x18b)+'-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a'+'Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20'+_0x2210ac(0xcb)+_0x2210ac(0xe0),'inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x2f43bf=_0x37d333[_0x2210ac(0xc5)](_0x3cca16=>{const _0x5acdb2=_0x2210ac;if(!ENABLED_TOOLS[_0x5acdb2(0x152)](_0x3cca16[_0x5acdb2(0x11b)]))return![];if(_0x5acdb2(0x154)in _0x3cca16&&_0x3cca16[_0x5acdb2(0x154)]&&!MORPH_API_KEY)return console[_0x5acdb2(0x180)](_0x5acdb2(0x10d)+_0x3cca16['name']+_0x5acdb2(0x10f)),![];return!![];});return{'tools':_0x2f43bf[_0x2210ac(0x185)](_0x23e8db=>({'name':_0x23e8db['name'],'description':_0x23e8db[_0x2210ac(0xfa)],'inputSchema':_0x23e8db[_0x2210ac(0x113)]}))};}),server[a0_0x37c554(0x125)](CallToolRequestSchema,async _0x24292d=>{const _0x53e604=a0_0x37c554;try{const {name:_0x52859d,arguments:_0x29f716}=_0x24292d['params'];switch(_0x52859d){case _0x53e604(0x115):{const _0x121b4f=MorphEditFileArgsSchema[_0x53e604(0x143)](_0x29f716);if(!_0x121b4f[_0x53e604(0x195)])throw new Error(_0x53e604(0xc9)+_0x121b4f[_0x53e604(0x180)]);const _0x573c15=await validatePath(_0x121b4f[_0x53e604(0x15b)][_0x53e604(0x16d)]);let _0x4907a0=null,_0x436c7a=!![],_0x10f270=null;try{_0x4907a0=await a0_0x4604e7[_0x53e604(0x157)](_0x573c15,'utf-8');}catch(_0x3cf6d9){const _0x4dfbe9=_0x3cf6d9[_0x53e604(0xb4)];_0x4dfbe9==='ENOENT'?(_0x436c7a=![],_0x4907a0=''):(_0x10f270=_0x53e604(0x127)+(_0x4dfbe9||_0x53e604(0x107))+_0x53e604(0x196)+(_0x3cf6d9 instanceof Error?_0x3cf6d9['message']:String(_0x3cf6d9)),console['error'](_0x53e604(0x10d)+_0x10f270));}try{const _0x3074bb=MORPH_API_KEY;if(!_0x3074bb)throw new Error(_0x53e604(0x149));const _0x3e2b7c=a0_0x57fd1b[_0x53e604(0x12f)](_0x573c15),_0x3a947b=a0_0x57fd1b['basename'](_0x573c15),_0x1b0d10=await executeEditFile({'target_filepath':_0x3a947b,'code_edit':_0x121b4f[_0x53e604(0x15b)][_0x53e604(0xaf)],'instructions':_0x121b4f[_0x53e604(0x15b)][_0x53e604(0x13d)]},{'morphApiKey':_0x3074bb,'morphApiUrl':MORPH_API_URL,'baseDir':_0x3e2b7c,'autoWrite':!_0x121b4f[_0x53e604(0x15b)][_0x53e604(0xde)],'generateUdiff':!![],'debug':![]});if(!_0x1b0d10[_0x53e604(0x195)])throw new Error(_0x1b0d10[_0x53e604(0x180)]||_0x53e604(0x163));const _0x451dde=_0x1b0d10[_0x53e604(0x124)]||'';let _0x365dcf=0x3;while(_0x451dde['includes']('`'[_0x53e604(0xb3)](_0x365dcf))){_0x365dcf++;}const _0x31d56d='`'[_0x53e604(0xb3)](_0x365dcf)+_0x53e604(0xbc)+_0x451dde+'`'[_0x53e604(0xb3)](_0x365dcf)+'\x0a\x0a';if(_0x121b4f['data'][_0x53e604(0xde)])return{'content':[{'type':_0x53e604(0xcd),'text':'🔍\x20Morph\x20Edit\x20Preview'+(_0x436c7a?'':_0x53e604(0x11f))+':\x20'+_0x121b4f[_0x53e604(0x15b)][_0x53e604(0x13d)]+'\x0a\x0a'+_0x31d56d+_0x53e604(0x186)+(_0x436c7a?_0x53e604(0x175):'create\x20this\x20file')+'.'}]};return{'content':[{'type':_0x53e604(0xcd),'text':_0x53e604(0x134)+(_0x436c7a?'Applied':_0x53e604(0x13f))+':\x20'+_0x121b4f[_0x53e604(0x15b)][_0x53e604(0x13d)]+'\x0a\x0a'+_0x31d56d+_0x53e604(0xed)+(_0x436c7a?_0x53e604(0xb2):_0x53e604(0xfe))+'\x20'+_0x121b4f[_0x53e604(0x15b)][_0x53e604(0x16d)]}]};}catch(_0xbad1f9){const _0x28c1ad=_0xbad1f9 instanceof Error?_0xbad1f9[_0x53e604(0xda)]:String(_0xbad1f9);return reportMorphError({'error_message':_0x28c1ad,'error_type':_0xbad1f9 instanceof Error?_0xbad1f9[_0x53e604(0x10a)]['name']:_0x53e604(0x106),'context':{'tool':_0x53e604(0x115),'file_path':_0x121b4f['data'][_0x53e604(0x16d)],'validated_path':_0x573c15,'instruction':_0x121b4f[_0x53e604(0x15b)]['instruction'],'model':_0x53e604(0x14b),'dry_run':_0x121b4f[_0x53e604(0x15b)]['dryRun'],'file_exists':_0x436c7a,'file_read_error':_0x10f270,'file_readable':_0x4907a0!==null,'request_content':{'path':_0x121b4f[_0x53e604(0x15b)]['path'],'code_edit':_0x121b4f['data'][_0x53e604(0xaf)],'instruction':_0x121b4f[_0x53e604(0x15b)][_0x53e604(0x13d)],'original_code':_0x4907a0!==null?_0x4907a0[_0x53e604(0xd2)]>0xc350?_0x4907a0[_0x53e604(0x167)](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x4907a0[_0x53e604(0xd2)]+_0x53e604(0x15c):_0x4907a0:_0x53e604(0x18e)+(_0x10f270||_0x53e604(0x150))+']','original_code_length':_0x4907a0?.[_0x53e604(0xd2)]??0x0,'model':'morph-v3-fast','dry_run':_0x121b4f[_0x53e604(0x15b)][_0x53e604(0xde)]}},'stack_trace':_0xbad1f9 instanceof Error?_0xbad1f9[_0x53e604(0xe2)]:undefined,'source':_0x53e604(0x12e)})[_0x53e604(0x136)](()=>{}),{'content':[{'type':_0x53e604(0xcd),'text':_0x53e604(0x112)+_0x28c1ad}],'isError':!![]};}}case _0x53e604(0x14d):{const _0x37a605=WarpGrepArgsSchema[_0x53e604(0x143)](_0x29f716);if(!_0x37a605[_0x53e604(0x195)])return{'content':[{'type':'text','text':'Invalid\x20arguments:\x20'+_0x37a605[_0x53e604(0x180)]}],'isError':!![]};const _0x2071ff=_0x1c2363=>{const _0x886c6c=_0x53e604,_0x34f395=[];for(const _0x51a85b of _0x1c2363||[]){const _0x1274b5=_0x51a85b[_0x886c6c(0x16e)],_0x50bdad=_0x51a85b[_0x886c6c(0xb9)];if(_0x1274b5===_0x886c6c(0x13c)&&_0x50bdad){const _0x3ad4d3=_0x50bdad[_0x886c6c(0x123)]('\x0a')[_0x886c6c(0xc5)](_0x8b4488=>_0x8b4488[_0x886c6c(0x137)]());for(const _0x5eedd3 of _0x3ad4d3){const _0x485d02=_0x5eedd3[_0x886c6c(0x17d)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x485d02){_0x34f395[_0x886c6c(0xb6)](_0x886c6c(0xe7)+_0x485d02[0x1]+'\x27\x20'+_0x485d02[0x2]);continue;}const _0x42d96c=_0x5eedd3[_0x886c6c(0x17d)](/^read\s+(.+)$/);if(_0x42d96c){_0x34f395[_0x886c6c(0xb6)](_0x886c6c(0xcf)+_0x42d96c[0x1]);continue;}const _0x3ae0fc=_0x5eedd3[_0x886c6c(0x17d)](/^list_directory\s+(.+)$/);if(_0x3ae0fc){_0x34f395[_0x886c6c(0xb6)](_0x886c6c(0xc0)+_0x3ae0fc[0x1]);continue;}}}}return _0x34f395;};try{const _0x17fb06=a0_0x57fd1b[_0x53e604(0x110)](_0x37a605[_0x53e604(0x15b)][_0x53e604(0x184)]),_0x1fd220=new LocalRipgrepProvider(_0x17fb06),_0x149d72=await runWarpGrep({'query':_0x37a605['data'][_0x53e604(0x155)],'repoRoot':_0x17fb06,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x1fd220});let _0x57dee2='';if(_0x149d72[_0x53e604(0xdb)]===_0x53e604(0x156)&&_0x149d72['finish']?.[_0x53e604(0xd5)]?.['files']){const _0x6a8f95=_0x149d72[_0x53e604(0x18c)][_0x53e604(0xd5)]['files'],_0x59d92d=[],_0x16dd33=[_0x53e604(0xe8)];for(const _0x5ea22a of _0x149d72['messages']){const _0x9fb6d3=_0x5ea22a['role'],_0x10eb28=_0x5ea22a['content'];if(_0x9fb6d3===_0x53e604(0x13c)&&_0x10eb28){const _0x6876bd=_0x10eb28[_0x53e604(0x123)]('\x0a')['filter'](_0xfeaa4b=>_0xfeaa4b[_0x53e604(0x137)]());for(const _0x3e4117 of _0x6876bd){const _0x481b3e=_0x3e4117[_0x53e604(0x17d)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x481b3e){_0x16dd33[_0x53e604(0xb6)]('-\x20Grepped\x20\x27'+_0x481b3e[0x1]+_0x53e604(0x172)+_0x481b3e[0x2]+'`');continue;}const _0x389b24=_0x3e4117[_0x53e604(0x17d)](/^read\s+(.+)$/);if(_0x389b24){_0x16dd33[_0x53e604(0xb6)]('-\x20Read\x20file\x20`'+_0x389b24[0x1]+'`');continue;}const _0x5a6805=_0x3e4117['match'](/^list_directory\s+(.+)$/);if(_0x5a6805){_0x16dd33[_0x53e604(0xb6)]('-\x20Listed\x20directory\x20`'+_0x5a6805[0x1]+'`');continue;}}}}_0x59d92d[_0x53e604(0xb6)](_0x16dd33[_0x53e604(0x138)]('\x0a'));const _0x479ee5=['',_0x53e604(0xe4)];for(const _0x1a725e of _0x6a8f95){if(_0x1a725e[_0x53e604(0x19e)]==='*')_0x479ee5['push']('-\x20'+_0x1a725e[_0x53e604(0x16d)]+':*');else{if(Array['isArray'](_0x1a725e[_0x53e604(0x19e)])){const _0x9ce134=_0x1a725e[_0x53e604(0x19e)][_0x53e604(0x185)](([_0x2e14fb,_0x50a392])=>{if(_0x2e14fb===_0x50a392)return''+_0x2e14fb;return _0x2e14fb+'-'+_0x50a392;});_0x479ee5[_0x53e604(0xb6)]('-\x20'+_0x1a725e['path']+':'+_0x9ce134[_0x53e604(0x138)](','));}else _0x479ee5[_0x53e604(0xb6)]('-\x20'+_0x1a725e['path']+':*');}}_0x479ee5[_0x53e604(0xb6)](''),_0x59d92d[_0x53e604(0xb6)](_0x479ee5[_0x53e604(0x138)]('\x0a')),_0x59d92d[_0x53e604(0xb6)](_0x53e604(0x159));const _0x26377a=[];for(const _0xc67acd of _0x6a8f95){let _0x2ab1ee=a0_0x57fd1b['resolve'](_0x37a605[_0x53e604(0x15b)][_0x53e604(0x184)],_0xc67acd[_0x53e604(0x16d)]),_0x3cca30=null,_0x468432=null;try{_0x3cca30=await a0_0x4604e7[_0x53e604(0x157)](_0x2ab1ee,{'encoding':_0x53e604(0xe9)});}catch(_0x17f153){const _0x2fa74=fixPathRepetition(_0x2ab1ee);if(_0x2fa74)try{_0x3cca30=await a0_0x4604e7[_0x53e604(0x157)](_0x2fa74,{'encoding':_0x53e604(0xe9)}),_0x2ab1ee=_0x2fa74;}catch{_0x468432=_0x17f153 instanceof Error?_0x17f153:new Error(String(_0x17f153));}else _0x468432=_0x17f153 instanceof Error?_0x17f153:new Error(String(_0x17f153));}if(_0x3cca30!==null){const _0x347c1c=_0x3cca30[_0x53e604(0x123)](/\r?\n/),_0x38ce85=[_0x53e604(0x121)+_0xc67acd['path']+'\x22>'];if(_0xc67acd[_0x53e604(0x19e)]==='*'||!Array['isArray'](_0xc67acd[_0x53e604(0x19e)]))for(let _0x259f47=0x1;_0x259f47<=_0x347c1c[_0x53e604(0xd2)];_0x259f47++){const _0x216198=_0x347c1c[_0x259f47-0x1];_0x38ce85[_0x53e604(0xb6)](_0x259f47+'|\x20'+_0x216198);}else for(const [_0x586043,_0x4f5537]of _0xc67acd[_0x53e604(0x19e)]){_0x38ce85['length']>0x1&&_0x38ce85[_0x53e604(0xb6)]('');for(let _0x167808=_0x586043;_0x167808<=_0x4f5537&&_0x167808<=_0x347c1c[_0x53e604(0xd2)];_0x167808++){const _0x2913ca=_0x347c1c[_0x167808-0x1];_0x38ce85[_0x53e604(0xb6)](_0x167808+'|\x20'+_0x2913ca);}}_0x38ce85[_0x53e604(0xb6)]('</file>'),_0x26377a[_0x53e604(0xb6)](_0x38ce85[_0x53e604(0x138)]('\x0a'));}else _0x26377a['push'](_0x53e604(0x121)+_0xc67acd[_0x53e604(0x16d)]+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x468432?.[_0x53e604(0xda)]||_0x53e604(0x16b))+_0x53e604(0x181));}_0x59d92d[_0x53e604(0xb6)](_0x26377a['join']('\x0a\x0a')),_0x57dee2=_0x59d92d[_0x53e604(0x138)]('\x0a');const _0x1f8889=_0x149d72['errors']?.['filter'](_0x25665f=>_0x25665f['message']?.[_0x53e604(0x18d)](_0x53e604(0x18a)))||[];if(_0x1f8889[_0x53e604(0xd2)]>0x0){const _0x22dc0b=_0x1f8889[_0x53e604(0x185)](_0x41473e=>_0x41473e['message'])['join'](';\x20');reportMorphError({'error_message':_0x22dc0b,'error_type':_0x53e604(0x19a),'context':{'tool':'warpgrep_codebase_search','repo_path':_0x37a605[_0x53e604(0x15b)][_0x53e604(0x184)],'query':_0x37a605['data'][_0x53e604(0x155)],'model':_0x53e604(0x191),'termination_reason':_0x53e604(0x176),'error_count':_0x1f8889[_0x53e604(0xd2)],'is_timeout':![],'timings':_0x149d72[_0x53e604(0x173)],'files_attempted':_0x6a8f95[_0x53e604(0x185)](_0x42f484=>({'path':_0x42f484[_0x53e604(0x16d)],'lines':_0x42f484[_0x53e604(0x19e)]})),'tool_calls':_0x2071ff(_0x149d72[_0x53e604(0x130)]),'messages':_0x149d72['messages']?.[_0x53e604(0x185)](_0x3d98fb=>({'role':_0x3d98fb[_0x53e604(0x16e)],'content':_0x3d98fb['content']})),'request_content':{'query':_0x37a605['data'][_0x53e604(0x155)],'repo_path':_0x37a605['data'][_0x53e604(0x184)],'repoRoot':a0_0x57fd1b[_0x53e604(0x110)](_0x37a605[_0x53e604(0x15b)][_0x53e604(0x184)]),'model':_0x53e604(0x191)}},'source':_0x53e604(0x12e)})[_0x53e604(0x136)](()=>{});}}else{if(_0x149d72[_0x53e604(0xdb)]==='terminated'&&_0x149d72['errors'][_0x53e604(0xd2)]>0x0){const _0x4c0a82=_0x149d72[_0x53e604(0x189)][_0x53e604(0x185)](_0x6f102b=>_0x6f102b[_0x53e604(0xda)])[_0x53e604(0x138)](';\x20');_0x57dee2='Error:\x20'+_0x4c0a82;const _0x14b928=_0x4c0a82[_0x53e604(0x178)]()[_0x53e604(0x152)](_0x53e604(0x15f))||_0x4c0a82[_0x53e604(0x178)]()[_0x53e604(0x152)](_0x53e604(0x103))||_0x4c0a82['toLowerCase']()['includes'](_0x53e604(0xd8)),_0x447c5a=_0x149d72[_0x53e604(0x18c)]?.[_0x53e604(0xd5)]?.[_0x53e604(0x142)],_0x256833=_0x149d72['errors'][0x0];reportMorphError({'error_message':_0x4c0a82,'error_type':_0x14b928?_0x53e604(0x177):_0x256833?.[_0x53e604(0x10a)]?.[_0x53e604(0x11b)]||'WarpGrepError','context':{'tool':'warpgrep_codebase_search','repo_path':_0x37a605['data'][_0x53e604(0x184)],'query':_0x37a605[_0x53e604(0x15b)]['search_string'],'model':_0x53e604(0x191),'termination_reason':_0x149d72[_0x53e604(0xdb)],'error_count':_0x149d72[_0x53e604(0x189)][_0x53e604(0xd2)],'is_timeout':_0x14b928,'timings':_0x149d72[_0x53e604(0x173)],'files_attempted':_0x447c5a?.[_0x53e604(0x185)](_0x5c346b=>({'path':_0x5c346b[_0x53e604(0x16d)],'lines':_0x5c346b['lines']})),'tool_calls':_0x2071ff(_0x149d72['messages']),'messages':_0x149d72[_0x53e604(0x130)]?.[_0x53e604(0x185)](_0x6ed675=>({'role':_0x6ed675[_0x53e604(0x16e)],'content':_0x6ed675[_0x53e604(0xb9)]})),'request_content':{'query':_0x37a605[_0x53e604(0x15b)][_0x53e604(0x155)],'repo_path':_0x37a605[_0x53e604(0x15b)][_0x53e604(0x184)],'repoRoot':a0_0x57fd1b['resolve'](_0x37a605[_0x53e604(0x15b)]['repo_path']),'model':_0x53e604(0x191)}},'stack_trace':_0x256833?.[_0x53e604(0xe2)]||undefined,'source':_0x53e604(0x12e)})['catch'](()=>{});}else _0x57dee2=_0x53e604(0x133);}return{'content':[{'type':_0x53e604(0xcd),'text':_0x57dee2}]};}catch(_0x854eed){const _0x18863f=_0x854eed instanceof Error?_0x854eed[_0x53e604(0xda)]:String(_0x854eed),_0x275e86=_0x18863f[_0x53e604(0x178)]()[_0x53e604(0x152)]('timeout')||_0x18863f['toLowerCase']()['includes'](_0x53e604(0x103))||_0x18863f[_0x53e604(0x178)]()[_0x53e604(0x152)](_0x53e604(0xd8))||_0x854eed instanceof Error&&_0x854eed[_0x53e604(0x11b)]===_0x53e604(0x177);return reportMorphError({'error_message':_0x18863f,'error_type':_0x275e86?_0x53e604(0x177):_0x854eed instanceof Error?_0x854eed['constructor']['name']:_0x53e604(0x106),'context':{'tool':_0x53e604(0x14d),'repo_path':_0x37a605['data']['repo_path'],'query':_0x37a605[_0x53e604(0x15b)][_0x53e604(0x155)],'model':_0x53e604(0x191),'is_timeout':_0x275e86,'exception_phase':_0x53e604(0x129),'request_content':{'query':_0x37a605[_0x53e604(0x15b)]['search_string'],'repo_path':_0x37a605[_0x53e604(0x15b)][_0x53e604(0x184)],'repoRoot':a0_0x57fd1b[_0x53e604(0x110)](_0x37a605[_0x53e604(0x15b)][_0x53e604(0x184)]),'model':_0x53e604(0x191)}},'stack_trace':_0x854eed instanceof Error?_0x854eed['stack']:undefined,'source':_0x53e604(0x12e)})[_0x53e604(0x136)](()=>{}),{'content':[{'type':_0x53e604(0xcd),'text':_0x53e604(0xec)+_0x18863f}],'isError':![]};}}case _0x53e604(0x168):{const _0x51910b=CodebaseSearchArgsSchema[_0x53e604(0x143)](_0x29f716);if(!_0x51910b[_0x53e604(0x195)])return{'content':[{'type':_0x53e604(0xcd),'text':_0x53e604(0x194)+_0x51910b[_0x53e604(0x180)]}],'isError':!![]};try{const _0x15f5bd=MORPH_API_KEY;if(!_0x15f5bd)throw new Error(_0x53e604(0x10c));const _0x6511ad=_0x51910b[_0x53e604(0x15b)][_0x53e604(0xd4)],_0x4d1357=await executeCodebaseSearch({'query':_0x51910b[_0x53e604(0x15b)]['query'],'target_directories':_0x6511ad,'limit':_0x51910b[_0x53e604(0x15b)][_0x53e604(0x119)]},{'apiKey':_0x15f5bd,'repoId':_0x51910b[_0x53e604(0x15b)][_0x53e604(0xba)],'branch':_0x51910b[_0x53e604(0x15b)][_0x53e604(0x141)],'commitHash':_0x51910b[_0x53e604(0x15b)][_0x53e604(0xad)],'debug':![]});if(!_0x4d1357[_0x53e604(0x195)])return{'content':[{'type':_0x53e604(0xcd),'text':_0x53e604(0xbb)+_0x4d1357[_0x53e604(0x180)]}],'isError':!![]};const _0x3852af=_0x4d1357[_0x53e604(0xf9)][_0x53e604(0xd2)]===0x0?_0x53e604(0xea)+_0x51910b['data'][_0x53e604(0x12b)]+'\x22':'Found\x20'+_0x4d1357[_0x53e604(0xf9)][_0x53e604(0xd2)]+_0x53e604(0xe5)+_0x4d1357['stats']['searchTimeMs']+_0x53e604(0x126)+_0x4d1357['results'][_0x53e604(0x185)]((_0x35ff78,_0x278f7f)=>_0x278f7f+0x1+'.\x20'+_0x35ff78['filepath']+'\x20('+(_0x35ff78[_0x53e604(0xa9)]*0x64)['toFixed'](0x1)+_0x53e604(0x166)+('\x20\x20\x20Lines\x20'+_0x35ff78['startLine']+'-'+_0x35ff78[_0x53e604(0xf2)]+'\x0a')+(_0x53e604(0x16a)+_0x35ff78[_0x53e604(0xb9)][_0x53e604(0x167)](0x0,0xc8)+(_0x35ff78[_0x53e604(0xb9)]['length']>0xc8?'...':'')+'\x0a'))[_0x53e604(0x138)]('\x0a');return{'content':[{'type':_0x53e604(0xcd),'text':_0x3852af}]};}catch(_0x4466b8){const _0x11373b=_0x4466b8 instanceof Error?_0x4466b8['message']:String(_0x4466b8);return reportMorphError({'error_message':_0x11373b,'error_type':_0x4466b8 instanceof Error?_0x4466b8['constructor'][_0x53e604(0x11b)]:_0x53e604(0x106),'context':{'tool':_0x53e604(0x168),'query':_0x51910b[_0x53e604(0x15b)][_0x53e604(0x12b)],'repo_id':_0x51910b[_0x53e604(0x15b)][_0x53e604(0xba)],'target_directories':_0x51910b['data'][_0x53e604(0xd4)]},'stack_trace':_0x4466b8 instanceof Error?_0x4466b8['stack']:undefined,'source':_0x53e604(0x12e)})[_0x53e604(0x136)](()=>{}),{'content':[{'type':_0x53e604(0xcd),'text':_0x53e604(0xb0)+_0x11373b}],'isError':!![]};}}default:throw new Error(_0x53e604(0xd9)+_0x52859d);}}catch(_0x1f0436){const _0x488643=_0x1f0436 instanceof Error?_0x1f0436[_0x53e604(0xda)]:String(_0x1f0436);return reportMorphError({'error_message':_0x488643,'error_type':_0x1f0436 instanceof Error?_0x1f0436[_0x53e604(0x10a)][_0x53e604(0x11b)]:_0x53e604(0x106),'context':{'tool':name,'arguments':args?JSON[_0x53e604(0xb8)](args)[_0x53e604(0x167)](0x0,0x1f4):undefined,'mcp_server_version':_0x53e604(0xaa)},'stack_trace':_0x1f0436 instanceof Error?_0x1f0436['stack']:undefined,'source':_0x53e604(0x12e)})[_0x53e604(0x136)](()=>{}),{'content':[{'type':'text','text':_0x53e604(0xb0)+_0x488643}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x143c8a){const _0x4da29f=a0_0x37c554,_0xaee948=await getValidRootDirectories(_0x143c8a);if(_0xaee948['length']>0x0)allowedDirectories=[..._0xaee948],console['error'](_0x4da29f(0x11d)+_0xaee948[_0x4da29f(0xd2)]+'\x20valid\x20directories');else{console[_0x4da29f(0x180)]('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x3aea85=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x3aea85&&(allowedDirectories=[_0x3aea85],console['error'](_0x4da29f(0x14f)+_0x3aea85));}catch(_0x26a280){console['error']('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x26a280);}}}server[a0_0x37c554(0x160)](RootsListChangedNotificationSchema,async()=>{const _0xf109e1=a0_0x37c554;try{const _0x2c6889=await server[_0xf109e1(0x120)]();_0x2c6889&&_0xf109e1(0xac)in _0x2c6889&&await updateAllowedDirectoriesFromRoots(_0x2c6889[_0xf109e1(0xac)]);}catch(_0x4e1d0c){console[_0xf109e1(0x180)](_0xf109e1(0x128),_0x4e1d0c instanceof Error?_0x4e1d0c['message']:String(_0x4e1d0c));}}),server['oninitialized']=async()=>{const _0xd56b40=a0_0x37c554,_0x5b0f92=server[_0xd56b40(0xe6)]();if(_0x5b0f92?.[_0xd56b40(0xac)])try{const _0x4b910d=await server[_0xd56b40(0x120)]();_0x4b910d&&'roots'in _0x4b910d?await updateAllowedDirectoriesFromRoots(_0x4b910d[_0xd56b40(0xac)]):console[_0xd56b40(0x180)](_0xd56b40(0xc4));}catch(_0x3a6152){console[_0xd56b40(0x180)](_0xd56b40(0xdc),_0x3a6152 instanceof Error?_0x3a6152[_0xd56b40(0xda)]:String(_0x3a6152));}else{if(allowedDirectories['length']>0x0)console[_0xd56b40(0x180)]('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:',allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console['error'](_0xd56b40(0xc8));else throw new Error(_0xd56b40(0x17e));}}};async function runServer(){const _0x2dad1d=a0_0x37c554,_0x3fbce8=new StdioServerTransport();await server[_0x2dad1d(0xb7)](_0x3fbce8),console[_0x2dad1d(0x180)](_0x2dad1d(0x15a)),allowedDirectories[_0x2dad1d(0xd2)]===0x0&&console[_0x2dad1d(0x180)](_0x2dad1d(0xff));}runServer()[a0_0x37c554(0x136)](_0x36fa41=>{const _0x17a2c1=a0_0x37c554;console[_0x17a2c1(0x180)](_0x17a2c1(0xc3),_0x36fa41),process[_0x17a2c1(0x102)](0x1);});function a0_0x5a79(){const _0x30c3d5=['Unknown\x20error','composer.json','path','role','application/json','**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a','floor','\x27\x20in\x20`','timings','2173065aUNjHe','apply\x20these\x20changes','completed_with_file_errors','TimeoutError','toLowerCase','Enabled\x20tools:\x20','\x0aOptions:','slice','.vscode','match','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.','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','error','\x0a</file>','package.json','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','repo_path','map','Use\x20dryRun=false\x20to\x20','This\x20tool\x20invokes\x20a\x20subagent\x20that\x20runs\x20parallel\x20grep\x20and\x20readfile\x20calls\x20over\x20multiple\x20turns\x20to\x20locate\x20line\x20ranges\x20and\x20files\x20which\x20might\x20be\x20relevant\x20to\x20the\x20request.\x20','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','errors','File\x20read\x20error:','-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a','finish','startsWith','[could\x20not\x20read\x20file:\x20','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','env','morph-warp-grep-v1-1111v0','\x0aExamples:','has','Invalid\x20arguments:\x20','success','\x20-\x20','false','pyproject.toml','⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a','FileReadError','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','log','describe','lines','rerankScore','0.2.0','--version','roots','commitHash','sep','code_edit','Error:\x20','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','applied\x20edits\x20to','repeat','code','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','push','connect','stringify','content','repoId','Search\x20failed:\x20','diff\x0a','homedir','isDirectory','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','list_directory\x20','.cursor','2811216iuIxoZ','Fatal\x20error\x20running\x20server:','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','filter','object','ENABLED_TOOLS','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','sk-','Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20','\x20\x20morph-mcp','text','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20','read\x20','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','some','length','number','targetDirectories','metadata','toISOString','cwd','etimedout','Unknown\x20tool:\x20','message','terminationReason','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','1320288rHBTCd','dryRun','version','Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','normalize','stack','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','Relevant\x20context\x20found:','\x20results\x20in\x20','getClientCapabilities','grep\x20\x27','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','utf-8','No\x20results\x20found\x20for\x20query:\x20\x22','-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a','Error\x20running\x20fast\x20context\x20search:\x20','Successfully\x20','\x20is\x20not\x20a\x20directory','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','https://morphllm.com/api/error-report','-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a','endLine','\x20as\x20allowed\x20directory','Repository\x20identifier','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','\x20\x20morph-mcp\x20~/repo','../package.json','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','results','description','Bearer\x20','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','created','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','256OHbhVt','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','exit','timed\x20out','array','717935MaiBzf','UnknownError','unknown','129794hijRyo','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','constructor','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.','Warning:\x20','go.mod','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','resolve','realpath','❌\x20Morph\x20Edit\x20Failed:\x20','inputSchema','🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a','edit_file','string','Preview\x20changes\x20without\x20applying\x20them.','tsconfig.json','limit','MORPH_API_URL','name','default','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','The\x20search\x20term\x20should\x20be\x20a\x20targeted\x20natural\x20language\x20query\x20based\x20on\x20what\x20you\x20are\x20trying\x20to\x20accomplish,\x20like\x20\x27Find\x20where\x20authentication\x20requests\x20are\x20handled\x20in\x20the\x20Express\x20routes\x27\x20or\x20\x27Modify\x20the\x20agentic\x20rollout\x20to\x20use\x20the\x20new\x20tokenizer\x20and\x20chat\x20template\x27\x20or\x20\x27Fix\x20the\x20bug\x20where\x20the\x20user\x20gets\x20redirected\x20from\x20the\x20/feed\x20page\x27.\x20','\x20(new\x20file)','listRoots','<file\x20path=\x22','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','split','udiff','setRequestHandler','ms:\x0a\x0a','Failed\x20to\x20read\x20file:\x20','Failed\x20to\x20request\x20roots\x20from\x20client:','runWarpGrep_call','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','query','Rules:\x0a','ENOENT','mcp-filesystem','dirname','messages','Error\x20accessing\x20directory\x20','MORPH_API_KEY','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','Morph\x20Edit\x20','Parent\x20directory\x20does\x20not\x20exist:\x20','catch','trim','join','PWD','Workspace\x20mode\x20enabled:\x20Using\x20','MORPH_WARP_GREP_TIMEOUT','assistant','instruction','post','Created\x20File','Specific\x20commit\x20hash\x20to\x20search','branch','files','safeParse','Benefits:\x0a','morph-mcp','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','@morphllm/morphmcp\x20','argv','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.','morph-v3-fast','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','warpgrep_codebase_search','1448082bVDGuT','Fallback:\x20Using\x20workspace\x20root\x20','unknown\x20error','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','includes','660864FEtmsS','requiresApiKey','search_string','completed','readFile','stat','Here\x20is\x20the\x20content\x20of\x20files:\x0a','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','data','\x20chars)','optional','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','timeout','setNotificationHandler','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','all','Morph\x20FastApply\x20failed\x20without\x20error\x20message','Max\x20results\x20to\x20return','6woSjAN','%\x20match)\x0a','substring','codebase_search','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','\x20\x20\x20'];a0_0x5a79=function(){return _0x30c3d5;};return a0_0x5a79();}
2
+ const a0_0x23de00=a0_0x8d91;(function(_0x40b5ab,_0x1f68d2){const _0x5587a1=a0_0x8d91,_0x96cc1d=_0x40b5ab();while(!![]){try{const _0x2b5ac4=parseInt(_0x5587a1(0x26c))/0x1+-parseInt(_0x5587a1(0x273))/0x2+-parseInt(_0x5587a1(0x25f))/0x3+parseInt(_0x5587a1(0x2a4))/0x4*(-parseInt(_0x5587a1(0x1f1))/0x5)+-parseInt(_0x5587a1(0x225))/0x6*(-parseInt(_0x5587a1(0x204))/0x7)+-parseInt(_0x5587a1(0x264))/0x8+parseInt(_0x5587a1(0x1e5))/0x9;if(_0x2b5ac4===_0x1f68d2)break;else _0x96cc1d['push'](_0x96cc1d['shift']());}catch(_0x4cd4ce){_0x96cc1d['push'](_0x96cc1d['shift']());}}}(a0_0x3547,0xcead9));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_0x46a374 from'fs/promises';import a0_0x3c00e5 from'path';import a0_0x29a9ba from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider}from'@morphllm/morphsdk/tools/warp-grep';import{executeCodebaseSearch}from'@morphllm/morphsdk/tools/codebase-search';import a0_0x17ceaa from'axios';function fixPathRepetition(_0x941794){const _0x2a89c5=a0_0x8d91,_0x404dd6=_0x941794[_0x2a89c5(0x20b)](a0_0x3c00e5[_0x2a89c5(0x215)])['filter'](Boolean);if(_0x404dd6[_0x2a89c5(0x297)]<0x2)return null;for(let _0x353806=Math[_0x2a89c5(0x211)](_0x404dd6['length']/0x2);_0x353806>=0x1;_0x353806--){for(let _0x261734=0x0;_0x261734<=_0x404dd6[_0x2a89c5(0x297)]-0x2*_0x353806;_0x261734++){const _0x1f6c54=_0x404dd6[_0x2a89c5(0x29a)](_0x261734,_0x261734+_0x353806),_0x3b7703=_0x404dd6['slice'](_0x261734+_0x353806,_0x261734+0x2*_0x353806);if(_0x1f6c54['every']((_0x3c1e0c,_0x4214f3)=>_0x3c1e0c===_0x3b7703[_0x4214f3])){const _0x3c0b69=[..._0x404dd6[_0x2a89c5(0x29a)](0x0,_0x261734),..._0x404dd6[_0x2a89c5(0x29a)](_0x261734+_0x353806)];return a0_0x3c00e5[_0x2a89c5(0x215)]+_0x3c0b69[_0x2a89c5(0x1f7)](a0_0x3c00e5[_0x2a89c5(0x215)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x304b13=a0_0x8d91;try{const _0x4154d6=require(_0x304b13(0x29b));return _0x4154d6['version']??'unknown';}catch(_0x57fbca){return console[_0x304b13(0x227)]('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x57fbca),_0x304b13(0x2a5);}}function printHelp(){const _0x42c479=a0_0x8d91;console['log'](_0x42c479(0x27d)+getPackageVersion()),console['log']('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0x42c479(0x1df)](_0x42c479(0x1ed)),console['log'](_0x42c479(0x266)),console[_0x42c479(0x1df)](_0x42c479(0x292)),console[_0x42c479(0x1df)](_0x42c479(0x21e)),console[_0x42c479(0x1df)](_0x42c479(0x217)),console['log'](_0x42c479(0x1c0));}const cliArgs=process[a0_0x23de00(0x1c2)][a0_0x23de00(0x29a)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set([a0_0x23de00(0x24e),'-h']);cliArgs[a0_0x23de00(0x296)](_0x4f588a=>VERSION_FLAGS[a0_0x23de00(0x1ba)](_0x4f588a))&&(console[a0_0x23de00(0x1df)](a0_0x23de00(0x27d)+getPackageVersion()),process[a0_0x23de00(0x1f5)](0x0));cliArgs[a0_0x23de00(0x296)](_0x55cd48=>HELP_FLAGS['has'](_0x55cd48))&&(printHelp(),process[a0_0x23de00(0x1f5)](0x0));const args=cliArgs[a0_0x23de00(0x1d9)](_0x2e8d85=>!VERSION_FLAGS[a0_0x23de00(0x1ba)](_0x2e8d85)&&!HELP_FLAGS[a0_0x23de00(0x1ba)](_0x2e8d85)),ALL_TOOLS=['edit_file',a0_0x23de00(0x1d3),a0_0x23de00(0x1de)],DEFAULT_TOOLS=[a0_0x23de00(0x24d),a0_0x23de00(0x1d3)],ENABLED_TOOLS=process['env'][a0_0x23de00(0x291)]?process[a0_0x23de00(0x256)][a0_0x23de00(0x291)]===a0_0x23de00(0x249)?ALL_TOOLS:process['env'][a0_0x23de00(0x291)]['split'](',')[a0_0x23de00(0x29d)](_0x22e5c4=>_0x22e5c4[a0_0x23de00(0x282)]()):DEFAULT_TOOLS;console[a0_0x23de00(0x227)](a0_0x23de00(0x1f0)+ENABLED_TOOLS[a0_0x23de00(0x1f7)](',\x20'));function a0_0x8d91(_0x181a5d,_0x4e382c){_0x181a5d=_0x181a5d-0x1aa;const _0x35475b=a0_0x3547();let _0x8d9130=_0x35475b[_0x181a5d];return _0x8d9130;}function a0_0x3547(){const _0x30e9df=['Search\x20failed:\x20','describe','🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a','catch','completed','endLine','message','.\x20Changes:\x20','stats','package.json','access','false','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','Parent\x20directory\x20does\x20not\x20exist:\x20','PWD','-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a','array','Error\x20running\x20fast\x20context\x20search:\x20','resolve','params','startLine','ms:\x0a\x0a','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','all','timings','toISOString','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','edit_file','--help','Invalid\x20arguments:\x20','Rules:\x0a','morph-warp-grep-v1-1111v0','morph-v3-fast','Relevant\x20context\x20found:','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','timeout','env','Applied','-\x20Listed\x20directory\x20`','No\x20results\x20found\x20for\x20query:\x20\x22','name','Error:\x20','roots','data','WarpGrepError','4646787afBYqC','post','read\x20','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','added\x20','5563984sueAVs','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','Note:\x20The\x20files\x20and\x20line\x20ranges\x20returned\x20by\x20this\x20tool\x20may\x20be\x20some\x20of\x20the\x20ones\x20needed\x20to\x20complete\x20the\x20user\x27s\x20request,\x20but\x20you\x20should\x20be\x20careful\x20in\x20evaluating\x20the\x20relevance\x20of\x20the\x20results,\x20since\x20the\x20subagent\x20might\x20make\x20mistakes.\x20','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','readFile','Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','1083902fqyFKR','\x20(new\x20file)','number','filepath','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','https://morphllm.com/api/error-report','WORKSPACE_ROOT','3316186vgDbPN','Fallback:\x20Using\x20workspace\x20root\x20','Morph\x20Edit\x20Preview','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','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','tsconfig.json','TimeoutError','The\x20search\x20term\x20should\x20be\x20a\x20targeted\x20natural\x20language\x20query\x20based\x20on\x20what\x20you\x20are\x20trying\x20to\x20accomplish,\x20like\x20\x27Find\x20where\x20authentication\x20requests\x20are\x20handled\x20in\x20the\x20Express\x20routes\x27\x20or\x20\x27Modify\x20the\x20agentic\x20rollout\x20to\x20use\x20the\x20new\x20tokenizer\x20and\x20chat\x20template\x27\x20or\x20\x27Fix\x20the\x20bug\x20where\x20the\x20user\x20gets\x20redirected\x20from\x20the\x20/feed\x20page\x27.\x20','-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a','Cargo.toml','@morphllm/morphmcp\x20','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.','oninitialized','search_string','trim','startsWith','terminated','substring','ENOENT','files','\x20is\x20not\x20a\x20directory','assistant','isArray','Created\x20File','ENABLE_WORKSPACE_MODE','dirname','metadata','</file>','Error\x20accessing\x20directory\x20','ENABLED_TOOLS','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','searchTimeMs','For\x20deletions:\x0a','safeParse','some','length','connect','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','slice','../package.json','description','map','toLowerCase','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','string','\x0a</file>','results','4386388oMFNeC','unknown','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','mcp-filesystem','timed\x20out','messages','code','success','MORPH_WARP_GREP_TIMEOUT','constructor','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','homedir','stack','setRequestHandler','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','linesAdded','MORPH_API_URL','Failed\x20to\x20read\x20file:\x20','0.2.0','has','errors','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','includes','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','\x20\x20morph-mcp\x20~/repo','Benefits:\x0a','argv','list_directory\x20','cwd','completed_with_file_errors','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','<file\x20path=\x22','realpath','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','repo_path','Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20','branch','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','Natural\x20language\x20query\x20to\x20search\x20for\x20code','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','Workspace\x20mode\x20enabled:\x20Using\x20','warpgrep_codebase_search','object','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','Unknown\x20error','Warning:\x20Workspace\x20fallback\x20failed:\x20','runWarpGrep_call','filter','boolean','Repository\x20identifier','setNotificationHandler','Failed\x20to\x20request\x20roots\x20from\x20client:','codebase_search','log','Found\x20','[could\x20not\x20read\x20file:\x20','linesModified','Fatal\x20error\x20running\x20server:','Warning:\x20','41205681canWvD','optional','finish','-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a','lines','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','\x22>\x0aError\x20reading\x20file:\x20','listRoots','\x0aOptions:','grep\x20\x27','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','Enabled\x20tools:\x20','5gTONYe','pyproject.toml','-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a','requiresApiKey','exit','etimedout','join','Morph\x20FastApply\x20failed\x20without\x20error\x20message','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.','terminationReason','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','FileReadError','\x20chars)','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.','File\x20read\x20error:','utf-8','.git','match','inputSchema','553WIJSXN','.vscode','UnknownError','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','basename','repoId','push','split','application/json','.\x20Path:\x20','code_edit','content','text','floor','instruction','...','query','sep','Morph\x20Edit\x20','\x20\x20morph-mcp','stat','dryRun','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','Max\x20results\x20to\x20return','Bearer\x20','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','\x0aExamples:','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','normalize','role','.cursor','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','This\x20tool\x20invokes\x20a\x20subagent\x20that\x20runs\x20parallel\x20grep\x20and\x20readfile\x20calls\x20over\x20multiple\x20turns\x20to\x20locate\x20line\x20ranges\x20and\x20files\x20which\x20might\x20be\x20relevant\x20to\x20the\x20request.\x20','13926OUbNrX','limit','error','linesRemoved','MORPH_API_KEY','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','path','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','Preview\x20changes\x20without\x20applying\x20them.','targetDirectories','sk-',',\x20removed\x20'];a0_0x3547=function(){return _0x30e9df;};return a0_0x3547();}const WORKSPACE_ROOT=process[a0_0x23de00(0x256)][a0_0x23de00(0x272)]||process['env'][a0_0x23de00(0x240)]||process[a0_0x23de00(0x1c4)](),ENABLE_WORKSPACE_MODE=process[a0_0x23de00(0x256)][a0_0x23de00(0x28c)]!==a0_0x23de00(0x23d),MORPH_API_KEY=process[a0_0x23de00(0x256)][a0_0x23de00(0x229)],MORPH_API_URL=process['env'][a0_0x23de00(0x1b7)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x23de00(0x256)][a0_0x23de00(0x1af)]?parseInt(process[a0_0x23de00(0x256)]['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY[a0_0x23de00(0x283)](a0_0x23de00(0x230))&&!MORPH_API_KEY[a0_0x23de00(0x283)]('morph-')&&console[a0_0x23de00(0x227)](a0_0x23de00(0x1bc));async function reportMorphError(_0x2a3997){const _0x32a0a7=a0_0x23de00;try{await a0_0x17ceaa[_0x32a0a7(0x260)](_0x32a0a7(0x271),{..._0x2a3997,'timestamp':new Date()[_0x32a0a7(0x24b)](),'source':_0x2a3997['source']||_0x32a0a7(0x1aa)},{'timeout':0x1388,'headers':{'Content-Type':_0x32a0a7(0x20c),'Authorization':_0x32a0a7(0x21c)+MORPH_API_KEY}});}catch{}}args['length']===0x0&&!ENABLE_WORKSPACE_MODE&&(console[a0_0x23de00(0x227)](a0_0x23de00(0x2a0)),console[a0_0x23de00(0x227)](a0_0x23de00(0x270)),console[a0_0x23de00(0x227)](a0_0x23de00(0x1ef)),console[a0_0x23de00(0x227)](a0_0x23de00(0x1cd)),console[a0_0x23de00(0x227)](a0_0x23de00(0x207)),console[a0_0x23de00(0x227)](a0_0x23de00(0x1b1)));function normalizePath(_0x17a220){const _0x31c118=a0_0x23de00;return a0_0x3c00e5[_0x31c118(0x220)](_0x17a220);}function expandHome(_0x49e564){const _0x57e88b=a0_0x23de00;if(_0x49e564[_0x57e88b(0x283)]('~/')||_0x49e564==='~')return a0_0x3c00e5[_0x57e88b(0x1f7)](a0_0x29a9ba[_0x57e88b(0x1b2)](),_0x49e564[_0x57e88b(0x29a)](0x1));return _0x49e564;}let allowedDirectories=await Promise[a0_0x23de00(0x249)](args[a0_0x23de00(0x29d)](async _0x571be7=>{const _0x227d6d=a0_0x23de00,_0x134944=expandHome(_0x571be7),_0xf9b25b=a0_0x3c00e5[_0x227d6d(0x244)](_0x134944);try{const _0x2829a2=await a0_0x46a374[_0x227d6d(0x1c8)](_0xf9b25b);return normalizePath(_0x2829a2);}catch(_0x1b1f76){return normalizePath(_0xf9b25b);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x23de00(0x297)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x23de00(0x20a)](workspaceDir),console[a0_0x23de00(0x227)](a0_0x23de00(0x1d2)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x23d6ae){console[a0_0x23de00(0x227)](a0_0x23de00(0x22d)+a0_0x23d6ae);}async function detectWorkspaceRoot(_0xd4dc0){const _0x1b27bb=a0_0x23de00;let _0xd9cae7=a0_0x3c00e5[_0x1b27bb(0x244)](_0xd4dc0);const _0x4e8d3e=[_0x1b27bb(0x201),_0x1b27bb(0x205),_0x1b27bb(0x23b),_0x1b27bb(0x27c),_0x1b27bb(0x1f2),'go.mod',_0x1b27bb(0x222),_0x1b27bb(0x278),'composer.json'];while(_0xd9cae7!==a0_0x3c00e5[_0x1b27bb(0x28d)](_0xd9cae7)){for(const _0x2edf4b of _0x4e8d3e){const _0x1dd6a7=a0_0x3c00e5['join'](_0xd9cae7,_0x2edf4b);try{return await a0_0x46a374[_0x1b27bb(0x23c)](_0x1dd6a7),normalizePath(_0xd9cae7);}catch{}}_0xd9cae7=a0_0x3c00e5[_0x1b27bb(0x28d)](_0xd9cae7);}return normalizePath(_0xd4dc0);}await Promise[a0_0x23de00(0x249)](args[a0_0x23de00(0x29d)](async _0x6412d1=>{const _0x47cb5a=a0_0x23de00;try{const _0x53a351=await a0_0x46a374[_0x47cb5a(0x218)](expandHome(_0x6412d1));!_0x53a351['isDirectory']()&&(console['error'](_0x47cb5a(0x25b)+_0x6412d1+_0x47cb5a(0x288)),process['exit'](0x1));}catch(_0x1c9de4){console['error'](_0x47cb5a(0x290)+_0x6412d1+':',_0x1c9de4),process[_0x47cb5a(0x1f5)](0x1);}}));async function validatePath(_0x4429a5){const _0x22a0da=a0_0x23de00,_0x289f04=expandHome(_0x4429a5),_0x16aaed=a0_0x3c00e5[_0x22a0da(0x244)](_0x289f04);try{const _0x23c97d=await a0_0x46a374['realpath'](_0x16aaed);return _0x23c97d;}catch(_0x22ea8e){if(_0x22ea8e[_0x22a0da(0x1ad)]==='ENOENT'){const _0x1863fa=a0_0x3c00e5[_0x22a0da(0x28d)](_0x16aaed);try{const _0x4bc851=await a0_0x46a374['realpath'](_0x1863fa);return a0_0x3c00e5[_0x22a0da(0x1f7)](_0x4bc851,a0_0x3c00e5[_0x22a0da(0x208)](_0x16aaed));}catch{throw new Error(_0x22a0da(0x23f)+_0x1863fa);}}throw _0x22ea8e;}}const MorphEditFileArgsSchema=z[a0_0x23de00(0x1d4)]({'path':z[a0_0x23de00(0x2a1)](),'code_edit':z['string']()[a0_0x23de00(0x233)](a0_0x23de00(0x262)),'instruction':z[a0_0x23de00(0x2a1)]()['describe']('A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.'),'dryRun':z[a0_0x23de00(0x1da)]()['default'](![])[a0_0x23de00(0x233)](a0_0x23de00(0x22e))}),WarpGrepArgsSchema=z['object']({'search_string':z[a0_0x23de00(0x2a1)]()[a0_0x23de00(0x233)]('Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for'),'repo_path':z['string']()[a0_0x23de00(0x233)](a0_0x23de00(0x276))}),CodebaseSearchArgsSchema=z[a0_0x23de00(0x1d4)]({'query':z['string']()[a0_0x23de00(0x233)](a0_0x23de00(0x1ce)),'repoId':z[a0_0x23de00(0x2a1)]()[a0_0x23de00(0x233)](a0_0x23de00(0x1db)),'branch':z[a0_0x23de00(0x2a1)]()['optional']()[a0_0x23de00(0x233)](a0_0x23de00(0x1fb)),'commitHash':z[a0_0x23de00(0x2a1)]()[a0_0x23de00(0x1e6)]()[a0_0x23de00(0x233)]('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z[a0_0x23de00(0x242)](z['string']())['default']([])[a0_0x23de00(0x233)](a0_0x23de00(0x21f)),'limit':z[a0_0x23de00(0x26e)]()[a0_0x23de00(0x1e6)]()['default'](0xa)[a0_0x23de00(0x233)](a0_0x23de00(0x21b))}),server=new Server({'name':'morph-mcp','version':a0_0x23de00(0x1b9)},{'capabilities':{'tools':{}}});server[a0_0x23de00(0x1b4)](ListToolsRequestSchema,async()=>{const _0xd4523f=a0_0x23de00,_0x2ac43c=[{'name':_0xd4523f(0x24d),'description':_0xd4523f(0x24c)+'⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a'+_0xd4523f(0x23e)+_0xd4523f(0x1bf)+_0xd4523f(0x1c1)+_0xd4523f(0x27e)+_0xd4523f(0x268)+_0xd4523f(0x21a)+'-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a'+'Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a'+_0xd4523f(0x1d1)+_0xd4523f(0x1d0)+_0xd4523f(0x294)+_0xd4523f(0x223)+_0xd4523f(0x1c6)+_0xd4523f(0x250)+_0xd4523f(0x1d5)+'-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a'+_0xd4523f(0x1c9)+_0xd4523f(0x2a6)+_0xd4523f(0x1bd)+'-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a'+_0xd4523f(0x277),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0xd4523f(0x1d3),'description':_0xd4523f(0x1cf)+_0xd4523f(0x224)+_0xd4523f(0x27a)+'Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20'+_0xd4523f(0x1fe)+_0xd4523f(0x267)+_0xd4523f(0x26b)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':'codebase_search','description':'**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a'+'⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a'+_0xd4523f(0x234)+_0xd4523f(0x1c1)+_0xd4523f(0x27b)+_0xd4523f(0x1f3)+_0xd4523f(0x1e8)+_0xd4523f(0x241)+_0xd4523f(0x26a)+_0xd4523f(0x1cb)+'Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x1b5a13=_0x2ac43c[_0xd4523f(0x1d9)](_0x1c9084=>{const _0x55bd8b=_0xd4523f;if(!ENABLED_TOOLS[_0x55bd8b(0x1be)](_0x1c9084[_0x55bd8b(0x25a)]))return![];if(_0x55bd8b(0x1f4)in _0x1c9084&&_0x1c9084[_0x55bd8b(0x1f4)]&&!MORPH_API_KEY)return console[_0x55bd8b(0x227)]('Warning:\x20'+_0x1c9084['name']+_0x55bd8b(0x21d)),![];return!![];});return{'tools':_0x1b5a13[_0xd4523f(0x29d)](_0xa39aba=>({'name':_0xa39aba['name'],'description':_0xa39aba[_0xd4523f(0x29c)],'inputSchema':_0xa39aba[_0xd4523f(0x203)]}))};}),server[a0_0x23de00(0x1b4)](CallToolRequestSchema,async _0xa8c62=>{const _0x45be4e=a0_0x23de00;try{const {name:_0x5f54f4,arguments:_0x3c3e17}=_0xa8c62[_0x45be4e(0x245)];switch(_0x5f54f4){case _0x45be4e(0x24d):{const _0x49a47a=MorphEditFileArgsSchema[_0x45be4e(0x295)](_0x3c3e17);if(!_0x49a47a[_0x45be4e(0x1ae)])throw new Error(_0x45be4e(0x1b5)+_0x49a47a[_0x45be4e(0x227)]);const _0x5d424b=await validatePath(_0x49a47a[_0x45be4e(0x25d)][_0x45be4e(0x22c)]);let _0x5efc7e=null,_0x1fbb95=!![],_0x5c87be=null;try{_0x5efc7e=await a0_0x46a374[_0x45be4e(0x269)](_0x5d424b,_0x45be4e(0x200));}catch(_0x8c011c){const _0x53eab8=_0x8c011c['code'];_0x53eab8===_0x45be4e(0x286)?(_0x1fbb95=![],_0x5efc7e=''):(_0x5c87be=_0x45be4e(0x1b8)+(_0x53eab8||'unknown')+'\x20-\x20'+(_0x8c011c instanceof Error?_0x8c011c[_0x45be4e(0x238)]:String(_0x8c011c)),console['error'](_0x45be4e(0x1e4)+_0x5c87be));}try{const _0x5d6945=MORPH_API_KEY;if(!_0x5d6945)throw new Error(_0x45be4e(0x1ea));const _0x520ca4=a0_0x3c00e5[_0x45be4e(0x28d)](_0x5d424b),_0x38ec13=a0_0x3c00e5[_0x45be4e(0x208)](_0x5d424b),_0x3d3d31=await executeEditFile({'target_filepath':_0x38ec13,'code_edit':_0x49a47a['data']['code_edit'],'instructions':_0x49a47a[_0x45be4e(0x25d)][_0x45be4e(0x212)]},{'morphApiKey':_0x5d6945,'morphApiUrl':MORPH_API_URL,'baseDir':_0x520ca4,'autoWrite':!_0x49a47a[_0x45be4e(0x25d)]['dryRun'],'generateUdiff':![],'debug':![]});if(!_0x3d3d31['success'])throw new Error(_0x3d3d31[_0x45be4e(0x227)]||_0x45be4e(0x1f8));const _0x37fdc9=_0x3d3d31['changes'],_0x1015ba=_0x45be4e(0x263)+_0x37fdc9[_0x45be4e(0x1b6)]+_0x45be4e(0x231)+_0x37fdc9[_0x45be4e(0x228)]+',\x20modified\x20'+_0x37fdc9[_0x45be4e(0x1e2)];if(_0x49a47a['data'][_0x45be4e(0x219)])return{'content':[{'type':_0x45be4e(0x210),'text':_0x45be4e(0x275)+(_0x1fbb95?'':_0x45be4e(0x26d))+':\x20'+_0x49a47a[_0x45be4e(0x25d)][_0x45be4e(0x212)]+_0x45be4e(0x239)+_0x1015ba+_0x45be4e(0x20d)+_0x49a47a[_0x45be4e(0x25d)]['path']+'.'}]};return{'content':[{'type':_0x45be4e(0x210),'text':_0x45be4e(0x216)+(_0x1fbb95?_0x45be4e(0x257):_0x45be4e(0x28b))+':\x20'+_0x49a47a[_0x45be4e(0x25d)]['instruction']+_0x45be4e(0x239)+_0x1015ba+_0x45be4e(0x20d)+_0x49a47a[_0x45be4e(0x25d)][_0x45be4e(0x22c)]+'.'}]};}catch(_0x3e9e69){const _0x2b64f0=_0x3e9e69 instanceof Error?_0x3e9e69['message']:String(_0x3e9e69);return reportMorphError({'error_message':_0x2b64f0,'error_type':_0x3e9e69 instanceof Error?_0x3e9e69['constructor'][_0x45be4e(0x25a)]:_0x45be4e(0x206),'context':{'tool':_0x45be4e(0x24d),'file_path':_0x49a47a[_0x45be4e(0x25d)]['path'],'validated_path':_0x5d424b,'instruction':_0x49a47a[_0x45be4e(0x25d)][_0x45be4e(0x212)],'model':_0x45be4e(0x252),'dry_run':_0x49a47a['data']['dryRun'],'file_exists':_0x1fbb95,'file_read_error':_0x5c87be,'file_readable':_0x5efc7e!==null,'request_content':{'path':_0x49a47a[_0x45be4e(0x25d)][_0x45be4e(0x22c)],'code_edit':_0x49a47a[_0x45be4e(0x25d)][_0x45be4e(0x20e)],'instruction':_0x49a47a[_0x45be4e(0x25d)][_0x45be4e(0x212)],'original_code':_0x5efc7e!==null?_0x5efc7e[_0x45be4e(0x297)]>0xc350?_0x5efc7e[_0x45be4e(0x285)](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x5efc7e[_0x45be4e(0x297)]+_0x45be4e(0x1fd):_0x5efc7e:_0x45be4e(0x1e1)+(_0x5c87be||'unknown\x20error')+']','original_code_length':_0x5efc7e?.['length']??0x0,'model':'morph-v3-fast','dry_run':_0x49a47a[_0x45be4e(0x25d)][_0x45be4e(0x219)]}},'stack_trace':_0x3e9e69 instanceof Error?_0x3e9e69[_0x45be4e(0x1b3)]:undefined,'source':_0x45be4e(0x1aa)})[_0x45be4e(0x235)](()=>{}),{'content':[{'type':_0x45be4e(0x210),'text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x2b64f0}],'isError':!![]};}}case _0x45be4e(0x1d3):{const _0x4ffb51=WarpGrepArgsSchema[_0x45be4e(0x295)](_0x3c3e17);if(!_0x4ffb51[_0x45be4e(0x1ae)])return{'content':[{'type':_0x45be4e(0x210),'text':_0x45be4e(0x24f)+_0x4ffb51[_0x45be4e(0x227)]}],'isError':!![]};const _0x2da01d=_0x326393=>{const _0x2bbdab=_0x45be4e,_0x592da2=[];for(const _0x31b07f of _0x326393||[]){const _0x395f0f=_0x31b07f['role'],_0x57e172=_0x31b07f[_0x2bbdab(0x20f)];if(_0x395f0f===_0x2bbdab(0x289)&&_0x57e172){const _0x463309=_0x57e172['split']('\x0a')['filter'](_0x24a705=>_0x24a705[_0x2bbdab(0x282)]());for(const _0x556afc of _0x463309){const _0x11db1c=_0x556afc[_0x2bbdab(0x202)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x11db1c){_0x592da2[_0x2bbdab(0x20a)](_0x2bbdab(0x1ee)+_0x11db1c[0x1]+'\x27\x20'+_0x11db1c[0x2]);continue;}const _0x3c5870=_0x556afc[_0x2bbdab(0x202)](/^read\s+(.+)$/);if(_0x3c5870){_0x592da2[_0x2bbdab(0x20a)](_0x2bbdab(0x261)+_0x3c5870[0x1]);continue;}const _0x2a6945=_0x556afc['match'](/^list_directory\s+(.+)$/);if(_0x2a6945){_0x592da2[_0x2bbdab(0x20a)](_0x2bbdab(0x1c3)+_0x2a6945[0x1]);continue;}}}}return _0x592da2;};try{const _0x4a061c=a0_0x3c00e5[_0x45be4e(0x244)](_0x4ffb51[_0x45be4e(0x25d)][_0x45be4e(0x1ca)]),_0x24c7fd=new LocalRipgrepProvider(_0x4a061c),_0x1e85ab=await runWarpGrep({'query':_0x4ffb51[_0x45be4e(0x25d)][_0x45be4e(0x281)],'repoRoot':_0x4a061c,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x24c7fd});let _0xefccc3='';if(_0x1e85ab[_0x45be4e(0x1fa)]===_0x45be4e(0x236)&&_0x1e85ab[_0x45be4e(0x1e7)]?.[_0x45be4e(0x28e)]?.[_0x45be4e(0x287)]){const _0x2157f0=_0x1e85ab[_0x45be4e(0x1e7)][_0x45be4e(0x28e)][_0x45be4e(0x287)],_0x509816=[],_0x45f02f=[_0x45be4e(0x248)];for(const _0x43879c of _0x1e85ab['messages']){const _0x5649dc=_0x43879c[_0x45be4e(0x221)],_0x30f1d2=_0x43879c['content'];if(_0x5649dc===_0x45be4e(0x289)&&_0x30f1d2){const _0xa9031c=_0x30f1d2[_0x45be4e(0x20b)]('\x0a')[_0x45be4e(0x1d9)](_0x218b5c=>_0x218b5c['trim']());for(const _0x37879c of _0xa9031c){const _0x19275e=_0x37879c[_0x45be4e(0x202)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x19275e){_0x45f02f[_0x45be4e(0x20a)]('-\x20Grepped\x20\x27'+_0x19275e[0x1]+'\x27\x20in\x20`'+_0x19275e[0x2]+'`');continue;}const _0x7ebc52=_0x37879c[_0x45be4e(0x202)](/^read\s+(.+)$/);if(_0x7ebc52){_0x45f02f[_0x45be4e(0x20a)]('-\x20Read\x20file\x20`'+_0x7ebc52[0x1]+'`');continue;}const _0x4b3040=_0x37879c['match'](/^list_directory\s+(.+)$/);if(_0x4b3040){_0x45f02f['push'](_0x45be4e(0x258)+_0x4b3040[0x1]+'`');continue;}}}}_0x509816[_0x45be4e(0x20a)](_0x45f02f[_0x45be4e(0x1f7)]('\x0a'));const _0x57f6fa=['',_0x45be4e(0x253)];for(const _0x3e48ee of _0x2157f0){if(_0x3e48ee[_0x45be4e(0x1e9)]==='*')_0x57f6fa[_0x45be4e(0x20a)]('-\x20'+_0x3e48ee[_0x45be4e(0x22c)]+':*');else{if(Array[_0x45be4e(0x28a)](_0x3e48ee[_0x45be4e(0x1e9)])){const _0x403aa1=_0x3e48ee['lines'][_0x45be4e(0x29d)](([_0xf8af1b,_0x24c798])=>{if(_0xf8af1b===_0x24c798)return''+_0xf8af1b;return _0xf8af1b+'-'+_0x24c798;});_0x57f6fa['push']('-\x20'+_0x3e48ee['path']+':'+_0x403aa1[_0x45be4e(0x1f7)](','));}else _0x57f6fa[_0x45be4e(0x20a)]('-\x20'+_0x3e48ee[_0x45be4e(0x22c)]+':*');}}_0x57f6fa[_0x45be4e(0x20a)](''),_0x509816[_0x45be4e(0x20a)](_0x57f6fa[_0x45be4e(0x1f7)]('\x0a')),_0x509816['push']('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x124436=[];for(const _0x606674 of _0x2157f0){let _0x49ed66=a0_0x3c00e5[_0x45be4e(0x244)](_0x4ffb51[_0x45be4e(0x25d)][_0x45be4e(0x1ca)],_0x606674[_0x45be4e(0x22c)]),_0xd6a529=null,_0x1bd032=null;try{_0xd6a529=await a0_0x46a374['readFile'](_0x49ed66,{'encoding':'utf-8'});}catch(_0x482715){const _0x3ad9f1=fixPathRepetition(_0x49ed66);if(_0x3ad9f1)try{_0xd6a529=await a0_0x46a374[_0x45be4e(0x269)](_0x3ad9f1,{'encoding':_0x45be4e(0x200)}),_0x49ed66=_0x3ad9f1;}catch{_0x1bd032=_0x482715 instanceof Error?_0x482715:new Error(String(_0x482715));}else _0x1bd032=_0x482715 instanceof Error?_0x482715:new Error(String(_0x482715));}if(_0xd6a529!==null){const _0x1982bc=_0xd6a529[_0x45be4e(0x20b)](/\r?\n/),_0x9da8f9=[_0x45be4e(0x1c7)+_0x606674[_0x45be4e(0x22c)]+'\x22>'];if(_0x606674[_0x45be4e(0x1e9)]==='*'||!Array[_0x45be4e(0x28a)](_0x606674[_0x45be4e(0x1e9)]))for(let _0x52c7e0=0x1;_0x52c7e0<=_0x1982bc[_0x45be4e(0x297)];_0x52c7e0++){const _0x366b1f=_0x1982bc[_0x52c7e0-0x1];_0x9da8f9[_0x45be4e(0x20a)](_0x52c7e0+'|\x20'+_0x366b1f);}else for(const [_0x1531c8,_0x3bbde7]of _0x606674[_0x45be4e(0x1e9)]){_0x9da8f9[_0x45be4e(0x297)]>0x1&&_0x9da8f9[_0x45be4e(0x20a)]('');for(let _0x2f528f=_0x1531c8;_0x2f528f<=_0x3bbde7&&_0x2f528f<=_0x1982bc['length'];_0x2f528f++){const _0x43f68c=_0x1982bc[_0x2f528f-0x1];_0x9da8f9[_0x45be4e(0x20a)](_0x2f528f+'|\x20'+_0x43f68c);}}_0x9da8f9['push'](_0x45be4e(0x28f)),_0x124436[_0x45be4e(0x20a)](_0x9da8f9[_0x45be4e(0x1f7)]('\x0a'));}else _0x124436[_0x45be4e(0x20a)]('<file\x20path=\x22'+_0x606674['path']+_0x45be4e(0x1eb)+(_0x1bd032?.[_0x45be4e(0x238)]||_0x45be4e(0x1d6))+_0x45be4e(0x2a2));}_0x509816['push'](_0x124436[_0x45be4e(0x1f7)]('\x0a\x0a')),_0xefccc3=_0x509816[_0x45be4e(0x1f7)]('\x0a');const _0x58dde1=_0x1e85ab[_0x45be4e(0x1bb)]?.[_0x45be4e(0x1d9)](_0x22ee9e=>_0x22ee9e[_0x45be4e(0x238)]?.['startsWith'](_0x45be4e(0x1ff)))||[];if(_0x58dde1['length']>0x0){const _0x4230a3=_0x58dde1[_0x45be4e(0x29d)](_0x50579c=>_0x50579c[_0x45be4e(0x238)])['join'](';\x20');reportMorphError({'error_message':_0x4230a3,'error_type':_0x45be4e(0x1fc),'context':{'tool':_0x45be4e(0x1d3),'repo_path':_0x4ffb51['data'][_0x45be4e(0x1ca)],'query':_0x4ffb51[_0x45be4e(0x25d)][_0x45be4e(0x281)],'model':_0x45be4e(0x251),'termination_reason':_0x45be4e(0x1c5),'error_count':_0x58dde1[_0x45be4e(0x297)],'is_timeout':![],'timings':_0x1e85ab[_0x45be4e(0x24a)],'files_attempted':_0x2157f0[_0x45be4e(0x29d)](_0x383113=>({'path':_0x383113['path'],'lines':_0x383113['lines']})),'tool_calls':_0x2da01d(_0x1e85ab[_0x45be4e(0x1ac)]),'messages':_0x1e85ab['messages']?.[_0x45be4e(0x29d)](_0x4c0dbf=>({'role':_0x4c0dbf[_0x45be4e(0x221)],'content':_0x4c0dbf[_0x45be4e(0x20f)]})),'request_content':{'query':_0x4ffb51['data'][_0x45be4e(0x281)],'repo_path':_0x4ffb51[_0x45be4e(0x25d)][_0x45be4e(0x1ca)],'repoRoot':a0_0x3c00e5[_0x45be4e(0x244)](_0x4ffb51[_0x45be4e(0x25d)]['repo_path']),'model':_0x45be4e(0x251)}},'source':_0x45be4e(0x1aa)})[_0x45be4e(0x235)](()=>{});}}else{if(_0x1e85ab[_0x45be4e(0x1fa)]===_0x45be4e(0x284)&&_0x1e85ab['errors'][_0x45be4e(0x297)]>0x0){const _0x43eb1b=_0x1e85ab[_0x45be4e(0x1bb)]['map'](_0x364902=>_0x364902[_0x45be4e(0x238)])['join'](';\x20');_0xefccc3=_0x45be4e(0x25b)+_0x43eb1b;const _0x1e3b44=_0x43eb1b[_0x45be4e(0x29e)]()[_0x45be4e(0x1be)]('timeout')||_0x43eb1b[_0x45be4e(0x29e)]()[_0x45be4e(0x1be)](_0x45be4e(0x1ab))||_0x43eb1b[_0x45be4e(0x29e)]()['includes'](_0x45be4e(0x1f6)),_0x274639=_0x1e85ab[_0x45be4e(0x1e7)]?.[_0x45be4e(0x28e)]?.['files'],_0x3d486c=_0x1e85ab[_0x45be4e(0x1bb)][0x0];reportMorphError({'error_message':_0x43eb1b,'error_type':_0x1e3b44?'TimeoutError':_0x3d486c?.[_0x45be4e(0x1b0)]?.[_0x45be4e(0x25a)]||_0x45be4e(0x25e),'context':{'tool':_0x45be4e(0x1d3),'repo_path':_0x4ffb51[_0x45be4e(0x25d)]['repo_path'],'query':_0x4ffb51[_0x45be4e(0x25d)][_0x45be4e(0x281)],'model':_0x45be4e(0x251),'termination_reason':_0x1e85ab[_0x45be4e(0x1fa)],'error_count':_0x1e85ab[_0x45be4e(0x1bb)][_0x45be4e(0x297)],'is_timeout':_0x1e3b44,'timings':_0x1e85ab[_0x45be4e(0x24a)],'files_attempted':_0x274639?.[_0x45be4e(0x29d)](_0x1fa5bf=>({'path':_0x1fa5bf[_0x45be4e(0x22c)],'lines':_0x1fa5bf['lines']})),'tool_calls':_0x2da01d(_0x1e85ab[_0x45be4e(0x1ac)]),'messages':_0x1e85ab[_0x45be4e(0x1ac)]?.[_0x45be4e(0x29d)](_0x13f73c=>({'role':_0x13f73c[_0x45be4e(0x221)],'content':_0x13f73c[_0x45be4e(0x20f)]})),'request_content':{'query':_0x4ffb51[_0x45be4e(0x25d)][_0x45be4e(0x281)],'repo_path':_0x4ffb51[_0x45be4e(0x25d)][_0x45be4e(0x1ca)],'repoRoot':a0_0x3c00e5[_0x45be4e(0x244)](_0x4ffb51[_0x45be4e(0x25d)]['repo_path']),'model':'morph-warp-grep-v1-1111v0'}},'stack_trace':_0x3d486c?.[_0x45be4e(0x1b3)]||undefined,'source':_0x45be4e(0x1aa)})[_0x45be4e(0x235)](()=>{});}else _0xefccc3=_0x45be4e(0x22a);}return{'content':[{'type':_0x45be4e(0x210),'text':_0xefccc3}]};}catch(_0x95746d){const _0x1b95c4=_0x95746d instanceof Error?_0x95746d[_0x45be4e(0x238)]:String(_0x95746d),_0x4c2750=_0x1b95c4[_0x45be4e(0x29e)]()[_0x45be4e(0x1be)](_0x45be4e(0x255))||_0x1b95c4['toLowerCase']()[_0x45be4e(0x1be)](_0x45be4e(0x1ab))||_0x1b95c4[_0x45be4e(0x29e)]()['includes'](_0x45be4e(0x1f6))||_0x95746d instanceof Error&&_0x95746d[_0x45be4e(0x25a)]===_0x45be4e(0x279);return reportMorphError({'error_message':_0x1b95c4,'error_type':_0x4c2750?_0x45be4e(0x279):_0x95746d instanceof Error?_0x95746d[_0x45be4e(0x1b0)][_0x45be4e(0x25a)]:'UnknownError','context':{'tool':'warpgrep_codebase_search','repo_path':_0x4ffb51[_0x45be4e(0x25d)][_0x45be4e(0x1ca)],'query':_0x4ffb51[_0x45be4e(0x25d)]['search_string'],'model':_0x45be4e(0x251),'is_timeout':_0x4c2750,'exception_phase':_0x45be4e(0x1d8),'request_content':{'query':_0x4ffb51[_0x45be4e(0x25d)][_0x45be4e(0x281)],'repo_path':_0x4ffb51[_0x45be4e(0x25d)]['repo_path'],'repoRoot':a0_0x3c00e5[_0x45be4e(0x244)](_0x4ffb51[_0x45be4e(0x25d)][_0x45be4e(0x1ca)]),'model':_0x45be4e(0x251)}},'stack_trace':_0x95746d instanceof Error?_0x95746d['stack']:undefined,'source':_0x45be4e(0x1aa)})[_0x45be4e(0x235)](()=>{}),{'content':[{'type':_0x45be4e(0x210),'text':_0x45be4e(0x243)+_0x1b95c4}],'isError':![]};}}case _0x45be4e(0x1de):{const _0x13d2c0=CodebaseSearchArgsSchema['safeParse'](_0x3c3e17);if(!_0x13d2c0[_0x45be4e(0x1ae)])return{'content':[{'type':_0x45be4e(0x210),'text':'Invalid\x20arguments:\x20'+_0x13d2c0[_0x45be4e(0x227)]}],'isError':!![]};try{const _0x3dd56a=MORPH_API_KEY;if(!_0x3dd56a)throw new Error(_0x45be4e(0x27f));const _0x179c16=_0x13d2c0[_0x45be4e(0x25d)][_0x45be4e(0x22f)],_0x140993=await executeCodebaseSearch({'query':_0x13d2c0[_0x45be4e(0x25d)][_0x45be4e(0x214)],'target_directories':_0x179c16,'limit':_0x13d2c0[_0x45be4e(0x25d)][_0x45be4e(0x226)]},{'apiKey':_0x3dd56a,'repoId':_0x13d2c0[_0x45be4e(0x25d)][_0x45be4e(0x209)],'branch':_0x13d2c0['data'][_0x45be4e(0x1cc)],'commitHash':_0x13d2c0[_0x45be4e(0x25d)]['commitHash'],'debug':![]});if(!_0x140993[_0x45be4e(0x1ae)])return{'content':[{'type':_0x45be4e(0x210),'text':_0x45be4e(0x232)+_0x140993[_0x45be4e(0x227)]}],'isError':!![]};const _0xa37d9a=_0x140993[_0x45be4e(0x2a3)]['length']===0x0?_0x45be4e(0x259)+_0x13d2c0[_0x45be4e(0x25d)]['query']+'\x22':_0x45be4e(0x1e0)+_0x140993[_0x45be4e(0x2a3)][_0x45be4e(0x297)]+'\x20results\x20in\x20'+_0x140993[_0x45be4e(0x23a)][_0x45be4e(0x293)]+_0x45be4e(0x247)+_0x140993[_0x45be4e(0x2a3)]['map']((_0x6e95f8,_0xc6957e)=>_0xc6957e+0x1+'.\x20'+_0x6e95f8[_0x45be4e(0x26f)]+'\x20('+(_0x6e95f8['rerankScore']*0x64)['toFixed'](0x1)+'%\x20match)\x0a'+('\x20\x20\x20Lines\x20'+_0x6e95f8[_0x45be4e(0x246)]+'-'+_0x6e95f8[_0x45be4e(0x237)]+'\x0a')+('\x20\x20\x20'+_0x6e95f8[_0x45be4e(0x20f)][_0x45be4e(0x285)](0x0,0xc8)+(_0x6e95f8[_0x45be4e(0x20f)][_0x45be4e(0x297)]>0xc8?_0x45be4e(0x213):'')+'\x0a'))[_0x45be4e(0x1f7)]('\x0a');return{'content':[{'type':_0x45be4e(0x210),'text':_0xa37d9a}]};}catch(_0x15dc36){const _0x22c87e=_0x15dc36 instanceof Error?_0x15dc36[_0x45be4e(0x238)]:String(_0x15dc36);return reportMorphError({'error_message':_0x22c87e,'error_type':_0x15dc36 instanceof Error?_0x15dc36['constructor'][_0x45be4e(0x25a)]:_0x45be4e(0x206),'context':{'tool':_0x45be4e(0x1de),'query':_0x13d2c0['data'][_0x45be4e(0x214)],'repo_id':_0x13d2c0[_0x45be4e(0x25d)][_0x45be4e(0x209)],'target_directories':_0x13d2c0[_0x45be4e(0x25d)]['targetDirectories']},'stack_trace':_0x15dc36 instanceof Error?_0x15dc36[_0x45be4e(0x1b3)]:undefined,'source':'mcp-filesystem'})[_0x45be4e(0x235)](()=>{}),{'content':[{'type':_0x45be4e(0x210),'text':_0x45be4e(0x25b)+_0x22c87e}],'isError':!![]};}}default:throw new Error('Unknown\x20tool:\x20'+_0x5f54f4);}}catch(_0xd8dc7d){const _0xced77e=_0xd8dc7d instanceof Error?_0xd8dc7d['message']:String(_0xd8dc7d);return reportMorphError({'error_message':_0xced77e,'error_type':_0xd8dc7d instanceof Error?_0xd8dc7d[_0x45be4e(0x1b0)][_0x45be4e(0x25a)]:_0x45be4e(0x206),'context':{'tool':name,'arguments':args?JSON['stringify'](args)[_0x45be4e(0x285)](0x0,0x1f4):undefined,'mcp_server_version':_0x45be4e(0x1b9)},'stack_trace':_0xd8dc7d instanceof Error?_0xd8dc7d[_0x45be4e(0x1b3)]:undefined,'source':_0x45be4e(0x1aa)})[_0x45be4e(0x235)](()=>{}),{'content':[{'type':_0x45be4e(0x210),'text':_0x45be4e(0x25b)+_0xced77e}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x439025){const _0x246fa9=a0_0x23de00,_0x55d11b=await getValidRootDirectories(_0x439025);if(_0x55d11b[_0x246fa9(0x297)]>0x0)allowedDirectories=[..._0x55d11b],console[_0x246fa9(0x227)](_0x246fa9(0x254)+_0x55d11b[_0x246fa9(0x297)]+'\x20valid\x20directories');else{console[_0x246fa9(0x227)](_0x246fa9(0x299));if(ENABLE_WORKSPACE_MODE)try{const _0x36aaa3=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x36aaa3&&(allowedDirectories=[_0x36aaa3],console['error'](_0x246fa9(0x274)+_0x36aaa3));}catch(_0x407556){console[_0x246fa9(0x227)](_0x246fa9(0x1d7)+_0x407556);}}}server[a0_0x23de00(0x1dc)](RootsListChangedNotificationSchema,async()=>{const _0x3a06bf=a0_0x23de00;try{const _0x23dc4d=await server[_0x3a06bf(0x1ec)]();_0x23dc4d&&_0x3a06bf(0x25c)in _0x23dc4d&&await updateAllowedDirectoriesFromRoots(_0x23dc4d[_0x3a06bf(0x25c)]);}catch(_0x234e70){console[_0x3a06bf(0x227)](_0x3a06bf(0x1dd),_0x234e70 instanceof Error?_0x234e70[_0x3a06bf(0x238)]:String(_0x234e70));}}),server[a0_0x23de00(0x280)]=async()=>{const _0x55604b=a0_0x23de00,_0xd088b2=server['getClientCapabilities']();if(_0xd088b2?.['roots'])try{const _0x1d938e=await server[_0x55604b(0x1ec)]();_0x1d938e&&_0x55604b(0x25c)in _0x1d938e?await updateAllowedDirectoriesFromRoots(_0x1d938e[_0x55604b(0x25c)]):console[_0x55604b(0x227)]('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x19474c){console[_0x55604b(0x227)](_0x55604b(0x265),_0x19474c instanceof Error?_0x19474c[_0x55604b(0x238)]:String(_0x19474c));}else{if(allowedDirectories['length']>0x0)console['error'](_0x55604b(0x29f),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console['error'](_0x55604b(0x22b));else throw new Error(_0x55604b(0x1f9));}}};async function runServer(){const _0xbab9d5=a0_0x23de00,_0x46e275=new StdioServerTransport();await server[_0xbab9d5(0x298)](_0x46e275),console['error']('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories[_0xbab9d5(0x297)]===0x0&&console['error']('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()['catch'](_0x1f8053=>{const _0x2780dd=a0_0x23de00;console[_0x2780dd(0x227)](_0x2780dd(0x1e3),_0x1f8053),process['exit'](0x1);});
@@ -1 +1 @@
1
- (function(_0x38c790,_0x463820){const _0x5bb5e3=a1_0x5c8b,_0x433a44=_0x38c790();while(!![]){try{const _0x270c51=-parseInt(_0x5bb5e3(0x150))/0x1*(-parseInt(_0x5bb5e3(0x162))/0x2)+parseInt(_0x5bb5e3(0x157))/0x3*(parseInt(_0x5bb5e3(0x163))/0x4)+parseInt(_0x5bb5e3(0x15c))/0x5*(parseInt(_0x5bb5e3(0x158))/0x6)+-parseInt(_0x5bb5e3(0x15f))/0x7*(parseInt(_0x5bb5e3(0x165))/0x8)+parseInt(_0x5bb5e3(0x153))/0x9*(parseInt(_0x5bb5e3(0x164))/0xa)+parseInt(_0x5bb5e3(0x159))/0xb+parseInt(_0x5bb5e3(0x155))/0xc*(-parseInt(_0x5bb5e3(0x156))/0xd);if(_0x270c51===_0x463820)break;else _0x433a44['push'](_0x433a44['shift']());}catch(_0x4a4882){_0x433a44['push'](_0x433a44['shift']());}}}(a1_0x2f6e,0x6be15));import a1_0x5f58af from'path';import a1_0x184fbc from'os';export function convertToWindowsPath(_0x2641ae){const _0x44b61d=a1_0x5c8b;if(_0x2641ae[_0x44b61d(0x167)](_0x44b61d(0x166))){const _0x357ad4=_0x2641ae['charAt'](0x5)[_0x44b61d(0x160)](),_0x4b19eb=_0x2641ae[_0x44b61d(0x161)](0x6)[_0x44b61d(0x14e)](/\//g,'\x5c');return _0x357ad4+':'+_0x4b19eb;}if(_0x2641ae[_0x44b61d(0x151)](/^\/[a-zA-Z]\//)){const _0x219e2d=_0x2641ae['charAt'](0x1)['toUpperCase'](),_0x16150c=_0x2641ae[_0x44b61d(0x161)](0x2)[_0x44b61d(0x14e)](/\//g,'\x5c');return _0x219e2d+':'+_0x16150c;}if(_0x2641ae['match'](/^[a-zA-Z]:/))return _0x2641ae[_0x44b61d(0x14e)](/\//g,'\x5c');return _0x2641ae;}export function normalizePath(_0x5487e0){const _0x1cf543=a1_0x5c8b;_0x5487e0=_0x5487e0[_0x1cf543(0x152)]()[_0x1cf543(0x14e)](/^["']|["']$/g,'');const _0x55a44f=_0x5487e0[_0x1cf543(0x167)]('/')&&!_0x5487e0[_0x1cf543(0x151)](/^\/mnt\/[a-z]\//i)&&!_0x5487e0[_0x1cf543(0x151)](/^\/[a-zA-Z]\//);if(_0x55a44f)return _0x5487e0[_0x1cf543(0x14e)](/\/+/g,'/')['replace'](/\/+$/,'');_0x5487e0=convertToWindowsPath(_0x5487e0);if(_0x5487e0[_0x1cf543(0x167)]('\x5c\x5c')){let _0x48c5e5=_0x5487e0;_0x48c5e5=_0x48c5e5[_0x1cf543(0x14e)](/^\\{2,}/,'\x5c\x5c');const _0x7b0110=_0x48c5e5[_0x1cf543(0x15a)](0x2)[_0x1cf543(0x14e)](/\\\\/g,'\x5c');_0x5487e0='\x5c\x5c'+_0x7b0110;}else _0x5487e0=_0x5487e0[_0x1cf543(0x14e)](/\\\\/g,'\x5c');let _0x429d33=a1_0x5f58af[_0x1cf543(0x154)](_0x5487e0);_0x5487e0[_0x1cf543(0x167)]('\x5c\x5c')&&!_0x429d33[_0x1cf543(0x167)]('\x5c\x5c')&&(_0x429d33='\x5c'+_0x429d33);if(_0x429d33[_0x1cf543(0x151)](/^[a-zA-Z]:/)){let _0xc12e61=_0x429d33[_0x1cf543(0x14e)](/\//g,'\x5c');return/^[a-z]:/[_0x1cf543(0x14f)](_0xc12e61)&&(_0xc12e61=_0xc12e61[_0x1cf543(0x15b)](0x0)[_0x1cf543(0x160)]()+_0xc12e61[_0x1cf543(0x161)](0x1)),_0xc12e61;}return _0x429d33['replace'](/\//g,'\x5c');}export function expandHome(_0x4cc55b){const _0x465b70=a1_0x5c8b;if(_0x4cc55b['startsWith']('~/')||_0x4cc55b==='~')return a1_0x5f58af[_0x465b70(0x15e)](a1_0x184fbc[_0x465b70(0x15d)](),_0x4cc55b['slice'](0x1));return _0x4cc55b;}function a1_0x5c8b(_0x5567bf,_0x31be3d){_0x5567bf=_0x5567bf-0x14e;const _0x2f6e2c=a1_0x2f6e();let _0x5c8bdb=_0x2f6e2c[_0x5567bf];return _0x5c8bdb;}function a1_0x2f6e(){const _0x2f6e30=['10gEcoJQ','5718664lsbaAW','/mnt/','startsWith','replace','test','1qviMRn','match','trim','2677257jGOoOL','normalize','8520VORAdV','17485KoERRJ','3sBOroo','22026RBnMyd','6919242vyoXaf','substring','charAt','695mdbZwW','homedir','join','7WjUCQr','toUpperCase','slice','278030OViNsH','2143524RMcmgs'];a1_0x2f6e=function(){return _0x2f6e30;};return a1_0x2f6e();}
1
+ (function(_0x6428ca,_0x4333cc){const _0x5c0fe3=a1_0x37b5,_0x10f3bc=_0x6428ca();while(!![]){try{const _0x126b6c=parseInt(_0x5c0fe3(0x1a0))/0x1+-parseInt(_0x5c0fe3(0x19c))/0x2*(parseInt(_0x5c0fe3(0x18d))/0x3)+-parseInt(_0x5c0fe3(0x19d))/0x4+parseInt(_0x5c0fe3(0x19f))/0x5+-parseInt(_0x5c0fe3(0x18e))/0x6+-parseInt(_0x5c0fe3(0x193))/0x7*(-parseInt(_0x5c0fe3(0x196))/0x8)+-parseInt(_0x5c0fe3(0x197))/0x9*(-parseInt(_0x5c0fe3(0x18f))/0xa);if(_0x126b6c===_0x4333cc)break;else _0x10f3bc['push'](_0x10f3bc['shift']());}catch(_0x3f077c){_0x10f3bc['push'](_0x10f3bc['shift']());}}}(a1_0x183f,0x51f42));import a1_0x3d6cbf from'path';function a1_0x37b5(_0x930a7a,_0x44a9fd){_0x930a7a=_0x930a7a-0x18d;const _0x183f2a=a1_0x183f();let _0x37b500=_0x183f2a[_0x930a7a];return _0x37b500;}function a1_0x183f(){const _0x1e156c=['2672800ERPRfS','join','1043870UIxVsh','62964FdVCDJ','test','toUpperCase','3rBnUZt','831120gSDtnS','179490uJoNwZ','match','charAt','startsWith','1495858sPSfJA','replace','slice','16OYPWzo','261lXfEZq','homedir','substring','trim','/mnt/','154490RcqRmj'];a1_0x183f=function(){return _0x1e156c;};return a1_0x183f();}import a1_0x26adf8 from'os';export function convertToWindowsPath(_0x18ca7c){const _0x3136d2=a1_0x37b5;if(_0x18ca7c[_0x3136d2(0x192)](_0x3136d2(0x19b))){const _0x4b1e7f=_0x18ca7c[_0x3136d2(0x191)](0x5)[_0x3136d2(0x1a2)](),_0x3ee148=_0x18ca7c[_0x3136d2(0x195)](0x6)[_0x3136d2(0x194)](/\//g,'\x5c');return _0x4b1e7f+':'+_0x3ee148;}if(_0x18ca7c['match'](/^\/[a-zA-Z]\//)){const _0x4f29d0=_0x18ca7c[_0x3136d2(0x191)](0x1)[_0x3136d2(0x1a2)](),_0xfbda90=_0x18ca7c[_0x3136d2(0x195)](0x2)[_0x3136d2(0x194)](/\//g,'\x5c');return _0x4f29d0+':'+_0xfbda90;}if(_0x18ca7c[_0x3136d2(0x190)](/^[a-zA-Z]:/))return _0x18ca7c['replace'](/\//g,'\x5c');return _0x18ca7c;}export function normalizePath(_0x1b3bcb){const _0x5ece3d=a1_0x37b5;_0x1b3bcb=_0x1b3bcb[_0x5ece3d(0x19a)]()[_0x5ece3d(0x194)](/^["']|["']$/g,'');const _0x125720=_0x1b3bcb[_0x5ece3d(0x192)]('/')&&!_0x1b3bcb['match'](/^\/mnt\/[a-z]\//i)&&!_0x1b3bcb[_0x5ece3d(0x190)](/^\/[a-zA-Z]\//);if(_0x125720)return _0x1b3bcb[_0x5ece3d(0x194)](/\/+/g,'/')[_0x5ece3d(0x194)](/\/+$/,'');_0x1b3bcb=convertToWindowsPath(_0x1b3bcb);if(_0x1b3bcb['startsWith']('\x5c\x5c')){let _0x1f74a7=_0x1b3bcb;_0x1f74a7=_0x1f74a7['replace'](/^\\{2,}/,'\x5c\x5c');const _0x3e9aef=_0x1f74a7[_0x5ece3d(0x199)](0x2)[_0x5ece3d(0x194)](/\\\\/g,'\x5c');_0x1b3bcb='\x5c\x5c'+_0x3e9aef;}else _0x1b3bcb=_0x1b3bcb[_0x5ece3d(0x194)](/\\\\/g,'\x5c');let _0x33c8f4=a1_0x3d6cbf['normalize'](_0x1b3bcb);_0x1b3bcb[_0x5ece3d(0x192)]('\x5c\x5c')&&!_0x33c8f4[_0x5ece3d(0x192)]('\x5c\x5c')&&(_0x33c8f4='\x5c'+_0x33c8f4);if(_0x33c8f4[_0x5ece3d(0x190)](/^[a-zA-Z]:/)){let _0x4e9296=_0x33c8f4[_0x5ece3d(0x194)](/\//g,'\x5c');return/^[a-z]:/[_0x5ece3d(0x1a1)](_0x4e9296)&&(_0x4e9296=_0x4e9296[_0x5ece3d(0x191)](0x0)[_0x5ece3d(0x1a2)]()+_0x4e9296['slice'](0x1)),_0x4e9296;}return _0x33c8f4[_0x5ece3d(0x194)](/\//g,'\x5c');}export function expandHome(_0x51a087){const _0x2b675f=a1_0x37b5;if(_0x51a087[_0x2b675f(0x192)]('~/')||_0x51a087==='~')return a1_0x3d6cbf[_0x2b675f(0x19e)](a1_0x26adf8[_0x2b675f(0x198)](),_0x51a087['slice'](0x1));return _0x51a087;}
@@ -1 +1 @@
1
- (function(_0x20e881,_0x548779){const _0x1365bf=a2_0x5a1e,_0x5d5bdb=_0x20e881();while(!![]){try{const _0x9a5564=-parseInt(_0x1365bf(0xa4))/0x1+-parseInt(_0x1365bf(0xb4))/0x2+-parseInt(_0x1365bf(0xa6))/0x3*(parseInt(_0x1365bf(0xa2))/0x4)+-parseInt(_0x1365bf(0xab))/0x5+-parseInt(_0x1365bf(0xb2))/0x6+-parseInt(_0x1365bf(0xb1))/0x7+-parseInt(_0x1365bf(0xae))/0x8*(-parseInt(_0x1365bf(0xb0))/0x9);if(_0x9a5564===_0x548779)break;else _0x5d5bdb['push'](_0x5d5bdb['shift']());}catch(_0x4870d0){_0x5d5bdb['push'](_0x5d5bdb['shift']());}}}(a2_0x2e54,0xe60f7));import a2_0x46e375 from'path';function a2_0x5a1e(_0x47c019,_0x4e9b71){_0x47c019=_0x47c019-0xa2;const _0x2e5495=a2_0x2e54();let _0x5a1e51=_0x2e5495[_0x47c019];return _0x5a1e51;}function a2_0x2e54(){const _0x549a39=['isArray','1422506pcaLnM','some','36JoCMKH','includes','128607wWXXHx','string','605883CSMPmF','resolve','sep','startsWith','isAbsolute','1858110dTrnwT','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','Path\x20must\x20be\x20absolute\x20after\x20normalization','46814776dkQiNJ','normalize','9jaCutI','10899161yMjqzC','1940196LEvsxJ'];a2_0x2e54=function(){return _0x549a39;};return a2_0x2e54();}export function isPathWithinAllowedDirectories(_0x11523b,_0x21f9d5){const _0x23dbcd=a2_0x5a1e;if(typeof _0x11523b!==_0x23dbcd(0xa5)||!Array[_0x23dbcd(0xb3)](_0x21f9d5))return![];if(!_0x11523b||_0x21f9d5['length']===0x0)return![];if(_0x11523b['includes']('\x00'))return![];let _0xc6fcdc;try{_0xc6fcdc=a2_0x46e375[_0x23dbcd(0xa7)](a2_0x46e375[_0x23dbcd(0xaf)](_0x11523b));}catch{return![];}if(!a2_0x46e375[_0x23dbcd(0xaa)](_0xc6fcdc))throw new Error(_0x23dbcd(0xad));return _0x21f9d5[_0x23dbcd(0xb5)](_0x1844f4=>{const _0x3f0353=_0x23dbcd;if(typeof _0x1844f4!=='string'||!_0x1844f4)return![];if(_0x1844f4[_0x3f0353(0xa3)]('\x00'))return![];let _0xe212ab;try{_0xe212ab=a2_0x46e375['resolve'](a2_0x46e375['normalize'](_0x1844f4));}catch{return![];}if(!a2_0x46e375[_0x3f0353(0xaa)](_0xe212ab))throw new Error(_0x3f0353(0xac));if(_0xc6fcdc===_0xe212ab)return!![];if(_0xe212ab===a2_0x46e375[_0x3f0353(0xa8)])return _0xc6fcdc[_0x3f0353(0xa9)](a2_0x46e375[_0x3f0353(0xa8)]);return _0xc6fcdc['startsWith'](_0xe212ab+a2_0x46e375[_0x3f0353(0xa8)]);});}
1
+ (function(_0xe77d3a,_0x4e4a15){const _0x2bf898=a2_0x1f6f,_0x278ba5=_0xe77d3a();while(!![]){try{const _0x55a10d=parseInt(_0x2bf898(0x1e4))/0x1+parseInt(_0x2bf898(0x1e8))/0x2+-parseInt(_0x2bf898(0x1dd))/0x3+-parseInt(_0x2bf898(0x1e7))/0x4*(-parseInt(_0x2bf898(0x1e3))/0x5)+-parseInt(_0x2bf898(0x1e5))/0x6*(-parseInt(_0x2bf898(0x1ea))/0x7)+parseInt(_0x2bf898(0x1df))/0x8*(parseInt(_0x2bf898(0x1dc))/0x9)+-parseInt(_0x2bf898(0x1e6))/0xa*(parseInt(_0x2bf898(0x1ec))/0xb);if(_0x55a10d===_0x4e4a15)break;else _0x278ba5['push'](_0x278ba5['shift']());}catch(_0x44bc61){_0x278ba5['push'](_0x278ba5['shift']());}}}(a2_0x5a73,0x3b943));function a2_0x5a73(){const _0xb64ea6=['Path\x20must\x20be\x20absolute\x20after\x20normalization','resolve','isAbsolute','2199816mdSVhn','21867KmzEbn','string','8DtLLRh','includes','some','startsWith','806665jJwwdI','353871rDnSGc','1521378rshKEE','10siueOM','12afVkKv','559046QlSMnW','sep','7xSgksq','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','15004616diBuDf','length'];a2_0x5a73=function(){return _0xb64ea6;};return a2_0x5a73();}import a2_0x5b8f19 from'path';function a2_0x1f6f(_0x2a42f2,_0x4f32c9){_0x2a42f2=_0x2a42f2-0x1d8;const _0x5a73b1=a2_0x5a73();let _0x1f6fc5=_0x5a73b1[_0x2a42f2];return _0x1f6fc5;}export function isPathWithinAllowedDirectories(_0x1ecf31,_0x252553){const _0xfa27d8=a2_0x1f6f;if(typeof _0x1ecf31!==_0xfa27d8(0x1de)||!Array['isArray'](_0x252553))return![];if(!_0x1ecf31||_0x252553[_0xfa27d8(0x1d8)]===0x0)return![];if(_0x1ecf31[_0xfa27d8(0x1e0)]('\x00'))return![];let _0x13a8cc;try{_0x13a8cc=a2_0x5b8f19[_0xfa27d8(0x1da)](a2_0x5b8f19['normalize'](_0x1ecf31));}catch{return![];}if(!a2_0x5b8f19[_0xfa27d8(0x1db)](_0x13a8cc))throw new Error(_0xfa27d8(0x1d9));return _0x252553[_0xfa27d8(0x1e1)](_0xe99f89=>{const _0x128512=_0xfa27d8;if(typeof _0xe99f89!==_0x128512(0x1de)||!_0xe99f89)return![];if(_0xe99f89[_0x128512(0x1e0)]('\x00'))return![];let _0x31485a;try{_0x31485a=a2_0x5b8f19[_0x128512(0x1da)](a2_0x5b8f19['normalize'](_0xe99f89));}catch{return![];}if(!a2_0x5b8f19[_0x128512(0x1db)](_0x31485a))throw new Error(_0x128512(0x1eb));if(_0x13a8cc===_0x31485a)return!![];if(_0x31485a===a2_0x5b8f19[_0x128512(0x1e9)])return _0x13a8cc[_0x128512(0x1e2)](a2_0x5b8f19[_0x128512(0x1e9)]);return _0x13a8cc[_0x128512(0x1e2)](_0x31485a+a2_0x5b8f19[_0x128512(0x1e9)]);});}
@@ -1 +1 @@
1
- (function(_0x16dbd4,_0x28881f){const _0xc668ff=a3_0x2e01,_0x42156a=_0x16dbd4();while(!![]){try{const _0x2b94e6=-parseInt(_0xc668ff(0x141))/0x1+parseInt(_0xc668ff(0x153))/0x2*(parseInt(_0xc668ff(0x14a))/0x3)+-parseInt(_0xc668ff(0x144))/0x4+-parseInt(_0xc668ff(0x143))/0x5*(parseInt(_0xc668ff(0x151))/0x6)+-parseInt(_0xc668ff(0x14f))/0x7+parseInt(_0xc668ff(0x145))/0x8+parseInt(_0xc668ff(0x154))/0x9;if(_0x2b94e6===_0x28881f)break;else _0x42156a['push'](_0x42156a['shift']());}catch(_0x58f35c){_0x42156a['push'](_0x42156a['shift']());}}}(a3_0xb14f,0x740a5));import{promises as a3_0x31874c}from'fs';import a3_0x4153c5 from'path';function a3_0x2e01(_0x97c327,_0x467ad3){_0x97c327=_0x97c327-0x13f;const _0xb14ff9=a3_0xb14f();let _0x2e01d4=_0xb14ff9[_0x97c327];return _0x2e01d4;}import a3_0x469ece from'os';import{normalizePath}from'./path-utils.js';async function parseRootUri(_0x2797a0){const _0x3fecb4=a3_0x2e01;try{const _0x1a5b26=_0x2797a0[_0x3fecb4(0x149)](_0x3fecb4(0x150))?_0x2797a0[_0x3fecb4(0x148)](0x7):_0x2797a0,_0x6586fa=_0x1a5b26[_0x3fecb4(0x149)]('~/')||_0x1a5b26==='~'?a3_0x4153c5[_0x3fecb4(0x14d)](a3_0x469ece[_0x3fecb4(0x14c)](),_0x1a5b26['slice'](0x1)):_0x1a5b26,_0x1f872a=a3_0x4153c5[_0x3fecb4(0x147)](_0x6586fa),_0x41321d=await a3_0x31874c['realpath'](_0x1f872a);return normalizePath(_0x41321d);}catch{return null;}}function a3_0xb14f(){const _0x5a6205=['file://','2916CYpNYx','Skipping\x20','4HpbWCh','10734390VtefaT','stat','uri','292738rIDRVe','error','1785EkcCqQ','2892640FufRrD','6001416ikjWUL','Skipping\x20invalid\x20directory:\x20','resolve','slice','startsWith','690762JXLPRk','\x20due\x20to\x20error:\x20','homedir','join','non-directory\x20root','5170858SnDJRH'];a3_0xb14f=function(){return _0x5a6205;};return a3_0xb14f();}function formatDirectoryError(_0x304db0,_0x17085b,_0x2d1e1a){const _0x5e15c5=a3_0x2e01;if(_0x2d1e1a)return _0x5e15c5(0x152)+_0x2d1e1a+':\x20'+_0x304db0;const _0x21571a=_0x17085b instanceof Error?_0x17085b['message']:String(_0x17085b);return _0x5e15c5(0x146)+_0x304db0+_0x5e15c5(0x14b)+_0x21571a;}export async function getValidRootDirectories(_0x447cfb){const _0x4e6b50=a3_0x2e01,_0xd2808e=[];for(const _0x19dc49 of _0x447cfb){const _0x3bf74c=await parseRootUri(_0x19dc49[_0x4e6b50(0x140)]);if(!_0x3bf74c){console[_0x4e6b50(0x142)](formatDirectoryError(_0x19dc49[_0x4e6b50(0x140)],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0x1ee787=await a3_0x31874c[_0x4e6b50(0x13f)](_0x3bf74c);_0x1ee787['isDirectory']()?_0xd2808e['push'](_0x3bf74c):console[_0x4e6b50(0x142)](formatDirectoryError(_0x3bf74c,undefined,_0x4e6b50(0x14e)));}catch(_0x44a9cf){console[_0x4e6b50(0x142)](formatDirectoryError(_0x3bf74c,_0x44a9cf));}}return _0xd2808e;}
1
+ (function(_0x54b4a2,_0x1e1082){const _0x40f7c0=a3_0x3b60,_0x187208=_0x54b4a2();while(!![]){try{const _0x2092f5=-parseInt(_0x40f7c0(0x184))/0x1+-parseInt(_0x40f7c0(0x189))/0x2*(parseInt(_0x40f7c0(0x17e))/0x3)+-parseInt(_0x40f7c0(0x182))/0x4+-parseInt(_0x40f7c0(0x18c))/0x5*(-parseInt(_0x40f7c0(0x179))/0x6)+-parseInt(_0x40f7c0(0x175))/0x7+-parseInt(_0x40f7c0(0x188))/0x8*(parseInt(_0x40f7c0(0x185))/0x9)+-parseInt(_0x40f7c0(0x183))/0xa*(-parseInt(_0x40f7c0(0x17c))/0xb);if(_0x2092f5===_0x1e1082)break;else _0x187208['push'](_0x187208['shift']());}catch(_0x32093a){_0x187208['push'](_0x187208['shift']());}}}(a3_0x432e,0x5e988));import{promises as a3_0x27bfde}from'fs';import a3_0x3304aa from'path';import a3_0x5ca63f from'os';function a3_0x3b60(_0x5b29d7,_0x3c43fd){_0x5b29d7=_0x5b29d7-0x175;const _0x432ee4=a3_0x432e();let _0x3b609d=_0x432ee4[_0x5b29d7];return _0x3b609d;}function a3_0x432e(){const _0xac1c3c=['1069392kqssAw','11786010vlZftl','488539NDlxoA','433287qzKfCo','file://','uri','120cgPHPI','10SintJb','slice','homedir','120710kMeLaw','4285407XqHaMe','stat','error','Skipping\x20','120JlZECi','push','realpath','22PvZMvQ','\x20due\x20to\x20error:\x20','217407GUgDsr','non-directory\x20root','isDirectory','startsWith'];a3_0x432e=function(){return _0xac1c3c;};return a3_0x432e();}import{normalizePath}from'./path-utils.js';async function parseRootUri(_0x4931d2){const _0x28eef7=a3_0x3b60;try{const _0x1e759c=_0x4931d2[_0x28eef7(0x181)](_0x28eef7(0x186))?_0x4931d2[_0x28eef7(0x18a)](0x7):_0x4931d2,_0x3ec7a0=_0x1e759c[_0x28eef7(0x181)]('~/')||_0x1e759c==='~'?a3_0x3304aa['join'](a3_0x5ca63f[_0x28eef7(0x18b)](),_0x1e759c['slice'](0x1)):_0x1e759c,_0x3eaa0c=a3_0x3304aa['resolve'](_0x3ec7a0),_0x7bc2e6=await a3_0x27bfde[_0x28eef7(0x17b)](_0x3eaa0c);return normalizePath(_0x7bc2e6);}catch{return null;}}function formatDirectoryError(_0x4cb93f,_0x4528fe,_0x57fda1){const _0x2c00a8=a3_0x3b60;if(_0x57fda1)return _0x2c00a8(0x178)+_0x57fda1+':\x20'+_0x4cb93f;const _0x2c39d9=_0x4528fe instanceof Error?_0x4528fe['message']:String(_0x4528fe);return'Skipping\x20invalid\x20directory:\x20'+_0x4cb93f+_0x2c00a8(0x17d)+_0x2c39d9;}export async function getValidRootDirectories(_0x1aff48){const _0x2f14d5=a3_0x3b60,_0x530966=[];for(const _0x425c9c of _0x1aff48){const _0x7fbdd7=await parseRootUri(_0x425c9c[_0x2f14d5(0x187)]);if(!_0x7fbdd7){console[_0x2f14d5(0x177)](formatDirectoryError(_0x425c9c['uri'],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0x31ed83=await a3_0x27bfde[_0x2f14d5(0x176)](_0x7fbdd7);_0x31ed83[_0x2f14d5(0x180)]()?_0x530966[_0x2f14d5(0x17a)](_0x7fbdd7):console[_0x2f14d5(0x177)](formatDirectoryError(_0x7fbdd7,undefined,_0x2f14d5(0x17f)));}catch(_0x40684d){console['error'](formatDirectoryError(_0x7fbdd7,_0x40684d));}}return _0x530966;}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morphllm/morphmcp",
3
- "version": "0.8.72",
3
+ "version": "0.8.74",
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.97",
38
+ "@morphllm/morphsdk": "0.2.98",
39
39
  "@vscode/ripgrep": "^1.15.14",
40
40
  "axios": "^1.6.0",
41
41
  "chalk": "^5.3.0",