@morphllm/morphmcp 0.8.149 → 0.8.151
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_0x2d5970=a0_0x36d6;(function(_0x41daf7,_0x28c62a){const _0x1ad412=a0_0x36d6,_0x5d4d4b=_0x41daf7();while(!![]){try{const _0x92fe62=parseInt(_0x1ad412(0x11c))/0x1+-parseInt(_0x1ad412(0x126))/0x2+parseInt(_0x1ad412(0xef))/0x3+parseInt(_0x1ad412(0x107))/0x4*(parseInt(_0x1ad412(0x158))/0x5)+parseInt(_0x1ad412(0x142))/0x6+parseInt(_0x1ad412(0xf7))/0x7*(-parseInt(_0x1ad412(0x11f))/0x8)+-parseInt(_0x1ad412(0x114))/0x9;if(_0x92fe62===_0x28c62a)break;else _0x5d4d4b['push'](_0x5d4d4b['shift']());}catch(_0x567a84){_0x5d4d4b['push'](_0x5d4d4b['shift']());}}}(a0_0x2096,0x6e681));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_0x9e3f8 from'fs/promises';import a0_0x413ed5 from'path';function a0_0x2096(){const _0x2663a4=['\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','\x22>\x0aError\x20reading\x20file:\x20','For\x20deletions:\x0a','Disabled\x20tools:\x20','SubToolError','Fatal\x20error\x20running\x20server:','text','.\x20Path:\x20','node_modules','Rules:\x0a','push','\x0a...\x20(truncated,\x20total:\x20','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','completed_with_file_errors','.vscode','\x20-\x20','go.mod','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','search_string','homedir','@morphllm/morphmcp\x20','stack','map','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','read\x20','setRequestHandler','morph-','has','now','MORPH_WARP_GREP_TIMEOUT','basename','--help','pyproject.toml','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','sep','composer.json','repo_path','[github_codebase_search]\x20Searching\x20','describe','inputSchema','message','MORPH_API_URL','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.','filter','timed\x20out','mcp-filesystem','dirname','stat','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','\x20(new\x20file)','floor','File\x20read\x20error:','all','default','toLowerCase','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','TimeoutError','timeout','runWarpGrep_call','MORPH_API_KEY','data','getClientCapabilities','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','.git','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','\x0a</file>','read','context','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','RipgrepError','.cursor','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','.\x20Changes:\x20','path','Unknown\x20tool:\x20','realpath','PWD','oninitialized','stringify','arguments','terminated','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','\x20disabled\x20via\x20DISABLED_TOOLS','object','code_edit','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','0.2.0','split','api-key','error','Morph\x20Edit\x20','glob','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.','readFile','Repository\x20identifier','ToolException','Bearer\x20','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','metadata','ms.\x20Success:\x20','UnknownError','BinaryFile','Failed\x20to\x20read\x20file:\x20','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','params','RipgrepNotAvailable','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','dryRun','finish','Relevant\x20context\x20found:','added\x20','WarpGrepError','code','lines','`\x20in\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','string','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','list_directory\x20','isDirectory','</file>','errors','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','terminationReason','github_url','1425660QELbcQ','includes','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','number','boolean','morph-warp-grep-v2.1','Applied','application/json','3287319fOJHkw','package.json','array','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.','Parent\x20directory\x20does\x20not\x20exist:\x20','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','branch','ENOENT','tool_call_id','utf-8','grep\x20\x27','\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable','Error\x20running\x20fast\x20context\x20search:\x20','edit_file','FileReadError','Created\x20File','4XIcSAB','Tool\x20','timings','trim','FileNotFound','\x20for:\x20\x22','grep','ENABLE_WORKSPACE_MODE','\x20chars)','github_codebase_search','post','WORKSPACE_ROOT','log','2201337uKhZIc','assistant','--api-key','listRoots','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','-\x20Read\x20file\x20`','Error\x20accessing\x20directory\x20','\x27\x20in\x20`','540900IZWcAT','requiresApiKey','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','8NtDVje','Preview\x20changes\x20without\x20applying\x20them.','SymlinkError','Tool\x20\x22','length','match','constructor','1158876uNBWga','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','<file\x20path=\x22','\x20as\x20allowed\x20directory','--version','../package.json','-\x20Grepped\x20\x27','name','source','Invalid\x20arguments:\x20','linesAdded','DISABLED_TOOLS','ms:','\x20is\x20not\x20a\x20directory','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','sk-','-\x20Listed\x20directory\x20`','warn','Cargo.toml','content','payload','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','slice','exit','env','completionId','Warning:\x20Workspace\x20fallback\x20failed:\x20','1945020YBIqhb','role','morph-v3-fast','toISOString','optional','catch','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','GitHub\x20search\x20failed:\x20','grep_search','success','glob\x20\x27','tool_calls','codebase_search','owner_repo','Warning:\x20','function','size','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','setNotificationHandler','searchGitHub','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','2027915beQghq','normalize',',\x20modified\x20','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','safeParse','cwd','isArray','substring','PathError','instruction','enum','messages','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','tsconfig.json','\x22.\x20Known\x20tools:\x20','user','some','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','etimedout','instructions','pattern','ReadError','Benefits:\x0a','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','WarpGrep\x20sub-tool\x20errors:\x20','changes','❌\x20Morph\x20Edit\x20Failed:\x20','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','roots','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','completed','Error:\x20','resolve','\x0aExamples:','parse','files','linesModified','Unknown\x20error','version','join','unknown','Specific\x20commit\x20hash\x20to\x20search','https://morphllm.com/api/error-report','every','Workspace\x20mode\x20enabled:\x20Using\x20','startsWith','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','\x20error(s)'];a0_0x2096=function(){return _0x2663a4;};return a0_0x2096();}import a0_0x325121 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';function a0_0x36d6(_0x43cc05,_0xabbe5){_0x43cc05=_0x43cc05-0xe5;const _0x20963f=a0_0x2096();let _0x36d614=_0x20963f[_0x43cc05];return _0x36d614;}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_0x1efe09 from'axios';function fixPathRepetition(_0x1c803c){const _0x3201d9=a0_0x36d6,_0x21387c=_0x1c803c[_0x3201d9(0x1e6)](a0_0x413ed5[_0x3201d9(0x1ae)])['filter'](Boolean);if(_0x21387c['length']<0x2)return null;for(let _0x1a5eca=Math[_0x3201d9(0x1bf)](_0x21387c[_0x3201d9(0x123)]/0x2);_0x1a5eca>=0x1;_0x1a5eca--){for(let _0x327262=0x0;_0x327262<=_0x21387c['length']-0x2*_0x1a5eca;_0x327262++){const _0x3798cb=_0x21387c[_0x3201d9(0x13d)](_0x327262,_0x327262+_0x1a5eca),_0x30fe9d=_0x21387c[_0x3201d9(0x13d)](_0x327262+_0x1a5eca,_0x327262+0x2*_0x1a5eca);if(_0x3798cb[_0x3201d9(0x187)]((_0x3b129a,_0x28d6d5)=>_0x3b129a===_0x30fe9d[_0x28d6d5])){const _0x234bff=[..._0x21387c[_0x3201d9(0x13d)](0x0,_0x327262),..._0x21387c[_0x3201d9(0x13d)](_0x327262+_0x1a5eca)];return a0_0x413ed5[_0x3201d9(0x1ae)]+_0x234bff[_0x3201d9(0x183)](a0_0x413ed5['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x219f04=a0_0x36d6;try{const _0x5357ef=require(_0x219f04(0x12c));return _0x5357ef[_0x219f04(0x182)]??_0x219f04(0x184);}catch(_0x35e8ac){return logMcpStderr(_0x219f04(0xf1),_0x35e8ac),_0x219f04(0x184);}}function printHelp(){const _0x5ac7c0=a0_0x36d6;console[_0x5ac7c0(0x113)](_0x5ac7c0(0x1a0)+getPackageVersion()),console[_0x5ac7c0(0x113)](_0x5ac7c0(0x172)),console[_0x5ac7c0(0x113)]('\x0aOptions:'),console[_0x5ac7c0(0x113)](_0x5ac7c0(0x1cd)),console[_0x5ac7c0(0x113)](_0x5ac7c0(0x1ad)),console[_0x5ac7c0(0x113)](_0x5ac7c0(0x1cb)),console[_0x5ac7c0(0x113)](_0x5ac7c0(0x17d)),console[_0x5ac7c0(0x113)]('\x20\x20morph-mcp'),console[_0x5ac7c0(0x113)](_0x5ac7c0(0x18c));}const cliArgs=process['argv']['slice'](0x2),VERSION_FLAGS=new Set([a0_0x2d5970(0x12b),'-v','-V']),HELP_FLAGS=new Set([a0_0x2d5970(0x1ab),'-h']);cliArgs[a0_0x2d5970(0x169)](_0x31c576=>VERSION_FLAGS['has'](_0x31c576))&&(console[a0_0x2d5970(0x113)](a0_0x2d5970(0x1a0)+getPackageVersion()),process[a0_0x2d5970(0x13e)](0x0));cliArgs[a0_0x2d5970(0x169)](_0x4dd070=>HELP_FLAGS[a0_0x2d5970(0x1a7)](_0x4dd070))&&(printHelp(),process[a0_0x2d5970(0x13e)](0x0));function getCliArg(_0x3aae51){const _0x1540f4=a0_0x2d5970;for(let _0x3e23a8=0x0;_0x3e23a8<cliArgs[_0x1540f4(0x123)];_0x3e23a8++){const _0x64aa4a=cliArgs[_0x3e23a8];if(_0x64aa4a[_0x1540f4(0x189)]('--'+_0x3aae51+'='))return _0x64aa4a[_0x1540f4(0x13d)](('--'+_0x3aae51+'=')['length']);if(_0x64aa4a==='--'+_0x3aae51&&_0x3e23a8+0x1<cliArgs[_0x1540f4(0x123)])return cliArgs[_0x3e23a8+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x2d5970(0x123)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x2d5970(0x1a7)](arg)||HELP_FLAGS[a0_0x2d5970(0x1a7)](arg))continue;if(arg[a0_0x2d5970(0x189)]('--api-key='))continue;if(arg===a0_0x2d5970(0x116)){i++;continue;}args[a0_0x2d5970(0x196)](arg);}const WORKSPACE_ROOT=process[a0_0x2d5970(0x13f)][a0_0x2d5970(0x112)]||process[a0_0x2d5970(0x13f)][a0_0x2d5970(0x1da)]||process[a0_0x2d5970(0x15d)](),ENABLE_WORKSPACE_MODE=process[a0_0x2d5970(0x13f)][a0_0x2d5970(0x10e)]!=='false',MORPH_API_KEY=getCliArg(a0_0x2d5970(0x1e7))??process[a0_0x2d5970(0x13f)][a0_0x2d5970(0x1c8)],MORPH_API_URL=process[a0_0x2d5970(0x13f)][a0_0x2d5970(0x1b5)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x2d5970(0x13f)][a0_0x2d5970(0x1a9)]?parseInt(process[a0_0x2d5970(0x13f)][a0_0x2d5970(0x1a9)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x2d5970(0x104),a0_0x2d5970(0x14e),a0_0x2d5970(0x110)]),DISABLED_TOOLS=process[a0_0x2d5970(0x13f)][a0_0x2d5970(0x132)]?new Set(process[a0_0x2d5970(0x13f)]['DISABLED_TOOLS'][a0_0x2d5970(0x1e6)](',')['map'](_0x565e81=>_0x565e81[a0_0x2d5970(0x10a)]())[a0_0x2d5970(0x1b7)](_0x281609=>_0x281609[a0_0x2d5970(0x123)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0x2d5970(0x152)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x2d5970(0x1a7)](tool)&&console[a0_0x2d5970(0x1e8)](a0_0x2d5970(0x1df)+tool+a0_0x2d5970(0x167)+[...KNOWN_TOOL_NAMES][a0_0x2d5970(0x183)](',\x20'));}console[a0_0x2d5970(0x1e8)](a0_0x2d5970(0x18f)+[...DISABLED_TOOLS][a0_0x2d5970(0x183)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x2d5970(0x189)](a0_0x2d5970(0x136))&&!MORPH_API_KEY[a0_0x2d5970(0x189)](a0_0x2d5970(0x1a6))&&logMcpStderr('Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27');async function reportMorphError(_0x810928){const _0x5a52a0=a0_0x2d5970;try{await a0_0x1efe09[_0x5a52a0(0x111)](_0x5a52a0(0x186),{..._0x810928,'timestamp':new Date()[_0x5a52a0(0x145)](),'source':_0x810928[_0x5a52a0(0x12f)]||_0x5a52a0(0x1b9),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x810928[_0x5a52a0(0x1d1)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x5a52a0(0xf6),'Authorization':_0x5a52a0(0x1ef)+MORPH_API_KEY}});}catch{}}args[a0_0x2d5970(0x123)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),logMcpStderr(a0_0x2d5970(0x16a)),logMcpStderr(a0_0x2d5970(0x178)),logMcpStderr(a0_0x2d5970(0xec)),logMcpStderr('\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)'),logMcpStderr('At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.'));function normalizePath(_0x1568af){const _0x4c54e4=a0_0x2d5970;return a0_0x413ed5[_0x4c54e4(0x159)](_0x1568af);}function expandHome(_0x3c203b){const _0x270849=a0_0x2d5970;if(_0x3c203b[_0x270849(0x189)]('~/')||_0x3c203b==='~')return a0_0x413ed5[_0x270849(0x183)](a0_0x325121[_0x270849(0x19f)](),_0x3c203b[_0x270849(0x13d)](0x1));return _0x3c203b;}let allowedDirectories=await Promise[a0_0x2d5970(0x1c1)](args['map'](async _0xe4ee9=>{const _0x2f4c7f=a0_0x2d5970,_0x4aada3=expandHome(_0xe4ee9),_0x1bb8ad=a0_0x413ed5[_0x2f4c7f(0x17c)](_0x4aada3);try{const _0x46a292=await a0_0x9e3f8[_0x2f4c7f(0x1d9)](_0x1bb8ad);return normalizePath(_0x46a292);}catch(_0x388ef2){return normalizePath(_0x1bb8ad);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x2d5970(0x123)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x2d5970(0x196)](workspaceDir),logMcpStderr(a0_0x2d5970(0x188)+workspaceDir+a0_0x2d5970(0x12a)));}catch(a0_0xba8f40){logMcpStderr(a0_0x2d5970(0x153)+a0_0xba8f40);}async function detectWorkspaceRoot(_0x4f2d53){const _0x326c4b=a0_0x2d5970;let _0xde1be7=a0_0x413ed5['resolve'](_0x4f2d53);const _0x1db3f6=[_0x326c4b(0x1cc),_0x326c4b(0x19a),_0x326c4b(0xf8),_0x326c4b(0x139),_0x326c4b(0x1ac),_0x326c4b(0x19c),_0x326c4b(0x1d4),_0x326c4b(0x166),_0x326c4b(0x1af)];while(_0xde1be7!==a0_0x413ed5[_0x326c4b(0x1ba)](_0xde1be7)){for(const _0xfff69e of _0x1db3f6){const _0xe127cf=a0_0x413ed5['join'](_0xde1be7,_0xfff69e);try{return await a0_0x9e3f8['access'](_0xe127cf),normalizePath(_0xde1be7);}catch{}}_0xde1be7=a0_0x413ed5['dirname'](_0xde1be7);}return normalizePath(_0x4f2d53);}await Promise['all'](args[a0_0x2d5970(0x1a2)](async _0x3f22c8=>{const _0x1c5ec1=a0_0x2d5970;try{const _0x4af50e=await a0_0x9e3f8[_0x1c5ec1(0x1bb)](expandHome(_0x3f22c8));!_0x4af50e[_0x1c5ec1(0xe9)]()&&(logMcpStderr(_0x1c5ec1(0x17b)+_0x3f22c8+_0x1c5ec1(0x134)),process[_0x1c5ec1(0x13e)](0x1));}catch(_0xa56bb){logMcpStderr(_0x1c5ec1(0x11a)+_0x3f22c8+':',_0xa56bb),process[_0x1c5ec1(0x13e)](0x1);}}));async function validatePath(_0x4b3af0){const _0x58f0c8=a0_0x2d5970,_0x15015e=expandHome(_0x4b3af0),_0x259115=a0_0x413ed5[_0x58f0c8(0x17c)](_0x15015e);try{const _0x5e1931=await a0_0x9e3f8[_0x58f0c8(0x1d9)](_0x259115);return _0x5e1931;}catch(_0xe8f141){if(_0xe8f141[_0x58f0c8(0x1ff)]===_0x58f0c8(0xfe)){const _0x4f368a=a0_0x413ed5[_0x58f0c8(0x1ba)](_0x259115);try{const _0x5c6813=await a0_0x9e3f8[_0x58f0c8(0x1d9)](_0x4f368a);return a0_0x413ed5[_0x58f0c8(0x183)](_0x5c6813,a0_0x413ed5['basename'](_0x259115));}catch{throw new Error(_0x58f0c8(0xfb)+_0x4f368a);}}throw _0xe8f141;}}const MorphEditFileArgsSchema=z[a0_0x2d5970(0x1e2)]({'path':z['string'](),'code_edit':z[a0_0x2d5970(0x203)]()[a0_0x2d5970(0x1b2)]('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z['string']()[a0_0x2d5970(0x1b2)]('A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.'),'dryRun':z[a0_0x2d5970(0xf3)]()[a0_0x2d5970(0x1c2)](![])[a0_0x2d5970(0x1b2)](a0_0x2d5970(0x120))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x2d5970(0x1b6),WarpGrepArgsSchema=z[a0_0x2d5970(0x1e2)]({'search_string':z[a0_0x2d5970(0x203)]()[a0_0x2d5970(0x1b2)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z['string']()['describe'](a0_0x2d5970(0x13c)),'search_type':z[a0_0x2d5970(0x162)]([a0_0x2d5970(0x1c2),a0_0x2d5970(0x194)])[a0_0x2d5970(0x146)]()[a0_0x2d5970(0x1b2)](a0_0x2d5970(0x165))}),WarpGrepGitHubArgsSchema=z[a0_0x2d5970(0x1e2)]({'search_string':z[a0_0x2d5970(0x203)]()[a0_0x2d5970(0x1b2)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x2d5970(0x203)]()[a0_0x2d5970(0x146)]()[a0_0x2d5970(0x1b2)](a0_0x2d5970(0xfa)),'owner_repo':z[a0_0x2d5970(0x203)]()[a0_0x2d5970(0x146)]()['describe'](a0_0x2d5970(0x179)),'branch':z[a0_0x2d5970(0x203)]()[a0_0x2d5970(0x146)]()[a0_0x2d5970(0x1b2)](a0_0x2d5970(0x1a3))}),CodebaseSearchArgsSchema=z[a0_0x2d5970(0x1e2)]({'query':z[a0_0x2d5970(0x203)]()[a0_0x2d5970(0x1b2)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x2d5970(0x203)]()[a0_0x2d5970(0x1b2)](a0_0x2d5970(0x1ed)),'branch':z['string']()['optional']()['describe'](a0_0x2d5970(0x148)),'commitHash':z[a0_0x2d5970(0x203)]()[a0_0x2d5970(0x146)]()['describe'](a0_0x2d5970(0x185)),'targetDirectories':z[a0_0x2d5970(0xf9)](z[a0_0x2d5970(0x203)]())[a0_0x2d5970(0x1c2)]([])['describe']('Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all'),'limit':z[a0_0x2d5970(0xf2)]()['optional']()[a0_0x2d5970(0x1c2)](0xa)['describe']('Max\x20results\x20to\x20return')}),server=new Server({'name':'morph-mcp','version':a0_0x2d5970(0x1e5)},{'capabilities':{'tools':{}}});server[a0_0x2d5970(0x1a5)](ListToolsRequestSchema,async()=>{const _0x4be531=a0_0x2d5970,_0x142149=[{'name':_0x4be531(0x104),'description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a'+_0x4be531(0x1f0)+'🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a'+_0x4be531(0xe5)+_0x4be531(0x171)+_0x4be531(0x118)+_0x4be531(0x135)+_0x4be531(0x19d)+_0x4be531(0x157)+_0x4be531(0x16c)+'ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a'+'Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a'+_0x4be531(0x18e)+_0x4be531(0x1c4)+_0x4be531(0xe7)+_0x4be531(0x195)+_0x4be531(0x1e0)+_0x4be531(0x1ce)+_0x4be531(0xfc)+_0x4be531(0x1e4)+_0x4be531(0x154)+_0x4be531(0x1d5)+_0x4be531(0xe6),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x4be531(0x14e),'description':_0x4be531(0x202)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+'Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20'+_0x4be531(0x18a)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x4a631e=_0x142149[_0x4be531(0x1b7)](_0x62cad6=>{const _0x53feca=_0x4be531;if(DISABLED_TOOLS['has'](_0x62cad6['name']))return console['error'](_0x53feca(0x108)+_0x62cad6[_0x53feca(0x12e)]+_0x53feca(0x1e1)),![];if(_0x53feca(0x11d)in _0x62cad6&&_0x62cad6[_0x53feca(0x11d)]&&!MORPH_API_KEY)return logMcpStderr(_0x53feca(0x150)+_0x62cad6[_0x53feca(0x12e)]+_0x53feca(0x1f6)),![];return!![];});return{'tools':_0x4a631e[_0x4be531(0x1a2)](_0x278bcb=>({'name':_0x278bcb[_0x4be531(0x12e)],'description':_0x278bcb['description'],'inputSchema':_0x278bcb[_0x4be531(0x1b3)]}))};}),server[a0_0x2d5970(0x1a5)](CallToolRequestSchema,async _0x37a2a0=>{const _0x55e5b6=a0_0x2d5970,{name:_0x47b613,arguments:_0xee3c97}=_0x37a2a0[_0x55e5b6(0x1f7)];try{if(DISABLED_TOOLS[_0x55e5b6(0x1a7)](_0x47b613))throw new Error(_0x55e5b6(0x122)+_0x47b613+_0x55e5b6(0x102));switch(_0x47b613){case'edit_file':{const _0x2ed08=_0xee3c97&&typeof _0xee3c97===_0x55e5b6(0x1e2)&&_0x55e5b6(0x16e)in _0xee3c97&&!(_0x55e5b6(0x161)in _0xee3c97)?{..._0xee3c97,'instruction':_0xee3c97['instructions'],'instructions':undefined}:_0xee3c97,_0x1553aa=MorphEditFileArgsSchema[_0x55e5b6(0x15c)](_0x2ed08);if(!_0x1553aa['success'])throw new Error(_0x55e5b6(0x15b)+_0x1553aa[_0x55e5b6(0x1e8)]);const _0x2ceb94=await validatePath(_0x1553aa[_0x55e5b6(0x1c9)]['path']);let _0x31bd0e=null,_0x120ddd=!![],_0x24286a=null;try{_0x31bd0e=await a0_0x9e3f8[_0x55e5b6(0x1ec)](_0x2ceb94,'utf-8');}catch(_0x3aa34c){const _0x55266f=_0x3aa34c[_0x55e5b6(0x1ff)];_0x55266f==='ENOENT'?(_0x120ddd=![],_0x31bd0e=''):(_0x24286a=_0x55e5b6(0x1f5)+(_0x55266f||_0x55e5b6(0x184))+_0x55e5b6(0x19b)+(_0x3aa34c instanceof Error?_0x3aa34c[_0x55e5b6(0x1b4)]:String(_0x3aa34c)),logMcpStderr(_0x55e5b6(0x150)+_0x24286a));}let _0x3d850e;try{const _0x27fc24=MORPH_API_KEY;if(!_0x27fc24)throw new Error(_0x55e5b6(0x127));const _0x32685f=a0_0x413ed5['dirname'](_0x2ceb94),_0x5dfc56=a0_0x413ed5[_0x55e5b6(0x1aa)](_0x2ceb94),_0x1ca294=await executeEditFile({'target_filepath':_0x5dfc56,'code_edit':_0x1553aa[_0x55e5b6(0x1c9)]['code_edit'],'instructions':_0x1553aa[_0x55e5b6(0x1c9)][_0x55e5b6(0x161)]},{'morphApiKey':_0x27fc24,'morphApiUrl':MORPH_API_URL,'baseDir':_0x32685f,'autoWrite':!_0x1553aa[_0x55e5b6(0x1c9)][_0x55e5b6(0x1fa)],'generateUdiff':![],'debug':![]});_0x3d850e=_0x1ca294[_0x55e5b6(0x140)];if(!_0x1ca294[_0x55e5b6(0x14b)])throw new Error(_0x1ca294[_0x55e5b6(0x1e8)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x5441f0=_0x1ca294[_0x55e5b6(0x174)],_0x4f31bb=_0x55e5b6(0x1fd)+_0x5441f0[_0x55e5b6(0x131)]+',\x20removed\x20'+_0x5441f0['linesRemoved']+_0x55e5b6(0x15a)+_0x5441f0[_0x55e5b6(0x180)];if(_0x1553aa[_0x55e5b6(0x1c9)][_0x55e5b6(0x1fa)])return{'content':[{'type':_0x55e5b6(0x192),'text':'Morph\x20Edit\x20Preview'+(_0x120ddd?'':_0x55e5b6(0x1be))+':\x20'+_0x1553aa[_0x55e5b6(0x1c9)][_0x55e5b6(0x161)]+_0x55e5b6(0x1d6)+_0x4f31bb+_0x55e5b6(0x193)+_0x1553aa[_0x55e5b6(0x1c9)][_0x55e5b6(0x1d7)]+'.'}]};return{'content':[{'type':_0x55e5b6(0x192),'text':_0x55e5b6(0x1e9)+(_0x120ddd?_0x55e5b6(0xf5):_0x55e5b6(0x106))+':\x20'+_0x1553aa['data'][_0x55e5b6(0x161)]+_0x55e5b6(0x1d6)+_0x4f31bb+'.\x20Path:\x20'+_0x1553aa[_0x55e5b6(0x1c9)]['path']+'.'}]};}catch(_0x21ee64){const _0xa90dfc=_0x21ee64 instanceof Error?_0x21ee64[_0x55e5b6(0x1b4)]:String(_0x21ee64);return reportMorphError({'error_message':_0xa90dfc,'error_type':_0x21ee64 instanceof Error?_0x21ee64['constructor'][_0x55e5b6(0x12e)]:_0x55e5b6(0x1f3),'context':{'tool':_0x55e5b6(0x104),'completion_id':_0x3d850e,'file_path':_0x1553aa[_0x55e5b6(0x1c9)][_0x55e5b6(0x1d7)],'validated_path':_0x2ceb94,'instruction':_0x1553aa[_0x55e5b6(0x1c9)][_0x55e5b6(0x161)],'model':'morph-v3-fast','dry_run':_0x1553aa[_0x55e5b6(0x1c9)]['dryRun'],'file_exists':_0x120ddd,'file_read_error':_0x24286a,'file_readable':_0x31bd0e!==null,'request_content':{'path':_0x1553aa[_0x55e5b6(0x1c9)][_0x55e5b6(0x1d7)],'code_edit':_0x1553aa[_0x55e5b6(0x1c9)][_0x55e5b6(0x1e3)],'instruction':_0x1553aa[_0x55e5b6(0x1c9)][_0x55e5b6(0x161)],'original_code':_0x31bd0e!==null?_0x31bd0e['length']>0xc350?_0x31bd0e['substring'](0x0,0xc350)+_0x55e5b6(0x197)+_0x31bd0e['length']+_0x55e5b6(0x10f):_0x31bd0e:'[could\x20not\x20read\x20file:\x20'+(_0x24286a||'unknown\x20error')+']','original_code_length':_0x31bd0e?.[_0x55e5b6(0x123)]??0x0,'model':_0x55e5b6(0x144),'dry_run':_0x1553aa[_0x55e5b6(0x1c9)]['dryRun']}},'stack_trace':_0x21ee64 instanceof Error?_0x21ee64['stack']:undefined,'source':_0x55e5b6(0x1b9)})[_0x55e5b6(0x147)](()=>{}),{'content':[{'type':_0x55e5b6(0x192),'text':_0x55e5b6(0x175)+_0xa90dfc}],'isError':!![]};}}case _0x55e5b6(0x14e):{const _0x4a4689=WarpGrepArgsSchema[_0x55e5b6(0x15c)](_0xee3c97);if(!_0x4a4689[_0x55e5b6(0x14b)])return{'content':[{'type':_0x55e5b6(0x192),'text':_0x55e5b6(0x130)+_0x4a4689[_0x55e5b6(0x1e8)]}],'isError':!![]};const _0x2d2cf7=_0x62819d=>{const _0x5ad26c=_0x55e5b6,_0x6bdc74=[];for(const _0x1b705b of _0x62819d||[]){if(_0x1b705b[_0x5ad26c(0x143)]==='assistant'&&Array[_0x5ad26c(0x15e)](_0x1b705b[_0x5ad26c(0x14d)]))for(const _0x1dd012 of _0x1b705b[_0x5ad26c(0x14d)]){try{const _0xabca79=_0x1dd012[_0x5ad26c(0x151)]?.['name'],_0x41ca82=JSON[_0x5ad26c(0x17e)](_0x1dd012[_0x5ad26c(0x151)]?.[_0x5ad26c(0x1dd)]||'{}');if(_0xabca79===_0x5ad26c(0x14a))_0x6bdc74[_0x5ad26c(0x196)](_0x5ad26c(0x101)+_0x41ca82[_0x5ad26c(0x16f)]+'\x27\x20'+(_0x41ca82['path']||'.'));else{if(_0xabca79===_0x5ad26c(0x1d0))_0x6bdc74[_0x5ad26c(0x196)](_0x5ad26c(0x1a4)+_0x41ca82['path']);else{if(_0xabca79==='list_directory')_0x6bdc74[_0x5ad26c(0x196)](_0x5ad26c(0xe8)+(_0x41ca82['command']||'.'));else{if(_0xabca79===_0x5ad26c(0x1ea))_0x6bdc74[_0x5ad26c(0x196)](_0x5ad26c(0x14c)+_0x41ca82[_0x5ad26c(0x16f)]+'\x27\x20'+(_0x41ca82[_0x5ad26c(0x1d7)]||'.'));else _0xabca79===_0x5ad26c(0x1fb)&&_0x6bdc74[_0x5ad26c(0x196)]('finish');}}}}catch{}}}return _0x6bdc74;},_0x43d4f3=_0x505389=>{const _0x261f3e=_0x55e5b6,_0x5c2629=[];if(!_0x505389||!Array[_0x261f3e(0x15e)](_0x505389))return _0x5c2629;const _0xaf234f=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x261f3e(0x10b),'tool':_0x261f3e(0x1d0)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x261f3e(0x160),'tool':_0x261f3e(0x1d0)},{'pattern':/\[READ ERROR\]/,'error_type':_0x261f3e(0x170),'tool':_0x261f3e(0x1d0)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x261f3e(0x1f4),'tool':_0x261f3e(0x1d0)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x261f3e(0x1d3),'tool':_0x261f3e(0x10d)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x261f3e(0x1f8),'tool':_0x261f3e(0x10d)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x261f3e(0x1f4),'tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':_0x261f3e(0x121),'tool':_0x261f3e(0x1d0)},{'pattern':/not a text file/,'error_type':'BinaryFile','tool':_0x261f3e(0x1d0)},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':_0x261f3e(0x1d0)},{'pattern':/Error reading file:/,'error_type':_0x261f3e(0x170),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x261f3e(0x1ee),'tool':_0x261f3e(0x184)}];let _0x4a843c=0x0;for(const _0x317948 of _0x505389){_0x317948[_0x261f3e(0x143)]===_0x261f3e(0x115)&&Array[_0x261f3e(0x15e)](_0x317948['tool_calls'])&&_0x4a843c++;const _0x89e717=_0x317948[_0x261f3e(0x13a)];if((_0x317948[_0x261f3e(0x143)]==='tool'||_0x317948['role']===_0x261f3e(0x168))&&_0x89e717&&typeof _0x89e717===_0x261f3e(0x203))for(const {pattern:_0x3c3f21,error_type:_0x32c364,tool:_0x26e570}of _0xaf234f){const _0x15bb2d=_0x89e717[_0x261f3e(0x124)](new RegExp(_0x3c3f21[_0x261f3e(0x12f)],'g'));if(_0x15bb2d)for(const _0x20b1b8 of _0x15bb2d){const _0x22e40c=_0x89e717['indexOf'](_0x20b1b8),_0x5f132a=_0x89e717[_0x261f3e(0x15f)](_0x22e40c,Math['min'](_0x22e40c+0xc8,_0x89e717[_0x261f3e(0x123)]));_0x5c2629[_0x261f3e(0x196)]({'tool':_0x26e570,'error_type':_0x32c364,'error_message':_0x5f132a[_0x261f3e(0x1e6)]('\x0a')[0x0],'turn':_0x4a843c});}}}return _0x5c2629;};try{const _0x1ad30e=a0_0x413ed5[_0x55e5b6(0x17c)](_0x4a4689['data']['repo_path']),_0x285d62=_0x4a4689[_0x55e5b6(0x1c9)]['search_type'],_0x30cbac=_0x285d62==='node_modules'?{'allowNames':['node_modules']}:undefined,_0x12321d=new LocalRipgrepProvider(_0x1ad30e,undefined,_0x30cbac),_0x362f57=await runWarpGrep({'searchTerm':_0x4a4689['data'][_0x55e5b6(0x19e)],'repoRoot':_0x1ad30e,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x12321d,'search_type':_0x285d62}),_0x3a3753=_0x43d4f3(_0x362f57[_0x55e5b6(0x163)]);_0x3a3753[_0x55e5b6(0x123)]>0x0&&reportMorphError({'error_message':_0x55e5b6(0x173)+_0x3a3753['length']+_0x55e5b6(0x18b),'error_type':_0x55e5b6(0x190),'level':_0x55e5b6(0x138),'tool':_0x55e5b6(0x14e),'context':{'repo_path':_0x4a4689[_0x55e5b6(0x1c9)][_0x55e5b6(0x1b0)],'query':_0x4a4689[_0x55e5b6(0x1c9)][_0x55e5b6(0x19e)],'model':_0x55e5b6(0xf4),'termination_reason':_0x362f57['terminationReason'],'sub_tool_errors':_0x3a3753,'timings':_0x362f57[_0x55e5b6(0x109)],'tool_calls':_0x2d2cf7(_0x362f57[_0x55e5b6(0x163)]),'messages':_0x362f57['messages']?.[_0x55e5b6(0x1a2)](_0x163f36=>({'role':_0x163f36[_0x55e5b6(0x143)],'content':_0x163f36[_0x55e5b6(0x13a)],..._0x163f36[_0x55e5b6(0x14d)]?{'tool_calls':_0x163f36[_0x55e5b6(0x14d)][_0x55e5b6(0x123)]}:{},..._0x163f36[_0x55e5b6(0xff)]?{'tool_call_id':_0x163f36[_0x55e5b6(0xff)]}:{}}))},'source':_0x55e5b6(0x1b9)})[_0x55e5b6(0x147)](()=>{});let _0x3c61e1='';if(_0x362f57[_0x55e5b6(0xed)]===_0x55e5b6(0x17a)&&_0x362f57[_0x55e5b6(0x1fb)]?.[_0x55e5b6(0x1f1)]?.['files']){const _0x50e5db=_0x362f57[_0x55e5b6(0x1fb)][_0x55e5b6(0x1f1)][_0x55e5b6(0x17f)];if(_0x50e5db['length']===0x0)return _0x3c61e1=_0x362f57[_0x55e5b6(0x1fb)][_0x55e5b6(0x13b)]||_0x55e5b6(0x11e),{'content':[{'type':_0x55e5b6(0x192),'text':_0x3c61e1}]};const _0x3b90e6=[],_0x2e2dff=[_0x55e5b6(0x1bc)];for(const _0x2e9c1c of _0x362f57[_0x55e5b6(0x163)]){if(_0x2e9c1c[_0x55e5b6(0x143)]===_0x55e5b6(0x115)&&Array[_0x55e5b6(0x15e)](_0x2e9c1c[_0x55e5b6(0x14d)]))for(const _0x20dd55 of _0x2e9c1c[_0x55e5b6(0x14d)]){try{const _0x3db6f6=_0x20dd55['function']?.[_0x55e5b6(0x12e)],_0x35c49a=JSON[_0x55e5b6(0x17e)](_0x20dd55[_0x55e5b6(0x151)]?.[_0x55e5b6(0x1dd)]||'{}');if(_0x3db6f6===_0x55e5b6(0x14a))_0x2e2dff[_0x55e5b6(0x196)](_0x55e5b6(0x12d)+_0x35c49a[_0x55e5b6(0x16f)]+_0x55e5b6(0x11b)+(_0x35c49a['path']||'.')+'`');else{if(_0x3db6f6===_0x55e5b6(0x1d0))_0x2e2dff['push'](_0x55e5b6(0x119)+_0x35c49a[_0x55e5b6(0x1d7)]+'`');else{if(_0x3db6f6==='list_directory')_0x2e2dff[_0x55e5b6(0x196)](_0x55e5b6(0x137)+(_0x35c49a['command']||'.')+'`');else _0x3db6f6==='glob'&&_0x2e2dff[_0x55e5b6(0x196)]('-\x20Glob\x20search\x20`'+_0x35c49a[_0x55e5b6(0x16f)]+_0x55e5b6(0x201)+(_0x35c49a[_0x55e5b6(0x1d7)]||'.')+'`');}}}catch{}}}_0x3b90e6[_0x55e5b6(0x196)](_0x2e2dff[_0x55e5b6(0x183)]('\x0a'));const _0x378ccf=['',_0x55e5b6(0x1fc)];for(const _0x5f58b8 of _0x50e5db){if(_0x5f58b8[_0x55e5b6(0x200)]==='*')_0x378ccf[_0x55e5b6(0x196)]('-\x20'+_0x5f58b8[_0x55e5b6(0x1d7)]+':*');else{if(Array[_0x55e5b6(0x15e)](_0x5f58b8[_0x55e5b6(0x200)])){const _0x1a9a56=_0x5f58b8[_0x55e5b6(0x200)][_0x55e5b6(0x1a2)](([_0x401305,_0x5f0160])=>{if(_0x401305===_0x5f0160)return''+_0x401305;return _0x401305+'-'+_0x5f0160;});_0x378ccf[_0x55e5b6(0x196)]('-\x20'+_0x5f58b8[_0x55e5b6(0x1d7)]+':'+_0x1a9a56[_0x55e5b6(0x183)](','));}else _0x378ccf[_0x55e5b6(0x196)]('-\x20'+_0x5f58b8['path']+':*');}}_0x378ccf[_0x55e5b6(0x196)](''),_0x3b90e6[_0x55e5b6(0x196)](_0x378ccf[_0x55e5b6(0x183)]('\x0a')),_0x3b90e6[_0x55e5b6(0x196)]('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x40cfc5=[];for(const _0x1d1118 of _0x50e5db){let _0x21c030=a0_0x413ed5[_0x55e5b6(0x17c)](_0x4a4689['data'][_0x55e5b6(0x1b0)],_0x1d1118[_0x55e5b6(0x1d7)]),_0x8be657=null,_0x87bc50=null;try{_0x8be657=await a0_0x9e3f8[_0x55e5b6(0x1ec)](_0x21c030,{'encoding':_0x55e5b6(0x100)});}catch(_0x95555f){const _0x3e7d9b=fixPathRepetition(_0x21c030);if(_0x3e7d9b)try{_0x8be657=await a0_0x9e3f8[_0x55e5b6(0x1ec)](_0x3e7d9b,{'encoding':_0x55e5b6(0x100)}),_0x21c030=_0x3e7d9b;}catch{_0x87bc50=_0x95555f instanceof Error?_0x95555f:new Error(String(_0x95555f));}else _0x87bc50=_0x95555f instanceof Error?_0x95555f:new Error(String(_0x95555f));}if(_0x8be657!==null){const _0x216920=_0x8be657[_0x55e5b6(0x1e6)](/\r?\n/),_0x5a2780=['<file\x20path=\x22'+_0x1d1118[_0x55e5b6(0x1d7)]+'\x22>'];if(_0x1d1118[_0x55e5b6(0x200)]==='*'||!Array[_0x55e5b6(0x15e)](_0x1d1118['lines']))for(let _0x4e229a=0x1;_0x4e229a<=_0x216920[_0x55e5b6(0x123)];_0x4e229a++){const _0x4bea1c=_0x216920[_0x4e229a-0x1];_0x5a2780[_0x55e5b6(0x196)](_0x4e229a+'|\x20'+_0x4bea1c);}else for(const [_0x85264,_0x136207]of _0x1d1118[_0x55e5b6(0x200)]){_0x5a2780['length']>0x1&&_0x5a2780[_0x55e5b6(0x196)]('');for(let _0xd68868=_0x85264;_0xd68868<=_0x136207&&_0xd68868<=_0x216920['length'];_0xd68868++){const _0x4f6142=_0x216920[_0xd68868-0x1];_0x5a2780[_0x55e5b6(0x196)](_0xd68868+'|\x20'+_0x4f6142);}}_0x5a2780[_0x55e5b6(0x196)](_0x55e5b6(0xea)),_0x40cfc5['push'](_0x5a2780[_0x55e5b6(0x183)]('\x0a'));}else _0x40cfc5[_0x55e5b6(0x196)](_0x55e5b6(0x129)+_0x1d1118['path']+_0x55e5b6(0x18d)+(_0x87bc50?.[_0x55e5b6(0x1b4)]||_0x55e5b6(0x181))+_0x55e5b6(0x1cf));}_0x3b90e6[_0x55e5b6(0x196)](_0x40cfc5['join']('\x0a\x0a')),_0x3c61e1=_0x3b90e6['join']('\x0a');const _0x4dce51=_0x362f57[_0x55e5b6(0xeb)]?.['filter'](_0x154c6c=>_0x154c6c[_0x55e5b6(0x1b4)]?.[_0x55e5b6(0x189)](_0x55e5b6(0x1c0)))||[];if(_0x4dce51[_0x55e5b6(0x123)]>0x0){const _0x5c9433=_0x4dce51[_0x55e5b6(0x1a2)](_0x4e4106=>_0x4e4106[_0x55e5b6(0x1b4)])[_0x55e5b6(0x183)](';\x20');reportMorphError({'error_message':_0x5c9433,'error_type':_0x55e5b6(0x105),'context':{'tool':_0x55e5b6(0x14e),'repo_path':_0x4a4689[_0x55e5b6(0x1c9)][_0x55e5b6(0x1b0)],'query':_0x4a4689[_0x55e5b6(0x1c9)][_0x55e5b6(0x19e)],'model':'morph-warp-grep-v2.1','termination_reason':_0x55e5b6(0x199),'error_count':_0x4dce51[_0x55e5b6(0x123)],'is_timeout':![],'timings':_0x362f57[_0x55e5b6(0x109)],'files_attempted':_0x50e5db[_0x55e5b6(0x1a2)](_0x6c1b39=>({'path':_0x6c1b39['path'],'lines':_0x6c1b39[_0x55e5b6(0x200)]})),'tool_calls':_0x2d2cf7(_0x362f57[_0x55e5b6(0x163)]),'messages':_0x362f57[_0x55e5b6(0x163)]?.['map'](_0x2f695c=>({'role':_0x2f695c[_0x55e5b6(0x143)],'content':_0x2f695c[_0x55e5b6(0x13a)],..._0x2f695c['tool_calls']?{'tool_calls':_0x2f695c[_0x55e5b6(0x14d)][_0x55e5b6(0x123)]}:{},..._0x2f695c[_0x55e5b6(0xff)]?{'tool_call_id':_0x2f695c[_0x55e5b6(0xff)]}:{}})),'request_content':{'query':_0x4a4689['data'][_0x55e5b6(0x19e)],'repo_path':_0x4a4689['data'][_0x55e5b6(0x1b0)],'repoRoot':a0_0x413ed5['resolve'](_0x4a4689[_0x55e5b6(0x1c9)][_0x55e5b6(0x1b0)]),'model':_0x55e5b6(0xf4)}},'source':_0x55e5b6(0x1b9)})['catch'](()=>{});}}else{if(_0x362f57[_0x55e5b6(0xed)]===_0x55e5b6(0x1de)&&_0x362f57[_0x55e5b6(0xeb)]['length']>0x0){const _0x2e7d33=_0x362f57[_0x55e5b6(0xeb)][_0x55e5b6(0x1a2)](_0x348099=>_0x348099[_0x55e5b6(0x1b4)])[_0x55e5b6(0x183)](';\x20');_0x3c61e1=_0x55e5b6(0x17b)+_0x2e7d33;const _0x114d1a=_0x2e7d33[_0x55e5b6(0x1c3)]()[_0x55e5b6(0xf0)](_0x55e5b6(0x1c6))||_0x2e7d33[_0x55e5b6(0x1c3)]()[_0x55e5b6(0xf0)](_0x55e5b6(0x1b8))||_0x2e7d33[_0x55e5b6(0x1c3)]()[_0x55e5b6(0xf0)](_0x55e5b6(0x16d)),_0x5caab2=_0x362f57[_0x55e5b6(0x1fb)]?.['metadata']?.['files'],_0x30cda5=_0x362f57[_0x55e5b6(0xeb)][0x0];reportMorphError({'error_message':_0x2e7d33,'error_type':_0x114d1a?_0x55e5b6(0x1c5):_0x30cda5?.[_0x55e5b6(0x125)]?.[_0x55e5b6(0x12e)]||_0x55e5b6(0x1fe),'context':{'tool':_0x55e5b6(0x14e),'repo_path':_0x4a4689[_0x55e5b6(0x1c9)][_0x55e5b6(0x1b0)],'query':_0x4a4689[_0x55e5b6(0x1c9)]['search_string'],'model':_0x55e5b6(0xf4),'termination_reason':_0x362f57[_0x55e5b6(0xed)],'error_count':_0x362f57[_0x55e5b6(0xeb)][_0x55e5b6(0x123)],'is_timeout':_0x114d1a,'timings':_0x362f57[_0x55e5b6(0x109)],'files_attempted':_0x5caab2?.[_0x55e5b6(0x1a2)](_0x1a87f7=>({'path':_0x1a87f7[_0x55e5b6(0x1d7)],'lines':_0x1a87f7[_0x55e5b6(0x200)]})),'tool_calls':_0x2d2cf7(_0x362f57[_0x55e5b6(0x163)]),'messages':_0x362f57[_0x55e5b6(0x163)]?.[_0x55e5b6(0x1a2)](_0x2ce52b=>({'role':_0x2ce52b['role'],'content':_0x2ce52b[_0x55e5b6(0x13a)],..._0x2ce52b[_0x55e5b6(0x14d)]?{'tool_calls':_0x2ce52b[_0x55e5b6(0x14d)][_0x55e5b6(0x123)]}:{},..._0x2ce52b[_0x55e5b6(0xff)]?{'tool_call_id':_0x2ce52b['tool_call_id']}:{}})),'request_content':{'query':_0x4a4689[_0x55e5b6(0x1c9)][_0x55e5b6(0x19e)],'repo_path':_0x4a4689[_0x55e5b6(0x1c9)][_0x55e5b6(0x1b0)],'repoRoot':a0_0x413ed5['resolve'](_0x4a4689['data'][_0x55e5b6(0x1b0)]),'model':_0x55e5b6(0xf4)}},'stack_trace':_0x30cda5?.[_0x55e5b6(0x1a1)]||undefined,'source':_0x55e5b6(0x1b9)})[_0x55e5b6(0x147)](()=>{});}else _0x3c61e1=_0x55e5b6(0x198);}return{'content':[{'type':_0x55e5b6(0x192),'text':_0x3c61e1}]};}catch(_0x401d9a){const _0x244036=_0x401d9a instanceof Error?_0x401d9a[_0x55e5b6(0x1b4)]:String(_0x401d9a),_0x940cd1=_0x244036[_0x55e5b6(0x1c3)]()[_0x55e5b6(0xf0)](_0x55e5b6(0x1c6))||_0x244036['toLowerCase']()[_0x55e5b6(0xf0)](_0x55e5b6(0x1b8))||_0x244036[_0x55e5b6(0x1c3)]()[_0x55e5b6(0xf0)](_0x55e5b6(0x16d))||_0x401d9a instanceof Error&&_0x401d9a[_0x55e5b6(0x12e)]===_0x55e5b6(0x1c5);return reportMorphError({'error_message':_0x244036,'error_type':_0x940cd1?'TimeoutError':_0x401d9a instanceof Error?_0x401d9a['constructor'][_0x55e5b6(0x12e)]:'UnknownError','context':{'tool':_0x55e5b6(0x14e),'repo_path':_0x4a4689[_0x55e5b6(0x1c9)][_0x55e5b6(0x1b0)],'query':_0x4a4689[_0x55e5b6(0x1c9)][_0x55e5b6(0x19e)],'model':_0x55e5b6(0xf4),'is_timeout':_0x940cd1,'exception_phase':_0x55e5b6(0x1c7),'request_content':{'query':_0x4a4689[_0x55e5b6(0x1c9)][_0x55e5b6(0x19e)],'repo_path':_0x4a4689[_0x55e5b6(0x1c9)]['repo_path'],'repoRoot':a0_0x413ed5[_0x55e5b6(0x17c)](_0x4a4689['data'][_0x55e5b6(0x1b0)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x401d9a instanceof Error?_0x401d9a['stack']:undefined,'source':_0x55e5b6(0x1b9)})[_0x55e5b6(0x147)](()=>{}),{'content':[{'type':_0x55e5b6(0x192),'text':_0x55e5b6(0x103)+_0x244036}],'isError':![]};}}case'github_codebase_search':{const _0x429088=WarpGrepGitHubArgsSchema['safeParse'](_0xee3c97);if(!_0x429088[_0x55e5b6(0x14b)])return{'content':[{'type':'text','text':_0x55e5b6(0x130)+_0x429088[_0x55e5b6(0x1e8)]}],'isError':!![]};const _0x120917=_0x429088[_0x55e5b6(0x1c9)][_0x55e5b6(0xee)]||_0x429088[_0x55e5b6(0x1c9)][_0x55e5b6(0x14f)];if(!_0x120917)return{'content':[{'type':_0x55e5b6(0x192),'text':'Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id'}],'isError':!![]};const _0x203979=MORPH_API_KEY;if(!_0x203979)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x232045=Date[_0x55e5b6(0x1a8)]();logMcpStderr(_0x55e5b6(0x1b1)+_0x120917+_0x55e5b6(0x10c)+_0x429088[_0x55e5b6(0x1c9)]['search_string']+'\x22');try{const _0x2ac60d=new WarpGrepClient({'morphApiKey':_0x203979,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x4befbf=await _0x2ac60d[_0x55e5b6(0x156)]({'searchTerm':_0x429088[_0x55e5b6(0x1c9)][_0x55e5b6(0x19e)],'github':_0x120917,'branch':_0x429088['data'][_0x55e5b6(0xfd)]}),_0x31efec=Date[_0x55e5b6(0x1a8)]()-_0x232045;logMcpStderr('[github_codebase_search]\x20Done\x20in\x20'+_0x31efec+_0x55e5b6(0x1f2)+_0x4befbf[_0x55e5b6(0x14b)]);const _0xf10d62=formatResult(_0x4befbf);return{'content':[{'type':'text','text':_0xf10d62}]};}catch(_0x75c586){const _0x5391e9=Date[_0x55e5b6(0x1a8)]()-_0x232045,_0x312d7c=_0x75c586 instanceof Error?_0x75c586[_0x55e5b6(0x1b4)]:String(_0x75c586);return logMcpStderr('[github_codebase_search]\x20Failed\x20in\x20'+_0x5391e9+_0x55e5b6(0x133),_0x312d7c),reportMorphError({'error_message':_0x312d7c,'error_type':_0x75c586 instanceof Error?_0x75c586[_0x55e5b6(0x125)][_0x55e5b6(0x12e)]:_0x55e5b6(0x1f3),'context':{'tool':_0x55e5b6(0x110),'github_url':_0x120917,'search_string':_0x429088[_0x55e5b6(0x1c9)][_0x55e5b6(0x19e)],'branch':_0x429088[_0x55e5b6(0x1c9)][_0x55e5b6(0xfd)]},'stack_trace':_0x75c586 instanceof Error?_0x75c586[_0x55e5b6(0x1a1)]:undefined,'source':_0x55e5b6(0x1b9),'tool':_0x55e5b6(0x110),'latency_ms':_0x5391e9})[_0x55e5b6(0x147)](()=>{}),{'content':[{'type':'text','text':_0x55e5b6(0x149)+_0x312d7c}],'isError':![]};}}default:throw new Error(_0x55e5b6(0x1d8)+_0x47b613);}}catch(_0x5ba5a5){const _0x54a79b=_0x5ba5a5 instanceof Error?_0x5ba5a5[_0x55e5b6(0x1b4)]:String(_0x5ba5a5);return reportMorphError({'error_message':_0x54a79b,'error_type':_0x5ba5a5 instanceof Error?_0x5ba5a5['constructor'][_0x55e5b6(0x12e)]:'UnknownError','context':{'tool':_0x47b613,'arguments':_0xee3c97?JSON[_0x55e5b6(0x1dc)](_0xee3c97)[_0x55e5b6(0x15f)](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x5ba5a5 instanceof Error?_0x5ba5a5['stack']:undefined,'source':_0x55e5b6(0x1b9)})['catch'](()=>{}),{'content':[{'type':_0x55e5b6(0x192),'text':_0x55e5b6(0x17b)+_0x54a79b}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x7420f7){const _0x14e8fc=a0_0x2d5970,_0xa92c4d=await getValidRootDirectories(_0x7420f7);if(_0xa92c4d['length']>0x0)allowedDirectories=[..._0xa92c4d],logMcpStderr('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0xa92c4d[_0x14e8fc(0x123)]+'\x20valid\x20directories');else{logMcpStderr(_0x14e8fc(0x128));if(ENABLE_WORKSPACE_MODE)try{const _0x1dd01a=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x1dd01a&&(allowedDirectories=[_0x1dd01a],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x1dd01a));}catch(_0x29909b){logMcpStderr(_0x14e8fc(0x141)+_0x29909b);}}}server[a0_0x2d5970(0x155)](RootsListChangedNotificationSchema,async()=>{const _0x517ea6=a0_0x2d5970;try{const _0x43fcc2=await server['listRoots']();_0x43fcc2&&_0x517ea6(0x177)in _0x43fcc2&&await updateAllowedDirectoriesFromRoots(_0x43fcc2['roots']);}catch(_0x2f668c){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x2f668c instanceof Error?_0x2f668c['message']:String(_0x2f668c));}}),server[a0_0x2d5970(0x1db)]=async()=>{const _0x1d05e2=a0_0x2d5970,_0x5ec5cd=server[_0x1d05e2(0x1ca)]();if(_0x5ec5cd?.['roots'])try{const _0x4aceb2=await server[_0x1d05e2(0x117)]();_0x4aceb2&&'roots'in _0x4aceb2?await updateAllowedDirectoriesFromRoots(_0x4aceb2['roots']):logMcpStderr(_0x1d05e2(0x1f9));}catch(_0x5ba5d8){logMcpStderr(_0x1d05e2(0x1d2),_0x5ba5d8 instanceof Error?_0x5ba5d8['message']:String(_0x5ba5d8));}else{if(allowedDirectories[_0x1d05e2(0x123)]>0x0)logMcpStderr(_0x1d05e2(0x176),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x1d05e2(0x16b));else throw new Error(_0x1d05e2(0x1eb));}}};async function runServer(){const _0x3499f0=a0_0x2d5970,_0x19a5c9=new StdioServerTransport();await server['connect'](_0x19a5c9),logMcpStderr(_0x3499f0(0x1bd)),allowedDirectories[_0x3499f0(0x123)]===0x0&&logMcpStderr(_0x3499f0(0x164));}runServer()['catch'](_0x340b3b=>{const _0x1d0c01=a0_0x2d5970;logMcpStderr(_0x1d0c01(0x191),_0x340b3b),process[_0x1d0c01(0x13e)](0x1);});
|
|
2
|
+
const a0_0x4156c2=a0_0x4280;(function(_0x3b4c4e,_0x4d93dd){const _0x30c2ee=a0_0x4280,_0x49e3f4=_0x3b4c4e();while(!![]){try{const _0x56cba8=-parseInt(_0x30c2ee(0x158))/0x1*(-parseInt(_0x30c2ee(0x15d))/0x2)+parseInt(_0x30c2ee(0x193))/0x3*(-parseInt(_0x30c2ee(0x175))/0x4)+-parseInt(_0x30c2ee(0x178))/0x5+-parseInt(_0x30c2ee(0x125))/0x6*(parseInt(_0x30c2ee(0x1f7))/0x7)+-parseInt(_0x30c2ee(0x176))/0x8*(-parseInt(_0x30c2ee(0x156))/0x9)+-parseInt(_0x30c2ee(0x11c))/0xa*(parseInt(_0x30c2ee(0x210))/0xb)+parseInt(_0x30c2ee(0x1a4))/0xc;if(_0x56cba8===_0x4d93dd)break;else _0x49e3f4['push'](_0x49e3f4['shift']());}catch(_0x2dddb3){_0x49e3f4['push'](_0x49e3f4['shift']());}}}(a0_0x2052,0xeecb2));import{Server}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import{CallToolRequestSchema,ListToolsRequestSchema,RootsListChangedNotificationSchema}from'@modelcontextprotocol/sdk/types.js';function a0_0x4280(_0x9c0ce1,_0xe24550){_0x9c0ce1=_0x9c0ce1-0x10f;const _0x205212=a0_0x2052();let _0x4280d6=_0x205212[_0x9c0ce1];return _0x4280d6;}import a0_0x1447fd from'fs/promises';function a0_0x2052(){const _0x59f872=['Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','dryRun','dirname','MORPH_API_KEY','search_string','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','resolve','Warning:\x20','requiresApiKey','MORPH_WARP_GREP_TIMEOUT','description','timed\x20out','File\x20read\x20error:','linesAdded','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','unknown','user','\x20for:\x20\x22','7584010VFCpUu','-\x20Grepped\x20\x27','string','Failed\x20to\x20read\x20file:\x20','pattern','Preview\x20changes\x20without\x20applying\x20them.','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','\x22.\x20Known\x20tools:\x20','completed_with_file_errors','tool_calls','composer.json','\x20error(s)','\x27\x20in\x20`','floor','roots','0.2.0','Error\x20accessing\x20directory\x20','log','repo_path','sep','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','files','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','warn','ENOENT','79354TokSWO','-\x20Listed\x20directory\x20`','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','code','etimedout','Benefits:\x0a','utf-8','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','includes','Error\x20running\x20fast\x20context\x20search:\x20','readFile','@morphllm/morphmcp\x20','boolean','Here\x20is\x20the\x20content\x20of\x20files:\x0a','startsWith','stack','[codebase_search]\x20compaction\x20failed','metadata','[github_codebase_search]\x20Searching\x20','safeParse','WarpGrep\x20sub-tool\x20errors:\x20','code_edit','1630icyAkQ','env','constructor','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','.\x20Changes:\x20','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','stat','substring','6HigHiB','morph-warp-grep-v2.1','role','array','instructions','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','catch','https://morphllm.com/api/error-report','completed','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','Disabled\x20tools:\x20','messages','push','Bearer\x20','describe','Cargo.toml','path','\x0a...\x20(truncated,\x20total:\x20','searchGitHub','listRoots','every','basename','read\x20','function','WORKSPACE_ROOT','join','list_directory\x20','lines','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','grep','pyproject.toml','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','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.','.cursor','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','number','-\x20Read\x20file\x20`','message','errors','arguments','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','default','\x20\x20morph-mcp','has',',\x20modified\x20','setRequestHandler','homedir','262422AXrxUZ','.\x20Path:\x20','40153YRflQD','glob','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.','ms:','some','24dfNnZh','instruction','finish','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','TimeoutError',',\x20removed\x20','timings','unknown\x20error','[could\x20not\x20read\x20file:\x20','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','Specific\x20commit\x20hash\x20to\x20search','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','indexOf','mcp-filesystem','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','optional','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','Unknown\x20error','grep_search','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','\x20disabled\x20via\x20DISABLED_TOOLS','application/json','44rsYhWw','424NtuYZo','codebase_search','433885rFutyS','api-key','Repository\x20identifier','data','all','ReadError','length','\x20-\x20','Tool\x20','success','WarpGrepError','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','UnknownError','--version','\x0a</file>','package.json','\x20(new\x20file)','now','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','exit','access','content','[github_codebase_search]\x20Failed\x20in\x20','FileReadError','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','edit_file','425349aHbdHc','error','Morph\x20Edit\x20Preview','read','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','parse','`\x20in\x20`','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','branch','map','toLowerCase','Error:\x20','list_directory','assistant','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','FileNotFound','min','34279080MUfMPk','source','-\x20Glob\x20search\x20`','tool','slice','\x22>\x0a','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','match','\x20valid\x20directories','Invalid\x20arguments:\x20','object','\x20is\x20not\x20a\x20directory','filter','text','glob\x20\x27','realpath','tool_call_id','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','Applied','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','<file\x20path=\x22','false','../package.json','Relevant\x20context\x20found:','trim','split','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','SubToolError','morph-v3-fast','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','name','Max\x20results\x20to\x20return','node_modules','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','Rules:\x0a','oninitialized','SymlinkError','terminationReason','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','toISOString','.git','version','isArray','BinaryFile','❌\x20Morph\x20Edit\x20Failed:\x20','argv','\x20chars)','[github_codebase_search]\x20Done\x20in\x20','github_codebase_search','Tool\x20\x22','RipgrepError','isDirectory','payload','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','post','context','Fatal\x20error\x20running\x20server:','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','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','runWarpGrep_call','Created\x20File','DISABLED_TOOLS','timeout'];a0_0x2052=function(){return _0x59f872;};return a0_0x2052();}import a0_0x14f3ce from'path';import a0_0x4008c1 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0x3ac5d5 from'axios';function fixPathRepetition(_0x1eb9a6){const _0x24266d=a0_0x4280,_0x2c16c8=_0x1eb9a6[_0x24266d(0x1be)](a0_0x14f3ce[_0x24266d(0x20a)])[_0x24266d(0x1b0)](Boolean);if(_0x2c16c8[_0x24266d(0x17e)]<0x2)return null;for(let _0x357651=Math[_0x24266d(0x204)](_0x2c16c8[_0x24266d(0x17e)]/0x2);_0x357651>=0x1;_0x357651--){for(let _0x33df63=0x0;_0x33df63<=_0x2c16c8[_0x24266d(0x17e)]-0x2*_0x357651;_0x33df63++){const _0x45d5ff=_0x2c16c8[_0x24266d(0x1a8)](_0x33df63,_0x33df63+_0x357651),_0xfe21f1=_0x2c16c8['slice'](_0x33df63+_0x357651,_0x33df63+0x2*_0x357651);if(_0x45d5ff[_0x24266d(0x139)]((_0x17d85b,_0x5298d6)=>_0x17d85b===_0xfe21f1[_0x5298d6])){const _0x21d648=[..._0x2c16c8[_0x24266d(0x1a8)](0x0,_0x33df63),..._0x2c16c8['slice'](_0x33df63+_0x357651)];return a0_0x14f3ce[_0x24266d(0x20a)]+_0x21d648[_0x24266d(0x13e)](a0_0x14f3ce[_0x24266d(0x20a)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0xef69b9=a0_0x4280;try{const _0xe53463=require(_0xef69b9(0x1bb));return _0xe53463[_0xef69b9(0x1ce)]??_0xef69b9(0x1f4);}catch(_0x2eb3bf){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x2eb3bf),_0xef69b9(0x1f4);}}function printHelp(){const _0x5cd305=a0_0x4280;console[_0x5cd305(0x208)]('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x5cd305(0x208)](_0x5cd305(0x1da)),console[_0x5cd305(0x208)]('\x0aOptions:'),console[_0x5cd305(0x208)](_0x5cd305(0x1aa)),console['log'](_0x5cd305(0x172)),console[_0x5cd305(0x208)](_0x5cd305(0x147)),console[_0x5cd305(0x208)]('\x0aExamples:'),console['log'](_0x5cd305(0x151)),console['log'](_0x5cd305(0x1c6));}const cliArgs=process[a0_0x4156c2(0x1d2)]['slice'](0x2),VERSION_FLAGS=new Set([a0_0x4156c2(0x185),'-v','-V']),HELP_FLAGS=new Set(['--help','-h']);cliArgs[a0_0x4156c2(0x15c)](_0x15d50f=>VERSION_FLAGS['has'](_0x15d50f))&&(console[a0_0x4156c2(0x208)](a0_0x4156c2(0x111)+getPackageVersion()),process[a0_0x4156c2(0x18c)](0x0));cliArgs[a0_0x4156c2(0x15c)](_0x526802=>HELP_FLAGS[a0_0x4156c2(0x152)](_0x526802))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x20be01){const _0x278ec0=a0_0x4156c2;for(let _0x4674d2=0x0;_0x4674d2<cliArgs[_0x278ec0(0x17e)];_0x4674d2++){const _0x48b8be=cliArgs[_0x4674d2];if(_0x48b8be[_0x278ec0(0x114)]('--'+_0x20be01+'='))return _0x48b8be[_0x278ec0(0x1a8)](('--'+_0x20be01+'=')[_0x278ec0(0x17e)]);if(_0x48b8be==='--'+_0x20be01&&_0x4674d2+0x1<cliArgs['length'])return cliArgs[_0x4674d2+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x4156c2(0x17e)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x4156c2(0x152)](arg)||HELP_FLAGS[a0_0x4156c2(0x152)](arg))continue;if(arg[a0_0x4156c2(0x114)]('--api-key='))continue;if(arg==='--api-key'){i++;continue;}args['push'](arg);}const WORKSPACE_ROOT=process[a0_0x4156c2(0x11d)][a0_0x4156c2(0x13d)]||process[a0_0x4156c2(0x11d)]['PWD']||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0x4156c2(0x11d)]['ENABLE_WORKSPACE_MODE']!==a0_0x4156c2(0x1ba),MORPH_API_KEY=getCliArg(a0_0x4156c2(0x179))??process[a0_0x4156c2(0x11d)][a0_0x4156c2(0x1e7)],MORPH_API_URL=process['env']['MORPH_API_URL'],MORPH_WARP_GREP_TIMEOUT=process[a0_0x4156c2(0x11d)][a0_0x4156c2(0x1ee)]?parseInt(process[a0_0x4156c2(0x11d)][a0_0x4156c2(0x1ee)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x4156c2(0x192),a0_0x4156c2(0x177),a0_0x4156c2(0x1d5)]),DISABLED_TOOLS=process['env'][a0_0x4156c2(0x1e2)]?new Set(process[a0_0x4156c2(0x11d)][a0_0x4156c2(0x1e2)][a0_0x4156c2(0x1be)](',')['map'](_0x1d83ea=>_0x1d83ea[a0_0x4156c2(0x1bd)]())['filter'](_0x5384bf=>_0x5384bf['length']>0x0)):new Set();if(DISABLED_TOOLS['size']>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x4156c2(0x152)](tool)&&console[a0_0x4156c2(0x194)](a0_0x4156c2(0x1b8)+tool+a0_0x4156c2(0x1fe)+[...KNOWN_TOOL_NAMES][a0_0x4156c2(0x13e)](',\x20'));}console['error'](a0_0x4156c2(0x12f)+[...DISABLED_TOOLS][a0_0x4156c2(0x13e)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x4156c2(0x114)]('sk-')&&!MORPH_API_KEY[a0_0x4156c2(0x114)]('morph-')&&logMcpStderr('Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27');async function reportMorphError(_0x6571a5){const _0x3253a3=a0_0x4156c2;try{await a0_0x3ac5d5[_0x3253a3(0x1db)](_0x3253a3(0x12c),{..._0x6571a5,'timestamp':new Date()[_0x3253a3(0x1cc)](),'source':_0x6571a5[_0x3253a3(0x1a5)]||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x6571a5[_0x3253a3(0x1dc)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x3253a3(0x174),'Authorization':_0x3253a3(0x132)+MORPH_API_KEY}});}catch{}}args[a0_0x4156c2(0x17e)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),logMcpStderr(a0_0x4156c2(0x141)),logMcpStderr(a0_0x4156c2(0x11f)),logMcpStderr(a0_0x4156c2(0x183)),logMcpStderr('\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)'),logMcpStderr(a0_0x4156c2(0x218)));function normalizePath(_0x58e25f){return a0_0x14f3ce['normalize'](_0x58e25f);}function expandHome(_0x31d7a4){const _0x58744f=a0_0x4156c2;if(_0x31d7a4[_0x58744f(0x114)]('~/')||_0x31d7a4==='~')return a0_0x14f3ce[_0x58744f(0x13e)](a0_0x4008c1[_0x58744f(0x155)](),_0x31d7a4[_0x58744f(0x1a8)](0x1));return _0x31d7a4;}let allowedDirectories=await Promise[a0_0x4156c2(0x17c)](args[a0_0x4156c2(0x19c)](async _0x3f6291=>{const _0xdad4dc=a0_0x4156c2,_0x4f912c=expandHome(_0x3f6291),_0x2e501a=a0_0x14f3ce['resolve'](_0x4f912c);try{const _0x2ed0e9=await a0_0x1447fd[_0xdad4dc(0x1b3)](_0x2e501a);return normalizePath(_0x2ed0e9);}catch(_0x4b5601){return normalizePath(_0x2e501a);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x4156c2(0x17e)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x4156c2(0x131)](workspaceDir),logMcpStderr('Workspace\x20mode\x20enabled:\x20Using\x20'+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x5c2791){logMcpStderr('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x5c2791);}async function detectWorkspaceRoot(_0x4bc802){const _0x3e15a1=a0_0x4156c2;let _0xc23afc=a0_0x14f3ce[_0x3e15a1(0x1eb)](_0x4bc802);const _0x1aff2f=[_0x3e15a1(0x1cd),'.vscode',_0x3e15a1(0x187),_0x3e15a1(0x134),_0x3e15a1(0x143),'go.mod',_0x3e15a1(0x146),'tsconfig.json',_0x3e15a1(0x201)];while(_0xc23afc!==a0_0x14f3ce[_0x3e15a1(0x1e6)](_0xc23afc)){for(const _0x232736 of _0x1aff2f){const _0x298411=a0_0x14f3ce[_0x3e15a1(0x13e)](_0xc23afc,_0x232736);try{return await a0_0x1447fd[_0x3e15a1(0x18d)](_0x298411),normalizePath(_0xc23afc);}catch{}}_0xc23afc=a0_0x14f3ce[_0x3e15a1(0x1e6)](_0xc23afc);}return normalizePath(_0x4bc802);}await Promise[a0_0x4156c2(0x17c)](args[a0_0x4156c2(0x19c)](async _0x4a1034=>{const _0x29809d=a0_0x4156c2;try{const _0x2088d7=await a0_0x1447fd[_0x29809d(0x123)](expandHome(_0x4a1034));!_0x2088d7[_0x29809d(0x1d8)]()&&(logMcpStderr(_0x29809d(0x19e)+_0x4a1034+_0x29809d(0x1af)),process[_0x29809d(0x18c)](0x1));}catch(_0x179fce){logMcpStderr(_0x29809d(0x207)+_0x4a1034+':',_0x179fce),process[_0x29809d(0x18c)](0x1);}}));async function validatePath(_0x214321){const _0xa01c0d=a0_0x4156c2,_0x9ade45=expandHome(_0x214321),_0x285745=a0_0x14f3ce[_0xa01c0d(0x1eb)](_0x9ade45);try{const _0x3ff01b=await a0_0x1447fd[_0xa01c0d(0x1b3)](_0x285745);return _0x3ff01b;}catch(_0x18468f){if(_0x18468f[_0xa01c0d(0x213)]===_0xa01c0d(0x20f)){const _0x19c2dd=a0_0x14f3ce['dirname'](_0x285745);try{const _0x1d1bd=await a0_0x1447fd['realpath'](_0x19c2dd);return a0_0x14f3ce['join'](_0x1d1bd,a0_0x14f3ce[_0xa01c0d(0x13a)](_0x285745));}catch{throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x19c2dd);}}throw _0x18468f;}}const MorphEditFileArgsSchema=z[a0_0x4156c2(0x1ae)]({'path':z[a0_0x4156c2(0x1f9)](),'code_edit':z[a0_0x4156c2(0x1f9)]()[a0_0x4156c2(0x133)](a0_0x4156c2(0x1e9)),'instruction':z[a0_0x4156c2(0x1f9)]()[a0_0x4156c2(0x133)](a0_0x4156c2(0x16f)),'dryRun':z[a0_0x4156c2(0x112)]()[a0_0x4156c2(0x150)](![])['describe'](a0_0x4156c2(0x1fc))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x4156c2(0x145),WarpGrepArgsSchema=z['object']({'search_string':z[a0_0x4156c2(0x1f9)]()[a0_0x4156c2(0x133)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x4156c2(0x1f9)]()[a0_0x4156c2(0x133)](a0_0x4156c2(0x1b5)),'search_type':z['enum'](['default','node_modules'])['optional']()[a0_0x4156c2(0x133)](a0_0x4156c2(0x1e4))}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z[a0_0x4156c2(0x1f9)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x4156c2(0x1f9)]()['optional']()[a0_0x4156c2(0x133)]('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_0x4156c2(0x1f9)]()[a0_0x4156c2(0x16e)]()[a0_0x4156c2(0x133)](a0_0x4156c2(0x1de)),'branch':z['string']()['optional']()[a0_0x4156c2(0x133)](a0_0x4156c2(0x12e))}),CodebaseSearchArgsSchema=z[a0_0x4156c2(0x1ae)]({'query':z[a0_0x4156c2(0x1f9)]()[a0_0x4156c2(0x133)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x4156c2(0x1f9)]()[a0_0x4156c2(0x133)](a0_0x4156c2(0x17a)),'branch':z['string']()[a0_0x4156c2(0x16e)]()[a0_0x4156c2(0x133)](a0_0x4156c2(0x1ea)),'commitHash':z[a0_0x4156c2(0x1f9)]()[a0_0x4156c2(0x16e)]()[a0_0x4156c2(0x133)](a0_0x4156c2(0x169)),'targetDirectories':z[a0_0x4156c2(0x128)](z['string']())[a0_0x4156c2(0x150)]([])['describe'](a0_0x4156c2(0x1b7)),'limit':z[a0_0x4156c2(0x149)]()[a0_0x4156c2(0x16e)]()[a0_0x4156c2(0x150)](0xa)[a0_0x4156c2(0x133)](a0_0x4156c2(0x1c4))}),server=new Server({'name':'morph-mcp','version':a0_0x4156c2(0x206)},{'capabilities':{'tools':{}}});server[a0_0x4156c2(0x154)](ListToolsRequestSchema,async()=>{const _0x531cbe=a0_0x4156c2,_0x5105fc=[{'name':_0x531cbe(0x192),'description':_0x531cbe(0x1fd)+_0x531cbe(0x191)+_0x531cbe(0x1cb)+_0x531cbe(0x19a)+_0x531cbe(0x215)+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x531cbe(0x161)+_0x531cbe(0x1bf)+'-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a'+'Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a'+'ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a'+_0x531cbe(0x167)+'For\x20deletions:\x0a'+_0x531cbe(0x120)+_0x531cbe(0x160)+_0x531cbe(0x1c7)+'-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a'+_0x531cbe(0x20d)+_0x531cbe(0x168)+_0x531cbe(0x18b)+'-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a'+_0x531cbe(0x1c2)+_0x531cbe(0x20b),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x531cbe(0x177),'description':_0x531cbe(0x1df)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x531cbe(0x14f)+'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':!![]}],_0x3abcdb=_0x5105fc[_0x531cbe(0x1b0)](_0x53941d=>{const _0x4ea788=_0x531cbe;if(DISABLED_TOOLS[_0x4ea788(0x152)](_0x53941d['name']))return console[_0x4ea788(0x194)](_0x4ea788(0x180)+_0x53941d['name']+_0x4ea788(0x173)),![];if(_0x4ea788(0x1ed)in _0x53941d&&_0x53941d['requiresApiKey']&&!MORPH_API_KEY)return logMcpStderr(_0x4ea788(0x1ec)+_0x53941d['name']+_0x4ea788(0x1a1)),![];return!![];});return{'tools':_0x3abcdb[_0x531cbe(0x19c)](_0x4b1d00=>({'name':_0x4b1d00['name'],'description':_0x4b1d00[_0x531cbe(0x1ef)],'inputSchema':_0x4b1d00['inputSchema']}))};}),server['setRequestHandler'](CallToolRequestSchema,async _0x1cf084=>{const _0x23274c=a0_0x4156c2,{name:_0x275d4e,arguments:_0x33842c}=_0x1cf084['params'];try{if(DISABLED_TOOLS[_0x23274c(0x152)](_0x275d4e))throw new Error(_0x23274c(0x1d6)+_0x275d4e+'\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable');switch(_0x275d4e){case _0x23274c(0x192):{const _0x50c27c=_0x33842c&&typeof _0x33842c==='object'&&_0x23274c(0x129)in _0x33842c&&!(_0x23274c(0x15e)in _0x33842c)?{..._0x33842c,'instruction':_0x33842c[_0x23274c(0x129)],'instructions':undefined}:_0x33842c,_0x2c7a9d=MorphEditFileArgsSchema[_0x23274c(0x119)](_0x50c27c);if(!_0x2c7a9d[_0x23274c(0x181)])throw new Error(_0x23274c(0x148)+_0x2c7a9d[_0x23274c(0x194)]);const _0x38153a=await validatePath(_0x2c7a9d[_0x23274c(0x17b)][_0x23274c(0x135)]);let _0x4adbad=null,_0x421468=!![],_0x30485d=null;try{_0x4adbad=await a0_0x1447fd[_0x23274c(0x110)](_0x38153a,_0x23274c(0x216));}catch(_0x1623cb){const _0x44ebd0=_0x1623cb[_0x23274c(0x213)];_0x44ebd0===_0x23274c(0x20f)?(_0x421468=![],_0x4adbad=''):(_0x30485d=_0x23274c(0x1fa)+(_0x44ebd0||_0x23274c(0x1f4))+_0x23274c(0x17f)+(_0x1623cb instanceof Error?_0x1623cb[_0x23274c(0x14b)]:String(_0x1623cb)),logMcpStderr(_0x23274c(0x1ec)+_0x30485d));}let _0x1c4392;try{const _0x55a3ba=MORPH_API_KEY;if(!_0x55a3ba)throw new Error(_0x23274c(0x212));const _0x3bcb9a=a0_0x14f3ce['dirname'](_0x38153a),_0xa1197b=a0_0x14f3ce['basename'](_0x38153a),_0x39f737=await executeEditFile({'target_filepath':_0xa1197b,'code_edit':_0x2c7a9d[_0x23274c(0x17b)][_0x23274c(0x11b)],'instruction':_0x2c7a9d[_0x23274c(0x17b)][_0x23274c(0x15e)]},{'morphApiKey':_0x55a3ba,'morphApiUrl':MORPH_API_URL,'baseDir':_0x3bcb9a,'autoWrite':!_0x2c7a9d[_0x23274c(0x17b)][_0x23274c(0x1e5)],'generateUdiff':![],'debug':![]});_0x1c4392=_0x39f737['completionId'];if(!_0x39f737[_0x23274c(0x181)])throw new Error(_0x39f737[_0x23274c(0x194)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x43c0e6=_0x39f737['changes'],_0x5ac8be='added\x20'+_0x43c0e6[_0x23274c(0x1f2)]+_0x23274c(0x163)+_0x43c0e6['linesRemoved']+_0x23274c(0x153)+_0x43c0e6['linesModified'];if(_0x2c7a9d[_0x23274c(0x17b)][_0x23274c(0x1e5)])return{'content':[{'type':'text','text':_0x23274c(0x195)+(_0x421468?'':_0x23274c(0x188))+':\x20'+_0x2c7a9d[_0x23274c(0x17b)][_0x23274c(0x15e)]+_0x23274c(0x121)+_0x5ac8be+_0x23274c(0x157)+_0x2c7a9d[_0x23274c(0x17b)][_0x23274c(0x135)]+'.'}]};return{'content':[{'type':_0x23274c(0x1b1),'text':'Morph\x20Edit\x20'+(_0x421468?_0x23274c(0x1b6):_0x23274c(0x1e1))+':\x20'+_0x2c7a9d['data'][_0x23274c(0x15e)]+_0x23274c(0x121)+_0x5ac8be+_0x23274c(0x157)+_0x2c7a9d['data'][_0x23274c(0x135)]+'.'}]};}catch(_0x5e0a4a){const _0x206ef5=_0x5e0a4a instanceof Error?_0x5e0a4a[_0x23274c(0x14b)]:String(_0x5e0a4a);return reportMorphError({'error_message':_0x206ef5,'error_type':_0x5e0a4a instanceof Error?_0x5e0a4a['constructor'][_0x23274c(0x1c3)]:_0x23274c(0x184),'context':{'tool':_0x23274c(0x192),'completion_id':_0x1c4392,'file_path':_0x2c7a9d[_0x23274c(0x17b)][_0x23274c(0x135)],'validated_path':_0x38153a,'instruction':_0x2c7a9d[_0x23274c(0x17b)][_0x23274c(0x15e)],'model':_0x23274c(0x1c1),'dry_run':_0x2c7a9d[_0x23274c(0x17b)][_0x23274c(0x1e5)],'file_exists':_0x421468,'file_read_error':_0x30485d,'file_readable':_0x4adbad!==null,'request_content':{'path':_0x2c7a9d['data']['path'],'code_edit':_0x2c7a9d[_0x23274c(0x17b)][_0x23274c(0x11b)],'instruction':_0x2c7a9d[_0x23274c(0x17b)]['instruction'],'original_code':_0x4adbad!==null?_0x4adbad[_0x23274c(0x17e)]>0xc350?_0x4adbad['substring'](0x0,0xc350)+_0x23274c(0x136)+_0x4adbad['length']+_0x23274c(0x1d3):_0x4adbad:_0x23274c(0x166)+(_0x30485d||_0x23274c(0x165))+']','original_code_length':_0x4adbad?.['length']??0x0,'model':_0x23274c(0x1c1),'dry_run':_0x2c7a9d[_0x23274c(0x17b)][_0x23274c(0x1e5)]}},'stack_trace':_0x5e0a4a instanceof Error?_0x5e0a4a[_0x23274c(0x115)]:undefined,'source':_0x23274c(0x16c)})['catch'](()=>{}),{'content':[{'type':_0x23274c(0x1b1),'text':_0x23274c(0x1d1)+_0x206ef5}],'isError':!![]};}}case _0x23274c(0x177):{const _0x4219d1=WarpGrepArgsSchema[_0x23274c(0x119)](_0x33842c);if(!_0x4219d1['success'])return{'content':[{'type':'text','text':_0x23274c(0x1ad)+_0x4219d1[_0x23274c(0x194)]}],'isError':!![]};const _0x3351a7=_0x47b3de=>{const _0x54e1f0=_0x23274c,_0x10e8d2=[];for(const _0x466869 of _0x47b3de||[]){if(_0x466869[_0x54e1f0(0x127)]===_0x54e1f0(0x1a0)&&Array[_0x54e1f0(0x1cf)](_0x466869[_0x54e1f0(0x200)]))for(const _0x5ae960 of _0x466869[_0x54e1f0(0x200)]){try{const _0x1bd3aa=_0x5ae960[_0x54e1f0(0x13c)]?.[_0x54e1f0(0x1c3)],_0x293402=JSON[_0x54e1f0(0x198)](_0x5ae960['function']?.[_0x54e1f0(0x14d)]||'{}');if(_0x1bd3aa===_0x54e1f0(0x171))_0x10e8d2[_0x54e1f0(0x131)]('grep\x20\x27'+_0x293402[_0x54e1f0(0x1fb)]+'\x27\x20'+(_0x293402[_0x54e1f0(0x135)]||'.'));else{if(_0x1bd3aa===_0x54e1f0(0x196))_0x10e8d2['push'](_0x54e1f0(0x13b)+_0x293402['path']);else{if(_0x1bd3aa===_0x54e1f0(0x19f))_0x10e8d2[_0x54e1f0(0x131)](_0x54e1f0(0x13f)+(_0x293402['command']||'.'));else{if(_0x1bd3aa===_0x54e1f0(0x159))_0x10e8d2[_0x54e1f0(0x131)](_0x54e1f0(0x1b2)+_0x293402[_0x54e1f0(0x1fb)]+'\x27\x20'+(_0x293402[_0x54e1f0(0x135)]||'.'));else _0x1bd3aa===_0x54e1f0(0x15f)&&_0x10e8d2[_0x54e1f0(0x131)](_0x54e1f0(0x15f));}}}}catch{}}}return _0x10e8d2;},_0x58bddd=_0x41d8f2=>{const _0x15d023=_0x23274c,_0x1c6c98=[];if(!_0x41d8f2||!Array[_0x15d023(0x1cf)](_0x41d8f2))return _0x1c6c98;const _0x368f23=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x15d023(0x1a2),'tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x15d023(0x17d),'tool':_0x15d023(0x196)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':'BinaryFile','tool':_0x15d023(0x196)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x15d023(0x1d7),'tool':_0x15d023(0x142)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':'RipgrepNotAvailable','tool':_0x15d023(0x142)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x15d023(0x1d0),'tool':_0x15d023(0x196)},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':_0x15d023(0x196)},{'pattern':/not a text file/,'error_type':_0x15d023(0x1d0),'tool':_0x15d023(0x196)},{'pattern':/symbolic link/,'error_type':_0x15d023(0x1c9),'tool':_0x15d023(0x196)},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':_0x15d023(0x196)},{'pattern':/status="error"/,'error_type':'ToolException','tool':_0x15d023(0x1f4)}];let _0x1b5f78=0x0;for(const _0x54fd2b of _0x41d8f2){_0x54fd2b[_0x15d023(0x127)]===_0x15d023(0x1a0)&&Array[_0x15d023(0x1cf)](_0x54fd2b[_0x15d023(0x200)])&&_0x1b5f78++;const _0x3baf2e=_0x54fd2b[_0x15d023(0x18e)];if((_0x54fd2b[_0x15d023(0x127)]===_0x15d023(0x1a7)||_0x54fd2b[_0x15d023(0x127)]===_0x15d023(0x1f5))&&_0x3baf2e&&typeof _0x3baf2e==='string')for(const {pattern:_0x4e789c,error_type:_0x5482cb,tool:_0x3b6b10}of _0x368f23){const _0x527c87=_0x3baf2e[_0x15d023(0x1ab)](new RegExp(_0x4e789c[_0x15d023(0x1a5)],'g'));if(_0x527c87)for(const _0x2f238e of _0x527c87){const _0x39c2f2=_0x3baf2e[_0x15d023(0x16b)](_0x2f238e),_0x1ed514=_0x3baf2e[_0x15d023(0x124)](_0x39c2f2,Math[_0x15d023(0x1a3)](_0x39c2f2+0xc8,_0x3baf2e[_0x15d023(0x17e)]));_0x1c6c98[_0x15d023(0x131)]({'tool':_0x3b6b10,'error_type':_0x5482cb,'error_message':_0x1ed514[_0x15d023(0x1be)]('\x0a')[0x0],'turn':_0x1b5f78});}}}return _0x1c6c98;};try{const _0x55ae8e=a0_0x14f3ce[_0x23274c(0x1eb)](_0x4219d1[_0x23274c(0x17b)][_0x23274c(0x209)]),_0x279a40=_0x4219d1[_0x23274c(0x17b)]['search_type'],_0x2c7ce0=_0x279a40===_0x23274c(0x1c5)?{'allowNames':[_0x23274c(0x1c5)]}:undefined,_0x13024d=new LocalRipgrepProvider(_0x55ae8e,undefined,_0x2c7ce0),_0x273a1a=await runWarpGrep({'searchTerm':_0x4219d1[_0x23274c(0x17b)][_0x23274c(0x1e8)],'repoRoot':_0x55ae8e,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x13024d,'search_type':_0x279a40}),_0x3a1d00=_0x58bddd(_0x273a1a[_0x23274c(0x130)]);_0x3a1d00['length']>0x0&&reportMorphError({'error_message':_0x23274c(0x11a)+_0x3a1d00[_0x23274c(0x17e)]+_0x23274c(0x202),'error_type':_0x23274c(0x1c0),'level':_0x23274c(0x20e),'tool':_0x23274c(0x177),'context':{'repo_path':_0x4219d1['data'][_0x23274c(0x209)],'query':_0x4219d1[_0x23274c(0x17b)][_0x23274c(0x1e8)],'model':_0x23274c(0x126),'termination_reason':_0x273a1a[_0x23274c(0x1ca)],'sub_tool_errors':_0x3a1d00,'timings':_0x273a1a['timings'],'tool_calls':_0x3351a7(_0x273a1a[_0x23274c(0x130)]),'messages':_0x273a1a[_0x23274c(0x130)]?.[_0x23274c(0x19c)](_0x37c104=>({'role':_0x37c104[_0x23274c(0x127)],'content':_0x37c104[_0x23274c(0x18e)],..._0x37c104['tool_calls']?{'tool_calls':_0x37c104[_0x23274c(0x200)]['length']}:{},..._0x37c104[_0x23274c(0x1b4)]?{'tool_call_id':_0x37c104['tool_call_id']}:{}}))},'source':_0x23274c(0x16c)})[_0x23274c(0x12b)](()=>{});let _0x2d6f05='';if(_0x273a1a[_0x23274c(0x1ca)]===_0x23274c(0x12d)&&_0x273a1a[_0x23274c(0x15f)]?.['metadata']?.[_0x23274c(0x20c)]){const _0x2c7bd8=_0x273a1a['finish'][_0x23274c(0x117)][_0x23274c(0x20c)];if(_0x2c7bd8[_0x23274c(0x17e)]===0x0)return _0x2d6f05=_0x273a1a[_0x23274c(0x15f)][_0x23274c(0x1d9)]||_0x23274c(0x197),{'content':[{'type':'text','text':_0x2d6f05}]};const _0x18cfce=[],_0x4e8493=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x46f683 of _0x273a1a[_0x23274c(0x130)]){if(_0x46f683[_0x23274c(0x127)]===_0x23274c(0x1a0)&&Array[_0x23274c(0x1cf)](_0x46f683[_0x23274c(0x200)]))for(const _0x12c11c of _0x46f683[_0x23274c(0x200)]){try{const _0x24e00d=_0x12c11c['function']?.[_0x23274c(0x1c3)],_0x235b2b=JSON[_0x23274c(0x198)](_0x12c11c[_0x23274c(0x13c)]?.['arguments']||'{}');if(_0x24e00d===_0x23274c(0x171))_0x4e8493[_0x23274c(0x131)](_0x23274c(0x1f8)+_0x235b2b[_0x23274c(0x1fb)]+_0x23274c(0x203)+(_0x235b2b[_0x23274c(0x135)]||'.')+'`');else{if(_0x24e00d==='read')_0x4e8493[_0x23274c(0x131)](_0x23274c(0x14a)+_0x235b2b[_0x23274c(0x135)]+'`');else{if(_0x24e00d==='list_directory')_0x4e8493[_0x23274c(0x131)](_0x23274c(0x211)+(_0x235b2b['command']||'.')+'`');else _0x24e00d===_0x23274c(0x159)&&_0x4e8493[_0x23274c(0x131)](_0x23274c(0x1a6)+_0x235b2b['pattern']+_0x23274c(0x199)+(_0x235b2b['path']||'.')+'`');}}}catch{}}}_0x18cfce[_0x23274c(0x131)](_0x4e8493['join']('\x0a'));const _0x3fe4e6=['',_0x23274c(0x1bc)];for(const _0x5e4248 of _0x2c7bd8){if(_0x5e4248[_0x23274c(0x140)]==='*')_0x3fe4e6[_0x23274c(0x131)]('-\x20'+_0x5e4248[_0x23274c(0x135)]+':*');else{if(Array[_0x23274c(0x1cf)](_0x5e4248['lines'])){const _0x43d4b9=_0x5e4248[_0x23274c(0x140)][_0x23274c(0x19c)](([_0x322744,_0x3b527d])=>{if(_0x322744===_0x3b527d)return''+_0x322744;return _0x322744+'-'+_0x3b527d;});_0x3fe4e6[_0x23274c(0x131)]('-\x20'+_0x5e4248[_0x23274c(0x135)]+':'+_0x43d4b9['join'](','));}else _0x3fe4e6[_0x23274c(0x131)]('-\x20'+_0x5e4248[_0x23274c(0x135)]+':*');}}_0x3fe4e6['push'](''),_0x18cfce['push'](_0x3fe4e6['join']('\x0a')),_0x18cfce['push'](_0x23274c(0x113));const _0x117a52=[],_0x30d0ab=[];for(const _0xcb6027 of _0x2c7bd8){let _0x10a978=a0_0x14f3ce[_0x23274c(0x1eb)](_0x4219d1['data']['repo_path'],_0xcb6027['path']),_0xb87f76=null,_0x1deca9=null;try{_0xb87f76=await a0_0x1447fd[_0x23274c(0x110)](_0x10a978,{'encoding':'utf-8'});}catch(_0x3b90cd){const _0x7ffcbc=fixPathRepetition(_0x10a978);if(_0x7ffcbc)try{_0xb87f76=await a0_0x1447fd[_0x23274c(0x110)](_0x7ffcbc,{'encoding':_0x23274c(0x216)}),_0x10a978=_0x7ffcbc;}catch{_0x1deca9=_0x3b90cd instanceof Error?_0x3b90cd:new Error(String(_0x3b90cd));}else _0x1deca9=_0x3b90cd instanceof Error?_0x3b90cd:new Error(String(_0x3b90cd));}if(_0xb87f76!==null){const _0x5ebe84=_0xb87f76['split'](/\r?\n/),_0x15fca8=[];if(_0xcb6027['lines']==='*'||!Array[_0x23274c(0x1cf)](_0xcb6027['lines']))for(let _0x3cacf4=0x1;_0x3cacf4<=_0x5ebe84[_0x23274c(0x17e)];_0x3cacf4++){const _0x3aa996=_0x5ebe84[_0x3cacf4-0x1];_0x15fca8[_0x23274c(0x131)](_0x3cacf4+'|\x20'+_0x3aa996);}else for(const [_0x5df4c5,_0x507c3b]of _0xcb6027[_0x23274c(0x140)]){_0x15fca8[_0x23274c(0x17e)]>0x0&&_0x15fca8['push']('');for(let _0x41b39a=_0x5df4c5;_0x41b39a<=_0x507c3b&&_0x41b39a<=_0x5ebe84['length'];_0x41b39a++){const _0x28573a=_0x5ebe84[_0x41b39a-0x1];_0x15fca8[_0x23274c(0x131)](_0x41b39a+'|\x20'+_0x28573a);}}_0x30d0ab['push']({'path':_0xcb6027[_0x23274c(0x135)],'content':_0x15fca8[_0x23274c(0x13e)]('\x0a')});}else _0x117a52[_0x23274c(0x131)](_0x23274c(0x1b9)+_0xcb6027[_0x23274c(0x135)]+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x1deca9?.[_0x23274c(0x14b)]||_0x23274c(0x170))+_0x23274c(0x186));}try{const _0x3b3ade=await compactFileContexts(_0x30d0ab,_0x4219d1[_0x23274c(0x17b)][_0x23274c(0x1e8)],MORPH_API_KEY,MORPH_API_URL);for(const _0x178a97 of _0x3b3ade){_0x117a52['push'](_0x23274c(0x1b9)+_0x178a97[_0x23274c(0x135)]+_0x23274c(0x1a9)+_0x178a97[_0x23274c(0x18e)]+'\x0a</file>');}}catch(_0x376666){console['error'](_0x23274c(0x116),_0x376666);for(const _0x413d7a of _0x30d0ab){_0x117a52['push'](_0x23274c(0x1b9)+_0x413d7a[_0x23274c(0x135)]+_0x23274c(0x1a9)+_0x413d7a[_0x23274c(0x18e)]+'\x0a</file>');}}_0x18cfce[_0x23274c(0x131)](_0x117a52[_0x23274c(0x13e)]('\x0a\x0a')),_0x2d6f05=_0x18cfce[_0x23274c(0x13e)]('\x0a');const _0x4023ee=_0x273a1a['errors']?.['filter'](_0x2d93fd=>_0x2d93fd[_0x23274c(0x14b)]?.['startsWith'](_0x23274c(0x1f1)))||[];if(_0x4023ee['length']>0x0){const _0x275c1a=_0x4023ee['map'](_0x1f81fb=>_0x1f81fb['message'])[_0x23274c(0x13e)](';\x20');reportMorphError({'error_message':_0x275c1a,'error_type':_0x23274c(0x190),'context':{'tool':'codebase_search','repo_path':_0x4219d1[_0x23274c(0x17b)][_0x23274c(0x209)],'query':_0x4219d1['data'][_0x23274c(0x1e8)],'model':_0x23274c(0x126),'termination_reason':_0x23274c(0x1ff),'error_count':_0x4023ee[_0x23274c(0x17e)],'is_timeout':![],'timings':_0x273a1a[_0x23274c(0x164)],'files_attempted':_0x2c7bd8[_0x23274c(0x19c)](_0xa153be=>({'path':_0xa153be[_0x23274c(0x135)],'lines':_0xa153be[_0x23274c(0x140)]})),'tool_calls':_0x3351a7(_0x273a1a[_0x23274c(0x130)]),'messages':_0x273a1a[_0x23274c(0x130)]?.[_0x23274c(0x19c)](_0x258a86=>({'role':_0x258a86['role'],'content':_0x258a86[_0x23274c(0x18e)],..._0x258a86[_0x23274c(0x200)]?{'tool_calls':_0x258a86[_0x23274c(0x200)]['length']}:{},..._0x258a86[_0x23274c(0x1b4)]?{'tool_call_id':_0x258a86['tool_call_id']}:{}})),'request_content':{'query':_0x4219d1['data'][_0x23274c(0x1e8)],'repo_path':_0x4219d1[_0x23274c(0x17b)][_0x23274c(0x209)],'repoRoot':a0_0x14f3ce[_0x23274c(0x1eb)](_0x4219d1['data'][_0x23274c(0x209)]),'model':_0x23274c(0x126)}},'source':_0x23274c(0x16c)})['catch'](()=>{});}}else{if(_0x273a1a['terminationReason']==='terminated'&&_0x273a1a[_0x23274c(0x14c)][_0x23274c(0x17e)]>0x0){const _0x5639f4=_0x273a1a[_0x23274c(0x14c)][_0x23274c(0x19c)](_0x119eec=>_0x119eec['message'])[_0x23274c(0x13e)](';\x20');_0x2d6f05=_0x23274c(0x19e)+_0x5639f4;const _0x334203=_0x5639f4[_0x23274c(0x19d)]()[_0x23274c(0x219)](_0x23274c(0x1e3))||_0x5639f4[_0x23274c(0x19d)]()['includes'](_0x23274c(0x1f0))||_0x5639f4['toLowerCase']()['includes'](_0x23274c(0x214)),_0x185edb=_0x273a1a[_0x23274c(0x15f)]?.[_0x23274c(0x117)]?.['files'],_0x2912ac=_0x273a1a[_0x23274c(0x14c)][0x0];reportMorphError({'error_message':_0x5639f4,'error_type':_0x334203?'TimeoutError':_0x2912ac?.['constructor']?.[_0x23274c(0x1c3)]||_0x23274c(0x182),'context':{'tool':_0x23274c(0x177),'repo_path':_0x4219d1[_0x23274c(0x17b)][_0x23274c(0x209)],'query':_0x4219d1[_0x23274c(0x17b)][_0x23274c(0x1e8)],'model':_0x23274c(0x126),'termination_reason':_0x273a1a[_0x23274c(0x1ca)],'error_count':_0x273a1a[_0x23274c(0x14c)][_0x23274c(0x17e)],'is_timeout':_0x334203,'timings':_0x273a1a[_0x23274c(0x164)],'files_attempted':_0x185edb?.[_0x23274c(0x19c)](_0x551fca=>({'path':_0x551fca[_0x23274c(0x135)],'lines':_0x551fca[_0x23274c(0x140)]})),'tool_calls':_0x3351a7(_0x273a1a[_0x23274c(0x130)]),'messages':_0x273a1a[_0x23274c(0x130)]?.[_0x23274c(0x19c)](_0x1c8f15=>({'role':_0x1c8f15[_0x23274c(0x127)],'content':_0x1c8f15[_0x23274c(0x18e)],..._0x1c8f15[_0x23274c(0x200)]?{'tool_calls':_0x1c8f15[_0x23274c(0x200)][_0x23274c(0x17e)]}:{},..._0x1c8f15[_0x23274c(0x1b4)]?{'tool_call_id':_0x1c8f15[_0x23274c(0x1b4)]}:{}})),'request_content':{'query':_0x4219d1['data'][_0x23274c(0x1e8)],'repo_path':_0x4219d1['data']['repo_path'],'repoRoot':a0_0x14f3ce[_0x23274c(0x1eb)](_0x4219d1[_0x23274c(0x17b)][_0x23274c(0x209)]),'model':_0x23274c(0x126)}},'stack_trace':_0x2912ac?.[_0x23274c(0x115)]||undefined,'source':_0x23274c(0x16c)})[_0x23274c(0x12b)](()=>{});}else _0x2d6f05=_0x23274c(0x122);}return{'content':[{'type':'text','text':_0x2d6f05}]};}catch(_0x25ddf4){const _0x133338=_0x25ddf4 instanceof Error?_0x25ddf4[_0x23274c(0x14b)]:String(_0x25ddf4),_0x781a6a=_0x133338[_0x23274c(0x19d)]()[_0x23274c(0x219)](_0x23274c(0x1e3))||_0x133338[_0x23274c(0x19d)]()['includes'](_0x23274c(0x1f0))||_0x133338[_0x23274c(0x19d)]()[_0x23274c(0x219)](_0x23274c(0x214))||_0x25ddf4 instanceof Error&&_0x25ddf4[_0x23274c(0x1c3)]===_0x23274c(0x162);return reportMorphError({'error_message':_0x133338,'error_type':_0x781a6a?'TimeoutError':_0x25ddf4 instanceof Error?_0x25ddf4[_0x23274c(0x11e)]['name']:_0x23274c(0x184),'context':{'tool':_0x23274c(0x177),'repo_path':_0x4219d1[_0x23274c(0x17b)]['repo_path'],'query':_0x4219d1[_0x23274c(0x17b)][_0x23274c(0x1e8)],'model':'morph-warp-grep-v2.1','is_timeout':_0x781a6a,'exception_phase':_0x23274c(0x1e0),'request_content':{'query':_0x4219d1[_0x23274c(0x17b)][_0x23274c(0x1e8)],'repo_path':_0x4219d1[_0x23274c(0x17b)][_0x23274c(0x209)],'repoRoot':a0_0x14f3ce[_0x23274c(0x1eb)](_0x4219d1[_0x23274c(0x17b)][_0x23274c(0x209)]),'model':_0x23274c(0x126)}},'stack_trace':_0x25ddf4 instanceof Error?_0x25ddf4[_0x23274c(0x115)]:undefined,'source':'mcp-filesystem'})[_0x23274c(0x12b)](()=>{}),{'content':[{'type':_0x23274c(0x1b1),'text':_0x23274c(0x10f)+_0x133338}],'isError':![]};}}case _0x23274c(0x1d5):{const _0x1140b1=WarpGrepGitHubArgsSchema[_0x23274c(0x119)](_0x33842c);if(!_0x1140b1[_0x23274c(0x181)])return{'content':[{'type':'text','text':_0x23274c(0x1ad)+_0x1140b1[_0x23274c(0x194)]}],'isError':!![]};const _0x294ced=_0x1140b1[_0x23274c(0x17b)]['github_url']||_0x1140b1[_0x23274c(0x17b)]['owner_repo'];if(!_0x294ced)return{'content':[{'type':_0x23274c(0x1b1),'text':_0x23274c(0x12a)}],'isError':!![]};const _0x1a7df1=MORPH_API_KEY;if(!_0x1a7df1)throw new Error(_0x23274c(0x212));const _0x2ac8f9=Date[_0x23274c(0x189)]();logMcpStderr(_0x23274c(0x118)+_0x294ced+_0x23274c(0x1f6)+_0x1140b1[_0x23274c(0x17b)][_0x23274c(0x1e8)]+'\x22');try{const _0x5d59f4=new WarpGrepClient({'morphApiKey':_0x1a7df1,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x278ecf=await _0x5d59f4[_0x23274c(0x137)]({'searchTerm':_0x1140b1[_0x23274c(0x17b)][_0x23274c(0x1e8)],'github':_0x294ced,'branch':_0x1140b1[_0x23274c(0x17b)][_0x23274c(0x19b)]}),_0x30cde6=Date['now']()-_0x2ac8f9;logMcpStderr(_0x23274c(0x1d4)+_0x30cde6+'ms.\x20Success:\x20'+_0x278ecf[_0x23274c(0x181)]);const _0x1fc184=formatResult(_0x278ecf);return{'content':[{'type':_0x23274c(0x1b1),'text':_0x1fc184}]};}catch(_0x175549){const _0x44e5c1=Date[_0x23274c(0x189)]()-_0x2ac8f9,_0x564a83=_0x175549 instanceof Error?_0x175549[_0x23274c(0x14b)]:String(_0x175549);return logMcpStderr(_0x23274c(0x18f)+_0x44e5c1+_0x23274c(0x15b),_0x564a83),reportMorphError({'error_message':_0x564a83,'error_type':_0x175549 instanceof Error?_0x175549['constructor'][_0x23274c(0x1c3)]:_0x23274c(0x184),'context':{'tool':_0x23274c(0x1d5),'github_url':_0x294ced,'search_string':_0x1140b1[_0x23274c(0x17b)]['search_string'],'branch':_0x1140b1[_0x23274c(0x17b)]['branch']},'stack_trace':_0x175549 instanceof Error?_0x175549[_0x23274c(0x115)]:undefined,'source':'mcp-filesystem','tool':_0x23274c(0x1d5),'latency_ms':_0x44e5c1})[_0x23274c(0x12b)](()=>{}),{'content':[{'type':_0x23274c(0x1b1),'text':'GitHub\x20search\x20failed:\x20'+_0x564a83}],'isError':![]};}}default:throw new Error('Unknown\x20tool:\x20'+_0x275d4e);}}catch(_0x11a753){const _0x27d613=_0x11a753 instanceof Error?_0x11a753['message']:String(_0x11a753);return reportMorphError({'error_message':_0x27d613,'error_type':_0x11a753 instanceof Error?_0x11a753[_0x23274c(0x11e)]['name']:'UnknownError','context':{'tool':_0x275d4e,'arguments':_0x33842c?JSON['stringify'](_0x33842c)[_0x23274c(0x124)](0x0,0x1f4):undefined,'mcp_server_version':_0x23274c(0x206)},'stack_trace':_0x11a753 instanceof Error?_0x11a753[_0x23274c(0x115)]:undefined,'source':'mcp-filesystem'})[_0x23274c(0x12b)](()=>{}),{'content':[{'type':_0x23274c(0x1b1),'text':_0x23274c(0x19e)+_0x27d613}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x540fe8){const _0x5c57ea=a0_0x4156c2,_0x309028=await getValidRootDirectories(_0x540fe8);if(_0x309028['length']>0x0)allowedDirectories=[..._0x309028],logMcpStderr(_0x5c57ea(0x16a)+_0x309028[_0x5c57ea(0x17e)]+_0x5c57ea(0x1ac));else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x15be26=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x15be26&&(allowedDirectories=[_0x15be26],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x15be26));}catch(_0x2b816c){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x2b816c);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x36db49=a0_0x4156c2;try{const _0x34523c=await server[_0x36db49(0x138)]();_0x34523c&&_0x36db49(0x205)in _0x34523c&&await updateAllowedDirectoriesFromRoots(_0x34523c[_0x36db49(0x205)]);}catch(_0x569399){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x569399 instanceof Error?_0x569399[_0x36db49(0x14b)]:String(_0x569399));}}),server[a0_0x4156c2(0x1c8)]=async()=>{const _0x5c7ceb=a0_0x4156c2,_0x39b417=server['getClientCapabilities']();if(_0x39b417?.[_0x5c7ceb(0x205)])try{const _0x28ced7=await server[_0x5c7ceb(0x138)]();_0x28ced7&&_0x5c7ceb(0x205)in _0x28ced7?await updateAllowedDirectoriesFromRoots(_0x28ced7['roots']):logMcpStderr(_0x5c7ceb(0x14e));}catch(_0x22c70e){logMcpStderr(_0x5c7ceb(0x1f3),_0x22c70e instanceof Error?_0x22c70e[_0x5c7ceb(0x14b)]:String(_0x22c70e));}else{if(allowedDirectories[_0x5c7ceb(0x17e)]>0x0)logMcpStderr(_0x5c7ceb(0x16d),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x5c7ceb(0x18a));else throw new Error(_0x5c7ceb(0x15a));}}};async function runServer(){const _0x127d86=a0_0x4156c2,_0x5787e6=new StdioServerTransport();await server['connect'](_0x5787e6),logMcpStderr(_0x127d86(0x217)),allowedDirectories[_0x127d86(0x17e)]===0x0&&logMcpStderr(_0x127d86(0x144));}runServer()[a0_0x4156c2(0x12b)](_0x313bf0=>{const _0x167beb=a0_0x4156c2;logMcpStderr(_0x167beb(0x1dd),_0x313bf0),process[_0x167beb(0x18c)](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a1_0x5075(){var _0xc0fad9=['123190JHXEyp','7973259NBfhgA','619476tqHssO','[os=','13081456zcSzQb','error','platform','4857YftyxY','1148NvEBhc','7763640YqXOBN','6YlGxzo','931276uFKjeO','747mPaVkW','Linux','win32','Windows'];a1_0x5075=function(){return _0xc0fad9;};return a1_0x5075();}var a1_0x6d4603=a1_0x47e8;function a1_0x47e8(_0x448a32,_0x4ff362){_0x448a32=_0x448a32-0xc5;var _0x5075cd=a1_0x5075();var _0x47e8e2=_0x5075cd[_0x448a32];return _0x47e8e2;}(function(_0x76d300,_0xb79cad){var _0x119d79=a1_0x47e8,_0x1257a4=_0x76d300();while(!![]){try{var _0x4f97cc=-parseInt(_0x119d79(0xcf))/0x1+-parseInt(_0x119d79(0xcc))/0x2*(-parseInt(_0x119d79(0xcb))/0x3)+-parseInt(_0x119d79(0xc6))/0x4+parseInt(_0x119d79(0xcd))/0x5+parseInt(_0x119d79(0xce))/0x6*(-parseInt(_0x119d79(0xc5))/0x7)+parseInt(_0x119d79(0xc8))/0x8+parseInt(_0x119d79(0xd0))/0x9*(-parseInt(_0x119d79(0xd4))/0xa);if(_0x4f97cc===_0xb79cad)break;else _0x1257a4['push'](_0x1257a4['shift']());}catch(_0x272606){_0x1257a4['push'](_0x1257a4['shift']());}}}(a1_0x5075,0xd44b5));import a1_0x2b82ff from'os';export function getOperatingSystemType(_0x424aad=a1_0x2b82ff[a1_0x6d4603(0xca)]()){var _0x1137e7=a1_0x6d4603;switch(_0x424aad){case'darwin':return'macOS';case _0x1137e7(0xd2):return _0x1137e7(0xd3);case'linux':return _0x1137e7(0xd1);default:return'Unknown';}}export function formatMcpLogMessage(_0x172b86,_0x817ed4=a1_0x2b82ff[a1_0x6d4603(0xca)]()){var _0x24e2ba=a1_0x6d4603;return _0x24e2ba(0xc7)+getOperatingSystemType(_0x817ed4)+']\x20'+_0x172b86;}export function logMcpStderr(_0x56ea6c,..._0x5c8b81){var _0x2376f2=a1_0x6d4603;console[_0x2376f2(0xc9)](formatMcpLogMessage(_0x56ea6c),..._0x5c8b81);}
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a2_0x23db(_0x183acc,_0x2f008f){_0x183acc=_0x183acc-0x9b;const _0x5295a3=a2_0x5295();let _0x23dbb7=_0x5295a3[_0x183acc];return _0x23dbb7;}(function(_0x3cc1e6,_0x4fdbb3){const _0x5671aa=a2_0x23db,_0x222e5d=_0x3cc1e6();while(!![]){try{const _0x230166=-parseInt(_0x5671aa(0xa1))/0x1+-parseInt(_0x5671aa(0xa2))/0x2*(-parseInt(_0x5671aa(0xad))/0x3)+parseInt(_0x5671aa(0xa9))/0x4*(-parseInt(_0x5671aa(0xa3))/0x5)+parseInt(_0x5671aa(0xa6))/0x6+parseInt(_0x5671aa(0xa8))/0x7*(parseInt(_0x5671aa(0x9e))/0x8)+parseInt(_0x5671aa(0x9c))/0x9+parseInt(_0x5671aa(0xa5))/0xa;if(_0x230166===_0x4fdbb3)break;else _0x222e5d['push'](_0x222e5d['shift']());}catch(_0x157020){_0x222e5d['push'](_0x222e5d['shift']());}}}(a2_0x5295,0xb8fb3));import a2_0x3ef087 from'path';import a2_0x23fc7e from'os';export function convertToWindowsPath(_0x3ebaa7){const _0x591a3a=a2_0x23db;if(_0x3ebaa7['startsWith'](_0x591a3a(0x9b))){const _0x70bc7b=_0x3ebaa7[_0x591a3a(0xaa)](0x5)['toUpperCase'](),_0x715932=_0x3ebaa7['slice'](0x6)['replace'](/\//g,'\x5c');return _0x70bc7b+':'+_0x715932;}if(_0x3ebaa7['match'](/^\/[a-zA-Z]\//)){const _0x298b31=_0x3ebaa7[_0x591a3a(0xaa)](0x1)[_0x591a3a(0xae)](),_0xd76760=_0x3ebaa7['slice'](0x2)[_0x591a3a(0xac)](/\//g,'\x5c');return _0x298b31+':'+_0xd76760;}if(_0x3ebaa7[_0x591a3a(0xa4)](/^[a-zA-Z]:/))return _0x3ebaa7['replace'](/\//g,'\x5c');return _0x3ebaa7;}function a2_0x5295(){const _0x433fce=['719820GJbVev','trim','45584KBlBEW','392MXBdby','charAt','homedir','replace','69QRBsaW','toUpperCase','startsWith','join','/mnt/','113832oKSNyc','slice','904eEopjG','substring','test','972143NbFhcg','5332tIZsCZ','29455xmhZHy','match','13773520tsxiEP'];a2_0x5295=function(){return _0x433fce;};return a2_0x5295();}export function normalizePath(_0x53af37){const _0x250c13=a2_0x23db;_0x53af37=_0x53af37[_0x250c13(0xa7)]()[_0x250c13(0xac)](/^["']|["']$/g,'');const _0x4793c7=_0x53af37[_0x250c13(0xaf)]('/')&&!_0x53af37[_0x250c13(0xa4)](/^\/mnt\/[a-z]\//i)&&!_0x53af37[_0x250c13(0xa4)](/^\/[a-zA-Z]\//);if(_0x4793c7)return _0x53af37['replace'](/\/+/g,'/')[_0x250c13(0xac)](/\/+$/,'');_0x53af37=convertToWindowsPath(_0x53af37);if(_0x53af37[_0x250c13(0xaf)]('\x5c\x5c')){let _0x3b29c2=_0x53af37;_0x3b29c2=_0x3b29c2['replace'](/^\\{2,}/,'\x5c\x5c');const _0x57178c=_0x3b29c2[_0x250c13(0x9f)](0x2)[_0x250c13(0xac)](/\\\\/g,'\x5c');_0x53af37='\x5c\x5c'+_0x57178c;}else _0x53af37=_0x53af37[_0x250c13(0xac)](/\\\\/g,'\x5c');let _0x23465f=a2_0x3ef087['normalize'](_0x53af37);_0x53af37[_0x250c13(0xaf)]('\x5c\x5c')&&!_0x23465f[_0x250c13(0xaf)]('\x5c\x5c')&&(_0x23465f='\x5c'+_0x23465f);if(_0x23465f['match'](/^[a-zA-Z]:/)){let _0x326c0c=_0x23465f[_0x250c13(0xac)](/\//g,'\x5c');return/^[a-z]:/[_0x250c13(0xa0)](_0x326c0c)&&(_0x326c0c=_0x326c0c[_0x250c13(0xaa)](0x0)[_0x250c13(0xae)]()+_0x326c0c['slice'](0x1)),_0x326c0c;}return _0x23465f['replace'](/\//g,'\x5c');}export function expandHome(_0x2e424b){const _0x882831=a2_0x23db;if(_0x2e424b[_0x882831(0xaf)]('~/')||_0x2e424b==='~')return a2_0x3ef087[_0x882831(0xb0)](a2_0x23fc7e[_0x882831(0xab)](),_0x2e424b[_0x882831(0x9d)](0x1));return _0x2e424b;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x4cd3f7,_0x2731b2){const _0x28ce02=a3_0x5981,_0x58e1c7=_0x4cd3f7();while(!![]){try{const _0x26883c=-parseInt(_0x28ce02(0xc1))/0x1*(-parseInt(_0x28ce02(0xb4))/0x2)+parseInt(_0x28ce02(0xb1))/0x3+parseInt(_0x28ce02(0xb3))/0x4+-parseInt(_0x28ce02(0xaf))/0x5*(parseInt(_0x28ce02(0xb2))/0x6)+parseInt(_0x28ce02(0xae))/0x7+-parseInt(_0x28ce02(0xb9))/0x8*(parseInt(_0x28ce02(0xba))/0x9)+-parseInt(_0x28ce02(0xbc))/0xa*(parseInt(_0x28ce02(0xbf))/0xb);if(_0x26883c===_0x2731b2)break;else _0x58e1c7['push'](_0x58e1c7['shift']());}catch(_0x4e8a61){_0x58e1c7['push'](_0x58e1c7['shift']());}}}(a3_0x2e06,0xd2376));function a3_0x2e06(){const _0xddc06e=['111294ONTPGb','includes','sep','isArray','string','640lkQtCM','58473ivixhh','resolve','29440YogYbB','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','some','2629movyZB','Path\x20must\x20be\x20absolute\x20after\x20normalization','9VWtokg','normalize','isAbsolute','length','4930506fvoJdR','2678315OPWzeM','startsWith','2711340NAQADv','6isPMjN','2044496oWzgrv'];a3_0x2e06=function(){return _0xddc06e;};return a3_0x2e06();}function a3_0x5981(_0xbde3bb,_0x10c232){_0xbde3bb=_0xbde3bb-0xac;const _0x2e0674=a3_0x2e06();let _0x598185=_0x2e0674[_0xbde3bb];return _0x598185;}import a3_0x56e5f7 from'path';export function isPathWithinAllowedDirectories(_0x228553,_0x3c0731){const _0x57f1f8=a3_0x5981;if(typeof _0x228553!==_0x57f1f8(0xb8)||!Array[_0x57f1f8(0xb7)](_0x3c0731))return![];if(!_0x228553||_0x3c0731[_0x57f1f8(0xad)]===0x0)return![];if(_0x228553[_0x57f1f8(0xb5)]('\x00'))return![];let _0x1ef6bb;try{_0x1ef6bb=a3_0x56e5f7[_0x57f1f8(0xbb)](a3_0x56e5f7[_0x57f1f8(0xc2)](_0x228553));}catch{return![];}if(!a3_0x56e5f7[_0x57f1f8(0xac)](_0x1ef6bb))throw new Error(_0x57f1f8(0xc0));return _0x3c0731[_0x57f1f8(0xbe)](_0x5a31e1=>{const _0x68468b=_0x57f1f8;if(typeof _0x5a31e1!==_0x68468b(0xb8)||!_0x5a31e1)return![];if(_0x5a31e1[_0x68468b(0xb5)]('\x00'))return![];let _0x30d98d;try{_0x30d98d=a3_0x56e5f7['resolve'](a3_0x56e5f7['normalize'](_0x5a31e1));}catch{return![];}if(!a3_0x56e5f7[_0x68468b(0xac)](_0x30d98d))throw new Error(_0x68468b(0xbd));if(_0x1ef6bb===_0x30d98d)return!![];if(_0x30d98d===a3_0x56e5f7['sep'])return _0x1ef6bb[_0x68468b(0xb0)](a3_0x56e5f7[_0x68468b(0xb6)]);return _0x1ef6bb[_0x68468b(0xb0)](_0x30d98d+a3_0x56e5f7[_0x68468b(0xb6)]);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x538876,_0x1cf595){const _0x357cb3=a4_0x5272,_0x5c69ff=_0x538876();while(!![]){try{const _0x4df559=parseInt(_0x357cb3(0xf9))/0x1*(-parseInt(_0x357cb3(0xed))/0x2)+-parseInt(_0x357cb3(0xf3))/0x3*(parseInt(_0x357cb3(0xf4))/0x4)+-parseInt(_0x357cb3(0x106))/0x5*(-parseInt(_0x357cb3(0xf0))/0x6)+-parseInt(_0x357cb3(0xf2))/0x7*(-parseInt(_0x357cb3(0xf1))/0x8)+parseInt(_0x357cb3(0xf5))/0x9+-parseInt(_0x357cb3(0xf7))/0xa*(parseInt(_0x357cb3(0xf6))/0xb)+parseInt(_0x357cb3(0x105))/0xc;if(_0x4df559===_0x1cf595)break;else _0x5c69ff['push'](_0x5c69ff['shift']());}catch(_0x1bcd0b){_0x5c69ff['push'](_0x5c69ff['shift']());}}}(a4_0x443c,0x1d8de));import{promises as a4_0x2704b9}from'fs';function a4_0x443c(){const _0x4ce78c=['push','message','slice','join','Skipping\x20','578988AoUSCu','955865EddZnv','330506BqDyoP','startsWith','stat','6thYWSv','8YzKjDQ','680099dHBbrZ','374229cgbjOO','4LBsChW','1911645fWJEex','84293mOGvvy','180CjuVmZ','resolve','1RuLWLD','Skipping\x20invalid\x20directory:\x20','uri','\x20due\x20to\x20error:\x20','homedir','file://','non-directory\x20root'];a4_0x443c=function(){return _0x4ce78c;};return a4_0x443c();}import a4_0x4e5dc2 from'path';import a4_0x103e71 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x25ffcb){const _0x19c63c=a4_0x5272;try{const _0x2b7714=_0x25ffcb[_0x19c63c(0xee)](_0x19c63c(0xfe))?_0x25ffcb[_0x19c63c(0x102)](0x7):_0x25ffcb,_0x4a3d56=_0x2b7714[_0x19c63c(0xee)]('~/')||_0x2b7714==='~'?a4_0x4e5dc2[_0x19c63c(0x103)](a4_0x103e71[_0x19c63c(0xfd)](),_0x2b7714['slice'](0x1)):_0x2b7714,_0x397e66=a4_0x4e5dc2[_0x19c63c(0xf8)](_0x4a3d56),_0x508b05=await a4_0x2704b9['realpath'](_0x397e66);return normalizePath(_0x508b05);}catch{return null;}}function formatDirectoryError(_0x21be67,_0x4c833c,_0x5c3c0d){const _0x130e2d=a4_0x5272;if(_0x5c3c0d)return _0x130e2d(0x104)+_0x5c3c0d+':\x20'+_0x21be67;const _0x4e83e2=_0x4c833c instanceof Error?_0x4c833c[_0x130e2d(0x101)]:String(_0x4c833c);return _0x130e2d(0xfa)+_0x21be67+_0x130e2d(0xfc)+_0x4e83e2;}function a4_0x5272(_0x147483,_0x3518d0){_0x147483=_0x147483-0xed;const _0x443c20=a4_0x443c();let _0x5272de=_0x443c20[_0x147483];return _0x5272de;}export async function getValidRootDirectories(_0x21fc53){const _0xffa4e2=a4_0x5272,_0x5a7835=[];for(const _0x1772ce of _0x21fc53){const _0x2b441e=await parseRootUri(_0x1772ce[_0xffa4e2(0xfb)]);if(!_0x2b441e){logMcpStderr(formatDirectoryError(_0x1772ce[_0xffa4e2(0xfb)],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0x11680e=await a4_0x2704b9[_0xffa4e2(0xef)](_0x2b441e);_0x11680e['isDirectory']()?_0x5a7835[_0xffa4e2(0x100)](_0x2b441e):logMcpStderr(formatDirectoryError(_0x2b441e,undefined,_0xffa4e2(0xff)));}catch(_0x565744){logMcpStderr(formatDirectoryError(_0x2b441e,_0x565744));}}return _0x5a7835;}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.151",
|
|
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.155",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|