@morphllm/morphmcp 0.8.172 → 0.8.174
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 +1 -1
- package/dist/log-utils.js +1 -1
- package/dist/logger.js +1 -1
- package/dist/path-utils.js +1 -1
- package/dist/path-validation.js +1 -1
- package/dist/roots-utils.js +1 -1
- package/dist/tool-definitions.js +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const a0_0x4592e9=a0_0x1bf7;(function(_0x13f9ae,_0x2f5fb9){const _0x38e128=a0_0x1bf7,_0x24d6cc=_0x13f9ae();while(!![]){try{const _0x3f4dfa=-parseInt(_0x38e128(0x189))/0x1+-parseInt(_0x38e128(0x120))/0x2*(-parseInt(_0x38e128(0xe8))/0x3)+parseInt(_0x38e128(0xf8))/0x4+-parseInt(_0x38e128(0x154))/0x5+-parseInt(_0x38e128(0xdf))/0x6+parseInt(_0x38e128(0x127))/0x7+parseInt(_0x38e128(0x16b))/0x8;if(_0x3f4dfa===_0x2f5fb9)break;else _0x24d6cc['push'](_0x24d6cc['shift']());}catch(_0x3ed3d8){_0x24d6cc['push'](_0x24d6cc['shift']());}}}(a0_0x3bb1,0x8fda1));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_0xb48a10 from'fs/promises';import a0_0xe64fd4 from'path';import a0_0xc72497 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{logger}from'./logger.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0x32428b from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x428e4c){const _0x549b88=a0_0x1bf7,_0x30d257=_0x428e4c['split'](a0_0xe64fd4[_0x549b88(0xe7)])[_0x549b88(0x102)](Boolean);if(_0x30d257['length']<0x2)return null;for(let _0x3833e9=Math[_0x549b88(0x18e)](_0x30d257[_0x549b88(0xc1)]/0x2);_0x3833e9>=0x1;_0x3833e9--){for(let _0x6b0518=0x0;_0x6b0518<=_0x30d257['length']-0x2*_0x3833e9;_0x6b0518++){const _0x403c46=_0x30d257[_0x549b88(0x92)](_0x6b0518,_0x6b0518+_0x3833e9),_0x4d1134=_0x30d257[_0x549b88(0x92)](_0x6b0518+_0x3833e9,_0x6b0518+0x2*_0x3833e9);if(_0x403c46[_0x549b88(0xa5)]((_0x21ae8c,_0x2d9b36)=>_0x21ae8c===_0x4d1134[_0x2d9b36])){const _0x26de66=[..._0x30d257[_0x549b88(0x92)](0x0,_0x6b0518),..._0x30d257['slice'](_0x6b0518+_0x3833e9)];return a0_0xe64fd4[_0x549b88(0xe7)]+_0x26de66[_0x549b88(0xd4)](a0_0xe64fd4[_0x549b88(0xe7)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x12c7f7=a0_0x1bf7;try{const _0x67cbee=require(_0x12c7f7(0x137));return _0x67cbee[_0x12c7f7(0x7a)]??_0x12c7f7(0x156);}catch(_0x5d2c5e){return logMcpStderr(_0x12c7f7(0x124),_0x5d2c5e),_0x12c7f7(0x156);}}function printHelp(){const _0x562f26=a0_0x1bf7;console[_0x562f26(0x15b)]('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x562f26(0x15b)](_0x562f26(0xa0)),console['log'](_0x562f26(0x17f)),console[_0x562f26(0x15b)](_0x562f26(0x119)),console['log']('\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit'),console[_0x562f26(0x15b)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console[_0x562f26(0x15b)]('\x0aExamples:'),console[_0x562f26(0x15b)]('\x20\x20morph-mcp'),console[_0x562f26(0x15b)](_0x562f26(0xe9));}const cliArgs=process[a0_0x4592e9(0x110)][a0_0x4592e9(0x92)](0x2),VERSION_FLAGS=new Set([a0_0x4592e9(0x130),'-v','-V']),HELP_FLAGS=new Set([a0_0x4592e9(0x11c),'-h']);cliArgs[a0_0x4592e9(0x70)](_0xd9183c=>VERSION_FLAGS[a0_0x4592e9(0x18d)](_0xd9183c))&&(console['log'](a0_0x4592e9(0x9f)+getPackageVersion()),process[a0_0x4592e9(0x196)](0x0));function a0_0x1bf7(_0x57af19,_0x936580){_0x57af19=_0x57af19-0x70;const _0x3bb186=a0_0x3bb1();let _0x1bf740=_0x3bb186[_0x57af19];return _0x1bf740;}cliArgs[a0_0x4592e9(0x70)](_0x5c36ff=>HELP_FLAGS[a0_0x4592e9(0x18d)](_0x5c36ff))&&(printHelp(),process[a0_0x4592e9(0x196)](0x0));function getCliArg(_0x27743c){const _0x1089a1=a0_0x4592e9;for(let _0x3e9548=0x0;_0x3e9548<cliArgs[_0x1089a1(0xc1)];_0x3e9548++){const _0x4d81e0=cliArgs[_0x3e9548];if(_0x4d81e0[_0x1089a1(0x19a)]('--'+_0x27743c+'='))return _0x4d81e0[_0x1089a1(0x92)](('--'+_0x27743c+'=')[_0x1089a1(0xc1)]);if(_0x4d81e0==='--'+_0x27743c&&_0x3e9548+0x1<cliArgs['length'])return cliArgs[_0x3e9548+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs['length'];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x4592e9(0x18d)](arg)||HELP_FLAGS[a0_0x4592e9(0x18d)](arg))continue;if(arg[a0_0x4592e9(0x19a)](a0_0x4592e9(0xb2)))continue;if(arg===a0_0x4592e9(0xf0)){i++;continue;}args[a0_0x4592e9(0x19f)](arg);}const WORKSPACE_ROOT=process[a0_0x4592e9(0x183)][a0_0x4592e9(0x171)]||process[a0_0x4592e9(0x183)][a0_0x4592e9(0x19d)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0x4592e9(0x183)][a0_0x4592e9(0x17d)]!=='false',MORPH_API_KEY=getCliArg(a0_0x4592e9(0x114))??process[a0_0x4592e9(0x183)][a0_0x4592e9(0x15f)],MORPH_API_URL=process[a0_0x4592e9(0x183)]['MORPH_API_URL'],MORPH_LARGE_APPLY=process[a0_0x4592e9(0x183)][a0_0x4592e9(0xe5)]!=='false',MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0x4592e9(0xa9)]?parseInt(process[a0_0x4592e9(0x183)][a0_0x4592e9(0xa9)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x4592e9(0x183)][a0_0x4592e9(0x105)]?new Set(process[a0_0x4592e9(0x183)][a0_0x4592e9(0x105)][a0_0x4592e9(0x16e)](',')[a0_0x4592e9(0xfe)](_0x35351f=>_0x35351f[a0_0x4592e9(0x182)]())[a0_0x4592e9(0x102)](_0x24143f=>_0x24143f[a0_0x4592e9(0xc1)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x4592e9(0x174)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x4592e9(0x18d)](tool)&&console['error'](a0_0x4592e9(0x162)+tool+a0_0x4592e9(0x99)+[...KNOWN_TOOL_NAMES][a0_0x4592e9(0xd4)](',\x20'));}console[a0_0x4592e9(0xd3)](a0_0x4592e9(0xe1)+[...DISABLED_TOOLS][a0_0x4592e9(0xd4)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY['startsWith'](a0_0x4592e9(0x13f))&&!MORPH_API_KEY[a0_0x4592e9(0x19a)](a0_0x4592e9(0x76))&&logMcpStderr(a0_0x4592e9(0x104));async function reportMorphError(_0x307a5f){const _0x52d0ff=a0_0x4592e9;try{await a0_0x32428b[_0x52d0ff(0x12e)](_0x52d0ff(0x9d),{..._0x307a5f,'timestamp':new Date()[_0x52d0ff(0x172)](),'source':_0x307a5f[_0x52d0ff(0x11b)]||_0x52d0ff(0xc2),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x307a5f[_0x52d0ff(0xb7)]}},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':_0x52d0ff(0x10f)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x51f117,_0x44f19d){const _0x43b695=a0_0x4592e9;if(_0x51f117&&typeof _0x51f117==='object'&&_0x43b695(0xf9)in _0x51f117)return _0x51f117[_0x43b695(0xf9)];if(_0x51f117&&typeof _0x51f117===_0x43b695(0x103)&&_0x43b695(0x132)in _0x51f117)return _0x51f117[_0x43b695(0x132)]?.[_0x43b695(0xf9)];const _0x437235=_0x44f19d[_0x43b695(0x10c)](/\b(401|429)\b/);return _0x437235?parseInt(_0x437235[0x1],0xa):null;}function handleMorphAPIError(_0x53d11c){const _0x4a4480=a0_0x4592e9,_0x423262=_0x53d11c instanceof Error?_0x53d11c['message']:String(_0x53d11c),_0x4c4b18=extractStatusCode(_0x53d11c,_0x423262);switch(_0x4c4b18){case 0x191:return{'content':[{'type':_0x4a4480(0x169),'text':_0x4a4480(0xa8)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x4a4480(0x169),'text':_0x4a4480(0x19c)}],'isError':!![]};default:return null;}}args[a0_0x4592e9(0xc1)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),logMcpStderr(a0_0x4592e9(0xba)),logMcpStderr('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),logMcpStderr(a0_0x4592e9(0x11e)),logMcpStderr(a0_0x4592e9(0xd6)),logMcpStderr(a0_0x4592e9(0x10b)));function normalizePath(_0xd43f01){return a0_0xe64fd4['normalize'](_0xd43f01);}function expandHome(_0x50b4d6){const _0x6b1bbb=a0_0x4592e9;if(_0x50b4d6[_0x6b1bbb(0x19a)]('~/')||_0x50b4d6==='~')return a0_0xe64fd4[_0x6b1bbb(0xd4)](a0_0xc72497[_0x6b1bbb(0x170)](),_0x50b4d6['slice'](0x1));return _0x50b4d6;}let allowedDirectories=await Promise[a0_0x4592e9(0x141)](args[a0_0x4592e9(0xfe)](async _0x43f59e=>{const _0x14ae7f=a0_0x4592e9,_0x1a552f=expandHome(_0x43f59e),_0x18e477=a0_0xe64fd4['resolve'](_0x1a552f);try{const _0x1b0d41=await a0_0xb48a10[_0x14ae7f(0x8e)](_0x18e477);return normalizePath(_0x1b0d41);}catch(_0x27a6ef){return normalizePath(_0x18e477);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x4592e9(0xc1)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x4592e9(0x19f)](workspaceDir),logMcpStderr(a0_0x4592e9(0x16a)+workspaceDir+a0_0x4592e9(0x167)));}catch(a0_0x34b92c){logMcpStderr(a0_0x4592e9(0xfd)+a0_0x34b92c);}async function detectWorkspaceRoot(_0xdd5804){const _0x3e4a44=a0_0x4592e9;let _0x114810=a0_0xe64fd4[_0x3e4a44(0x133)](_0xdd5804);const _0x3ad93c=[_0x3e4a44(0x150),'.vscode',_0x3e4a44(0xd9),_0x3e4a44(0x178),_0x3e4a44(0x180),'go.mod',_0x3e4a44(0x186),_0x3e4a44(0xd5),'composer.json'];while(_0x114810!==a0_0xe64fd4[_0x3e4a44(0x152)](_0x114810)){for(const _0x44f5bd of _0x3ad93c){const _0x5d108c=a0_0xe64fd4[_0x3e4a44(0xd4)](_0x114810,_0x44f5bd);try{return await a0_0xb48a10['access'](_0x5d108c),normalizePath(_0x114810);}catch{}}_0x114810=a0_0xe64fd4[_0x3e4a44(0x152)](_0x114810);}return normalizePath(_0xdd5804);}await Promise[a0_0x4592e9(0x141)](args['map'](async _0xf8c14=>{const _0x5de62e=a0_0x4592e9;try{const _0x251d0e=await a0_0xb48a10['stat'](expandHome(_0xf8c14));!_0x251d0e[_0x5de62e(0x164)]()&&(logMcpStderr(_0x5de62e(0xd1)+_0xf8c14+_0x5de62e(0x131)),process['exit'](0x1));}catch(_0x1050fe){logMcpStderr(_0x5de62e(0xac)+_0xf8c14+':',_0x1050fe),process[_0x5de62e(0x196)](0x1);}}));async function validatePath(_0x454598){const _0xe89a7e=a0_0x4592e9,_0x3eb7ff=expandHome(_0x454598),_0x24b11a=a0_0xe64fd4['resolve'](_0x3eb7ff);logger['debug'](_0xe89a7e(0xff),_0xe89a7e(0x9e),{'raw_path':_0x454598,'absolute':_0x24b11a});try{const _0x25ba00=await a0_0xb48a10[_0xe89a7e(0x8e)](_0x24b11a);return logger[_0xe89a7e(0x79)]('MCP','path_validation_resolved',{'resolved':_0x25ba00,'symlink':_0x25ba00!==_0x24b11a}),_0x25ba00;}catch(_0x594bdd){if(_0x594bdd[_0xe89a7e(0x113)]===_0xe89a7e(0xcc)){const _0x368524=a0_0xe64fd4['dirname'](_0x24b11a);try{const _0xb4775a=await a0_0xb48a10[_0xe89a7e(0x8e)](_0x368524),_0x21be79=a0_0xe64fd4[_0xe89a7e(0xd4)](_0xb4775a,a0_0xe64fd4['basename'](_0x24b11a));return logger['debug'](_0xe89a7e(0xff),'path_validation_resolved',{'resolved':_0x21be79,'new_file':!![]}),_0x21be79;}catch{logger[_0xe89a7e(0xd3)](_0xe89a7e(0xff),_0xe89a7e(0x74),{'raw_path':_0x454598,'error':_0xe89a7e(0x175)+_0x368524});throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x368524);}}logger['error']('MCP',_0xe89a7e(0x74),{'raw_path':_0x454598,'error':_0x594bdd['message']});throw _0x594bdd;}}const MorphEditFileArgsSchema=z[a0_0x4592e9(0x103)]({'path':z[a0_0x4592e9(0x135)](),'code_edit':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0x14c)](a0_0x4592e9(0x8b)),'instruction':z[a0_0x4592e9(0x135)]()['describe'](a0_0x4592e9(0x190)),'dryRun':z[a0_0x4592e9(0xfa)]()[a0_0x4592e9(0xed)](![])[a0_0x4592e9(0x14c)](a0_0x4592e9(0x12b))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x4592e9(0x166),WarpGrepArgsSchema=z[a0_0x4592e9(0x103)]({'search_string':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0x14c)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0x14c)](a0_0x4592e9(0xdb)),'search_type':z[a0_0x4592e9(0x18f)]([a0_0x4592e9(0xed),'node_modules'])[a0_0x4592e9(0xeb)]()[a0_0x4592e9(0x14c)](a0_0x4592e9(0x14f))}),WarpGrepGitHubArgsSchema=z[a0_0x4592e9(0x103)]({'search_string':z['string']()[a0_0x4592e9(0x14c)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0xeb)]()[a0_0x4592e9(0x14c)](a0_0x4592e9(0x188)),'owner_repo':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0xeb)]()[a0_0x4592e9(0x14c)](a0_0x4592e9(0x98)),'branch':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0xeb)]()['describe'](a0_0x4592e9(0x13d))}),CodebaseSearchArgsSchema=z[a0_0x4592e9(0x103)]({'query':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0x14c)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0x14c)](a0_0x4592e9(0x138)),'branch':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0xeb)]()[a0_0x4592e9(0x14c)](a0_0x4592e9(0xae)),'commitHash':z[a0_0x4592e9(0x135)]()[a0_0x4592e9(0xeb)]()['describe']('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z[a0_0x4592e9(0x1a4)](z[a0_0x4592e9(0x135)]())[a0_0x4592e9(0xed)]([])[a0_0x4592e9(0x14c)](a0_0x4592e9(0x9c)),'limit':z['number']()['optional']()[a0_0x4592e9(0xed)](0xa)[a0_0x4592e9(0x14c)](a0_0x4592e9(0xcf))}),server=new Server({'name':a0_0x4592e9(0x187),'version':'0.2.0'},{'capabilities':{'tools':{}}});server[a0_0x4592e9(0x121)](ListToolsRequestSchema,async()=>{const _0x51daf8=a0_0x4592e9,_0x16dba7=[{'name':TOOL_NAMES[_0x51daf8(0x14b)],'description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a'+_0x51daf8(0x108)+_0x51daf8(0x1a2)+'IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a'+'Benefits:\x0a'+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x51daf8(0x142)+_0x51daf8(0x123)+_0x51daf8(0x82)+'Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a'+_0x51daf8(0x12d)+_0x51daf8(0x118)+_0x51daf8(0xd2)+_0x51daf8(0xfc)+_0x51daf8(0x9a)+_0x51daf8(0x13c)+_0x51daf8(0x88)+'-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a'+_0x51daf8(0xb6)+_0x51daf8(0x197)+_0x51daf8(0xb9)+_0x51daf8(0x163)+_0x51daf8(0x9b),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x51daf8(0x199)],'description':_0x51daf8(0x19e)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+'Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20'+_0x51daf8(0x91)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x3c0ae6=_0x16dba7['filter'](_0x249934=>{const _0x20847=_0x51daf8;if(DISABLED_TOOLS['has'](_0x249934[_0x20847(0xaa)]))return console['error'](_0x20847(0x13e)+_0x249934[_0x20847(0xaa)]+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if('requiresApiKey'in _0x249934&&_0x249934[_0x20847(0x90)]&&!MORPH_API_KEY)return logMcpStderr(_0x20847(0xc6)+_0x249934[_0x20847(0xaa)]+_0x20847(0x17c)),![];return!![];});return{'tools':_0x3c0ae6[_0x51daf8(0xfe)](_0x295d2d=>({'name':_0x295d2d[_0x51daf8(0xaa)],'description':_0x295d2d['description'],'inputSchema':_0x295d2d[_0x51daf8(0xb4)]}))};}),server[a0_0x4592e9(0x121)](CallToolRequestSchema,async _0x2b29de=>{const _0x2e9d5d=a0_0x4592e9,{name:_0x9e8515,arguments:_0x5998fc}=_0x2b29de[_0x2e9d5d(0x7c)],_0xfa9457=Date[_0x2e9d5d(0x19b)]();logger['debug'](_0x2e9d5d(0xff),_0x2e9d5d(0x15e),{'tool':_0x9e8515,'args':_0x9e8515==='edit_file'?{'path':_0x5998fc?.[_0x2e9d5d(0x146)],'instruction':_0x5998fc?.[_0x2e9d5d(0x12a)]||_0x5998fc?.[_0x2e9d5d(0x143)],'dryRun':_0x5998fc?.['dryRun']}:_0x5998fc});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x2e9d5d(0x169),'text':'No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.'}],'isError':!![]};if(!MORPH_API_KEY[_0x2e9d5d(0x19a)](_0x2e9d5d(0x13f))&&!MORPH_API_KEY[_0x2e9d5d(0x19a)]('morph-'))return{'content':[{'type':'text','text':_0x2e9d5d(0x134)}],'isError':!![]};if(DISABLED_TOOLS[_0x2e9d5d(0x18d)](_0x9e8515))return{'content':[{'type':_0x2e9d5d(0x169),'text':_0x2e9d5d(0xca)+_0x9e8515+_0x2e9d5d(0x193)}],'isError':![]};switch(_0x9e8515){case TOOL_NAMES[_0x2e9d5d(0x14b)]:{let _0x473179=_0x5998fc;_0x473179&&typeof _0x473179===_0x2e9d5d(0x103)&&(_0x2e9d5d(0x128)in _0x473179&&!(_0x2e9d5d(0x146)in _0x473179)&&(_0x473179={..._0x473179,'path':_0x473179[_0x2e9d5d(0x128)],'target_file':undefined}),_0x2e9d5d(0x143)in _0x473179&&!(_0x2e9d5d(0x12a)in _0x473179)&&(_0x473179={..._0x473179,'instruction':_0x473179[_0x2e9d5d(0x143)],'instructions':undefined}),_0x2e9d5d(0x113)in _0x473179&&!(_0x2e9d5d(0xe0)in _0x473179)&&(_0x473179={..._0x473179,'code_edit':_0x473179[_0x2e9d5d(0x113)],'code':undefined}));const _0x21579a=MorphEditFileArgsSchema[_0x2e9d5d(0x15c)](_0x473179);if(!_0x21579a[_0x2e9d5d(0x158)])throw new Error(_0x2e9d5d(0xbd)+_0x21579a[_0x2e9d5d(0xd3)]);const _0x38ea19=await validatePath(_0x21579a[_0x2e9d5d(0x115)]['path']);let _0x4a67e4=null,_0x3faaeb=!![],_0x1598f9=null;try{_0x4a67e4=await a0_0xb48a10[_0x2e9d5d(0xc3)](_0x38ea19,_0x2e9d5d(0xc0)),logger['debug']('MCP',_0x2e9d5d(0xa1),{'path':_0x38ea19,'size_bytes':_0x4a67e4[_0x2e9d5d(0xc1)]});}catch(_0x701ea9){const _0x5d4bcd=_0x701ea9['code'];_0x5d4bcd===_0x2e9d5d(0xcc)?(_0x3faaeb=![],_0x4a67e4='',logger['debug'](_0x2e9d5d(0xff),_0x2e9d5d(0xa1),{'path':_0x38ea19,'exists':![]})):(_0x1598f9=_0x2e9d5d(0xf5)+(_0x5d4bcd||_0x2e9d5d(0x156))+_0x2e9d5d(0x139)+(_0x701ea9 instanceof Error?_0x701ea9['message']:String(_0x701ea9)),logger['error'](_0x2e9d5d(0xff),_0x2e9d5d(0x8c),{'path':_0x38ea19,'error':_0x1598f9}),logMcpStderr(_0x2e9d5d(0xc6)+_0x1598f9));}let _0x5dee11;try{const _0x553fc4=MORPH_API_KEY;if(!_0x553fc4)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x45d0f5=a0_0xe64fd4[_0x2e9d5d(0x152)](_0x38ea19),_0x2af774=a0_0xe64fd4[_0x2e9d5d(0xc8)](_0x38ea19);logger[_0x2e9d5d(0x79)](_0x2e9d5d(0xff),_0x2e9d5d(0x17a),{'model':_0x2e9d5d(0x73),'path':_0x21579a[_0x2e9d5d(0x115)]['path'],'instruction_len':_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0x12a)][_0x2e9d5d(0xc1)],'code_edit_len':_0x21579a['data'][_0x2e9d5d(0xe0)]['length'],'original_code_len':_0x4a67e4?.['length']??0x0,'dry_run':_0x21579a['data'][_0x2e9d5d(0xc4)]});const _0x2ca5e6=Date[_0x2e9d5d(0x19b)](),_0x5aeb1a=await executeEditFile({'target_filepath':_0x2af774,'code_edit':_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0xe0)],'instruction':_0x21579a['data'][_0x2e9d5d(0x12a)]},{'morphApiKey':_0x553fc4,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x45d0f5,'autoWrite':!_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0xc4)],'generateUdiff':![],'debug':![]}),_0x32a4ca=Date[_0x2e9d5d(0x19b)]()-_0x2ca5e6;_0x5dee11=_0x5aeb1a['completionId'];if(!_0x5aeb1a[_0x2e9d5d(0x158)])throw new Error(_0x5aeb1a[_0x2e9d5d(0xd3)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x4da240=_0x5aeb1a[_0x2e9d5d(0x7e)],_0x559269=_0x2e9d5d(0x185)+_0x4da240['linesAdded']+_0x2e9d5d(0x184)+_0x4da240[_0x2e9d5d(0x191)]+',\x20modified\x20'+_0x4da240['linesModified'];logger[_0x2e9d5d(0x79)](_0x2e9d5d(0xff),'tool_call_complete',{'tool':_0x2e9d5d(0x14a),'success':!![],'latency_ms':Date[_0x2e9d5d(0x19b)]()-_0xfa9457,'edit_latency_ms':_0x32a4ca,'changes':{'added':_0x4da240[_0x2e9d5d(0xa4)],'removed':_0x4da240['linesRemoved'],'modified':_0x4da240[_0x2e9d5d(0x1a0)]},'completion_id':_0x5dee11});if(_0x21579a['data'][_0x2e9d5d(0xc4)])return{'content':[{'type':'text','text':_0x2e9d5d(0x129)+(_0x3faaeb?'':_0x2e9d5d(0x7f))+':\x20'+_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0x12a)]+_0x2e9d5d(0xbe)+_0x559269+_0x2e9d5d(0x84)+_0x21579a[_0x2e9d5d(0x115)]['path']+'.'}]};return{'content':[{'type':_0x2e9d5d(0x169),'text':_0x2e9d5d(0x14e)+(_0x3faaeb?_0x2e9d5d(0xef):_0x2e9d5d(0xf3))+':\x20'+_0x21579a['data'][_0x2e9d5d(0x12a)]+_0x2e9d5d(0xbe)+_0x559269+_0x2e9d5d(0x84)+_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0x146)]+'.'}]};}catch(_0x350d98){const _0x359fdf=handleMorphAPIError(_0x350d98);if(_0x359fdf)return logger[_0x2e9d5d(0xd3)](_0x2e9d5d(0xff),_0x2e9d5d(0x89),{'tool':'edit_file','error':_0x2e9d5d(0x1a3),'latency_ms':Date[_0x2e9d5d(0x19b)]()-_0xfa9457}),_0x359fdf;const _0x2da0c7=_0x350d98 instanceof Error?_0x350d98['message']:String(_0x350d98);return logger[_0x2e9d5d(0xd3)](_0x2e9d5d(0xff),_0x2e9d5d(0x89),{'tool':_0x2e9d5d(0x14a),'error':_0x2da0c7,'path':_0x21579a['data'][_0x2e9d5d(0x146)],'validated_path':_0x38ea19,'latency_ms':Date[_0x2e9d5d(0x19b)]()-_0xfa9457,'stack':_0x350d98 instanceof Error?_0x350d98[_0x2e9d5d(0x15a)]:undefined}),reportMorphError({'error_message':_0x2da0c7,'error_type':_0x350d98 instanceof Error?_0x350d98['constructor']['name']:_0x2e9d5d(0xf7),'context':{'tool':_0x2e9d5d(0x14a),'completion_id':_0x5dee11,'file_path':_0x21579a[_0x2e9d5d(0x115)]['path'],'validated_path':_0x38ea19,'instruction':_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0x12a)],'model':MORPH_LARGE_APPLY?'morph-v3-large':_0x2e9d5d(0x73),'dry_run':_0x21579a['data'][_0x2e9d5d(0xc4)],'file_exists':_0x3faaeb,'file_read_error':_0x1598f9,'file_readable':_0x4a67e4!==null,'request_content':{'path':_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0x146)],'code_edit':_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0xe0)],'instruction':_0x21579a[_0x2e9d5d(0x115)]['instruction'],'original_code':_0x4a67e4!==null?_0x4a67e4['length']>0xc350?_0x4a67e4['substring'](0x0,0xc350)+_0x2e9d5d(0xf2)+_0x4a67e4[_0x2e9d5d(0xc1)]+_0x2e9d5d(0x77):_0x4a67e4:'[could\x20not\x20read\x20file:\x20'+(_0x1598f9||'unknown\x20error')+']','original_code_length':_0x4a67e4?.[_0x2e9d5d(0xc1)]??0x0,'model':MORPH_LARGE_APPLY?_0x2e9d5d(0x8a):_0x2e9d5d(0x73),'dry_run':_0x21579a[_0x2e9d5d(0x115)][_0x2e9d5d(0xc4)]}},'stack_trace':_0x350d98 instanceof Error?_0x350d98[_0x2e9d5d(0x15a)]:undefined,'source':_0x2e9d5d(0xc2)})[_0x2e9d5d(0xc9)](()=>{}),{'content':[{'type':_0x2e9d5d(0x169),'text':_0x2e9d5d(0x161)+_0x2da0c7}],'isError':!![]};}}case TOOL_NAMES[_0x2e9d5d(0x199)]:{const _0x3970da=WarpGrepArgsSchema[_0x2e9d5d(0x15c)](_0x5998fc);if(!_0x3970da[_0x2e9d5d(0x158)])return{'content':[{'type':_0x2e9d5d(0x169),'text':_0x2e9d5d(0xc5)+_0x3970da[_0x2e9d5d(0xd3)]}],'isError':!![]};const _0x370c44=_0x46cc63=>{const _0x2e3896=_0x2e9d5d,_0x400199=[];for(const _0x91eaef of _0x46cc63||[]){if(_0x91eaef[_0x2e3896(0x18b)]===_0x2e3896(0x18c)&&Array[_0x2e3896(0xa7)](_0x91eaef[_0x2e3896(0x153)]))for(const _0x47dfb6 of _0x91eaef[_0x2e3896(0x153)]){try{const _0x284f4c=_0x47dfb6[_0x2e3896(0xe6)]?.[_0x2e3896(0xaa)],_0xc7ddf2=JSON[_0x2e3896(0xcb)](_0x47dfb6['function']?.[_0x2e3896(0x7b)]||'{}');if(_0x284f4c===_0x2e3896(0xe2))_0x400199[_0x2e3896(0x19f)](_0x2e3896(0x16d)+_0xc7ddf2[_0x2e3896(0xb0)]+'\x27\x20'+(_0xc7ddf2[_0x2e3896(0x146)]||'.'));else{if(_0x284f4c===_0x2e3896(0x75))_0x400199['push'](_0x2e3896(0x107)+_0xc7ddf2[_0x2e3896(0x146)]);else{if(_0x284f4c==='list_directory')_0x400199['push'](_0x2e3896(0x17b)+(_0xc7ddf2[_0x2e3896(0x17e)]||'.'));else{if(_0x284f4c===_0x2e3896(0x78))_0x400199[_0x2e3896(0x19f)]('glob\x20\x27'+_0xc7ddf2[_0x2e3896(0xb0)]+'\x27\x20'+(_0xc7ddf2['path']||'.'));else _0x284f4c===_0x2e3896(0x181)&&_0x400199['push']('finish');}}}}catch{}}}return _0x400199;},_0x32be53=_0x4c21da=>{const _0x542423=_0x2e9d5d,_0x4ed19d=[];if(!_0x4c21da||!Array[_0x542423(0xa7)](_0x4c21da))return _0x4ed19d;const _0x304cf7=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x542423(0x12c),'tool':_0x542423(0x75)},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x542423(0x75)},{'pattern':/\[READ ERROR\]/,'error_type':'ReadError','tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':'BinaryFile','tool':'read'},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x542423(0x8f),'tool':_0x542423(0xbf)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x542423(0x168),'tool':_0x542423(0xbf)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x542423(0xdc),'tool':_0x542423(0x75)},{'pattern':/\[SYMLINK\]/,'error_type':_0x542423(0x173),'tool':_0x542423(0x75)},{'pattern':/not a text file/,'error_type':'BinaryFile','tool':_0x542423(0x75)},{'pattern':/symbolic link/,'error_type':_0x542423(0x173),'tool':_0x542423(0x75)},{'pattern':/Error reading file:/,'error_type':_0x542423(0x101),'tool':_0x542423(0x75)},{'pattern':/status="error"/,'error_type':_0x542423(0x96),'tool':_0x542423(0x156)}];let _0xdd88c8=0x0;for(const _0xe16ba6 of _0x4c21da){_0xe16ba6['role']===_0x542423(0x18c)&&Array['isArray'](_0xe16ba6['tool_calls'])&&_0xdd88c8++;const _0x54d0b8=_0xe16ba6[_0x542423(0x87)];if((_0xe16ba6[_0x542423(0x18b)]===_0x542423(0xc7)||_0xe16ba6['role']===_0x542423(0x11f))&&_0x54d0b8&&typeof _0x54d0b8===_0x542423(0x135))for(const {pattern:_0x367b3f,error_type:_0x261595,tool:_0x42040a}of _0x304cf7){const _0x36f6e1=_0x54d0b8[_0x542423(0x10c)](new RegExp(_0x367b3f[_0x542423(0x11b)],'g'));if(_0x36f6e1)for(const _0x2b8b56 of _0x36f6e1){const _0x14dab7=_0x54d0b8['indexOf'](_0x2b8b56),_0x279d36=_0x54d0b8[_0x542423(0xbb)](_0x14dab7,Math['min'](_0x14dab7+0xc8,_0x54d0b8[_0x542423(0xc1)]));_0x4ed19d[_0x542423(0x19f)]({'tool':_0x42040a,'error_type':_0x261595,'error_message':_0x279d36[_0x542423(0x16e)]('\x0a')[0x0],'turn':_0xdd88c8});}}}return _0x4ed19d;};try{const _0x34161c=a0_0xe64fd4[_0x2e9d5d(0x133)](_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0xd8)]),_0x4fbcfe=_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0x177)],_0x2c62a8=_0x4fbcfe==='node_modules'?{'allowNames':[_0x2e9d5d(0x10d)]}:undefined,_0x1fbb17=new LocalRipgrepProvider(_0x34161c,undefined,_0x2c62a8);logger[_0x2e9d5d(0x79)]('MCP',_0x2e9d5d(0x12f),{'type':_0x2e9d5d(0xf6),'repo_root':_0x34161c,'search_type':_0x4fbcfe||_0x2e9d5d(0xed)}),logger['debug'](_0x2e9d5d(0xff),_0x2e9d5d(0x111),{'query':_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0x192)],'repo_root':_0x34161c,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0xbc9c1=Date[_0x2e9d5d(0x19b)](),_0xfbbb2=await runWarpGrep({'searchTerm':_0x3970da[_0x2e9d5d(0x115)]['search_string'],'repoRoot':_0x34161c,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x1fbb17,'search_type':_0x4fbcfe}),_0x134c62=Date['now']()-_0xbc9c1,_0x43d0d4=_0xfbbb2['finish']?.[_0x2e9d5d(0x72)]?.[_0x2e9d5d(0xce)]?.[_0x2e9d5d(0xc1)]??0x0;logger['debug'](_0x2e9d5d(0xff),_0x2e9d5d(0x140),{'termination':_0xfbbb2['terminationReason'],'turns':_0xfbbb2[_0x2e9d5d(0x149)]?.[_0x2e9d5d(0x116)]??0x0,'files_found':_0x43d0d4,'latency_ms':_0x134c62});const _0xc3d9cb=_0x32be53(_0xfbbb2[_0x2e9d5d(0x100)]);_0xc3d9cb[_0x2e9d5d(0xc1)]>0x0&&reportMorphError({'error_message':_0x2e9d5d(0x71)+_0xc3d9cb[_0x2e9d5d(0xc1)]+'\x20error(s)','error_type':_0x2e9d5d(0x94),'level':_0x2e9d5d(0x11d),'tool':_0x2e9d5d(0x151),'context':{'repo_path':_0x3970da['data'][_0x2e9d5d(0xd8)],'query':_0x3970da[_0x2e9d5d(0x115)]['search_string'],'model':'morph-warp-grep-v2.1','termination_reason':_0xfbbb2['terminationReason'],'sub_tool_errors':_0xc3d9cb,'timings':_0xfbbb2[_0x2e9d5d(0x149)],'tool_calls':_0x370c44(_0xfbbb2[_0x2e9d5d(0x100)]),'messages':_0xfbbb2['messages']?.['map'](_0xb210fa=>({'role':_0xb210fa[_0x2e9d5d(0x18b)],'content':_0xb210fa[_0x2e9d5d(0x87)],..._0xb210fa[_0x2e9d5d(0x153)]?{'tool_calls':_0xb210fa[_0x2e9d5d(0x153)][_0x2e9d5d(0xc1)]}:{},..._0xb210fa[_0x2e9d5d(0xab)]?{'tool_call_id':_0xb210fa[_0x2e9d5d(0xab)]}:{}}))},'source':_0x2e9d5d(0xc2)})[_0x2e9d5d(0xc9)](()=>{});let _0x251a2e='';if(_0xfbbb2['terminationReason']===_0x2e9d5d(0x122)&&_0xfbbb2[_0x2e9d5d(0x181)]?.[_0x2e9d5d(0x72)]?.[_0x2e9d5d(0xce)]){const _0x36dbba=_0xfbbb2['finish'][_0x2e9d5d(0x72)][_0x2e9d5d(0xce)];if(_0x36dbba['length']===0x0)return _0x251a2e=_0xfbbb2[_0x2e9d5d(0x181)][_0x2e9d5d(0x14d)]||_0x2e9d5d(0x109),{'content':[{'type':'text','text':_0x251a2e}]};const _0x2249fb=[],_0x51166b=[_0x2e9d5d(0x97)];for(const _0x25a109 of _0xfbbb2[_0x2e9d5d(0x100)]){if(_0x25a109['role']===_0x2e9d5d(0x18c)&&Array[_0x2e9d5d(0xa7)](_0x25a109[_0x2e9d5d(0x153)]))for(const _0x22f49f of _0x25a109[_0x2e9d5d(0x153)]){try{const _0x22e63d=_0x22f49f['function']?.[_0x2e9d5d(0xaa)],_0x76a51f=JSON['parse'](_0x22f49f[_0x2e9d5d(0xe6)]?.[_0x2e9d5d(0x7b)]||'{}');if(_0x22e63d===_0x2e9d5d(0xe2))_0x51166b[_0x2e9d5d(0x19f)](_0x2e9d5d(0x195)+_0x76a51f[_0x2e9d5d(0xb0)]+_0x2e9d5d(0x147)+(_0x76a51f[_0x2e9d5d(0x146)]||'.')+'`');else{if(_0x22e63d===_0x2e9d5d(0x75))_0x51166b[_0x2e9d5d(0x19f)](_0x2e9d5d(0x179)+_0x76a51f['path']+'`');else{if(_0x22e63d==='list_directory')_0x51166b[_0x2e9d5d(0x19f)](_0x2e9d5d(0x15d)+(_0x76a51f[_0x2e9d5d(0x17e)]||'.')+'`');else _0x22e63d==='glob'&&_0x51166b['push'](_0x2e9d5d(0x165)+_0x76a51f['pattern']+_0x2e9d5d(0xa6)+(_0x76a51f['path']||'.')+'`');}}}catch{}}}_0x2249fb[_0x2e9d5d(0x19f)](_0x51166b[_0x2e9d5d(0xd4)]('\x0a'));const _0x299b50=['',_0x2e9d5d(0x13a)];for(const _0x285a13 of _0x36dbba){if(_0x285a13[_0x2e9d5d(0x95)]==='*')_0x299b50[_0x2e9d5d(0x19f)]('-\x20'+_0x285a13[_0x2e9d5d(0x146)]+':*');else{if(Array[_0x2e9d5d(0xa7)](_0x285a13[_0x2e9d5d(0x95)])){const _0x41b789=_0x285a13[_0x2e9d5d(0x95)][_0x2e9d5d(0xfe)](([_0x1b6cb7,_0x2d9860])=>{if(_0x1b6cb7===_0x2d9860)return''+_0x1b6cb7;return _0x1b6cb7+'-'+_0x2d9860;});_0x299b50[_0x2e9d5d(0x19f)]('-\x20'+_0x285a13[_0x2e9d5d(0x146)]+':'+_0x41b789[_0x2e9d5d(0xd4)](','));}else _0x299b50[_0x2e9d5d(0x19f)]('-\x20'+_0x285a13[_0x2e9d5d(0x146)]+':*');}}_0x299b50['push'](''),_0x2249fb[_0x2e9d5d(0x19f)](_0x299b50[_0x2e9d5d(0xd4)]('\x0a')),_0x2249fb[_0x2e9d5d(0x19f)](_0x2e9d5d(0xea));const _0x3ef800=[],_0x4712e7=[];for(const _0x4327ca of _0x36dbba){let _0x4e68e5=a0_0xe64fd4[_0x2e9d5d(0x133)](_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0xd8)],_0x4327ca['path']),_0x16b3c0=null,_0x25e988=null;try{_0x16b3c0=await a0_0xb48a10['readFile'](_0x4e68e5,{'encoding':_0x2e9d5d(0xc0)});}catch(_0x219d84){const _0x7f8da7=fixPathRepetition(_0x4e68e5);if(_0x7f8da7)try{_0x16b3c0=await a0_0xb48a10[_0x2e9d5d(0xc3)](_0x7f8da7,{'encoding':'utf-8'}),_0x4e68e5=_0x7f8da7;}catch{_0x25e988=_0x219d84 instanceof Error?_0x219d84:new Error(String(_0x219d84));}else _0x25e988=_0x219d84 instanceof Error?_0x219d84:new Error(String(_0x219d84));}if(_0x16b3c0!==null){const _0x1c26de=_0x16b3c0['split'](/\r?\n/),_0x5671c7=[];if(_0x4327ca['lines']==='*'||!Array[_0x2e9d5d(0xa7)](_0x4327ca[_0x2e9d5d(0x95)]))for(let _0x34f7e5=0x1;_0x34f7e5<=_0x1c26de['length'];_0x34f7e5++){const _0x575a67=_0x1c26de[_0x34f7e5-0x1];_0x5671c7['push'](_0x34f7e5+'|\x20'+_0x575a67);}else for(const [_0x5e6f2f,_0x4cebf0]of _0x4327ca[_0x2e9d5d(0x95)]){_0x5671c7[_0x2e9d5d(0xc1)]>0x0&&_0x5671c7[_0x2e9d5d(0x19f)]('');for(let _0x304444=_0x5e6f2f;_0x304444<=_0x4cebf0&&_0x304444<=_0x1c26de[_0x2e9d5d(0xc1)];_0x304444++){const _0x4340b2=_0x1c26de[_0x304444-0x1];_0x5671c7[_0x2e9d5d(0x19f)](_0x304444+'|\x20'+_0x4340b2);}}_0x4712e7['push']({'path':_0x4327ca[_0x2e9d5d(0x146)],'content':_0x5671c7[_0x2e9d5d(0xd4)]('\x0a')});}else _0x3ef800[_0x2e9d5d(0x19f)]('<file\x20path=\x22'+_0x4327ca[_0x2e9d5d(0x146)]+_0x2e9d5d(0x148)+(_0x25e988?.[_0x2e9d5d(0x8d)]||_0x2e9d5d(0x80))+_0x2e9d5d(0x1a1));}try{const _0x53336a=await compactFileContexts(_0x4712e7,_0x3970da['data']['search_string'],MORPH_API_KEY,MORPH_API_URL);for(const _0x38c88f of _0x53336a){_0x3ef800[_0x2e9d5d(0x19f)]('<file\x20path=\x22'+_0x38c88f[_0x2e9d5d(0x146)]+_0x2e9d5d(0x7d)+_0x38c88f[_0x2e9d5d(0x87)]+_0x2e9d5d(0x1a1));}}catch(_0x123124){logger[_0x2e9d5d(0x11d)](_0x2e9d5d(0xff),'compaction_failed',{'error':_0x123124 instanceof Error?_0x123124[_0x2e9d5d(0x8d)]:String(_0x123124),'files_count':_0x4712e7['length']});for(const _0x2eab8d of _0x4712e7){_0x3ef800[_0x2e9d5d(0x19f)](_0x2e9d5d(0x157)+_0x2eab8d[_0x2e9d5d(0x146)]+'\x22>\x0a'+_0x2eab8d['content']+_0x2e9d5d(0x1a1));}}_0x2249fb[_0x2e9d5d(0x19f)](_0x3ef800[_0x2e9d5d(0xd4)]('\x0a\x0a')),_0x251a2e=_0x2249fb[_0x2e9d5d(0xd4)]('\x0a');const _0x18cb63=_0xfbbb2['errors']?.[_0x2e9d5d(0x102)](_0x4d6323=>_0x4d6323[_0x2e9d5d(0x8d)]?.[_0x2e9d5d(0x19a)](_0x2e9d5d(0xfb)))||[];if(_0x18cb63[_0x2e9d5d(0xc1)]>0x0){const _0x3de793=_0x18cb63[_0x2e9d5d(0xfe)](_0x2b333a=>_0x2b333a[_0x2e9d5d(0x8d)])['join'](';\x20');reportMorphError({'error_message':_0x3de793,'error_type':_0x2e9d5d(0x117),'context':{'tool':_0x2e9d5d(0x151),'repo_path':_0x3970da[_0x2e9d5d(0x115)]['repo_path'],'query':_0x3970da['data'][_0x2e9d5d(0x192)],'model':'morph-warp-grep-v2.1','termination_reason':_0x2e9d5d(0x145),'error_count':_0x18cb63[_0x2e9d5d(0xc1)],'is_timeout':![],'timings':_0xfbbb2['timings'],'files_attempted':_0x36dbba[_0x2e9d5d(0xfe)](_0x3e33f8=>({'path':_0x3e33f8[_0x2e9d5d(0x146)],'lines':_0x3e33f8[_0x2e9d5d(0x95)]})),'tool_calls':_0x370c44(_0xfbbb2['messages']),'messages':_0xfbbb2[_0x2e9d5d(0x100)]?.[_0x2e9d5d(0xfe)](_0x32ffd7=>({'role':_0x32ffd7[_0x2e9d5d(0x18b)],'content':_0x32ffd7[_0x2e9d5d(0x87)],..._0x32ffd7[_0x2e9d5d(0x153)]?{'tool_calls':_0x32ffd7[_0x2e9d5d(0x153)][_0x2e9d5d(0xc1)]}:{},..._0x32ffd7[_0x2e9d5d(0xab)]?{'tool_call_id':_0x32ffd7[_0x2e9d5d(0xab)]}:{}})),'request_content':{'query':_0x3970da['data'][_0x2e9d5d(0x192)],'repo_path':_0x3970da[_0x2e9d5d(0x115)]['repo_path'],'repoRoot':a0_0xe64fd4[_0x2e9d5d(0x133)](_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0xd8)]),'model':_0x2e9d5d(0x112)}},'source':_0x2e9d5d(0xc2)})['catch'](()=>{});}}else{if(_0xfbbb2[_0x2e9d5d(0xe3)]===_0x2e9d5d(0xad)&&_0xfbbb2[_0x2e9d5d(0x136)][_0x2e9d5d(0xc1)]>0x0){const _0x2cf38b=_0xfbbb2['errors'][_0x2e9d5d(0xfe)](_0x5f081b=>_0x5f081b[_0x2e9d5d(0x8d)])[_0x2e9d5d(0xd4)](';\x20');_0x251a2e=_0x2e9d5d(0xd1)+_0x2cf38b;const _0x45131b=_0x2cf38b[_0x2e9d5d(0x176)]()[_0x2e9d5d(0x13b)](_0x2e9d5d(0xf4))||_0x2cf38b[_0x2e9d5d(0x176)]()['includes'](_0x2e9d5d(0x160))||_0x2cf38b['toLowerCase']()[_0x2e9d5d(0x13b)](_0x2e9d5d(0xa3)),_0x5aad2c=_0xfbbb2[_0x2e9d5d(0x181)]?.[_0x2e9d5d(0x72)]?.[_0x2e9d5d(0xce)],_0x86674d=_0xfbbb2['errors'][0x0];reportMorphError({'error_message':_0x2cf38b,'error_type':_0x45131b?'TimeoutError':_0x86674d?.[_0x2e9d5d(0x18a)]?.['name']||_0x2e9d5d(0xbc),'context':{'tool':_0x2e9d5d(0x151),'repo_path':_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0xd8)],'query':_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0x192)],'model':_0x2e9d5d(0x112),'termination_reason':_0xfbbb2[_0x2e9d5d(0xe3)],'error_count':_0xfbbb2['errors']['length'],'is_timeout':_0x45131b,'timings':_0xfbbb2[_0x2e9d5d(0x149)],'files_attempted':_0x5aad2c?.['map'](_0x1b668e=>({'path':_0x1b668e['path'],'lines':_0x1b668e[_0x2e9d5d(0x95)]})),'tool_calls':_0x370c44(_0xfbbb2[_0x2e9d5d(0x100)]),'messages':_0xfbbb2['messages']?.[_0x2e9d5d(0xfe)](_0xccecfe=>({'role':_0xccecfe[_0x2e9d5d(0x18b)],'content':_0xccecfe[_0x2e9d5d(0x87)],..._0xccecfe[_0x2e9d5d(0x153)]?{'tool_calls':_0xccecfe[_0x2e9d5d(0x153)]['length']}:{},..._0xccecfe[_0x2e9d5d(0xab)]?{'tool_call_id':_0xccecfe['tool_call_id']}:{}})),'request_content':{'query':_0x3970da[_0x2e9d5d(0x115)]['search_string'],'repo_path':_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0xd8)],'repoRoot':a0_0xe64fd4['resolve'](_0x3970da[_0x2e9d5d(0x115)]['repo_path']),'model':_0x2e9d5d(0x112)}},'stack_trace':_0x86674d?.[_0x2e9d5d(0x15a)]||undefined,'source':_0x2e9d5d(0xc2)})[_0x2e9d5d(0xc9)](()=>{});}else _0x251a2e=_0x2e9d5d(0x194);}return{'content':[{'type':_0x2e9d5d(0x169),'text':_0x251a2e}]};}catch(_0x1094de){const _0x153120=handleMorphAPIError(_0x1094de);if(_0x153120)return logger[_0x2e9d5d(0xd3)](_0x2e9d5d(0xff),'tool_call_error',{'tool':_0x2e9d5d(0x151),'error':_0x2e9d5d(0x1a3),'latency_ms':Date[_0x2e9d5d(0x19b)]()-_0xfa9457}),_0x153120;const _0x2f7eae=_0x1094de instanceof Error?_0x1094de['message']:String(_0x1094de);logger[_0x2e9d5d(0xd3)](_0x2e9d5d(0xff),_0x2e9d5d(0x89),{'tool':'codebase_search','error':_0x2f7eae,'repo_path':_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0xd8)],'query':_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0x192)],'latency_ms':Date[_0x2e9d5d(0x19b)]()-_0xfa9457});const _0x3736e7=_0x2f7eae[_0x2e9d5d(0x176)]()[_0x2e9d5d(0x13b)]('timeout')||_0x2f7eae[_0x2e9d5d(0x176)]()[_0x2e9d5d(0x13b)]('timed\x20out')||_0x2f7eae[_0x2e9d5d(0x176)]()[_0x2e9d5d(0x13b)]('etimedout')||_0x1094de instanceof Error&&_0x1094de[_0x2e9d5d(0xaa)]===_0x2e9d5d(0xb1);return reportMorphError({'error_message':_0x2f7eae,'error_type':_0x3736e7?_0x2e9d5d(0xb1):_0x1094de instanceof Error?_0x1094de[_0x2e9d5d(0x18a)][_0x2e9d5d(0xaa)]:_0x2e9d5d(0xf7),'context':{'tool':_0x2e9d5d(0x151),'repo_path':_0x3970da['data'][_0x2e9d5d(0xd8)],'query':_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0x192)],'model':'morph-warp-grep-v2.1','is_timeout':_0x3736e7,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0x192)],'repo_path':_0x3970da['data'][_0x2e9d5d(0xd8)],'repoRoot':a0_0xe64fd4[_0x2e9d5d(0x133)](_0x3970da[_0x2e9d5d(0x115)][_0x2e9d5d(0xd8)]),'model':_0x2e9d5d(0x112)}},'stack_trace':_0x1094de instanceof Error?_0x1094de[_0x2e9d5d(0x15a)]:undefined,'source':_0x2e9d5d(0xc2)})['catch'](()=>{}),{'content':[{'type':_0x2e9d5d(0x169),'text':_0x2e9d5d(0x159)+_0x2f7eae}],'isError':![]};}}case TOOL_NAMES[_0x2e9d5d(0xee)]:{const _0x4f3ab1=WarpGrepGitHubArgsSchema[_0x2e9d5d(0x15c)](_0x5998fc);if(!_0x4f3ab1['success'])return{'content':[{'type':_0x2e9d5d(0x169),'text':_0x2e9d5d(0xc5)+_0x4f3ab1['error']}],'isError':!![]};const _0x1d84d9=_0x4f3ab1[_0x2e9d5d(0x115)][_0x2e9d5d(0x155)]||_0x4f3ab1['data']['owner_repo'];if(!_0x1d84d9)return{'content':[{'type':_0x2e9d5d(0x169),'text':_0x2e9d5d(0x10e)}],'isError':!![]};const _0x3e91be=MORPH_API_KEY;if(!_0x3e91be)throw new Error(_0x2e9d5d(0xe4));const _0x3d0e89=Date['now']();logger[_0x2e9d5d(0x79)](_0x2e9d5d(0xff),_0x2e9d5d(0xec),{'identifier':_0x1d84d9,'query':_0x4f3ab1[_0x2e9d5d(0x115)][_0x2e9d5d(0x192)],'branch':_0x4f3ab1[_0x2e9d5d(0x115)][_0x2e9d5d(0x16c)]});try{const _0x17b766=new WarpGrepClient({'morphApiKey':_0x3e91be,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x357437=await _0x17b766[_0x2e9d5d(0xb8)]({'searchTerm':_0x4f3ab1[_0x2e9d5d(0x115)][_0x2e9d5d(0x192)],'github':_0x1d84d9,'branch':_0x4f3ab1[_0x2e9d5d(0x115)][_0x2e9d5d(0x16c)]}),_0x1eabc7=Date[_0x2e9d5d(0x19b)]()-_0x3d0e89;logMcpStderr('[github_codebase_search]\x20Done\x20in\x20'+_0x1eabc7+'ms.\x20Success:\x20'+_0x357437[_0x2e9d5d(0x158)]);const _0x3bbc58=formatResult(_0x357437);return{'content':[{'type':_0x2e9d5d(0x169),'text':_0x3bbc58}]};}catch(_0x2a18d1){const _0xcfe532=handleMorphAPIError(_0x2a18d1);if(_0xcfe532)return _0xcfe532;const _0x50c8ba=Date['now']()-_0x3d0e89,_0x4bfbf=_0x2a18d1 instanceof Error?_0x2a18d1['message']:String(_0x2a18d1);return logMcpStderr(_0x2e9d5d(0x144)+_0x50c8ba+_0x2e9d5d(0xb3),_0x4bfbf),reportMorphError({'error_message':_0x4bfbf,'error_type':_0x2a18d1 instanceof Error?_0x2a18d1['constructor'][_0x2e9d5d(0xaa)]:'UnknownError','context':{'tool':_0x2e9d5d(0x81),'github_url':_0x1d84d9,'search_string':_0x4f3ab1[_0x2e9d5d(0x115)][_0x2e9d5d(0x192)],'branch':_0x4f3ab1[_0x2e9d5d(0x115)][_0x2e9d5d(0x16c)]},'stack_trace':_0x2a18d1 instanceof Error?_0x2a18d1[_0x2e9d5d(0x15a)]:undefined,'source':_0x2e9d5d(0xc2),'tool':'github_codebase_search','latency_ms':_0x50c8ba})['catch'](()=>{}),{'content':[{'type':'text','text':_0x2e9d5d(0xa2)+_0x4bfbf}],'isError':![]};}}default:throw new Error(_0x2e9d5d(0xda)+_0x9e8515);}}catch(_0x58a80d){const _0x429036=_0x58a80d instanceof Error?_0x58a80d['message']:String(_0x58a80d);return reportMorphError({'error_message':_0x429036,'error_type':_0x58a80d instanceof Error?_0x58a80d[_0x2e9d5d(0x18a)][_0x2e9d5d(0xaa)]:_0x2e9d5d(0xf7),'context':{'tool':_0x9e8515,'arguments':_0x5998fc?JSON[_0x2e9d5d(0xde)](_0x5998fc)['substring'](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x58a80d instanceof Error?_0x58a80d[_0x2e9d5d(0x15a)]:undefined,'source':_0x2e9d5d(0xc2)})[_0x2e9d5d(0xc9)](()=>{}),{'content':[{'type':_0x2e9d5d(0x169),'text':_0x2e9d5d(0xd1)+_0x429036}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x33b8d0){const _0x52af14=a0_0x4592e9,_0x2a9325=await getValidRootDirectories(_0x33b8d0);if(_0x2a9325[_0x52af14(0xc1)]>0x0)allowedDirectories=[..._0x2a9325],logMcpStderr(_0x52af14(0x16f)+_0x2a9325[_0x52af14(0xc1)]+_0x52af14(0xdd));else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x1f33e2=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x1f33e2&&(allowedDirectories=[_0x1f33e2],logMcpStderr(_0x52af14(0x93)+_0x1f33e2));}catch(_0x445765){logMcpStderr(_0x52af14(0x198)+_0x445765);}}}server[a0_0x4592e9(0xaf)](RootsListChangedNotificationSchema,async()=>{const _0x24bd49=a0_0x4592e9;try{const _0x3b42ba=await server[_0x24bd49(0xf1)]();_0x3b42ba&&'roots'in _0x3b42ba&&await updateAllowedDirectoriesFromRoots(_0x3b42ba[_0x24bd49(0x11a)]);}catch(_0x574574){logMcpStderr(_0x24bd49(0x125),_0x574574 instanceof Error?_0x574574[_0x24bd49(0x8d)]:String(_0x574574));}}),server[a0_0x4592e9(0x85)]=async()=>{const _0x5f4395=a0_0x4592e9,_0x16393c=server['getClientCapabilities']();if(_0x16393c?.[_0x5f4395(0x11a)])try{const _0x3c9995=await server[_0x5f4395(0xf1)]();_0x3c9995&&_0x5f4395(0x11a)in _0x3c9995?await updateAllowedDirectoriesFromRoots(_0x3c9995['roots']):logMcpStderr(_0x5f4395(0xb5));}catch(_0x314ef9){logMcpStderr(_0x5f4395(0x106),_0x314ef9 instanceof Error?_0x314ef9[_0x5f4395(0x8d)]:String(_0x314ef9));}else{if(allowedDirectories[_0x5f4395(0xc1)]>0x0)logMcpStderr(_0x5f4395(0xcd),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x5f4395(0xd0));else throw new Error(_0x5f4395(0x83));}}};function a0_0x3bb1(){const _0x4f0665=['MORPH_API_KEY','timed\x20out','❌\x20Morph\x20Edit\x20Failed:\x20','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','isDirectory','-\x20Glob\x20search\x20`','Natural-language\x20question/description\x20about\x20the\x20code\x20you\x20want\x20to\x20understand.\x20Good\x20example:\x20\x22Where\x20does\x20auth\x20get\x20handled,\x20what\x20are\x20the\x20different\x20oauth\x20methods\x20supported?\x22,\x20\x22Trace\x20all\x20code\x20that\x20relates\x20to\x20how\x20data\x20is\x20injested\x20and\x20processed\x22.\x20Bad\x20example:\x20\x22auth()\x22,\x20\x22auth\x20login\x20dashoard\x20google\x20email\x22.\x20This\x20tool\x20does\x20NOT\x20accept\x20regex,\x20keyword\x20dumps,\x20or\x20symbol-only\x20queries.','\x20as\x20allowed\x20directory','RipgrepNotAvailable','text','Workspace\x20mode\x20enabled:\x20Using\x20','2422688MHjtfN','branch','grep\x20\x27','split','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','homedir','WORKSPACE_ROOT','toISOString','SymlinkError','size','Parent\x20directory\x20does\x20not\x20exist:\x20','toLowerCase','search_type','Cargo.toml','-\x20Read\x20file\x20`','api_request_start','list_directory\x20','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','ENABLE_WORKSPACE_MODE','command','\x0aOptions:','pyproject.toml','finish','trim','env',',\x20removed\x20','added\x20','.cursor','morph-mcp','GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','954419aWIrOD','constructor','role','assistant','has','floor','enum','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','linesRemoved','search_string','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','-\x20Grepped\x20\x27','exit','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','Warning:\x20Workspace\x20fallback\x20failed:\x20','CODEBASE_SEARCH','startsWith','now','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','PWD','A\x20code\x20exploration\x20tool,\x20use\x20this\x20tool\x20when\x20exploring\x20an\x20unfamiliar\x20codebase,\x20and\x20you\x27re\x20unsure\x20of\x20the\x20exact\x20file\x20or\x20string\x20to\x20look\x20for.\x20This\x20tool\x20will\x20find\x20all\x20relevant\x20bits\x20of\x20code\x20given\x20a\x20natural\x20lanugage\x20description,\x20or\x20questin\x20of\x20the\x20thing\x20you\x27re\x20looking\x20for.\x20','push','linesModified','\x0a</file>','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','API\x20error\x20(auth/rate-limit)','array','some','WarpGrep\x20sub-tool\x20errors:\x20','metadata','morph-v3-fast','path_validation_failed','read','morph-','\x20chars)','glob','debug','version','arguments','params','\x22>\x0a','changes','\x20(new\x20file)','Unknown\x20error','github_codebase_search','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','Server\x20cannot\x20operate:\x20No\x20allowed\x20directories\x20available.\x20Server\x20was\x20started\x20without\x20command-line\x20directories\x20and\x20client\x20either\x20does\x20not\x20support\x20MCP\x20roots\x20protocol\x20or\x20provided\x20empty\x20roots.\x20Please\x20either:\x201)\x20Start\x20server\x20with\x20directory\x20arguments,\x202)\x20Use\x20a\x20client\x20that\x20supports\x20MCP\x20roots\x20protocol\x20and\x20provides\x20valid\x20root\x20directories,\x20or\x203)\x20Enable\x20workspace\x20mode\x20with\x20ENABLE_WORKSPACE_MODE=true.','.\x20Path:\x20','oninitialized','Fatal\x20error\x20running\x20server:','content','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','tool_call_error','morph-v3-large','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','file_read_failed','message','realpath','RipgrepError','requiresApiKey','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','slice','Fallback:\x20Using\x20workspace\x20root\x20','SubToolError','lines','ToolException','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','\x22.\x20Known\x20tools:\x20','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','https://morphllm.com/api/error-report','path_validation_start','@morphllm/morphmcp\x20','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','file_read_complete','GitHub\x20search\x20failed:\x20','etimedout','linesAdded','every','`\x20in\x20`','isArray','Authentication\x20failed:\x20Your\x20Morph\x20API\x20key\x20is\x20invalid\x20or\x20has\x20been\x20revoked.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key,\x20then\x20update\x20your\x20MCP\x20configuration.','MORPH_WARP_GREP_TIMEOUT','name','tool_call_id','Error\x20accessing\x20directory\x20','terminated','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','setNotificationHandler','pattern','TimeoutError','--api-key=','ms:','inputSchema','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','context','searchGitHub','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','substring','WarpGrepError','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','.\x20Changes:\x20','grep','utf-8','length','mcp-filesystem','readFile','dryRun','Invalid\x20arguments:\x20','Warning:\x20','tool','basename','catch','Tool\x20\x22','parse','ENOENT','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','files','Max\x20results\x20to\x20return','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','Error:\x20','For\x20deletions:\x0a','error','join','tsconfig.json','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','repo_path','package.json','Unknown\x20tool:\x20','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','BinaryFile','\x20valid\x20directories','stringify','2263926osvboG','code_edit','Disabled\x20tools:\x20','grep_search','terminationReason','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','MORPH_LARGE_APPLY','function','sep','37773YFUOWH','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','Here\x20is\x20the\x20content\x20of\x20files:\x0a','optional','github_search_start','default','GITHUB_CODEBASE_SEARCH','Applied','--api-key','listRoots','\x0a...\x20(truncated,\x20total:\x20','Created\x20File','timeout','Failed\x20to\x20read\x20file:\x20','LocalRipgrepProvider','UnknownError','389992ayQvKu','status','boolean','File\x20read\x20error:','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','map','MCP','messages','ReadError','filter','object','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','DISABLED_TOOLS','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','read\x20','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','connect','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','match','node_modules','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','Bearer\x20','argv','warp_grep_start','morph-warp-grep-v2.1','code','api-key','data','turns','FileReadError','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','roots','source','--help','warn','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','user','108zPCjZz','setRequestHandler','completed','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','Failed\x20to\x20request\x20roots\x20from\x20client:','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','8225623ddzzSR','target_file','Morph\x20Edit\x20Preview','instruction','Preview\x20changes\x20without\x20applying\x20them.','FileNotFound','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','post','provider_created','--version','\x20is\x20not\x20a\x20directory','response','resolve','Invalid\x20Morph\x20API\x20key\x20format.\x20API\x20keys\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key.','string','errors','../package.json','Repository\x20identifier','\x20-\x20','Relevant\x20context\x20found:','includes','Rules:\x0a','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','Tool\x20','sk-','warp_grep_complete','all','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','instructions','[github_codebase_search]\x20Failed\x20in\x20','completed_with_file_errors','path','\x27\x20in\x20`','\x22>\x0aError\x20reading\x20file:\x20','timings','edit_file','EDIT_FILE','describe','payload','Morph\x20Edit\x20','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','.git','codebase_search','dirname','tool_calls','1671900tAiZwb','github_url','unknown','<file\x20path=\x22','success','Error\x20running\x20fast\x20context\x20search:\x20','stack','log','safeParse','-\x20Listed\x20directory\x20`','tool_call_received'];a0_0x3bb1=function(){return _0x4f0665;};return a0_0x3bb1();}async function runServer(){const _0x5ce72e=a0_0x4592e9,_0x507217=new StdioServerTransport();await server[_0x5ce72e(0x10a)](_0x507217),logMcpStderr(_0x5ce72e(0xd7)),allowedDirectories['length']===0x0&&logMcpStderr(_0x5ce72e(0x126));}runServer()[a0_0x4592e9(0xc9)](_0x20cd4e=>{const _0xd49a7f=a0_0x4592e9;logMcpStderr(_0xd49a7f(0x86),_0x20cd4e),process['exit'](0x1);});
|
|
2
|
+
const a0_0x4ff747=a0_0x1578;(function(_0x477a6f,_0x3d999d){const _0x35058c=a0_0x1578,_0x4421f0=_0x477a6f();while(!![]){try{const _0x5a6c47=-parseInt(_0x35058c(0x17a))/0x1*(parseInt(_0x35058c(0x19f))/0x2)+-parseInt(_0x35058c(0x17c))/0x3+parseInt(_0x35058c(0x105))/0x4*(-parseInt(_0x35058c(0x12a))/0x5)+-parseInt(_0x35058c(0x190))/0x6+parseInt(_0x35058c(0x1e1))/0x7+-parseInt(_0x35058c(0x193))/0x8+parseInt(_0x35058c(0x185))/0x9;if(_0x5a6c47===_0x3d999d)break;else _0x4421f0['push'](_0x4421f0['shift']());}catch(_0x1006be){_0x4421f0['push'](_0x4421f0['shift']());}}}(a0_0x60bb,0xca570));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_0x2d400e from'fs/promises';import a0_0x723602 from'path';import a0_0x3e78ca from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';function a0_0x1578(_0x3eb30f,_0x460f75){_0x3eb30f=_0x3eb30f-0x104;const _0x60bb56=a0_0x60bb();let _0x157841=_0x60bb56[_0x3eb30f];return _0x157841;}import{logger}from'./logger.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0x1c101d from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x317fa9){const _0xdc65a8=a0_0x1578,_0x1e9d8c=_0x317fa9[_0xdc65a8(0x18a)](a0_0x723602[_0xdc65a8(0x14f)])['filter'](Boolean);if(_0x1e9d8c[_0xdc65a8(0x16b)]<0x2)return null;for(let _0x5f2cee=Math[_0xdc65a8(0x14b)](_0x1e9d8c[_0xdc65a8(0x16b)]/0x2);_0x5f2cee>=0x1;_0x5f2cee--){for(let _0x2541f0=0x0;_0x2541f0<=_0x1e9d8c[_0xdc65a8(0x16b)]-0x2*_0x5f2cee;_0x2541f0++){const _0x52a101=_0x1e9d8c[_0xdc65a8(0x1ec)](_0x2541f0,_0x2541f0+_0x5f2cee),_0x3b5db3=_0x1e9d8c[_0xdc65a8(0x1ec)](_0x2541f0+_0x5f2cee,_0x2541f0+0x2*_0x5f2cee);if(_0x52a101[_0xdc65a8(0x17b)]((_0x35654a,_0x3d2319)=>_0x35654a===_0x3b5db3[_0x3d2319])){const _0x565915=[..._0x1e9d8c['slice'](0x0,_0x2541f0),..._0x1e9d8c[_0xdc65a8(0x1ec)](_0x2541f0+_0x5f2cee)];return a0_0x723602[_0xdc65a8(0x14f)]+_0x565915[_0xdc65a8(0x21f)](a0_0x723602[_0xdc65a8(0x14f)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x373283=a0_0x1578;try{const _0xafdd9a=require(_0x373283(0x191));return _0xafdd9a['version']??_0x373283(0x160);}catch(_0x3a53d0){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x3a53d0),_0x373283(0x160);}}function printHelp(){const _0x2e7359=a0_0x1578;console[_0x2e7359(0x1a1)](_0x2e7359(0x189)+getPackageVersion()),console[_0x2e7359(0x1a1)](_0x2e7359(0x1de)),console[_0x2e7359(0x1a1)]('\x0aOptions:'),console['log']('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x2e7359(0x1a1)](_0x2e7359(0x1e6)),console[_0x2e7359(0x1a1)](_0x2e7359(0x1f1)),console['log'](_0x2e7359(0x176)),console[_0x2e7359(0x1a1)](_0x2e7359(0x197)),console[_0x2e7359(0x1a1)](_0x2e7359(0x139));}const cliArgs=process[a0_0x4ff747(0x168)][a0_0x4ff747(0x1ec)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set([a0_0x4ff747(0x15c),'-h']);cliArgs[a0_0x4ff747(0x20c)](_0x5ebbd4=>VERSION_FLAGS[a0_0x4ff747(0x15d)](_0x5ebbd4))&&(console[a0_0x4ff747(0x1a1)](a0_0x4ff747(0x189)+getPackageVersion()),process['exit'](0x0));cliArgs[a0_0x4ff747(0x20c)](_0x462e94=>HELP_FLAGS[a0_0x4ff747(0x15d)](_0x462e94))&&(printHelp(),process[a0_0x4ff747(0x21e)](0x0));function getCliArg(_0x53e612){const _0x36b665=a0_0x4ff747;for(let _0x150f32=0x0;_0x150f32<cliArgs[_0x36b665(0x16b)];_0x150f32++){const _0x1b6364=cliArgs[_0x150f32];if(_0x1b6364[_0x36b665(0x141)]('--'+_0x53e612+'='))return _0x1b6364[_0x36b665(0x1ec)](('--'+_0x53e612+'=')[_0x36b665(0x16b)]);if(_0x1b6364==='--'+_0x53e612&&_0x150f32+0x1<cliArgs[_0x36b665(0x16b)])return cliArgs[_0x150f32+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x4ff747(0x16b)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x4ff747(0x15d)](arg)||HELP_FLAGS[a0_0x4ff747(0x15d)](arg))continue;if(arg[a0_0x4ff747(0x141)](a0_0x4ff747(0x1cc)))continue;if(arg===a0_0x4ff747(0x1dc)){i++;continue;}args['push'](arg);}const WORKSPACE_ROOT=process[a0_0x4ff747(0x12c)]['WORKSPACE_ROOT']||process[a0_0x4ff747(0x12c)]['PWD']||process[a0_0x4ff747(0x130)](),ENABLE_WORKSPACE_MODE=process[a0_0x4ff747(0x12c)]['ENABLE_WORKSPACE_MODE']!=='false',MORPH_API_KEY=getCliArg('api-key')??process[a0_0x4ff747(0x12c)][a0_0x4ff747(0x1ab)],MORPH_API_URL=process['env'][a0_0x4ff747(0x121)],MORPH_LARGE_APPLY=process[a0_0x4ff747(0x12c)][a0_0x4ff747(0x224)]!==a0_0x4ff747(0x10d),MORPH_WARP_GREP_TIMEOUT=process[a0_0x4ff747(0x12c)]['MORPH_WARP_GREP_TIMEOUT']?parseInt(process['env'][a0_0x4ff747(0x1b6)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process['env'][a0_0x4ff747(0x21d)]?new Set(process[a0_0x4ff747(0x12c)][a0_0x4ff747(0x21d)]['split'](',')[a0_0x4ff747(0x1aa)](_0x4147de=>_0x4147de[a0_0x4ff747(0x118)]())[a0_0x4ff747(0x19d)](_0x36336d=>_0x36336d[a0_0x4ff747(0x16b)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x4ff747(0x204)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x4ff747(0x15d)](tool)&&console[a0_0x4ff747(0x1ea)]('Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22'+tool+a0_0x4ff747(0x210)+[...KNOWN_TOOL_NAMES][a0_0x4ff747(0x21f)](',\x20'));}console['error'](a0_0x4ff747(0x12e)+[...DISABLED_TOOLS]['join'](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x4ff747(0x141)](a0_0x4ff747(0x156))&&!MORPH_API_KEY[a0_0x4ff747(0x141)]('morph-')&&logMcpStderr('Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27');async function reportMorphError(_0x5f3907){const _0x11efaa=a0_0x4ff747;try{await a0_0x1c101d[_0x11efaa(0x16d)](_0x11efaa(0x1c8),{..._0x5f3907,'timestamp':new Date()[_0x11efaa(0x1b5)](),'source':_0x5f3907[_0x11efaa(0x170)]||_0x11efaa(0x16f),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x5f3907[_0x11efaa(0x1d0)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x11efaa(0x1b9),'Authorization':_0x11efaa(0x12b)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x5acec6,_0x3a9df7){const _0x10a0b4=a0_0x4ff747;if(_0x5acec6&&typeof _0x5acec6===_0x10a0b4(0x1b3)&&_0x10a0b4(0x1d7)in _0x5acec6)return _0x5acec6['status'];if(_0x5acec6&&typeof _0x5acec6===_0x10a0b4(0x1b3)&&_0x10a0b4(0x165)in _0x5acec6)return _0x5acec6[_0x10a0b4(0x165)]?.['status'];const _0x12d166=_0x3a9df7['match'](/\b(401|429)\b/);return _0x12d166?parseInt(_0x12d166[0x1],0xa):null;}function handleMorphAPIError(_0xb313cb){const _0x441add=a0_0x4ff747,_0x30ee30=_0xb313cb instanceof Error?_0xb313cb['message']:String(_0xb313cb),_0x3f8a2c=extractStatusCode(_0xb313cb,_0x30ee30);switch(_0x3f8a2c){case 0x191:return{'content':[{'type':'text','text':_0x441add(0x161)}],'isError':!![]};case 0x1ad:return{'content':[{'type':'text','text':'Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.'}],'isError':!![]};default:return null;}}args[a0_0x4ff747(0x16b)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),logMcpStderr(a0_0x4ff747(0x153)),logMcpStderr(a0_0x4ff747(0x1a2)),logMcpStderr(a0_0x4ff747(0x1b7)),logMcpStderr(a0_0x4ff747(0x11e)),logMcpStderr(a0_0x4ff747(0x13f)));function normalizePath(_0x2ccce4){return a0_0x723602['normalize'](_0x2ccce4);}function expandHome(_0x5d0e74){const _0x592594=a0_0x4ff747;if(_0x5d0e74[_0x592594(0x141)]('~/')||_0x5d0e74==='~')return a0_0x723602[_0x592594(0x21f)](a0_0x3e78ca[_0x592594(0x207)](),_0x5d0e74[_0x592594(0x1ec)](0x1));return _0x5d0e74;}let allowedDirectories=await Promise[a0_0x4ff747(0x114)](args[a0_0x4ff747(0x1aa)](async _0x1ada4f=>{const _0x380973=a0_0x4ff747,_0x3c8464=expandHome(_0x1ada4f),_0x1f4fbf=a0_0x723602['resolve'](_0x3c8464);try{const _0x15a8cb=await a0_0x2d400e[_0x380973(0x122)](_0x1f4fbf);return normalizePath(_0x15a8cb);}catch(_0x391d45){return normalizePath(_0x1f4fbf);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x4ff747(0x16b)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories['push'](workspaceDir),logMcpStderr('Workspace\x20mode\x20enabled:\x20Using\x20'+workspaceDir+a0_0x4ff747(0x129)));}catch(a0_0x344941){logMcpStderr('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x344941);}async function detectWorkspaceRoot(_0x4dfa59){const _0x56fc04=a0_0x4ff747;let _0x2eb8d4=a0_0x723602[_0x56fc04(0x15a)](_0x4dfa59);const _0x44c584=[_0x56fc04(0x1ae),'.vscode',_0x56fc04(0x17e),_0x56fc04(0x1d4),_0x56fc04(0x20a),_0x56fc04(0x173),_0x56fc04(0x1f8),_0x56fc04(0x1be),'composer.json'];while(_0x2eb8d4!==a0_0x723602['dirname'](_0x2eb8d4)){for(const _0x5291c8 of _0x44c584){const _0x27c62f=a0_0x723602[_0x56fc04(0x21f)](_0x2eb8d4,_0x5291c8);try{return await a0_0x2d400e[_0x56fc04(0x213)](_0x27c62f),normalizePath(_0x2eb8d4);}catch{}}_0x2eb8d4=a0_0x723602[_0x56fc04(0x181)](_0x2eb8d4);}return normalizePath(_0x4dfa59);}await Promise[a0_0x4ff747(0x114)](args['map'](async _0x107896=>{const _0x1da910=a0_0x4ff747;try{const _0x2a39a5=await a0_0x2d400e[_0x1da910(0x1dd)](expandHome(_0x107896));!_0x2a39a5[_0x1da910(0x20e)]()&&(logMcpStderr(_0x1da910(0x13e)+_0x107896+_0x1da910(0x1b1)),process[_0x1da910(0x21e)](0x1));}catch(_0x42c771){logMcpStderr(_0x1da910(0x104)+_0x107896+':',_0x42c771),process[_0x1da910(0x21e)](0x1);}}));async function validatePath(_0x2c457e){const _0x3c410b=a0_0x4ff747,_0x4aa15e=expandHome(_0x2c457e),_0x597f26=a0_0x723602[_0x3c410b(0x15a)](_0x4aa15e);logger[_0x3c410b(0x1fb)]('MCP',_0x3c410b(0x1c5),{'raw_path':_0x2c457e,'absolute':_0x597f26});try{const _0x31547b=await a0_0x2d400e['realpath'](_0x597f26);return logger['debug'](_0x3c410b(0x16a),_0x3c410b(0x1e8),{'resolved':_0x31547b,'symlink':_0x31547b!==_0x597f26}),_0x31547b;}catch(_0x3b20ec){if(_0x3b20ec[_0x3c410b(0x13a)]===_0x3c410b(0x14d)){const _0x2db469=a0_0x723602[_0x3c410b(0x181)](_0x597f26);try{const _0x5de75c=await a0_0x2d400e[_0x3c410b(0x122)](_0x2db469),_0x4f84ad=a0_0x723602[_0x3c410b(0x21f)](_0x5de75c,a0_0x723602[_0x3c410b(0x151)](_0x597f26));return logger[_0x3c410b(0x1fb)]('MCP',_0x3c410b(0x1e8),{'resolved':_0x4f84ad,'new_file':!![]}),_0x4f84ad;}catch{logger[_0x3c410b(0x1ea)](_0x3c410b(0x16a),_0x3c410b(0x1ee),{'raw_path':_0x2c457e,'error':'Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x2db469});throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x2db469);}}logger[_0x3c410b(0x1ea)](_0x3c410b(0x16a),'path_validation_failed',{'raw_path':_0x2c457e,'error':_0x3b20ec[_0x3c410b(0x1f3)]});throw _0x3b20ec;}}const MorphEditFileArgsSchema=z[a0_0x4ff747(0x1b3)]({'path':z[a0_0x4ff747(0x20b)](),'code_edit':z[a0_0x4ff747(0x20b)]()[a0_0x4ff747(0x107)]('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z[a0_0x4ff747(0x20b)]()['describe'](a0_0x4ff747(0x16e)),'dryRun':z[a0_0x4ff747(0x206)]()[a0_0x4ff747(0x21a)](![])['describe'](a0_0x4ff747(0x154))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x4ff747(0x152),WarpGrepArgsSchema=z[a0_0x4ff747(0x1b3)]({'search_string':z[a0_0x4ff747(0x20b)]()[a0_0x4ff747(0x107)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x4ff747(0x20b)]()[a0_0x4ff747(0x107)](a0_0x4ff747(0x126)),'search_type':z[a0_0x4ff747(0x1c2)]([a0_0x4ff747(0x21a),a0_0x4ff747(0x110)])[a0_0x4ff747(0x13b)]()[a0_0x4ff747(0x107)](a0_0x4ff747(0x1a4))}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z[a0_0x4ff747(0x20b)]()[a0_0x4ff747(0x107)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()[a0_0x4ff747(0x13b)]()[a0_0x4ff747(0x107)](a0_0x4ff747(0x15b)),'owner_repo':z[a0_0x4ff747(0x20b)]()[a0_0x4ff747(0x13b)]()['describe'](a0_0x4ff747(0x1fe)),'branch':z[a0_0x4ff747(0x20b)]()[a0_0x4ff747(0x13b)]()['describe'](a0_0x4ff747(0x216))}),CodebaseSearchArgsSchema=z[a0_0x4ff747(0x1b3)]({'query':z[a0_0x4ff747(0x20b)]()[a0_0x4ff747(0x107)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x4ff747(0x20b)]()[a0_0x4ff747(0x107)]('Repository\x20identifier'),'branch':z[a0_0x4ff747(0x20b)]()['optional']()[a0_0x4ff747(0x107)](a0_0x4ff747(0x131)),'commitHash':z[a0_0x4ff747(0x20b)]()['optional']()['describe'](a0_0x4ff747(0x143)),'targetDirectories':z['array'](z[a0_0x4ff747(0x20b)]())[a0_0x4ff747(0x21a)]([])['describe'](a0_0x4ff747(0x199)),'limit':z[a0_0x4ff747(0x11a)]()[a0_0x4ff747(0x13b)]()[a0_0x4ff747(0x21a)](0xa)[a0_0x4ff747(0x107)]('Max\x20results\x20to\x20return')}),server=new Server({'name':a0_0x4ff747(0x174),'version':a0_0x4ff747(0x116)},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x3586a9=a0_0x4ff747,_0x360bbf=[{'name':TOOL_NAMES[_0x3586a9(0x1b2)],'description':'Edit\x20files\x20using\x20AI-powered\x20fast\x20apply.\x20All\x20three\x20parameters\x20are\x20required.\x0a\x0a'+'Parameters:\x0a'+_0x3586a9(0x19a)+_0x3586a9(0x149)+_0x3586a9(0x20d)+_0x3586a9(0x1ff)+'Example\x20format:\x0a'+'//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a'+_0x3586a9(0x169)+_0x3586a9(0x127)+_0x3586a9(0x10f)+_0x3586a9(0x1f5)+'-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x3586a9(0x1bb)],'description':'A\x20code\x20exploration\x20tool,\x20use\x20this\x20tool\x20when\x20exploring\x20an\x20unfamiliar\x20codebase,\x20and\x20you\x27re\x20unsure\x20of\x20the\x20exact\x20file\x20or\x20string\x20to\x20look\x20for.\x20This\x20tool\x20will\x20find\x20all\x20relevant\x20bits\x20of\x20code\x20given\x20a\x20natural\x20lanugage\x20description,\x20or\x20questin\x20of\x20the\x20thing\x20you\x27re\x20looking\x20for.\x20'+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+'Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20'+_0x3586a9(0x226)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x4f49d5=_0x360bbf[_0x3586a9(0x19d)](_0x2f05cb=>{const _0x3a3703=_0x3586a9;if(DISABLED_TOOLS[_0x3a3703(0x15d)](_0x2f05cb[_0x3a3703(0x219)]))return console[_0x3a3703(0x1ea)](_0x3a3703(0x1e9)+_0x2f05cb[_0x3a3703(0x219)]+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if(_0x3a3703(0x178)in _0x2f05cb&&_0x2f05cb[_0x3a3703(0x178)]&&!MORPH_API_KEY)return logMcpStderr(_0x3a3703(0x1e0)+_0x2f05cb[_0x3a3703(0x219)]+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x4f49d5[_0x3586a9(0x1aa)](_0x2f123a=>({'name':_0x2f123a[_0x3586a9(0x219)],'description':_0x2f123a['description'],'inputSchema':_0x2f123a[_0x3586a9(0x201)]}))};}),server[a0_0x4ff747(0x1af)](CallToolRequestSchema,async _0x3540f8=>{const _0x1c4b80=a0_0x4ff747,{name:_0x1b7981,arguments:_0x10572c}=_0x3540f8[_0x1c4b80(0x1ef)],_0x51fc4e=Date['now']();logger['debug'](_0x1c4b80(0x16a),_0x1c4b80(0x1c9),{'tool':_0x1b7981,'args':_0x1b7981==='edit_file'?{'path':_0x10572c?.[_0x1c4b80(0x1ed)],'instruction':_0x10572c?.[_0x1c4b80(0x225)]||_0x10572c?.[_0x1c4b80(0x137)],'dryRun':_0x10572c?.['dryRun']}:_0x10572c});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x1c4b80(0x218),'text':'No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.'}],'isError':!![]};if(!MORPH_API_KEY[_0x1c4b80(0x141)](_0x1c4b80(0x156))&&!MORPH_API_KEY[_0x1c4b80(0x141)](_0x1c4b80(0x220)))return{'content':[{'type':_0x1c4b80(0x218),'text':_0x1c4b80(0x195)}],'isError':!![]};if(DISABLED_TOOLS['has'](_0x1b7981))return{'content':[{'type':_0x1c4b80(0x218),'text':_0x1c4b80(0x1ce)+_0x1b7981+_0x1c4b80(0x1d1)}],'isError':![]};switch(_0x1b7981){case TOOL_NAMES[_0x1c4b80(0x1b2)]:{let _0x762b7e=_0x10572c;if(_0x762b7e&&typeof _0x762b7e==='object'){if(!(_0x1c4b80(0x1ed)in _0x762b7e)){const _0xa7fafd=_0x762b7e[_0x1c4b80(0x12d)]??_0x762b7e[_0x1c4b80(0x113)]??_0x762b7e['target_filepath']??_0x762b7e[_0x1c4b80(0x175)]??_0x762b7e[_0x1c4b80(0x148)];if(_0xa7fafd)_0x762b7e={..._0x762b7e,'path':_0xa7fafd};}_0x1c4b80(0x137)in _0x762b7e&&!(_0x1c4b80(0x225)in _0x762b7e)&&(_0x762b7e={..._0x762b7e,'instruction':_0x762b7e[_0x1c4b80(0x137)]});if(!(_0x1c4b80(0x167)in _0x762b7e)){const _0x2739ae=_0x762b7e[_0x1c4b80(0x13a)]??_0x762b7e[_0x1c4b80(0x200)]??_0x762b7e[_0x1c4b80(0x196)]??_0x762b7e[_0x1c4b80(0x1c7)];if(_0x2739ae)_0x762b7e={..._0x762b7e,'code_edit':_0x2739ae};}}const _0x392e10=MorphEditFileArgsSchema['safeParse'](_0x762b7e);if(!_0x392e10[_0x1c4b80(0x123)])throw new Error(_0x1c4b80(0x15f)+_0x392e10[_0x1c4b80(0x1ea)]);const _0x118da6=await validatePath(_0x392e10[_0x1c4b80(0x184)][_0x1c4b80(0x1ed)]);let _0x4bdec4=null,_0x36a883=!![],_0x3b7b44=null;try{_0x4bdec4=await a0_0x2d400e[_0x1c4b80(0x120)](_0x118da6,'utf-8'),logger[_0x1c4b80(0x1fb)](_0x1c4b80(0x16a),'file_read_complete',{'path':_0x118da6,'size_bytes':_0x4bdec4[_0x1c4b80(0x16b)]});}catch(_0x273db3){const _0x166f80=_0x273db3[_0x1c4b80(0x13a)];_0x166f80===_0x1c4b80(0x14d)?(_0x36a883=![],_0x4bdec4='',logger['debug'](_0x1c4b80(0x16a),_0x1c4b80(0x212),{'path':_0x118da6,'exists':![]})):(_0x3b7b44='Failed\x20to\x20read\x20file:\x20'+(_0x166f80||'unknown')+_0x1c4b80(0x17d)+(_0x273db3 instanceof Error?_0x273db3[_0x1c4b80(0x1f3)]:String(_0x273db3)),logger[_0x1c4b80(0x1ea)](_0x1c4b80(0x16a),_0x1c4b80(0x1f4),{'path':_0x118da6,'error':_0x3b7b44}),logMcpStderr('Warning:\x20'+_0x3b7b44));}let _0x3c1e89;try{const _0x22062e=MORPH_API_KEY;if(!_0x22062e)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x51c0fb=a0_0x723602['dirname'](_0x118da6),_0xeb6544=a0_0x723602['basename'](_0x118da6);logger[_0x1c4b80(0x1fb)](_0x1c4b80(0x16a),_0x1c4b80(0x1da),{'model':'morph-v3-fast','path':_0x392e10[_0x1c4b80(0x184)]['path'],'instruction_len':_0x392e10[_0x1c4b80(0x184)]['instruction'][_0x1c4b80(0x16b)],'code_edit_len':_0x392e10[_0x1c4b80(0x184)]['code_edit'][_0x1c4b80(0x16b)],'original_code_len':_0x4bdec4?.[_0x1c4b80(0x16b)]??0x0,'dry_run':_0x392e10['data'][_0x1c4b80(0x1e3)]});const _0x1f233c=Date['now'](),_0x3c3ef3=await executeEditFile({'target_filepath':_0xeb6544,'code_edit':_0x392e10[_0x1c4b80(0x184)][_0x1c4b80(0x167)],'instruction':_0x392e10[_0x1c4b80(0x184)]['instruction']},{'morphApiKey':_0x22062e,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x51c0fb,'autoWrite':!_0x392e10[_0x1c4b80(0x184)][_0x1c4b80(0x1e3)],'generateUdiff':![],'debug':![]}),_0x5ca1ff=Date[_0x1c4b80(0x1c1)]()-_0x1f233c;_0x3c1e89=_0x3c3ef3[_0x1c4b80(0x13d)];if(!_0x3c3ef3['success'])throw new Error(_0x3c3ef3[_0x1c4b80(0x1ea)]||_0x1c4b80(0x17f));const _0x1a5543=_0x3c3ef3[_0x1c4b80(0x16c)],_0x29eb42=_0x1c4b80(0x180)+_0x1a5543['linesAdded']+_0x1c4b80(0x1d5)+_0x1a5543[_0x1c4b80(0x1bf)]+_0x1c4b80(0x14c)+_0x1a5543[_0x1c4b80(0x1e2)];logger['debug'](_0x1c4b80(0x16a),'tool_call_complete',{'tool':_0x1c4b80(0x1f0),'success':!![],'latency_ms':Date['now']()-_0x51fc4e,'edit_latency_ms':_0x5ca1ff,'changes':{'added':_0x1a5543[_0x1c4b80(0x142)],'removed':_0x1a5543[_0x1c4b80(0x1bf)],'modified':_0x1a5543[_0x1c4b80(0x1e2)]},'completion_id':_0x3c1e89});if(_0x392e10['data'][_0x1c4b80(0x1e3)])return{'content':[{'type':'text','text':'Morph\x20Edit\x20Preview'+(_0x36a883?'':'\x20(new\x20file)')+':\x20'+_0x392e10[_0x1c4b80(0x184)][_0x1c4b80(0x225)]+_0x1c4b80(0x18b)+_0x29eb42+_0x1c4b80(0x10b)+_0x392e10['data']['path']+'.'}]};return{'content':[{'type':_0x1c4b80(0x218),'text':'Morph\x20Edit\x20'+(_0x36a883?_0x1c4b80(0x1cd):_0x1c4b80(0x166))+':\x20'+_0x392e10[_0x1c4b80(0x184)][_0x1c4b80(0x225)]+'.\x20Changes:\x20'+_0x29eb42+_0x1c4b80(0x10b)+_0x392e10['data']['path']+'.'}]};}catch(_0x3d5ab7){const _0x56b186=handleMorphAPIError(_0x3d5ab7);if(_0x56b186)return logger[_0x1c4b80(0x1ea)](_0x1c4b80(0x16a),'tool_call_error',{'tool':_0x1c4b80(0x1f0),'error':_0x1c4b80(0x1e7),'latency_ms':Date[_0x1c4b80(0x1c1)]()-_0x51fc4e}),_0x56b186;const _0xcfe80a=_0x3d5ab7 instanceof Error?_0x3d5ab7[_0x1c4b80(0x1f3)]:String(_0x3d5ab7);return logger[_0x1c4b80(0x1ea)]('MCP',_0x1c4b80(0x124),{'tool':_0x1c4b80(0x1f0),'error':_0xcfe80a,'path':_0x392e10[_0x1c4b80(0x184)][_0x1c4b80(0x1ed)],'validated_path':_0x118da6,'latency_ms':Date[_0x1c4b80(0x1c1)]()-_0x51fc4e,'stack':_0x3d5ab7 instanceof Error?_0x3d5ab7['stack']:undefined}),reportMorphError({'error_message':_0xcfe80a,'error_type':_0x3d5ab7 instanceof Error?_0x3d5ab7[_0x1c4b80(0x198)][_0x1c4b80(0x219)]:_0x1c4b80(0x208),'context':{'tool':_0x1c4b80(0x1f0),'completion_id':_0x3c1e89,'file_path':_0x392e10[_0x1c4b80(0x184)]['path'],'validated_path':_0x118da6,'instruction':_0x392e10[_0x1c4b80(0x184)][_0x1c4b80(0x225)],'model':MORPH_LARGE_APPLY?'morph-v3-large':'morph-v3-fast','dry_run':_0x392e10[_0x1c4b80(0x184)][_0x1c4b80(0x1e3)],'file_exists':_0x36a883,'file_read_error':_0x3b7b44,'file_readable':_0x4bdec4!==null,'request_content':{'path':_0x392e10['data']['path'],'code_edit':_0x392e10[_0x1c4b80(0x184)][_0x1c4b80(0x167)],'instruction':_0x392e10[_0x1c4b80(0x184)]['instruction'],'original_code':_0x4bdec4!==null?_0x4bdec4['length']>0xc350?_0x4bdec4[_0x1c4b80(0x1df)](0x0,0xc350)+_0x1c4b80(0x182)+_0x4bdec4['length']+_0x1c4b80(0x1e5):_0x4bdec4:_0x1c4b80(0x108)+(_0x3b7b44||'unknown\x20error')+']','original_code_length':_0x4bdec4?.['length']??0x0,'model':MORPH_LARGE_APPLY?_0x1c4b80(0x1b0):_0x1c4b80(0x1d9),'dry_run':_0x392e10[_0x1c4b80(0x184)][_0x1c4b80(0x1e3)]}},'stack_trace':_0x3d5ab7 instanceof Error?_0x3d5ab7['stack']:undefined,'source':_0x1c4b80(0x16f)})[_0x1c4b80(0x221)](()=>{}),{'content':[{'type':_0x1c4b80(0x218),'text':_0x1c4b80(0x209)+_0xcfe80a}],'isError':!![]};}}case TOOL_NAMES[_0x1c4b80(0x1bb)]:{const _0x122a9c=WarpGrepArgsSchema['safeParse'](_0x10572c);if(!_0x122a9c[_0x1c4b80(0x123)])return{'content':[{'type':_0x1c4b80(0x218),'text':_0x1c4b80(0x1db)+_0x122a9c[_0x1c4b80(0x1ea)]}],'isError':!![]};const _0x5ec8ec=_0x2c305d=>{const _0x1bcb4a=_0x1c4b80,_0xe9cbe0=[];for(const _0x4a494f of _0x2c305d||[]){if(_0x4a494f[_0x1bcb4a(0x1ba)]===_0x1bcb4a(0x146)&&Array[_0x1bcb4a(0x115)](_0x4a494f[_0x1bcb4a(0x1f2)]))for(const _0x5ed737 of _0x4a494f[_0x1bcb4a(0x1f2)]){try{const _0x2f0dff=_0x5ed737[_0x1bcb4a(0x1d6)]?.[_0x1bcb4a(0x219)],_0x18c510=JSON[_0x1bcb4a(0x14e)](_0x5ed737[_0x1bcb4a(0x1d6)]?.[_0x1bcb4a(0x1d8)]||'{}');if(_0x2f0dff===_0x1bcb4a(0x183))_0xe9cbe0[_0x1bcb4a(0x1fc)](_0x1bcb4a(0x144)+_0x18c510['pattern']+'\x27\x20'+(_0x18c510[_0x1bcb4a(0x1ed)]||'.'));else{if(_0x2f0dff===_0x1bcb4a(0x18f))_0xe9cbe0['push'](_0x1bcb4a(0x1fa)+_0x18c510[_0x1bcb4a(0x1ed)]);else{if(_0x2f0dff===_0x1bcb4a(0x10e))_0xe9cbe0[_0x1bcb4a(0x1fc)](_0x1bcb4a(0x20f)+(_0x18c510[_0x1bcb4a(0x214)]||'.'));else{if(_0x2f0dff==='glob')_0xe9cbe0[_0x1bcb4a(0x1fc)](_0x1bcb4a(0x1bd)+_0x18c510[_0x1bcb4a(0x106)]+'\x27\x20'+(_0x18c510[_0x1bcb4a(0x1ed)]||'.'));else _0x2f0dff==='finish'&&_0xe9cbe0[_0x1bcb4a(0x1fc)](_0x1bcb4a(0x18c));}}}}catch{}}}return _0xe9cbe0;},_0x5bb6ed=_0x5c9dd4=>{const _0x34c555=_0x1c4b80,_0x19ab8e=[];if(!_0x5c9dd4||!Array[_0x34c555(0x115)](_0x5c9dd4))return _0x19ab8e;const _0x51991b=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':'FileNotFound','tool':_0x34c555(0x18f)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x34c555(0x203),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x34c555(0x119),'tool':_0x34c555(0x18f)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x34c555(0x211),'tool':'read'},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x34c555(0x1f6),'tool':_0x34c555(0x11d)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x34c555(0x1bc),'tool':'grep'},{'pattern':/\[BINARY FILE\]/,'error_type':_0x34c555(0x211),'tool':_0x34c555(0x18f)},{'pattern':/\[SYMLINK\]/,'error_type':_0x34c555(0x11f),'tool':'read'},{'pattern':/not a text file/,'error_type':_0x34c555(0x211),'tool':'read'},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':'read'},{'pattern':/Error reading file:/,'error_type':_0x34c555(0x119),'tool':_0x34c555(0x18f)},{'pattern':/status="error"/,'error_type':_0x34c555(0x111),'tool':_0x34c555(0x160)}];let _0x4b25bc=0x0;for(const _0x18d664 of _0x5c9dd4){_0x18d664[_0x34c555(0x1ba)]==='assistant'&&Array[_0x34c555(0x115)](_0x18d664[_0x34c555(0x1f2)])&&_0x4b25bc++;const _0x24285a=_0x18d664[_0x34c555(0x196)];if((_0x18d664['role']==='tool'||_0x18d664[_0x34c555(0x1ba)]==='user')&&_0x24285a&&typeof _0x24285a===_0x34c555(0x20b))for(const {pattern:_0x21da95,error_type:_0x49c8b7,tool:_0x29f7c8}of _0x51991b){const _0x39cbf6=_0x24285a['match'](new RegExp(_0x21da95[_0x34c555(0x170)],'g'));if(_0x39cbf6)for(const _0x1c4ae2 of _0x39cbf6){const _0x123d74=_0x24285a[_0x34c555(0x128)](_0x1c4ae2),_0x4a6288=_0x24285a[_0x34c555(0x1df)](_0x123d74,Math['min'](_0x123d74+0xc8,_0x24285a['length']));_0x19ab8e[_0x34c555(0x1fc)]({'tool':_0x29f7c8,'error_type':_0x49c8b7,'error_message':_0x4a6288['split']('\x0a')[0x0],'turn':_0x4b25bc});}}}return _0x19ab8e;};try{const _0x47b248=a0_0x723602[_0x1c4b80(0x15a)](_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x179)]),_0x5359fe=_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x14a)],_0x1ba798=_0x5359fe===_0x1c4b80(0x110)?{'allowNames':[_0x1c4b80(0x110)]}:undefined,_0x38ed7f=new LocalRipgrepProvider(_0x47b248,undefined,_0x1ba798);logger[_0x1c4b80(0x1fb)](_0x1c4b80(0x16a),_0x1c4b80(0x1a9),{'type':'LocalRipgrepProvider','repo_root':_0x47b248,'search_type':_0x5359fe||'default'}),logger['debug'](_0x1c4b80(0x16a),'warp_grep_start',{'query':_0x122a9c['data'][_0x1c4b80(0x140)],'repo_root':_0x47b248,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x5b955d=Date[_0x1c4b80(0x1c1)](),_0x1fd118=await runWarpGrep({'searchTerm':_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x140)],'repoRoot':_0x47b248,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x38ed7f,'search_type':_0x5359fe}),_0xc9cbcb=Date[_0x1c4b80(0x1c1)]()-_0x5b955d,_0x29a743=_0x1fd118[_0x1c4b80(0x18c)]?.[_0x1c4b80(0x1fd)]?.['files']?.['length']??0x0;logger['debug'](_0x1c4b80(0x16a),'warp_grep_complete',{'termination':_0x1fd118[_0x1c4b80(0x1ca)],'turns':_0x1fd118['timings']?.[_0x1c4b80(0x125)]??0x0,'files_found':_0x29a743,'latency_ms':_0xc9cbcb});const _0x3880b7=_0x5bb6ed(_0x1fd118[_0x1c4b80(0x192)]);_0x3880b7[_0x1c4b80(0x16b)]>0x0&&reportMorphError({'error_message':_0x1c4b80(0x150)+_0x3880b7['length']+_0x1c4b80(0x109),'error_type':_0x1c4b80(0x223),'level':_0x1c4b80(0x205),'tool':'codebase_search','context':{'repo_path':_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x179)],'query':_0x122a9c[_0x1c4b80(0x184)]['search_string'],'model':'morph-warp-grep-v2.1','termination_reason':_0x1fd118[_0x1c4b80(0x1ca)],'sub_tool_errors':_0x3880b7,'timings':_0x1fd118['timings'],'tool_calls':_0x5ec8ec(_0x1fd118[_0x1c4b80(0x192)]),'messages':_0x1fd118[_0x1c4b80(0x192)]?.[_0x1c4b80(0x1aa)](_0x228c63=>({'role':_0x228c63[_0x1c4b80(0x1ba)],'content':_0x228c63[_0x1c4b80(0x196)],..._0x228c63[_0x1c4b80(0x1f2)]?{'tool_calls':_0x228c63[_0x1c4b80(0x1f2)]['length']}:{},..._0x228c63[_0x1c4b80(0x11b)]?{'tool_call_id':_0x228c63[_0x1c4b80(0x11b)]}:{}}))},'source':_0x1c4b80(0x16f)})[_0x1c4b80(0x221)](()=>{});let _0xf22f6c='';if(_0x1fd118[_0x1c4b80(0x1ca)]===_0x1c4b80(0x202)&&_0x1fd118[_0x1c4b80(0x18c)]?.[_0x1c4b80(0x1fd)]?.['files']){const _0x3e0b24=_0x1fd118['finish']['metadata'][_0x1c4b80(0x1b8)];if(_0x3e0b24[_0x1c4b80(0x16b)]===0x0)return _0xf22f6c=_0x1fd118['finish'][_0x1c4b80(0x19e)]||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':'text','text':_0xf22f6c}]};const _0x3da5d9=[],_0x2b592f=[_0x1c4b80(0x12f)];for(const _0x402705 of _0x1fd118[_0x1c4b80(0x192)]){if(_0x402705['role']===_0x1c4b80(0x146)&&Array[_0x1c4b80(0x115)](_0x402705[_0x1c4b80(0x1f2)]))for(const _0x319f04 of _0x402705[_0x1c4b80(0x1f2)]){try{const _0x421a15=_0x319f04[_0x1c4b80(0x1d6)]?.['name'],_0x120524=JSON[_0x1c4b80(0x14e)](_0x319f04['function']?.[_0x1c4b80(0x1d8)]||'{}');if(_0x421a15===_0x1c4b80(0x183))_0x2b592f[_0x1c4b80(0x1fc)](_0x1c4b80(0x188)+_0x120524[_0x1c4b80(0x106)]+_0x1c4b80(0x1a8)+(_0x120524[_0x1c4b80(0x1ed)]||'.')+'`');else{if(_0x421a15==='read')_0x2b592f[_0x1c4b80(0x1fc)](_0x1c4b80(0x13c)+_0x120524['path']+'`');else{if(_0x421a15===_0x1c4b80(0x10e))_0x2b592f[_0x1c4b80(0x1fc)](_0x1c4b80(0x1ad)+(_0x120524['command']||'.')+'`');else _0x421a15===_0x1c4b80(0x222)&&_0x2b592f[_0x1c4b80(0x1fc)]('-\x20Glob\x20search\x20`'+_0x120524['pattern']+_0x1c4b80(0x135)+(_0x120524['path']||'.')+'`');}}}catch{}}}_0x3da5d9[_0x1c4b80(0x1fc)](_0x2b592f[_0x1c4b80(0x21f)]('\x0a'));const _0x4f4bc0=['','Relevant\x20context\x20found:'];for(const _0x2e457d of _0x3e0b24){if(_0x2e457d[_0x1c4b80(0x134)]==='*')_0x4f4bc0[_0x1c4b80(0x1fc)]('-\x20'+_0x2e457d[_0x1c4b80(0x1ed)]+':*');else{if(Array[_0x1c4b80(0x115)](_0x2e457d[_0x1c4b80(0x134)])){const _0x44fec5=_0x2e457d[_0x1c4b80(0x134)]['map'](([_0x5d4e17,_0x586c30])=>{if(_0x5d4e17===_0x586c30)return''+_0x5d4e17;return _0x5d4e17+'-'+_0x586c30;});_0x4f4bc0[_0x1c4b80(0x1fc)]('-\x20'+_0x2e457d[_0x1c4b80(0x1ed)]+':'+_0x44fec5[_0x1c4b80(0x21f)](','));}else _0x4f4bc0[_0x1c4b80(0x1fc)]('-\x20'+_0x2e457d[_0x1c4b80(0x1ed)]+':*');}}_0x4f4bc0[_0x1c4b80(0x1fc)](''),_0x3da5d9[_0x1c4b80(0x1fc)](_0x4f4bc0[_0x1c4b80(0x21f)]('\x0a')),_0x3da5d9[_0x1c4b80(0x1fc)]('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0xd69c73=[],_0x559483=[];for(const _0x5f1cfe of _0x3e0b24){let _0x4d3167=a0_0x723602[_0x1c4b80(0x15a)](_0x122a9c['data'][_0x1c4b80(0x179)],_0x5f1cfe[_0x1c4b80(0x1ed)]),_0x266694=null,_0x1716c9=null;try{_0x266694=await a0_0x2d400e[_0x1c4b80(0x120)](_0x4d3167,{'encoding':'utf-8'});}catch(_0x35ed5e){const _0x5373e6=fixPathRepetition(_0x4d3167);if(_0x5373e6)try{_0x266694=await a0_0x2d400e[_0x1c4b80(0x120)](_0x5373e6,{'encoding':'utf-8'}),_0x4d3167=_0x5373e6;}catch{_0x1716c9=_0x35ed5e instanceof Error?_0x35ed5e:new Error(String(_0x35ed5e));}else _0x1716c9=_0x35ed5e instanceof Error?_0x35ed5e:new Error(String(_0x35ed5e));}if(_0x266694!==null){const _0x58d898=_0x266694[_0x1c4b80(0x18a)](/\r?\n/),_0x4d4ad8=[];if(_0x5f1cfe[_0x1c4b80(0x134)]==='*'||!Array[_0x1c4b80(0x115)](_0x5f1cfe['lines']))for(let _0x5058bb=0x1;_0x5058bb<=_0x58d898[_0x1c4b80(0x16b)];_0x5058bb++){const _0x5db460=_0x58d898[_0x5058bb-0x1];_0x4d4ad8[_0x1c4b80(0x1fc)](_0x5058bb+'|\x20'+_0x5db460);}else for(const [_0x5e5a32,_0x3c9327]of _0x5f1cfe[_0x1c4b80(0x134)]){_0x4d4ad8[_0x1c4b80(0x16b)]>0x0&&_0x4d4ad8[_0x1c4b80(0x1fc)]('');for(let _0x73f29c=_0x5e5a32;_0x73f29c<=_0x3c9327&&_0x73f29c<=_0x58d898[_0x1c4b80(0x16b)];_0x73f29c++){const _0xd90a05=_0x58d898[_0x73f29c-0x1];_0x4d4ad8['push'](_0x73f29c+'|\x20'+_0xd90a05);}}_0x559483[_0x1c4b80(0x1fc)]({'path':_0x5f1cfe[_0x1c4b80(0x1ed)],'content':_0x4d4ad8[_0x1c4b80(0x21f)]('\x0a')});}else _0xd69c73['push']('<file\x20path=\x22'+_0x5f1cfe[_0x1c4b80(0x1ed)]+_0x1c4b80(0x10c)+(_0x1716c9?.['message']||_0x1c4b80(0x215))+_0x1c4b80(0x171));}try{const _0x496772=await compactFileContexts(_0x559483,_0x122a9c[_0x1c4b80(0x184)]['search_string'],MORPH_API_KEY,MORPH_API_URL);for(const _0x1912ba of _0x496772){_0xd69c73['push']('<file\x20path=\x22'+_0x1912ba[_0x1c4b80(0x1ed)]+_0x1c4b80(0x21c)+_0x1912ba[_0x1c4b80(0x196)]+_0x1c4b80(0x171));}}catch(_0x4dfca9){logger[_0x1c4b80(0x205)](_0x1c4b80(0x16a),_0x1c4b80(0x1cb),{'error':_0x4dfca9 instanceof Error?_0x4dfca9[_0x1c4b80(0x1f3)]:String(_0x4dfca9),'files_count':_0x559483[_0x1c4b80(0x16b)]});for(const _0x20c71e of _0x559483){_0xd69c73[_0x1c4b80(0x1fc)](_0x1c4b80(0x162)+_0x20c71e['path']+_0x1c4b80(0x21c)+_0x20c71e[_0x1c4b80(0x196)]+_0x1c4b80(0x171));}}_0x3da5d9[_0x1c4b80(0x1fc)](_0xd69c73[_0x1c4b80(0x21f)]('\x0a\x0a')),_0xf22f6c=_0x3da5d9['join']('\x0a');const _0x2a7f70=_0x1fd118['errors']?.['filter'](_0x105a4f=>_0x105a4f['message']?.[_0x1c4b80(0x141)](_0x1c4b80(0x163)))||[];if(_0x2a7f70['length']>0x0){const _0xed9a75=_0x2a7f70[_0x1c4b80(0x1aa)](_0x239e17=>_0x239e17[_0x1c4b80(0x1f3)])[_0x1c4b80(0x21f)](';\x20');reportMorphError({'error_message':_0xed9a75,'error_type':_0x1c4b80(0x145),'context':{'tool':'codebase_search','repo_path':_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x179)],'query':_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x140)],'model':_0x1c4b80(0x1c3),'termination_reason':_0x1c4b80(0x1a3),'error_count':_0x2a7f70['length'],'is_timeout':![],'timings':_0x1fd118[_0x1c4b80(0x18e)],'files_attempted':_0x3e0b24['map'](_0x51a375=>({'path':_0x51a375['path'],'lines':_0x51a375[_0x1c4b80(0x134)]})),'tool_calls':_0x5ec8ec(_0x1fd118[_0x1c4b80(0x192)]),'messages':_0x1fd118[_0x1c4b80(0x192)]?.[_0x1c4b80(0x1aa)](_0x4c8637=>({'role':_0x4c8637[_0x1c4b80(0x1ba)],'content':_0x4c8637[_0x1c4b80(0x196)],..._0x4c8637[_0x1c4b80(0x1f2)]?{'tool_calls':_0x4c8637['tool_calls'][_0x1c4b80(0x16b)]}:{},..._0x4c8637[_0x1c4b80(0x11b)]?{'tool_call_id':_0x4c8637[_0x1c4b80(0x11b)]}:{}})),'request_content':{'query':_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x140)],'repo_path':_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x179)],'repoRoot':a0_0x723602[_0x1c4b80(0x15a)](_0x122a9c['data'][_0x1c4b80(0x179)]),'model':_0x1c4b80(0x1c3)}},'source':'mcp-filesystem'})[_0x1c4b80(0x221)](()=>{});}}else{if(_0x1fd118['terminationReason']==='terminated'&&_0x1fd118[_0x1c4b80(0x133)][_0x1c4b80(0x16b)]>0x0){const _0x1c31b8=_0x1fd118[_0x1c4b80(0x133)][_0x1c4b80(0x1aa)](_0x537347=>_0x537347[_0x1c4b80(0x1f3)])['join'](';\x20');_0xf22f6c='Error:\x20'+_0x1c31b8;const _0x2686ec=_0x1c31b8[_0x1c4b80(0x19c)]()['includes'](_0x1c4b80(0x1d3))||_0x1c31b8[_0x1c4b80(0x19c)]()[_0x1c4b80(0x177)](_0x1c4b80(0x11c))||_0x1c31b8['toLowerCase']()[_0x1c4b80(0x177)](_0x1c4b80(0x186)),_0x49aa25=_0x1fd118['finish']?.[_0x1c4b80(0x1fd)]?.[_0x1c4b80(0x1b8)],_0x4014b7=_0x1fd118[_0x1c4b80(0x133)][0x0];reportMorphError({'error_message':_0x1c31b8,'error_type':_0x2686ec?_0x1c4b80(0x117):_0x4014b7?.[_0x1c4b80(0x198)]?.[_0x1c4b80(0x219)]||'WarpGrepError','context':{'tool':_0x1c4b80(0x1a6),'repo_path':_0x122a9c['data']['repo_path'],'query':_0x122a9c[_0x1c4b80(0x184)]['search_string'],'model':_0x1c4b80(0x1c3),'termination_reason':_0x1fd118[_0x1c4b80(0x1ca)],'error_count':_0x1fd118[_0x1c4b80(0x133)]['length'],'is_timeout':_0x2686ec,'timings':_0x1fd118[_0x1c4b80(0x18e)],'files_attempted':_0x49aa25?.[_0x1c4b80(0x1aa)](_0x199973=>({'path':_0x199973[_0x1c4b80(0x1ed)],'lines':_0x199973[_0x1c4b80(0x134)]})),'tool_calls':_0x5ec8ec(_0x1fd118[_0x1c4b80(0x192)]),'messages':_0x1fd118[_0x1c4b80(0x192)]?.[_0x1c4b80(0x1aa)](_0xde5306=>({'role':_0xde5306[_0x1c4b80(0x1ba)],'content':_0xde5306[_0x1c4b80(0x196)],..._0xde5306[_0x1c4b80(0x1f2)]?{'tool_calls':_0xde5306['tool_calls'][_0x1c4b80(0x16b)]}:{},..._0xde5306[_0x1c4b80(0x11b)]?{'tool_call_id':_0xde5306['tool_call_id']}:{}})),'request_content':{'query':_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x140)],'repo_path':_0x122a9c[_0x1c4b80(0x184)]['repo_path'],'repoRoot':a0_0x723602['resolve'](_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x179)]),'model':_0x1c4b80(0x1c3)}},'stack_trace':_0x4014b7?.[_0x1c4b80(0x159)]||undefined,'source':_0x1c4b80(0x16f)})[_0x1c4b80(0x221)](()=>{});}else _0xf22f6c=_0x1c4b80(0x1d2);}return{'content':[{'type':_0x1c4b80(0x218),'text':_0xf22f6c}]};}catch(_0xdb2149){const _0x56a788=handleMorphAPIError(_0xdb2149);if(_0x56a788)return logger[_0x1c4b80(0x1ea)]('MCP','tool_call_error',{'tool':_0x1c4b80(0x1a6),'error':_0x1c4b80(0x1e7),'latency_ms':Date[_0x1c4b80(0x1c1)]()-_0x51fc4e}),_0x56a788;const _0xa5c577=_0xdb2149 instanceof Error?_0xdb2149['message']:String(_0xdb2149);logger['error']('MCP',_0x1c4b80(0x124),{'tool':_0x1c4b80(0x1a6),'error':_0xa5c577,'repo_path':_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x179)],'query':_0x122a9c['data']['search_string'],'latency_ms':Date['now']()-_0x51fc4e});const _0x102266=_0xa5c577[_0x1c4b80(0x19c)]()[_0x1c4b80(0x177)](_0x1c4b80(0x1d3))||_0xa5c577[_0x1c4b80(0x19c)]()['includes'](_0x1c4b80(0x11c))||_0xa5c577[_0x1c4b80(0x19c)]()[_0x1c4b80(0x177)](_0x1c4b80(0x186))||_0xdb2149 instanceof Error&&_0xdb2149[_0x1c4b80(0x219)]===_0x1c4b80(0x117);return reportMorphError({'error_message':_0xa5c577,'error_type':_0x102266?'TimeoutError':_0xdb2149 instanceof Error?_0xdb2149[_0x1c4b80(0x198)][_0x1c4b80(0x219)]:_0x1c4b80(0x208),'context':{'tool':_0x1c4b80(0x1a6),'repo_path':_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x179)],'query':_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x140)],'model':_0x1c4b80(0x1c3),'is_timeout':_0x102266,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x122a9c[_0x1c4b80(0x184)]['search_string'],'repo_path':_0x122a9c[_0x1c4b80(0x184)][_0x1c4b80(0x179)],'repoRoot':a0_0x723602[_0x1c4b80(0x15a)](_0x122a9c['data']['repo_path']),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0xdb2149 instanceof Error?_0xdb2149[_0x1c4b80(0x159)]:undefined,'source':_0x1c4b80(0x16f)})['catch'](()=>{}),{'content':[{'type':_0x1c4b80(0x218),'text':_0x1c4b80(0x1c0)+_0xa5c577}],'isError':![]};}}case TOOL_NAMES[_0x1c4b80(0x1a5)]:{const _0x32de1f=WarpGrepGitHubArgsSchema[_0x1c4b80(0x15e)](_0x10572c);if(!_0x32de1f['success'])return{'content':[{'type':_0x1c4b80(0x218),'text':_0x1c4b80(0x1db)+_0x32de1f[_0x1c4b80(0x1ea)]}],'isError':!![]};const _0x311741=_0x32de1f[_0x1c4b80(0x184)]['github_url']||_0x32de1f[_0x1c4b80(0x184)][_0x1c4b80(0x1e4)];if(!_0x311741)return{'content':[{'type':'text','text':'Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id'}],'isError':!![]};const _0x5918b3=MORPH_API_KEY;if(!_0x5918b3)throw new Error(_0x1c4b80(0x172));const _0x4ca49e=Date['now']();logger['debug'](_0x1c4b80(0x16a),'github_search_start',{'identifier':_0x311741,'query':_0x32de1f['data'][_0x1c4b80(0x140)],'branch':_0x32de1f['data']['branch']});try{const _0x1ef82c=new WarpGrepClient({'morphApiKey':_0x5918b3,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0xb2b07=await _0x1ef82c[_0x1c4b80(0x187)]({'searchTerm':_0x32de1f[_0x1c4b80(0x184)][_0x1c4b80(0x140)],'github':_0x311741,'branch':_0x32de1f[_0x1c4b80(0x184)]['branch']}),_0x4f2474=Date[_0x1c4b80(0x1c1)]()-_0x4ca49e;logMcpStderr(_0x1c4b80(0x136)+_0x4f2474+_0x1c4b80(0x194)+_0xb2b07[_0x1c4b80(0x123)]);const _0x32ae82=formatResult(_0xb2b07);return{'content':[{'type':_0x1c4b80(0x218),'text':_0x32ae82}]};}catch(_0x21123f){const _0x261cd7=handleMorphAPIError(_0x21123f);if(_0x261cd7)return _0x261cd7;const _0x4d3cf7=Date[_0x1c4b80(0x1c1)]()-_0x4ca49e,_0x51105b=_0x21123f instanceof Error?_0x21123f['message']:String(_0x21123f);return logMcpStderr(_0x1c4b80(0x1a0)+_0x4d3cf7+_0x1c4b80(0x217),_0x51105b),reportMorphError({'error_message':_0x51105b,'error_type':_0x21123f instanceof Error?_0x21123f[_0x1c4b80(0x198)][_0x1c4b80(0x219)]:'UnknownError','context':{'tool':_0x1c4b80(0x10a),'github_url':_0x311741,'search_string':_0x32de1f[_0x1c4b80(0x184)][_0x1c4b80(0x140)],'branch':_0x32de1f[_0x1c4b80(0x184)][_0x1c4b80(0x132)]},'stack_trace':_0x21123f instanceof Error?_0x21123f[_0x1c4b80(0x159)]:undefined,'source':'mcp-filesystem','tool':_0x1c4b80(0x10a),'latency_ms':_0x4d3cf7})['catch'](()=>{}),{'content':[{'type':_0x1c4b80(0x218),'text':'GitHub\x20search\x20failed:\x20'+_0x51105b}],'isError':![]};}}default:throw new Error(_0x1c4b80(0x147)+_0x1b7981);}}catch(_0x588155){const _0x496f18=_0x588155 instanceof Error?_0x588155[_0x1c4b80(0x1f3)]:String(_0x588155);return reportMorphError({'error_message':_0x496f18,'error_type':_0x588155 instanceof Error?_0x588155[_0x1c4b80(0x198)]['name']:_0x1c4b80(0x208),'context':{'tool':_0x1b7981,'arguments':_0x10572c?JSON[_0x1c4b80(0x1c6)](_0x10572c)[_0x1c4b80(0x1df)](0x0,0x1f4):undefined,'mcp_server_version':_0x1c4b80(0x116)},'stack_trace':_0x588155 instanceof Error?_0x588155[_0x1c4b80(0x159)]:undefined,'source':_0x1c4b80(0x16f)})[_0x1c4b80(0x221)](()=>{}),{'content':[{'type':'text','text':_0x1c4b80(0x13e)+_0x496f18}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x302a3b){const _0x22eabd=a0_0x4ff747,_0x56b861=await getValidRootDirectories(_0x302a3b);if(_0x56b861[_0x22eabd(0x16b)]>0x0)allowedDirectories=[..._0x56b861],logMcpStderr(_0x22eabd(0x1f7)+_0x56b861[_0x22eabd(0x16b)]+'\x20valid\x20directories');else{logMcpStderr(_0x22eabd(0x112));if(ENABLE_WORKSPACE_MODE)try{const _0x456643=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x456643&&(allowedDirectories=[_0x456643],logMcpStderr(_0x22eabd(0x158)+_0x456643));}catch(_0x53d70c){logMcpStderr(_0x22eabd(0x155)+_0x53d70c);}}}server[a0_0x4ff747(0x19b)](RootsListChangedNotificationSchema,async()=>{const _0x100ea5=a0_0x4ff747;try{const _0x54236b=await server[_0x100ea5(0x21b)]();_0x54236b&&_0x100ea5(0x18d)in _0x54236b&&await updateAllowedDirectoriesFromRoots(_0x54236b[_0x100ea5(0x18d)]);}catch(_0x5c2ed2){logMcpStderr(_0x100ea5(0x1ac),_0x5c2ed2 instanceof Error?_0x5c2ed2[_0x100ea5(0x1f3)]:String(_0x5c2ed2));}}),server['oninitialized']=async()=>{const _0x3c578c=a0_0x4ff747,_0x570c74=server[_0x3c578c(0x1eb)]();if(_0x570c74?.['roots'])try{const _0x5edc16=await server['listRoots']();_0x5edc16&&'roots'in _0x5edc16?await updateAllowedDirectoriesFromRoots(_0x5edc16[_0x3c578c(0x18d)]):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x6d4619){logMcpStderr(_0x3c578c(0x1a7),_0x6d4619 instanceof Error?_0x6d4619[_0x3c578c(0x1f3)]:String(_0x6d4619));}else{if(allowedDirectories[_0x3c578c(0x16b)]>0x0)logMcpStderr(_0x3c578c(0x1f9),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x3c578c(0x164));else throw new Error(_0x3c578c(0x1cf));}}};function a0_0x60bb(){const _0x3275e1=['mcp-filesystem','source','\x0a</file>','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','go.mod','morph-mcp','file_path','\x0aExamples:','includes','requiresApiKey','repo_path','512078gTNLnk','every','2197551OvquEu','\x20-\x20','package.json','Morph\x20FastApply\x20failed\x20without\x20error\x20message','added\x20','dirname','\x0a...\x20(truncated,\x20total:\x20','grep_search','data','41418666HghETt','etimedout','searchGitHub','-\x20Grepped\x20\x27','@morphllm/morphmcp\x20','split','.\x20Changes:\x20','finish','roots','timings','read','7876332vCymsZ','../package.json','messages','5404512YjgYVk','ms.\x20Success:\x20','Invalid\x20Morph\x20API\x20key\x20format.\x20API\x20keys\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key.','content','\x20\x20morph-mcp','constructor','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a','setNotificationHandler','toLowerCase','filter','payload','4UMsJJt','[github_codebase_search]\x20Failed\x20in\x20','log','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','completed_with_file_errors','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','GITHUB_CODEBASE_SEARCH','codebase_search','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','\x27\x20in\x20`','provider_created','map','MORPH_API_KEY','Failed\x20to\x20request\x20roots\x20from\x20client:','-\x20Listed\x20directory\x20`','.git','setRequestHandler','morph-v3-large','\x20is\x20not\x20a\x20directory','EDIT_FILE','object','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','toISOString','MORPH_WARP_GREP_TIMEOUT','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','files','application/json','role','CODEBASE_SEARCH','RipgrepNotAvailable','glob\x20\x27','tsconfig.json','linesRemoved','Error\x20running\x20fast\x20context\x20search:\x20','now','enum','morph-warp-grep-v2.1','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','path_validation_start','stringify','edit','https://morphllm.com/api/error-report','tool_call_received','terminationReason','compaction_failed','--api-key=','Applied','Tool\x20\x22','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.','context','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','timeout','Cargo.toml',',\x20removed\x20','function','status','arguments','morph-v3-fast','api_request_start','Invalid\x20arguments:\x20','--api-key','stat','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','substring','Warning:\x20','10190677YKwiSi','linesModified','dryRun','owner_repo','\x20chars)','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','API\x20error\x20(auth/rate-limit)','path_validation_resolved','Tool\x20','error','getClientCapabilities','slice','path','path_validation_failed','params','edit_file','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','tool_calls','message','file_read_failed','-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a','RipgrepError','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','.cursor','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','read\x20','debug','push','metadata','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','Use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code\x20blocks.\x20Include\x20just\x20enough\x20surrounding\x20context\x20to\x20locate\x20each\x20edit\x20precisely.\x0a\x0a','new_string','inputSchema','completed','PathError','size','warn','boolean','homedir','UnknownError','❌\x20Morph\x20Edit\x20Failed:\x20','pyproject.toml','string','some','-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a','isDirectory','list_directory\x20','\x22.\x20Known\x20tools:\x20','BinaryFile','file_read_complete','access','command','Unknown\x20error','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','ms:','text','name','default','listRoots','\x22>\x0a','DISABLED_TOOLS','exit','join','morph-','catch','glob','SubToolError','MORPH_LARGE_APPLY','instruction','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','Error\x20accessing\x20directory\x20','52536FsUCTk','pattern','describe','[could\x20not\x20read\x20file:\x20','\x20error(s)','github_codebase_search','.\x20Path:\x20','\x22>\x0aError\x20reading\x20file:\x20','false','list_directory','-\x20Preserve\x20exact\x20indentation\x0a','node_modules','ToolException','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','filePath','all','isArray','0.2.0','TimeoutError','trim','ReadError','number','tool_call_id','timed\x20out','grep','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','SymlinkError','readFile','MORPH_API_URL','realpath','success','tool_call_error','turns','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','-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a','indexOf','\x20as\x20allowed\x20directory','565YFIidE','Bearer\x20','env','target_file','Disabled\x20tools:\x20','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','cwd','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','branch','errors','lines','`\x20in\x20`','[github_codebase_search]\x20Done\x20in\x20','instructions','connect','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','code','optional','-\x20Read\x20file\x20`','completionId','Error:\x20','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','search_string','startsWith','linesAdded','Specific\x20commit\x20hash\x20to\x20search','grep\x20\x27','FileReadError','assistant','Unknown\x20tool:\x20','file','-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a','search_type','floor',',\x20modified\x20','ENOENT','parse','sep','WarpGrep\x20sub-tool\x20errors:\x20','basename','Natural-language\x20question/description\x20about\x20the\x20code\x20you\x20want\x20to\x20understand.\x20Good\x20example:\x20\x22Where\x20does\x20auth\x20get\x20handled,\x20what\x20are\x20the\x20different\x20oauth\x20methods\x20supported?\x22,\x20\x22Trace\x20all\x20code\x20that\x20relates\x20to\x20how\x20data\x20is\x20injested\x20and\x20processed\x22.\x20Bad\x20example:\x20\x22auth()\x22,\x20\x22auth\x20login\x20dashoard\x20google\x20email\x22.\x20This\x20tool\x20does\x20NOT\x20accept\x20regex,\x20keyword\x20dumps,\x20or\x20symbol-only\x20queries.','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','Preview\x20changes\x20without\x20applying\x20them.','Warning:\x20Workspace\x20fallback\x20failed:\x20','sk-','Fatal\x20error\x20running\x20server:','Fallback:\x20Using\x20workspace\x20root\x20','stack','resolve','GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','--help','has','safeParse','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','unknown','Authentication\x20failed:\x20Your\x20Morph\x20API\x20key\x20is\x20invalid\x20or\x20has\x20been\x20revoked.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key,\x20then\x20update\x20your\x20MCP\x20configuration.','<file\x20path=\x22','File\x20read\x20error:','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','response','Created\x20File','code_edit','argv','Rules:\x0a','MCP','length','changes','post','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.'];a0_0x60bb=function(){return _0x3275e1;};return a0_0x60bb();}async function runServer(){const _0x5608ac=a0_0x4ff747,_0x50a6ff=new StdioServerTransport();await server[_0x5608ac(0x138)](_0x50a6ff),logMcpStderr(_0x5608ac(0x1c4)),allowedDirectories[_0x5608ac(0x16b)]===0x0&&logMcpStderr(_0x5608ac(0x1b4));}runServer()[a0_0x4ff747(0x221)](_0x54b379=>{const _0x46e9ee=a0_0x4ff747;logMcpStderr(_0x46e9ee(0x157),_0x54b379),process[_0x46e9ee(0x21e)](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var a1_0xfb770b=a1_0x5540;(function(_0x38e141,_0x1a1a03){var _0x2d7f27=a1_0x5540,_0x42bfb0=_0x38e141();while(!![]){try{var _0x4b938c=parseInt(_0x2d7f27(0x1ee))/0x1+parseInt(_0x2d7f27(0x1e8))/0x2*(parseInt(_0x2d7f27(0x1e6))/0x3)+parseInt(_0x2d7f27(0x1eb))/0x4*(-parseInt(_0x2d7f27(0x1f9))/0x5)+parseInt(_0x2d7f27(0x1f1))/0x6+-parseInt(_0x2d7f27(0x1f0))/0x7+parseInt(_0x2d7f27(0x1f4))/0x8*(-parseInt(_0x2d7f27(0x1f6))/0x9)+-parseInt(_0x2d7f27(0x1e7))/0xa*(parseInt(_0x2d7f27(0x1ea))/0xb);if(_0x4b938c===_0x1a1a03)break;else _0x42bfb0['push'](_0x42bfb0['shift']());}catch(_0x2e6be7){_0x42bfb0['push'](_0x42bfb0['shift']());}}}(a1_0x3150,0xd29ff));import a1_0x12cc3f from'os';import{logger}from'./logger.js';function a1_0x5540(_0x1ffd83,_0x1246fa){_0x1ffd83=_0x1ffd83-0x1e6;var _0x315004=a1_0x3150();var _0x55409c=_0x315004[_0x1ffd83];return _0x55409c;}function a1_0x3150(){var _0x386ed2=['5211EWiLZm','length','[os=','3755zznrOm','465333IGzphQ','8196110oLBiDO','2gqzzlI','Unknown','11kXOqmN','3316TDpJgo','map','macOS','1446605qYSHHX','win32','3268195DUoUSh','9243828ISVRHQ','error','platform','5120VYLHDp','info'];a1_0x3150=function(){return _0x386ed2;};return a1_0x3150();}export function getOperatingSystemType(_0x9bccb6=a1_0x12cc3f[a1_0xfb770b(0x1f3)]()){var _0x193e7b=a1_0xfb770b;switch(_0x9bccb6){case'darwin':return _0x193e7b(0x1ed);case _0x193e7b(0x1ef):return'Windows';case'linux':return'Linux';default:return _0x193e7b(0x1e9);}}export function formatMcpLogMessage(_0x355203,_0x1f8367=a1_0x12cc3f['platform']()){var _0x1946d7=a1_0xfb770b;return _0x1946d7(0x1f8)+getOperatingSystemType(_0x1f8367)+']\x20'+_0x355203;}export function logMcpStderr(_0x1b2a2f,..._0x1e730a){var _0x11d62a=a1_0xfb770b;console[_0x11d62a(0x1f2)](formatMcpLogMessage(_0x1b2a2f),..._0x1e730a),logger[_0x11d62a(0x1f5)]('MCP',_0x1b2a2f,_0x1e730a[_0x11d62a(0x1f7)]?{'args':_0x1e730a[_0x11d62a(0x1ec)](_0x1a3c0b=>String(_0x1a3c0b))}:undefined);}
|
package/dist/logger.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a2_0x5d7a73=a2_0x2f78;(function(_0x49c130,_0x3b86a8){const _0x4afcaa=a2_0x2f78,_0x24d364=_0x49c130();while(!![]){try{const _0x33fb2c=parseInt(_0x4afcaa(0x19d))/0x1*(-parseInt(_0x4afcaa(0x199))/0x2)+parseInt(_0x4afcaa(0x1a4))/0x3+parseInt(_0x4afcaa(0x1ad))/0x4+-parseInt(_0x4afcaa(0x1a6))/0x5+-parseInt(_0x4afcaa(0x19f))/0x6*(parseInt(_0x4afcaa(0x19c))/0x7)+-parseInt(_0x4afcaa(0x1ac))/0x8*(parseInt(_0x4afcaa(0x1a7))/0x9)+parseInt(_0x4afcaa(0x1a3))/0xa;if(_0x33fb2c===_0x3b86a8)break;else _0x24d364['push'](_0x24d364['shift']());}catch(_0x5bcd65){_0x24d364['push'](_0x24d364['shift']());}}}(a2_0x20fe,0x5f68b));function a2_0x2f78(_0x57bd10,_0x1e68f2){_0x57bd10=_0x57bd10-0x195;const _0x20fe03=a2_0x20fe();let _0x2f78aa=_0x20fe03[_0x57bd10];return _0x2f78aa;}import{createWriteStream}from'fs';class MorphLogger{[a2_0x5d7a73(0x198)];[a2_0x5d7a73(0x196)];constructor(){const _0x18c371=a2_0x5d7a73;this[_0x18c371(0x198)]=process[_0x18c371(0x19b)][_0x18c371(0x1ab)]==='1'||!!process[_0x18c371(0x19b)][_0x18c371(0x1a2)];const _0xd59b9f=process[_0x18c371(0x19b)][_0x18c371(0x1a2)];this[_0x18c371(0x196)]=_0xd59b9f?createWriteStream(_0xd59b9f,{'flags':'a'}):null;}[a2_0x5d7a73(0x1a0)](_0x5a317a,_0x47478b,_0x5ac68d){this['_log']('debug',_0x5a317a,_0x47478b,_0x5ac68d);}['info'](_0x27cedd,_0x417960,_0x4e1d0f){const _0x722950=a2_0x5d7a73;this[_0x722950(0x1a8)](_0x722950(0x197),_0x27cedd,_0x417960,_0x4e1d0f);}[a2_0x5d7a73(0x1ae)](_0x46ad27,_0x48f786,_0x24c0a5){const _0x268930=a2_0x5d7a73;this[_0x268930(0x1a8)](_0x268930(0x1ae),_0x46ad27,_0x48f786,_0x24c0a5);}[a2_0x5d7a73(0x19e)](_0x3647c1,_0x291145,_0xba77a){const _0x50601e=a2_0x5d7a73;this[_0x50601e(0x1a8)]('error',_0x3647c1,_0x291145,_0xba77a);}[a2_0x5d7a73(0x1a5)](){this['enabled']=!![];}get[a2_0x5d7a73(0x1a9)](){const _0x49d819=a2_0x5d7a73;return this[_0x49d819(0x198)];}[a2_0x5d7a73(0x1a8)](_0x520c72,_0x505b13,_0x2f1e85,_0x3d83fb){const _0x41c880=a2_0x5d7a73;if(_0x520c72!==_0x41c880(0x19e)&&!this[_0x41c880(0x198)])return;const _0x5e68e6=new Date()[_0x41c880(0x19a)](),_0x1d091c='['+_0x5e68e6+_0x41c880(0x1aa)+_0x520c72['toUpperCase']()+_0x41c880(0x1aa)+_0x505b13+']';console[_0x41c880(0x19e)](_0x3d83fb?_0x1d091c+'\x20'+_0x2f1e85+'\x20'+JSON[_0x41c880(0x1a1)](_0x3d83fb):_0x1d091c+'\x20'+_0x2f1e85),this[_0x41c880(0x196)]?.[_0x41c880(0x195)](JSON['stringify']({'ts':_0x5e68e6,'level':_0x520c72,'component':_0x505b13,'msg':_0x2f1e85,..._0x3d83fb&&{'data':_0x3d83fb}})+'\x0a');}}export const logger=new MorphLogger();function a2_0x20fe(){const _0xfc372d=['63969knnjtV','error','1236aBlBbD','debug','stringify','MORPH_LOG_FILE','18461610HapDKs','1115034IXYtBV','enable','2063915LMuJOw','9DWXtku','_log','isEnabled',']\x20[','MORPH_DEBUG','5591184cFYlIQ','308524RCmUnV','warn','write','fileStream','info','enabled','4THETCr','toISOString','env','22582JyBlwW'];a2_0x20fe=function(){return _0xfc372d;};return a2_0x20fe();}
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x3df928,_0x17fc69){const _0x3a1dcd=a3_0x465a,_0x389c30=_0x3df928();while(!![]){try{const _0x423b25=parseInt(_0x3a1dcd(0x174))/0x1+-parseInt(_0x3a1dcd(0x172))/0x2*(parseInt(_0x3a1dcd(0x16c))/0x3)+parseInt(_0x3a1dcd(0x177))/0x4+-parseInt(_0x3a1dcd(0x175))/0x5*(-parseInt(_0x3a1dcd(0x179))/0x6)+parseInt(_0x3a1dcd(0x171))/0x7+parseInt(_0x3a1dcd(0x176))/0x8+-parseInt(_0x3a1dcd(0x17a))/0x9;if(_0x423b25===_0x17fc69)break;else _0x389c30['push'](_0x389c30['shift']());}catch(_0x139c11){_0x389c30['push'](_0x389c30['shift']());}}}(a3_0x1eb3,0xec7b4));import a3_0x401ccd from'path';function a3_0x1eb3(){const _0x27d7f2=['7990904XsQYZi','544924ZYdWXD','match','863142JZTQbv','18251073azCRRY','toUpperCase','trim','replace','3UHkkJj','homedir','charAt','slice','normalize','10312393qqnReT','3505886jINYaU','startsWith','846462qPNxFJ','45fFQTgR'];a3_0x1eb3=function(){return _0x27d7f2;};return a3_0x1eb3();}import a3_0x77f1b5 from'os';export function convertToWindowsPath(_0xd50e02){const _0x14f1b2=a3_0x465a;if(_0xd50e02[_0x14f1b2(0x173)]('/mnt/')){const _0x39c213=_0xd50e02[_0x14f1b2(0x16e)](0x5)[_0x14f1b2(0x17b)](),_0x1f6717=_0xd50e02[_0x14f1b2(0x16f)](0x6)['replace'](/\//g,'\x5c');return _0x39c213+':'+_0x1f6717;}if(_0xd50e02[_0x14f1b2(0x178)](/^\/[a-zA-Z]\//)){const _0x3fbe68=_0xd50e02[_0x14f1b2(0x16e)](0x1)[_0x14f1b2(0x17b)](),_0x3a0017=_0xd50e02[_0x14f1b2(0x16f)](0x2)[_0x14f1b2(0x16b)](/\//g,'\x5c');return _0x3fbe68+':'+_0x3a0017;}if(_0xd50e02[_0x14f1b2(0x178)](/^[a-zA-Z]:/))return _0xd50e02['replace'](/\//g,'\x5c');return _0xd50e02;}function a3_0x465a(_0x36deb9,_0x528d02){_0x36deb9=_0x36deb9-0x16b;const _0x1eb397=a3_0x1eb3();let _0x465adc=_0x1eb397[_0x36deb9];return _0x465adc;}export function normalizePath(_0x1f405b){const _0x4c6675=a3_0x465a;_0x1f405b=_0x1f405b[_0x4c6675(0x17c)]()[_0x4c6675(0x16b)](/^["']|["']$/g,'');const _0x1ad192=_0x1f405b[_0x4c6675(0x173)]('/')&&!_0x1f405b[_0x4c6675(0x178)](/^\/mnt\/[a-z]\//i)&&!_0x1f405b[_0x4c6675(0x178)](/^\/[a-zA-Z]\//);if(_0x1ad192)return _0x1f405b['replace'](/\/+/g,'/')[_0x4c6675(0x16b)](/\/+$/,'');_0x1f405b=convertToWindowsPath(_0x1f405b);if(_0x1f405b[_0x4c6675(0x173)]('\x5c\x5c')){let _0xa357d1=_0x1f405b;_0xa357d1=_0xa357d1[_0x4c6675(0x16b)](/^\\{2,}/,'\x5c\x5c');const _0x37d507=_0xa357d1['substring'](0x2)[_0x4c6675(0x16b)](/\\\\/g,'\x5c');_0x1f405b='\x5c\x5c'+_0x37d507;}else _0x1f405b=_0x1f405b[_0x4c6675(0x16b)](/\\\\/g,'\x5c');let _0x719919=a3_0x401ccd[_0x4c6675(0x170)](_0x1f405b);_0x1f405b['startsWith']('\x5c\x5c')&&!_0x719919[_0x4c6675(0x173)]('\x5c\x5c')&&(_0x719919='\x5c'+_0x719919);if(_0x719919[_0x4c6675(0x178)](/^[a-zA-Z]:/)){let _0x385f44=_0x719919[_0x4c6675(0x16b)](/\//g,'\x5c');return/^[a-z]:/['test'](_0x385f44)&&(_0x385f44=_0x385f44[_0x4c6675(0x16e)](0x0)['toUpperCase']()+_0x385f44['slice'](0x1)),_0x385f44;}return _0x719919['replace'](/\//g,'\x5c');}export function expandHome(_0x5803b9){const _0x4e64fd=a3_0x465a;if(_0x5803b9[_0x4e64fd(0x173)]('~/')||_0x5803b9==='~')return a3_0x401ccd['join'](a3_0x77f1b5[_0x4e64fd(0x16d)](),_0x5803b9['slice'](0x1));return _0x5803b9;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a4_0x58b9(){const _0x128393=['isAbsolute','494790ZBEvzH','normalize','startsWith','689268NIalKj','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','resolve','51jyKVXi','includes','Path\x20must\x20be\x20absolute\x20after\x20normalization','string','37628AMEFjg','7007572xlXfYb','10YjUyON','2ytpEKd','87160sXpXYc','sep','2305809fJolIt','162548TsJciD','14gQObES'];a4_0x58b9=function(){return _0x128393;};return a4_0x58b9();}function a4_0x28d0(_0xc5e8f6,_0x40bc14){_0xc5e8f6=_0xc5e8f6-0x91;const _0x58b9a8=a4_0x58b9();let _0x28d075=_0x58b9a8[_0xc5e8f6];return _0x28d075;}(function(_0x782712,_0x80c764){const _0x25f3bb=a4_0x28d0,_0x5ec2bf=_0x782712();while(!![]){try{const _0x1ce601=-parseInt(_0x25f3bb(0x94))/0x1*(parseInt(_0x25f3bb(0xa4))/0x2)+-parseInt(_0x25f3bb(0x9d))/0x3*(-parseInt(_0x25f3bb(0xa1))/0x4)+-parseInt(_0x25f3bb(0x97))/0x5+-parseInt(_0x25f3bb(0x9a))/0x6+parseInt(_0x25f3bb(0x95))/0x7*(-parseInt(_0x25f3bb(0x91))/0x8)+parseInt(_0x25f3bb(0x93))/0x9*(-parseInt(_0x25f3bb(0xa3))/0xa)+parseInt(_0x25f3bb(0xa2))/0xb;if(_0x1ce601===_0x80c764)break;else _0x5ec2bf['push'](_0x5ec2bf['shift']());}catch(_0x31f6a7){_0x5ec2bf['push'](_0x5ec2bf['shift']());}}}(a4_0x58b9,0x22d04));import a4_0x3b0e6f from'path';export function isPathWithinAllowedDirectories(_0x4e2a2c,_0x32f488){const _0x2c7b92=a4_0x28d0;if(typeof _0x4e2a2c!==_0x2c7b92(0xa0)||!Array['isArray'](_0x32f488))return![];if(!_0x4e2a2c||_0x32f488['length']===0x0)return![];if(_0x4e2a2c[_0x2c7b92(0x9e)]('\x00'))return![];let _0x481996;try{_0x481996=a4_0x3b0e6f[_0x2c7b92(0x9c)](a4_0x3b0e6f[_0x2c7b92(0x98)](_0x4e2a2c));}catch{return![];}if(!a4_0x3b0e6f['isAbsolute'](_0x481996))throw new Error(_0x2c7b92(0x9f));return _0x32f488['some'](_0x4f4757=>{const _0x4cdce4=_0x2c7b92;if(typeof _0x4f4757!==_0x4cdce4(0xa0)||!_0x4f4757)return![];if(_0x4f4757[_0x4cdce4(0x9e)]('\x00'))return![];let _0x252b06;try{_0x252b06=a4_0x3b0e6f[_0x4cdce4(0x9c)](a4_0x3b0e6f[_0x4cdce4(0x98)](_0x4f4757));}catch{return![];}if(!a4_0x3b0e6f[_0x4cdce4(0x96)](_0x252b06))throw new Error(_0x4cdce4(0x9b));if(_0x481996===_0x252b06)return!![];if(_0x252b06===a4_0x3b0e6f['sep'])return _0x481996[_0x4cdce4(0x99)](a4_0x3b0e6f['sep']);return _0x481996[_0x4cdce4(0x99)](_0x252b06+a4_0x3b0e6f[_0x4cdce4(0x92)]);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a5_0x87e0(_0x5b0470,_0x4d9aab){_0x5b0470=_0x5b0470-0xd9;const _0x107c8b=a5_0x107c();let _0x87e098=_0x107c8b[_0x5b0470];return _0x87e098;}(function(_0xcc8f8f,_0x3552bc){const _0x4d8d55=a5_0x87e0,_0x490604=_0xcc8f8f();while(!![]){try{const _0x1d20e6=-parseInt(_0x4d8d55(0xe1))/0x1+-parseInt(_0x4d8d55(0xe8))/0x2+-parseInt(_0x4d8d55(0xe2))/0x3+-parseInt(_0x4d8d55(0xd9))/0x4*(parseInt(_0x4d8d55(0xdd))/0x5)+-parseInt(_0x4d8d55(0xde))/0x6+-parseInt(_0x4d8d55(0xda))/0x7+-parseInt(_0x4d8d55(0xe3))/0x8*(-parseInt(_0x4d8d55(0xe7))/0x9);if(_0x1d20e6===_0x3552bc)break;else _0x490604['push'](_0x490604['shift']());}catch(_0x4d6989){_0x490604['push'](_0x490604['shift']());}}}(a5_0x107c,0xebceb));import{promises as a5_0xe9d704}from'fs';import a5_0xd16f30 from'path';import a5_0x48bbb4 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x4839ac){const _0x614e93=a5_0x87e0;try{const _0x350be7=_0x4839ac[_0x614e93(0xeb)](_0x614e93(0xe4))?_0x4839ac[_0x614e93(0xee)](0x7):_0x4839ac,_0x1a92ed=_0x350be7['startsWith']('~/')||_0x350be7==='~'?a5_0xd16f30[_0x614e93(0xef)](a5_0x48bbb4[_0x614e93(0xe0)](),_0x350be7[_0x614e93(0xee)](0x1)):_0x350be7,_0x259c2a=a5_0xd16f30[_0x614e93(0xdf)](_0x1a92ed),_0x3f1dbb=await a5_0xe9d704[_0x614e93(0xe6)](_0x259c2a);return normalizePath(_0x3f1dbb);}catch{return null;}}function formatDirectoryError(_0x16e868,_0xee200f,_0x3ca2b1){const _0x2ab05a=a5_0x87e0;if(_0x3ca2b1)return'Skipping\x20'+_0x3ca2b1+':\x20'+_0x16e868;const _0x55220b=_0xee200f instanceof Error?_0xee200f[_0x2ab05a(0xed)]:String(_0xee200f);return _0x2ab05a(0xe9)+_0x16e868+'\x20due\x20to\x20error:\x20'+_0x55220b;}function a5_0x107c(){const _0xcc70c8=['resolve','homedir','1447680ugogQj','3336141yDWvuE','475976ZCXHwe','file://','uri','realpath','1278YUNysr','2868400urrUWE','Skipping\x20invalid\x20directory:\x20','non-directory\x20root','startsWith','invalid\x20path\x20or\x20inaccessible','message','slice','join','2692aPosCH','12211780KPskXP','stat','isDirectory','5500RngXvf','6023640xYqeRx'];a5_0x107c=function(){return _0xcc70c8;};return a5_0x107c();}export async function getValidRootDirectories(_0x3395e5){const _0x25a8d6=a5_0x87e0,_0x46f69e=[];for(const _0x3e924e of _0x3395e5){const _0xfee691=await parseRootUri(_0x3e924e['uri']);if(!_0xfee691){logMcpStderr(formatDirectoryError(_0x3e924e[_0x25a8d6(0xe5)],undefined,_0x25a8d6(0xec)));continue;}try{const _0x767147=await a5_0xe9d704[_0x25a8d6(0xdb)](_0xfee691);_0x767147[_0x25a8d6(0xdc)]()?_0x46f69e['push'](_0xfee691):logMcpStderr(formatDirectoryError(_0xfee691,undefined,_0x25a8d6(0xea)));}catch(_0x106b14){logMcpStderr(formatDirectoryError(_0xfee691,_0x106b14));}}return _0x46f69e;}
|
package/dist/tool-definitions.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a6_0x8e0f(){const _0x4e634f=['values','65330nTtOIe','6ZdsUDy','edit_file','18cWrqrh','6601504GYXeeM','12084705jtZEpv','800233lDcYAb','12034512sXuuyp','3920550kPHXIS','246017fnexsQ'];a6_0x8e0f=function(){return _0x4e634f;};return a6_0x8e0f();}function a6_0x182b(_0x5a8de4,_0x177348){_0x5a8de4=_0x5a8de4-0x15f;const _0x8e0f5c=a6_0x8e0f();let _0x182b50=_0x8e0f5c[_0x5a8de4];return _0x182b50;}const a6_0x11db67=a6_0x182b;(function(_0x5ebf5c,_0x51dda0){const _0xacaebe=a6_0x182b,_0x2d5f5a=_0x5ebf5c();while(!![]){try{const _0xe7b26f=-parseInt(_0xacaebe(0x165))/0x1*(-parseInt(_0xacaebe(0x168))/0x2)+-parseInt(_0xacaebe(0x164))/0x3+parseInt(_0xacaebe(0x160))/0x4+-parseInt(_0xacaebe(0x167))/0x5+-parseInt(_0xacaebe(0x15f))/0x6*(parseInt(_0xacaebe(0x162))/0x7)+parseInt(_0xacaebe(0x163))/0x8+-parseInt(_0xacaebe(0x161))/0x9;if(_0xe7b26f===_0x51dda0)break;else _0x2d5f5a['push'](_0x2d5f5a['shift']());}catch(_0x4f7189){_0x2d5f5a['push'](_0x2d5f5a['shift']());}}}(a6_0x8e0f,0xd8953));export const TOOL_NAMES={'EDIT_FILE':a6_0x11db67(0x169),'CODEBASE_SEARCH':'codebase_search','GITHUB_CODEBASE_SEARCH':'github_codebase_search'};export const ALL_TOOL_NAMES=Object[a6_0x11db67(0x166)](TOOL_NAMES);export const KNOWN_TOOL_NAMES=new Set(ALL_TOOL_NAMES);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.174",
|
|
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)",
|