@morphllm/morphmcp 0.8.127 → 0.8.128
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_0x444bf9=a0_0x2d77;(function(_0x34532a,_0x1d153b){const _0x1a4345=a0_0x2d77,_0x8c8afd=_0x34532a();while(!![]){try{const _0x3c6cce=-parseInt(_0x1a4345(0x1c4))/0x1+-parseInt(_0x1a4345(0x1f1))/0x2*(parseInt(_0x1a4345(0x1bf))/0x3)+parseInt(_0x1a4345(0x1f8))/0x4*(-parseInt(_0x1a4345(0x1cf))/0x5)+-parseInt(_0x1a4345(0x1e9))/0x6*(parseInt(_0x1a4345(0x229))/0x7)+parseInt(_0x1a4345(0x1fa))/0x8*(-parseInt(_0x1a4345(0x269))/0x9)+-parseInt(_0x1a4345(0x251))/0xa*(-parseInt(_0x1a4345(0x1db))/0xb)+parseInt(_0x1a4345(0x245))/0xc;if(_0x3c6cce===_0x1d153b)break;else _0x8c8afd['push'](_0x8c8afd['shift']());}catch(_0x49815e){_0x8c8afd['push'](_0x8c8afd['shift']());}}}(a0_0x20ce,0xafa40));import{Server}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import{CallToolRequestSchema,ListToolsRequestSchema,RootsListChangedNotificationSchema}from'@modelcontextprotocol/sdk/types.js';import a0_0x1c8efe from'fs/promises';import a0_0x35ce7e from'path';import a0_0x5cb303 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_0x24b08d from'axios';function fixPathRepetition(_0x7b1a2a){const _0x2b3bf4=a0_0x2d77,_0x572107=_0x7b1a2a[_0x2b3bf4(0x19b)](a0_0x35ce7e['sep'])['filter'](Boolean);if(_0x572107['length']<0x2)return null;for(let _0xdd98=Math['floor'](_0x572107['length']/0x2);_0xdd98>=0x1;_0xdd98--){for(let _0x13e245=0x0;_0x13e245<=_0x572107[_0x2b3bf4(0x193)]-0x2*_0xdd98;_0x13e245++){const _0x29e8de=_0x572107[_0x2b3bf4(0x294)](_0x13e245,_0x13e245+_0xdd98),_0x44a2bf=_0x572107[_0x2b3bf4(0x294)](_0x13e245+_0xdd98,_0x13e245+0x2*_0xdd98);if(_0x29e8de[_0x2b3bf4(0x21a)]((_0xbfda40,_0x5792fa)=>_0xbfda40===_0x44a2bf[_0x5792fa])){const _0x20331b=[..._0x572107[_0x2b3bf4(0x294)](0x0,_0x13e245),..._0x572107[_0x2b3bf4(0x294)](_0x13e245+_0xdd98)];return a0_0x35ce7e[_0x2b3bf4(0x246)]+_0x20331b[_0x2b3bf4(0x1c1)](a0_0x35ce7e[_0x2b3bf4(0x246)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x59a613=a0_0x2d77;try{const _0x16eb84=require(_0x59a613(0x278));return _0x16eb84[_0x59a613(0x221)]??_0x59a613(0x212);}catch(_0x2aaf69){return logMcpStderr(_0x59a613(0x27e),_0x2aaf69),_0x59a613(0x212);}}function printHelp(){const _0x146f24=a0_0x2d77;console[_0x146f24(0x214)]('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x146f24(0x214)](_0x146f24(0x198)),console[_0x146f24(0x214)](_0x146f24(0x1ee)),console[_0x146f24(0x214)]('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x146f24(0x214)](_0x146f24(0x199)),console[_0x146f24(0x214)](_0x146f24(0x258)),console[_0x146f24(0x214)](_0x146f24(0x25b)),console[_0x146f24(0x214)](_0x146f24(0x1ff)),console[_0x146f24(0x214)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0x444bf9(0x19c)][a0_0x444bf9(0x294)](0x2),VERSION_FLAGS=new Set([a0_0x444bf9(0x1ca),'-v','-V']),HELP_FLAGS=new Set([a0_0x444bf9(0x19f),'-h']);cliArgs[a0_0x444bf9(0x228)](_0x4cf66d=>VERSION_FLAGS[a0_0x444bf9(0x291)](_0x4cf66d))&&(console[a0_0x444bf9(0x214)]('@morphllm/morphmcp\x20'+getPackageVersion()),process['exit'](0x0));cliArgs[a0_0x444bf9(0x228)](_0x49c262=>HELP_FLAGS[a0_0x444bf9(0x291)](_0x49c262))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x295aba){const _0x274eaa=a0_0x444bf9;for(let _0x29949b=0x0;_0x29949b<cliArgs[_0x274eaa(0x193)];_0x29949b++){const _0x4692a8=cliArgs[_0x29949b];if(_0x4692a8[_0x274eaa(0x226)]('--'+_0x295aba+'='))return _0x4692a8[_0x274eaa(0x294)](('--'+_0x295aba+'=')[_0x274eaa(0x193)]);if(_0x4692a8==='--'+_0x295aba&&_0x29949b+0x1<cliArgs[_0x274eaa(0x193)])return cliArgs[_0x29949b+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x444bf9(0x193)];i++){const arg=cliArgs[i];if(VERSION_FLAGS['has'](arg)||HELP_FLAGS[a0_0x444bf9(0x291)](arg))continue;if(arg[a0_0x444bf9(0x226)](a0_0x444bf9(0x1a1)))continue;if(arg===a0_0x444bf9(0x26b)){i++;continue;}args[a0_0x444bf9(0x1af)](arg);}const WORKSPACE_ROOT=process[a0_0x444bf9(0x20d)]['WORKSPACE_ROOT']||process[a0_0x444bf9(0x20d)][a0_0x444bf9(0x28c)]||process[a0_0x444bf9(0x282)](),ENABLE_WORKSPACE_MODE=process['env'][a0_0x444bf9(0x222)]!==a0_0x444bf9(0x20c),MORPH_API_KEY=getCliArg('api-key')??process['env'][a0_0x444bf9(0x20b)],MORPH_API_URL=process['env']['MORPH_API_URL'],MORPH_WARP_GREP_TIMEOUT=process[a0_0x444bf9(0x20d)][a0_0x444bf9(0x22e)]?parseInt(process[a0_0x444bf9(0x20d)][a0_0x444bf9(0x22e)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x444bf9(0x281),a0_0x444bf9(0x220),'github_codebase_search']),DISABLED_TOOLS=process['env'][a0_0x444bf9(0x1f0)]?new Set(process[a0_0x444bf9(0x20d)][a0_0x444bf9(0x1f0)]['split'](',')[a0_0x444bf9(0x1e1)](_0x291cf1=>_0x291cf1[a0_0x444bf9(0x1f6)]())[a0_0x444bf9(0x1b2)](_0x4609b0=>_0x4609b0[a0_0x444bf9(0x193)]>0x0)):new Set();if(DISABLED_TOOLS['size']>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x444bf9(0x291)](tool)&&console[a0_0x444bf9(0x1a3)](a0_0x444bf9(0x1d9)+tool+'\x22.\x20Known\x20tools:\x20'+[...KNOWN_TOOL_NAMES][a0_0x444bf9(0x1c1)](',\x20'));}console[a0_0x444bf9(0x1a3)](a0_0x444bf9(0x225)+[...DISABLED_TOOLS][a0_0x444bf9(0x1c1)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x444bf9(0x226)](a0_0x444bf9(0x1f4))&&!MORPH_API_KEY[a0_0x444bf9(0x226)](a0_0x444bf9(0x24d))&&logMcpStderr('Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27');async function reportMorphError(_0x52e6fa){const _0x4d7edb=a0_0x444bf9;try{await a0_0x24b08d[_0x4d7edb(0x1aa)](_0x4d7edb(0x19a),{..._0x52e6fa,'timestamp':new Date()[_0x4d7edb(0x1fb)](),'source':_0x52e6fa['source']||_0x4d7edb(0x25a),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x52e6fa[_0x4d7edb(0x191)]}},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':_0x4d7edb(0x1be)+MORPH_API_KEY}});}catch{}}args['length']===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x444bf9(0x1ab)),logMcpStderr('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),logMcpStderr(a0_0x444bf9(0x231)),logMcpStderr(a0_0x444bf9(0x26d)),logMcpStderr(a0_0x444bf9(0x27a)),logMcpStderr(a0_0x444bf9(0x1a5)));function normalizePath(_0x9f3b0e){return a0_0x35ce7e['normalize'](_0x9f3b0e);}function expandHome(_0x4f9946){const _0x9e27a8=a0_0x444bf9;if(_0x4f9946['startsWith']('~/')||_0x4f9946==='~')return a0_0x35ce7e['join'](a0_0x5cb303[_0x9e27a8(0x262)](),_0x4f9946['slice'](0x1));return _0x4f9946;}let allowedDirectories=await Promise['all'](args[a0_0x444bf9(0x1e1)](async _0x586c69=>{const _0x49a7c9=a0_0x444bf9,_0x45f034=expandHome(_0x586c69),_0x26a932=a0_0x35ce7e[_0x49a7c9(0x1d1)](_0x45f034);try{const _0x5a9f93=await a0_0x1c8efe['realpath'](_0x26a932);return normalizePath(_0x5a9f93);}catch(_0x3958cc){return normalizePath(_0x26a932);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x444bf9(0x193)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x444bf9(0x1af)](workspaceDir),logMcpStderr(a0_0x444bf9(0x1f5)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x44b8b7){logMcpStderr(a0_0x444bf9(0x1b1)+a0_0x44b8b7);}async function detectWorkspaceRoot(_0x378d41){const _0xbf78ce=a0_0x444bf9;let _0x2ac732=a0_0x35ce7e['resolve'](_0x378d41);const _0xb6ab50=['.git',_0xbf78ce(0x18a),_0xbf78ce(0x240),_0xbf78ce(0x1cc),_0xbf78ce(0x1c8),_0xbf78ce(0x270),_0xbf78ce(0x21c),_0xbf78ce(0x1d7),_0xbf78ce(0x21f)];while(_0x2ac732!==a0_0x35ce7e[_0xbf78ce(0x26f)](_0x2ac732)){for(const _0x72980b of _0xb6ab50){const _0x48abff=a0_0x35ce7e['join'](_0x2ac732,_0x72980b);try{return await a0_0x1c8efe[_0xbf78ce(0x26e)](_0x48abff),normalizePath(_0x2ac732);}catch{}}_0x2ac732=a0_0x35ce7e[_0xbf78ce(0x26f)](_0x2ac732);}return normalizePath(_0x378d41);}await Promise[a0_0x444bf9(0x1d6)](args['map'](async _0x23358e=>{const _0x5bcc7f=a0_0x444bf9;try{const _0x23fcab=await a0_0x1c8efe[_0x5bcc7f(0x1a0)](expandHome(_0x23358e));!_0x23fcab[_0x5bcc7f(0x24e)]()&&(logMcpStderr(_0x5bcc7f(0x25f)+_0x23358e+_0x5bcc7f(0x1e3)),process[_0x5bcc7f(0x28f)](0x1));}catch(_0x5c9b0d){logMcpStderr(_0x5bcc7f(0x261)+_0x23358e+':',_0x5c9b0d),process[_0x5bcc7f(0x28f)](0x1);}}));async function validatePath(_0x105db2){const _0x4d50e6=a0_0x444bf9,_0x5994ba=expandHome(_0x105db2),_0x12ca5a=a0_0x35ce7e[_0x4d50e6(0x1d1)](_0x5994ba);try{const _0x4d71d6=await a0_0x1c8efe[_0x4d50e6(0x1bd)](_0x12ca5a);return _0x4d71d6;}catch(_0x5143d6){if(_0x5143d6[_0x4d50e6(0x256)]===_0x4d50e6(0x1c0)){const _0x5c25ff=a0_0x35ce7e[_0x4d50e6(0x26f)](_0x12ca5a);try{const _0x3e4459=await a0_0x1c8efe[_0x4d50e6(0x1bd)](_0x5c25ff);return a0_0x35ce7e['join'](_0x3e4459,a0_0x35ce7e[_0x4d50e6(0x227)](_0x12ca5a));}catch{throw new Error(_0x4d50e6(0x213)+_0x5c25ff);}}throw _0x5143d6;}}function a0_0x20ce(){const _0x566486=['instruction','lines','default','Failed\x20to\x20read\x20file:\x20','every','PathError','.cursor','FileReadError','requiresApiKey','composer.json','codebase_search','version','ENABLE_WORKSPACE_MODE','stringify','object','Disabled\x20tools:\x20','startsWith','basename','some','28MBGlSh','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','etimedout','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','text','MORPH_WARP_GREP_TIMEOUT','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','substring','user','setRequestHandler','code_edit','added\x20','runWarpGrep_call','indexOf','BinaryFile','timings','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.','repo_path','metadata','inputSchema','package.json','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.',',\x20modified\x20','searchGitHub','branch','39152700RjJpyI','sep','.\x20Changes:\x20','morph-warp-grep-v1-1111v0','errors','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','linesAdded','\x20disabled\x20via\x20DISABLED_TOOLS','morph-','isDirectory','unknown\x20error','data','20xwdPgz','Warning:\x20','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','Here\x20is\x20the\x20content\x20of\x20files:\x0a','connect','code','match','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','WarpGrepError','mcp-filesystem','\x0aExamples:','\x22>\x0aError\x20reading\x20file:\x20','\x20for:\x20\x22','\x20valid\x20directories','Error:\x20','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','Error\x20accessing\x20directory\x20','homedir','path','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','TimeoutError','Preview\x20changes\x20without\x20applying\x20them.','utf-8','UnknownError','6714360MyEsiM','getClientCapabilities','--api-key','Fallback:\x20Using\x20workspace\x20root\x20','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','access','dirname','go.mod','isArray','toLowerCase','optional','dryRun','Fatal\x20error\x20running\x20server:','Unknown\x20tool:\x20','array','../package.json','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','owner_repo','roots','github_codebase_search','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','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','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','edit_file','cwd','morph-v3-fast','GitHub\x20search\x20failed:\x20','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable','Specific\x20commit\x20hash\x20to\x20search','WarpGrep\x20sub-tool\x20errors:\x20','success','files','enum','PWD','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','exit','[could\x20not\x20read\x20file:\x20','has','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','Created\x20File','slice','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','readFile','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','.vscode','<file\x20path=\x22','node_modules','read','content','params','assistant','context','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','length','payload','messages','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','https://morphllm.com/api/error-report','split','argv','oninitialized','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','--help','stat','--api-key=','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','error','For\x20deletions:\x0a','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','stack','ms:','Repository\x20identifier','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.','post','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','completed_with_file_errors','timeout','Morph\x20FastApply\x20failed\x20without\x20error\x20message','push','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','filter','0.2.0','\x27\x20in\x20`','constructor','-\x20Grepped\x20\x27',',\x20removed\x20','timed\x20out','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','RipgrepError','catch','Invalid\x20arguments:\x20','realpath','Bearer\x20','651201XCFuDf','ENOENT','join','github_url','read\x20','800835GssrtI','Applied','[github_codebase_search]\x20Searching\x20','.\x20Path:\x20','pyproject.toml','Tool\x20','--version','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','Cargo.toml','Benefits:\x0a','[github_codebase_search]\x20Failed\x20in\x20','5PsdOqU','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','resolve','SymlinkError','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','linesModified','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','all','tsconfig.json','warn','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','describe','5112283iqrxaN','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','message','now','Tool\x20\x22','\x0a...\x20(truncated,\x20total:\x20','map','string','\x20is\x20not\x20a\x20directory','Morph\x20Edit\x20Preview','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','ReadError','ToolException','listRoots','2041338aocoCs','Morph\x20Edit\x20','Error\x20running\x20fast\x20context\x20search:\x20','SubToolError','safeParse','\x0aOptions:','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','DISABLED_TOOLS','2anFKPV','\x20(new\x20file)','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','sk-','Workspace\x20mode\x20enabled:\x20Using\x20','trim','includes','1391892zTQlbF','name','8DXfqJD','toISOString','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','Rules:\x0a','description','\x20\x20morph-mcp','\x20error(s)','number','changes','boolean','search_string','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','terminationReason','min','RipgrepNotAvailable','grep','MORPH_API_KEY','false','env','role','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','Failed\x20to\x20request\x20roots\x20from\x20client:','Relevant\x20context\x20found:','unknown','Parent\x20directory\x20does\x20not\x20exist:\x20','log','finish'];a0_0x20ce=function(){return _0x566486;};return a0_0x20ce();}const MorphEditFileArgsSchema=z[a0_0x444bf9(0x224)]({'path':z[a0_0x444bf9(0x1e2)](),'code_edit':z[a0_0x444bf9(0x1e2)]()[a0_0x444bf9(0x1da)](a0_0x444bf9(0x28e)),'instruction':z['string']()[a0_0x444bf9(0x1da)](a0_0x444bf9(0x1d0)),'dryRun':z[a0_0x444bf9(0x203)]()[a0_0x444bf9(0x218)](![])['describe'](a0_0x444bf9(0x266))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x444bf9(0x1a9),WarpGrepArgsSchema=z[a0_0x444bf9(0x224)]({'search_string':z[a0_0x444bf9(0x1e2)]()[a0_0x444bf9(0x1da)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x444bf9(0x1e2)]()[a0_0x444bf9(0x1da)]('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_0x444bf9(0x28b)](['default',a0_0x444bf9(0x18c)])[a0_0x444bf9(0x273)]()[a0_0x444bf9(0x1da)](a0_0x444bf9(0x241))}),WarpGrepGitHubArgsSchema=z[a0_0x444bf9(0x224)]({'search_string':z['string']()[a0_0x444bf9(0x1da)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x444bf9(0x1e2)]()[a0_0x444bf9(0x273)]()[a0_0x444bf9(0x1da)]('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_0x444bf9(0x1e2)]()[a0_0x444bf9(0x273)]()['describe'](a0_0x444bf9(0x279)),'branch':z[a0_0x444bf9(0x1e2)]()[a0_0x444bf9(0x273)]()[a0_0x444bf9(0x1da)](a0_0x444bf9(0x205))}),CodebaseSearchArgsSchema=z[a0_0x444bf9(0x224)]({'query':z[a0_0x444bf9(0x1e2)]()[a0_0x444bf9(0x1da)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x444bf9(0x1e2)]()[a0_0x444bf9(0x1da)](a0_0x444bf9(0x1a8)),'branch':z[a0_0x444bf9(0x1e2)]()[a0_0x444bf9(0x273)]()[a0_0x444bf9(0x1da)](a0_0x444bf9(0x264)),'commitHash':z['string']()[a0_0x444bf9(0x273)]()[a0_0x444bf9(0x1da)](a0_0x444bf9(0x287)),'targetDirectories':z[a0_0x444bf9(0x277)](z[a0_0x444bf9(0x1e2)]())[a0_0x444bf9(0x218)]([])['describe'](a0_0x444bf9(0x1cb)),'limit':z[a0_0x444bf9(0x201)]()['optional']()['default'](0xa)[a0_0x444bf9(0x1da)]('Max\x20results\x20to\x20return')}),server=new Server({'name':'morph-mcp','version':a0_0x444bf9(0x1b3)},{'capabilities':{'tools':{}}});server[a0_0x444bf9(0x235)](ListToolsRequestSchema,async()=>{const _0x579827=a0_0x444bf9,_0x44f8a5=[{'name':_0x579827(0x281),'description':_0x579827(0x285)+_0x579827(0x1dc)+'🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a'+_0x579827(0x19e)+_0x579827(0x1cd)+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x579827(0x206)+_0x579827(0x22f)+'-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a'+_0x579827(0x28d)+_0x579827(0x1a2)+_0x579827(0x20f)+_0x579827(0x1a4)+_0x579827(0x1ef)+_0x579827(0x1d5)+_0x579827(0x1fd)+_0x579827(0x192)+'-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a'+_0x579827(0x253)+_0x579827(0x1d3)+_0x579827(0x197)+_0x579827(0x196)+_0x579827(0x260),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x579827(0x220),'description':_0x579827(0x27f)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x579827(0x280)+_0x579827(0x1f3)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x352c58=_0x44f8a5[_0x579827(0x1b2)](_0x33e6d1=>{const _0x458292=_0x579827;if(DISABLED_TOOLS['has'](_0x33e6d1[_0x458292(0x1f9)]))return console[_0x458292(0x1a3)](_0x458292(0x1c9)+_0x33e6d1[_0x458292(0x1f9)]+_0x458292(0x24c)),![];if(_0x458292(0x21e)in _0x33e6d1&&_0x33e6d1[_0x458292(0x21e)]&&!MORPH_API_KEY)return logMcpStderr(_0x458292(0x252)+_0x33e6d1[_0x458292(0x1f9)]+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x352c58[_0x579827(0x1e1)](_0x530a87=>({'name':_0x530a87['name'],'description':_0x530a87[_0x579827(0x1fe)],'inputSchema':_0x530a87[_0x579827(0x23f)]}))};}),server[a0_0x444bf9(0x235)](CallToolRequestSchema,async _0x1dcc5f=>{const _0x4e4103=a0_0x444bf9,{name:_0x120311,arguments:_0x32625e}=_0x1dcc5f[_0x4e4103(0x18f)];try{if(DISABLED_TOOLS[_0x4e4103(0x291)](_0x120311))throw new Error(_0x4e4103(0x1df)+_0x120311+_0x4e4103(0x286));switch(_0x120311){case _0x4e4103(0x281):{const _0x4468e4=MorphEditFileArgsSchema[_0x4e4103(0x1ed)](_0x32625e);if(!_0x4468e4[_0x4e4103(0x289)])throw new Error('Invalid\x20arguments\x20for\x20morph_edit_file:\x20'+_0x4468e4['error']);const _0x5c69ca=await validatePath(_0x4468e4[_0x4e4103(0x250)]['path']);let _0x2c8b45=null,_0x436aea=!![],_0x21003f=null;try{_0x2c8b45=await a0_0x1c8efe[_0x4e4103(0x296)](_0x5c69ca,_0x4e4103(0x267));}catch(_0x5cec27){const _0x44399f=_0x5cec27['code'];_0x44399f===_0x4e4103(0x1c0)?(_0x436aea=![],_0x2c8b45=''):(_0x21003f=_0x4e4103(0x219)+(_0x44399f||'unknown')+'\x20-\x20'+(_0x5cec27 instanceof Error?_0x5cec27[_0x4e4103(0x1dd)]:String(_0x5cec27)),logMcpStderr(_0x4e4103(0x252)+_0x21003f));}let _0x89e79f;try{const _0x4ab829=MORPH_API_KEY;if(!_0x4ab829)throw new Error(_0x4e4103(0x1e5));const _0x7e7bc6=a0_0x35ce7e['dirname'](_0x5c69ca),_0x3210b3=a0_0x35ce7e[_0x4e4103(0x227)](_0x5c69ca),_0xd3034d=await executeEditFile({'target_filepath':_0x3210b3,'code_edit':_0x4468e4['data'][_0x4e4103(0x236)],'instructions':_0x4468e4[_0x4e4103(0x250)][_0x4e4103(0x216)]},{'morphApiKey':_0x4ab829,'morphApiUrl':MORPH_API_URL,'baseDir':_0x7e7bc6,'autoWrite':!_0x4468e4[_0x4e4103(0x250)][_0x4e4103(0x274)],'generateUdiff':![],'debug':![]});_0x89e79f=_0xd3034d['completionId'];if(!_0xd3034d['success'])throw new Error(_0xd3034d[_0x4e4103(0x1a3)]||_0x4e4103(0x1ae));const _0x1bc200=_0xd3034d[_0x4e4103(0x202)],_0x467f74=_0x4e4103(0x237)+_0x1bc200[_0x4e4103(0x24b)]+_0x4e4103(0x1b7)+_0x1bc200['linesRemoved']+_0x4e4103(0x242)+_0x1bc200[_0x4e4103(0x1d4)];if(_0x4468e4[_0x4e4103(0x250)]['dryRun'])return{'content':[{'type':_0x4e4103(0x22d),'text':_0x4e4103(0x1e4)+(_0x436aea?'':_0x4e4103(0x1f2))+':\x20'+_0x4468e4[_0x4e4103(0x250)][_0x4e4103(0x216)]+_0x4e4103(0x247)+_0x467f74+_0x4e4103(0x1c7)+_0x4468e4['data'][_0x4e4103(0x263)]+'.'}]};return{'content':[{'type':'text','text':_0x4e4103(0x1ea)+(_0x436aea?_0x4e4103(0x1c5):_0x4e4103(0x293))+':\x20'+_0x4468e4[_0x4e4103(0x250)][_0x4e4103(0x216)]+'.\x20Changes:\x20'+_0x467f74+_0x4e4103(0x1c7)+_0x4468e4[_0x4e4103(0x250)][_0x4e4103(0x263)]+'.'}]};}catch(_0x702240){const _0x377f35=_0x702240 instanceof Error?_0x702240['message']:String(_0x702240);return reportMorphError({'error_message':_0x377f35,'error_type':_0x702240 instanceof Error?_0x702240[_0x4e4103(0x1b5)][_0x4e4103(0x1f9)]:'UnknownError','context':{'tool':_0x4e4103(0x281),'completion_id':_0x89e79f,'file_path':_0x4468e4[_0x4e4103(0x250)][_0x4e4103(0x263)],'validated_path':_0x5c69ca,'instruction':_0x4468e4[_0x4e4103(0x250)]['instruction'],'model':_0x4e4103(0x283),'dry_run':_0x4468e4['data'][_0x4e4103(0x274)],'file_exists':_0x436aea,'file_read_error':_0x21003f,'file_readable':_0x2c8b45!==null,'request_content':{'path':_0x4468e4[_0x4e4103(0x250)][_0x4e4103(0x263)],'code_edit':_0x4468e4[_0x4e4103(0x250)][_0x4e4103(0x236)],'instruction':_0x4468e4['data'][_0x4e4103(0x216)],'original_code':_0x2c8b45!==null?_0x2c8b45[_0x4e4103(0x193)]>0xc350?_0x2c8b45['substring'](0x0,0xc350)+_0x4e4103(0x1e0)+_0x2c8b45[_0x4e4103(0x193)]+'\x20chars)':_0x2c8b45:_0x4e4103(0x290)+(_0x21003f||_0x4e4103(0x24f))+']','original_code_length':_0x2c8b45?.[_0x4e4103(0x193)]??0x0,'model':_0x4e4103(0x283),'dry_run':_0x4468e4[_0x4e4103(0x250)][_0x4e4103(0x274)]}},'stack_trace':_0x702240 instanceof Error?_0x702240[_0x4e4103(0x1a6)]:undefined,'source':_0x4e4103(0x25a)})[_0x4e4103(0x1bb)](()=>{}),{'content':[{'type':'text','text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x377f35}],'isError':!![]};}}case'codebase_search':{const _0x18046d=WarpGrepArgsSchema[_0x4e4103(0x1ed)](_0x32625e);if(!_0x18046d[_0x4e4103(0x289)])return{'content':[{'type':_0x4e4103(0x22d),'text':_0x4e4103(0x1bc)+_0x18046d[_0x4e4103(0x1a3)]}],'isError':!![]};const _0x34f735=_0x1f6f5c=>{const _0x57238e=_0x4e4103,_0x345c2f=[];for(const _0x3f46f6 of _0x1f6f5c||[]){const _0x8767d3=_0x3f46f6[_0x57238e(0x20e)],_0x1722f0=_0x3f46f6[_0x57238e(0x18e)];if(_0x8767d3===_0x57238e(0x190)&&_0x1722f0){const _0x4fe280=_0x1722f0[_0x57238e(0x19b)]('\x0a')[_0x57238e(0x1b2)](_0x5a1d41=>_0x5a1d41[_0x57238e(0x1f6)]());for(const _0x4bd33c of _0x4fe280){const _0x2edb19=_0x4bd33c[_0x57238e(0x257)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x2edb19){_0x345c2f[_0x57238e(0x1af)]('grep\x20\x27'+_0x2edb19[0x1]+'\x27\x20'+_0x2edb19[0x2]);continue;}const _0xbab3ba=_0x4bd33c['match'](/^read\s+(.+)$/);if(_0xbab3ba){_0x345c2f[_0x57238e(0x1af)](_0x57238e(0x1c3)+_0xbab3ba[0x1]);continue;}const _0x49638e=_0x4bd33c[_0x57238e(0x257)](/^list_directory\s+(.+)$/);if(_0x49638e){_0x345c2f[_0x57238e(0x1af)]('list_directory\x20'+_0x49638e[0x1]);continue;}}}}return _0x345c2f;},_0xb67d00=_0x421c30=>{const _0x34b0a2=_0x4e4103,_0x1775d0=[];if(!_0x421c30||!Array[_0x34b0a2(0x271)](_0x421c30))return _0x1775d0;const _0x1d2349=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':'FileNotFound','tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':_0x34b0a2(0x21b),'tool':_0x34b0a2(0x18d)},{'pattern':/\[READ ERROR\]/,'error_type':'ReadError','tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x34b0a2(0x23a),'tool':_0x34b0a2(0x18d)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x34b0a2(0x1ba),'tool':_0x34b0a2(0x20a)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x34b0a2(0x209),'tool':'grep'},{'pattern':/\[BINARY FILE\]/,'error_type':_0x34b0a2(0x23a),'tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':_0x34b0a2(0x1d2),'tool':_0x34b0a2(0x18d)},{'pattern':/not a text file/,'error_type':'BinaryFile','tool':_0x34b0a2(0x18d)},{'pattern':/symbolic link/,'error_type':_0x34b0a2(0x1d2),'tool':_0x34b0a2(0x18d)},{'pattern':/Error reading file:/,'error_type':_0x34b0a2(0x1e6),'tool':_0x34b0a2(0x18d)},{'pattern':/status="error"/,'error_type':_0x34b0a2(0x1e7),'tool':_0x34b0a2(0x212)}];let _0x457c20=0x0;for(const _0x190a59 of _0x421c30){if(_0x190a59[_0x34b0a2(0x20e)]===_0x34b0a2(0x234)){_0x457c20++;const _0x4a6a2a=_0x190a59[_0x34b0a2(0x18e)];if(!_0x4a6a2a||typeof _0x4a6a2a!==_0x34b0a2(0x1e2))continue;for(const {pattern:_0x36b571,error_type:_0x19fb1f,tool:_0x5701be}of _0x1d2349){const _0x24f721=_0x4a6a2a[_0x34b0a2(0x257)](new RegExp(_0x36b571['source'],'g'));if(_0x24f721)for(const _0x41edf0 of _0x24f721){const _0x16e1f2=_0x4a6a2a[_0x34b0a2(0x239)](_0x41edf0),_0x20ca55=_0x4a6a2a[_0x34b0a2(0x233)](_0x16e1f2,Math[_0x34b0a2(0x208)](_0x16e1f2+0xc8,_0x4a6a2a[_0x34b0a2(0x193)]));_0x1775d0[_0x34b0a2(0x1af)]({'tool':_0x5701be,'error_type':_0x19fb1f,'error_message':_0x20ca55[_0x34b0a2(0x19b)]('\x0a')[0x0],'turn':_0x457c20});}}}}return _0x1775d0;};try{const _0x3a7797=a0_0x35ce7e[_0x4e4103(0x1d1)](_0x18046d[_0x4e4103(0x250)]['repo_path']),_0x1c0924=_0x18046d[_0x4e4103(0x250)]['search_type'],_0xfb3ba1=_0x1c0924===_0x4e4103(0x18c)?{'allowNames':[_0x4e4103(0x18c)]}:undefined,_0xd88ce9=new LocalRipgrepProvider(_0x3a7797,undefined,_0xfb3ba1),_0x92600d=await runWarpGrep({'searchTerm':_0x18046d['data'][_0x4e4103(0x204)],'repoRoot':_0x3a7797,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0xd88ce9,'search_type':_0x1c0924}),_0x9969d8=_0xb67d00(_0x92600d[_0x4e4103(0x195)]);_0x9969d8[_0x4e4103(0x193)]>0x0&&reportMorphError({'error_message':_0x4e4103(0x288)+_0x9969d8[_0x4e4103(0x193)]+_0x4e4103(0x200),'error_type':_0x4e4103(0x1ec),'level':_0x4e4103(0x1d8),'tool':'codebase_search','context':{'repo_path':_0x18046d['data'][_0x4e4103(0x23d)],'query':_0x18046d[_0x4e4103(0x250)][_0x4e4103(0x204)],'model':_0x4e4103(0x248),'termination_reason':_0x92600d[_0x4e4103(0x207)],'sub_tool_errors':_0x9969d8,'timings':_0x92600d[_0x4e4103(0x23b)],'tool_calls':_0x34f735(_0x92600d['messages']),'messages':_0x92600d[_0x4e4103(0x195)]?.['map'](_0x3ee5c1=>({'role':_0x3ee5c1['role'],'content':_0x3ee5c1[_0x4e4103(0x18e)]}))},'source':_0x4e4103(0x25a)})[_0x4e4103(0x1bb)](()=>{});let _0x323d11='';if(_0x92600d[_0x4e4103(0x207)]==='completed'&&_0x92600d[_0x4e4103(0x215)]?.[_0x4e4103(0x23e)]?.['files']){const _0xef3ca7=_0x92600d[_0x4e4103(0x215)]['metadata']['files'];if(_0xef3ca7[_0x4e4103(0x193)]===0x0)return _0x323d11=_0x92600d[_0x4e4103(0x215)][_0x4e4103(0x194)]||_0x4e4103(0x22a),{'content':[{'type':_0x4e4103(0x22d),'text':_0x323d11}]};const _0x6877a=[],_0x8dedb9=[_0x4e4103(0x24a)];for(const _0x42da19 of _0x92600d[_0x4e4103(0x195)]){const _0x18ca75=_0x42da19[_0x4e4103(0x20e)],_0x52f0a7=_0x42da19[_0x4e4103(0x18e)];if(_0x18ca75===_0x4e4103(0x190)&&_0x52f0a7){const _0x1b6ade=_0x52f0a7[_0x4e4103(0x19b)]('\x0a')['filter'](_0x34212f=>_0x34212f['trim']());for(const _0x3ea2d5 of _0x1b6ade){const _0x4b8c8b=_0x3ea2d5[_0x4e4103(0x257)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x4b8c8b){_0x8dedb9[_0x4e4103(0x1af)](_0x4e4103(0x1b6)+_0x4b8c8b[0x1]+_0x4e4103(0x1b4)+_0x4b8c8b[0x2]+'`');continue;}const _0x56ac10=_0x3ea2d5[_0x4e4103(0x257)](/^read\s+(.+)$/);if(_0x56ac10){_0x8dedb9[_0x4e4103(0x1af)]('-\x20Read\x20file\x20`'+_0x56ac10[0x1]+'`');continue;}const _0x330d73=_0x3ea2d5[_0x4e4103(0x257)](/^list_directory\s+(.+)$/);if(_0x330d73){_0x8dedb9[_0x4e4103(0x1af)]('-\x20Listed\x20directory\x20`'+_0x330d73[0x1]+'`');continue;}}}}_0x6877a[_0x4e4103(0x1af)](_0x8dedb9[_0x4e4103(0x1c1)]('\x0a'));const _0x48a926=['',_0x4e4103(0x211)];for(const _0x3ba80b of _0xef3ca7){if(_0x3ba80b['lines']==='*')_0x48a926[_0x4e4103(0x1af)]('-\x20'+_0x3ba80b[_0x4e4103(0x263)]+':*');else{if(Array[_0x4e4103(0x271)](_0x3ba80b[_0x4e4103(0x217)])){const _0x16c6a3=_0x3ba80b['lines'][_0x4e4103(0x1e1)](([_0x36d7df,_0x54774b])=>{if(_0x36d7df===_0x54774b)return''+_0x36d7df;return _0x36d7df+'-'+_0x54774b;});_0x48a926[_0x4e4103(0x1af)]('-\x20'+_0x3ba80b['path']+':'+_0x16c6a3[_0x4e4103(0x1c1)](','));}else _0x48a926['push']('-\x20'+_0x3ba80b[_0x4e4103(0x263)]+':*');}}_0x48a926[_0x4e4103(0x1af)](''),_0x6877a[_0x4e4103(0x1af)](_0x48a926['join']('\x0a')),_0x6877a['push'](_0x4e4103(0x254));const _0x370886=[];for(const _0x338554 of _0xef3ca7){let _0x23b7e1=a0_0x35ce7e['resolve'](_0x18046d[_0x4e4103(0x250)][_0x4e4103(0x23d)],_0x338554[_0x4e4103(0x263)]),_0x437a9b=null,_0x22347b=null;try{_0x437a9b=await a0_0x1c8efe[_0x4e4103(0x296)](_0x23b7e1,{'encoding':'utf-8'});}catch(_0x39fcc4){const _0x27b0f9=fixPathRepetition(_0x23b7e1);if(_0x27b0f9)try{_0x437a9b=await a0_0x1c8efe[_0x4e4103(0x296)](_0x27b0f9,{'encoding':'utf-8'}),_0x23b7e1=_0x27b0f9;}catch{_0x22347b=_0x39fcc4 instanceof Error?_0x39fcc4:new Error(String(_0x39fcc4));}else _0x22347b=_0x39fcc4 instanceof Error?_0x39fcc4:new Error(String(_0x39fcc4));}if(_0x437a9b!==null){const _0x5079e1=_0x437a9b['split'](/\r?\n/),_0x3dce49=[_0x4e4103(0x18b)+_0x338554['path']+'\x22>'];if(_0x338554['lines']==='*'||!Array[_0x4e4103(0x271)](_0x338554['lines']))for(let _0x418ec6=0x1;_0x418ec6<=_0x5079e1[_0x4e4103(0x193)];_0x418ec6++){const _0x1360de=_0x5079e1[_0x418ec6-0x1];_0x3dce49[_0x4e4103(0x1af)](_0x418ec6+'|\x20'+_0x1360de);}else for(const [_0x3408cd,_0x57a2bb]of _0x338554[_0x4e4103(0x217)]){_0x3dce49['length']>0x1&&_0x3dce49[_0x4e4103(0x1af)]('');for(let _0x5d39d0=_0x3408cd;_0x5d39d0<=_0x57a2bb&&_0x5d39d0<=_0x5079e1[_0x4e4103(0x193)];_0x5d39d0++){const _0x2f2cfa=_0x5079e1[_0x5d39d0-0x1];_0x3dce49[_0x4e4103(0x1af)](_0x5d39d0+'|\x20'+_0x2f2cfa);}}_0x3dce49[_0x4e4103(0x1af)]('</file>'),_0x370886['push'](_0x3dce49[_0x4e4103(0x1c1)]('\x0a'));}else _0x370886[_0x4e4103(0x1af)](_0x4e4103(0x18b)+_0x338554['path']+_0x4e4103(0x25c)+(_0x22347b?.[_0x4e4103(0x1dd)]||'Unknown\x20error')+'\x0a</file>');}_0x6877a['push'](_0x370886['join']('\x0a\x0a')),_0x323d11=_0x6877a[_0x4e4103(0x1c1)]('\x0a');const _0x1e2c8a=_0x92600d[_0x4e4103(0x249)]?.[_0x4e4103(0x1b2)](_0x1dd1c2=>_0x1dd1c2[_0x4e4103(0x1dd)]?.[_0x4e4103(0x226)]('File\x20read\x20error:'))||[];if(_0x1e2c8a['length']>0x0){const _0x14da29=_0x1e2c8a[_0x4e4103(0x1e1)](_0x42e69a=>_0x42e69a[_0x4e4103(0x1dd)])['join'](';\x20');reportMorphError({'error_message':_0x14da29,'error_type':_0x4e4103(0x21d),'context':{'tool':_0x4e4103(0x220),'repo_path':_0x18046d[_0x4e4103(0x250)][_0x4e4103(0x23d)],'query':_0x18046d[_0x4e4103(0x250)]['search_string'],'model':_0x4e4103(0x248),'termination_reason':_0x4e4103(0x1ac),'error_count':_0x1e2c8a[_0x4e4103(0x193)],'is_timeout':![],'timings':_0x92600d[_0x4e4103(0x23b)],'files_attempted':_0xef3ca7[_0x4e4103(0x1e1)](_0x35357d=>({'path':_0x35357d[_0x4e4103(0x263)],'lines':_0x35357d[_0x4e4103(0x217)]})),'tool_calls':_0x34f735(_0x92600d[_0x4e4103(0x195)]),'messages':_0x92600d[_0x4e4103(0x195)]?.[_0x4e4103(0x1e1)](_0x32dbc=>({'role':_0x32dbc[_0x4e4103(0x20e)],'content':_0x32dbc[_0x4e4103(0x18e)]})),'request_content':{'query':_0x18046d['data']['search_string'],'repo_path':_0x18046d[_0x4e4103(0x250)][_0x4e4103(0x23d)],'repoRoot':a0_0x35ce7e[_0x4e4103(0x1d1)](_0x18046d[_0x4e4103(0x250)][_0x4e4103(0x23d)]),'model':_0x4e4103(0x248)}},'source':_0x4e4103(0x25a)})[_0x4e4103(0x1bb)](()=>{});}}else{if(_0x92600d[_0x4e4103(0x207)]==='terminated'&&_0x92600d[_0x4e4103(0x249)][_0x4e4103(0x193)]>0x0){const _0x5356dd=_0x92600d[_0x4e4103(0x249)][_0x4e4103(0x1e1)](_0x4ec44e=>_0x4ec44e[_0x4e4103(0x1dd)])[_0x4e4103(0x1c1)](';\x20');_0x323d11=_0x4e4103(0x25f)+_0x5356dd;const _0x2afd61=_0x5356dd[_0x4e4103(0x272)]()['includes']('timeout')||_0x5356dd['toLowerCase']()[_0x4e4103(0x1f7)]('timed\x20out')||_0x5356dd['toLowerCase']()[_0x4e4103(0x1f7)](_0x4e4103(0x22b)),_0x34f17a=_0x92600d[_0x4e4103(0x215)]?.[_0x4e4103(0x23e)]?.[_0x4e4103(0x28a)],_0x1b90bb=_0x92600d['errors'][0x0];reportMorphError({'error_message':_0x5356dd,'error_type':_0x2afd61?_0x4e4103(0x265):_0x1b90bb?.[_0x4e4103(0x1b5)]?.[_0x4e4103(0x1f9)]||_0x4e4103(0x259),'context':{'tool':_0x4e4103(0x220),'repo_path':_0x18046d['data'][_0x4e4103(0x23d)],'query':_0x18046d[_0x4e4103(0x250)]['search_string'],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x92600d[_0x4e4103(0x207)],'error_count':_0x92600d['errors'][_0x4e4103(0x193)],'is_timeout':_0x2afd61,'timings':_0x92600d[_0x4e4103(0x23b)],'files_attempted':_0x34f17a?.[_0x4e4103(0x1e1)](_0x2c4253=>({'path':_0x2c4253[_0x4e4103(0x263)],'lines':_0x2c4253[_0x4e4103(0x217)]})),'tool_calls':_0x34f735(_0x92600d[_0x4e4103(0x195)]),'messages':_0x92600d['messages']?.['map'](_0x37f5ac=>({'role':_0x37f5ac[_0x4e4103(0x20e)],'content':_0x37f5ac[_0x4e4103(0x18e)]})),'request_content':{'query':_0x18046d[_0x4e4103(0x250)][_0x4e4103(0x204)],'repo_path':_0x18046d[_0x4e4103(0x250)][_0x4e4103(0x23d)],'repoRoot':a0_0x35ce7e[_0x4e4103(0x1d1)](_0x18046d[_0x4e4103(0x250)]['repo_path']),'model':_0x4e4103(0x248)}},'stack_trace':_0x1b90bb?.[_0x4e4103(0x1a6)]||undefined,'source':'mcp-filesystem'})['catch'](()=>{});}else _0x323d11='Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.';}return{'content':[{'type':'text','text':_0x323d11}]};}catch(_0x560f5c){const _0x1b316b=_0x560f5c instanceof Error?_0x560f5c[_0x4e4103(0x1dd)]:String(_0x560f5c),_0x4b54a1=_0x1b316b[_0x4e4103(0x272)]()[_0x4e4103(0x1f7)](_0x4e4103(0x1ad))||_0x1b316b[_0x4e4103(0x272)]()[_0x4e4103(0x1f7)](_0x4e4103(0x1b8))||_0x1b316b[_0x4e4103(0x272)]()[_0x4e4103(0x1f7)](_0x4e4103(0x22b))||_0x560f5c instanceof Error&&_0x560f5c[_0x4e4103(0x1f9)]===_0x4e4103(0x265);return reportMorphError({'error_message':_0x1b316b,'error_type':_0x4b54a1?_0x4e4103(0x265):_0x560f5c instanceof Error?_0x560f5c[_0x4e4103(0x1b5)][_0x4e4103(0x1f9)]:_0x4e4103(0x268),'context':{'tool':_0x4e4103(0x220),'repo_path':_0x18046d[_0x4e4103(0x250)]['repo_path'],'query':_0x18046d[_0x4e4103(0x250)]['search_string'],'model':_0x4e4103(0x248),'is_timeout':_0x4b54a1,'exception_phase':_0x4e4103(0x238),'request_content':{'query':_0x18046d[_0x4e4103(0x250)][_0x4e4103(0x204)],'repo_path':_0x18046d[_0x4e4103(0x250)][_0x4e4103(0x23d)],'repoRoot':a0_0x35ce7e['resolve'](_0x18046d[_0x4e4103(0x250)][_0x4e4103(0x23d)]),'model':_0x4e4103(0x248)}},'stack_trace':_0x560f5c instanceof Error?_0x560f5c[_0x4e4103(0x1a6)]:undefined,'source':_0x4e4103(0x25a)})[_0x4e4103(0x1bb)](()=>{}),{'content':[{'type':'text','text':_0x4e4103(0x1eb)+_0x1b316b}],'isError':![]};}}case'github_codebase_search':{const _0x488ca2=WarpGrepGitHubArgsSchema[_0x4e4103(0x1ed)](_0x32625e);if(!_0x488ca2['success'])return{'content':[{'type':_0x4e4103(0x22d),'text':'Invalid\x20arguments:\x20'+_0x488ca2[_0x4e4103(0x1a3)]}],'isError':!![]};const _0x2a6e87=_0x488ca2[_0x4e4103(0x250)][_0x4e4103(0x1c2)]||_0x488ca2[_0x4e4103(0x250)][_0x4e4103(0x27b)];if(!_0x2a6e87)return{'content':[{'type':_0x4e4103(0x22d),'text':_0x4e4103(0x295)}],'isError':!![]};const _0xf21d43=MORPH_API_KEY;if(!_0xf21d43)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x2c22d7=Date[_0x4e4103(0x1de)]();logMcpStderr(_0x4e4103(0x1c6)+_0x2a6e87+_0x4e4103(0x25d)+_0x488ca2[_0x4e4103(0x250)][_0x4e4103(0x204)]+'\x22');try{const _0x14a830=new WarpGrepClient({'morphApiKey':_0xf21d43,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x91ae98=await _0x14a830[_0x4e4103(0x243)]({'searchTerm':_0x488ca2[_0x4e4103(0x250)]['search_string'],'github':_0x2a6e87,'branch':_0x488ca2['data'][_0x4e4103(0x244)]}),_0x1203ba=Date[_0x4e4103(0x1de)]()-_0x2c22d7;logMcpStderr('[github_codebase_search]\x20Done\x20in\x20'+_0x1203ba+'ms.\x20Success:\x20'+_0x91ae98[_0x4e4103(0x289)]);const _0x97d967=formatResult(_0x91ae98);return{'content':[{'type':'text','text':_0x97d967}]};}catch(_0x215074){const _0x49072c=Date[_0x4e4103(0x1de)]()-_0x2c22d7,_0x43868e=_0x215074 instanceof Error?_0x215074[_0x4e4103(0x1dd)]:String(_0x215074);return logMcpStderr(_0x4e4103(0x1ce)+_0x49072c+_0x4e4103(0x1a7),_0x43868e),reportMorphError({'error_message':_0x43868e,'error_type':_0x215074 instanceof Error?_0x215074['constructor'][_0x4e4103(0x1f9)]:_0x4e4103(0x268),'context':{'tool':_0x4e4103(0x27d),'github_url':_0x2a6e87,'search_string':_0x488ca2[_0x4e4103(0x250)][_0x4e4103(0x204)],'branch':_0x488ca2[_0x4e4103(0x250)][_0x4e4103(0x244)]},'stack_trace':_0x215074 instanceof Error?_0x215074[_0x4e4103(0x1a6)]:undefined,'source':'mcp-filesystem','tool':'github_codebase_search','latency_ms':_0x49072c})['catch'](()=>{}),{'content':[{'type':_0x4e4103(0x22d),'text':_0x4e4103(0x284)+_0x43868e}],'isError':![]};}}default:throw new Error(_0x4e4103(0x276)+_0x120311);}}catch(_0x5677f7){const _0x2bd155=_0x5677f7 instanceof Error?_0x5677f7[_0x4e4103(0x1dd)]:String(_0x5677f7);return reportMorphError({'error_message':_0x2bd155,'error_type':_0x5677f7 instanceof Error?_0x5677f7[_0x4e4103(0x1b5)][_0x4e4103(0x1f9)]:_0x4e4103(0x268),'context':{'tool':_0x120311,'arguments':_0x32625e?JSON[_0x4e4103(0x223)](_0x32625e)[_0x4e4103(0x233)](0x0,0x1f4):undefined,'mcp_server_version':_0x4e4103(0x1b3)},'stack_trace':_0x5677f7 instanceof Error?_0x5677f7['stack']:undefined,'source':'mcp-filesystem'})[_0x4e4103(0x1bb)](()=>{}),{'content':[{'type':_0x4e4103(0x22d),'text':_0x4e4103(0x25f)+_0x2bd155}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x44ede4){const _0x5134dd=a0_0x444bf9,_0x2aba02=await getValidRootDirectories(_0x44ede4);if(_0x2aba02[_0x5134dd(0x193)]>0x0)allowedDirectories=[..._0x2aba02],logMcpStderr(_0x5134dd(0x230)+_0x2aba02['length']+_0x5134dd(0x25e));else{logMcpStderr(_0x5134dd(0x189));if(ENABLE_WORKSPACE_MODE)try{const _0x177a91=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x177a91&&(allowedDirectories=[_0x177a91],logMcpStderr(_0x5134dd(0x26c)+_0x177a91));}catch(_0x15bb65){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x15bb65);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x76134e=a0_0x444bf9;try{const _0x455f74=await server[_0x76134e(0x1e8)]();_0x455f74&&'roots'in _0x455f74&&await updateAllowedDirectoriesFromRoots(_0x455f74[_0x76134e(0x27c)]);}catch(_0x290852){logMcpStderr(_0x76134e(0x210),_0x290852 instanceof Error?_0x290852[_0x76134e(0x1dd)]:String(_0x290852));}}),server[a0_0x444bf9(0x19d)]=async()=>{const _0x1d4dc4=a0_0x444bf9,_0x4e882b=server[_0x1d4dc4(0x26a)]();if(_0x4e882b?.[_0x1d4dc4(0x27c)])try{const _0x5f41f7=await server[_0x1d4dc4(0x1e8)]();_0x5f41f7&&_0x1d4dc4(0x27c)in _0x5f41f7?await updateAllowedDirectoriesFromRoots(_0x5f41f7[_0x1d4dc4(0x27c)]):logMcpStderr(_0x1d4dc4(0x232));}catch(_0xd6e46c){logMcpStderr(_0x1d4dc4(0x292),_0xd6e46c instanceof Error?_0xd6e46c[_0x1d4dc4(0x1dd)]:String(_0xd6e46c));}else{if(allowedDirectories['length']>0x0)logMcpStderr(_0x1d4dc4(0x1b0),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x1d4dc4(0x1fc));else throw new Error(_0x1d4dc4(0x23c));}}};async function runServer(){const _0xf8ffd7=a0_0x444bf9,_0x503084=new StdioServerTransport();await server[_0xf8ffd7(0x255)](_0x503084),logMcpStderr(_0xf8ffd7(0x22c)),allowedDirectories[_0xf8ffd7(0x193)]===0x0&&logMcpStderr(_0xf8ffd7(0x1b9));}function a0_0x2d77(_0x2ca8b2,_0x321791){_0x2ca8b2=_0x2ca8b2-0x189;const _0x20ce27=a0_0x20ce();let _0x2d77dc=_0x20ce27[_0x2ca8b2];return _0x2d77dc;}runServer()[a0_0x444bf9(0x1bb)](_0x4c0ce1=>{const _0x1bd90c=a0_0x444bf9;logMcpStderr(_0x1bd90c(0x275),_0x4c0ce1),process['exit'](0x1);});
|
|
2
|
+
function a0_0x4e40(){const _0xa75543=['data','roots','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','.\x20Changes:\x20','Tool\x20\x22','Preview\x20changes\x20without\x20applying\x20them.','Morph\x20Edit\x20','split','join','[github_codebase_search]\x20Failed\x20in\x20','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','indexOf','\x20disabled\x20via\x20DISABLED_TOOLS','sk-','timed\x20out','TimeoutError','go.mod','stack','File\x20read\x20error:','slice','❌\x20Morph\x20Edit\x20Failed:\x20','setNotificationHandler','every','constructor','codebase_search','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','owner_repo','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.','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','some','user','Morph\x20Edit\x20Preview','filter','PWD','0.2.0','requiresApiKey','-\x20Read\x20file\x20`','files','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','44EDqUVT','MORPH_WARP_GREP_TIMEOUT','ENOENT','dirname','connect','includes','homedir','assistant','access','Error:\x20','object','context','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','code','morph-mcp','Warning:\x20','name','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','--api-key','dryRun','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','composer.json','added\x20','log','RipgrepError','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','default','resolve','Fallback:\x20Using\x20workspace\x20root\x20','success','\x20valid\x20directories','cwd','message','FileReadError','165036XjDYnX','description','list_directory\x20','match','BinaryFile','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','sep','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','Workspace\x20mode\x20enabled:\x20Using\x20','timings','terminated','\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','instruction','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','searchGitHub','content','api-key','messages','search_type','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','utf-8','129887MjzhrI','safeParse','2840984bupleq','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','catch','linesAdded','Relevant\x20context\x20found:','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]',',\x20modified\x20','[github_codebase_search]\x20Done\x20in\x20','Disabled\x20tools:\x20','ReadError','Specific\x20commit\x20hash\x20to\x20search','read','[could\x20not\x20read\x20file:\x20','morph-warp-grep-v1-1111v0','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','.\x20Path:\x20','exit','\x20(new\x20file)','71667nvPPaQ','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','\x0aExamples:','path','lines','node_modules','github_url','Failed\x20to\x20read\x20file:\x20','</file>','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.','<file\x20path=\x22','has','https://morphllm.com/api/error-report','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','\x0a...\x20(truncated,\x20total:\x20','\x20is\x20not\x20a\x20directory','mcp-filesystem','source','FileNotFound','github_codebase_search','metadata','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','normalize','Created\x20File','isArray','length','.vscode','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','code_edit','read\x20','\x27\x20in\x20`','Cargo.toml','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','role','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','floor','array','--api-key=','terminationReason','WarpGrepError','post','text','SubToolError','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','readFile','completed','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.','branch','params','Morph\x20FastApply\x20failed\x20without\x20error\x20message','toLowerCase','inputSchema','finish','[github_codebase_search]\x20Searching\x20','isDirectory','edit_file','describe','ToolException','payload','boolean','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','\x0aOptions:','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','Bearer\x20','SymlinkError','stat','search_string','--help','startsWith','.cursor','all','Tool\x20','7kDoNPH','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','realpath','Max\x20results\x20to\x20return','2otDzBy','Here\x20is\x20the\x20content\x20of\x20files:\x0a','1980460lpKsCw','\x0a</file>','runWarpGrep_call','\x22.\x20Known\x20tools:\x20','size','getClientCapabilities','Invalid\x20arguments:\x20','Parent\x20directory\x20does\x20not\x20exist:\x20','2213034tTVftj','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','\x20\x20morph-mcp','enum','version','@morphllm/morphmcp\x20','WORKSPACE_ROOT','RipgrepNotAvailable','false','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','ms:','setRequestHandler','morph-v3-fast','listRoots','491425cCGiUF','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','warn','Rules:\x0a','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','toISOString','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','optional','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','trim','UnknownError','push','min','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','DISABLED_TOOLS','WarpGrep\x20sub-tool\x20errors:\x20','-\x20Grepped\x20\x27','map','tsconfig.json','basename','morph-','.git','env','1070GYUSAl','repo_path','string','error','now','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','errors','linesRemoved','unknown','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','-\x20Listed\x20directory\x20`','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','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','Applied'];a0_0x4e40=function(){return _0xa75543;};return a0_0x4e40();}const a0_0x44994e=a0_0x2846;(function(_0x1197f7,_0x291f66){const _0x9dacef=a0_0x2846,_0x515403=_0x1197f7();while(!![]){try{const _0x4f53f1=-parseInt(_0x9dacef(0x29f))/0x1*(parseInt(_0x9dacef(0x1f9))/0x2)+-parseInt(_0x9dacef(0x288))/0x3*(parseInt(_0x9dacef(0x265))/0x4)+parseInt(_0x9dacef(0x1fb))/0x5+-parseInt(_0x9dacef(0x203))/0x6+-parseInt(_0x9dacef(0x1f5))/0x7*(-parseInt(_0x9dacef(0x2a1))/0x8)+parseInt(_0x9dacef(0x2b3))/0x9*(parseInt(_0x9dacef(0x22c))/0xa)+-parseInt(_0x9dacef(0x213))/0xb;if(_0x4f53f1===_0x291f66)break;else _0x515403['push'](_0x515403['shift']());}catch(_0x398045){_0x515403['push'](_0x515403['shift']());}}}(a0_0x4e40,0x6f043));import{Server}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import{CallToolRequestSchema,ListToolsRequestSchema,RootsListChangedNotificationSchema}from'@modelcontextprotocol/sdk/types.js';import a0_0x3e9020 from'fs/promises';import a0_0x27dcdd from'path';import a0_0x5c48dc 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_0xab6413 from'axios';function fixPathRepetition(_0x2b6b20){const _0x49d8c3=a0_0x2846,_0x24b61f=_0x2b6b20[_0x49d8c3(0x244)](a0_0x27dcdd[_0x49d8c3(0x28e)])[_0x49d8c3(0x25e)](Boolean);if(_0x24b61f[_0x49d8c3(0x1c5)]<0x2)return null;for(let _0x21cb8b=Math[_0x49d8c3(0x1cf)](_0x24b61f['length']/0x2);_0x21cb8b>=0x1;_0x21cb8b--){for(let _0x3881a8=0x0;_0x3881a8<=_0x24b61f[_0x49d8c3(0x1c5)]-0x2*_0x21cb8b;_0x3881a8++){const _0x260902=_0x24b61f[_0x49d8c3(0x251)](_0x3881a8,_0x3881a8+_0x21cb8b),_0x4bbeec=_0x24b61f[_0x49d8c3(0x251)](_0x3881a8+_0x21cb8b,_0x3881a8+0x2*_0x21cb8b);if(_0x260902[_0x49d8c3(0x254)]((_0x2c695b,_0x2f84af)=>_0x2c695b===_0x4bbeec[_0x2f84af])){const _0x231715=[..._0x24b61f[_0x49d8c3(0x251)](0x0,_0x3881a8),..._0x24b61f[_0x49d8c3(0x251)](_0x3881a8+_0x21cb8b)];return a0_0x27dcdd[_0x49d8c3(0x28e)]+_0x231715[_0x49d8c3(0x245)](a0_0x27dcdd[_0x49d8c3(0x28e)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x5e7a16=a0_0x2846;try{const _0x360e76=require('../package.json');return _0x360e76[_0x5e7a16(0x207)]??'unknown';}catch(_0x29febb){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x29febb),'unknown';}}function printHelp(){const _0x4d5a85=a0_0x2846;console['log'](_0x4d5a85(0x208)+getPackageVersion()),console[_0x4d5a85(0x27d)](_0x4d5a85(0x2a6)),console['log'](_0x4d5a85(0x1e9)),console[_0x4d5a85(0x27d)]('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x4d5a85(0x27d)](_0x4d5a85(0x257)),console[_0x4d5a85(0x27d)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console['log'](_0x4d5a85(0x2b5)),console[_0x4d5a85(0x27d)](_0x4d5a85(0x205)),console['log'](_0x4d5a85(0x2c0));}const cliArgs=process['argv'][a0_0x44994e(0x251)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set([a0_0x44994e(0x1f0),'-h']);cliArgs[a0_0x44994e(0x25b)](_0x2ed6ad=>VERSION_FLAGS[a0_0x44994e(0x2be)](_0x2ed6ad))&&(console[a0_0x44994e(0x27d)](a0_0x44994e(0x208)+getPackageVersion()),process[a0_0x44994e(0x2b1)](0x0));cliArgs['some'](_0x5ec49e=>HELP_FLAGS[a0_0x44994e(0x2be)](_0x5ec49e))&&(printHelp(),process[a0_0x44994e(0x2b1)](0x0));function getCliArg(_0x5bbf33){const _0x4bffcc=a0_0x44994e;for(let _0x4e8370=0x0;_0x4e8370<cliArgs['length'];_0x4e8370++){const _0x5e4b02=cliArgs[_0x4e8370];if(_0x5e4b02['startsWith']('--'+_0x5bbf33+'='))return _0x5e4b02['slice'](('--'+_0x5bbf33+'=')[_0x4bffcc(0x1c5)]);if(_0x5e4b02==='--'+_0x5bbf33&&_0x4e8370+0x1<cliArgs[_0x4bffcc(0x1c5)])return cliArgs[_0x4e8370+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x44994e(0x1c5)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x44994e(0x2be)](arg)||HELP_FLAGS[a0_0x44994e(0x2be)](arg))continue;if(arg[a0_0x44994e(0x1f1)](a0_0x44994e(0x1d1)))continue;if(arg===a0_0x44994e(0x278)){i++;continue;}args[a0_0x44994e(0x220)](arg);}const WORKSPACE_ROOT=process[a0_0x44994e(0x22b)][a0_0x44994e(0x209)]||process[a0_0x44994e(0x22b)][a0_0x44994e(0x25f)]||process[a0_0x44994e(0x285)](),ENABLE_WORKSPACE_MODE=process[a0_0x44994e(0x22b)]['ENABLE_WORKSPACE_MODE']!==a0_0x44994e(0x20b),MORPH_API_KEY=getCliArg(a0_0x44994e(0x29a))??process[a0_0x44994e(0x22b)]['MORPH_API_KEY'],MORPH_API_URL=process[a0_0x44994e(0x22b)]['MORPH_API_URL'],MORPH_WARP_GREP_TIMEOUT=process[a0_0x44994e(0x22b)][a0_0x44994e(0x266)]?parseInt(process[a0_0x44994e(0x22b)]['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x44994e(0x1e3),'codebase_search',a0_0x44994e(0x2c7)]),DISABLED_TOOLS=process['env'][a0_0x44994e(0x223)]?new Set(process[a0_0x44994e(0x22b)][a0_0x44994e(0x223)][a0_0x44994e(0x244)](',')[a0_0x44994e(0x226)](_0x731d39=>_0x731d39['trim']())[a0_0x44994e(0x25e)](_0x22e99e=>_0x22e99e[a0_0x44994e(0x1c5)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0x44994e(0x1ff)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x44994e(0x2be)](tool)&&console[a0_0x44994e(0x22f)](a0_0x44994e(0x1e8)+tool+a0_0x44994e(0x1fe)+[...KNOWN_TOOL_NAMES][a0_0x44994e(0x245)](',\x20'));}console['error'](a0_0x44994e(0x2a9)+[...DISABLED_TOOLS][a0_0x44994e(0x245)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY['startsWith'](a0_0x44994e(0x24b))&&!MORPH_API_KEY['startsWith'](a0_0x44994e(0x229))&&logMcpStderr(a0_0x44994e(0x264));async function reportMorphError(_0x22ac5c){const _0x1e132b=a0_0x44994e;try{await a0_0xab6413[_0x1e132b(0x1d4)](_0x1e132b(0x2bf),{..._0x22ac5c,'timestamp':new Date()[_0x1e132b(0x219)](),'source':_0x22ac5c[_0x1e132b(0x2c5)]||_0x1e132b(0x2c4),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x22ac5c[_0x1e132b(0x270)]}},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':_0x1e132b(0x1ec)+MORPH_API_KEY}});}catch{}}args[a0_0x44994e(0x1c5)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x44994e(0x296)),logMcpStderr(a0_0x44994e(0x21c)),logMcpStderr('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),logMcpStderr(a0_0x44994e(0x1c1)),logMcpStderr(a0_0x44994e(0x20c)),logMcpStderr(a0_0x44994e(0x277)));function normalizePath(_0x28bfb3){const _0x4a51a9=a0_0x44994e;return a0_0x27dcdd[_0x4a51a9(0x1c2)](_0x28bfb3);}function expandHome(_0x37d236){const _0x2f595d=a0_0x44994e;if(_0x37d236[_0x2f595d(0x1f1)]('~/')||_0x37d236==='~')return a0_0x27dcdd[_0x2f595d(0x245)](a0_0x5c48dc[_0x2f595d(0x26b)](),_0x37d236[_0x2f595d(0x251)](0x1));return _0x37d236;}let allowedDirectories=await Promise[a0_0x44994e(0x1f3)](args[a0_0x44994e(0x226)](async _0x561151=>{const _0x23c6e4=a0_0x44994e,_0x4d60be=expandHome(_0x561151),_0x1c7831=a0_0x27dcdd[_0x23c6e4(0x281)](_0x4d60be);try{const _0x4b08ac=await a0_0x3e9020[_0x23c6e4(0x1f7)](_0x1c7831);return normalizePath(_0x4b08ac);}catch(_0x3bbf18){return normalizePath(_0x1c7831);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x44994e(0x1c5)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x44994e(0x220)](workspaceDir),logMcpStderr(a0_0x44994e(0x290)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x321cf0){logMcpStderr(a0_0x44994e(0x204)+a0_0x321cf0);}async function detectWorkspaceRoot(_0x105b16){const _0x4cb048=a0_0x44994e;let _0x2e2d29=a0_0x27dcdd[_0x4cb048(0x281)](_0x105b16);const _0x2fbb3a=[_0x4cb048(0x22a),_0x4cb048(0x1c6),'package.json',_0x4cb048(0x1cb),'pyproject.toml',_0x4cb048(0x24e),_0x4cb048(0x1f2),_0x4cb048(0x227),_0x4cb048(0x27b)];while(_0x2e2d29!==a0_0x27dcdd['dirname'](_0x2e2d29)){for(const _0x28cf84 of _0x2fbb3a){const _0x4c6d02=a0_0x27dcdd['join'](_0x2e2d29,_0x28cf84);try{return await a0_0x3e9020[_0x4cb048(0x26d)](_0x4c6d02),normalizePath(_0x2e2d29);}catch{}}_0x2e2d29=a0_0x27dcdd[_0x4cb048(0x268)](_0x2e2d29);}return normalizePath(_0x105b16);}await Promise[a0_0x44994e(0x1f3)](args[a0_0x44994e(0x226)](async _0x3baa37=>{const _0xc2f93=a0_0x44994e;try{const _0x2898e5=await a0_0x3e9020[_0xc2f93(0x1ee)](expandHome(_0x3baa37));!_0x2898e5[_0xc2f93(0x1e2)]()&&(logMcpStderr(_0xc2f93(0x26e)+_0x3baa37+_0xc2f93(0x2c3)),process[_0xc2f93(0x2b1)](0x1));}catch(_0x31f156){logMcpStderr('Error\x20accessing\x20directory\x20'+_0x3baa37+':',_0x31f156),process[_0xc2f93(0x2b1)](0x1);}}));async function validatePath(_0x33b11b){const _0x572ea9=a0_0x44994e,_0x2716c4=expandHome(_0x33b11b),_0x5cfaa1=a0_0x27dcdd[_0x572ea9(0x281)](_0x2716c4);try{const _0x34f5a9=await a0_0x3e9020[_0x572ea9(0x1f7)](_0x5cfaa1);return _0x34f5a9;}catch(_0x58be04){if(_0x58be04[_0x572ea9(0x273)]===_0x572ea9(0x267)){const _0x31c837=a0_0x27dcdd[_0x572ea9(0x268)](_0x5cfaa1);try{const _0x24d100=await a0_0x3e9020[_0x572ea9(0x1f7)](_0x31c837);return a0_0x27dcdd[_0x572ea9(0x245)](_0x24d100,a0_0x27dcdd[_0x572ea9(0x228)](_0x5cfaa1));}catch{throw new Error(_0x572ea9(0x202)+_0x31c837);}}throw _0x58be04;}}const MorphEditFileArgsSchema=z[a0_0x44994e(0x26f)]({'path':z[a0_0x44994e(0x22e)](),'code_edit':z[a0_0x44994e(0x22e)]()[a0_0x44994e(0x1e4)]('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z['string']()[a0_0x44994e(0x1e4)](a0_0x44994e(0x271)),'dryRun':z[a0_0x44994e(0x1e7)]()[a0_0x44994e(0x280)](![])[a0_0x44994e(0x1e4)](a0_0x44994e(0x242))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x44994e(0x1da),WarpGrepArgsSchema=z['object']({'search_string':z[a0_0x44994e(0x22e)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x44994e(0x22e)]()['describe'](a0_0x44994e(0x29d)),'search_type':z[a0_0x44994e(0x206)](['default',a0_0x44994e(0x2b8)])[a0_0x44994e(0x21b)]()[a0_0x44994e(0x1e4)](a0_0x44994e(0x297))}),WarpGrepGitHubArgsSchema=z[a0_0x44994e(0x26f)]({'search_string':z[a0_0x44994e(0x22e)]()[a0_0x44994e(0x1e4)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()['optional']()[a0_0x44994e(0x1e4)](a0_0x44994e(0x259)),'owner_repo':z[a0_0x44994e(0x22e)]()['optional']()[a0_0x44994e(0x1e4)](a0_0x44994e(0x214)),'branch':z[a0_0x44994e(0x22e)]()[a0_0x44994e(0x21b)]()[a0_0x44994e(0x1e4)](a0_0x44994e(0x294))}),CodebaseSearchArgsSchema=z[a0_0x44994e(0x26f)]({'query':z[a0_0x44994e(0x22e)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x44994e(0x22e)]()['describe']('Repository\x20identifier'),'branch':z['string']()[a0_0x44994e(0x21b)]()[a0_0x44994e(0x1e4)]('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x44994e(0x22e)]()[a0_0x44994e(0x21b)]()[a0_0x44994e(0x1e4)](a0_0x44994e(0x2ab)),'targetDirectories':z[a0_0x44994e(0x1d0)](z['string']())[a0_0x44994e(0x280)]([])[a0_0x44994e(0x1e4)](a0_0x44994e(0x248)),'limit':z['number']()[a0_0x44994e(0x21b)]()[a0_0x44994e(0x280)](0xa)[a0_0x44994e(0x1e4)](a0_0x44994e(0x1f8))}),server=new Server({'name':a0_0x44994e(0x274),'version':'0.2.0'},{'capabilities':{'tools':{}}});server[a0_0x44994e(0x210)](ListToolsRequestSchema,async()=>{const _0x53a2ba=a0_0x44994e,_0x4b928d=[{'name':_0x53a2ba(0x1e3),'description':_0x53a2ba(0x23f)+_0x53a2ba(0x27a)+_0x53a2ba(0x236)+_0x53a2ba(0x1d7)+'Benefits:\x0a'+_0x53a2ba(0x20e)+_0x53a2ba(0x215)+_0x53a2ba(0x28f)+_0x53a2ba(0x25a)+_0x53a2ba(0x20d)+_0x53a2ba(0x21a)+_0x53a2ba(0x272)+'For\x20deletions:\x0a'+_0x53a2ba(0x27f)+_0x53a2ba(0x21d)+_0x53a2ba(0x217)+_0x53a2ba(0x1ce)+_0x53a2ba(0x1eb)+_0x53a2ba(0x1cc)+_0x53a2ba(0x1c7)+_0x53a2ba(0x235)+_0x53a2ba(0x23e)+_0x53a2ba(0x222),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x53a2ba(0x256),'description':_0x53a2ba(0x238)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x53a2ba(0x2b4)+'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':!![]}],_0x49756e=_0x4b928d[_0x53a2ba(0x25e)](_0x334afe=>{const _0x4cebdb=_0x53a2ba;if(DISABLED_TOOLS[_0x4cebdb(0x2be)](_0x334afe[_0x4cebdb(0x276)]))return console[_0x4cebdb(0x22f)](_0x4cebdb(0x1f4)+_0x334afe[_0x4cebdb(0x276)]+_0x4cebdb(0x24a)),![];if(_0x4cebdb(0x261)in _0x334afe&&_0x334afe[_0x4cebdb(0x261)]&&!MORPH_API_KEY)return logMcpStderr(_0x4cebdb(0x275)+_0x334afe['name']+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x49756e[_0x53a2ba(0x226)](_0x4f9559=>({'name':_0x4f9559[_0x53a2ba(0x276)],'description':_0x4f9559[_0x53a2ba(0x289)],'inputSchema':_0x4f9559[_0x53a2ba(0x1df)]}))};}),server['setRequestHandler'](CallToolRequestSchema,async _0x25025c=>{const _0x4a704f=a0_0x44994e,{name:_0x38dbbb,arguments:_0x43813e}=_0x25025c[_0x4a704f(0x1dc)];try{if(DISABLED_TOOLS[_0x4a704f(0x2be)](_0x38dbbb))throw new Error(_0x4a704f(0x241)+_0x38dbbb+_0x4a704f(0x293));switch(_0x38dbbb){case _0x4a704f(0x1e3):{const _0xade907=MorphEditFileArgsSchema[_0x4a704f(0x2a0)](_0x43813e);if(!_0xade907[_0x4a704f(0x283)])throw new Error(_0x4a704f(0x2c1)+_0xade907['error']);const _0x2fc471=await validatePath(_0xade907['data'][_0x4a704f(0x2b6)]);let _0x293b96=null,_0x42c824=!![],_0x475f50=null;try{_0x293b96=await a0_0x3e9020[_0x4a704f(0x1d8)](_0x2fc471,_0x4a704f(0x29e));}catch(_0x4f7051){const _0x272f6c=_0x4f7051[_0x4a704f(0x273)];_0x272f6c===_0x4a704f(0x267)?(_0x42c824=![],_0x293b96=''):(_0x475f50=_0x4a704f(0x2ba)+(_0x272f6c||'unknown')+'\x20-\x20'+(_0x4f7051 instanceof Error?_0x4f7051[_0x4a704f(0x286)]:String(_0x4f7051)),logMcpStderr(_0x4a704f(0x275)+_0x475f50));}let _0x1d8215;try{const _0x509fcc=MORPH_API_KEY;if(!_0x509fcc)throw new Error(_0x4a704f(0x28d));const _0x2bb5b9=a0_0x27dcdd[_0x4a704f(0x268)](_0x2fc471),_0x12d7d0=a0_0x27dcdd[_0x4a704f(0x228)](_0x2fc471),_0x1d83bb=await executeEditFile({'target_filepath':_0x12d7d0,'code_edit':_0xade907[_0x4a704f(0x23c)][_0x4a704f(0x1c8)],'instructions':_0xade907[_0x4a704f(0x23c)][_0x4a704f(0x295)]},{'morphApiKey':_0x509fcc,'morphApiUrl':MORPH_API_URL,'baseDir':_0x2bb5b9,'autoWrite':!_0xade907[_0x4a704f(0x23c)][_0x4a704f(0x279)],'generateUdiff':![],'debug':![]});_0x1d8215=_0x1d83bb['completionId'];if(!_0x1d83bb[_0x4a704f(0x283)])throw new Error(_0x1d83bb[_0x4a704f(0x22f)]||_0x4a704f(0x1dd));const _0x256120=_0x1d83bb['changes'],_0x1b8665=_0x4a704f(0x27c)+_0x256120[_0x4a704f(0x2a4)]+',\x20removed\x20'+_0x256120[_0x4a704f(0x233)]+_0x4a704f(0x2a7)+_0x256120['linesModified'];if(_0xade907[_0x4a704f(0x23c)][_0x4a704f(0x279)])return{'content':[{'type':_0x4a704f(0x1d5),'text':_0x4a704f(0x25d)+(_0x42c824?'':_0x4a704f(0x2b2))+':\x20'+_0xade907[_0x4a704f(0x23c)]['instruction']+_0x4a704f(0x240)+_0x1b8665+_0x4a704f(0x2b0)+_0xade907[_0x4a704f(0x23c)][_0x4a704f(0x2b6)]+'.'}]};return{'content':[{'type':_0x4a704f(0x1d5),'text':_0x4a704f(0x243)+(_0x42c824?_0x4a704f(0x23b):_0x4a704f(0x1c3))+':\x20'+_0xade907[_0x4a704f(0x23c)][_0x4a704f(0x295)]+'.\x20Changes:\x20'+_0x1b8665+_0x4a704f(0x2b0)+_0xade907['data'][_0x4a704f(0x2b6)]+'.'}]};}catch(_0x4f9e8e){const _0x440f33=_0x4f9e8e instanceof Error?_0x4f9e8e[_0x4a704f(0x286)]:String(_0x4f9e8e);return reportMorphError({'error_message':_0x440f33,'error_type':_0x4f9e8e instanceof Error?_0x4f9e8e[_0x4a704f(0x255)]['name']:'UnknownError','context':{'tool':_0x4a704f(0x1e3),'completion_id':_0x1d8215,'file_path':_0xade907[_0x4a704f(0x23c)][_0x4a704f(0x2b6)],'validated_path':_0x2fc471,'instruction':_0xade907[_0x4a704f(0x23c)][_0x4a704f(0x295)],'model':_0x4a704f(0x211),'dry_run':_0xade907[_0x4a704f(0x23c)][_0x4a704f(0x279)],'file_exists':_0x42c824,'file_read_error':_0x475f50,'file_readable':_0x293b96!==null,'request_content':{'path':_0xade907[_0x4a704f(0x23c)][_0x4a704f(0x2b6)],'code_edit':_0xade907[_0x4a704f(0x23c)][_0x4a704f(0x1c8)],'instruction':_0xade907[_0x4a704f(0x23c)][_0x4a704f(0x295)],'original_code':_0x293b96!==null?_0x293b96[_0x4a704f(0x1c5)]>0xc350?_0x293b96['substring'](0x0,0xc350)+_0x4a704f(0x2c2)+_0x293b96[_0x4a704f(0x1c5)]+'\x20chars)':_0x293b96:_0x4a704f(0x2ad)+(_0x475f50||'unknown\x20error')+']','original_code_length':_0x293b96?.['length']??0x0,'model':'morph-v3-fast','dry_run':_0xade907[_0x4a704f(0x23c)][_0x4a704f(0x279)]}},'stack_trace':_0x4f9e8e instanceof Error?_0x4f9e8e[_0x4a704f(0x24f)]:undefined,'source':'mcp-filesystem'})[_0x4a704f(0x2a3)](()=>{}),{'content':[{'type':_0x4a704f(0x1d5),'text':_0x4a704f(0x252)+_0x440f33}],'isError':!![]};}}case _0x4a704f(0x256):{const _0x122646=WarpGrepArgsSchema['safeParse'](_0x43813e);if(!_0x122646[_0x4a704f(0x283)])return{'content':[{'type':'text','text':_0x4a704f(0x201)+_0x122646[_0x4a704f(0x22f)]}],'isError':!![]};const _0x408e22=_0x3b4198=>{const _0x2faeb5=_0x4a704f,_0x542582=[];for(const _0x11eaa8 of _0x3b4198||[]){const _0x533a6f=_0x11eaa8[_0x2faeb5(0x1cd)],_0x46ae3e=_0x11eaa8[_0x2faeb5(0x299)];if(_0x533a6f===_0x2faeb5(0x26c)&&_0x46ae3e){const _0x23388f=_0x46ae3e[_0x2faeb5(0x244)]('\x0a')[_0x2faeb5(0x25e)](_0x36f6c0=>_0x36f6c0[_0x2faeb5(0x21e)]());for(const _0x743767 of _0x23388f){const _0x18fe25=_0x743767['match'](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x18fe25){_0x542582[_0x2faeb5(0x220)]('grep\x20\x27'+_0x18fe25[0x1]+'\x27\x20'+_0x18fe25[0x2]);continue;}const _0x4ba6bb=_0x743767['match'](/^read\s+(.+)$/);if(_0x4ba6bb){_0x542582[_0x2faeb5(0x220)](_0x2faeb5(0x1c9)+_0x4ba6bb[0x1]);continue;}const _0xa5c4b5=_0x743767[_0x2faeb5(0x28b)](/^list_directory\s+(.+)$/);if(_0xa5c4b5){_0x542582[_0x2faeb5(0x220)](_0x2faeb5(0x28a)+_0xa5c4b5[0x1]);continue;}}}}return _0x542582;},_0x92f336=_0x5918dd=>{const _0x285390=_0x4a704f,_0x283e75=[];if(!_0x5918dd||!Array[_0x285390(0x1c4)](_0x5918dd))return _0x283e75;const _0x537d7f=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x285390(0x2c6),'tool':_0x285390(0x2ac)},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x285390(0x2ac)},{'pattern':/\[READ ERROR\]/,'error_type':'ReadError','tool':_0x285390(0x2ac)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x285390(0x28c),'tool':_0x285390(0x2ac)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x285390(0x27e),'tool':'grep'},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x285390(0x20a),'tool':'grep'},{'pattern':/\[BINARY FILE\]/,'error_type':_0x285390(0x28c),'tool':_0x285390(0x2ac)},{'pattern':/\[SYMLINK\]/,'error_type':_0x285390(0x1ed),'tool':'read'},{'pattern':/not a text file/,'error_type':_0x285390(0x28c),'tool':'read'},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':_0x285390(0x2ac)},{'pattern':/Error reading file:/,'error_type':_0x285390(0x2aa),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x285390(0x1e5),'tool':_0x285390(0x234)}];let _0x249a27=0x0;for(const _0x598ab of _0x5918dd){if(_0x598ab['role']===_0x285390(0x25c)){_0x249a27++;const _0x52def7=_0x598ab[_0x285390(0x299)];if(!_0x52def7||typeof _0x52def7!==_0x285390(0x22e))continue;for(const {pattern:_0x53ab9e,error_type:_0x2d79ef,tool:_0x434838}of _0x537d7f){const _0x4dc3fa=_0x52def7[_0x285390(0x28b)](new RegExp(_0x53ab9e['source'],'g'));if(_0x4dc3fa)for(const _0x3efacf of _0x4dc3fa){const _0x2ca6c6=_0x52def7[_0x285390(0x249)](_0x3efacf),_0x4d004f=_0x52def7['substring'](_0x2ca6c6,Math[_0x285390(0x221)](_0x2ca6c6+0xc8,_0x52def7[_0x285390(0x1c5)]));_0x283e75[_0x285390(0x220)]({'tool':_0x434838,'error_type':_0x2d79ef,'error_message':_0x4d004f[_0x285390(0x244)]('\x0a')[0x0],'turn':_0x249a27});}}}}return _0x283e75;};try{const _0x5a156f=a0_0x27dcdd[_0x4a704f(0x281)](_0x122646[_0x4a704f(0x23c)][_0x4a704f(0x22d)]),_0x13a130=_0x122646[_0x4a704f(0x23c)][_0x4a704f(0x29c)],_0x5aa980=_0x13a130===_0x4a704f(0x2b8)?{'allowNames':[_0x4a704f(0x2b8)]}:undefined,_0x12205f=new LocalRipgrepProvider(_0x5a156f,undefined,_0x5aa980),_0x1db7b1=await runWarpGrep({'searchTerm':_0x122646[_0x4a704f(0x23c)]['search_string'],'repoRoot':_0x5a156f,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x12205f,'search_type':_0x13a130}),_0x567997=_0x92f336(_0x1db7b1['messages']);_0x567997[_0x4a704f(0x1c5)]>0x0&&reportMorphError({'error_message':_0x4a704f(0x224)+_0x567997[_0x4a704f(0x1c5)]+'\x20error(s)','error_type':_0x4a704f(0x1d6),'level':_0x4a704f(0x216),'tool':_0x4a704f(0x256),'context':{'repo_path':_0x122646[_0x4a704f(0x23c)][_0x4a704f(0x22d)],'query':_0x122646[_0x4a704f(0x23c)][_0x4a704f(0x1ef)],'model':_0x4a704f(0x2ae),'termination_reason':_0x1db7b1['terminationReason'],'sub_tool_errors':_0x567997,'timings':_0x1db7b1['timings'],'tool_calls':_0x408e22(_0x1db7b1[_0x4a704f(0x29b)]),'messages':_0x1db7b1['messages']?.[_0x4a704f(0x226)](_0x45c9ba=>({'role':_0x45c9ba[_0x4a704f(0x1cd)],'content':_0x45c9ba[_0x4a704f(0x299)]}))},'source':_0x4a704f(0x2c4)})['catch'](()=>{});let _0x3031ee='';if(_0x1db7b1[_0x4a704f(0x1d2)]===_0x4a704f(0x1d9)&&_0x1db7b1['finish']?.['metadata']?.['files']){const _0x198b99=_0x1db7b1[_0x4a704f(0x1e0)]['metadata']['files'];if(_0x198b99[_0x4a704f(0x1c5)]===0x0)return _0x3031ee=_0x1db7b1[_0x4a704f(0x1e0)][_0x4a704f(0x1e6)]||_0x4a704f(0x23a),{'content':[{'type':_0x4a704f(0x1d5),'text':_0x3031ee}]};const _0x18e323=[],_0x25d9d3=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x1c33ef of _0x1db7b1[_0x4a704f(0x29b)]){const _0x69cc17=_0x1c33ef[_0x4a704f(0x1cd)],_0x3eb5a5=_0x1c33ef[_0x4a704f(0x299)];if(_0x69cc17===_0x4a704f(0x26c)&&_0x3eb5a5){const _0x30ca7c=_0x3eb5a5[_0x4a704f(0x244)]('\x0a')[_0x4a704f(0x25e)](_0x36a188=>_0x36a188[_0x4a704f(0x21e)]());for(const _0x81cbfa of _0x30ca7c){const _0x43cdc4=_0x81cbfa[_0x4a704f(0x28b)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x43cdc4){_0x25d9d3[_0x4a704f(0x220)](_0x4a704f(0x225)+_0x43cdc4[0x1]+_0x4a704f(0x1ca)+_0x43cdc4[0x2]+'`');continue;}const _0x3c6c9d=_0x81cbfa['match'](/^read\s+(.+)$/);if(_0x3c6c9d){_0x25d9d3[_0x4a704f(0x220)](_0x4a704f(0x262)+_0x3c6c9d[0x1]+'`');continue;}const _0x170df8=_0x81cbfa[_0x4a704f(0x28b)](/^list_directory\s+(.+)$/);if(_0x170df8){_0x25d9d3[_0x4a704f(0x220)](_0x4a704f(0x237)+_0x170df8[0x1]+'`');continue;}}}}_0x18e323[_0x4a704f(0x220)](_0x25d9d3['join']('\x0a'));const _0x3015db=['',_0x4a704f(0x2a5)];for(const _0x556c35 of _0x198b99){if(_0x556c35[_0x4a704f(0x2b7)]==='*')_0x3015db['push']('-\x20'+_0x556c35[_0x4a704f(0x2b6)]+':*');else{if(Array[_0x4a704f(0x1c4)](_0x556c35['lines'])){const _0x46b449=_0x556c35['lines']['map'](([_0x1175f7,_0x41f1c6])=>{if(_0x1175f7===_0x41f1c6)return''+_0x1175f7;return _0x1175f7+'-'+_0x41f1c6;});_0x3015db['push']('-\x20'+_0x556c35[_0x4a704f(0x2b6)]+':'+_0x46b449[_0x4a704f(0x245)](','));}else _0x3015db['push']('-\x20'+_0x556c35['path']+':*');}}_0x3015db[_0x4a704f(0x220)](''),_0x18e323[_0x4a704f(0x220)](_0x3015db[_0x4a704f(0x245)]('\x0a')),_0x18e323[_0x4a704f(0x220)](_0x4a704f(0x1fa));const _0x50b8a8=[];for(const _0x484aa8 of _0x198b99){let _0x42aa3b=a0_0x27dcdd[_0x4a704f(0x281)](_0x122646[_0x4a704f(0x23c)]['repo_path'],_0x484aa8[_0x4a704f(0x2b6)]),_0xb96d21=null,_0x4741a0=null;try{_0xb96d21=await a0_0x3e9020['readFile'](_0x42aa3b,{'encoding':_0x4a704f(0x29e)});}catch(_0x25f17b){const _0x3f5705=fixPathRepetition(_0x42aa3b);if(_0x3f5705)try{_0xb96d21=await a0_0x3e9020[_0x4a704f(0x1d8)](_0x3f5705,{'encoding':_0x4a704f(0x29e)}),_0x42aa3b=_0x3f5705;}catch{_0x4741a0=_0x25f17b instanceof Error?_0x25f17b:new Error(String(_0x25f17b));}else _0x4741a0=_0x25f17b instanceof Error?_0x25f17b:new Error(String(_0x25f17b));}if(_0xb96d21!==null){const _0x2507ed=_0xb96d21[_0x4a704f(0x244)](/\r?\n/),_0x1e11eb=[_0x4a704f(0x2bd)+_0x484aa8['path']+'\x22>'];if(_0x484aa8[_0x4a704f(0x2b7)]==='*'||!Array[_0x4a704f(0x1c4)](_0x484aa8[_0x4a704f(0x2b7)]))for(let _0x35b7dc=0x1;_0x35b7dc<=_0x2507ed[_0x4a704f(0x1c5)];_0x35b7dc++){const _0xc8f90d=_0x2507ed[_0x35b7dc-0x1];_0x1e11eb[_0x4a704f(0x220)](_0x35b7dc+'|\x20'+_0xc8f90d);}else for(const [_0x1ca85a,_0x4fd237]of _0x484aa8[_0x4a704f(0x2b7)]){_0x1e11eb[_0x4a704f(0x1c5)]>0x1&&_0x1e11eb[_0x4a704f(0x220)]('');for(let _0x19337c=_0x1ca85a;_0x19337c<=_0x4fd237&&_0x19337c<=_0x2507ed[_0x4a704f(0x1c5)];_0x19337c++){const _0x2f2b53=_0x2507ed[_0x19337c-0x1];_0x1e11eb[_0x4a704f(0x220)](_0x19337c+'|\x20'+_0x2f2b53);}}_0x1e11eb[_0x4a704f(0x220)](_0x4a704f(0x2bb)),_0x50b8a8[_0x4a704f(0x220)](_0x1e11eb[_0x4a704f(0x245)]('\x0a'));}else _0x50b8a8[_0x4a704f(0x220)](_0x4a704f(0x2bd)+_0x484aa8['path']+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x4741a0?.['message']||'Unknown\x20error')+_0x4a704f(0x1fc));}_0x18e323[_0x4a704f(0x220)](_0x50b8a8['join']('\x0a\x0a')),_0x3031ee=_0x18e323[_0x4a704f(0x245)]('\x0a');const _0xddd531=_0x1db7b1[_0x4a704f(0x232)]?.['filter'](_0x49c09c=>_0x49c09c[_0x4a704f(0x286)]?.[_0x4a704f(0x1f1)](_0x4a704f(0x250)))||[];if(_0xddd531[_0x4a704f(0x1c5)]>0x0){const _0x39d789=_0xddd531[_0x4a704f(0x226)](_0x157d24=>_0x157d24[_0x4a704f(0x286)])[_0x4a704f(0x245)](';\x20');reportMorphError({'error_message':_0x39d789,'error_type':_0x4a704f(0x287),'context':{'tool':_0x4a704f(0x256),'repo_path':_0x122646['data'][_0x4a704f(0x22d)],'query':_0x122646[_0x4a704f(0x23c)][_0x4a704f(0x1ef)],'model':'morph-warp-grep-v1-1111v0','termination_reason':'completed_with_file_errors','error_count':_0xddd531[_0x4a704f(0x1c5)],'is_timeout':![],'timings':_0x1db7b1[_0x4a704f(0x291)],'files_attempted':_0x198b99['map'](_0x4e65bb=>({'path':_0x4e65bb[_0x4a704f(0x2b6)],'lines':_0x4e65bb[_0x4a704f(0x2b7)]})),'tool_calls':_0x408e22(_0x1db7b1[_0x4a704f(0x29b)]),'messages':_0x1db7b1[_0x4a704f(0x29b)]?.[_0x4a704f(0x226)](_0x3a02e3=>({'role':_0x3a02e3['role'],'content':_0x3a02e3[_0x4a704f(0x299)]})),'request_content':{'query':_0x122646[_0x4a704f(0x23c)][_0x4a704f(0x1ef)],'repo_path':_0x122646[_0x4a704f(0x23c)][_0x4a704f(0x22d)],'repoRoot':a0_0x27dcdd[_0x4a704f(0x281)](_0x122646[_0x4a704f(0x23c)][_0x4a704f(0x22d)]),'model':_0x4a704f(0x2ae)}},'source':_0x4a704f(0x2c4)})[_0x4a704f(0x2a3)](()=>{});}}else{if(_0x1db7b1[_0x4a704f(0x1d2)]===_0x4a704f(0x292)&&_0x1db7b1[_0x4a704f(0x232)][_0x4a704f(0x1c5)]>0x0){const _0x5c2939=_0x1db7b1[_0x4a704f(0x232)][_0x4a704f(0x226)](_0x1c39b1=>_0x1c39b1['message'])['join'](';\x20');_0x3031ee=_0x4a704f(0x26e)+_0x5c2939;const _0x3ab7c9=_0x5c2939[_0x4a704f(0x1de)]()['includes']('timeout')||_0x5c2939[_0x4a704f(0x1de)]()[_0x4a704f(0x26a)](_0x4a704f(0x24c))||_0x5c2939[_0x4a704f(0x1de)]()[_0x4a704f(0x26a)]('etimedout'),_0x1627c9=_0x1db7b1['finish']?.[_0x4a704f(0x1c0)]?.[_0x4a704f(0x263)],_0xb77a36=_0x1db7b1[_0x4a704f(0x232)][0x0];reportMorphError({'error_message':_0x5c2939,'error_type':_0x3ab7c9?_0x4a704f(0x24d):_0xb77a36?.[_0x4a704f(0x255)]?.[_0x4a704f(0x276)]||_0x4a704f(0x1d3),'context':{'tool':'codebase_search','repo_path':_0x122646['data'][_0x4a704f(0x22d)],'query':_0x122646[_0x4a704f(0x23c)][_0x4a704f(0x1ef)],'model':_0x4a704f(0x2ae),'termination_reason':_0x1db7b1[_0x4a704f(0x1d2)],'error_count':_0x1db7b1[_0x4a704f(0x232)][_0x4a704f(0x1c5)],'is_timeout':_0x3ab7c9,'timings':_0x1db7b1[_0x4a704f(0x291)],'files_attempted':_0x1627c9?.['map'](_0x294c06=>({'path':_0x294c06[_0x4a704f(0x2b6)],'lines':_0x294c06['lines']})),'tool_calls':_0x408e22(_0x1db7b1[_0x4a704f(0x29b)]),'messages':_0x1db7b1[_0x4a704f(0x29b)]?.[_0x4a704f(0x226)](_0x1f2e8d=>({'role':_0x1f2e8d['role'],'content':_0x1f2e8d[_0x4a704f(0x299)]})),'request_content':{'query':_0x122646[_0x4a704f(0x23c)][_0x4a704f(0x1ef)],'repo_path':_0x122646['data'][_0x4a704f(0x22d)],'repoRoot':a0_0x27dcdd[_0x4a704f(0x281)](_0x122646[_0x4a704f(0x23c)]['repo_path']),'model':_0x4a704f(0x2ae)}},'stack_trace':_0xb77a36?.[_0x4a704f(0x24f)]||undefined,'source':_0x4a704f(0x2c4)})[_0x4a704f(0x2a3)](()=>{});}else _0x3031ee=_0x4a704f(0x1f6);}return{'content':[{'type':_0x4a704f(0x1d5),'text':_0x3031ee}]};}catch(_0x354c3c){const _0xb1070d=_0x354c3c instanceof Error?_0x354c3c[_0x4a704f(0x286)]:String(_0x354c3c),_0x1b08d0=_0xb1070d[_0x4a704f(0x1de)]()[_0x4a704f(0x26a)]('timeout')||_0xb1070d[_0x4a704f(0x1de)]()[_0x4a704f(0x26a)](_0x4a704f(0x24c))||_0xb1070d['toLowerCase']()['includes']('etimedout')||_0x354c3c instanceof Error&&_0x354c3c['name']===_0x4a704f(0x24d);return reportMorphError({'error_message':_0xb1070d,'error_type':_0x1b08d0?'TimeoutError':_0x354c3c instanceof Error?_0x354c3c['constructor'][_0x4a704f(0x276)]:_0x4a704f(0x21f),'context':{'tool':_0x4a704f(0x256),'repo_path':_0x122646[_0x4a704f(0x23c)]['repo_path'],'query':_0x122646[_0x4a704f(0x23c)][_0x4a704f(0x1ef)],'model':_0x4a704f(0x2ae),'is_timeout':_0x1b08d0,'exception_phase':_0x4a704f(0x1fd),'request_content':{'query':_0x122646[_0x4a704f(0x23c)]['search_string'],'repo_path':_0x122646[_0x4a704f(0x23c)][_0x4a704f(0x22d)],'repoRoot':a0_0x27dcdd[_0x4a704f(0x281)](_0x122646[_0x4a704f(0x23c)][_0x4a704f(0x22d)]),'model':_0x4a704f(0x2ae)}},'stack_trace':_0x354c3c instanceof Error?_0x354c3c['stack']:undefined,'source':_0x4a704f(0x2c4)})[_0x4a704f(0x2a3)](()=>{}),{'content':[{'type':'text','text':'Error\x20running\x20fast\x20context\x20search:\x20'+_0xb1070d}],'isError':![]};}}case'github_codebase_search':{const _0x3f3c06=WarpGrepGitHubArgsSchema['safeParse'](_0x43813e);if(!_0x3f3c06['success'])return{'content':[{'type':'text','text':_0x4a704f(0x201)+_0x3f3c06[_0x4a704f(0x22f)]}],'isError':!![]};const _0x20eb7d=_0x3f3c06[_0x4a704f(0x23c)][_0x4a704f(0x2b9)]||_0x3f3c06[_0x4a704f(0x23c)][_0x4a704f(0x258)];if(!_0x20eb7d)return{'content':[{'type':'text','text':_0x4a704f(0x218)}],'isError':!![]};const _0x3da30f=MORPH_API_KEY;if(!_0x3da30f)throw new Error(_0x4a704f(0x28d));const _0x40a3a3=Date['now']();logMcpStderr(_0x4a704f(0x1e1)+_0x20eb7d+'\x20for:\x20\x22'+_0x3f3c06[_0x4a704f(0x23c)][_0x4a704f(0x1ef)]+'\x22');try{const _0x54742a=new WarpGrepClient({'morphApiKey':_0x3da30f,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x39688c=await _0x54742a[_0x4a704f(0x298)]({'searchTerm':_0x3f3c06[_0x4a704f(0x23c)]['search_string'],'github':_0x20eb7d,'branch':_0x3f3c06[_0x4a704f(0x23c)][_0x4a704f(0x1db)]}),_0x2a9eb0=Date[_0x4a704f(0x230)]()-_0x40a3a3;logMcpStderr(_0x4a704f(0x2a8)+_0x2a9eb0+'ms.\x20Success:\x20'+_0x39688c[_0x4a704f(0x283)]);const _0x4130bb=formatResult(_0x39688c);return{'content':[{'type':_0x4a704f(0x1d5),'text':_0x4130bb}]};}catch(_0x2f8012){const _0x5c90b5=Date[_0x4a704f(0x230)]()-_0x40a3a3,_0x25b1be=_0x2f8012 instanceof Error?_0x2f8012[_0x4a704f(0x286)]:String(_0x2f8012);return logMcpStderr(_0x4a704f(0x246)+_0x5c90b5+_0x4a704f(0x20f),_0x25b1be),reportMorphError({'error_message':_0x25b1be,'error_type':_0x2f8012 instanceof Error?_0x2f8012[_0x4a704f(0x255)][_0x4a704f(0x276)]:_0x4a704f(0x21f),'context':{'tool':_0x4a704f(0x2c7),'github_url':_0x20eb7d,'search_string':_0x3f3c06[_0x4a704f(0x23c)][_0x4a704f(0x1ef)],'branch':_0x3f3c06[_0x4a704f(0x23c)][_0x4a704f(0x1db)]},'stack_trace':_0x2f8012 instanceof Error?_0x2f8012[_0x4a704f(0x24f)]:undefined,'source':_0x4a704f(0x2c4),'tool':_0x4a704f(0x2c7),'latency_ms':_0x5c90b5})[_0x4a704f(0x2a3)](()=>{}),{'content':[{'type':_0x4a704f(0x1d5),'text':'GitHub\x20search\x20failed:\x20'+_0x25b1be}],'isError':![]};}}default:throw new Error('Unknown\x20tool:\x20'+_0x38dbbb);}}catch(_0xf0a21e){const _0x3db1d4=_0xf0a21e instanceof Error?_0xf0a21e[_0x4a704f(0x286)]:String(_0xf0a21e);return reportMorphError({'error_message':_0x3db1d4,'error_type':_0xf0a21e instanceof Error?_0xf0a21e[_0x4a704f(0x255)][_0x4a704f(0x276)]:_0x4a704f(0x21f),'context':{'tool':_0x38dbbb,'arguments':_0x43813e?JSON['stringify'](_0x43813e)['substring'](0x0,0x1f4):undefined,'mcp_server_version':_0x4a704f(0x260)},'stack_trace':_0xf0a21e instanceof Error?_0xf0a21e[_0x4a704f(0x24f)]:undefined,'source':'mcp-filesystem'})[_0x4a704f(0x2a3)](()=>{}),{'content':[{'type':_0x4a704f(0x1d5),'text':'Error:\x20'+_0x3db1d4}],'isError':!![]};}});function a0_0x2846(_0x9b3e78,_0x6cee06){_0x9b3e78=_0x9b3e78-0x1c0;const _0x4e409f=a0_0x4e40();let _0x28467a=_0x4e409f[_0x9b3e78];return _0x28467a;}async function updateAllowedDirectoriesFromRoots(_0x4c2ffb){const _0x4a88f2=a0_0x44994e,_0x390386=await getValidRootDirectories(_0x4c2ffb);if(_0x390386['length']>0x0)allowedDirectories=[..._0x390386],logMcpStderr(_0x4a88f2(0x2a2)+_0x390386[_0x4a88f2(0x1c5)]+_0x4a88f2(0x284));else{logMcpStderr(_0x4a88f2(0x1ea));if(ENABLE_WORKSPACE_MODE)try{const _0x3c76cd=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x3c76cd&&(allowedDirectories=[_0x3c76cd],logMcpStderr(_0x4a88f2(0x282)+_0x3c76cd));}catch(_0x59664a){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x59664a);}}}server[a0_0x44994e(0x253)](RootsListChangedNotificationSchema,async()=>{const _0x5d77ef=a0_0x44994e;try{const _0x2e3098=await server[_0x5d77ef(0x212)]();_0x2e3098&&_0x5d77ef(0x23d)in _0x2e3098&&await updateAllowedDirectoriesFromRoots(_0x2e3098[_0x5d77ef(0x23d)]);}catch(_0x43c7f4){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x43c7f4 instanceof Error?_0x43c7f4['message']:String(_0x43c7f4));}}),server['oninitialized']=async()=>{const _0x59e97a=a0_0x44994e,_0x206553=server[_0x59e97a(0x200)]();if(_0x206553?.[_0x59e97a(0x23d)])try{const _0x1e5ba8=await server[_0x59e97a(0x212)]();_0x1e5ba8&&'roots'in _0x1e5ba8?await updateAllowedDirectoriesFromRoots(_0x1e5ba8[_0x59e97a(0x23d)]):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x54cc75){logMcpStderr(_0x59e97a(0x2af),_0x54cc75 instanceof Error?_0x54cc75[_0x59e97a(0x286)]:String(_0x54cc75));}else{if(allowedDirectories[_0x59e97a(0x1c5)]>0x0)logMcpStderr(_0x59e97a(0x239),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x59e97a(0x247));else throw new Error(_0x59e97a(0x2bc));}}};async function runServer(){const _0x1f403d=a0_0x44994e,_0x1ec749=new StdioServerTransport();await server[_0x1f403d(0x269)](_0x1ec749),logMcpStderr('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories[_0x1f403d(0x1c5)]===0x0&&logMcpStderr(_0x1f403d(0x231));}runServer()[a0_0x44994e(0x2a3)](_0x2e4d4a=>{logMcpStderr('Fatal\x20error\x20running\x20server:',_0x2e4d4a),process['exit'](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
var a1_0x4d1c10=a1_0x3e3f;function a1_0x3e3f(_0x53ac87,_0x5c9094){_0x53ac87=_0x53ac87-0xac;var _0x589f1b=a1_0x589f();var _0x3e3f2b=_0x589f1b[_0x53ac87];return _0x3e3f2b;}(function(_0x5b4feb,_0x565054){var _0x3725a8=a1_0x3e3f,_0x429f21=_0x5b4feb();while(!![]){try{var _0x384560=-parseInt(_0x3725a8(0xaf))/0x1+-parseInt(_0x3725a8(0xac))/0x2+parseInt(_0x3725a8(0xbc))/0x3+-parseInt(_0x3725a8(0xbd))/0x4*(parseInt(_0x3725a8(0xb1))/0x5)+-parseInt(_0x3725a8(0xbb))/0x6+parseInt(_0x3725a8(0xba))/0x7*(parseInt(_0x3725a8(0xad))/0x8)+-parseInt(_0x3725a8(0xb3))/0x9*(-parseInt(_0x3725a8(0xb9))/0xa);if(_0x384560===_0x565054)break;else _0x429f21['push'](_0x429f21['shift']());}catch(_0x25b75b){_0x429f21['push'](_0x429f21['shift']());}}}(a1_0x589f,0x9c48a));import a1_0x192922 from'os';function a1_0x589f(){var _0x1143b2=['8VEHBqP','macOS','638492ezhFVe','win32','2377505SPaRrs','Linux','3119355Mlnmxi','darwin','[os=','Windows','error','platform','110JlcgYi','2313857dxcRjZ','6573276bhhryT','99522uZaVDu','8RXLpae','Unknown','1702184vepOSi'];a1_0x589f=function(){return _0x1143b2;};return a1_0x589f();}export function getOperatingSystemType(_0x3d4ede=a1_0x192922[a1_0x4d1c10(0xb8)]()){var _0x377937=a1_0x4d1c10;switch(_0x3d4ede){case _0x377937(0xb4):return _0x377937(0xae);case _0x377937(0xb0):return _0x377937(0xb6);case'linux':return _0x377937(0xb2);default:return _0x377937(0xbe);}}export function formatMcpLogMessage(_0x47636c,_0x2674a5=a1_0x192922['platform']()){var _0x5d71bd=a1_0x4d1c10;return _0x5d71bd(0xb5)+getOperatingSystemType(_0x2674a5)+']\x20'+_0x47636c;}export function logMcpStderr(_0x21413a,..._0x4cb94a){var _0x4bce61=a1_0x4d1c10;console[_0x4bce61(0xb7)](formatMcpLogMessage(_0x21413a),..._0x4cb94a);}
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x57b7ee,_0x30b347){const _0x55ca5=a2_0x191a,_0x53e66d=_0x57b7ee();while(!![]){try{const _0x2ecb5b=-parseInt(_0x55ca5(0x10a))/0x1+parseInt(_0x55ca5(0x106))/0x2+parseInt(_0x55ca5(0x10e))/0x3+-parseInt(_0x55ca5(0xff))/0x4*(parseInt(_0x55ca5(0x100))/0x5)+-parseInt(_0x55ca5(0x102))/0x6*(parseInt(_0x55ca5(0x104))/0x7)+-parseInt(_0x55ca5(0x108))/0x8*(-parseInt(_0x55ca5(0x10d))/0x9)+parseInt(_0x55ca5(0x10f))/0xa*(parseInt(_0x55ca5(0x105))/0xb);if(_0x2ecb5b===_0x30b347)break;else _0x53e66d['push'](_0x53e66d['shift']());}catch(_0x59761a){_0x53e66d['push'](_0x53e66d['shift']());}}}(a2_0x4bf1,0xcb50b));import a2_0x2db10d from'path';function a2_0x191a(_0x160bb8,_0x5ddcc9){_0x160bb8=_0x160bb8-0xfb;const _0x4bf157=a2_0x4bf1();let _0x191a52=_0x4bf157[_0x160bb8];return _0x191a52;}import a2_0x4b7cf3 from'os';export function convertToWindowsPath(_0x11296b){const _0x19c4d3=a2_0x191a;if(_0x11296b['startsWith']('/mnt/')){const _0x24260f=_0x11296b['charAt'](0x5)[_0x19c4d3(0x10c)](),_0x1fb2af=_0x11296b[_0x19c4d3(0x10b)](0x6)[_0x19c4d3(0x103)](/\//g,'\x5c');return _0x24260f+':'+_0x1fb2af;}if(_0x11296b['match'](/^\/[a-zA-Z]\//)){const _0x19c543=_0x11296b[_0x19c4d3(0xfd)](0x1)['toUpperCase'](),_0x5d35e4=_0x11296b['slice'](0x2)[_0x19c4d3(0x103)](/\//g,'\x5c');return _0x19c543+':'+_0x5d35e4;}if(_0x11296b[_0x19c4d3(0x101)](/^[a-zA-Z]:/))return _0x11296b['replace'](/\//g,'\x5c');return _0x11296b;}export function normalizePath(_0x199c1d){const _0x594062=a2_0x191a;_0x199c1d=_0x199c1d[_0x594062(0xfe)]()[_0x594062(0x103)](/^["']|["']$/g,'');const _0x18ba45=_0x199c1d[_0x594062(0xfc)]('/')&&!_0x199c1d[_0x594062(0x101)](/^\/mnt\/[a-z]\//i)&&!_0x199c1d[_0x594062(0x101)](/^\/[a-zA-Z]\//);if(_0x18ba45)return _0x199c1d['replace'](/\/+/g,'/')[_0x594062(0x103)](/\/+$/,'');_0x199c1d=convertToWindowsPath(_0x199c1d);if(_0x199c1d['startsWith']('\x5c\x5c')){let _0x39f0c4=_0x199c1d;_0x39f0c4=_0x39f0c4[_0x594062(0x103)](/^\\{2,}/,'\x5c\x5c');const _0x475160=_0x39f0c4['substring'](0x2)[_0x594062(0x103)](/\\\\/g,'\x5c');_0x199c1d='\x5c\x5c'+_0x475160;}else _0x199c1d=_0x199c1d['replace'](/\\\\/g,'\x5c');let _0x1b5ee6=a2_0x2db10d[_0x594062(0xfb)](_0x199c1d);_0x199c1d[_0x594062(0xfc)]('\x5c\x5c')&&!_0x1b5ee6[_0x594062(0xfc)]('\x5c\x5c')&&(_0x1b5ee6='\x5c'+_0x1b5ee6);if(_0x1b5ee6[_0x594062(0x101)](/^[a-zA-Z]:/)){let _0x402f16=_0x1b5ee6[_0x594062(0x103)](/\//g,'\x5c');return/^[a-z]:/[_0x594062(0x107)](_0x402f16)&&(_0x402f16=_0x402f16[_0x594062(0xfd)](0x0)['toUpperCase']()+_0x402f16[_0x594062(0x10b)](0x1)),_0x402f16;}return _0x1b5ee6['replace'](/\//g,'\x5c');}export function expandHome(_0x146f28){const _0x4f5a9c=a2_0x191a;if(_0x146f28[_0x4f5a9c(0xfc)]('~/')||_0x146f28==='~')return a2_0x2db10d[_0x4f5a9c(0x109)](a2_0x4b7cf3[_0x4f5a9c(0x110)](),_0x146f28[_0x4f5a9c(0x10b)](0x1));return _0x146f28;}function a2_0x4bf1(){const _0xf70176=['test','5256hRbLXA','join','1361663jdcmpm','slice','toUpperCase','4086zwCTjb','3737949TOrUpX','718210mWzpVT','homedir','normalize','startsWith','charAt','trim','2945696kyaKbO','5ciVoUs','match','5591538sjEhMm','replace','7HvveMJ','231SutORX','1620574YoLFbY'];a2_0x4bf1=function(){return _0xf70176;};return a2_0x4bf1();}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x401953,_0xeb81cf){const _0x5b71c3=a3_0x5047,_0x28c650=_0x401953();while(!![]){try{const _0x35a410=parseInt(_0x5b71c3(0x12b))/0x1*(-parseInt(_0x5b71c3(0x12a))/0x2)+-parseInt(_0x5b71c3(0x12c))/0x3*(-parseInt(_0x5b71c3(0x120))/0x4)+-parseInt(_0x5b71c3(0x134))/0x5*(parseInt(_0x5b71c3(0x127))/0x6)+parseInt(_0x5b71c3(0x131))/0x7+parseInt(_0x5b71c3(0x122))/0x8*(parseInt(_0x5b71c3(0x11e))/0x9)+-parseInt(_0x5b71c3(0x12f))/0xa*(parseInt(_0x5b71c3(0x12e))/0xb)+parseInt(_0x5b71c3(0x132))/0xc*(parseInt(_0x5b71c3(0x121))/0xd);if(_0x35a410===_0xeb81cf)break;else _0x28c650['push'](_0x28c650['shift']());}catch(_0x1166c9){_0x28c650['push'](_0x28c650['shift']());}}}(a3_0x1380,0x77e0e));function a3_0x5047(_0x48f85a,_0x3685d1){_0x48f85a=_0x48f85a-0x11e;const _0x138031=a3_0x1380();let _0x504735=_0x138031[_0x48f85a];return _0x504735;}function a3_0x1380(){const _0x4cd70a=['486876VBfVZY','2140554FPcxyt','44088dXAzLY','resolve','isArray','isAbsolute','startsWith','4965906uFOCAn','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','Path\x20must\x20be\x20absolute\x20after\x20normalization','2086STaGre','83apimuj','21KxXusB','string','132NZSfnT','561380LJJWjD','normalize','2627436BrzDbo','48EfPDJH','includes','5gaTBgx','315fwlqKX','sep'];a3_0x1380=function(){return _0x4cd70a;};return a3_0x1380();}import a3_0x229bcf from'path';export function isPathWithinAllowedDirectories(_0x264c81,_0x3c1f8d){const _0x2d8bbe=a3_0x5047;if(typeof _0x264c81!==_0x2d8bbe(0x12d)||!Array[_0x2d8bbe(0x124)](_0x3c1f8d))return![];if(!_0x264c81||_0x3c1f8d['length']===0x0)return![];if(_0x264c81[_0x2d8bbe(0x133)]('\x00'))return![];let _0x580672;try{_0x580672=a3_0x229bcf[_0x2d8bbe(0x123)](a3_0x229bcf['normalize'](_0x264c81));}catch{return![];}if(!a3_0x229bcf[_0x2d8bbe(0x125)](_0x580672))throw new Error(_0x2d8bbe(0x129));return _0x3c1f8d['some'](_0x5c582d=>{const _0x3fa213=_0x2d8bbe;if(typeof _0x5c582d!=='string'||!_0x5c582d)return![];if(_0x5c582d[_0x3fa213(0x133)]('\x00'))return![];let _0x3cc9a4;try{_0x3cc9a4=a3_0x229bcf[_0x3fa213(0x123)](a3_0x229bcf[_0x3fa213(0x130)](_0x5c582d));}catch{return![];}if(!a3_0x229bcf[_0x3fa213(0x125)](_0x3cc9a4))throw new Error(_0x3fa213(0x128));if(_0x580672===_0x3cc9a4)return!![];if(_0x3cc9a4===a3_0x229bcf['sep'])return _0x580672['startsWith'](a3_0x229bcf[_0x3fa213(0x11f)]);return _0x580672[_0x3fa213(0x126)](_0x3cc9a4+a3_0x229bcf[_0x3fa213(0x11f)]);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a4_0xe0eb(_0x3e159e,_0x52a822){_0x3e159e=_0x3e159e-0xd9;const _0x5c79bd=a4_0x5c79();let _0xe0eb33=_0x5c79bd[_0x3e159e];return _0xe0eb33;}(function(_0x3a7e2,_0x16a4ba){const _0x38e9f6=a4_0xe0eb,_0x154086=_0x3a7e2();while(!![]){try{const _0x147e5c=parseInt(_0x38e9f6(0xe5))/0x1+parseInt(_0x38e9f6(0xea))/0x2+-parseInt(_0x38e9f6(0xe2))/0x3+-parseInt(_0x38e9f6(0xe1))/0x4*(parseInt(_0x38e9f6(0xef))/0x5)+parseInt(_0x38e9f6(0xec))/0x6+parseInt(_0x38e9f6(0xdb))/0x7+-parseInt(_0x38e9f6(0xe9))/0x8;if(_0x147e5c===_0x16a4ba)break;else _0x154086['push'](_0x154086['shift']());}catch(_0x4d747b){_0x154086['push'](_0x154086['shift']());}}}(a4_0x5c79,0x29f0f));import{promises as a4_0x41a8e3}from'fs';import a4_0x37c54a from'path';import a4_0x21082c from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x19cfb8){const _0x183ec7=a4_0xe0eb;try{const _0x22a4d6=_0x19cfb8[_0x183ec7(0xde)](_0x183ec7(0xe7))?_0x19cfb8['slice'](0x7):_0x19cfb8,_0xcb769f=_0x22a4d6['startsWith']('~/')||_0x22a4d6==='~'?a4_0x37c54a[_0x183ec7(0xdc)](a4_0x21082c[_0x183ec7(0xf0)](),_0x22a4d6[_0x183ec7(0xe0)](0x1)):_0x22a4d6,_0x423079=a4_0x37c54a[_0x183ec7(0xed)](_0xcb769f),_0x4c32c8=await a4_0x41a8e3[_0x183ec7(0xe3)](_0x423079);return normalizePath(_0x4c32c8);}catch{return null;}}function formatDirectoryError(_0x19b5f2,_0x1bbaff,_0x42d3ce){const _0x595062=a4_0xe0eb;if(_0x42d3ce)return _0x595062(0xeb)+_0x42d3ce+':\x20'+_0x19b5f2;const _0x7993f2=_0x1bbaff instanceof Error?_0x1bbaff[_0x595062(0xe4)]:String(_0x1bbaff);return'Skipping\x20invalid\x20directory:\x20'+_0x19b5f2+_0x595062(0xda)+_0x7993f2;}function a4_0x5c79(){const _0x15c703=['homedir','push','\x20due\x20to\x20error:\x20','2179422UlIzWh','join','non-directory\x20root','startsWith','invalid\x20path\x20or\x20inaccessible','slice','7116MspBQA','317274vXqgCp','realpath','message','51872ZTcyaY','isDirectory','file://','stat','1286416ueNyEr','82106BsrMUJ','Skipping\x20','620766hrIkQA','resolve','uri','195yJswvy'];a4_0x5c79=function(){return _0x15c703;};return a4_0x5c79();}export async function getValidRootDirectories(_0x65344f){const _0x369498=a4_0xe0eb,_0x358dc7=[];for(const _0xfc91f8 of _0x65344f){const _0x304e6d=await parseRootUri(_0xfc91f8[_0x369498(0xee)]);if(!_0x304e6d){logMcpStderr(formatDirectoryError(_0xfc91f8[_0x369498(0xee)],undefined,_0x369498(0xdf)));continue;}try{const _0x57d0b7=await a4_0x41a8e3[_0x369498(0xe8)](_0x304e6d);_0x57d0b7[_0x369498(0xe6)]()?_0x358dc7[_0x369498(0xd9)](_0x304e6d):logMcpStderr(formatDirectoryError(_0x304e6d,undefined,_0x369498(0xdd)));}catch(_0x544f2c){logMcpStderr(formatDirectoryError(_0x304e6d,_0x544f2c));}}return _0x358dc7;}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.128",
|
|
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.136",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|