@morphllm/morphmcp 0.8.148 → 0.8.150
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/path-utils.js +1 -1
- package/dist/path-validation.js +1 -1
- package/dist/roots-utils.js +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const a0_0x50bb38=a0_0x4c79;(function(_0x43cab9,_0x5d1be5){const _0x5edb3d=a0_0x4c79,_0x521da9=_0x43cab9();while(!![]){try{const _0x599e8f=-parseInt(_0x5edb3d(0x26c))/0x1+parseInt(_0x5edb3d(0x195))/0x2+parseInt(_0x5edb3d(0x1c1))/0x3+parseInt(_0x5edb3d(0x169))/0x4*(-parseInt(_0x5edb3d(0x19e))/0x5)+parseInt(_0x5edb3d(0x1a2))/0x6*(parseInt(_0x5edb3d(0x176))/0x7)+parseInt(_0x5edb3d(0x1c3))/0x8*(-parseInt(_0x5edb3d(0x19f))/0x9)+parseInt(_0x5edb3d(0x202))/0xa;if(_0x599e8f===_0x5d1be5)break;else _0x521da9['push'](_0x521da9['shift']());}catch(_0x2772f8){_0x521da9['push'](_0x521da9['shift']());}}}(a0_0xe4fd,0x5aa9f));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';function a0_0x4c79(_0x29b738,_0x2d36f7){_0x29b738=_0x29b738-0x166;const _0xe4fd55=a0_0xe4fd();let _0x4c7999=_0xe4fd55[_0x29b738];return _0x4c7999;}import a0_0x197418 from'fs/promises';import a0_0x54604a from'path';import a0_0x32cf42 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import a0_0x946e1 from'axios';function fixPathRepetition(_0x67d247){const _0x381d88=a0_0x4c79,_0x3e9c52=_0x67d247[_0x381d88(0x215)](a0_0x54604a[_0x381d88(0x216)])['filter'](Boolean);if(_0x3e9c52[_0x381d88(0x228)]<0x2)return null;for(let _0x403d75=Math[_0x381d88(0x242)](_0x3e9c52['length']/0x2);_0x403d75>=0x1;_0x403d75--){for(let _0x4583ea=0x0;_0x4583ea<=_0x3e9c52[_0x381d88(0x228)]-0x2*_0x403d75;_0x4583ea++){const _0x541c1b=_0x3e9c52[_0x381d88(0x211)](_0x4583ea,_0x4583ea+_0x403d75),_0x1f2dd4=_0x3e9c52[_0x381d88(0x211)](_0x4583ea+_0x403d75,_0x4583ea+0x2*_0x403d75);if(_0x541c1b[_0x381d88(0x18e)]((_0x1bef42,_0x4f3ba1)=>_0x1bef42===_0x1f2dd4[_0x4f3ba1])){const _0xe53a90=[..._0x3e9c52[_0x381d88(0x211)](0x0,_0x4583ea),..._0x3e9c52[_0x381d88(0x211)](_0x4583ea+_0x403d75)];return a0_0x54604a[_0x381d88(0x216)]+_0xe53a90['join'](a0_0x54604a[_0x381d88(0x216)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x542cf1=a0_0x4c79;try{const _0x260ec3=require('../package.json');return _0x260ec3[_0x542cf1(0x241)]??_0x542cf1(0x23b);}catch(_0x50f25b){return logMcpStderr(_0x542cf1(0x18b),_0x50f25b),_0x542cf1(0x23b);}}function printHelp(){const _0x733d65=a0_0x4c79;console[_0x733d65(0x198)](_0x733d65(0x22f)+getPackageVersion()),console[_0x733d65(0x198)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0x733d65(0x198)](_0x733d65(0x1ce)),console['log']('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x733d65(0x198)](_0x733d65(0x24a)),console[_0x733d65(0x198)](_0x733d65(0x17f)),console[_0x733d65(0x198)]('\x0aExamples:'),console['log'](_0x733d65(0x1cb)),console['log']('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0x50bb38(0x1f3)]['slice'](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set([a0_0x50bb38(0x1c8),'-h']);cliArgs['some'](_0x53501a=>VERSION_FLAGS[a0_0x50bb38(0x193)](_0x53501a))&&(console[a0_0x50bb38(0x198)](a0_0x50bb38(0x22f)+getPackageVersion()),process[a0_0x50bb38(0x20b)](0x0));cliArgs['some'](_0x319942=>HELP_FLAGS['has'](_0x319942))&&(printHelp(),process[a0_0x50bb38(0x20b)](0x0));function getCliArg(_0x3ea1c3){const _0x52fe84=a0_0x50bb38;for(let _0x58c499=0x0;_0x58c499<cliArgs[_0x52fe84(0x228)];_0x58c499++){const _0x38bb28=cliArgs[_0x58c499];if(_0x38bb28['startsWith']('--'+_0x3ea1c3+'='))return _0x38bb28[_0x52fe84(0x211)](('--'+_0x3ea1c3+'=')[_0x52fe84(0x228)]);if(_0x38bb28==='--'+_0x3ea1c3&&_0x58c499+0x1<cliArgs[_0x52fe84(0x228)])return cliArgs[_0x58c499+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs['length'];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x50bb38(0x193)](arg)||HELP_FLAGS['has'](arg))continue;if(arg[a0_0x50bb38(0x192)]('--api-key='))continue;if(arg===a0_0x50bb38(0x21b)){i++;continue;}args[a0_0x50bb38(0x252)](arg);}const WORKSPACE_ROOT=process[a0_0x50bb38(0x243)]['WORKSPACE_ROOT']||process[a0_0x50bb38(0x243)][a0_0x50bb38(0x1df)]||process[a0_0x50bb38(0x210)](),ENABLE_WORKSPACE_MODE=process[a0_0x50bb38(0x243)]['ENABLE_WORKSPACE_MODE']!==a0_0x50bb38(0x1e6),MORPH_API_KEY=getCliArg(a0_0x50bb38(0x1a0))??process[a0_0x50bb38(0x243)]['MORPH_API_KEY'],MORPH_API_URL=process[a0_0x50bb38(0x243)][a0_0x50bb38(0x17b)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x50bb38(0x243)]['MORPH_WARP_GREP_TIMEOUT']?parseInt(process[a0_0x50bb38(0x243)]['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x50bb38(0x253),a0_0x50bb38(0x1f4),a0_0x50bb38(0x269)]),DISABLED_TOOLS=process[a0_0x50bb38(0x243)][a0_0x50bb38(0x1d7)]?new Set(process[a0_0x50bb38(0x243)][a0_0x50bb38(0x1d7)]['split'](',')[a0_0x50bb38(0x1a5)](_0x1d69c6=>_0x1d69c6[a0_0x50bb38(0x203)]())[a0_0x50bb38(0x172)](_0x59970e=>_0x59970e[a0_0x50bb38(0x228)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0x50bb38(0x182)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x50bb38(0x193)](tool)&&console[a0_0x50bb38(0x19c)]('Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22'+tool+a0_0x50bb38(0x20f)+[...KNOWN_TOOL_NAMES][a0_0x50bb38(0x194)](',\x20'));}console[a0_0x50bb38(0x19c)](a0_0x50bb38(0x18f)+[...DISABLED_TOOLS][a0_0x50bb38(0x194)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY['startsWith'](a0_0x50bb38(0x268))&&!MORPH_API_KEY['startsWith'](a0_0x50bb38(0x18a))&&logMcpStderr(a0_0x50bb38(0x1c6));async function reportMorphError(_0x3a8086){const _0x1a05aa=a0_0x50bb38;try{await a0_0x946e1['post'](_0x1a05aa(0x181),{..._0x3a8086,'timestamp':new Date()[_0x1a05aa(0x173)](),'source':_0x3a8086['source']||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x3a8086[_0x1a05aa(0x208)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x1a05aa(0x17a),'Authorization':'Bearer\x20'+MORPH_API_KEY}});}catch{}}args['length']===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x50bb38(0x267)),logMcpStderr(a0_0x50bb38(0x262)),logMcpStderr(a0_0x50bb38(0x20e)),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr(a0_0x50bb38(0x178)),logMcpStderr('At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.'));function normalizePath(_0x110cb6){const _0x3b8c4d=a0_0x50bb38;return a0_0x54604a[_0x3b8c4d(0x1d0)](_0x110cb6);}function expandHome(_0x311c8d){const _0x3dc6cb=a0_0x50bb38;if(_0x311c8d[_0x3dc6cb(0x192)]('~/')||_0x311c8d==='~')return a0_0x54604a[_0x3dc6cb(0x194)](a0_0x32cf42['homedir'](),_0x311c8d[_0x3dc6cb(0x211)](0x1));return _0x311c8d;}let allowedDirectories=await Promise[a0_0x50bb38(0x187)](args[a0_0x50bb38(0x1a5)](async _0x1ad17f=>{const _0x3a1ac1=a0_0x50bb38,_0x3dd947=expandHome(_0x1ad17f),_0x5ab296=a0_0x54604a[_0x3a1ac1(0x166)](_0x3dd947);try{const _0x3a1fad=await a0_0x197418[_0x3a1ac1(0x266)](_0x5ab296);return normalizePath(_0x3a1fad);}catch(_0x1b9a53){return normalizePath(_0x5ab296);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x50bb38(0x228)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x50bb38(0x252)](workspaceDir),logMcpStderr(a0_0x50bb38(0x1db)+workspaceDir+a0_0x50bb38(0x1fc)));}catch(a0_0x55d9ff){logMcpStderr(a0_0x50bb38(0x1b0)+a0_0x55d9ff);}async function detectWorkspaceRoot(_0x254be5){const _0x23c6c9=a0_0x50bb38;let _0x19c902=a0_0x54604a[_0x23c6c9(0x166)](_0x254be5);const _0x13ef84=[_0x23c6c9(0x226),'.vscode','package.json',_0x23c6c9(0x1bb),_0x23c6c9(0x1fa),_0x23c6c9(0x207),_0x23c6c9(0x227),_0x23c6c9(0x1eb),_0x23c6c9(0x18d)];while(_0x19c902!==a0_0x54604a[_0x23c6c9(0x1c0)](_0x19c902)){for(const _0x3e2eac of _0x13ef84){const _0x238c43=a0_0x54604a[_0x23c6c9(0x194)](_0x19c902,_0x3e2eac);try{return await a0_0x197418['access'](_0x238c43),normalizePath(_0x19c902);}catch{}}_0x19c902=a0_0x54604a['dirname'](_0x19c902);}return normalizePath(_0x254be5);}await Promise['all'](args['map'](async _0x888a35=>{const _0x2bac5d=a0_0x50bb38;try{const _0x1d2033=await a0_0x197418[_0x2bac5d(0x1f6)](expandHome(_0x888a35));!_0x1d2033['isDirectory']()&&(logMcpStderr(_0x2bac5d(0x233)+_0x888a35+_0x2bac5d(0x229)),process[_0x2bac5d(0x20b)](0x1));}catch(_0x48a617){logMcpStderr(_0x2bac5d(0x1ab)+_0x888a35+':',_0x48a617),process[_0x2bac5d(0x20b)](0x1);}}));async function validatePath(_0x52eda2){const _0xd03363=a0_0x50bb38,_0x3921a8=expandHome(_0x52eda2),_0x3be386=a0_0x54604a['resolve'](_0x3921a8);try{const _0x515805=await a0_0x197418['realpath'](_0x3be386);return _0x515805;}catch(_0x3c27a1){if(_0x3c27a1[_0xd03363(0x254)]==='ENOENT'){const _0x5dafe4=a0_0x54604a[_0xd03363(0x1c0)](_0x3be386);try{const _0x503e6f=await a0_0x197418[_0xd03363(0x266)](_0x5dafe4);return a0_0x54604a['join'](_0x503e6f,a0_0x54604a[_0xd03363(0x186)](_0x3be386));}catch{throw new Error(_0xd03363(0x224)+_0x5dafe4);}}throw _0x3c27a1;}}const MorphEditFileArgsSchema=z[a0_0x50bb38(0x21d)]({'path':z['string'](),'code_edit':z[a0_0x50bb38(0x258)]()[a0_0x50bb38(0x1c7)](a0_0x50bb38(0x1e2)),'instruction':z['string']()[a0_0x50bb38(0x1c7)]('A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.'),'dryRun':z[a0_0x50bb38(0x22c)]()['default'](![])[a0_0x50bb38(0x1c7)]('Preview\x20changes\x20without\x20applying\x20them.')}),CODEBASE_SEARCH_QUERY_DESCRIPTION='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.',WarpGrepArgsSchema=z[a0_0x50bb38(0x21d)]({'search_string':z[a0_0x50bb38(0x258)]()[a0_0x50bb38(0x1c7)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x50bb38(0x258)]()[a0_0x50bb38(0x1c7)]('The\x20absolute\x20path\x20of\x20the\x20folder\x20where\x20the\x20search\x20should\x20be\x20performed.\x20In\x20multi-repo\x20workspaces,\x20you\x20have\x20to\x20specify\x20a\x20subfolder\x20where\x20the\x20search\x20should\x20be\x20performed,\x20to\x20avoid\x20searching\x20across\x20all\x20repos'),'search_type':z[a0_0x50bb38(0x1b2)]([a0_0x50bb38(0x22d),'node_modules'])[a0_0x50bb38(0x1c2)]()[a0_0x50bb38(0x1c7)](a0_0x50bb38(0x24e))}),WarpGrepGitHubArgsSchema=z[a0_0x50bb38(0x21d)]({'search_string':z[a0_0x50bb38(0x258)]()[a0_0x50bb38(0x1c7)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x50bb38(0x258)]()[a0_0x50bb38(0x1c2)]()['describe']('GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'owner_repo':z[a0_0x50bb38(0x258)]()['optional']()[a0_0x50bb38(0x1c7)](a0_0x50bb38(0x204)),'branch':z[a0_0x50bb38(0x258)]()[a0_0x50bb38(0x1c2)]()[a0_0x50bb38(0x1c7)]('Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)')}),CodebaseSearchArgsSchema=z[a0_0x50bb38(0x21d)]({'query':z[a0_0x50bb38(0x258)]()[a0_0x50bb38(0x1c7)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x50bb38(0x258)]()['describe'](a0_0x50bb38(0x1c5)),'branch':z[a0_0x50bb38(0x258)]()[a0_0x50bb38(0x1c2)]()[a0_0x50bb38(0x1c7)](a0_0x50bb38(0x1d2)),'commitHash':z[a0_0x50bb38(0x258)]()[a0_0x50bb38(0x1c2)]()[a0_0x50bb38(0x1c7)]('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z[a0_0x50bb38(0x1bd)](z[a0_0x50bb38(0x258)]())[a0_0x50bb38(0x22d)]([])[a0_0x50bb38(0x1c7)](a0_0x50bb38(0x1c9)),'limit':z[a0_0x50bb38(0x1b5)]()['optional']()[a0_0x50bb38(0x22d)](0xa)[a0_0x50bb38(0x1c7)]('Max\x20results\x20to\x20return')}),server=new Server({'name':a0_0x50bb38(0x1cf),'version':a0_0x50bb38(0x246)},{'capabilities':{'tools':{}}});server[a0_0x50bb38(0x19d)](ListToolsRequestSchema,async()=>{const _0x1e0da6=a0_0x50bb38,_0x389c61=[{'name':_0x1e0da6(0x253),'description':_0x1e0da6(0x1da)+_0x1e0da6(0x23a)+_0x1e0da6(0x170)+_0x1e0da6(0x22e)+_0x1e0da6(0x197)+_0x1e0da6(0x25c)+_0x1e0da6(0x26b)+_0x1e0da6(0x17e)+_0x1e0da6(0x171)+'Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a'+'ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a'+_0x1e0da6(0x1af)+_0x1e0da6(0x1aa)+'-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a'+_0x1e0da6(0x1a9)+_0x1e0da6(0x175)+_0x1e0da6(0x22a)+_0x1e0da6(0x1ff)+_0x1e0da6(0x24d)+_0x1e0da6(0x180)+_0x1e0da6(0x1fe)+_0x1e0da6(0x255)+'IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x1e0da6(0x1f4),'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'+_0x1e0da6(0x1ae)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x19b23a=_0x389c61['filter'](_0x1be38d=>{const _0x5e2c9d=_0x1e0da6;if(DISABLED_TOOLS[_0x5e2c9d(0x193)](_0x1be38d[_0x5e2c9d(0x1e4)]))return console[_0x5e2c9d(0x19c)](_0x5e2c9d(0x1e8)+_0x1be38d[_0x5e2c9d(0x1e4)]+_0x5e2c9d(0x231)),![];if(_0x5e2c9d(0x220)in _0x1be38d&&_0x1be38d[_0x5e2c9d(0x220)]&&!MORPH_API_KEY)return logMcpStderr(_0x5e2c9d(0x1b3)+_0x1be38d[_0x5e2c9d(0x1e4)]+_0x5e2c9d(0x1e0)),![];return!![];});return{'tools':_0x19b23a[_0x1e0da6(0x1a5)](_0x321aae=>({'name':_0x321aae[_0x1e0da6(0x1e4)],'description':_0x321aae[_0x1e0da6(0x1f5)],'inputSchema':_0x321aae[_0x1e0da6(0x1f2)]}))};}),server[a0_0x50bb38(0x19d)](CallToolRequestSchema,async _0x359e9a=>{const _0x2727ae=a0_0x50bb38,{name:_0x2750a0,arguments:_0x547ab6}=_0x359e9a[_0x2727ae(0x1d8)];try{if(DISABLED_TOOLS['has'](_0x2750a0))throw new Error(_0x2727ae(0x1b4)+_0x2750a0+_0x2727ae(0x244));switch(_0x2750a0){case _0x2727ae(0x253):{const _0x2e2412=MorphEditFileArgsSchema[_0x2727ae(0x1e7)](_0x547ab6);if(!_0x2e2412[_0x2727ae(0x26e)])throw new Error(_0x2727ae(0x209)+_0x2e2412[_0x2727ae(0x19c)]);const _0x25479f=await validatePath(_0x2e2412['data'][_0x2727ae(0x25a)]);let _0x2c33ba=null,_0x358f28=!![],_0x3eeedd=null;try{_0x2c33ba=await a0_0x197418[_0x2727ae(0x223)](_0x25479f,_0x2727ae(0x26d));}catch(_0x3d49ec){const _0x2f4e77=_0x3d49ec[_0x2727ae(0x254)];_0x2f4e77==='ENOENT'?(_0x358f28=![],_0x2c33ba=''):(_0x3eeedd=_0x2727ae(0x1ea)+(_0x2f4e77||_0x2727ae(0x23b))+_0x2727ae(0x261)+(_0x3d49ec instanceof Error?_0x3d49ec[_0x2727ae(0x1bc)]:String(_0x3d49ec)),logMcpStderr(_0x2727ae(0x1b3)+_0x3eeedd));}let _0x3a81ce;try{const _0x40e667=MORPH_API_KEY;if(!_0x40e667)throw new Error(_0x2727ae(0x225));const _0x5385a0=a0_0x54604a[_0x2727ae(0x1c0)](_0x25479f),_0x4307b0=a0_0x54604a['basename'](_0x25479f),_0x12de6d=await executeEditFile({'target_filepath':_0x4307b0,'code_edit':_0x2e2412[_0x2727ae(0x1f9)][_0x2727ae(0x26a)],'instructions':_0x2e2412[_0x2727ae(0x1f9)][_0x2727ae(0x234)]},{'morphApiKey':_0x40e667,'morphApiUrl':MORPH_API_URL,'baseDir':_0x5385a0,'autoWrite':!_0x2e2412['data'][_0x2727ae(0x21f)],'generateUdiff':![],'debug':![]});_0x3a81ce=_0x12de6d[_0x2727ae(0x205)];if(!_0x12de6d[_0x2727ae(0x26e)])throw new Error(_0x12de6d[_0x2727ae(0x19c)]||_0x2727ae(0x1ac));const _0x5a3a65=_0x12de6d[_0x2727ae(0x17d)],_0xab4f7d=_0x2727ae(0x23c)+_0x5a3a65[_0x2727ae(0x16d)]+_0x2727ae(0x189)+_0x5a3a65[_0x2727ae(0x1b9)]+_0x2727ae(0x222)+_0x5a3a65[_0x2727ae(0x1b1)];if(_0x2e2412[_0x2727ae(0x1f9)][_0x2727ae(0x21f)])return{'content':[{'type':_0x2727ae(0x1ca),'text':_0x2727ae(0x212)+(_0x358f28?'':_0x2727ae(0x1d4))+':\x20'+_0x2e2412[_0x2727ae(0x1f9)][_0x2727ae(0x234)]+'.\x20Changes:\x20'+_0xab4f7d+_0x2727ae(0x1f0)+_0x2e2412[_0x2727ae(0x1f9)][_0x2727ae(0x25a)]+'.'}]};return{'content':[{'type':_0x2727ae(0x1ca),'text':_0x2727ae(0x1b6)+(_0x358f28?_0x2727ae(0x16a):_0x2727ae(0x239))+':\x20'+_0x2e2412['data'][_0x2727ae(0x234)]+'.\x20Changes:\x20'+_0xab4f7d+_0x2727ae(0x1f0)+_0x2e2412[_0x2727ae(0x1f9)][_0x2727ae(0x25a)]+'.'}]};}catch(_0x2a4771){const _0x11ca75=_0x2a4771 instanceof Error?_0x2a4771[_0x2727ae(0x1bc)]:String(_0x2a4771);return reportMorphError({'error_message':_0x11ca75,'error_type':_0x2a4771 instanceof Error?_0x2a4771[_0x2727ae(0x24c)][_0x2727ae(0x1e4)]:_0x2727ae(0x247),'context':{'tool':_0x2727ae(0x253),'completion_id':_0x3a81ce,'file_path':_0x2e2412[_0x2727ae(0x1f9)][_0x2727ae(0x25a)],'validated_path':_0x25479f,'instruction':_0x2e2412[_0x2727ae(0x1f9)][_0x2727ae(0x234)],'model':'morph-v3-fast','dry_run':_0x2e2412[_0x2727ae(0x1f9)][_0x2727ae(0x21f)],'file_exists':_0x358f28,'file_read_error':_0x3eeedd,'file_readable':_0x2c33ba!==null,'request_content':{'path':_0x2e2412['data'][_0x2727ae(0x25a)],'code_edit':_0x2e2412['data'][_0x2727ae(0x26a)],'instruction':_0x2e2412[_0x2727ae(0x1f9)]['instruction'],'original_code':_0x2c33ba!==null?_0x2c33ba[_0x2727ae(0x228)]>0xc350?_0x2c33ba['substring'](0x0,0xc350)+_0x2727ae(0x25f)+_0x2c33ba['length']+_0x2727ae(0x245):_0x2c33ba:_0x2727ae(0x21a)+(_0x3eeedd||_0x2727ae(0x263))+']','original_code_length':_0x2c33ba?.[_0x2727ae(0x228)]??0x0,'model':'morph-v3-fast','dry_run':_0x2e2412['data'][_0x2727ae(0x21f)]}},'stack_trace':_0x2a4771 instanceof Error?_0x2a4771[_0x2727ae(0x26f)]:undefined,'source':_0x2727ae(0x1d1)})[_0x2727ae(0x250)](()=>{}),{'content':[{'type':'text','text':_0x2727ae(0x199)+_0x11ca75}],'isError':!![]};}}case _0x2727ae(0x1f4):{const _0x2a901c=WarpGrepArgsSchema[_0x2727ae(0x1e7)](_0x547ab6);if(!_0x2a901c['success'])return{'content':[{'type':'text','text':'Invalid\x20arguments:\x20'+_0x2a901c[_0x2727ae(0x19c)]}],'isError':!![]};const _0x4a1a53=_0x1b5282=>{const _0x5d0972=_0x2727ae,_0x320c30=[];for(const _0x1f2603 of _0x1b5282||[]){if(_0x1f2603[_0x5d0972(0x1ee)]===_0x5d0972(0x201)&&Array['isArray'](_0x1f2603[_0x5d0972(0x179)]))for(const _0x1ce0ff of _0x1f2603[_0x5d0972(0x179)]){try{const _0x169244=_0x1ce0ff[_0x5d0972(0x260)]?.['name'],_0x38c7f2=JSON[_0x5d0972(0x256)](_0x1ce0ff[_0x5d0972(0x260)]?.[_0x5d0972(0x1ec)]||'{}');if(_0x169244===_0x5d0972(0x25e))_0x320c30[_0x5d0972(0x252)](_0x5d0972(0x16f)+_0x38c7f2[_0x5d0972(0x185)]+'\x27\x20'+(_0x38c7f2[_0x5d0972(0x25a)]||'.'));else{if(_0x169244===_0x5d0972(0x1ba))_0x320c30[_0x5d0972(0x252)](_0x5d0972(0x214)+_0x38c7f2[_0x5d0972(0x25a)]);else{if(_0x169244===_0x5d0972(0x1be))_0x320c30[_0x5d0972(0x252)](_0x5d0972(0x1dd)+(_0x38c7f2[_0x5d0972(0x1cd)]||'.'));else{if(_0x169244===_0x5d0972(0x1d6))_0x320c30[_0x5d0972(0x252)](_0x5d0972(0x24b)+_0x38c7f2[_0x5d0972(0x185)]+'\x27\x20'+(_0x38c7f2[_0x5d0972(0x25a)]||'.'));else _0x169244===_0x5d0972(0x1a4)&&_0x320c30[_0x5d0972(0x252)](_0x5d0972(0x1a4));}}}}catch{}}}return _0x320c30;},_0x236079=_0x5b7609=>{const _0x5029ab=_0x2727ae,_0x58be88=[];if(!_0x5b7609||!Array['isArray'](_0x5b7609))return _0x58be88;const _0x2726ca=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x5029ab(0x1e9),'tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x5029ab(0x1ba)},{'pattern':/\[READ ERROR\]/,'error_type':_0x5029ab(0x1c4),'tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x5029ab(0x213),'tool':_0x5029ab(0x1ba)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x5029ab(0x218),'tool':_0x5029ab(0x219)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x5029ab(0x1cc),'tool':_0x5029ab(0x219)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x5029ab(0x213),'tool':_0x5029ab(0x1ba)},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':_0x5029ab(0x1ba)},{'pattern':/not a text file/,'error_type':_0x5029ab(0x213),'tool':_0x5029ab(0x1ba)},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':'read'},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':'read'},{'pattern':/status="error"/,'error_type':'ToolException','tool':_0x5029ab(0x23b)}];let _0xd43ca0=0x0;for(const _0x18f126 of _0x5b7609){_0x18f126['role']===_0x5029ab(0x201)&&Array[_0x5029ab(0x221)](_0x18f126[_0x5029ab(0x179)])&&_0xd43ca0++;const _0x15a142=_0x18f126[_0x5029ab(0x1e3)];if((_0x18f126['role']==='tool'||_0x18f126['role']===_0x5029ab(0x1a7))&&_0x15a142&&typeof _0x15a142===_0x5029ab(0x258))for(const {pattern:_0x219d77,error_type:_0x18a49e,tool:_0x3bbf15}of _0x2726ca){const _0x4083b6=_0x15a142[_0x5029ab(0x237)](new RegExp(_0x219d77[_0x5029ab(0x16b)],'g'));if(_0x4083b6)for(const _0x1ca146 of _0x4083b6){const _0x1264b6=_0x15a142['indexOf'](_0x1ca146),_0x4300ed=_0x15a142[_0x5029ab(0x238)](_0x1264b6,Math[_0x5029ab(0x232)](_0x1264b6+0xc8,_0x15a142[_0x5029ab(0x228)]));_0x58be88[_0x5029ab(0x252)]({'tool':_0x3bbf15,'error_type':_0x18a49e,'error_message':_0x4300ed[_0x5029ab(0x215)]('\x0a')[0x0],'turn':_0xd43ca0});}}}return _0x58be88;};try{const _0x20025f=a0_0x54604a['resolve'](_0x2a901c[_0x2727ae(0x1f9)]['repo_path']),_0x3b2c9e=_0x2a901c['data'][_0x2727ae(0x1fb)],_0x3b3b1c=_0x3b2c9e===_0x2727ae(0x1b8)?{'allowNames':['node_modules']}:undefined,_0x211f2e=new LocalRipgrepProvider(_0x20025f,undefined,_0x3b3b1c),_0xc6c84a=await runWarpGrep({'searchTerm':_0x2a901c[_0x2727ae(0x1f9)][_0x2727ae(0x16c)],'repoRoot':_0x20025f,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x211f2e,'search_type':_0x3b2c9e}),_0x42a152=_0x236079(_0xc6c84a[_0x2727ae(0x1de)]);_0x42a152['length']>0x0&&reportMorphError({'error_message':_0x2727ae(0x259)+_0x42a152['length']+_0x2727ae(0x248),'error_type':_0x2727ae(0x1a6),'level':'warn','tool':_0x2727ae(0x1f4),'context':{'repo_path':_0x2a901c[_0x2727ae(0x1f9)][_0x2727ae(0x230)],'query':_0x2a901c[_0x2727ae(0x1f9)]['search_string'],'model':_0x2727ae(0x1ef),'termination_reason':_0xc6c84a['terminationReason'],'sub_tool_errors':_0x42a152,'timings':_0xc6c84a[_0x2727ae(0x236)],'tool_calls':_0x4a1a53(_0xc6c84a[_0x2727ae(0x1de)]),'messages':_0xc6c84a['messages']?.[_0x2727ae(0x1a5)](_0x30a288=>({'role':_0x30a288[_0x2727ae(0x1ee)],'content':_0x30a288[_0x2727ae(0x1e3)],..._0x30a288[_0x2727ae(0x179)]?{'tool_calls':_0x30a288['tool_calls']['length']}:{},..._0x30a288[_0x2727ae(0x1d3)]?{'tool_call_id':_0x30a288[_0x2727ae(0x1d3)]}:{}}))},'source':'mcp-filesystem'})[_0x2727ae(0x250)](()=>{});let _0x511959='';if(_0xc6c84a[_0x2727ae(0x1bf)]===_0x2727ae(0x1d9)&&_0xc6c84a[_0x2727ae(0x1a4)]?.[_0x2727ae(0x191)]?.[_0x2727ae(0x206)]){const _0x561cdc=_0xc6c84a[_0x2727ae(0x1a4)][_0x2727ae(0x191)][_0x2727ae(0x206)];if(_0x561cdc[_0x2727ae(0x228)]===0x0)return _0x511959=_0xc6c84a['finish'][_0x2727ae(0x1f8)]||_0x2727ae(0x200),{'content':[{'type':'text','text':_0x511959}]};const _0x4b6b72=[],_0x5c8bd0=[_0x2727ae(0x1a3)];for(const _0x586bc7 of _0xc6c84a[_0x2727ae(0x1de)]){if(_0x586bc7[_0x2727ae(0x1ee)]===_0x2727ae(0x201)&&Array[_0x2727ae(0x221)](_0x586bc7[_0x2727ae(0x179)]))for(const _0x531346 of _0x586bc7[_0x2727ae(0x179)]){try{const _0x3e5b68=_0x531346[_0x2727ae(0x260)]?.[_0x2727ae(0x1e4)],_0x60450d=JSON[_0x2727ae(0x256)](_0x531346[_0x2727ae(0x260)]?.[_0x2727ae(0x1ec)]||'{}');if(_0x3e5b68==='grep_search')_0x5c8bd0['push'](_0x2727ae(0x167)+_0x60450d[_0x2727ae(0x185)]+_0x2727ae(0x1a8)+(_0x60450d[_0x2727ae(0x25a)]||'.')+'`');else{if(_0x3e5b68===_0x2727ae(0x1ba))_0x5c8bd0[_0x2727ae(0x252)]('-\x20Read\x20file\x20`'+_0x60450d['path']+'`');else{if(_0x3e5b68==='list_directory')_0x5c8bd0[_0x2727ae(0x252)]('-\x20Listed\x20directory\x20`'+(_0x60450d[_0x2727ae(0x1cd)]||'.')+'`');else _0x3e5b68===_0x2727ae(0x1d6)&&_0x5c8bd0['push'](_0x2727ae(0x1fd)+_0x60450d[_0x2727ae(0x185)]+'`\x20in\x20`'+(_0x60450d[_0x2727ae(0x25a)]||'.')+'`');}}}catch{}}}_0x4b6b72['push'](_0x5c8bd0[_0x2727ae(0x194)]('\x0a'));const _0x1faa00=['','Relevant\x20context\x20found:'];for(const _0xa0225a of _0x561cdc){if(_0xa0225a['lines']==='*')_0x1faa00[_0x2727ae(0x252)]('-\x20'+_0xa0225a[_0x2727ae(0x25a)]+':*');else{if(Array[_0x2727ae(0x221)](_0xa0225a[_0x2727ae(0x257)])){const _0x332806=_0xa0225a['lines']['map'](([_0x3ce1a4,_0x5a8e9b])=>{if(_0x3ce1a4===_0x5a8e9b)return''+_0x3ce1a4;return _0x3ce1a4+'-'+_0x5a8e9b;});_0x1faa00['push']('-\x20'+_0xa0225a[_0x2727ae(0x25a)]+':'+_0x332806[_0x2727ae(0x194)](','));}else _0x1faa00[_0x2727ae(0x252)]('-\x20'+_0xa0225a[_0x2727ae(0x25a)]+':*');}}_0x1faa00[_0x2727ae(0x252)](''),_0x4b6b72[_0x2727ae(0x252)](_0x1faa00[_0x2727ae(0x194)]('\x0a')),_0x4b6b72[_0x2727ae(0x252)](_0x2727ae(0x20a));const _0x5de1e6=[];for(const _0x50ce5e of _0x561cdc){let _0x4cdf80=a0_0x54604a['resolve'](_0x2a901c[_0x2727ae(0x1f9)][_0x2727ae(0x230)],_0x50ce5e[_0x2727ae(0x25a)]),_0xa38cea=null,_0x5c0cf8=null;try{_0xa38cea=await a0_0x197418[_0x2727ae(0x223)](_0x4cdf80,{'encoding':_0x2727ae(0x26d)});}catch(_0x1fa6fe){const _0x3c1edc=fixPathRepetition(_0x4cdf80);if(_0x3c1edc)try{_0xa38cea=await a0_0x197418[_0x2727ae(0x223)](_0x3c1edc,{'encoding':_0x2727ae(0x26d)}),_0x4cdf80=_0x3c1edc;}catch{_0x5c0cf8=_0x1fa6fe instanceof Error?_0x1fa6fe:new Error(String(_0x1fa6fe));}else _0x5c0cf8=_0x1fa6fe instanceof Error?_0x1fa6fe:new Error(String(_0x1fa6fe));}if(_0xa38cea!==null){const _0xa6abb5=_0xa38cea['split'](/\r?\n/),_0x390267=[_0x2727ae(0x23d)+_0x50ce5e[_0x2727ae(0x25a)]+'\x22>'];if(_0x50ce5e['lines']==='*'||!Array[_0x2727ae(0x221)](_0x50ce5e['lines']))for(let _0x296cef=0x1;_0x296cef<=_0xa6abb5[_0x2727ae(0x228)];_0x296cef++){const _0xe58649=_0xa6abb5[_0x296cef-0x1];_0x390267[_0x2727ae(0x252)](_0x296cef+'|\x20'+_0xe58649);}else for(const [_0xa285e2,_0x255c40]of _0x50ce5e[_0x2727ae(0x257)]){_0x390267[_0x2727ae(0x228)]>0x1&&_0x390267[_0x2727ae(0x252)]('');for(let _0x16eb80=_0xa285e2;_0x16eb80<=_0x255c40&&_0x16eb80<=_0xa6abb5['length'];_0x16eb80++){const _0x5c1536=_0xa6abb5[_0x16eb80-0x1];_0x390267[_0x2727ae(0x252)](_0x16eb80+'|\x20'+_0x5c1536);}}_0x390267['push'](_0x2727ae(0x1e5)),_0x5de1e6[_0x2727ae(0x252)](_0x390267[_0x2727ae(0x194)]('\x0a'));}else _0x5de1e6['push'](_0x2727ae(0x23d)+_0x50ce5e[_0x2727ae(0x25a)]+_0x2727ae(0x184)+(_0x5c0cf8?.['message']||_0x2727ae(0x174))+_0x2727ae(0x264));}_0x4b6b72['push'](_0x5de1e6['join']('\x0a\x0a')),_0x511959=_0x4b6b72[_0x2727ae(0x194)]('\x0a');const _0x5ba177=_0xc6c84a[_0x2727ae(0x190)]?.['filter'](_0x234eb9=>_0x234eb9[_0x2727ae(0x1bc)]?.[_0x2727ae(0x192)]('File\x20read\x20error:'))||[];if(_0x5ba177[_0x2727ae(0x228)]>0x0){const _0x265dd7=_0x5ba177[_0x2727ae(0x1a5)](_0x29dd5e=>_0x29dd5e[_0x2727ae(0x1bc)])['join'](';\x20');reportMorphError({'error_message':_0x265dd7,'error_type':'FileReadError','context':{'tool':_0x2727ae(0x1f4),'repo_path':_0x2a901c[_0x2727ae(0x1f9)][_0x2727ae(0x230)],'query':_0x2a901c[_0x2727ae(0x1f9)][_0x2727ae(0x16c)],'model':_0x2727ae(0x1ef),'termination_reason':_0x2727ae(0x1dc),'error_count':_0x5ba177[_0x2727ae(0x228)],'is_timeout':![],'timings':_0xc6c84a['timings'],'files_attempted':_0x561cdc[_0x2727ae(0x1a5)](_0x4521e0=>({'path':_0x4521e0[_0x2727ae(0x25a)],'lines':_0x4521e0['lines']})),'tool_calls':_0x4a1a53(_0xc6c84a[_0x2727ae(0x1de)]),'messages':_0xc6c84a[_0x2727ae(0x1de)]?.[_0x2727ae(0x1a5)](_0x5a1713=>({'role':_0x5a1713['role'],'content':_0x5a1713[_0x2727ae(0x1e3)],..._0x5a1713['tool_calls']?{'tool_calls':_0x5a1713[_0x2727ae(0x179)][_0x2727ae(0x228)]}:{},..._0x5a1713[_0x2727ae(0x1d3)]?{'tool_call_id':_0x5a1713['tool_call_id']}:{}})),'request_content':{'query':_0x2a901c[_0x2727ae(0x1f9)][_0x2727ae(0x16c)],'repo_path':_0x2a901c['data'][_0x2727ae(0x230)],'repoRoot':a0_0x54604a['resolve'](_0x2a901c['data'][_0x2727ae(0x230)]),'model':_0x2727ae(0x1ef)}},'source':'mcp-filesystem'})[_0x2727ae(0x250)](()=>{});}}else{if(_0xc6c84a[_0x2727ae(0x1bf)]==='terminated'&&_0xc6c84a[_0x2727ae(0x190)][_0x2727ae(0x228)]>0x0){const _0x2f57a7=_0xc6c84a['errors']['map'](_0x40c429=>_0x40c429[_0x2727ae(0x1bc)])['join'](';\x20');_0x511959=_0x2727ae(0x233)+_0x2f57a7;const _0x4c91ca=_0x2f57a7[_0x2727ae(0x21c)]()['includes'](_0x2727ae(0x24f))||_0x2f57a7[_0x2727ae(0x21c)]()[_0x2727ae(0x188)]('timed\x20out')||_0x2f57a7[_0x2727ae(0x21c)]()[_0x2727ae(0x188)](_0x2727ae(0x177)),_0x29a5b9=_0xc6c84a[_0x2727ae(0x1a4)]?.['metadata']?.[_0x2727ae(0x206)],_0x2116b2=_0xc6c84a[_0x2727ae(0x190)][0x0];reportMorphError({'error_message':_0x2f57a7,'error_type':_0x4c91ca?_0x2727ae(0x21e):_0x2116b2?.[_0x2727ae(0x24c)]?.[_0x2727ae(0x1e4)]||_0x2727ae(0x25d),'context':{'tool':_0x2727ae(0x1f4),'repo_path':_0x2a901c[_0x2727ae(0x1f9)][_0x2727ae(0x230)],'query':_0x2a901c[_0x2727ae(0x1f9)]['search_string'],'model':_0x2727ae(0x1ef),'termination_reason':_0xc6c84a['terminationReason'],'error_count':_0xc6c84a[_0x2727ae(0x190)]['length'],'is_timeout':_0x4c91ca,'timings':_0xc6c84a['timings'],'files_attempted':_0x29a5b9?.[_0x2727ae(0x1a5)](_0x5bbb89=>({'path':_0x5bbb89[_0x2727ae(0x25a)],'lines':_0x5bbb89['lines']})),'tool_calls':_0x4a1a53(_0xc6c84a[_0x2727ae(0x1de)]),'messages':_0xc6c84a[_0x2727ae(0x1de)]?.[_0x2727ae(0x1a5)](_0x1777d0=>({'role':_0x1777d0['role'],'content':_0x1777d0['content'],..._0x1777d0[_0x2727ae(0x179)]?{'tool_calls':_0x1777d0[_0x2727ae(0x179)][_0x2727ae(0x228)]}:{},..._0x1777d0[_0x2727ae(0x1d3)]?{'tool_call_id':_0x1777d0['tool_call_id']}:{}})),'request_content':{'query':_0x2a901c[_0x2727ae(0x1f9)][_0x2727ae(0x16c)],'repo_path':_0x2a901c['data'][_0x2727ae(0x230)],'repoRoot':a0_0x54604a[_0x2727ae(0x166)](_0x2a901c[_0x2727ae(0x1f9)][_0x2727ae(0x230)]),'model':_0x2727ae(0x1ef)}},'stack_trace':_0x2116b2?.['stack']||undefined,'source':_0x2727ae(0x1d1)})[_0x2727ae(0x250)](()=>{});}else _0x511959=_0x2727ae(0x1f1);}return{'content':[{'type':'text','text':_0x511959}]};}catch(_0x633a70){const _0x26e683=_0x633a70 instanceof Error?_0x633a70['message']:String(_0x633a70),_0x5023b1=_0x26e683['toLowerCase']()[_0x2727ae(0x188)](_0x2727ae(0x24f))||_0x26e683[_0x2727ae(0x21c)]()[_0x2727ae(0x188)](_0x2727ae(0x1f7))||_0x26e683[_0x2727ae(0x21c)]()[_0x2727ae(0x188)](_0x2727ae(0x177))||_0x633a70 instanceof Error&&_0x633a70[_0x2727ae(0x1e4)]===_0x2727ae(0x21e);return reportMorphError({'error_message':_0x26e683,'error_type':_0x5023b1?_0x2727ae(0x21e):_0x633a70 instanceof Error?_0x633a70[_0x2727ae(0x24c)][_0x2727ae(0x1e4)]:_0x2727ae(0x247),'context':{'tool':'codebase_search','repo_path':_0x2a901c[_0x2727ae(0x1f9)]['repo_path'],'query':_0x2a901c[_0x2727ae(0x1f9)][_0x2727ae(0x16c)],'model':_0x2727ae(0x1ef),'is_timeout':_0x5023b1,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x2a901c[_0x2727ae(0x1f9)][_0x2727ae(0x16c)],'repo_path':_0x2a901c['data'][_0x2727ae(0x230)],'repoRoot':a0_0x54604a['resolve'](_0x2a901c[_0x2727ae(0x1f9)]['repo_path']),'model':_0x2727ae(0x1ef)}},'stack_trace':_0x633a70 instanceof Error?_0x633a70['stack']:undefined,'source':_0x2727ae(0x1d1)})[_0x2727ae(0x250)](()=>{}),{'content':[{'type':_0x2727ae(0x1ca),'text':_0x2727ae(0x235)+_0x26e683}],'isError':![]};}}case'github_codebase_search':{const _0x108565=WarpGrepGitHubArgsSchema[_0x2727ae(0x1e7)](_0x547ab6);if(!_0x108565[_0x2727ae(0x26e)])return{'content':[{'type':'text','text':_0x2727ae(0x196)+_0x108565[_0x2727ae(0x19c)]}],'isError':!![]};const _0x2ca2fc=_0x108565[_0x2727ae(0x1f9)]['github_url']||_0x108565['data']['owner_repo'];if(!_0x2ca2fc)return{'content':[{'type':_0x2727ae(0x1ca),'text':_0x2727ae(0x1a1)}],'isError':!![]};const _0x586bd7=MORPH_API_KEY;if(!_0x586bd7)throw new Error(_0x2727ae(0x225));const _0x11d4c9=Date[_0x2727ae(0x1d5)]();logMcpStderr(_0x2727ae(0x22b)+_0x2ca2fc+'\x20for:\x20\x22'+_0x108565['data'][_0x2727ae(0x16c)]+'\x22');try{const _0x991b8e=new WarpGrepClient({'morphApiKey':_0x586bd7,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x90c6f8=await _0x991b8e[_0x2727ae(0x16e)]({'searchTerm':_0x108565[_0x2727ae(0x1f9)][_0x2727ae(0x16c)],'github':_0x2ca2fc,'branch':_0x108565[_0x2727ae(0x1f9)]['branch']}),_0x365a12=Date[_0x2727ae(0x1d5)]()-_0x11d4c9;logMcpStderr(_0x2727ae(0x1e1)+_0x365a12+_0x2727ae(0x19b)+_0x90c6f8[_0x2727ae(0x26e)]);const _0x8a319a=formatResult(_0x90c6f8);return{'content':[{'type':_0x2727ae(0x1ca),'text':_0x8a319a}]};}catch(_0x10070a){const _0x4c2230=Date['now']()-_0x11d4c9,_0x2100b3=_0x10070a instanceof Error?_0x10070a['message']:String(_0x10070a);return logMcpStderr('[github_codebase_search]\x20Failed\x20in\x20'+_0x4c2230+_0x2727ae(0x19a),_0x2100b3),reportMorphError({'error_message':_0x2100b3,'error_type':_0x10070a instanceof Error?_0x10070a[_0x2727ae(0x24c)][_0x2727ae(0x1e4)]:'UnknownError','context':{'tool':_0x2727ae(0x269),'github_url':_0x2ca2fc,'search_string':_0x108565[_0x2727ae(0x1f9)]['search_string'],'branch':_0x108565[_0x2727ae(0x1f9)][_0x2727ae(0x23f)]},'stack_trace':_0x10070a instanceof Error?_0x10070a[_0x2727ae(0x26f)]:undefined,'source':_0x2727ae(0x1d1),'tool':_0x2727ae(0x269),'latency_ms':_0x4c2230})['catch'](()=>{}),{'content':[{'type':_0x2727ae(0x1ca),'text':_0x2727ae(0x17c)+_0x2100b3}],'isError':![]};}}default:throw new Error('Unknown\x20tool:\x20'+_0x2750a0);}}catch(_0x12aa3a){const _0x596528=_0x12aa3a instanceof Error?_0x12aa3a[_0x2727ae(0x1bc)]:String(_0x12aa3a);return reportMorphError({'error_message':_0x596528,'error_type':_0x12aa3a instanceof Error?_0x12aa3a[_0x2727ae(0x24c)][_0x2727ae(0x1e4)]:_0x2727ae(0x247),'context':{'tool':_0x2750a0,'arguments':_0x547ab6?JSON['stringify'](_0x547ab6)[_0x2727ae(0x238)](0x0,0x1f4):undefined,'mcp_server_version':_0x2727ae(0x246)},'stack_trace':_0x12aa3a instanceof Error?_0x12aa3a[_0x2727ae(0x26f)]:undefined,'source':_0x2727ae(0x1d1)})[_0x2727ae(0x250)](()=>{}),{'content':[{'type':_0x2727ae(0x1ca),'text':_0x2727ae(0x233)+_0x596528}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x48421a){const _0x4947e6=a0_0x50bb38,_0x459d6e=await getValidRootDirectories(_0x48421a);if(_0x459d6e[_0x4947e6(0x228)]>0x0)allowedDirectories=[..._0x459d6e],logMcpStderr(_0x4947e6(0x251)+_0x459d6e['length']+_0x4947e6(0x1ad));else{logMcpStderr(_0x4947e6(0x20d));if(ENABLE_WORKSPACE_MODE)try{const _0x212e95=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x212e95&&(allowedDirectories=[_0x212e95],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x212e95));}catch(_0x2d73f9){logMcpStderr(_0x4947e6(0x18c)+_0x2d73f9);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x53c47d=a0_0x50bb38;try{const _0x38fa42=await server[_0x53c47d(0x20c)]();_0x38fa42&&_0x53c47d(0x217)in _0x38fa42&&await updateAllowedDirectoriesFromRoots(_0x38fa42[_0x53c47d(0x217)]);}catch(_0x5e7626){logMcpStderr(_0x53c47d(0x1ed),_0x5e7626 instanceof Error?_0x5e7626[_0x53c47d(0x1bc)]:String(_0x5e7626));}}),server[a0_0x50bb38(0x183)]=async()=>{const _0x10a1ad=a0_0x50bb38,_0x5d63c9=server[_0x10a1ad(0x240)]();if(_0x5d63c9?.[_0x10a1ad(0x217)])try{const _0x88a03f=await server[_0x10a1ad(0x20c)]();_0x88a03f&&_0x10a1ad(0x217)in _0x88a03f?await updateAllowedDirectoriesFromRoots(_0x88a03f[_0x10a1ad(0x217)]):logMcpStderr(_0x10a1ad(0x23e));}catch(_0x3cc775){logMcpStderr(_0x10a1ad(0x249),_0x3cc775 instanceof Error?_0x3cc775[_0x10a1ad(0x1bc)]:String(_0x3cc775));}else{if(allowedDirectories[_0x10a1ad(0x228)]>0x0)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:',allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x10a1ad(0x168));else throw new Error('Server\x20cannot\x20operate:\x20No\x20allowed\x20directories\x20available.\x20Server\x20was\x20started\x20without\x20command-line\x20directories\x20and\x20client\x20either\x20does\x20not\x20support\x20MCP\x20roots\x20protocol\x20or\x20provided\x20empty\x20roots.\x20Please\x20either:\x201)\x20Start\x20server\x20with\x20directory\x20arguments,\x202)\x20Use\x20a\x20client\x20that\x20supports\x20MCP\x20roots\x20protocol\x20and\x20provides\x20valid\x20root\x20directories,\x20or\x203)\x20Enable\x20workspace\x20mode\x20with\x20ENABLE_WORKSPACE_MODE=true.');}}};async function runServer(){const _0x119ebf=a0_0x50bb38,_0x3f8868=new StdioServerTransport();await server[_0x119ebf(0x1b7)](_0x3f8868),logMcpStderr(_0x119ebf(0x265)),allowedDirectories[_0x119ebf(0x228)]===0x0&&logMcpStderr('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()[a0_0x50bb38(0x250)](_0x4aafb6=>{const _0xfacbdc=a0_0x50bb38;logMcpStderr(_0xfacbdc(0x25b),_0x4aafb6),process[_0xfacbdc(0x20b)](0x1);});function a0_0xe4fd(){const _0x2f0df2=['morph-mcp','normalize','mcp-filesystem','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','tool_call_id','\x20(new\x20file)','now','glob','DISABLED_TOOLS','params','completed','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','Workspace\x20mode\x20enabled:\x20Using\x20','completed_with_file_errors','list_directory\x20','messages','PWD','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','[github_codebase_search]\x20Done\x20in\x20','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','content','name','</file>','false','safeParse','Tool\x20','FileNotFound','Failed\x20to\x20read\x20file:\x20','tsconfig.json','arguments','Failed\x20to\x20request\x20roots\x20from\x20client:','role','morph-warp-grep-v2.1','.\x20Path:\x20','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','inputSchema','argv','codebase_search','description','stat','timed\x20out','payload','data','pyproject.toml','search_type','\x20as\x20allowed\x20directory','-\x20Glob\x20search\x20`','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','assistant','2239270CWzbbA','trim','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','completionId','files','go.mod','context','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','Here\x20is\x20the\x20content\x20of\x20files:\x0a','exit','listRoots','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','\x22.\x20Known\x20tools:\x20','cwd','slice','Morph\x20Edit\x20Preview','BinaryFile','read\x20','split','sep','roots','RipgrepError','grep','[could\x20not\x20read\x20file:\x20','--api-key','toLowerCase','object','TimeoutError','dryRun','requiresApiKey','isArray',',\x20modified\x20','readFile','Parent\x20directory\x20does\x20not\x20exist:\x20','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','.git','.cursor','length','\x20is\x20not\x20a\x20directory','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','[github_codebase_search]\x20Searching\x20','boolean','default','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','@morphllm/morphmcp\x20','repo_path','\x20disabled\x20via\x20DISABLED_TOOLS','min','Error:\x20','instruction','Error\x20running\x20fast\x20context\x20search:\x20','timings','match','substring','Created\x20File','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','unknown','added\x20','<file\x20path=\x22','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','branch','getClientCapabilities','version','floor','env','\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable','\x20chars)','0.2.0','UnknownError','\x20error(s)','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','glob\x20\x27','constructor','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','timeout','catch','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','push','edit_file','code','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','parse','lines','string','WarpGrep\x20sub-tool\x20errors:\x20','path','Fatal\x20error\x20running\x20server:','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','WarpGrepError','grep_search','\x0a...\x20(truncated,\x20total:\x20','function','\x20-\x20','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','unknown\x20error','\x0a</file>','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','realpath','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','sk-','github_codebase_search','code_edit','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','369148Abqirt','utf-8','success','stack','resolve','-\x20Grepped\x20\x27','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','1940Cwyxsv','Applied','source','search_string','linesAdded','searchGitHub','grep\x20\x27','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','filter','toISOString','Unknown\x20error','Rules:\x0a','7JuMwpG','etimedout','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','tool_calls','application/json','MORPH_API_URL','GitHub\x20search\x20failed:\x20','changes','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','https://morphllm.com/api/error-report','size','oninitialized','\x22>\x0aError\x20reading\x20file:\x20','pattern','basename','all','includes',',\x20removed\x20','morph-','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','Warning:\x20Workspace\x20fallback\x20failed:\x20','composer.json','every','Disabled\x20tools:\x20','errors','metadata','startsWith','has','join','257078wEtpuA','Invalid\x20arguments:\x20','Benefits:\x0a','log','❌\x20Morph\x20Edit\x20Failed:\x20','ms:','ms.\x20Success:\x20','error','setRequestHandler','10qOGVTR','9yKwwaO','api-key','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','2503194NOMWIT','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','finish','map','SubToolError','user','\x27\x20in\x20`','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','For\x20deletions:\x0a','Error\x20accessing\x20directory\x20','Morph\x20FastApply\x20failed\x20without\x20error\x20message','\x20valid\x20directories','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','linesModified','enum','Warning:\x20','Tool\x20\x22','number','Morph\x20Edit\x20','connect','node_modules','linesRemoved','read','Cargo.toml','message','array','list_directory','terminationReason','dirname','1531173MbBGvz','optional','4308632sYCFpo','ReadError','Repository\x20identifier','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','describe','--help','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','text','\x20\x20morph-mcp','RipgrepNotAvailable','command','\x0aOptions:'];a0_0xe4fd=function(){return _0x2f0df2;};return a0_0xe4fd();}
|
|
2
|
+
const a0_0x3a7f66=a0_0x10fb;(function(_0x4519d5,_0x4d6ee4){const _0x38e214=a0_0x10fb,_0x1332bb=_0x4519d5();while(!![]){try{const _0xbc67b5=parseInt(_0x38e214(0x1ff))/0x1*(-parseInt(_0x38e214(0x278))/0x2)+-parseInt(_0x38e214(0x245))/0x3+parseInt(_0x38e214(0x1fb))/0x4*(parseInt(_0x38e214(0x1c5))/0x5)+-parseInt(_0x38e214(0x243))/0x6+parseInt(_0x38e214(0x259))/0x7+parseInt(_0x38e214(0x236))/0x8+parseInt(_0x38e214(0x1e4))/0x9;if(_0xbc67b5===_0x4d6ee4)break;else _0x1332bb['push'](_0x1332bb['shift']());}catch(_0x3a7ed9){_0x1332bb['push'](_0x1332bb['shift']());}}}(a0_0x37e3,0x9d89a));import{Server}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';function a0_0x10fb(_0x1700a6,_0x3b4554){_0x1700a6=_0x1700a6-0x1b2;const _0x37e39a=a0_0x37e3();let _0x10fb20=_0x37e39a[_0x1700a6];return _0x10fb20;}import{CallToolRequestSchema,ListToolsRequestSchema,RootsListChangedNotificationSchema}from'@modelcontextprotocol/sdk/types.js';import a0_0x3f72bc from'fs/promises';import a0_0x243bd3 from'path';import a0_0x1de3aa from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0x1f5731 from'axios';function fixPathRepetition(_0x2312cb){const _0x4561b3=a0_0x10fb,_0x47f30b=_0x2312cb['split'](a0_0x243bd3[_0x4561b3(0x27d)])[_0x4561b3(0x21d)](Boolean);if(_0x47f30b[_0x4561b3(0x220)]<0x2)return null;for(let _0x5c4600=Math['floor'](_0x47f30b['length']/0x2);_0x5c4600>=0x1;_0x5c4600--){for(let _0x1cb479=0x0;_0x1cb479<=_0x47f30b[_0x4561b3(0x220)]-0x2*_0x5c4600;_0x1cb479++){const _0x2d0a1b=_0x47f30b[_0x4561b3(0x207)](_0x1cb479,_0x1cb479+_0x5c4600),_0x4ad340=_0x47f30b['slice'](_0x1cb479+_0x5c4600,_0x1cb479+0x2*_0x5c4600);if(_0x2d0a1b[_0x4561b3(0x21a)]((_0x54bfba,_0x1ae84e)=>_0x54bfba===_0x4ad340[_0x1ae84e])){const _0x5b1559=[..._0x47f30b[_0x4561b3(0x207)](0x0,_0x1cb479),..._0x47f30b['slice'](_0x1cb479+_0x5c4600)];return a0_0x243bd3[_0x4561b3(0x27d)]+_0x5b1559[_0x4561b3(0x246)](a0_0x243bd3[_0x4561b3(0x27d)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x553b28=a0_0x10fb;try{const _0x38220d=require('../package.json');return _0x38220d[_0x553b28(0x26b)]??_0x553b28(0x24d);}catch(_0x24449d){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x24449d),_0x553b28(0x24d);}}function printHelp(){const _0x1c1a88=a0_0x10fb;console['log'](_0x1c1a88(0x1ef)+getPackageVersion()),console[_0x1c1a88(0x23a)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0x1c1a88(0x23a)]('\x0aOptions:'),console[_0x1c1a88(0x23a)](_0x1c1a88(0x273)),console[_0x1c1a88(0x23a)](_0x1c1a88(0x22e)),console[_0x1c1a88(0x23a)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console['log']('\x0aExamples:'),console[_0x1c1a88(0x23a)]('\x20\x20morph-mcp'),console[_0x1c1a88(0x23a)](_0x1c1a88(0x2a7));}const cliArgs=process[a0_0x3a7f66(0x203)][a0_0x3a7f66(0x207)](0x2),VERSION_FLAGS=new Set([a0_0x3a7f66(0x26f),'-v','-V']),HELP_FLAGS=new Set([a0_0x3a7f66(0x2b9),'-h']);cliArgs[a0_0x3a7f66(0x23f)](_0x377da6=>VERSION_FLAGS[a0_0x3a7f66(0x2b4)](_0x377da6))&&(console['log']('@morphllm/morphmcp\x20'+getPackageVersion()),process[a0_0x3a7f66(0x1b3)](0x0));cliArgs[a0_0x3a7f66(0x23f)](_0xf97a6e=>HELP_FLAGS[a0_0x3a7f66(0x2b4)](_0xf97a6e))&&(printHelp(),process[a0_0x3a7f66(0x1b3)](0x0));function getCliArg(_0x276b06){const _0x5bc1a1=a0_0x3a7f66;for(let _0x2f0ed5=0x0;_0x2f0ed5<cliArgs[_0x5bc1a1(0x220)];_0x2f0ed5++){const _0x5c2478=cliArgs[_0x2f0ed5];if(_0x5c2478[_0x5bc1a1(0x2a1)]('--'+_0x276b06+'='))return _0x5c2478[_0x5bc1a1(0x207)](('--'+_0x276b06+'=')[_0x5bc1a1(0x220)]);if(_0x5c2478==='--'+_0x276b06&&_0x2f0ed5+0x1<cliArgs[_0x5bc1a1(0x220)])return cliArgs[_0x2f0ed5+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x3a7f66(0x220)];i++){const arg=cliArgs[i];if(VERSION_FLAGS['has'](arg)||HELP_FLAGS[a0_0x3a7f66(0x2b4)](arg))continue;if(arg['startsWith'](a0_0x3a7f66(0x2be)))continue;if(arg===a0_0x3a7f66(0x1f0)){i++;continue;}args[a0_0x3a7f66(0x1cc)](arg);}const WORKSPACE_ROOT=process[a0_0x3a7f66(0x256)][a0_0x3a7f66(0x226)]||process[a0_0x3a7f66(0x256)]['PWD']||process[a0_0x3a7f66(0x242)](),ENABLE_WORKSPACE_MODE=process[a0_0x3a7f66(0x256)][a0_0x3a7f66(0x206)]!=='false',MORPH_API_KEY=getCliArg(a0_0x3a7f66(0x1ee))??process[a0_0x3a7f66(0x256)][a0_0x3a7f66(0x2ba)],MORPH_API_URL=process[a0_0x3a7f66(0x256)][a0_0x3a7f66(0x1e9)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x3a7f66(0x256)]['MORPH_WARP_GREP_TIMEOUT']?parseInt(process[a0_0x3a7f66(0x256)][a0_0x3a7f66(0x23b)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x3a7f66(0x1dc),a0_0x3a7f66(0x1db),a0_0x3a7f66(0x231)]),DISABLED_TOOLS=process[a0_0x3a7f66(0x256)][a0_0x3a7f66(0x29a)]?new Set(process[a0_0x3a7f66(0x256)][a0_0x3a7f66(0x29a)][a0_0x3a7f66(0x1f6)](',')[a0_0x3a7f66(0x296)](_0x1979c4=>_0x1979c4[a0_0x3a7f66(0x1ba)]())['filter'](_0x41e505=>_0x41e505[a0_0x3a7f66(0x220)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0x3a7f66(0x268)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES['has'](tool)&&console[a0_0x3a7f66(0x1d9)]('Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22'+tool+a0_0x3a7f66(0x212)+[...KNOWN_TOOL_NAMES][a0_0x3a7f66(0x246)](',\x20'));}console[a0_0x3a7f66(0x1d9)](a0_0x3a7f66(0x1b5)+[...DISABLED_TOOLS][a0_0x3a7f66(0x246)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x3a7f66(0x2a1)](a0_0x3a7f66(0x1d5))&&!MORPH_API_KEY[a0_0x3a7f66(0x2a1)](a0_0x3a7f66(0x29d))&&logMcpStderr(a0_0x3a7f66(0x257));async function reportMorphError(_0x37b176){const _0x93ad0a=a0_0x3a7f66;try{await a0_0x1f5731[_0x93ad0a(0x227)](_0x93ad0a(0x29b),{..._0x37b176,'timestamp':new Date()['toISOString'](),'source':_0x37b176[_0x93ad0a(0x297)]||_0x93ad0a(0x224),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x37b176[_0x93ad0a(0x1ec)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x93ad0a(0x27b),'Authorization':_0x93ad0a(0x1fe)+MORPH_API_KEY}});}catch{}}args[a0_0x3a7f66(0x220)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x3a7f66(0x1dd)),logMcpStderr(a0_0x3a7f66(0x217)),logMcpStderr(a0_0x3a7f66(0x26a)),logMcpStderr(a0_0x3a7f66(0x1c1)),logMcpStderr(a0_0x3a7f66(0x1de)),logMcpStderr(a0_0x3a7f66(0x1d2)));function normalizePath(_0xa32a1){const _0x4f9e77=a0_0x3a7f66;return a0_0x243bd3[_0x4f9e77(0x287)](_0xa32a1);}function expandHome(_0x1d3165){const _0x4f12b9=a0_0x3a7f66;if(_0x1d3165[_0x4f12b9(0x2a1)]('~/')||_0x1d3165==='~')return a0_0x243bd3[_0x4f12b9(0x246)](a0_0x1de3aa['homedir'](),_0x1d3165['slice'](0x1));return _0x1d3165;}let allowedDirectories=await Promise[a0_0x3a7f66(0x1e3)](args[a0_0x3a7f66(0x296)](async _0x3d561d=>{const _0x18d496=a0_0x3a7f66,_0x43b776=expandHome(_0x3d561d),_0x8aabf9=a0_0x243bd3['resolve'](_0x43b776);try{const _0x473301=await a0_0x3f72bc[_0x18d496(0x26e)](_0x8aabf9);return normalizePath(_0x473301);}catch(_0x2251bd){return normalizePath(_0x8aabf9);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x3a7f66(0x220)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x3a7f66(0x1cc)](workspaceDir),logMcpStderr(a0_0x3a7f66(0x1d0)+workspaceDir+a0_0x3a7f66(0x24b)));}catch(a0_0x4bef65){logMcpStderr(a0_0x3a7f66(0x1fc)+a0_0x4bef65);}async function detectWorkspaceRoot(_0x4e9ebe){const _0x389e99=a0_0x3a7f66;let _0x1d92bf=a0_0x243bd3[_0x389e99(0x21c)](_0x4e9ebe);const _0x52e908=[_0x389e99(0x2b0),'.vscode',_0x389e99(0x294),_0x389e99(0x293),'pyproject.toml',_0x389e99(0x20f),'.cursor',_0x389e99(0x216),_0x389e99(0x1f2)];while(_0x1d92bf!==a0_0x243bd3['dirname'](_0x1d92bf)){for(const _0x463a65 of _0x52e908){const _0x39e87a=a0_0x243bd3[_0x389e99(0x246)](_0x1d92bf,_0x463a65);try{return await a0_0x3f72bc[_0x389e99(0x258)](_0x39e87a),normalizePath(_0x1d92bf);}catch{}}_0x1d92bf=a0_0x243bd3[_0x389e99(0x1c0)](_0x1d92bf);}return normalizePath(_0x4e9ebe);}await Promise[a0_0x3a7f66(0x1e3)](args[a0_0x3a7f66(0x296)](async _0x4d1cad=>{const _0x3a712a=a0_0x3a7f66;try{const _0x27f321=await a0_0x3f72bc[_0x3a712a(0x1bf)](expandHome(_0x4d1cad));!_0x27f321[_0x3a712a(0x215)]()&&(logMcpStderr(_0x3a712a(0x214)+_0x4d1cad+_0x3a712a(0x1ea)),process[_0x3a712a(0x1b3)](0x1));}catch(_0x1f6afb){logMcpStderr(_0x3a712a(0x1d3)+_0x4d1cad+':',_0x1f6afb),process[_0x3a712a(0x1b3)](0x1);}}));async function validatePath(_0x3cf92d){const _0x3a6862=a0_0x3a7f66,_0x52f25d=expandHome(_0x3cf92d),_0x157614=a0_0x243bd3[_0x3a6862(0x21c)](_0x52f25d);try{const _0x52d9a6=await a0_0x3f72bc[_0x3a6862(0x26e)](_0x157614);return _0x52d9a6;}catch(_0x53cba2){if(_0x53cba2[_0x3a6862(0x2ae)]===_0x3a6862(0x25e)){const _0x7994ff=a0_0x243bd3[_0x3a6862(0x1c0)](_0x157614);try{const _0x3cf35c=await a0_0x3f72bc['realpath'](_0x7994ff);return a0_0x243bd3[_0x3a6862(0x246)](_0x3cf35c,a0_0x243bd3[_0x3a6862(0x23c)](_0x157614));}catch{throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x7994ff);}}throw _0x53cba2;}}const MorphEditFileArgsSchema=z['object']({'path':z[a0_0x3a7f66(0x253)](),'code_edit':z[a0_0x3a7f66(0x253)]()[a0_0x3a7f66(0x247)](a0_0x3a7f66(0x1e5)),'instruction':z[a0_0x3a7f66(0x253)]()[a0_0x3a7f66(0x247)](a0_0x3a7f66(0x208)),'dryRun':z['boolean']()[a0_0x3a7f66(0x211)](![])[a0_0x3a7f66(0x247)]('Preview\x20changes\x20without\x20applying\x20them.')}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x3a7f66(0x228),WarpGrepArgsSchema=z[a0_0x3a7f66(0x2b2)]({'search_string':z['string']()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x3a7f66(0x253)]()[a0_0x3a7f66(0x247)](a0_0x3a7f66(0x1d6)),'search_type':z[a0_0x3a7f66(0x274)]([a0_0x3a7f66(0x211),a0_0x3a7f66(0x1f8)])[a0_0x3a7f66(0x1d4)]()['describe']('Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.')}),WarpGrepGitHubArgsSchema=z[a0_0x3a7f66(0x2b2)]({'search_string':z['string']()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()[a0_0x3a7f66(0x1d4)]()[a0_0x3a7f66(0x247)](a0_0x3a7f66(0x2b3)),'owner_repo':z[a0_0x3a7f66(0x253)]()[a0_0x3a7f66(0x1d4)]()[a0_0x3a7f66(0x247)]('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z[a0_0x3a7f66(0x253)]()[a0_0x3a7f66(0x1d4)]()[a0_0x3a7f66(0x247)](a0_0x3a7f66(0x28a))}),CodebaseSearchArgsSchema=z[a0_0x3a7f66(0x2b2)]({'query':z[a0_0x3a7f66(0x253)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z['string']()['describe'](a0_0x3a7f66(0x2bf)),'branch':z[a0_0x3a7f66(0x253)]()[a0_0x3a7f66(0x1d4)]()[a0_0x3a7f66(0x247)](a0_0x3a7f66(0x2ab)),'commitHash':z['string']()[a0_0x3a7f66(0x1d4)]()[a0_0x3a7f66(0x247)](a0_0x3a7f66(0x1f9)),'targetDirectories':z['array'](z['string']())[a0_0x3a7f66(0x211)]([])[a0_0x3a7f66(0x247)](a0_0x3a7f66(0x288)),'limit':z[a0_0x3a7f66(0x277)]()[a0_0x3a7f66(0x1d4)]()[a0_0x3a7f66(0x211)](0xa)[a0_0x3a7f66(0x247)](a0_0x3a7f66(0x292))}),server=new Server({'name':a0_0x3a7f66(0x281),'version':'0.2.0'},{'capabilities':{'tools':{}}});server[a0_0x3a7f66(0x210)](ListToolsRequestSchema,async()=>{const _0x5af94c=a0_0x3a7f66,_0x138361=[{'name':'edit_file','description':_0x5af94c(0x1d7)+'⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a'+_0x5af94c(0x1e6)+_0x5af94c(0x279)+_0x5af94c(0x205)+_0x5af94c(0x1f5)+'-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a'+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+_0x5af94c(0x1c4)+_0x5af94c(0x218)+_0x5af94c(0x1c7)+_0x5af94c(0x295)+'For\x20deletions:\x0a'+_0x5af94c(0x289)+_0x5af94c(0x272)+'Rules:\x0a'+'-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a'+_0x5af94c(0x1f7)+_0x5af94c(0x20a)+_0x5af94c(0x1e8)+_0x5af94c(0x1b9)+_0x5af94c(0x251)+'IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x5af94c(0x1db),'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'+_0x5af94c(0x1cf)+'You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20'+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x35cda7=_0x138361[_0x5af94c(0x21d)](_0x8a237f=>{const _0x1e52a7=_0x5af94c;if(DISABLED_TOOLS[_0x1e52a7(0x2b4)](_0x8a237f['name']))return console['error'](_0x1e52a7(0x213)+_0x8a237f[_0x1e52a7(0x2af)]+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if(_0x1e52a7(0x25c)in _0x8a237f&&_0x8a237f['requiresApiKey']&&!MORPH_API_KEY)return logMcpStderr('Warning:\x20'+_0x8a237f[_0x1e52a7(0x2af)]+_0x1e52a7(0x1b2)),![];return!![];});return{'tools':_0x35cda7[_0x5af94c(0x296)](_0x2c80d8=>({'name':_0x2c80d8[_0x5af94c(0x2af)],'description':_0x2c80d8[_0x5af94c(0x2b1)],'inputSchema':_0x2c80d8[_0x5af94c(0x1ca)]}))};}),server[a0_0x3a7f66(0x210)](CallToolRequestSchema,async _0x155870=>{const _0x566ef4=a0_0x3a7f66,{name:_0x512c1b,arguments:_0x59a674}=_0x155870[_0x566ef4(0x22c)];try{if(DISABLED_TOOLS[_0x566ef4(0x2b4)](_0x512c1b))throw new Error('Tool\x20\x22'+_0x512c1b+'\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable');switch(_0x512c1b){case _0x566ef4(0x1dc):{const _0x1813e9=_0x59a674&&typeof _0x59a674===_0x566ef4(0x2b2)&&_0x566ef4(0x2a8)in _0x59a674&&!(_0x566ef4(0x285)in _0x59a674)?{..._0x59a674,'instruction':_0x59a674['instructions'],'instructions':undefined}:_0x59a674,_0x34fd26=MorphEditFileArgsSchema['safeParse'](_0x1813e9);if(!_0x34fd26[_0x566ef4(0x1c6)])throw new Error('Invalid\x20arguments\x20for\x20morph_edit_file:\x20'+_0x34fd26[_0x566ef4(0x1d9)]);const _0x539c7b=await validatePath(_0x34fd26[_0x566ef4(0x27c)][_0x566ef4(0x270)]);let _0x35c4f9=null,_0x400a3=!![],_0x19fc63=null;try{_0x35c4f9=await a0_0x3f72bc['readFile'](_0x539c7b,_0x566ef4(0x26d));}catch(_0x5e801b){const _0x5669a5=_0x5e801b[_0x566ef4(0x2ae)];_0x5669a5===_0x566ef4(0x25e)?(_0x400a3=![],_0x35c4f9=''):(_0x19fc63='Failed\x20to\x20read\x20file:\x20'+(_0x5669a5||_0x566ef4(0x24d))+_0x566ef4(0x1cd)+(_0x5e801b instanceof Error?_0x5e801b[_0x566ef4(0x22d)]:String(_0x5e801b)),logMcpStderr(_0x566ef4(0x27a)+_0x19fc63));}let _0x2605a2;try{const _0x4cc48f=MORPH_API_KEY;if(!_0x4cc48f)throw new Error(_0x566ef4(0x298));const _0x3bacf3=a0_0x243bd3[_0x566ef4(0x1c0)](_0x539c7b),_0x51412b=a0_0x243bd3[_0x566ef4(0x23c)](_0x539c7b),_0x2fb584=await executeEditFile({'target_filepath':_0x51412b,'code_edit':_0x34fd26[_0x566ef4(0x27c)][_0x566ef4(0x237)],'instructions':_0x34fd26[_0x566ef4(0x27c)]['instruction']},{'morphApiKey':_0x4cc48f,'morphApiUrl':MORPH_API_URL,'baseDir':_0x3bacf3,'autoWrite':!_0x34fd26[_0x566ef4(0x27c)]['dryRun'],'generateUdiff':![],'debug':![]});_0x2605a2=_0x2fb584[_0x566ef4(0x24f)];if(!_0x2fb584['success'])throw new Error(_0x2fb584[_0x566ef4(0x1d9)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x4e45e0=_0x2fb584['changes'],_0xc198de=_0x566ef4(0x28f)+_0x4e45e0[_0x566ef4(0x20c)]+',\x20removed\x20'+_0x4e45e0[_0x566ef4(0x2bb)]+',\x20modified\x20'+_0x4e45e0[_0x566ef4(0x244)];if(_0x34fd26[_0x566ef4(0x27c)]['dryRun'])return{'content':[{'type':_0x566ef4(0x1ed),'text':_0x566ef4(0x1ce)+(_0x400a3?'':_0x566ef4(0x28d))+':\x20'+_0x34fd26[_0x566ef4(0x27c)]['instruction']+_0x566ef4(0x283)+_0xc198de+_0x566ef4(0x21f)+_0x34fd26[_0x566ef4(0x27c)]['path']+'.'}]};return{'content':[{'type':_0x566ef4(0x1ed),'text':_0x566ef4(0x22f)+(_0x400a3?'Applied':_0x566ef4(0x21b))+':\x20'+_0x34fd26[_0x566ef4(0x27c)][_0x566ef4(0x285)]+_0x566ef4(0x283)+_0xc198de+_0x566ef4(0x21f)+_0x34fd26[_0x566ef4(0x27c)][_0x566ef4(0x270)]+'.'}]};}catch(_0x478c14){const _0x2b3ca4=_0x478c14 instanceof Error?_0x478c14[_0x566ef4(0x22d)]:String(_0x478c14);return reportMorphError({'error_message':_0x2b3ca4,'error_type':_0x478c14 instanceof Error?_0x478c14[_0x566ef4(0x1bc)][_0x566ef4(0x2af)]:_0x566ef4(0x222),'context':{'tool':_0x566ef4(0x1dc),'completion_id':_0x2605a2,'file_path':_0x34fd26['data']['path'],'validated_path':_0x539c7b,'instruction':_0x34fd26[_0x566ef4(0x27c)][_0x566ef4(0x285)],'model':_0x566ef4(0x1b6),'dry_run':_0x34fd26['data'][_0x566ef4(0x1c3)],'file_exists':_0x400a3,'file_read_error':_0x19fc63,'file_readable':_0x35c4f9!==null,'request_content':{'path':_0x34fd26[_0x566ef4(0x27c)][_0x566ef4(0x270)],'code_edit':_0x34fd26[_0x566ef4(0x27c)][_0x566ef4(0x237)],'instruction':_0x34fd26['data'][_0x566ef4(0x285)],'original_code':_0x35c4f9!==null?_0x35c4f9[_0x566ef4(0x220)]>0xc350?_0x35c4f9[_0x566ef4(0x234)](0x0,0xc350)+_0x566ef4(0x1fd)+_0x35c4f9['length']+_0x566ef4(0x26c):_0x35c4f9:'[could\x20not\x20read\x20file:\x20'+(_0x19fc63||_0x566ef4(0x238))+']','original_code_length':_0x35c4f9?.[_0x566ef4(0x220)]??0x0,'model':_0x566ef4(0x1b6),'dry_run':_0x34fd26[_0x566ef4(0x27c)][_0x566ef4(0x1c3)]}},'stack_trace':_0x478c14 instanceof Error?_0x478c14['stack']:undefined,'source':_0x566ef4(0x224)})[_0x566ef4(0x275)](()=>{}),{'content':[{'type':'text','text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x2b3ca4}],'isError':!![]};}}case'codebase_search':{const _0x1a5c3e=WarpGrepArgsSchema['safeParse'](_0x59a674);if(!_0x1a5c3e[_0x566ef4(0x1c6)])return{'content':[{'type':_0x566ef4(0x1ed),'text':_0x566ef4(0x2a4)+_0x1a5c3e[_0x566ef4(0x1d9)]}],'isError':!![]};const _0x1ccfa9=_0x13e44f=>{const _0x1427bf=_0x566ef4,_0x1794cc=[];for(const _0x1dc510 of _0x13e44f||[]){if(_0x1dc510[_0x1427bf(0x22a)]===_0x1427bf(0x1e1)&&Array['isArray'](_0x1dc510[_0x1427bf(0x21e)]))for(const _0x30a5d0 of _0x1dc510['tool_calls']){try{const _0x59ee12=_0x30a5d0['function']?.[_0x1427bf(0x2af)],_0x1efc83=JSON[_0x1427bf(0x28c)](_0x30a5d0[_0x1427bf(0x2ac)]?.[_0x1427bf(0x2b8)]||'{}');if(_0x59ee12==='grep_search')_0x1794cc[_0x1427bf(0x1cc)]('grep\x20\x27'+_0x1efc83[_0x1427bf(0x1c9)]+'\x27\x20'+(_0x1efc83[_0x1427bf(0x270)]||'.'));else{if(_0x59ee12===_0x1427bf(0x1eb))_0x1794cc[_0x1427bf(0x1cc)](_0x1427bf(0x20b)+_0x1efc83[_0x1427bf(0x270)]);else{if(_0x59ee12===_0x1427bf(0x267))_0x1794cc['push']('list_directory\x20'+(_0x1efc83['command']||'.'));else{if(_0x59ee12==='glob')_0x1794cc['push'](_0x1427bf(0x271)+_0x1efc83[_0x1427bf(0x1c9)]+'\x27\x20'+(_0x1efc83[_0x1427bf(0x270)]||'.'));else _0x59ee12===_0x1427bf(0x2bc)&&_0x1794cc[_0x1427bf(0x1cc)](_0x1427bf(0x2bc));}}}}catch{}}}return _0x1794cc;},_0x4e15d4=_0x2a693f=>{const _0x3fa475=_0x566ef4,_0x381828=[];if(!_0x2a693f||!Array[_0x3fa475(0x263)](_0x2a693f))return _0x381828;const _0x3a35a4=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':'FileNotFound','tool':_0x3fa475(0x1eb)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x3fa475(0x240),'tool':_0x3fa475(0x1eb)},{'pattern':/\[READ ERROR\]/,'error_type':_0x3fa475(0x1c8),'tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':'BinaryFile','tool':_0x3fa475(0x1eb)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x3fa475(0x25a),'tool':_0x3fa475(0x291)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x3fa475(0x299),'tool':'grep'},{'pattern':/\[BINARY FILE\]/,'error_type':_0x3fa475(0x27f),'tool':_0x3fa475(0x1eb)},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':_0x3fa475(0x1eb)},{'pattern':/not a text file/,'error_type':_0x3fa475(0x27f),'tool':_0x3fa475(0x1eb)},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':_0x3fa475(0x1eb)},{'pattern':/Error reading file:/,'error_type':_0x3fa475(0x1c8),'tool':_0x3fa475(0x1eb)},{'pattern':/status="error"/,'error_type':_0x3fa475(0x27e),'tool':_0x3fa475(0x24d)}];let _0x1c0eab=0x0;for(const _0x25a7a7 of _0x2a693f){_0x25a7a7[_0x3fa475(0x22a)]===_0x3fa475(0x1e1)&&Array[_0x3fa475(0x263)](_0x25a7a7[_0x3fa475(0x21e)])&&_0x1c0eab++;const _0x10bfc1=_0x25a7a7[_0x3fa475(0x225)];if((_0x25a7a7[_0x3fa475(0x22a)]==='tool'||_0x25a7a7[_0x3fa475(0x22a)]===_0x3fa475(0x241))&&_0x10bfc1&&typeof _0x10bfc1===_0x3fa475(0x253))for(const {pattern:_0x4cd8c7,error_type:_0x45f509,tool:_0x48936a}of _0x3a35a4){const _0x38efc0=_0x10bfc1[_0x3fa475(0x24c)](new RegExp(_0x4cd8c7[_0x3fa475(0x297)],'g'));if(_0x38efc0)for(const _0x29c2a6 of _0x38efc0){const _0x5049e7=_0x10bfc1[_0x3fa475(0x1f4)](_0x29c2a6),_0x9c2715=_0x10bfc1[_0x3fa475(0x234)](_0x5049e7,Math[_0x3fa475(0x252)](_0x5049e7+0xc8,_0x10bfc1[_0x3fa475(0x220)]));_0x381828[_0x3fa475(0x1cc)]({'tool':_0x48936a,'error_type':_0x45f509,'error_message':_0x9c2715[_0x3fa475(0x1f6)]('\x0a')[0x0],'turn':_0x1c0eab});}}}return _0x381828;};try{const _0x2cfb06=a0_0x243bd3['resolve'](_0x1a5c3e[_0x566ef4(0x27c)][_0x566ef4(0x264)]),_0xa7a1bb=_0x1a5c3e[_0x566ef4(0x27c)][_0x566ef4(0x28e)],_0x408b4b=_0xa7a1bb===_0x566ef4(0x1f8)?{'allowNames':[_0x566ef4(0x1f8)]}:undefined,_0x12ecc3=new LocalRipgrepProvider(_0x2cfb06,undefined,_0x408b4b),_0x54f5ab=await runWarpGrep({'searchTerm':_0x1a5c3e[_0x566ef4(0x27c)]['search_string'],'repoRoot':_0x2cfb06,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x12ecc3,'search_type':_0xa7a1bb}),_0x34f489=_0x4e15d4(_0x54f5ab['messages']);_0x34f489[_0x566ef4(0x220)]>0x0&&reportMorphError({'error_message':_0x566ef4(0x284)+_0x34f489['length']+_0x566ef4(0x1f3),'error_type':_0x566ef4(0x1d8),'level':_0x566ef4(0x25b),'tool':_0x566ef4(0x1db),'context':{'repo_path':_0x1a5c3e[_0x566ef4(0x27c)][_0x566ef4(0x264)],'query':_0x1a5c3e[_0x566ef4(0x27c)][_0x566ef4(0x201)],'model':'morph-warp-grep-v2.1','termination_reason':_0x54f5ab[_0x566ef4(0x1b8)],'sub_tool_errors':_0x34f489,'timings':_0x54f5ab[_0x566ef4(0x202)],'tool_calls':_0x1ccfa9(_0x54f5ab['messages']),'messages':_0x54f5ab[_0x566ef4(0x1f1)]?.[_0x566ef4(0x296)](_0x1f90d3=>({'role':_0x1f90d3['role'],'content':_0x1f90d3['content'],..._0x1f90d3['tool_calls']?{'tool_calls':_0x1f90d3[_0x566ef4(0x21e)][_0x566ef4(0x220)]}:{},..._0x1f90d3['tool_call_id']?{'tool_call_id':_0x1f90d3[_0x566ef4(0x23e)]}:{}}))},'source':_0x566ef4(0x224)})['catch'](()=>{});let _0x38dd53='';if(_0x54f5ab[_0x566ef4(0x1b8)]===_0x566ef4(0x2ad)&&_0x54f5ab[_0x566ef4(0x2bc)]?.[_0x566ef4(0x1e0)]?.[_0x566ef4(0x209)]){const _0x204f70=_0x54f5ab[_0x566ef4(0x2bc)]['metadata'][_0x566ef4(0x209)];if(_0x204f70['length']===0x0)return _0x38dd53=_0x54f5ab[_0x566ef4(0x2bc)][_0x566ef4(0x20e)]||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x566ef4(0x1ed),'text':_0x38dd53}]};const _0x6f462d=[],_0x51fb8b=[_0x566ef4(0x262)];for(const _0x57e0ab of _0x54f5ab['messages']){if(_0x57e0ab[_0x566ef4(0x22a)]===_0x566ef4(0x1e1)&&Array[_0x566ef4(0x263)](_0x57e0ab[_0x566ef4(0x21e)]))for(const _0x11571c of _0x57e0ab[_0x566ef4(0x21e)]){try{const _0xd315d9=_0x11571c[_0x566ef4(0x2ac)]?.[_0x566ef4(0x2af)],_0xa1b1f=JSON[_0x566ef4(0x28c)](_0x11571c[_0x566ef4(0x2ac)]?.[_0x566ef4(0x2b8)]||'{}');if(_0xd315d9===_0x566ef4(0x229))_0x51fb8b[_0x566ef4(0x1cc)](_0x566ef4(0x1e7)+_0xa1b1f[_0x566ef4(0x1c9)]+_0x566ef4(0x20d)+(_0xa1b1f['path']||'.')+'`');else{if(_0xd315d9===_0x566ef4(0x1eb))_0x51fb8b['push']('-\x20Read\x20file\x20`'+_0xa1b1f[_0x566ef4(0x270)]+'`');else{if(_0xd315d9===_0x566ef4(0x267))_0x51fb8b[_0x566ef4(0x1cc)](_0x566ef4(0x1b4)+(_0xa1b1f[_0x566ef4(0x266)]||'.')+'`');else _0xd315d9===_0x566ef4(0x2a5)&&_0x51fb8b[_0x566ef4(0x1cc)](_0x566ef4(0x230)+_0xa1b1f[_0x566ef4(0x1c9)]+_0x566ef4(0x290)+(_0xa1b1f[_0x566ef4(0x270)]||'.')+'`');}}}catch{}}}_0x6f462d[_0x566ef4(0x1cc)](_0x51fb8b['join']('\x0a'));const _0x2695f3=['',_0x566ef4(0x2a6)];for(const _0x59a67f of _0x204f70){if(_0x59a67f[_0x566ef4(0x204)]==='*')_0x2695f3['push']('-\x20'+_0x59a67f[_0x566ef4(0x270)]+':*');else{if(Array[_0x566ef4(0x263)](_0x59a67f['lines'])){const _0x56176d=_0x59a67f[_0x566ef4(0x204)]['map'](([_0x59cdf0,_0x1a02e6])=>{if(_0x59cdf0===_0x1a02e6)return''+_0x59cdf0;return _0x59cdf0+'-'+_0x1a02e6;});_0x2695f3[_0x566ef4(0x1cc)]('-\x20'+_0x59a67f['path']+':'+_0x56176d['join'](','));}else _0x2695f3[_0x566ef4(0x1cc)]('-\x20'+_0x59a67f[_0x566ef4(0x270)]+':*');}}_0x2695f3[_0x566ef4(0x1cc)](''),_0x6f462d[_0x566ef4(0x1cc)](_0x2695f3[_0x566ef4(0x246)]('\x0a')),_0x6f462d['push'](_0x566ef4(0x232));const _0x36b1a7=[],_0x13a2c1=[];for(const _0x5e9c1f of _0x204f70){let _0x2fb49b=a0_0x243bd3[_0x566ef4(0x21c)](_0x1a5c3e['data'][_0x566ef4(0x264)],_0x5e9c1f[_0x566ef4(0x270)]),_0x5a0ab3=null,_0x4b8f8c=null;try{_0x5a0ab3=await a0_0x3f72bc[_0x566ef4(0x2a2)](_0x2fb49b,{'encoding':'utf-8'});}catch(_0x145990){const _0x38d583=fixPathRepetition(_0x2fb49b);if(_0x38d583)try{_0x5a0ab3=await a0_0x3f72bc['readFile'](_0x38d583,{'encoding':_0x566ef4(0x26d)}),_0x2fb49b=_0x38d583;}catch{_0x4b8f8c=_0x145990 instanceof Error?_0x145990:new Error(String(_0x145990));}else _0x4b8f8c=_0x145990 instanceof Error?_0x145990:new Error(String(_0x145990));}if(_0x5a0ab3!==null){const _0x1dec44=_0x5a0ab3['split'](/\r?\n/),_0x13d0d3=[];if(_0x5e9c1f[_0x566ef4(0x204)]==='*'||!Array[_0x566ef4(0x263)](_0x5e9c1f['lines']))for(let _0x5ecc0e=0x1;_0x5ecc0e<=_0x1dec44[_0x566ef4(0x220)];_0x5ecc0e++){const _0x5918c5=_0x1dec44[_0x5ecc0e-0x1];_0x13d0d3[_0x566ef4(0x1cc)](_0x5ecc0e+'|\x20'+_0x5918c5);}else for(const [_0x4a42f0,_0x39abf5]of _0x5e9c1f['lines']){_0x13d0d3[_0x566ef4(0x220)]>0x0&&_0x13d0d3[_0x566ef4(0x1cc)]('');for(let _0x2b1637=_0x4a42f0;_0x2b1637<=_0x39abf5&&_0x2b1637<=_0x1dec44[_0x566ef4(0x220)];_0x2b1637++){const _0x31f3c9=_0x1dec44[_0x2b1637-0x1];_0x13d0d3[_0x566ef4(0x1cc)](_0x2b1637+'|\x20'+_0x31f3c9);}}_0x13a2c1[_0x566ef4(0x1cc)]({'path':_0x5e9c1f['path'],'content':_0x13d0d3[_0x566ef4(0x246)]('\x0a')});}else _0x36b1a7[_0x566ef4(0x1cc)](_0x566ef4(0x1fa)+_0x5e9c1f[_0x566ef4(0x270)]+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x4b8f8c?.[_0x566ef4(0x22d)]||_0x566ef4(0x1bb))+'\x0a</file>');}try{const _0x173799=await compactFileContexts(_0x13a2c1,_0x1a5c3e[_0x566ef4(0x27c)]['search_string'],MORPH_API_KEY,MORPH_API_URL);for(const _0x33389a of _0x173799){_0x36b1a7[_0x566ef4(0x1cc)](_0x566ef4(0x1fa)+_0x33389a[_0x566ef4(0x270)]+_0x566ef4(0x24a)+_0x33389a['content']+'\x0a</file>');}}catch(_0x132e7a){console['error'](_0x566ef4(0x23d),_0x132e7a);for(const _0x2a0089 of _0x13a2c1){_0x36b1a7['push'](_0x566ef4(0x1fa)+_0x2a0089[_0x566ef4(0x270)]+_0x566ef4(0x24a)+_0x2a0089[_0x566ef4(0x225)]+_0x566ef4(0x22b));}}_0x6f462d['push'](_0x36b1a7[_0x566ef4(0x246)]('\x0a\x0a')),_0x38dd53=_0x6f462d[_0x566ef4(0x246)]('\x0a');const _0x543fa0=_0x54f5ab['errors']?.[_0x566ef4(0x21d)](_0x5cbdd3=>_0x5cbdd3['message']?.['startsWith']('File\x20read\x20error:'))||[];if(_0x543fa0['length']>0x0){const _0x22d466=_0x543fa0['map'](_0x5ef0e0=>_0x5ef0e0[_0x566ef4(0x22d)])['join'](';\x20');reportMorphError({'error_message':_0x22d466,'error_type':'FileReadError','context':{'tool':'codebase_search','repo_path':_0x1a5c3e['data'][_0x566ef4(0x264)],'query':_0x1a5c3e[_0x566ef4(0x27c)]['search_string'],'model':'morph-warp-grep-v2.1','termination_reason':_0x566ef4(0x2bd),'error_count':_0x543fa0[_0x566ef4(0x220)],'is_timeout':![],'timings':_0x54f5ab[_0x566ef4(0x202)],'files_attempted':_0x204f70['map'](_0x4e02f7=>({'path':_0x4e02f7['path'],'lines':_0x4e02f7[_0x566ef4(0x204)]})),'tool_calls':_0x1ccfa9(_0x54f5ab['messages']),'messages':_0x54f5ab[_0x566ef4(0x1f1)]?.[_0x566ef4(0x296)](_0x56d836=>({'role':_0x56d836[_0x566ef4(0x22a)],'content':_0x56d836[_0x566ef4(0x225)],..._0x56d836[_0x566ef4(0x21e)]?{'tool_calls':_0x56d836[_0x566ef4(0x21e)][_0x566ef4(0x220)]}:{},..._0x56d836[_0x566ef4(0x23e)]?{'tool_call_id':_0x56d836[_0x566ef4(0x23e)]}:{}})),'request_content':{'query':_0x1a5c3e[_0x566ef4(0x27c)][_0x566ef4(0x201)],'repo_path':_0x1a5c3e[_0x566ef4(0x27c)][_0x566ef4(0x264)],'repoRoot':a0_0x243bd3[_0x566ef4(0x21c)](_0x1a5c3e[_0x566ef4(0x27c)][_0x566ef4(0x264)]),'model':_0x566ef4(0x25f)}},'source':'mcp-filesystem'})['catch'](()=>{});}}else{if(_0x54f5ab[_0x566ef4(0x1b8)]===_0x566ef4(0x2a3)&&_0x54f5ab[_0x566ef4(0x1df)][_0x566ef4(0x220)]>0x0){const _0x4635dd=_0x54f5ab[_0x566ef4(0x1df)][_0x566ef4(0x296)](_0x307fff=>_0x307fff[_0x566ef4(0x22d)])[_0x566ef4(0x246)](';\x20');_0x38dd53=_0x566ef4(0x214)+_0x4635dd;const _0x1fade0=_0x4635dd['toLowerCase']()['includes'](_0x566ef4(0x261))||_0x4635dd['toLowerCase']()[_0x566ef4(0x1d1)](_0x566ef4(0x250))||_0x4635dd['toLowerCase']()[_0x566ef4(0x1d1)](_0x566ef4(0x1cb)),_0x1b3347=_0x54f5ab[_0x566ef4(0x2bc)]?.[_0x566ef4(0x1e0)]?.[_0x566ef4(0x209)],_0x43adbd=_0x54f5ab[_0x566ef4(0x1df)][0x0];reportMorphError({'error_message':_0x4635dd,'error_type':_0x1fade0?_0x566ef4(0x221):_0x43adbd?.['constructor']?.[_0x566ef4(0x2af)]||_0x566ef4(0x1c2),'context':{'tool':'codebase_search','repo_path':_0x1a5c3e['data'][_0x566ef4(0x264)],'query':_0x1a5c3e[_0x566ef4(0x27c)][_0x566ef4(0x201)],'model':_0x566ef4(0x25f),'termination_reason':_0x54f5ab[_0x566ef4(0x1b8)],'error_count':_0x54f5ab['errors'][_0x566ef4(0x220)],'is_timeout':_0x1fade0,'timings':_0x54f5ab[_0x566ef4(0x202)],'files_attempted':_0x1b3347?.[_0x566ef4(0x296)](_0x19a110=>({'path':_0x19a110[_0x566ef4(0x270)],'lines':_0x19a110['lines']})),'tool_calls':_0x1ccfa9(_0x54f5ab[_0x566ef4(0x1f1)]),'messages':_0x54f5ab[_0x566ef4(0x1f1)]?.[_0x566ef4(0x296)](_0x59654e=>({'role':_0x59654e['role'],'content':_0x59654e[_0x566ef4(0x225)],..._0x59654e[_0x566ef4(0x21e)]?{'tool_calls':_0x59654e[_0x566ef4(0x21e)][_0x566ef4(0x220)]}:{},..._0x59654e[_0x566ef4(0x23e)]?{'tool_call_id':_0x59654e[_0x566ef4(0x23e)]}:{}})),'request_content':{'query':_0x1a5c3e[_0x566ef4(0x27c)][_0x566ef4(0x201)],'repo_path':_0x1a5c3e[_0x566ef4(0x27c)]['repo_path'],'repoRoot':a0_0x243bd3[_0x566ef4(0x21c)](_0x1a5c3e[_0x566ef4(0x27c)][_0x566ef4(0x264)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x43adbd?.[_0x566ef4(0x269)]||undefined,'source':_0x566ef4(0x224)})[_0x566ef4(0x275)](()=>{});}else _0x38dd53=_0x566ef4(0x255);}return{'content':[{'type':'text','text':_0x38dd53}]};}catch(_0x2663a5){const _0x2baacf=_0x2663a5 instanceof Error?_0x2663a5[_0x566ef4(0x22d)]:String(_0x2663a5),_0x4f013e=_0x2baacf['toLowerCase']()[_0x566ef4(0x1d1)](_0x566ef4(0x261))||_0x2baacf['toLowerCase']()[_0x566ef4(0x1d1)](_0x566ef4(0x250))||_0x2baacf[_0x566ef4(0x2a0)]()[_0x566ef4(0x1d1)](_0x566ef4(0x1cb))||_0x2663a5 instanceof Error&&_0x2663a5[_0x566ef4(0x2af)]===_0x566ef4(0x221);return reportMorphError({'error_message':_0x2baacf,'error_type':_0x4f013e?_0x566ef4(0x221):_0x2663a5 instanceof Error?_0x2663a5['constructor']['name']:_0x566ef4(0x222),'context':{'tool':_0x566ef4(0x1db),'repo_path':_0x1a5c3e['data'][_0x566ef4(0x264)],'query':_0x1a5c3e['data'][_0x566ef4(0x201)],'model':'morph-warp-grep-v2.1','is_timeout':_0x4f013e,'exception_phase':_0x566ef4(0x254),'request_content':{'query':_0x1a5c3e[_0x566ef4(0x27c)]['search_string'],'repo_path':_0x1a5c3e[_0x566ef4(0x27c)][_0x566ef4(0x264)],'repoRoot':a0_0x243bd3[_0x566ef4(0x21c)](_0x1a5c3e[_0x566ef4(0x27c)][_0x566ef4(0x264)]),'model':_0x566ef4(0x25f)}},'stack_trace':_0x2663a5 instanceof Error?_0x2663a5[_0x566ef4(0x269)]:undefined,'source':_0x566ef4(0x224)})[_0x566ef4(0x275)](()=>{}),{'content':[{'type':_0x566ef4(0x1ed),'text':'Error\x20running\x20fast\x20context\x20search:\x20'+_0x2baacf}],'isError':![]};}}case'github_codebase_search':{const _0x5c57f9=WarpGrepGitHubArgsSchema['safeParse'](_0x59a674);if(!_0x5c57f9['success'])return{'content':[{'type':_0x566ef4(0x1ed),'text':_0x566ef4(0x2a4)+_0x5c57f9[_0x566ef4(0x1d9)]}],'isError':!![]};const _0x233963=_0x5c57f9[_0x566ef4(0x27c)][_0x566ef4(0x1da)]||_0x5c57f9[_0x566ef4(0x27c)][_0x566ef4(0x29c)];if(!_0x233963)return{'content':[{'type':_0x566ef4(0x1ed),'text':_0x566ef4(0x219)}],'isError':!![]};const _0xb5cbb4=MORPH_API_KEY;if(!_0xb5cbb4)throw new Error(_0x566ef4(0x298));const _0x43e1f6=Date[_0x566ef4(0x2b6)]();logMcpStderr('[github_codebase_search]\x20Searching\x20'+_0x233963+_0x566ef4(0x29e)+_0x5c57f9[_0x566ef4(0x27c)][_0x566ef4(0x201)]+'\x22');try{const _0x5be854=new WarpGrepClient({'morphApiKey':_0xb5cbb4,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x3c6dbd=await _0x5be854[_0x566ef4(0x2b7)]({'searchTerm':_0x5c57f9['data']['search_string'],'github':_0x233963,'branch':_0x5c57f9[_0x566ef4(0x27c)]['branch']}),_0x564f52=Date[_0x566ef4(0x2b6)]()-_0x43e1f6;logMcpStderr('[github_codebase_search]\x20Done\x20in\x20'+_0x564f52+_0x566ef4(0x28b)+_0x3c6dbd[_0x566ef4(0x1c6)]);const _0x535b78=formatResult(_0x3c6dbd);return{'content':[{'type':_0x566ef4(0x1ed),'text':_0x535b78}]};}catch(_0x5c483a){const _0x2efb24=Date['now']()-_0x43e1f6,_0x2631b0=_0x5c483a instanceof Error?_0x5c483a[_0x566ef4(0x22d)]:String(_0x5c483a);return logMcpStderr(_0x566ef4(0x1be)+_0x2efb24+_0x566ef4(0x1b7),_0x2631b0),reportMorphError({'error_message':_0x2631b0,'error_type':_0x5c483a instanceof Error?_0x5c483a[_0x566ef4(0x1bc)][_0x566ef4(0x2af)]:_0x566ef4(0x222),'context':{'tool':_0x566ef4(0x231),'github_url':_0x233963,'search_string':_0x5c57f9[_0x566ef4(0x27c)]['search_string'],'branch':_0x5c57f9['data'][_0x566ef4(0x249)]},'stack_trace':_0x5c483a instanceof Error?_0x5c483a[_0x566ef4(0x269)]:undefined,'source':_0x566ef4(0x224),'tool':_0x566ef4(0x231),'latency_ms':_0x2efb24})[_0x566ef4(0x275)](()=>{}),{'content':[{'type':_0x566ef4(0x1ed),'text':_0x566ef4(0x1bd)+_0x2631b0}],'isError':![]};}}default:throw new Error(_0x566ef4(0x265)+_0x512c1b);}}catch(_0x3b354f){const _0x4be0a4=_0x3b354f instanceof Error?_0x3b354f[_0x566ef4(0x22d)]:String(_0x3b354f);return reportMorphError({'error_message':_0x4be0a4,'error_type':_0x3b354f instanceof Error?_0x3b354f[_0x566ef4(0x1bc)][_0x566ef4(0x2af)]:_0x566ef4(0x222),'context':{'tool':_0x512c1b,'arguments':_0x59a674?JSON[_0x566ef4(0x233)](_0x59a674)[_0x566ef4(0x234)](0x0,0x1f4):undefined,'mcp_server_version':_0x566ef4(0x2a9)},'stack_trace':_0x3b354f instanceof Error?_0x3b354f[_0x566ef4(0x269)]:undefined,'source':_0x566ef4(0x224)})[_0x566ef4(0x275)](()=>{}),{'content':[{'type':_0x566ef4(0x1ed),'text':_0x566ef4(0x214)+_0x4be0a4}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x259bdd){const _0x4ac422=a0_0x3a7f66,_0x496074=await getValidRootDirectories(_0x259bdd);if(_0x496074[_0x4ac422(0x220)]>0x0)allowedDirectories=[..._0x496074],logMcpStderr('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0x496074[_0x4ac422(0x220)]+_0x4ac422(0x200));else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x2ed47a=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x2ed47a&&(allowedDirectories=[_0x2ed47a],logMcpStderr(_0x4ac422(0x276)+_0x2ed47a));}catch(_0x2ba65f){logMcpStderr(_0x4ac422(0x248)+_0x2ba65f);}}}function a0_0x37e3(){const _0x2deb0f=['requiresApiKey','Failed\x20to\x20request\x20roots\x20from\x20client:','ENOENT','morph-warp-grep-v2.1','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','timeout','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','isArray','repo_path','Unknown\x20tool:\x20','command','list_directory','size','stack','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','version','\x20chars)','utf-8','realpath','--version','path','glob\x20\x27','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','enum','catch','Fallback:\x20Using\x20workspace\x20root\x20','number','1686kRuHHD','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','Warning:\x20','application/json','data','sep','ToolException','BinaryFile','roots','morph-mcp','setNotificationHandler','.\x20Changes:\x20','WarpGrep\x20sub-tool\x20errors:\x20','instruction','Server\x20cannot\x20operate:\x20No\x20allowed\x20directories\x20available.\x20Server\x20was\x20started\x20without\x20command-line\x20directories\x20and\x20client\x20either\x20does\x20not\x20support\x20MCP\x20roots\x20protocol\x20or\x20provided\x20empty\x20roots.\x20Please\x20either:\x201)\x20Start\x20server\x20with\x20directory\x20arguments,\x202)\x20Use\x20a\x20client\x20that\x20supports\x20MCP\x20roots\x20protocol\x20and\x20provides\x20valid\x20root\x20directories,\x20or\x203)\x20Enable\x20workspace\x20mode\x20with\x20ENABLE_WORKSPACE_MODE=true.','normalize','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','ms.\x20Success:\x20','parse','\x20(new\x20file)','search_type','added\x20','`\x20in\x20`','grep','Max\x20results\x20to\x20return','Cargo.toml','package.json','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','map','source','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','RipgrepNotAvailable','DISABLED_TOOLS','https://morphllm.com/api/error-report','owner_repo','morph-','\x20for:\x20\x22','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','toLowerCase','startsWith','readFile','terminated','Invalid\x20arguments:\x20','glob','Relevant\x20context\x20found:','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','instructions','0.2.0','getClientCapabilities','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','function','completed','code','name','.git','description','object','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.','has','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','now','searchGitHub','arguments','--help','MORPH_API_KEY','linesRemoved','finish','completed_with_file_errors','--api-key=','Repository\x20identifier','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','exit','-\x20Listed\x20directory\x20`','Disabled\x20tools:\x20','morph-v3-fast','ms:','terminationReason','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','trim','Unknown\x20error','constructor','GitHub\x20search\x20failed:\x20','[github_codebase_search]\x20Failed\x20in\x20','stat','dirname','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','WarpGrepError','dryRun','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','15BxUlBd','success','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','ReadError','pattern','inputSchema','etimedout','push','\x20-\x20','Morph\x20Edit\x20Preview','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','Workspace\x20mode\x20enabled:\x20Using\x20','includes','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','Error\x20accessing\x20directory\x20','optional','sk-','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','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','SubToolError','error','github_url','codebase_search','edit_file','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','errors','metadata','assistant','oninitialized','all','1255968stbTHA','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','-\x20Grepped\x20\x27','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','MORPH_API_URL','\x20is\x20not\x20a\x20directory','read','context','text','api-key','@morphllm/morphmcp\x20','--api-key','messages','composer.json','\x20error(s)','indexOf','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','split','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','node_modules','Specific\x20commit\x20hash\x20to\x20search','<file\x20path=\x22','539444JVhSSf','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','\x0a...\x20(truncated,\x20total:\x20','Bearer\x20','1325CdOhDk','\x20valid\x20directories','search_string','timings','argv','lines','Benefits:\x0a','ENABLE_WORKSPACE_MODE','slice','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','files','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','read\x20','linesAdded','\x27\x20in\x20`','payload','go.mod','setRequestHandler','default','\x22.\x20Known\x20tools:\x20','Tool\x20','Error:\x20','isDirectory','tsconfig.json','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','every','Created\x20File','resolve','filter','tool_calls','.\x20Path:\x20','length','TimeoutError','UnknownError','connect','mcp-filesystem','content','WORKSPACE_ROOT','post','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.','grep_search','role','\x0a</file>','params','message','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','Morph\x20Edit\x20','-\x20Glob\x20search\x20`','github_codebase_search','Here\x20is\x20the\x20content\x20of\x20files:\x0a','stringify','substring','listRoots','7898288RSGzRt','code_edit','unknown\x20error','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','log','MORPH_WARP_GREP_TIMEOUT','basename','[codebase_search]\x20compaction\x20failed','tool_call_id','some','PathError','user','cwd','3437928LpwaLU','linesModified','95256vMHHVL','join','describe','Warning:\x20Workspace\x20fallback\x20failed:\x20','branch','\x22>\x0a','\x20as\x20allowed\x20directory','match','unknown','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','completionId','timed\x20out','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','min','string','runWarpGrep_call','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','env','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','access','5848976kLCVdT','RipgrepError','warn'];a0_0x37e3=function(){return _0x2deb0f;};return a0_0x37e3();}server[a0_0x3a7f66(0x282)](RootsListChangedNotificationSchema,async()=>{const _0x2857d9=a0_0x3a7f66;try{const _0x515968=await server[_0x2857d9(0x235)]();_0x515968&&'roots'in _0x515968&&await updateAllowedDirectoriesFromRoots(_0x515968[_0x2857d9(0x280)]);}catch(_0x47fd48){logMcpStderr(_0x2857d9(0x25d),_0x47fd48 instanceof Error?_0x47fd48['message']:String(_0x47fd48));}}),server[a0_0x3a7f66(0x1e2)]=async()=>{const _0x42a0dc=a0_0x3a7f66,_0x2b65ba=server[_0x42a0dc(0x2aa)]();if(_0x2b65ba?.[_0x42a0dc(0x280)])try{const _0x3c2dc8=await server['listRoots']();_0x3c2dc8&&_0x42a0dc(0x280)in _0x3c2dc8?await updateAllowedDirectoriesFromRoots(_0x3c2dc8['roots']):logMcpStderr(_0x42a0dc(0x239));}catch(_0x223bcb){logMcpStderr(_0x42a0dc(0x2b5),_0x223bcb instanceof Error?_0x223bcb[_0x42a0dc(0x22d)]:String(_0x223bcb));}else{if(allowedDirectories[_0x42a0dc(0x220)]>0x0)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:',allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x42a0dc(0x24e));else throw new Error(_0x42a0dc(0x286));}}};async function runServer(){const _0x3ac46e=a0_0x3a7f66,_0x105778=new StdioServerTransport();await server[_0x3ac46e(0x223)](_0x105778),logMcpStderr(_0x3ac46e(0x29f)),allowedDirectories[_0x3ac46e(0x220)]===0x0&&logMcpStderr(_0x3ac46e(0x260));}runServer()['catch'](_0x343be9=>{const _0x4a67b6=a0_0x3a7f66;logMcpStderr('Fatal\x20error\x20running\x20server:',_0x343be9),process[_0x4a67b6(0x1b3)](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
var a1_0x48acc7=a1_0x3aab;(function(_0x4c4778,_0x8083a0){var _0x464b1d=a1_0x3aab,_0x48b829=_0x4c4778();while(!![]){try{var _0x26562a=-parseInt(_0x464b1d(0xce))/0x1*(parseInt(_0x464b1d(0xcf))/0x2)+parseInt(_0x464b1d(0xd2))/0x3*(parseInt(_0x464b1d(0xd9))/0x4)+parseInt(_0x464b1d(0xd7))/0x5+parseInt(_0x464b1d(0xd6))/0x6*(parseInt(_0x464b1d(0xcd))/0x7)+-parseInt(_0x464b1d(0xc9))/0x8+-parseInt(_0x464b1d(0xd5))/0x9+parseInt(_0x464b1d(0xd4))/0xa;if(_0x26562a===_0x8083a0)break;else _0x48b829['push'](_0x48b829['shift']());}catch(_0x41716c){_0x48b829['push'](_0x48b829['shift']());}}}(a1_0x4eae,0x31fe7));import a1_0x4ed687 from'os';export function getOperatingSystemType(_0x4c6684=a1_0x4ed687['platform']()){var _0x33b35d=a1_0x3aab;switch(_0x4c6684){case'darwin':return _0x33b35d(0xc8);case _0x33b35d(0xd1):return _0x33b35d(0xd3);case'linux':return _0x33b35d(0xd8);default:return _0x33b35d(0xd0);}}function a1_0x3aab(_0x65c91d,_0x2410e1){_0x65c91d=_0x65c91d-0xc8;var _0x4eae7c=a1_0x4eae();var _0x3aab54=_0x4eae7c[_0x65c91d];return _0x3aab54;}export function formatMcpLogMessage(_0x12f9ee,_0x4a2b63=a1_0x4ed687[a1_0x48acc7(0xcc)]()){var _0xc2adce=a1_0x48acc7;return _0xc2adce(0xcb)+getOperatingSystemType(_0x4a2b63)+']\x20'+_0x12f9ee;}export function logMcpStderr(_0x2c7bb2,..._0x24b6bf){var _0x43aa86=a1_0x48acc7;console[_0x43aa86(0xca)](formatMcpLogMessage(_0x2c7bb2),..._0x24b6bf);}function a1_0x4eae(){var _0x40956b=['1993728wTEKXO','error','[os=','platform','7jOuKUo','39079QLiBXD','20JmoIjW','Unknown','win32','264765fEMacG','Windows','6316860xJvnRk','1818630hxLWhN','84306gkXPAQ','1564295bSxSPM','Linux','4JgBLzt','macOS'];a1_0x4eae=function(){return _0x40956b;};return a1_0x4eae();}
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a2_0x1092(){const _0x4fdd3e=['3743028KTLRma','355160TlExeK','944740xjDPBg','homedir','replace','1532629VcABNw','3YVuxzV','charAt','slice','7249952xQsFGG','substring','match','toUpperCase','join','1234020jvlkIS','startsWith','658311YGCCEy','test'];a2_0x1092=function(){return _0x4fdd3e;};return a2_0x1092();}(function(_0x4a5eda,_0x323b48){const _0x3aa921=a2_0x7f61,_0x5a65be=_0x4a5eda();while(!![]){try{const _0x1869cd=-parseInt(_0x3aa921(0x1c0))/0x1+-parseInt(_0x3aa921(0x1c3))/0x2*(parseInt(_0x3aa921(0x1c8))/0x3)+-parseInt(_0x3aa921(0x1c4))/0x4+-parseInt(_0x3aa921(0x1be))/0x5+parseInt(_0x3aa921(0x1c2))/0x6+parseInt(_0x3aa921(0x1c7))/0x7+parseInt(_0x3aa921(0x1b9))/0x8;if(_0x1869cd===_0x323b48)break;else _0x5a65be['push'](_0x5a65be['shift']());}catch(_0x48aef3){_0x5a65be['push'](_0x5a65be['shift']());}}}(a2_0x1092,0x69045));import a2_0x2257d2 from'path';import a2_0x141e83 from'os';export function convertToWindowsPath(_0x8d09f){const _0x2d235a=a2_0x7f61;if(_0x8d09f[_0x2d235a(0x1bf)]('/mnt/')){const _0x3fd2dc=_0x8d09f[_0x2d235a(0x1c9)](0x5)['toUpperCase'](),_0x29db6a=_0x8d09f['slice'](0x6)[_0x2d235a(0x1c6)](/\//g,'\x5c');return _0x3fd2dc+':'+_0x29db6a;}if(_0x8d09f['match'](/^\/[a-zA-Z]\//)){const _0x532ce1=_0x8d09f['charAt'](0x1)['toUpperCase'](),_0x139396=_0x8d09f['slice'](0x2)[_0x2d235a(0x1c6)](/\//g,'\x5c');return _0x532ce1+':'+_0x139396;}if(_0x8d09f['match'](/^[a-zA-Z]:/))return _0x8d09f[_0x2d235a(0x1c6)](/\//g,'\x5c');return _0x8d09f;}function a2_0x7f61(_0x2138d3,_0x36fefe){_0x2138d3=_0x2138d3-0x1b8;const _0x1092e9=a2_0x1092();let _0x7f61bf=_0x1092e9[_0x2138d3];return _0x7f61bf;}export function normalizePath(_0x1ea0a6){const _0x43c250=a2_0x7f61;_0x1ea0a6=_0x1ea0a6['trim']()[_0x43c250(0x1c6)](/^["']|["']$/g,'');const _0x88abbf=_0x1ea0a6[_0x43c250(0x1bf)]('/')&&!_0x1ea0a6[_0x43c250(0x1bb)](/^\/mnt\/[a-z]\//i)&&!_0x1ea0a6['match'](/^\/[a-zA-Z]\//);if(_0x88abbf)return _0x1ea0a6[_0x43c250(0x1c6)](/\/+/g,'/')['replace'](/\/+$/,'');_0x1ea0a6=convertToWindowsPath(_0x1ea0a6);if(_0x1ea0a6['startsWith']('\x5c\x5c')){let _0x10146f=_0x1ea0a6;_0x10146f=_0x10146f['replace'](/^\\{2,}/,'\x5c\x5c');const _0x175786=_0x10146f[_0x43c250(0x1ba)](0x2)['replace'](/\\\\/g,'\x5c');_0x1ea0a6='\x5c\x5c'+_0x175786;}else _0x1ea0a6=_0x1ea0a6[_0x43c250(0x1c6)](/\\\\/g,'\x5c');let _0x58a8f0=a2_0x2257d2['normalize'](_0x1ea0a6);_0x1ea0a6['startsWith']('\x5c\x5c')&&!_0x58a8f0[_0x43c250(0x1bf)]('\x5c\x5c')&&(_0x58a8f0='\x5c'+_0x58a8f0);if(_0x58a8f0[_0x43c250(0x1bb)](/^[a-zA-Z]:/)){let _0x4b328d=_0x58a8f0[_0x43c250(0x1c6)](/\//g,'\x5c');return/^[a-z]:/[_0x43c250(0x1c1)](_0x4b328d)&&(_0x4b328d=_0x4b328d[_0x43c250(0x1c9)](0x0)[_0x43c250(0x1bc)]()+_0x4b328d[_0x43c250(0x1b8)](0x1)),_0x4b328d;}return _0x58a8f0['replace'](/\//g,'\x5c');}export function expandHome(_0x2ee1a4){const _0x495716=a2_0x7f61;if(_0x2ee1a4[_0x495716(0x1bf)]('~/')||_0x2ee1a4==='~')return a2_0x2257d2[_0x495716(0x1bd)](a2_0x141e83[_0x495716(0x1c5)](),_0x2ee1a4[_0x495716(0x1b8)](0x1));return _0x2ee1a4;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a3_0x13a4(_0x224e07,_0x325094){_0x224e07=_0x224e07-0x124;const _0x22deb7=a3_0x22de();let _0x13a4e2=_0x22deb7[_0x224e07];return _0x13a4e2;}(function(_0xc0befd,_0x290704){const _0x585ada=a3_0x13a4,_0x51b5ca=_0xc0befd();while(!![]){try{const _0x3dac84=-parseInt(_0x585ada(0x129))/0x1+-parseInt(_0x585ada(0x131))/0x2+-parseInt(_0x585ada(0x12e))/0x3*(-parseInt(_0x585ada(0x12c))/0x4)+-parseInt(_0x585ada(0x137))/0x5*(parseInt(_0x585ada(0x128))/0x6)+-parseInt(_0x585ada(0x130))/0x7*(-parseInt(_0x585ada(0x127))/0x8)+-parseInt(_0x585ada(0x125))/0x9*(parseInt(_0x585ada(0x133))/0xa)+parseInt(_0x585ada(0x124))/0xb*(parseInt(_0x585ada(0x135))/0xc);if(_0x3dac84===_0x290704)break;else _0x51b5ca['push'](_0x51b5ca['shift']());}catch(_0x335d41){_0x51b5ca['push'](_0x51b5ca['shift']());}}}(a3_0x22de,0x3ce34));import a3_0x56e831 from'path';export function isPathWithinAllowedDirectories(_0x33202b,_0x448a45){const _0x293d23=a3_0x13a4;if(typeof _0x33202b!=='string'||!Array[_0x293d23(0x138)](_0x448a45))return![];if(!_0x33202b||_0x448a45[_0x293d23(0x136)]===0x0)return![];if(_0x33202b[_0x293d23(0x12d)]('\x00'))return![];let _0x2c4cba;try{_0x2c4cba=a3_0x56e831[_0x293d23(0x132)](a3_0x56e831[_0x293d23(0x134)](_0x33202b));}catch{return![];}if(!a3_0x56e831[_0x293d23(0x12f)](_0x2c4cba))throw new Error('Path\x20must\x20be\x20absolute\x20after\x20normalization');return _0x448a45['some'](_0xedd7fc=>{const _0x1089b8=_0x293d23;if(typeof _0xedd7fc!==_0x1089b8(0x139)||!_0xedd7fc)return![];if(_0xedd7fc[_0x1089b8(0x12d)]('\x00'))return![];let _0x13641e;try{_0x13641e=a3_0x56e831[_0x1089b8(0x132)](a3_0x56e831['normalize'](_0xedd7fc));}catch{return![];}if(!a3_0x56e831[_0x1089b8(0x12f)](_0x13641e))throw new Error(_0x1089b8(0x12a));if(_0x2c4cba===_0x13641e)return!![];if(_0x13641e===a3_0x56e831['sep'])return _0x2c4cba[_0x1089b8(0x12b)](a3_0x56e831[_0x1089b8(0x126)]);return _0x2c4cba[_0x1089b8(0x12b)](_0x13641e+a3_0x56e831[_0x1089b8(0x126)]);});}function a3_0x22de(){const _0x278bdc=['startsWith','189132EtCIkP','includes','21RXdXZZ','isAbsolute','946967rKcXaP','533014kmzkxA','resolve','258150dLaDyv','normalize','228eRjUuZ','length','1413285TJydbg','isArray','string','681857YZLXQb','171QFuAHu','sep','8qKTyYP','6RobNjL','354970cvglrF','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization'];a3_0x22de=function(){return _0x278bdc;};return a3_0x22de();}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a4_0xcd96(){const _0x30d59f=['startsWith','file://','222155FmYCYK','Skipping\x20invalid\x20directory:\x20','11oNRcrU','2KYXuBK','isDirectory','4eXQTWf','join','104687eFVlfk','155859qFotAJ','584072nTtxWg','message','resolve','9TvnasC','187453pEEyGR','slice','Skipping\x20','invalid\x20path\x20or\x20inaccessible','6MKgHbZ','realpath','3133836NLjaJP','2212480DRMVYj','uri'];a4_0xcd96=function(){return _0x30d59f;};return a4_0xcd96();}function a4_0x261b(_0x3169ee,_0x3c407c){_0x3169ee=_0x3169ee-0x1f3;const _0xcd96c0=a4_0xcd96();let _0x261b91=_0xcd96c0[_0x3169ee];return _0x261b91;}(function(_0xad10,_0x105152){const _0x2dd492=a4_0x261b,_0x2dc242=_0xad10();while(!![]){try{const _0x45f513=parseInt(_0x2dd492(0x1fc))/0x1+-parseInt(_0x2dd492(0x1f8))/0x2*(-parseInt(_0x2dd492(0x1fd))/0x3)+-parseInt(_0x2dd492(0x1fa))/0x4*(-parseInt(_0x2dd492(0x1f5))/0x5)+-parseInt(_0x2dd492(0x206))/0x6*(-parseInt(_0x2dd492(0x202))/0x7)+parseInt(_0x2dd492(0x1fe))/0x8*(-parseInt(_0x2dd492(0x201))/0x9)+parseInt(_0x2dd492(0x209))/0xa*(parseInt(_0x2dd492(0x1f7))/0xb)+-parseInt(_0x2dd492(0x208))/0xc;if(_0x45f513===_0x105152)break;else _0x2dc242['push'](_0x2dc242['shift']());}catch(_0x2fd014){_0x2dc242['push'](_0x2dc242['shift']());}}}(a4_0xcd96,0x1c0f8));import{promises as a4_0x5b1aaf}from'fs';import a4_0x672fc from'path';import a4_0x3a81e0 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x11fe00){const _0x25fef7=a4_0x261b;try{const _0x4ce474=_0x11fe00[_0x25fef7(0x1f3)](_0x25fef7(0x1f4))?_0x11fe00[_0x25fef7(0x203)](0x7):_0x11fe00,_0x1b3b0b=_0x4ce474[_0x25fef7(0x1f3)]('~/')||_0x4ce474==='~'?a4_0x672fc[_0x25fef7(0x1fb)](a4_0x3a81e0['homedir'](),_0x4ce474['slice'](0x1)):_0x4ce474,_0x1697ec=a4_0x672fc[_0x25fef7(0x200)](_0x1b3b0b),_0x49fa3b=await a4_0x5b1aaf[_0x25fef7(0x207)](_0x1697ec);return normalizePath(_0x49fa3b);}catch{return null;}}function formatDirectoryError(_0x1377a7,_0x2d27c7,_0x2d8a43){const _0xe4b3e=a4_0x261b;if(_0x2d8a43)return _0xe4b3e(0x204)+_0x2d8a43+':\x20'+_0x1377a7;const _0x510a04=_0x2d27c7 instanceof Error?_0x2d27c7[_0xe4b3e(0x1ff)]:String(_0x2d27c7);return _0xe4b3e(0x1f6)+_0x1377a7+'\x20due\x20to\x20error:\x20'+_0x510a04;}export async function getValidRootDirectories(_0x708a98){const _0x14b8d0=a4_0x261b,_0x35ebdb=[];for(const _0x15979b of _0x708a98){const _0x2944b8=await parseRootUri(_0x15979b[_0x14b8d0(0x20a)]);if(!_0x2944b8){logMcpStderr(formatDirectoryError(_0x15979b['uri'],undefined,_0x14b8d0(0x205)));continue;}try{const _0xeac371=await a4_0x5b1aaf['stat'](_0x2944b8);_0xeac371[_0x14b8d0(0x1f9)]()?_0x35ebdb['push'](_0x2944b8):logMcpStderr(formatDirectoryError(_0x2944b8,undefined,'non-directory\x20root'));}catch(_0x37639a){logMcpStderr(formatDirectoryError(_0x2944b8,_0x37639a));}}return _0x35ebdb;}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.150",
|
|
4
4
|
"description": "Fast & accurate MCP server with AI-powered file editing and intelligent code search. Prevents context pollution and saves time for a better user experience.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Morph (https://morphllm.com)",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@google/generative-ai": "^0.21.0",
|
|
37
37
|
"@modelcontextprotocol/sdk": "^1.12.3",
|
|
38
|
-
"@morphllm/morphsdk": "0.2.
|
|
38
|
+
"@morphllm/morphsdk": "0.2.154",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|