@morphllm/morphmcp 0.8.136 → 0.8.138
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_0x55ae12=a0_0x1a9a;(function(_0x49b706,_0x192a69){const _0x1164dd=a0_0x1a9a,_0x3f824e=_0x49b706();while(!![]){try{const _0xead01=-parseInt(_0x1164dd(0x130))/0x1*(-parseInt(_0x1164dd(0x10b))/0x2)+-parseInt(_0x1164dd(0xd5))/0x3*(parseInt(_0x1164dd(0x132))/0x4)+-parseInt(_0x1164dd(0x185))/0x5*(-parseInt(_0x1164dd(0xd2))/0x6)+-parseInt(_0x1164dd(0x9a))/0x7+parseInt(_0x1164dd(0xef))/0x8*(parseInt(_0x1164dd(0xf7))/0x9)+parseInt(_0x1164dd(0x192))/0xa*(parseInt(_0x1164dd(0xd9))/0xb)+parseInt(_0x1164dd(0x11f))/0xc*(parseInt(_0x1164dd(0xb2))/0xd);if(_0xead01===_0x192a69)break;else _0x3f824e['push'](_0x3f824e['shift']());}catch(_0x30d9a9){_0x3f824e['push'](_0x3f824e['shift']());}}}(a0_0x60b8,0x6dce9));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_0x1a9a(_0x2342f3,_0x7b635c){_0x2342f3=_0x2342f3-0x90;const _0x60b8db=a0_0x60b8();let _0x1a9a7a=_0x60b8db[_0x2342f3];return _0x1a9a7a;}import a0_0x227f68 from'fs/promises';import a0_0x323230 from'path';import a0_0x296a32 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';function a0_0x60b8(){const _0x515c99=['2cUwvfa','@morphllm/morphmcp\x20','\x20\x20morph-mcp','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','Bearer\x20','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','api-key','exit','normalize','searchGitHub','startsWith','\x20for:\x20\x22','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','homedir','completed_with_file_errors','utf-8','.git','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','every','983964OTSjBP','message','MORPH_API_URL','join','morph-mcp','linesModified','context','push','metadata','https://morphllm.com/api/error-report','ToolException','SymlinkError','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','search_string','catch','completionId','175303ouKisE','etimedout','12XxNmeN','repo_path','BinaryFile','Created\x20File',',\x20modified\x20','Disabled\x20tools:\x20','oninitialized','access','File\x20read\x20error:','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','composer.json','version','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','read','runWarpGrep_call','grep\x20\x27','Tool\x20\x22','Cargo.toml','unknown','\x0a</file>','github_url','\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable','Benefits:\x0a','isDirectory','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','messages','Relevant\x20context\x20found:','branch','linesAdded','Warning:\x20','\x20-\x20','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','connect','floor','now','read\x20','safeParse','instruction','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','terminated','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','path','changes','FileReadError','MORPH_WARP_GREP_TIMEOUT','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','grep','[could\x20not\x20read\x20file:\x20','match','listRoots','\x20(new\x20file)','Invalid\x20arguments:\x20','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','number','linesRemoved','trim','realpath','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','FileNotFound','enum','dryRun','stack','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','assistant','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','split','timings','morph-','unknown\x20error','Error\x20running\x20fast\x20context\x20search:\x20','source','ms.\x20Success:\x20','basename','boolean','constructor','setRequestHandler','includes','node_modules','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','1960bZPoAK','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.','params','Workspace\x20mode\x20enabled:\x20Using\x20','UnknownError',',\x20removed\x20','roots','array','\x22>\x0aError\x20reading\x20file:\x20','❌\x20Morph\x20Edit\x20Failed:\x20','IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','\x27\x20in\x20`','string','10wcqZPN','some','user','Tool\x20','Fatal\x20error\x20running\x20server:','finish','argv','post','timeout','object','substring','inputSchema','-\x20Read\x20file\x20`','-\x20Grepped\x20\x27','Applied','min','optional','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','</file>','filter','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','1376690TZJqKT','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','stat','ms:','Fallback:\x20Using\x20workspace\x20root\x20','code','\x22.\x20Known\x20tools:\x20','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','morph-v3-fast','lines','isArray','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','timed\x20out','Morph\x20Edit\x20','sep','content','mcp-filesystem','RipgrepNotAvailable','toLowerCase','setNotificationHandler','\x20valid\x20directories','Failed\x20to\x20request\x20roots\x20from\x20client:','78sJcARS','text','data','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','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','warn','Failed\x20to\x20read\x20file:\x20','package.json','resolve','--api-key=','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','\x0aExamples:','../package.json','--version','PathError','ReadError','size','errors','<file\x20path=\x22','For\x20deletions:\x0a','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','log','readFile','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.','default','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','success','error','all','list_directory\x20','DISABLED_TOOLS','300fhKrkY','Specific\x20commit\x20hash\x20to\x20search','codebase_search','232479YIIfzj','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','1597123kYUVAR','Parent\x20directory\x20does\x20not\x20exist:\x20','edit_file','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','\x0a...\x20(truncated,\x20total:\x20','Morph\x20FastApply\x20failed\x20without\x20error\x20message','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','sk-','[github_codebase_search]\x20Searching\x20','has','.\x20Changes:\x20','[github_codebase_search]\x20Done\x20in\x20','WORKSPACE_ROOT','length','map','Max\x20results\x20to\x20return','RipgrepError','describe','--help','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','.cursor','16xYuOix','terminationReason','TimeoutError','name','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','role','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','github_codebase_search','210780EDkSPo','files','Repository\x20identifier','ENABLE_WORKSPACE_MODE','slice','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','morph-warp-grep-v1-1111v0','requiresApiKey','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','dirname','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','ENOENT','0.2.0','owner_repo','Error:\x20','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','.\x20Path:\x20','env','\x20chars)'];a0_0x60b8=function(){return _0x515c99;};return a0_0x60b8();}import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import a0_0x1dff3b from'axios';function fixPathRepetition(_0x1a3806){const _0x2ccf35=a0_0x1a9a,_0x394cdf=_0x1a3806[_0x2ccf35(0x177)](a0_0x323230[_0x2ccf35(0xaa)])['filter'](Boolean);if(_0x394cdf['length']<0x2)return null;for(let _0x23472d=Math[_0x2ccf35(0x153)](_0x394cdf['length']/0x2);_0x23472d>=0x1;_0x23472d--){for(let _0x3356e9=0x0;_0x3356e9<=_0x394cdf[_0x2ccf35(0xe6)]-0x2*_0x23472d;_0x3356e9++){const _0x3a252f=_0x394cdf[_0x2ccf35(0xfb)](_0x3356e9,_0x3356e9+_0x23472d),_0x54f7da=_0x394cdf[_0x2ccf35(0xfb)](_0x3356e9+_0x23472d,_0x3356e9+0x2*_0x23472d);if(_0x3a252f[_0x2ccf35(0x11e)]((_0x4de651,_0xf98293)=>_0x4de651===_0x54f7da[_0xf98293])){const _0x4433db=[..._0x394cdf[_0x2ccf35(0xfb)](0x0,_0x3356e9),..._0x394cdf[_0x2ccf35(0xfb)](_0x3356e9+_0x23472d)];return a0_0x323230['sep']+_0x4433db[_0x2ccf35(0x122)](a0_0x323230[_0x2ccf35(0xaa)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x110f2b=a0_0x1a9a;try{const _0x4e39f3=require(_0x110f2b(0xbf));return _0x4e39f3[_0x110f2b(0x13d)]??_0x110f2b(0x144);}catch(_0x198187){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x198187),_0x110f2b(0x144);}}function printHelp(){const _0x49e005=a0_0x1a9a;console[_0x49e005(0xc8)](_0x49e005(0x10c)+getPackageVersion()),console[_0x49e005(0xc8)](_0x49e005(0x174)),console['log']('\x0aOptions:'),console[_0x49e005(0xc8)](_0x49e005(0x15a)),console['log'](_0x49e005(0xdf)),console[_0x49e005(0xc8)](_0x49e005(0xdc)),console['log'](_0x49e005(0xbe)),console[_0x49e005(0xc8)](_0x49e005(0x10d)),console[_0x49e005(0xc8)](_0x49e005(0x14a));}const cliArgs=process[a0_0x55ae12(0x198)][a0_0x55ae12(0xfb)](0x2),VERSION_FLAGS=new Set([a0_0x55ae12(0xc0),'-v','-V']),HELP_FLAGS=new Set([a0_0x55ae12(0xeb),'-h']);cliArgs[a0_0x55ae12(0x193)](_0x3ad3f7=>VERSION_FLAGS[a0_0x55ae12(0xe2)](_0x3ad3f7))&&(console[a0_0x55ae12(0xc8)](a0_0x55ae12(0x10c)+getPackageVersion()),process[a0_0x55ae12(0x113)](0x0));cliArgs[a0_0x55ae12(0x193)](_0x468084=>HELP_FLAGS[a0_0x55ae12(0xe2)](_0x468084))&&(printHelp(),process[a0_0x55ae12(0x113)](0x0));function getCliArg(_0x8c56c9){const _0x551c36=a0_0x55ae12;for(let _0x20aa80=0x0;_0x20aa80<cliArgs[_0x551c36(0xe6)];_0x20aa80++){const _0x12d3bd=cliArgs[_0x20aa80];if(_0x12d3bd[_0x551c36(0x116)]('--'+_0x8c56c9+'='))return _0x12d3bd['slice'](('--'+_0x8c56c9+'=')['length']);if(_0x12d3bd==='--'+_0x8c56c9&&_0x20aa80+0x1<cliArgs[_0x551c36(0xe6)])return cliArgs[_0x20aa80+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x55ae12(0xe6)];i++){const arg=cliArgs[i];if(VERSION_FLAGS['has'](arg)||HELP_FLAGS[a0_0x55ae12(0xe2)](arg))continue;if(arg['startsWith'](a0_0x55ae12(0xbc)))continue;if(arg==='--api-key'){i++;continue;}args['push'](arg);}const WORKSPACE_ROOT=process[a0_0x55ae12(0x109)][a0_0x55ae12(0xe5)]||process[a0_0x55ae12(0x109)]['PWD']||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0x55ae12(0x109)][a0_0x55ae12(0xfa)]!=='false',MORPH_API_KEY=getCliArg(a0_0x55ae12(0x112))??process[a0_0x55ae12(0x109)]['MORPH_API_KEY'],MORPH_API_URL=process[a0_0x55ae12(0x109)][a0_0x55ae12(0x121)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x55ae12(0x109)][a0_0x55ae12(0x15f)]?parseInt(process[a0_0x55ae12(0x109)][a0_0x55ae12(0x15f)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set(['edit_file','codebase_search',a0_0x55ae12(0xf6)]),DISABLED_TOOLS=process['env']['DISABLED_TOOLS']?new Set(process['env'][a0_0x55ae12(0xd1)]['split'](',')[a0_0x55ae12(0xe7)](_0x12eb88=>_0x12eb88[a0_0x55ae12(0x16d)]())[a0_0x55ae12(0x97)](_0x27c6d4=>_0x27c6d4[a0_0x55ae12(0xe6)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0x55ae12(0xc3)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES['has'](tool)&&console['error'](a0_0x55ae12(0xed)+tool+a0_0x55ae12(0xa1)+[...KNOWN_TOOL_NAMES][a0_0x55ae12(0x122)](',\x20'));}console['error'](a0_0x55ae12(0x137)+[...DISABLED_TOOLS][a0_0x55ae12(0x122)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x55ae12(0x116)](a0_0x55ae12(0xe0))&&!MORPH_API_KEY[a0_0x55ae12(0x116)](a0_0x55ae12(0x179))&&logMcpStderr(a0_0x55ae12(0x99));async function reportMorphError(_0x47053b){const _0x484fdf=a0_0x55ae12;try{await a0_0x1dff3b[_0x484fdf(0x199)](_0x484fdf(0x128),{..._0x47053b,'timestamp':new Date()['toISOString'](),'source':_0x47053b[_0x484fdf(0x17c)]||_0x484fdf(0xac),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x47053b[_0x484fdf(0x125)]}},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':_0x484fdf(0x10f)+MORPH_API_KEY}});}catch{}}args[a0_0x55ae12(0xe6)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x55ae12(0x110)),logMcpStderr(a0_0x55ae12(0x13e)),logMcpStderr(a0_0x55ae12(0x102)),logMcpStderr(a0_0x55ae12(0xbd)),logMcpStderr(a0_0x55ae12(0x9b)),logMcpStderr(a0_0x55ae12(0xd8)));function normalizePath(_0x22164d){const _0x3d7af4=a0_0x55ae12;return a0_0x323230[_0x3d7af4(0x114)](_0x22164d);}function expandHome(_0x1d0af1){const _0x591d19=a0_0x55ae12;if(_0x1d0af1[_0x591d19(0x116)]('~/')||_0x1d0af1==='~')return a0_0x323230[_0x591d19(0x122)](a0_0x296a32[_0x591d19(0x119)](),_0x1d0af1[_0x591d19(0xfb)](0x1));return _0x1d0af1;}let allowedDirectories=await Promise['all'](args['map'](async _0x3f1a9e=>{const _0x5140cf=a0_0x55ae12,_0x405cc4=expandHome(_0x3f1a9e),_0x4e5c7e=a0_0x323230[_0x5140cf(0xbb)](_0x405cc4);try{const _0x342732=await a0_0x227f68[_0x5140cf(0x16e)](_0x4e5c7e);return normalizePath(_0x342732);}catch(_0x18eb71){return normalizePath(_0x4e5c7e);}}));if(ENABLE_WORKSPACE_MODE&&args['length']===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x55ae12(0x126)](workspaceDir),logMcpStderr(a0_0x55ae12(0x188)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x4fc7ba){logMcpStderr(a0_0x55ae12(0x176)+a0_0x4fc7ba);}async function detectWorkspaceRoot(_0x48205f){const _0x103b3b=a0_0x55ae12;let _0x119502=a0_0x323230[_0x103b3b(0xbb)](_0x48205f);const _0xb576f7=[_0x103b3b(0x11c),'.vscode',_0x103b3b(0xba),_0x103b3b(0x143),'pyproject.toml','go.mod',_0x103b3b(0xee),'tsconfig.json',_0x103b3b(0x13c)];while(_0x119502!==a0_0x323230[_0x103b3b(0x101)](_0x119502)){for(const _0xb751e8 of _0xb576f7){const _0x2e5c2f=a0_0x323230[_0x103b3b(0x122)](_0x119502,_0xb751e8);try{return await a0_0x227f68[_0x103b3b(0x139)](_0x2e5c2f),normalizePath(_0x119502);}catch{}}_0x119502=a0_0x323230['dirname'](_0x119502);}return normalizePath(_0x48205f);}await Promise[a0_0x55ae12(0xcf)](args['map'](async _0x52b83d=>{const _0xe5e356=a0_0x55ae12;try{const _0x5499aa=await a0_0x227f68[_0xe5e356(0x9d)](expandHome(_0x52b83d));!_0x5499aa[_0xe5e356(0x149)]()&&(logMcpStderr(_0xe5e356(0x106)+_0x52b83d+'\x20is\x20not\x20a\x20directory'),process['exit'](0x1));}catch(_0x1f090e){logMcpStderr('Error\x20accessing\x20directory\x20'+_0x52b83d+':',_0x1f090e),process[_0xe5e356(0x113)](0x1);}}));async function validatePath(_0x41e58e){const _0x3e5e3a=a0_0x55ae12,_0x2a585d=expandHome(_0x41e58e),_0x290af2=a0_0x323230[_0x3e5e3a(0xbb)](_0x2a585d);try{const _0x2ecc3a=await a0_0x227f68['realpath'](_0x290af2);return _0x2ecc3a;}catch(_0x4f0607){if(_0x4f0607[_0x3e5e3a(0xa0)]===_0x3e5e3a(0x103)){const _0x3c3866=a0_0x323230[_0x3e5e3a(0x101)](_0x290af2);try{const _0x101a67=await a0_0x227f68[_0x3e5e3a(0x16e)](_0x3c3866);return a0_0x323230['join'](_0x101a67,a0_0x323230['basename'](_0x290af2));}catch{throw new Error(_0x3e5e3a(0xda)+_0x3c3866);}}throw _0x4f0607;}}const MorphEditFileArgsSchema=z[a0_0x55ae12(0x19b)]({'path':z[a0_0x55ae12(0x191)](),'code_edit':z[a0_0x55ae12(0x191)]()['describe'](a0_0x55ae12(0xb5)),'instruction':z[a0_0x55ae12(0x191)]()[a0_0x55ae12(0xea)](a0_0x55ae12(0x9c)),'dryRun':z[a0_0x55ae12(0x17f)]()['default'](![])[a0_0x55ae12(0xea)]('Preview\x20changes\x20without\x20applying\x20them.')}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x55ae12(0x186),WarpGrepArgsSchema=z[a0_0x55ae12(0x19b)]({'search_string':z[a0_0x55ae12(0x191)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x55ae12(0x191)]()['describe']('The\x20absolute\x20path\x20of\x20the\x20folder\x20where\x20the\x20search\x20should\x20be\x20performed.\x20In\x20multi-repo\x20workspaces,\x20you\x20have\x20to\x20specify\x20a\x20subfolder\x20where\x20the\x20search\x20should\x20be\x20performed,\x20to\x20avoid\x20searching\x20across\x20all\x20repos'),'search_type':z[a0_0x55ae12(0x171)]([a0_0x55ae12(0xcb),a0_0x55ae12(0x183)])[a0_0x55ae12(0x94)]()['describe'](a0_0x55ae12(0x158))}),WarpGrepGitHubArgsSchema=z[a0_0x55ae12(0x19b)]({'search_string':z['string']()[a0_0x55ae12(0xea)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x55ae12(0x191)]()[a0_0x55ae12(0x94)]()[a0_0x55ae12(0xea)](a0_0x55ae12(0xca)),'owner_repo':z[a0_0x55ae12(0x191)]()[a0_0x55ae12(0x94)]()['describe'](a0_0x55ae12(0x12c)),'branch':z[a0_0x55ae12(0x191)]()['optional']()[a0_0x55ae12(0xea)](a0_0x55ae12(0x163))}),CodebaseSearchArgsSchema=z['object']({'query':z[a0_0x55ae12(0x191)]()[a0_0x55ae12(0xea)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z['string']()[a0_0x55ae12(0xea)](a0_0x55ae12(0xf9)),'branch':z[a0_0x55ae12(0x191)]()[a0_0x55ae12(0x94)]()['describe'](a0_0x55ae12(0x118)),'commitHash':z[a0_0x55ae12(0x191)]()['optional']()[a0_0x55ae12(0xea)](a0_0x55ae12(0xd3)),'targetDirectories':z[a0_0x55ae12(0x18c)](z[a0_0x55ae12(0x191)]())[a0_0x55ae12(0xcb)]([])['describe']('Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all'),'limit':z[a0_0x55ae12(0x16b)]()[a0_0x55ae12(0x94)]()[a0_0x55ae12(0xcb)](0xa)[a0_0x55ae12(0xea)](a0_0x55ae12(0xe8))}),server=new Server({'name':a0_0x55ae12(0x123),'version':'0.2.0'},{'capabilities':{'tools':{}}});server[a0_0x55ae12(0x181)](ListToolsRequestSchema,async()=>{const _0x5417a8=a0_0x55ae12,_0x5380de=[{'name':'edit_file','description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a'+'⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a'+_0x5417a8(0xc7)+_0x5417a8(0xcc)+_0x5417a8(0x148)+_0x5417a8(0x11d)+_0x5417a8(0x16f)+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+_0x5417a8(0x95)+_0x5417a8(0x16a)+_0x5417a8(0x111)+_0x5417a8(0x100)+_0x5417a8(0xc6)+_0x5417a8(0xfc)+_0x5417a8(0xd7)+'Rules:\x0a'+_0x5417a8(0x98)+_0x5417a8(0x162)+_0x5417a8(0x10e)+_0x5417a8(0xa7)+_0x5417a8(0xfd)+_0x5417a8(0xb6)+_0x5417a8(0x18f),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':'codebase_search','description':_0x5417a8(0xb7)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x5417a8(0xec)+_0x5417a8(0xf3)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0xd96717=_0x5380de[_0x5417a8(0x97)](_0x1b180b=>{const _0x8c0499=_0x5417a8;if(DISABLED_TOOLS[_0x8c0499(0xe2)](_0x1b180b['name']))return console['error'](_0x8c0499(0x195)+_0x1b180b[_0x8c0499(0xf2)]+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if(_0x8c0499(0xff)in _0x1b180b&&_0x1b180b[_0x8c0499(0xff)]&&!MORPH_API_KEY)return logMcpStderr(_0x8c0499(0x14f)+_0x1b180b[_0x8c0499(0xf2)]+_0x8c0499(0xa3)),![];return!![];});return{'tools':_0xd96717['map'](_0x3cf427=>({'name':_0x3cf427['name'],'description':_0x3cf427['description'],'inputSchema':_0x3cf427[_0x5417a8(0x19d)]}))};}),server['setRequestHandler'](CallToolRequestSchema,async _0x33cfa5=>{const _0x11cdd6=a0_0x55ae12,{name:_0x5d5c50,arguments:_0x460c2e}=_0x33cfa5[_0x11cdd6(0x187)];try{if(DISABLED_TOOLS['has'](_0x5d5c50))throw new Error(_0x11cdd6(0x142)+_0x5d5c50+_0x11cdd6(0x147));switch(_0x5d5c50){case _0x11cdd6(0xdb):{const _0x55a16c=MorphEditFileArgsSchema['safeParse'](_0x460c2e);if(!_0x55a16c[_0x11cdd6(0xcd)])throw new Error(_0x11cdd6(0x107)+_0x55a16c[_0x11cdd6(0xce)]);const _0x496dd6=await validatePath(_0x55a16c[_0x11cdd6(0xb4)][_0x11cdd6(0x15c)]);let _0x55b91b=null,_0x5d5ed2=!![],_0x3803bd=null;try{_0x55b91b=await a0_0x227f68[_0x11cdd6(0xc9)](_0x496dd6,_0x11cdd6(0x11b));}catch(_0x19cfcb){const _0xb4c397=_0x19cfcb[_0x11cdd6(0xa0)];_0xb4c397===_0x11cdd6(0x103)?(_0x5d5ed2=![],_0x55b91b=''):(_0x3803bd=_0x11cdd6(0xb9)+(_0xb4c397||'unknown')+_0x11cdd6(0x150)+(_0x19cfcb instanceof Error?_0x19cfcb['message']:String(_0x19cfcb)),logMcpStderr(_0x11cdd6(0x14f)+_0x3803bd));}let _0x3695b8;try{const _0x57f3a1=MORPH_API_KEY;if(!_0x57f3a1)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x54f726=a0_0x323230[_0x11cdd6(0x101)](_0x496dd6),_0x4a1927=a0_0x323230[_0x11cdd6(0x17e)](_0x496dd6),_0x36cfce=await executeEditFile({'target_filepath':_0x4a1927,'code_edit':_0x55a16c[_0x11cdd6(0xb4)]['code_edit'],'instructions':_0x55a16c[_0x11cdd6(0xb4)][_0x11cdd6(0x157)]},{'morphApiKey':_0x57f3a1,'morphApiUrl':MORPH_API_URL,'baseDir':_0x54f726,'autoWrite':!_0x55a16c[_0x11cdd6(0xb4)][_0x11cdd6(0x172)],'generateUdiff':![],'debug':![]});_0x3695b8=_0x36cfce[_0x11cdd6(0x12f)];if(!_0x36cfce[_0x11cdd6(0xcd)])throw new Error(_0x36cfce[_0x11cdd6(0xce)]||_0x11cdd6(0xde));const _0x1f8d68=_0x36cfce[_0x11cdd6(0x15d)],_0x2e1437='added\x20'+_0x1f8d68[_0x11cdd6(0x14e)]+_0x11cdd6(0x18a)+_0x1f8d68[_0x11cdd6(0x16c)]+_0x11cdd6(0x136)+_0x1f8d68[_0x11cdd6(0x124)];if(_0x55a16c[_0x11cdd6(0xb4)][_0x11cdd6(0x172)])return{'content':[{'type':'text','text':'Morph\x20Edit\x20Preview'+(_0x5d5ed2?'':_0x11cdd6(0x168))+':\x20'+_0x55a16c[_0x11cdd6(0xb4)][_0x11cdd6(0x157)]+_0x11cdd6(0xe3)+_0x2e1437+_0x11cdd6(0x108)+_0x55a16c[_0x11cdd6(0xb4)][_0x11cdd6(0x15c)]+'.'}]};return{'content':[{'type':_0x11cdd6(0xb3),'text':_0x11cdd6(0xa9)+(_0x5d5ed2?_0x11cdd6(0x92):_0x11cdd6(0x135))+':\x20'+_0x55a16c[_0x11cdd6(0xb4)][_0x11cdd6(0x157)]+_0x11cdd6(0xe3)+_0x2e1437+_0x11cdd6(0x108)+_0x55a16c[_0x11cdd6(0xb4)][_0x11cdd6(0x15c)]+'.'}]};}catch(_0x54847b){const _0x565453=_0x54847b instanceof Error?_0x54847b[_0x11cdd6(0x120)]:String(_0x54847b);return reportMorphError({'error_message':_0x565453,'error_type':_0x54847b instanceof Error?_0x54847b[_0x11cdd6(0x180)]['name']:'UnknownError','context':{'tool':_0x11cdd6(0xdb),'completion_id':_0x3695b8,'file_path':_0x55a16c[_0x11cdd6(0xb4)][_0x11cdd6(0x15c)],'validated_path':_0x496dd6,'instruction':_0x55a16c['data']['instruction'],'model':_0x11cdd6(0xa4),'dry_run':_0x55a16c[_0x11cdd6(0xb4)][_0x11cdd6(0x172)],'file_exists':_0x5d5ed2,'file_read_error':_0x3803bd,'file_readable':_0x55b91b!==null,'request_content':{'path':_0x55a16c[_0x11cdd6(0xb4)]['path'],'code_edit':_0x55a16c[_0x11cdd6(0xb4)]['code_edit'],'instruction':_0x55a16c['data'][_0x11cdd6(0x157)],'original_code':_0x55b91b!==null?_0x55b91b[_0x11cdd6(0xe6)]>0xc350?_0x55b91b[_0x11cdd6(0x19c)](0x0,0xc350)+_0x11cdd6(0xdd)+_0x55b91b[_0x11cdd6(0xe6)]+_0x11cdd6(0x10a):_0x55b91b:_0x11cdd6(0x165)+(_0x3803bd||_0x11cdd6(0x17a))+']','original_code_length':_0x55b91b?.[_0x11cdd6(0xe6)]??0x0,'model':_0x11cdd6(0xa4),'dry_run':_0x55a16c[_0x11cdd6(0xb4)]['dryRun']}},'stack_trace':_0x54847b instanceof Error?_0x54847b[_0x11cdd6(0x173)]:undefined,'source':_0x11cdd6(0xac)})[_0x11cdd6(0x12e)](()=>{}),{'content':[{'type':'text','text':_0x11cdd6(0x18e)+_0x565453}],'isError':!![]};}}case'codebase_search':{const _0x54e539=WarpGrepArgsSchema[_0x11cdd6(0x156)](_0x460c2e);if(!_0x54e539['success'])return{'content':[{'type':_0x11cdd6(0xb3),'text':'Invalid\x20arguments:\x20'+_0x54e539['error']}],'isError':!![]};const _0x3542ad=_0x845900=>{const _0x5d8ff6=_0x11cdd6,_0x6f0a96=[];for(const _0x141ed8 of _0x845900||[]){const _0x317f53=_0x141ed8[_0x5d8ff6(0xf4)],_0x26b4cd=_0x141ed8[_0x5d8ff6(0xab)];if(_0x317f53===_0x5d8ff6(0x175)&&_0x26b4cd){const _0x10df40=_0x26b4cd[_0x5d8ff6(0x177)]('\x0a')[_0x5d8ff6(0x97)](_0x28241b=>_0x28241b[_0x5d8ff6(0x16d)]());for(const _0x1bbc3f of _0x10df40){const _0x47883d=_0x1bbc3f[_0x5d8ff6(0x166)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x47883d){_0x6f0a96[_0x5d8ff6(0x126)](_0x5d8ff6(0x141)+_0x47883d[0x1]+'\x27\x20'+_0x47883d[0x2]);continue;}const _0x23131c=_0x1bbc3f[_0x5d8ff6(0x166)](/^read\s+(.+)$/);if(_0x23131c){_0x6f0a96['push'](_0x5d8ff6(0x155)+_0x23131c[0x1]);continue;}const _0xb55814=_0x1bbc3f[_0x5d8ff6(0x166)](/^list_directory\s+(.+)$/);if(_0xb55814){_0x6f0a96[_0x5d8ff6(0x126)](_0x5d8ff6(0xd0)+_0xb55814[0x1]);continue;}}}}return _0x6f0a96;},_0x2fc001=_0x22a947=>{const _0x442139=_0x11cdd6,_0x32ec12=[];if(!_0x22a947||!Array[_0x442139(0xa6)](_0x22a947))return _0x32ec12;const _0x347b6a=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x442139(0x170),'tool':_0x442139(0x13f)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x442139(0xc1),'tool':_0x442139(0x13f)},{'pattern':/\[READ ERROR\]/,'error_type':'ReadError','tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x442139(0x134),'tool':_0x442139(0x13f)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x442139(0xe9),'tool':_0x442139(0x164)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x442139(0xad),'tool':_0x442139(0x164)},{'pattern':/\[BINARY FILE\]/,'error_type':'BinaryFile','tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':_0x442139(0x12a),'tool':_0x442139(0x13f)},{'pattern':/not a text file/,'error_type':'BinaryFile','tool':'read'},{'pattern':/symbolic link/,'error_type':_0x442139(0x12a),'tool':_0x442139(0x13f)},{'pattern':/Error reading file:/,'error_type':_0x442139(0xc2),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x442139(0x129),'tool':_0x442139(0x144)}];let _0x2d6ad4=0x0;for(const _0x41a870 of _0x22a947){if(_0x41a870[_0x442139(0xf4)]===_0x442139(0x194)){_0x2d6ad4++;const _0x363f06=_0x41a870[_0x442139(0xab)];if(!_0x363f06||typeof _0x363f06!==_0x442139(0x191))continue;for(const {pattern:_0x393247,error_type:_0x5a02d5,tool:_0x2fa1b7}of _0x347b6a){const _0x8fabe1=_0x363f06[_0x442139(0x166)](new RegExp(_0x393247[_0x442139(0x17c)],'g'));if(_0x8fabe1)for(const _0x48e934 of _0x8fabe1){const _0x3c9a9d=_0x363f06['indexOf'](_0x48e934),_0x3a7819=_0x363f06[_0x442139(0x19c)](_0x3c9a9d,Math[_0x442139(0x93)](_0x3c9a9d+0xc8,_0x363f06[_0x442139(0xe6)]));_0x32ec12[_0x442139(0x126)]({'tool':_0x2fa1b7,'error_type':_0x5a02d5,'error_message':_0x3a7819[_0x442139(0x177)]('\x0a')[0x0],'turn':_0x2d6ad4});}}}}return _0x32ec12;};try{const _0x25038b=a0_0x323230[_0x11cdd6(0xbb)](_0x54e539[_0x11cdd6(0xb4)][_0x11cdd6(0x133)]),_0x6c0f35=_0x54e539[_0x11cdd6(0xb4)]['search_type'],_0x26bb54=_0x6c0f35===_0x11cdd6(0x183)?{'allowNames':[_0x11cdd6(0x183)]}:undefined,_0x1b5983=new LocalRipgrepProvider(_0x25038b,undefined,_0x26bb54),_0xa686c0=await runWarpGrep({'searchTerm':_0x54e539[_0x11cdd6(0xb4)][_0x11cdd6(0x12d)],'repoRoot':_0x25038b,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x1b5983,'search_type':_0x6c0f35}),_0x8595d6=_0x2fc001(_0xa686c0[_0x11cdd6(0x14b)]);_0x8595d6[_0x11cdd6(0xe6)]>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x8595d6[_0x11cdd6(0xe6)]+'\x20error(s)','error_type':'SubToolError','level':_0x11cdd6(0xb8),'tool':_0x11cdd6(0xd4),'context':{'repo_path':_0x54e539[_0x11cdd6(0xb4)]['repo_path'],'query':_0x54e539[_0x11cdd6(0xb4)]['search_string'],'model':_0x11cdd6(0xfe),'termination_reason':_0xa686c0[_0x11cdd6(0xf0)],'sub_tool_errors':_0x8595d6,'timings':_0xa686c0[_0x11cdd6(0x178)],'tool_calls':_0x3542ad(_0xa686c0[_0x11cdd6(0x14b)]),'messages':_0xa686c0[_0x11cdd6(0x14b)]?.[_0x11cdd6(0xe7)](_0x3b4b8d=>({'role':_0x3b4b8d[_0x11cdd6(0xf4)],'content':_0x3b4b8d['content']}))},'source':'mcp-filesystem'})[_0x11cdd6(0x12e)](()=>{});let _0x3c31a2='';if(_0xa686c0[_0x11cdd6(0xf0)]==='completed'&&_0xa686c0[_0x11cdd6(0x197)]?.[_0x11cdd6(0x127)]?.['files']){const _0x4ee9e0=_0xa686c0[_0x11cdd6(0x197)][_0x11cdd6(0x127)][_0x11cdd6(0xf8)];if(_0x4ee9e0[_0x11cdd6(0xe6)]===0x0)return _0x3c31a2=_0xa686c0[_0x11cdd6(0x197)]['payload']||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':'text','text':_0x3c31a2}]};const _0x30028a=[],_0x224792=[_0x11cdd6(0xf5)];for(const _0x202cd9 of _0xa686c0[_0x11cdd6(0x14b)]){const _0x47c7f1=_0x202cd9[_0x11cdd6(0xf4)],_0x5a3675=_0x202cd9[_0x11cdd6(0xab)];if(_0x47c7f1===_0x11cdd6(0x175)&&_0x5a3675){const _0x338112=_0x5a3675[_0x11cdd6(0x177)]('\x0a')[_0x11cdd6(0x97)](_0x293ae3=>_0x293ae3[_0x11cdd6(0x16d)]());for(const _0x314c21 of _0x338112){const _0x470cfc=_0x314c21[_0x11cdd6(0x166)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x470cfc){_0x224792[_0x11cdd6(0x126)](_0x11cdd6(0x91)+_0x470cfc[0x1]+_0x11cdd6(0x190)+_0x470cfc[0x2]+'`');continue;}const _0x178f45=_0x314c21[_0x11cdd6(0x166)](/^read\s+(.+)$/);if(_0x178f45){_0x224792[_0x11cdd6(0x126)](_0x11cdd6(0x90)+_0x178f45[0x1]+'`');continue;}const _0x11fdb3=_0x314c21[_0x11cdd6(0x166)](/^list_directory\s+(.+)$/);if(_0x11fdb3){_0x224792[_0x11cdd6(0x126)]('-\x20Listed\x20directory\x20`'+_0x11fdb3[0x1]+'`');continue;}}}}_0x30028a[_0x11cdd6(0x126)](_0x224792['join']('\x0a'));const _0x2fe6a7=['',_0x11cdd6(0x14c)];for(const _0x249d06 of _0x4ee9e0){if(_0x249d06[_0x11cdd6(0xa5)]==='*')_0x2fe6a7['push']('-\x20'+_0x249d06['path']+':*');else{if(Array['isArray'](_0x249d06['lines'])){const _0x22206b=_0x249d06[_0x11cdd6(0xa5)][_0x11cdd6(0xe7)](([_0x1624e0,_0xb14924])=>{if(_0x1624e0===_0xb14924)return''+_0x1624e0;return _0x1624e0+'-'+_0xb14924;});_0x2fe6a7[_0x11cdd6(0x126)]('-\x20'+_0x249d06[_0x11cdd6(0x15c)]+':'+_0x22206b[_0x11cdd6(0x122)](','));}else _0x2fe6a7['push']('-\x20'+_0x249d06[_0x11cdd6(0x15c)]+':*');}}_0x2fe6a7[_0x11cdd6(0x126)](''),_0x30028a[_0x11cdd6(0x126)](_0x2fe6a7[_0x11cdd6(0x122)]('\x0a')),_0x30028a['push']('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x3c5e80=[];for(const _0x18242a of _0x4ee9e0){let _0x63841e=a0_0x323230[_0x11cdd6(0xbb)](_0x54e539[_0x11cdd6(0xb4)][_0x11cdd6(0x133)],_0x18242a[_0x11cdd6(0x15c)]),_0x56db20=null,_0x2454d1=null;try{_0x56db20=await a0_0x227f68[_0x11cdd6(0xc9)](_0x63841e,{'encoding':'utf-8'});}catch(_0x2db33f){const _0x3a7f0c=fixPathRepetition(_0x63841e);if(_0x3a7f0c)try{_0x56db20=await a0_0x227f68[_0x11cdd6(0xc9)](_0x3a7f0c,{'encoding':'utf-8'}),_0x63841e=_0x3a7f0c;}catch{_0x2454d1=_0x2db33f instanceof Error?_0x2db33f:new Error(String(_0x2db33f));}else _0x2454d1=_0x2db33f instanceof Error?_0x2db33f:new Error(String(_0x2db33f));}if(_0x56db20!==null){const _0x57d532=_0x56db20[_0x11cdd6(0x177)](/\r?\n/),_0x3ed6a6=[_0x11cdd6(0xc5)+_0x18242a[_0x11cdd6(0x15c)]+'\x22>'];if(_0x18242a[_0x11cdd6(0xa5)]==='*'||!Array['isArray'](_0x18242a[_0x11cdd6(0xa5)]))for(let _0x240051=0x1;_0x240051<=_0x57d532[_0x11cdd6(0xe6)];_0x240051++){const _0xa62f82=_0x57d532[_0x240051-0x1];_0x3ed6a6[_0x11cdd6(0x126)](_0x240051+'|\x20'+_0xa62f82);}else for(const [_0xbe989c,_0x3db873]of _0x18242a[_0x11cdd6(0xa5)]){_0x3ed6a6['length']>0x1&&_0x3ed6a6['push']('');for(let _0x3ec162=_0xbe989c;_0x3ec162<=_0x3db873&&_0x3ec162<=_0x57d532[_0x11cdd6(0xe6)];_0x3ec162++){const _0x3084d3=_0x57d532[_0x3ec162-0x1];_0x3ed6a6['push'](_0x3ec162+'|\x20'+_0x3084d3);}}_0x3ed6a6['push'](_0x11cdd6(0x96)),_0x3c5e80[_0x11cdd6(0x126)](_0x3ed6a6[_0x11cdd6(0x122)]('\x0a'));}else _0x3c5e80['push']('<file\x20path=\x22'+_0x18242a['path']+_0x11cdd6(0x18d)+(_0x2454d1?.[_0x11cdd6(0x120)]||'Unknown\x20error')+_0x11cdd6(0x145));}_0x30028a['push'](_0x3c5e80[_0x11cdd6(0x122)]('\x0a\x0a')),_0x3c31a2=_0x30028a[_0x11cdd6(0x122)]('\x0a');const _0x37f9ae=_0xa686c0[_0x11cdd6(0xc4)]?.[_0x11cdd6(0x97)](_0x57232a=>_0x57232a[_0x11cdd6(0x120)]?.[_0x11cdd6(0x116)](_0x11cdd6(0x13a)))||[];if(_0x37f9ae['length']>0x0){const _0x5e37d9=_0x37f9ae['map'](_0x31d0a0=>_0x31d0a0[_0x11cdd6(0x120)])['join'](';\x20');reportMorphError({'error_message':_0x5e37d9,'error_type':_0x11cdd6(0x15e),'context':{'tool':_0x11cdd6(0xd4),'repo_path':_0x54e539[_0x11cdd6(0xb4)]['repo_path'],'query':_0x54e539[_0x11cdd6(0xb4)]['search_string'],'model':_0x11cdd6(0xfe),'termination_reason':_0x11cdd6(0x11a),'error_count':_0x37f9ae['length'],'is_timeout':![],'timings':_0xa686c0[_0x11cdd6(0x178)],'files_attempted':_0x4ee9e0[_0x11cdd6(0xe7)](_0x6b678c=>({'path':_0x6b678c[_0x11cdd6(0x15c)],'lines':_0x6b678c['lines']})),'tool_calls':_0x3542ad(_0xa686c0[_0x11cdd6(0x14b)]),'messages':_0xa686c0[_0x11cdd6(0x14b)]?.['map'](_0x452523=>({'role':_0x452523[_0x11cdd6(0xf4)],'content':_0x452523[_0x11cdd6(0xab)]})),'request_content':{'query':_0x54e539[_0x11cdd6(0xb4)][_0x11cdd6(0x12d)],'repo_path':_0x54e539[_0x11cdd6(0xb4)]['repo_path'],'repoRoot':a0_0x323230[_0x11cdd6(0xbb)](_0x54e539['data'][_0x11cdd6(0x133)]),'model':_0x11cdd6(0xfe)}},'source':_0x11cdd6(0xac)})[_0x11cdd6(0x12e)](()=>{});}}else{if(_0xa686c0['terminationReason']===_0x11cdd6(0x159)&&_0xa686c0[_0x11cdd6(0xc4)][_0x11cdd6(0xe6)]>0x0){const _0x2b7826=_0xa686c0[_0x11cdd6(0xc4)][_0x11cdd6(0xe7)](_0x5ad2aa=>_0x5ad2aa['message'])[_0x11cdd6(0x122)](';\x20');_0x3c31a2=_0x11cdd6(0x106)+_0x2b7826;const _0x227a6d=_0x2b7826[_0x11cdd6(0xae)]()['includes']('timeout')||_0x2b7826['toLowerCase']()[_0x11cdd6(0x182)](_0x11cdd6(0xa8))||_0x2b7826[_0x11cdd6(0xae)]()[_0x11cdd6(0x182)](_0x11cdd6(0x131)),_0x46eaa5=_0xa686c0['finish']?.['metadata']?.['files'],_0x5006f4=_0xa686c0[_0x11cdd6(0xc4)][0x0];reportMorphError({'error_message':_0x2b7826,'error_type':_0x227a6d?_0x11cdd6(0xf1):_0x5006f4?.['constructor']?.[_0x11cdd6(0xf2)]||'WarpGrepError','context':{'tool':_0x11cdd6(0xd4),'repo_path':_0x54e539[_0x11cdd6(0xb4)]['repo_path'],'query':_0x54e539[_0x11cdd6(0xb4)]['search_string'],'model':_0x11cdd6(0xfe),'termination_reason':_0xa686c0[_0x11cdd6(0xf0)],'error_count':_0xa686c0[_0x11cdd6(0xc4)][_0x11cdd6(0xe6)],'is_timeout':_0x227a6d,'timings':_0xa686c0[_0x11cdd6(0x178)],'files_attempted':_0x46eaa5?.[_0x11cdd6(0xe7)](_0x178560=>({'path':_0x178560['path'],'lines':_0x178560[_0x11cdd6(0xa5)]})),'tool_calls':_0x3542ad(_0xa686c0[_0x11cdd6(0x14b)]),'messages':_0xa686c0[_0x11cdd6(0x14b)]?.[_0x11cdd6(0xe7)](_0xa2a7da=>({'role':_0xa2a7da[_0x11cdd6(0xf4)],'content':_0xa2a7da['content']})),'request_content':{'query':_0x54e539[_0x11cdd6(0xb4)][_0x11cdd6(0x12d)],'repo_path':_0x54e539['data']['repo_path'],'repoRoot':a0_0x323230['resolve'](_0x54e539[_0x11cdd6(0xb4)][_0x11cdd6(0x133)]),'model':_0x11cdd6(0xfe)}},'stack_trace':_0x5006f4?.[_0x11cdd6(0x173)]||undefined,'source':_0x11cdd6(0xac)})[_0x11cdd6(0x12e)](()=>{});}else _0x3c31a2=_0x11cdd6(0x151);}return{'content':[{'type':'text','text':_0x3c31a2}]};}catch(_0x33a114){const _0x155710=_0x33a114 instanceof Error?_0x33a114[_0x11cdd6(0x120)]:String(_0x33a114),_0x269b8e=_0x155710[_0x11cdd6(0xae)]()[_0x11cdd6(0x182)](_0x11cdd6(0x19a))||_0x155710[_0x11cdd6(0xae)]()[_0x11cdd6(0x182)](_0x11cdd6(0xa8))||_0x155710[_0x11cdd6(0xae)]()[_0x11cdd6(0x182)](_0x11cdd6(0x131))||_0x33a114 instanceof Error&&_0x33a114[_0x11cdd6(0xf2)]===_0x11cdd6(0xf1);return reportMorphError({'error_message':_0x155710,'error_type':_0x269b8e?_0x11cdd6(0xf1):_0x33a114 instanceof Error?_0x33a114[_0x11cdd6(0x180)][_0x11cdd6(0xf2)]:'UnknownError','context':{'tool':_0x11cdd6(0xd4),'repo_path':_0x54e539['data'][_0x11cdd6(0x133)],'query':_0x54e539[_0x11cdd6(0xb4)][_0x11cdd6(0x12d)],'model':_0x11cdd6(0xfe),'is_timeout':_0x269b8e,'exception_phase':_0x11cdd6(0x140),'request_content':{'query':_0x54e539[_0x11cdd6(0xb4)][_0x11cdd6(0x12d)],'repo_path':_0x54e539['data']['repo_path'],'repoRoot':a0_0x323230[_0x11cdd6(0xbb)](_0x54e539[_0x11cdd6(0xb4)]['repo_path']),'model':_0x11cdd6(0xfe)}},'stack_trace':_0x33a114 instanceof Error?_0x33a114[_0x11cdd6(0x173)]:undefined,'source':_0x11cdd6(0xac)})[_0x11cdd6(0x12e)](()=>{}),{'content':[{'type':'text','text':_0x11cdd6(0x17b)+_0x155710}],'isError':![]};}}case _0x11cdd6(0xf6):{const _0x331d86=WarpGrepGitHubArgsSchema[_0x11cdd6(0x156)](_0x460c2e);if(!_0x331d86[_0x11cdd6(0xcd)])return{'content':[{'type':_0x11cdd6(0xb3),'text':_0x11cdd6(0x169)+_0x331d86[_0x11cdd6(0xce)]}],'isError':!![]};const _0x33b8e1=_0x331d86[_0x11cdd6(0xb4)][_0x11cdd6(0x146)]||_0x331d86[_0x11cdd6(0xb4)][_0x11cdd6(0x105)];if(!_0x33b8e1)return{'content':[{'type':'text','text':_0x11cdd6(0x160)}],'isError':!![]};const _0x49387b=MORPH_API_KEY;if(!_0x49387b)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x1f8ae0=Date[_0x11cdd6(0x154)]();logMcpStderr(_0x11cdd6(0xe1)+_0x33b8e1+_0x11cdd6(0x117)+_0x331d86[_0x11cdd6(0xb4)][_0x11cdd6(0x12d)]+'\x22');try{const _0x4084c8=new WarpGrepClient({'morphApiKey':_0x49387b,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0xc539a9=await _0x4084c8[_0x11cdd6(0x115)]({'searchTerm':_0x331d86[_0x11cdd6(0xb4)][_0x11cdd6(0x12d)],'github':_0x33b8e1,'branch':_0x331d86['data'][_0x11cdd6(0x14d)]}),_0x27db93=Date[_0x11cdd6(0x154)]()-_0x1f8ae0;logMcpStderr(_0x11cdd6(0xe4)+_0x27db93+_0x11cdd6(0x17d)+_0xc539a9[_0x11cdd6(0xcd)]);const _0x508c1a=formatResult(_0xc539a9);return{'content':[{'type':_0x11cdd6(0xb3),'text':_0x508c1a}]};}catch(_0x1e7a2f){const _0x436a2d=Date[_0x11cdd6(0x154)]()-_0x1f8ae0,_0xda72ae=_0x1e7a2f instanceof Error?_0x1e7a2f[_0x11cdd6(0x120)]:String(_0x1e7a2f);return logMcpStderr('[github_codebase_search]\x20Failed\x20in\x20'+_0x436a2d+_0x11cdd6(0x9e),_0xda72ae),reportMorphError({'error_message':_0xda72ae,'error_type':_0x1e7a2f instanceof Error?_0x1e7a2f[_0x11cdd6(0x180)][_0x11cdd6(0xf2)]:_0x11cdd6(0x189),'context':{'tool':_0x11cdd6(0xf6),'github_url':_0x33b8e1,'search_string':_0x331d86[_0x11cdd6(0xb4)][_0x11cdd6(0x12d)],'branch':_0x331d86['data']['branch']},'stack_trace':_0x1e7a2f instanceof Error?_0x1e7a2f[_0x11cdd6(0x173)]:undefined,'source':_0x11cdd6(0xac),'tool':_0x11cdd6(0xf6),'latency_ms':_0x436a2d})[_0x11cdd6(0x12e)](()=>{}),{'content':[{'type':_0x11cdd6(0xb3),'text':'GitHub\x20search\x20failed:\x20'+_0xda72ae}],'isError':![]};}}default:throw new Error('Unknown\x20tool:\x20'+_0x5d5c50);}}catch(_0x2a6cc7){const _0x402c44=_0x2a6cc7 instanceof Error?_0x2a6cc7[_0x11cdd6(0x120)]:String(_0x2a6cc7);return reportMorphError({'error_message':_0x402c44,'error_type':_0x2a6cc7 instanceof Error?_0x2a6cc7[_0x11cdd6(0x180)][_0x11cdd6(0xf2)]:_0x11cdd6(0x189),'context':{'tool':_0x5d5c50,'arguments':_0x460c2e?JSON['stringify'](_0x460c2e)['substring'](0x0,0x1f4):undefined,'mcp_server_version':_0x11cdd6(0x104)},'stack_trace':_0x2a6cc7 instanceof Error?_0x2a6cc7[_0x11cdd6(0x173)]:undefined,'source':'mcp-filesystem'})[_0x11cdd6(0x12e)](()=>{}),{'content':[{'type':_0x11cdd6(0xb3),'text':_0x11cdd6(0x106)+_0x402c44}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x29c016){const _0x32ea25=a0_0x55ae12,_0xd0d90b=await getValidRootDirectories(_0x29c016);if(_0xd0d90b['length']>0x0)allowedDirectories=[..._0xd0d90b],logMcpStderr(_0x32ea25(0x15b)+_0xd0d90b[_0x32ea25(0xe6)]+_0x32ea25(0xb0));else{logMcpStderr(_0x32ea25(0xd6));if(ENABLE_WORKSPACE_MODE)try{const _0xfcd60=await detectWorkspaceRoot(WORKSPACE_ROOT);_0xfcd60&&(allowedDirectories=[_0xfcd60],logMcpStderr(_0x32ea25(0x9f)+_0xfcd60));}catch(_0x4e170c){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x4e170c);}}}server[a0_0x55ae12(0xaf)](RootsListChangedNotificationSchema,async()=>{const _0x48fb13=a0_0x55ae12;try{const _0x5a4245=await server[_0x48fb13(0x167)]();_0x5a4245&&_0x48fb13(0x18b)in _0x5a4245&&await updateAllowedDirectoriesFromRoots(_0x5a4245[_0x48fb13(0x18b)]);}catch(_0x25dbe3){logMcpStderr(_0x48fb13(0xb1),_0x25dbe3 instanceof Error?_0x25dbe3[_0x48fb13(0x120)]:String(_0x25dbe3));}}),server[a0_0x55ae12(0x138)]=async()=>{const _0x4846a9=a0_0x55ae12,_0x444d67=server['getClientCapabilities']();if(_0x444d67?.[_0x4846a9(0x18b)])try{const _0x44fbee=await server['listRoots']();_0x44fbee&&_0x4846a9(0x18b)in _0x44fbee?await updateAllowedDirectoriesFromRoots(_0x44fbee[_0x4846a9(0x18b)]):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x1a9393){logMcpStderr(_0x4846a9(0xa2),_0x1a9393 instanceof Error?_0x1a9393[_0x4846a9(0x120)]:String(_0x1a9393));}else{if(allowedDirectories['length']>0x0)logMcpStderr(_0x4846a9(0x184),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x4846a9(0x161));else throw new Error('Server\x20cannot\x20operate:\x20No\x20allowed\x20directories\x20available.\x20Server\x20was\x20started\x20without\x20command-line\x20directories\x20and\x20client\x20either\x20does\x20not\x20support\x20MCP\x20roots\x20protocol\x20or\x20provided\x20empty\x20roots.\x20Please\x20either:\x201)\x20Start\x20server\x20with\x20directory\x20arguments,\x202)\x20Use\x20a\x20client\x20that\x20supports\x20MCP\x20roots\x20protocol\x20and\x20provides\x20valid\x20root\x20directories,\x20or\x203)\x20Enable\x20workspace\x20mode\x20with\x20ENABLE_WORKSPACE_MODE=true.');}}};async function runServer(){const _0x353d67=a0_0x55ae12,_0x59c5e5=new StdioServerTransport();await server[_0x353d67(0x152)](_0x59c5e5),logMcpStderr(_0x353d67(0x12b)),allowedDirectories[_0x353d67(0xe6)]===0x0&&logMcpStderr(_0x353d67(0x13b));}runServer()[a0_0x55ae12(0x12e)](_0x4b90e1=>{const _0x40d8e0=a0_0x55ae12;logMcpStderr(_0x40d8e0(0x196),_0x4b90e1),process[_0x40d8e0(0x113)](0x1);});
|
|
2
|
+
const a0_0x5d769f=a0_0x5e75;(function(_0x1c0657,_0x45a2d0){const _0x91c1ff=a0_0x5e75,_0x2faaf5=_0x1c0657();while(!![]){try{const _0x292571=-parseInt(_0x91c1ff(0x23a))/0x1+-parseInt(_0x91c1ff(0x28e))/0x2+-parseInt(_0x91c1ff(0x297))/0x3+parseInt(_0x91c1ff(0x20a))/0x4+parseInt(_0x91c1ff(0x24f))/0x5*(parseInt(_0x91c1ff(0x286))/0x6)+-parseInt(_0x91c1ff(0x229))/0x7*(-parseInt(_0x91c1ff(0x2da))/0x8)+parseInt(_0x91c1ff(0x284))/0x9*(parseInt(_0x91c1ff(0x2c3))/0xa);if(_0x292571===_0x45a2d0)break;else _0x2faaf5['push'](_0x2faaf5['shift']());}catch(_0x26908c){_0x2faaf5['push'](_0x2faaf5['shift']());}}}(a0_0x58d4,0x8b809));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_0x3451ab from'fs/promises';import a0_0x3996c8 from'path';import a0_0x364821 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_0x5e75(_0x2f5641,_0x1cebbc){_0x2f5641=_0x2f5641-0x1d1;const _0x58d4f8=a0_0x58d4();let _0x5e754a=_0x58d4f8[_0x2f5641];return _0x5e754a;}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_0x3c2674 from'axios';function fixPathRepetition(_0x41b72e){const _0x577b6b=a0_0x5e75,_0xbd07a1=_0x41b72e[_0x577b6b(0x2e0)](a0_0x3996c8[_0x577b6b(0x2cb)])[_0x577b6b(0x261)](Boolean);if(_0xbd07a1[_0x577b6b(0x20f)]<0x2)return null;for(let _0x3c404a=Math[_0x577b6b(0x1e2)](_0xbd07a1[_0x577b6b(0x20f)]/0x2);_0x3c404a>=0x1;_0x3c404a--){for(let _0x2a73a2=0x0;_0x2a73a2<=_0xbd07a1[_0x577b6b(0x20f)]-0x2*_0x3c404a;_0x2a73a2++){const _0x155d27=_0xbd07a1['slice'](_0x2a73a2,_0x2a73a2+_0x3c404a),_0xc619=_0xbd07a1['slice'](_0x2a73a2+_0x3c404a,_0x2a73a2+0x2*_0x3c404a);if(_0x155d27[_0x577b6b(0x1ff)]((_0x44e756,_0x3f4e86)=>_0x44e756===_0xc619[_0x3f4e86])){const _0x58f879=[..._0xbd07a1[_0x577b6b(0x216)](0x0,_0x2a73a2),..._0xbd07a1[_0x577b6b(0x216)](_0x2a73a2+_0x3c404a)];return a0_0x3996c8[_0x577b6b(0x2cb)]+_0x58f879['join'](a0_0x3996c8[_0x577b6b(0x2cb)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x17ea56=a0_0x5e75;try{const _0x4802bf=require(_0x17ea56(0x2b6));return _0x4802bf[_0x17ea56(0x236)]??'unknown';}catch(_0x4edfee){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x4edfee),_0x17ea56(0x25d);}}function printHelp(){const _0x8367dd=a0_0x5e75;console[_0x8367dd(0x241)](_0x8367dd(0x1dc)+getPackageVersion()),console[_0x8367dd(0x241)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console['log'](_0x8367dd(0x1f3)),console[_0x8367dd(0x241)](_0x8367dd(0x21d)),console[_0x8367dd(0x241)](_0x8367dd(0x2bb)),console[_0x8367dd(0x241)](_0x8367dd(0x2ce)),console[_0x8367dd(0x241)](_0x8367dd(0x2b3)),console['log']('\x20\x20morph-mcp'),console[_0x8367dd(0x241)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0x5d769f(0x212)]['slice'](0x2),VERSION_FLAGS=new Set([a0_0x5d769f(0x254),'-v','-V']),HELP_FLAGS=new Set([a0_0x5d769f(0x2a1),'-h']);cliArgs[a0_0x5d769f(0x21a)](_0x15190b=>VERSION_FLAGS[a0_0x5d769f(0x235)](_0x15190b))&&(console[a0_0x5d769f(0x241)]('@morphllm/morphmcp\x20'+getPackageVersion()),process[a0_0x5d769f(0x27b)](0x0));cliArgs[a0_0x5d769f(0x21a)](_0x2ff977=>HELP_FLAGS[a0_0x5d769f(0x235)](_0x2ff977))&&(printHelp(),process[a0_0x5d769f(0x27b)](0x0));function getCliArg(_0x45a5c0){const _0x6a627=a0_0x5d769f;for(let _0x3e1dc6=0x0;_0x3e1dc6<cliArgs['length'];_0x3e1dc6++){const _0x37eb03=cliArgs[_0x3e1dc6];if(_0x37eb03['startsWith']('--'+_0x45a5c0+'='))return _0x37eb03[_0x6a627(0x216)](('--'+_0x45a5c0+'=')[_0x6a627(0x20f)]);if(_0x37eb03==='--'+_0x45a5c0&&_0x3e1dc6+0x1<cliArgs[_0x6a627(0x20f)])return cliArgs[_0x3e1dc6+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x5d769f(0x20f)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x5d769f(0x235)](arg)||HELP_FLAGS['has'](arg))continue;if(arg[a0_0x5d769f(0x231)](a0_0x5d769f(0x1d4)))continue;if(arg==='--api-key'){i++;continue;}args[a0_0x5d769f(0x2b7)](arg);}const WORKSPACE_ROOT=process[a0_0x5d769f(0x288)][a0_0x5d769f(0x279)]||process[a0_0x5d769f(0x288)][a0_0x5d769f(0x258)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process['env'][a0_0x5d769f(0x259)]!==a0_0x5d769f(0x237),MORPH_API_KEY=getCliArg(a0_0x5d769f(0x239))??process[a0_0x5d769f(0x288)]['MORPH_API_KEY'],MORPH_API_URL=process[a0_0x5d769f(0x288)]['MORPH_API_URL'],MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0x5d769f(0x207)]?parseInt(process[a0_0x5d769f(0x288)][a0_0x5d769f(0x207)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x5d769f(0x28b),a0_0x5d769f(0x29b),'github_codebase_search']),DISABLED_TOOLS=process[a0_0x5d769f(0x288)][a0_0x5d769f(0x28f)]?new Set(process['env']['DISABLED_TOOLS'][a0_0x5d769f(0x2e0)](',')[a0_0x5d769f(0x222)](_0xadea44=>_0xadea44['trim']())[a0_0x5d769f(0x261)](_0x1cea2c=>_0x1cea2c[a0_0x5d769f(0x20f)]>0x0)):new Set();if(DISABLED_TOOLS['size']>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES['has'](tool)&&console[a0_0x5d769f(0x26d)](a0_0x5d769f(0x1d6)+tool+a0_0x5d769f(0x1e6)+[...KNOWN_TOOL_NAMES][a0_0x5d769f(0x2c2)](',\x20'));}console[a0_0x5d769f(0x26d)](a0_0x5d769f(0x1f4)+[...DISABLED_TOOLS][a0_0x5d769f(0x2c2)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x5d769f(0x231)]('sk-')&&!MORPH_API_KEY[a0_0x5d769f(0x231)](a0_0x5d769f(0x225))&&logMcpStderr('Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27');async function reportMorphError(_0x37e0d3){const _0x36984f=a0_0x5d769f;try{await a0_0x3c2674[_0x36984f(0x2d2)](_0x36984f(0x2e1),{..._0x37e0d3,'timestamp':new Date()['toISOString'](),'source':_0x37e0d3[_0x36984f(0x1f7)]||_0x36984f(0x215),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x37e0d3['context']}},{'timeout':0x1388,'headers':{'Content-Type':_0x36984f(0x2d4),'Authorization':'Bearer\x20'+MORPH_API_KEY}});}catch{}}args['length']===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x5d769f(0x2d6)),logMcpStderr('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),logMcpStderr(a0_0x5d769f(0x1d9)),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr(a0_0x5d769f(0x2d9)),logMcpStderr(a0_0x5d769f(0x2a5)));function normalizePath(_0x24101f){const _0x4595dc=a0_0x5d769f;return a0_0x3996c8[_0x4595dc(0x1fd)](_0x24101f);}function expandHome(_0x399af1){const _0x30fcc3=a0_0x5d769f;if(_0x399af1['startsWith']('~/')||_0x399af1==='~')return a0_0x3996c8[_0x30fcc3(0x2c2)](a0_0x364821[_0x30fcc3(0x242)](),_0x399af1[_0x30fcc3(0x216)](0x1));return _0x399af1;}let allowedDirectories=await Promise[a0_0x5d769f(0x233)](args[a0_0x5d769f(0x222)](async _0x360fd8=>{const _0x10f8b6=a0_0x5d769f,_0x162e60=expandHome(_0x360fd8),_0x3c83c5=a0_0x3996c8[_0x10f8b6(0x26a)](_0x162e60);try{const _0x8cdf32=await a0_0x3451ab[_0x10f8b6(0x243)](_0x3c83c5);return normalizePath(_0x8cdf32);}catch(_0x278917){return normalizePath(_0x3c83c5);}}));function a0_0x58d4(){const _0x102827=['stack','api-key','943646RpOArK','RipgrepNotAvailable','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','enum','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','arguments','log','homedir','realpath','morph-v3-fast','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','dryRun','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','grep\x20\x27','Error\x20running\x20fast\x20context\x20search:\x20','Benefits:\x0a','branch','Preview\x20changes\x20without\x20applying\x20them.','WarpGrepError','1537885PDqwIx','WarpGrep\x20sub-tool\x20errors:\x20','includes','Max\x20results\x20to\x20return','substring','--version','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','terminationReason','tool_call_id','PWD','ENABLE_WORKSPACE_MODE','grep','ms:','BinaryFile','unknown','\x20chars)','instruction','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','filter','ToolException','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','linesModified','Failed\x20to\x20read\x20file:\x20','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','grep_search','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','resolve','node_modules','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.','error','linesRemoved','messages','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','stringify','match','timed\x20out','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','GitHub\x20search\x20failed:\x20','path','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','Morph\x20Edit\x20','WORKSPACE_ROOT','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','exit','Error\x20accessing\x20directory\x20','TimeoutError','Applied','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','describe','Here\x20is\x20the\x20content\x20of\x20files:\x0a','string','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','9SIfwBE','command','18ASMBty','isArray','env','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','\x20is\x20not\x20a\x20directory','edit_file','package.json','array','1219286NFNftR','DISABLED_TOOLS','stat','basename','message','-\x20Glob\x20search\x20`','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','etimedout','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','2798607dFhXZj','Morph\x20FastApply\x20failed\x20without\x20error\x20message','setNotificationHandler','❌\x20Morph\x20Edit\x20Failed:\x20','codebase_search','dirname','metadata','list_directory\x20','Fallback:\x20Using\x20workspace\x20root\x20','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','--help','go.mod','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','Workspace\x20mode\x20enabled:\x20Using\x20','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','.\x20Path:\x20','finish','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','runWarpGrep_call','glob','params','optional','ms.\x20Success:\x20','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','success','Tool\x20\x22','added\x20',',\x20modified\x20','\x0aExamples:','FileNotFound','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','../package.json','push','description','0.2.0','<file\x20path=\x22','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','tsconfig.json','\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable','lines','Parent\x20directory\x20does\x20not\x20exist:\x20','pyproject.toml','data','join','1675390yLCiOk','[github_codebase_search]\x20Failed\x20in\x20','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','catch','changes','boolean','errors','setRequestHandler','sep','`\x20in\x20`','constructor','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','-\x20Read\x20file\x20`','roots','readFile','post','payload','application/json','\x27\x20in\x20`','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','searchGitHub','tool','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','8627896vFSOPw','Invalid\x20arguments:\x20','morph-mcp','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','tool_calls','code_edit','split','https://morphllm.com/api/error-report','Cargo.toml','timings','glob\x20\x27','ENOENT','Error:\x20','toLowerCase','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','listRoots','--api-key=','role','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','code','For\x20deletions:\x0a','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','\x22>\x0aError\x20reading\x20file:\x20','user','@morphllm/morphmcp\x20','Unknown\x20error','FileReadError','assistant','pattern','File\x20read\x20error:','floor','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','</file>','name','\x22.\x20Known\x20tools:\x20','.git','now','ReadError','Created\x20File','connect','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.',',\x20removed\x20','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','\x20error(s)','repo_path','composer.json','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','\x0aOptions:','Disabled\x20tools:\x20','github_url','Relevant\x20context\x20found:','source','min','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','number','default','github_codebase_search','normalize','\x0a</file>','every','files','PathError','search_type','.cursor','requiresApiKey','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','MORPH_WARP_GREP_TIMEOUT','Morph\x20Edit\x20Preview','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','3555208fJFmjo','Unknown\x20tool:\x20','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','text','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','length','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','safeParse','argv','read\x20','owner_repo','mcp-filesystem','slice','-\x20Listed\x20directory\x20`','function','object','some','utf-8','completionId','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','.\x20Changes:\x20','read','list_directory','parse','map','UnknownError','morph-warp-grep-v2.1','morph-','completed','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','RipgrepError','7bCrzXN','[github_codebase_search]\x20Searching\x20','access','content','-\x20Grepped\x20\x27','SymlinkError','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','search_string','startsWith','linesAdded','all','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','has','version','false'];a0_0x58d4=function(){return _0x102827;};return a0_0x58d4();}if(ENABLE_WORKSPACE_MODE&&args['length']===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x5d769f(0x2b7)](workspaceDir),logMcpStderr(a0_0x5d769f(0x2a4)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x4fcf22){logMcpStderr('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x4fcf22);}async function detectWorkspaceRoot(_0x40715b){const _0x1734cf=a0_0x5d769f;let _0x5def46=a0_0x3996c8[_0x1734cf(0x26a)](_0x40715b);const _0x59168d=[_0x1734cf(0x1e7),'.vscode',_0x1734cf(0x28c),_0x1734cf(0x2e2),_0x1734cf(0x2c0),_0x1734cf(0x2a2),_0x1734cf(0x203),_0x1734cf(0x2bc),_0x1734cf(0x1f1)];while(_0x5def46!==a0_0x3996c8[_0x1734cf(0x29c)](_0x5def46)){for(const _0x1d4641 of _0x59168d){const _0x550db3=a0_0x3996c8[_0x1734cf(0x2c2)](_0x5def46,_0x1d4641);try{return await a0_0x3451ab[_0x1734cf(0x22b)](_0x550db3),normalizePath(_0x5def46);}catch{}}_0x5def46=a0_0x3996c8['dirname'](_0x5def46);}return normalizePath(_0x40715b);}await Promise['all'](args['map'](async _0xd4df7=>{const _0x2bc4ec=a0_0x5d769f;try{const _0x536ca3=await a0_0x3451ab[_0x2bc4ec(0x290)](expandHome(_0xd4df7));!_0x536ca3['isDirectory']()&&(logMcpStderr(_0x2bc4ec(0x2e6)+_0xd4df7+_0x2bc4ec(0x28a)),process['exit'](0x1));}catch(_0x5655a1){logMcpStderr(_0x2bc4ec(0x27c)+_0xd4df7+':',_0x5655a1),process[_0x2bc4ec(0x27b)](0x1);}}));async function validatePath(_0x205c0f){const _0xe61dea=a0_0x5d769f,_0x1bba9f=expandHome(_0x205c0f),_0x34e700=a0_0x3996c8[_0xe61dea(0x26a)](_0x1bba9f);try{const _0x10344e=await a0_0x3451ab[_0xe61dea(0x243)](_0x34e700);return _0x10344e;}catch(_0x356c55){if(_0x356c55[_0xe61dea(0x1d7)]===_0xe61dea(0x2e5)){const _0x49a7b4=a0_0x3996c8[_0xe61dea(0x29c)](_0x34e700);try{const _0x3f57ee=await a0_0x3451ab[_0xe61dea(0x243)](_0x49a7b4);return a0_0x3996c8[_0xe61dea(0x2c2)](_0x3f57ee,a0_0x3996c8[_0xe61dea(0x291)](_0x34e700));}catch{throw new Error(_0xe61dea(0x2bf)+_0x49a7b4);}}throw _0x356c55;}}const MorphEditFileArgsSchema=z[a0_0x5d769f(0x219)]({'path':z[a0_0x5d769f(0x282)](),'code_edit':z[a0_0x5d769f(0x282)]()['describe'](a0_0x5d769f(0x2c5)),'instruction':z[a0_0x5d769f(0x282)]()['describe'](a0_0x5d769f(0x294)),'dryRun':z[a0_0x5d769f(0x2c8)]()[a0_0x5d769f(0x1fb)](![])[a0_0x5d769f(0x280)](a0_0x5d769f(0x24d))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x5d769f(0x1ec),WarpGrepArgsSchema=z['object']({'search_string':z[a0_0x5d769f(0x282)]()[a0_0x5d769f(0x280)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z['string']()[a0_0x5d769f(0x280)](a0_0x5d769f(0x210)),'search_type':z[a0_0x5d769f(0x23e)]([a0_0x5d769f(0x1fb),a0_0x5d769f(0x26b)])[a0_0x5d769f(0x2ac)]()[a0_0x5d769f(0x280)](a0_0x5d769f(0x277))}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z[a0_0x5d769f(0x282)]()[a0_0x5d769f(0x280)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x5d769f(0x282)]()[a0_0x5d769f(0x2ac)]()[a0_0x5d769f(0x280)](a0_0x5d769f(0x26c)),'owner_repo':z[a0_0x5d769f(0x282)]()[a0_0x5d769f(0x2ac)]()[a0_0x5d769f(0x280)](a0_0x5d769f(0x246)),'branch':z[a0_0x5d769f(0x282)]()[a0_0x5d769f(0x2ac)]()['describe'](a0_0x5d769f(0x260))}),CodebaseSearchArgsSchema=z[a0_0x5d769f(0x219)]({'query':z[a0_0x5d769f(0x282)]()[a0_0x5d769f(0x280)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x5d769f(0x282)]()['describe']('Repository\x20identifier'),'branch':z[a0_0x5d769f(0x282)]()['optional']()['describe'](a0_0x5d769f(0x27a)),'commitHash':z[a0_0x5d769f(0x282)]()['optional']()['describe']('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z[a0_0x5d769f(0x28d)](z[a0_0x5d769f(0x282)]())['default']([])['describe'](a0_0x5d769f(0x270)),'limit':z[a0_0x5d769f(0x1fa)]()[a0_0x5d769f(0x2ac)]()[a0_0x5d769f(0x1fb)](0xa)[a0_0x5d769f(0x280)](a0_0x5d769f(0x252))}),server=new Server({'name':a0_0x5d769f(0x2dc),'version':a0_0x5d769f(0x2b9)},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x22e487=a0_0x5d769f,_0x148f98=[{'name':_0x22e487(0x28b),'description':_0x22e487(0x227)+_0x22e487(0x2a0)+_0x22e487(0x23c)+'IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a'+_0x22e487(0x24b)+_0x22e487(0x1e3)+_0x22e487(0x269)+_0x22e487(0x23d)+_0x22e487(0x205)+_0x22e487(0x1ee)+_0x22e487(0x264)+_0x22e487(0x245)+_0x22e487(0x1d8)+_0x22e487(0x2dd)+_0x22e487(0x2a3)+'Rules:\x0a'+_0x22e487(0x209)+_0x22e487(0x1f2)+'-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a'+_0x22e487(0x289)+_0x22e487(0x255)+_0x22e487(0x22f)+'IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':'codebase_search','description':_0x22e487(0x1f9)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x22e487(0x263)+_0x22e487(0x1d2)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x27c937=_0x148f98[_0x22e487(0x261)](_0x3de19d=>{const _0x33eb05=_0x22e487;if(DISABLED_TOOLS[_0x33eb05(0x235)](_0x3de19d[_0x33eb05(0x1e5)]))return console[_0x33eb05(0x26d)]('Tool\x20'+_0x3de19d[_0x33eb05(0x1e5)]+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if('requiresApiKey'in _0x3de19d&&_0x3de19d[_0x33eb05(0x204)]&&!MORPH_API_KEY)return logMcpStderr('Warning:\x20'+_0x3de19d[_0x33eb05(0x1e5)]+_0x33eb05(0x2ae)),![];return!![];});return{'tools':_0x27c937[_0x22e487(0x222)](_0x1fd65c=>({'name':_0x1fd65c[_0x22e487(0x1e5)],'description':_0x1fd65c[_0x22e487(0x2b8)],'inputSchema':_0x1fd65c['inputSchema']}))};}),server[a0_0x5d769f(0x2ca)](CallToolRequestSchema,async _0x44011c=>{const _0x2e9e32=a0_0x5d769f,{name:_0x21386a,arguments:_0x28b308}=_0x44011c[_0x2e9e32(0x2ab)];try{if(DISABLED_TOOLS[_0x2e9e32(0x235)](_0x21386a))throw new Error(_0x2e9e32(0x2b0)+_0x21386a+_0x2e9e32(0x2bd));switch(_0x21386a){case'edit_file':{const _0x20bf2a=MorphEditFileArgsSchema[_0x2e9e32(0x211)](_0x28b308);if(!_0x20bf2a[_0x2e9e32(0x2af)])throw new Error(_0x2e9e32(0x296)+_0x20bf2a[_0x2e9e32(0x26d)]);const _0x449748=await validatePath(_0x20bf2a[_0x2e9e32(0x2c1)][_0x2e9e32(0x276)]);let _0x3e48ce=null,_0x4435f9=!![],_0x326176=null;try{_0x3e48ce=await a0_0x3451ab[_0x2e9e32(0x2d1)](_0x449748,_0x2e9e32(0x21b));}catch(_0x1f5f46){const _0x57f426=_0x1f5f46[_0x2e9e32(0x1d7)];_0x57f426==='ENOENT'?(_0x4435f9=![],_0x3e48ce=''):(_0x326176=_0x2e9e32(0x266)+(_0x57f426||_0x2e9e32(0x25d))+'\x20-\x20'+(_0x1f5f46 instanceof Error?_0x1f5f46[_0x2e9e32(0x292)]:String(_0x1f5f46)),logMcpStderr('Warning:\x20'+_0x326176));}let _0x533238;try{const _0x418d05=MORPH_API_KEY;if(!_0x418d05)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x52420f=a0_0x3996c8[_0x2e9e32(0x29c)](_0x449748),_0x1b81c9=a0_0x3996c8[_0x2e9e32(0x291)](_0x449748),_0x8f7a64=await executeEditFile({'target_filepath':_0x1b81c9,'code_edit':_0x20bf2a['data'][_0x2e9e32(0x2df)],'instructions':_0x20bf2a[_0x2e9e32(0x2c1)]['instruction']},{'morphApiKey':_0x418d05,'morphApiUrl':MORPH_API_URL,'baseDir':_0x52420f,'autoWrite':!_0x20bf2a[_0x2e9e32(0x2c1)][_0x2e9e32(0x247)],'generateUdiff':![],'debug':![]});_0x533238=_0x8f7a64[_0x2e9e32(0x21c)];if(!_0x8f7a64[_0x2e9e32(0x2af)])throw new Error(_0x8f7a64[_0x2e9e32(0x26d)]||_0x2e9e32(0x298));const _0x307d91=_0x8f7a64[_0x2e9e32(0x2c7)],_0x223ba7=_0x2e9e32(0x2b1)+_0x307d91[_0x2e9e32(0x232)]+_0x2e9e32(0x1ed)+_0x307d91[_0x2e9e32(0x26e)]+_0x2e9e32(0x2b2)+_0x307d91[_0x2e9e32(0x265)];if(_0x20bf2a[_0x2e9e32(0x2c1)][_0x2e9e32(0x247)])return{'content':[{'type':_0x2e9e32(0x20d),'text':_0x2e9e32(0x208)+(_0x4435f9?'':'\x20(new\x20file)')+':\x20'+_0x20bf2a[_0x2e9e32(0x2c1)][_0x2e9e32(0x25f)]+_0x2e9e32(0x21e)+_0x223ba7+_0x2e9e32(0x2a6)+_0x20bf2a[_0x2e9e32(0x2c1)][_0x2e9e32(0x276)]+'.'}]};return{'content':[{'type':'text','text':_0x2e9e32(0x278)+(_0x4435f9?_0x2e9e32(0x27e):_0x2e9e32(0x1ea))+':\x20'+_0x20bf2a[_0x2e9e32(0x2c1)]['instruction']+'.\x20Changes:\x20'+_0x223ba7+_0x2e9e32(0x2a6)+_0x20bf2a['data']['path']+'.'}]};}catch(_0x24c071){const _0x3b08e8=_0x24c071 instanceof Error?_0x24c071[_0x2e9e32(0x292)]:String(_0x24c071);return reportMorphError({'error_message':_0x3b08e8,'error_type':_0x24c071 instanceof Error?_0x24c071[_0x2e9e32(0x2cd)][_0x2e9e32(0x1e5)]:_0x2e9e32(0x223),'context':{'tool':'edit_file','completion_id':_0x533238,'file_path':_0x20bf2a[_0x2e9e32(0x2c1)][_0x2e9e32(0x276)],'validated_path':_0x449748,'instruction':_0x20bf2a[_0x2e9e32(0x2c1)][_0x2e9e32(0x25f)],'model':_0x2e9e32(0x244),'dry_run':_0x20bf2a[_0x2e9e32(0x2c1)]['dryRun'],'file_exists':_0x4435f9,'file_read_error':_0x326176,'file_readable':_0x3e48ce!==null,'request_content':{'path':_0x20bf2a[_0x2e9e32(0x2c1)][_0x2e9e32(0x276)],'code_edit':_0x20bf2a['data']['code_edit'],'instruction':_0x20bf2a[_0x2e9e32(0x2c1)][_0x2e9e32(0x25f)],'original_code':_0x3e48ce!==null?_0x3e48ce[_0x2e9e32(0x20f)]>0xc350?_0x3e48ce[_0x2e9e32(0x253)](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x3e48ce['length']+_0x2e9e32(0x25e):_0x3e48ce:'[could\x20not\x20read\x20file:\x20'+(_0x326176||'unknown\x20error')+']','original_code_length':_0x3e48ce?.[_0x2e9e32(0x20f)]??0x0,'model':_0x2e9e32(0x244),'dry_run':_0x20bf2a[_0x2e9e32(0x2c1)][_0x2e9e32(0x247)]}},'stack_trace':_0x24c071 instanceof Error?_0x24c071[_0x2e9e32(0x238)]:undefined,'source':_0x2e9e32(0x215)})[_0x2e9e32(0x2c6)](()=>{}),{'content':[{'type':_0x2e9e32(0x20d),'text':_0x2e9e32(0x29a)+_0x3b08e8}],'isError':!![]};}}case _0x2e9e32(0x29b):{const _0x3f9d30=WarpGrepArgsSchema[_0x2e9e32(0x211)](_0x28b308);if(!_0x3f9d30['success'])return{'content':[{'type':_0x2e9e32(0x20d),'text':_0x2e9e32(0x2db)+_0x3f9d30[_0x2e9e32(0x26d)]}],'isError':!![]};const _0x576083=_0x32959c=>{const _0x4b06f6=_0x2e9e32,_0x16c60f=[];for(const _0x198161 of _0x32959c||[]){if(_0x198161[_0x4b06f6(0x1d5)]===_0x4b06f6(0x1df)&&Array[_0x4b06f6(0x287)](_0x198161['tool_calls']))for(const _0x5b1153 of _0x198161[_0x4b06f6(0x2de)]){try{const _0xf0f1ee=_0x5b1153['function']?.[_0x4b06f6(0x1e5)],_0x251db6=JSON[_0x4b06f6(0x221)](_0x5b1153[_0x4b06f6(0x218)]?.[_0x4b06f6(0x240)]||'{}');if(_0xf0f1ee===_0x4b06f6(0x268))_0x16c60f[_0x4b06f6(0x2b7)](_0x4b06f6(0x249)+_0x251db6['pattern']+'\x27\x20'+(_0x251db6['path']||'.'));else{if(_0xf0f1ee==='read')_0x16c60f['push'](_0x4b06f6(0x213)+_0x251db6[_0x4b06f6(0x276)]);else{if(_0xf0f1ee==='list_directory')_0x16c60f['push'](_0x4b06f6(0x29e)+(_0x251db6[_0x4b06f6(0x285)]||'.'));else{if(_0xf0f1ee===_0x4b06f6(0x2aa))_0x16c60f['push'](_0x4b06f6(0x2e4)+_0x251db6[_0x4b06f6(0x1e0)]+'\x27\x20'+(_0x251db6['path']||'.'));else _0xf0f1ee===_0x4b06f6(0x2a7)&&_0x16c60f[_0x4b06f6(0x2b7)]('finish');}}}}catch{}}}return _0x16c60f;},_0x44733d=_0x58a9dc=>{const _0x2d6cfd=_0x2e9e32,_0x4a6ff2=[];if(!_0x58a9dc||!Array[_0x2d6cfd(0x287)](_0x58a9dc))return _0x4a6ff2;const _0x38e846=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x2d6cfd(0x2b4),'tool':_0x2d6cfd(0x21f)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x2d6cfd(0x201),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x2d6cfd(0x1e9),'tool':_0x2d6cfd(0x21f)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x2d6cfd(0x25c),'tool':_0x2d6cfd(0x21f)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x2d6cfd(0x228),'tool':_0x2d6cfd(0x25a)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x2d6cfd(0x23b),'tool':_0x2d6cfd(0x25a)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x2d6cfd(0x25c),'tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':_0x2d6cfd(0x22e),'tool':'read'},{'pattern':/not a text file/,'error_type':_0x2d6cfd(0x25c),'tool':_0x2d6cfd(0x21f)},{'pattern':/symbolic link/,'error_type':_0x2d6cfd(0x22e),'tool':_0x2d6cfd(0x21f)},{'pattern':/Error reading file:/,'error_type':_0x2d6cfd(0x1e9),'tool':_0x2d6cfd(0x21f)},{'pattern':/status="error"/,'error_type':_0x2d6cfd(0x262),'tool':_0x2d6cfd(0x25d)}];let _0x45c66c=0x0;for(const _0x413429 of _0x58a9dc){_0x413429['role']===_0x2d6cfd(0x1df)&&Array[_0x2d6cfd(0x287)](_0x413429[_0x2d6cfd(0x2de)])&&_0x45c66c++;const _0x605a28=_0x413429[_0x2d6cfd(0x22c)];if((_0x413429[_0x2d6cfd(0x1d5)]===_0x2d6cfd(0x2d8)||_0x413429[_0x2d6cfd(0x1d5)]===_0x2d6cfd(0x1db))&&_0x605a28&&typeof _0x605a28===_0x2d6cfd(0x282))for(const {pattern:_0x3507c8,error_type:_0x4a1bda,tool:_0x28bf82}of _0x38e846){const _0x3062bc=_0x605a28[_0x2d6cfd(0x272)](new RegExp(_0x3507c8[_0x2d6cfd(0x1f7)],'g'));if(_0x3062bc)for(const _0x59ac1d of _0x3062bc){const _0x19c74e=_0x605a28['indexOf'](_0x59ac1d),_0x5438c7=_0x605a28[_0x2d6cfd(0x253)](_0x19c74e,Math[_0x2d6cfd(0x1f8)](_0x19c74e+0xc8,_0x605a28['length']));_0x4a6ff2[_0x2d6cfd(0x2b7)]({'tool':_0x28bf82,'error_type':_0x4a1bda,'error_message':_0x5438c7['split']('\x0a')[0x0],'turn':_0x45c66c});}}}return _0x4a6ff2;};try{const _0x4ecf15=a0_0x3996c8['resolve'](_0x3f9d30[_0x2e9e32(0x2c1)]['repo_path']),_0x99beae=_0x3f9d30[_0x2e9e32(0x2c1)][_0x2e9e32(0x202)],_0x3bc2cd=_0x99beae===_0x2e9e32(0x26b)?{'allowNames':[_0x2e9e32(0x26b)]}:undefined,_0x5c31bb=new LocalRipgrepProvider(_0x4ecf15,undefined,_0x3bc2cd),_0x321f02=await runWarpGrep({'searchTerm':_0x3f9d30[_0x2e9e32(0x2c1)]['search_string'],'repoRoot':_0x4ecf15,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x5c31bb,'search_type':_0x99beae}),_0x145e9a=_0x44733d(_0x321f02[_0x2e9e32(0x26f)]);_0x145e9a[_0x2e9e32(0x20f)]>0x0&&reportMorphError({'error_message':_0x2e9e32(0x250)+_0x145e9a[_0x2e9e32(0x20f)]+_0x2e9e32(0x1ef),'error_type':'SubToolError','level':'warn','tool':_0x2e9e32(0x29b),'context':{'repo_path':_0x3f9d30[_0x2e9e32(0x2c1)]['repo_path'],'query':_0x3f9d30[_0x2e9e32(0x2c1)]['search_string'],'model':'morph-warp-grep-v2.1','termination_reason':_0x321f02[_0x2e9e32(0x256)],'sub_tool_errors':_0x145e9a,'timings':_0x321f02['timings'],'tool_calls':_0x576083(_0x321f02['messages']),'messages':_0x321f02[_0x2e9e32(0x26f)]?.[_0x2e9e32(0x222)](_0x1145b7=>({'role':_0x1145b7[_0x2e9e32(0x1d5)],'content':_0x1145b7['content'],..._0x1145b7[_0x2e9e32(0x2de)]?{'tool_calls':_0x1145b7[_0x2e9e32(0x2de)]['length']}:{},..._0x1145b7[_0x2e9e32(0x257)]?{'tool_call_id':_0x1145b7[_0x2e9e32(0x257)]}:{}}))},'source':'mcp-filesystem'})[_0x2e9e32(0x2c6)](()=>{});let _0x5c8f8c='';if(_0x321f02[_0x2e9e32(0x256)]===_0x2e9e32(0x226)&&_0x321f02[_0x2e9e32(0x2a7)]?.[_0x2e9e32(0x29d)]?.[_0x2e9e32(0x200)]){const _0x31115d=_0x321f02['finish'][_0x2e9e32(0x29d)][_0x2e9e32(0x200)];if(_0x31115d[_0x2e9e32(0x20f)]===0x0)return _0x5c8f8c=_0x321f02[_0x2e9e32(0x2a7)][_0x2e9e32(0x2d3)]||_0x2e9e32(0x248),{'content':[{'type':'text','text':_0x5c8f8c}]};const _0x3a88ee=[],_0x20428c=[_0x2e9e32(0x27f)];for(const _0x1b6ea2 of _0x321f02[_0x2e9e32(0x26f)]){if(_0x1b6ea2[_0x2e9e32(0x1d5)]==='assistant'&&Array[_0x2e9e32(0x287)](_0x1b6ea2[_0x2e9e32(0x2de)]))for(const _0x1bae5b of _0x1b6ea2[_0x2e9e32(0x2de)]){try{const _0x351ec1=_0x1bae5b[_0x2e9e32(0x218)]?.[_0x2e9e32(0x1e5)],_0x4b51a8=JSON[_0x2e9e32(0x221)](_0x1bae5b[_0x2e9e32(0x218)]?.['arguments']||'{}');if(_0x351ec1===_0x2e9e32(0x268))_0x20428c['push'](_0x2e9e32(0x22d)+_0x4b51a8[_0x2e9e32(0x1e0)]+_0x2e9e32(0x2d5)+(_0x4b51a8[_0x2e9e32(0x276)]||'.')+'`');else{if(_0x351ec1===_0x2e9e32(0x21f))_0x20428c[_0x2e9e32(0x2b7)](_0x2e9e32(0x2cf)+_0x4b51a8[_0x2e9e32(0x276)]+'`');else{if(_0x351ec1===_0x2e9e32(0x220))_0x20428c[_0x2e9e32(0x2b7)](_0x2e9e32(0x217)+(_0x4b51a8[_0x2e9e32(0x285)]||'.')+'`');else _0x351ec1==='glob'&&_0x20428c['push'](_0x2e9e32(0x293)+_0x4b51a8[_0x2e9e32(0x1e0)]+_0x2e9e32(0x2cc)+(_0x4b51a8[_0x2e9e32(0x276)]||'.')+'`');}}}catch{}}}_0x3a88ee[_0x2e9e32(0x2b7)](_0x20428c[_0x2e9e32(0x2c2)]('\x0a'));const _0x12d420=['',_0x2e9e32(0x1f6)];for(const _0x36a10d of _0x31115d){if(_0x36a10d[_0x2e9e32(0x2be)]==='*')_0x12d420[_0x2e9e32(0x2b7)]('-\x20'+_0x36a10d['path']+':*');else{if(Array['isArray'](_0x36a10d[_0x2e9e32(0x2be)])){const _0x33fe82=_0x36a10d[_0x2e9e32(0x2be)][_0x2e9e32(0x222)](([_0x22fec4,_0x13409f])=>{if(_0x22fec4===_0x13409f)return''+_0x22fec4;return _0x22fec4+'-'+_0x13409f;});_0x12d420[_0x2e9e32(0x2b7)]('-\x20'+_0x36a10d[_0x2e9e32(0x276)]+':'+_0x33fe82[_0x2e9e32(0x2c2)](','));}else _0x12d420[_0x2e9e32(0x2b7)]('-\x20'+_0x36a10d[_0x2e9e32(0x276)]+':*');}}_0x12d420[_0x2e9e32(0x2b7)](''),_0x3a88ee[_0x2e9e32(0x2b7)](_0x12d420['join']('\x0a')),_0x3a88ee[_0x2e9e32(0x2b7)](_0x2e9e32(0x281));const _0x33b0b3=[];for(const _0xaddf29 of _0x31115d){let _0x59b27c=a0_0x3996c8['resolve'](_0x3f9d30[_0x2e9e32(0x2c1)][_0x2e9e32(0x1f0)],_0xaddf29[_0x2e9e32(0x276)]),_0xb5099b=null,_0x16492a=null;try{_0xb5099b=await a0_0x3451ab[_0x2e9e32(0x2d1)](_0x59b27c,{'encoding':_0x2e9e32(0x21b)});}catch(_0x1f73d6){const _0x3e9a2d=fixPathRepetition(_0x59b27c);if(_0x3e9a2d)try{_0xb5099b=await a0_0x3451ab['readFile'](_0x3e9a2d,{'encoding':'utf-8'}),_0x59b27c=_0x3e9a2d;}catch{_0x16492a=_0x1f73d6 instanceof Error?_0x1f73d6:new Error(String(_0x1f73d6));}else _0x16492a=_0x1f73d6 instanceof Error?_0x1f73d6:new Error(String(_0x1f73d6));}if(_0xb5099b!==null){const _0x1bce39=_0xb5099b[_0x2e9e32(0x2e0)](/\r?\n/),_0x5077d4=[_0x2e9e32(0x2ba)+_0xaddf29[_0x2e9e32(0x276)]+'\x22>'];if(_0xaddf29[_0x2e9e32(0x2be)]==='*'||!Array[_0x2e9e32(0x287)](_0xaddf29[_0x2e9e32(0x2be)]))for(let _0x65ec2f=0x1;_0x65ec2f<=_0x1bce39[_0x2e9e32(0x20f)];_0x65ec2f++){const _0xe06669=_0x1bce39[_0x65ec2f-0x1];_0x5077d4[_0x2e9e32(0x2b7)](_0x65ec2f+'|\x20'+_0xe06669);}else for(const [_0x1bdd5d,_0xe6df89]of _0xaddf29[_0x2e9e32(0x2be)]){_0x5077d4[_0x2e9e32(0x20f)]>0x1&&_0x5077d4['push']('');for(let _0x325fa5=_0x1bdd5d;_0x325fa5<=_0xe6df89&&_0x325fa5<=_0x1bce39['length'];_0x325fa5++){const _0x2e0446=_0x1bce39[_0x325fa5-0x1];_0x5077d4[_0x2e9e32(0x2b7)](_0x325fa5+'|\x20'+_0x2e0446);}}_0x5077d4[_0x2e9e32(0x2b7)](_0x2e9e32(0x1e4)),_0x33b0b3[_0x2e9e32(0x2b7)](_0x5077d4[_0x2e9e32(0x2c2)]('\x0a'));}else _0x33b0b3[_0x2e9e32(0x2b7)](_0x2e9e32(0x2ba)+_0xaddf29['path']+_0x2e9e32(0x1da)+(_0x16492a?.[_0x2e9e32(0x292)]||_0x2e9e32(0x1dd))+_0x2e9e32(0x1fe));}_0x3a88ee[_0x2e9e32(0x2b7)](_0x33b0b3[_0x2e9e32(0x2c2)]('\x0a\x0a')),_0x5c8f8c=_0x3a88ee[_0x2e9e32(0x2c2)]('\x0a');const _0x401c3c=_0x321f02['errors']?.[_0x2e9e32(0x261)](_0x54e380=>_0x54e380[_0x2e9e32(0x292)]?.['startsWith'](_0x2e9e32(0x1e1)))||[];if(_0x401c3c['length']>0x0){const _0x4bb860=_0x401c3c[_0x2e9e32(0x222)](_0x257610=>_0x257610[_0x2e9e32(0x292)])[_0x2e9e32(0x2c2)](';\x20');reportMorphError({'error_message':_0x4bb860,'error_type':_0x2e9e32(0x1de),'context':{'tool':_0x2e9e32(0x29b),'repo_path':_0x3f9d30['data'][_0x2e9e32(0x1f0)],'query':_0x3f9d30[_0x2e9e32(0x2c1)][_0x2e9e32(0x230)],'model':_0x2e9e32(0x224),'termination_reason':'completed_with_file_errors','error_count':_0x401c3c[_0x2e9e32(0x20f)],'is_timeout':![],'timings':_0x321f02[_0x2e9e32(0x2e3)],'files_attempted':_0x31115d[_0x2e9e32(0x222)](_0x594105=>({'path':_0x594105[_0x2e9e32(0x276)],'lines':_0x594105[_0x2e9e32(0x2be)]})),'tool_calls':_0x576083(_0x321f02[_0x2e9e32(0x26f)]),'messages':_0x321f02[_0x2e9e32(0x26f)]?.[_0x2e9e32(0x222)](_0x308d3b=>({'role':_0x308d3b[_0x2e9e32(0x1d5)],'content':_0x308d3b[_0x2e9e32(0x22c)],..._0x308d3b[_0x2e9e32(0x2de)]?{'tool_calls':_0x308d3b[_0x2e9e32(0x2de)][_0x2e9e32(0x20f)]}:{},..._0x308d3b[_0x2e9e32(0x257)]?{'tool_call_id':_0x308d3b[_0x2e9e32(0x257)]}:{}})),'request_content':{'query':_0x3f9d30[_0x2e9e32(0x2c1)][_0x2e9e32(0x230)],'repo_path':_0x3f9d30[_0x2e9e32(0x2c1)][_0x2e9e32(0x1f0)],'repoRoot':a0_0x3996c8[_0x2e9e32(0x26a)](_0x3f9d30['data']['repo_path']),'model':_0x2e9e32(0x224)}},'source':_0x2e9e32(0x215)})[_0x2e9e32(0x2c6)](()=>{});}}else{if(_0x321f02[_0x2e9e32(0x256)]==='terminated'&&_0x321f02[_0x2e9e32(0x2c9)][_0x2e9e32(0x20f)]>0x0){const _0x80fc57=_0x321f02[_0x2e9e32(0x2c9)][_0x2e9e32(0x222)](_0x413ad6=>_0x413ad6[_0x2e9e32(0x292)])[_0x2e9e32(0x2c2)](';\x20');_0x5c8f8c=_0x2e9e32(0x2e6)+_0x80fc57;const _0x5121de=_0x80fc57[_0x2e9e32(0x1d1)]()[_0x2e9e32(0x251)]('timeout')||_0x80fc57[_0x2e9e32(0x1d1)]()[_0x2e9e32(0x251)](_0x2e9e32(0x273))||_0x80fc57[_0x2e9e32(0x1d1)]()[_0x2e9e32(0x251)](_0x2e9e32(0x295)),_0x18a6bb=_0x321f02[_0x2e9e32(0x2a7)]?.['metadata']?.[_0x2e9e32(0x200)],_0x173e3f=_0x321f02[_0x2e9e32(0x2c9)][0x0];reportMorphError({'error_message':_0x80fc57,'error_type':_0x5121de?_0x2e9e32(0x27d):_0x173e3f?.[_0x2e9e32(0x2cd)]?.[_0x2e9e32(0x1e5)]||_0x2e9e32(0x24e),'context':{'tool':_0x2e9e32(0x29b),'repo_path':_0x3f9d30[_0x2e9e32(0x2c1)][_0x2e9e32(0x1f0)],'query':_0x3f9d30[_0x2e9e32(0x2c1)][_0x2e9e32(0x230)],'model':'morph-warp-grep-v2.1','termination_reason':_0x321f02[_0x2e9e32(0x256)],'error_count':_0x321f02[_0x2e9e32(0x2c9)][_0x2e9e32(0x20f)],'is_timeout':_0x5121de,'timings':_0x321f02[_0x2e9e32(0x2e3)],'files_attempted':_0x18a6bb?.[_0x2e9e32(0x222)](_0x93c674=>({'path':_0x93c674[_0x2e9e32(0x276)],'lines':_0x93c674[_0x2e9e32(0x2be)]})),'tool_calls':_0x576083(_0x321f02[_0x2e9e32(0x26f)]),'messages':_0x321f02['messages']?.[_0x2e9e32(0x222)](_0x118eea=>({'role':_0x118eea[_0x2e9e32(0x1d5)],'content':_0x118eea[_0x2e9e32(0x22c)],..._0x118eea['tool_calls']?{'tool_calls':_0x118eea['tool_calls'][_0x2e9e32(0x20f)]}:{},..._0x118eea[_0x2e9e32(0x257)]?{'tool_call_id':_0x118eea['tool_call_id']}:{}})),'request_content':{'query':_0x3f9d30['data'][_0x2e9e32(0x230)],'repo_path':_0x3f9d30[_0x2e9e32(0x2c1)][_0x2e9e32(0x1f0)],'repoRoot':a0_0x3996c8[_0x2e9e32(0x26a)](_0x3f9d30[_0x2e9e32(0x2c1)][_0x2e9e32(0x1f0)]),'model':_0x2e9e32(0x224)}},'stack_trace':_0x173e3f?.[_0x2e9e32(0x238)]||undefined,'source':_0x2e9e32(0x215)})[_0x2e9e32(0x2c6)](()=>{});}else _0x5c8f8c=_0x2e9e32(0x23f);}return{'content':[{'type':_0x2e9e32(0x20d),'text':_0x5c8f8c}]};}catch(_0x204fa1){const _0xc5a1c4=_0x204fa1 instanceof Error?_0x204fa1['message']:String(_0x204fa1),_0x1f66e1=_0xc5a1c4[_0x2e9e32(0x1d1)]()[_0x2e9e32(0x251)]('timeout')||_0xc5a1c4['toLowerCase']()['includes'](_0x2e9e32(0x273))||_0xc5a1c4['toLowerCase']()[_0x2e9e32(0x251)](_0x2e9e32(0x295))||_0x204fa1 instanceof Error&&_0x204fa1['name']==='TimeoutError';return reportMorphError({'error_message':_0xc5a1c4,'error_type':_0x1f66e1?'TimeoutError':_0x204fa1 instanceof Error?_0x204fa1[_0x2e9e32(0x2cd)][_0x2e9e32(0x1e5)]:_0x2e9e32(0x223),'context':{'tool':'codebase_search','repo_path':_0x3f9d30[_0x2e9e32(0x2c1)][_0x2e9e32(0x1f0)],'query':_0x3f9d30[_0x2e9e32(0x2c1)][_0x2e9e32(0x230)],'model':'morph-warp-grep-v2.1','is_timeout':_0x1f66e1,'exception_phase':_0x2e9e32(0x2a9),'request_content':{'query':_0x3f9d30['data']['search_string'],'repo_path':_0x3f9d30[_0x2e9e32(0x2c1)]['repo_path'],'repoRoot':a0_0x3996c8[_0x2e9e32(0x26a)](_0x3f9d30['data'][_0x2e9e32(0x1f0)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x204fa1 instanceof Error?_0x204fa1[_0x2e9e32(0x238)]:undefined,'source':'mcp-filesystem'})['catch'](()=>{}),{'content':[{'type':'text','text':_0x2e9e32(0x24a)+_0xc5a1c4}],'isError':![]};}}case'github_codebase_search':{const _0x8a5310=WarpGrepGitHubArgsSchema[_0x2e9e32(0x211)](_0x28b308);if(!_0x8a5310[_0x2e9e32(0x2af)])return{'content':[{'type':_0x2e9e32(0x20d),'text':_0x2e9e32(0x2db)+_0x8a5310[_0x2e9e32(0x26d)]}],'isError':!![]};const _0x1d6172=_0x8a5310[_0x2e9e32(0x2c1)][_0x2e9e32(0x1f5)]||_0x8a5310[_0x2e9e32(0x2c1)][_0x2e9e32(0x214)];if(!_0x1d6172)return{'content':[{'type':'text','text':_0x2e9e32(0x2b5)}],'isError':!![]};const _0x308cae=MORPH_API_KEY;if(!_0x308cae)throw new Error(_0x2e9e32(0x20c));const _0x5dde62=Date[_0x2e9e32(0x1e8)]();logMcpStderr(_0x2e9e32(0x22a)+_0x1d6172+'\x20for:\x20\x22'+_0x8a5310['data'][_0x2e9e32(0x230)]+'\x22');try{const _0x24b7de=new WarpGrepClient({'morphApiKey':_0x308cae,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x5049c2=await _0x24b7de[_0x2e9e32(0x2d7)]({'searchTerm':_0x8a5310[_0x2e9e32(0x2c1)][_0x2e9e32(0x230)],'github':_0x1d6172,'branch':_0x8a5310['data'][_0x2e9e32(0x24c)]}),_0xaef9df=Date[_0x2e9e32(0x1e8)]()-_0x5dde62;logMcpStderr('[github_codebase_search]\x20Done\x20in\x20'+_0xaef9df+_0x2e9e32(0x2ad)+_0x5049c2[_0x2e9e32(0x2af)]);const _0x3855d5=formatResult(_0x5049c2);return{'content':[{'type':_0x2e9e32(0x20d),'text':_0x3855d5}]};}catch(_0x2400ee){const _0x280d85=Date['now']()-_0x5dde62,_0x52fc21=_0x2400ee instanceof Error?_0x2400ee[_0x2e9e32(0x292)]:String(_0x2400ee);return logMcpStderr(_0x2e9e32(0x2c4)+_0x280d85+_0x2e9e32(0x25b),_0x52fc21),reportMorphError({'error_message':_0x52fc21,'error_type':_0x2400ee instanceof Error?_0x2400ee[_0x2e9e32(0x2cd)][_0x2e9e32(0x1e5)]:_0x2e9e32(0x223),'context':{'tool':_0x2e9e32(0x1fc),'github_url':_0x1d6172,'search_string':_0x8a5310[_0x2e9e32(0x2c1)]['search_string'],'branch':_0x8a5310['data']['branch']},'stack_trace':_0x2400ee instanceof Error?_0x2400ee[_0x2e9e32(0x238)]:undefined,'source':_0x2e9e32(0x215),'tool':_0x2e9e32(0x1fc),'latency_ms':_0x280d85})[_0x2e9e32(0x2c6)](()=>{}),{'content':[{'type':_0x2e9e32(0x20d),'text':_0x2e9e32(0x275)+_0x52fc21}],'isError':![]};}}default:throw new Error(_0x2e9e32(0x20b)+_0x21386a);}}catch(_0x15c2a0){const _0x2006aa=_0x15c2a0 instanceof Error?_0x15c2a0[_0x2e9e32(0x292)]:String(_0x15c2a0);return reportMorphError({'error_message':_0x2006aa,'error_type':_0x15c2a0 instanceof Error?_0x15c2a0['constructor'][_0x2e9e32(0x1e5)]:_0x2e9e32(0x223),'context':{'tool':_0x21386a,'arguments':_0x28b308?JSON[_0x2e9e32(0x271)](_0x28b308)[_0x2e9e32(0x253)](0x0,0x1f4):undefined,'mcp_server_version':_0x2e9e32(0x2b9)},'stack_trace':_0x15c2a0 instanceof Error?_0x15c2a0[_0x2e9e32(0x238)]:undefined,'source':'mcp-filesystem'})[_0x2e9e32(0x2c6)](()=>{}),{'content':[{'type':_0x2e9e32(0x20d),'text':'Error:\x20'+_0x2006aa}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0xa826c9){const _0x544043=a0_0x5d769f,_0x2e53b3=await getValidRootDirectories(_0xa826c9);if(_0x2e53b3[_0x544043(0x20f)]>0x0)allowedDirectories=[..._0x2e53b3],logMcpStderr(_0x544043(0x234)+_0x2e53b3[_0x544043(0x20f)]+'\x20valid\x20directories');else{logMcpStderr(_0x544043(0x2a8));if(ENABLE_WORKSPACE_MODE)try{const _0x5cfa43=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x5cfa43&&(allowedDirectories=[_0x5cfa43],logMcpStderr(_0x544043(0x29f)+_0x5cfa43));}catch(_0x4ce327){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x4ce327);}}}server[a0_0x5d769f(0x299)](RootsListChangedNotificationSchema,async()=>{const _0xef4f31=a0_0x5d769f;try{const _0x1a6ac0=await server[_0xef4f31(0x1d3)]();_0x1a6ac0&&_0xef4f31(0x2d0)in _0x1a6ac0&&await updateAllowedDirectoriesFromRoots(_0x1a6ac0[_0xef4f31(0x2d0)]);}catch(_0x2a43f1){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x2a43f1 instanceof Error?_0x2a43f1[_0xef4f31(0x292)]:String(_0x2a43f1));}}),server['oninitialized']=async()=>{const _0x2e13dd=a0_0x5d769f,_0x10059b=server['getClientCapabilities']();if(_0x10059b?.[_0x2e13dd(0x2d0)])try{const _0x283be0=await server[_0x2e13dd(0x1d3)]();_0x283be0&&_0x2e13dd(0x2d0)in _0x283be0?await updateAllowedDirectoriesFromRoots(_0x283be0['roots']):logMcpStderr(_0x2e13dd(0x20e));}catch(_0xa92f09){logMcpStderr(_0x2e13dd(0x267),_0xa92f09 instanceof Error?_0xa92f09[_0x2e13dd(0x292)]:String(_0xa92f09));}else{if(allowedDirectories[_0x2e13dd(0x20f)]>0x0)logMcpStderr(_0x2e13dd(0x274),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode');else throw new Error('Server\x20cannot\x20operate:\x20No\x20allowed\x20directories\x20available.\x20Server\x20was\x20started\x20without\x20command-line\x20directories\x20and\x20client\x20either\x20does\x20not\x20support\x20MCP\x20roots\x20protocol\x20or\x20provided\x20empty\x20roots.\x20Please\x20either:\x201)\x20Start\x20server\x20with\x20directory\x20arguments,\x202)\x20Use\x20a\x20client\x20that\x20supports\x20MCP\x20roots\x20protocol\x20and\x20provides\x20valid\x20root\x20directories,\x20or\x203)\x20Enable\x20workspace\x20mode\x20with\x20ENABLE_WORKSPACE_MODE=true.');}}};async function runServer(){const _0x138245=a0_0x5d769f,_0x4dc180=new StdioServerTransport();await server[_0x138245(0x1eb)](_0x4dc180),logMcpStderr(_0x138245(0x206)),allowedDirectories[_0x138245(0x20f)]===0x0&&logMcpStderr(_0x138245(0x283));}runServer()[a0_0x5d769f(0x2c6)](_0x56f36f=>{const _0x16970d=a0_0x5d769f;logMcpStderr('Fatal\x20error\x20running\x20server:',_0x56f36f),process[_0x16970d(0x27b)](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
var a1_0x4479bb=a1_0x40de;(function(_0x1f010e,_0x1a0809){var _0x6055c3=a1_0x40de,_0x370ab9=_0x1f010e();while(!![]){try{var _0x36fa10=parseInt(_0x6055c3(0xd7))/0x1*(parseInt(_0x6055c3(0xdc))/0x2)+-parseInt(_0x6055c3(0xe3))/0x3*(parseInt(_0x6055c3(0xde))/0x4)+-parseInt(_0x6055c3(0xdd))/0x5*(parseInt(_0x6055c3(0xd0))/0x6)+parseInt(_0x6055c3(0xe1))/0x7*(parseInt(_0x6055c3(0xd2))/0x8)+-parseInt(_0x6055c3(0xd6))/0x9*(-parseInt(_0x6055c3(0xd3))/0xa)+parseInt(_0x6055c3(0xd4))/0xb*(parseInt(_0x6055c3(0xe2))/0xc)+-parseInt(_0x6055c3(0xe0))/0xd*(parseInt(_0x6055c3(0xd1))/0xe);if(_0x36fa10===_0x1a0809)break;else _0x370ab9['push'](_0x370ab9['shift']());}catch(_0x54d888){_0x370ab9['push'](_0x370ab9['shift']());}}}(a1_0x240c,0x5b9b1));function a1_0x40de(_0xb4fc60,_0x17f615){_0xb4fc60=_0xb4fc60-0xd0;var _0x240c37=a1_0x240c();var _0x40de64=_0x240c37[_0xb4fc60];return _0x40de64;}import a1_0x28f838 from'os';export function getOperatingSystemType(_0xfe5f31=a1_0x28f838[a1_0x4479bb(0xda)]()){var _0x1b1089=a1_0x4479bb;switch(_0xfe5f31){case _0x1b1089(0xe4):return _0x1b1089(0xdf);case _0x1b1089(0xdb):return _0x1b1089(0xd8);case'linux':return'Linux';default:return'Unknown';}}export function formatMcpLogMessage(_0x3ee5f1,_0x5f06d8=a1_0x28f838['platform']()){var _0x54036b=a1_0x4479bb;return _0x54036b(0xd5)+getOperatingSystemType(_0x5f06d8)+']\x20'+_0x3ee5f1;}function a1_0x240c(){var _0x56c79d=['6112524JMSzyY','150117AcdxgK','darwin','186FvoCjb','42xRuhEq','8UqXKbd','10DUHXgI','11esssvZ','[os=','2132829kRQkSz','384079HjMnNY','Windows','error','platform','win32','2gimnHJ','23270KLfgaF','16xzcBnk','macOS','2449629asnxLP','1081563PLmCDd'];a1_0x240c=function(){return _0x56c79d;};return a1_0x240c();}export function logMcpStderr(_0x290ce8,..._0xbbe3d8){var _0x2ca269=a1_0x4479bb;console[_0x2ca269(0xd9)](formatMcpLogMessage(_0x290ce8),..._0xbbe3d8);}
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a2_0x131f(){const _0x2d5d97=['match','toUpperCase','1394829AJndOH','8830toEvXl','normalize','slice','1576660VKRvxw','trim','startsWith','35001XgHYYl','18AhdKPC','charAt','680236EWfRqQ','232SfVRLw','homedir','join','/mnt/','34470540CltYtt','3EWqYzd','22627QYPluf','5GkDohD','replace','1194263KGfbPt','test'];a2_0x131f=function(){return _0x2d5d97;};return a2_0x131f();}(function(_0x4fed74,_0x36e147){const _0x46246e=a2_0x3624,_0x27fe93=_0x4fed74();while(!![]){try{const _0x4059c4=parseInt(_0x46246e(0x13a))/0x1+-parseInt(_0x46246e(0x144))/0x2*(-parseInt(_0x46246e(0x132))/0x3)+parseInt(_0x46246e(0x13e))/0x4*(-parseInt(_0x46246e(0x134))/0x5)+parseInt(_0x46246e(0x142))/0x6*(parseInt(_0x46246e(0x136))/0x7)+parseInt(_0x46246e(0x145))/0x8*(parseInt(_0x46246e(0x141))/0x9)+parseInt(_0x46246e(0x13b))/0xa*(parseInt(_0x46246e(0x133))/0xb)+-parseInt(_0x46246e(0x131))/0xc;if(_0x4059c4===_0x36e147)break;else _0x27fe93['push'](_0x27fe93['shift']());}catch(_0x3b198b){_0x27fe93['push'](_0x27fe93['shift']());}}}(a2_0x131f,0xddf78));import a2_0x1cc26c from'path';function a2_0x3624(_0x22ac29,_0x1e0187){_0x22ac29=_0x22ac29-0x130;const _0x131ff2=a2_0x131f();let _0x362454=_0x131ff2[_0x22ac29];return _0x362454;}import a2_0x10d65e from'os';export function convertToWindowsPath(_0xc42526){const _0x1f6da1=a2_0x3624;if(_0xc42526[_0x1f6da1(0x140)](_0x1f6da1(0x130))){const _0x376070=_0xc42526[_0x1f6da1(0x143)](0x5)[_0x1f6da1(0x139)](),_0x580e33=_0xc42526[_0x1f6da1(0x13d)](0x6)[_0x1f6da1(0x135)](/\//g,'\x5c');return _0x376070+':'+_0x580e33;}if(_0xc42526['match'](/^\/[a-zA-Z]\//)){const _0x77e93b=_0xc42526['charAt'](0x1)[_0x1f6da1(0x139)](),_0x45b1b7=_0xc42526['slice'](0x2)['replace'](/\//g,'\x5c');return _0x77e93b+':'+_0x45b1b7;}if(_0xc42526[_0x1f6da1(0x138)](/^[a-zA-Z]:/))return _0xc42526['replace'](/\//g,'\x5c');return _0xc42526;}export function normalizePath(_0x142784){const _0xfda55c=a2_0x3624;_0x142784=_0x142784[_0xfda55c(0x13f)]()['replace'](/^["']|["']$/g,'');const _0x25af2a=_0x142784['startsWith']('/')&&!_0x142784[_0xfda55c(0x138)](/^\/mnt\/[a-z]\//i)&&!_0x142784['match'](/^\/[a-zA-Z]\//);if(_0x25af2a)return _0x142784[_0xfda55c(0x135)](/\/+/g,'/')[_0xfda55c(0x135)](/\/+$/,'');_0x142784=convertToWindowsPath(_0x142784);if(_0x142784[_0xfda55c(0x140)]('\x5c\x5c')){let _0x255d6f=_0x142784;_0x255d6f=_0x255d6f[_0xfda55c(0x135)](/^\\{2,}/,'\x5c\x5c');const _0x30f9ad=_0x255d6f['substring'](0x2)[_0xfda55c(0x135)](/\\\\/g,'\x5c');_0x142784='\x5c\x5c'+_0x30f9ad;}else _0x142784=_0x142784[_0xfda55c(0x135)](/\\\\/g,'\x5c');let _0x243461=a2_0x1cc26c[_0xfda55c(0x13c)](_0x142784);_0x142784[_0xfda55c(0x140)]('\x5c\x5c')&&!_0x243461[_0xfda55c(0x140)]('\x5c\x5c')&&(_0x243461='\x5c'+_0x243461);if(_0x243461[_0xfda55c(0x138)](/^[a-zA-Z]:/)){let _0x4d08e1=_0x243461[_0xfda55c(0x135)](/\//g,'\x5c');return/^[a-z]:/[_0xfda55c(0x137)](_0x4d08e1)&&(_0x4d08e1=_0x4d08e1['charAt'](0x0)[_0xfda55c(0x139)]()+_0x4d08e1[_0xfda55c(0x13d)](0x1)),_0x4d08e1;}return _0x243461['replace'](/\//g,'\x5c');}export function expandHome(_0x2e792f){const _0xead782=a2_0x3624;if(_0x2e792f[_0xead782(0x140)]('~/')||_0x2e792f==='~')return a2_0x1cc26c[_0xead782(0x147)](a2_0x10d65e[_0xead782(0x146)](),_0x2e792f['slice'](0x1));return _0x2e792f;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x153b53,_0x51f4bc){const _0x41987d=a3_0x3a8d,_0x41ba3f=_0x153b53();while(!![]){try{const _0x163d2f=parseInt(_0x41987d(0xce))/0x1*(parseInt(_0x41987d(0xd0))/0x2)+parseInt(_0x41987d(0xca))/0x3+parseInt(_0x41987d(0xd2))/0x4+-parseInt(_0x41987d(0xc7))/0x5*(-parseInt(_0x41987d(0xd4))/0x6)+-parseInt(_0x41987d(0xc8))/0x7+-parseInt(_0x41987d(0xd6))/0x8+-parseInt(_0x41987d(0xcc))/0x9;if(_0x163d2f===_0x51f4bc)break;else _0x41ba3f['push'](_0x41ba3f['shift']());}catch(_0x2465b4){_0x41ba3f['push'](_0x41ba3f['shift']());}}}(a3_0x3b7a,0x863d4));import a3_0x1d2df3 from'path';export function isPathWithinAllowedDirectories(_0x61917c,_0x45f57f){const _0x43e664=a3_0x3a8d;if(typeof _0x61917c!=='string'||!Array[_0x43e664(0xc6)](_0x45f57f))return![];if(!_0x61917c||_0x45f57f[_0x43e664(0xcd)]===0x0)return![];if(_0x61917c[_0x43e664(0xd7)]('\x00'))return![];let _0x379ce0;try{_0x379ce0=a3_0x1d2df3[_0x43e664(0xd5)](a3_0x1d2df3['normalize'](_0x61917c));}catch{return![];}if(!a3_0x1d2df3[_0x43e664(0xc9)](_0x379ce0))throw new Error('Path\x20must\x20be\x20absolute\x20after\x20normalization');return _0x45f57f['some'](_0x597757=>{const _0x2cdca2=_0x43e664;if(typeof _0x597757!==_0x2cdca2(0xc5)||!_0x597757)return![];if(_0x597757[_0x2cdca2(0xd7)]('\x00'))return![];let _0x1931de;try{_0x1931de=a3_0x1d2df3[_0x2cdca2(0xd5)](a3_0x1d2df3[_0x2cdca2(0xd3)](_0x597757));}catch{return![];}if(!a3_0x1d2df3[_0x2cdca2(0xc9)](_0x1931de))throw new Error(_0x2cdca2(0xcf));if(_0x379ce0===_0x1931de)return!![];if(_0x1931de===a3_0x1d2df3[_0x2cdca2(0xcb)])return _0x379ce0[_0x2cdca2(0xd1)](a3_0x1d2df3['sep']);return _0x379ce0[_0x2cdca2(0xd1)](_0x1931de+a3_0x1d2df3[_0x2cdca2(0xcb)]);});}function a3_0x3a8d(_0x44dcd7,_0x4b4580){_0x44dcd7=_0x44dcd7-0xc5;const _0x3b7a33=a3_0x3b7a();let _0x3a8d3c=_0x3b7a33[_0x44dcd7];return _0x3a8d3c;}function a3_0x3b7a(){const _0x2f15f4=['normalize','24LbmmMt','resolve','1481656JMWduf','includes','string','isArray','1332845BpMinB','669403qMJrYp','isAbsolute','1697424vZlBTU','sep','22641354iBPloU','length','947653aWYRxP','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','2WrBjRQ','startsWith','3066596TTYELZ'];a3_0x3b7a=function(){return _0x2f15f4;};return a3_0x3b7a();}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a4_0x40f5(){const _0x18c8ce=['1761208KKFnvP','19196EphXaB','\x20due\x20to\x20error:\x20','Skipping\x20','non-directory\x20root','slice','join','startsWith','resolve','57EnDuZM','uri','homedir','file://','4969552yymfTh','isDirectory','realpath','stat','850596luIZxp','Skipping\x20invalid\x20directory:\x20','6998196tZzQuZ','invalid\x20path\x20or\x20inaccessible','1991160thbQRp','2371588NPwNKC'];a4_0x40f5=function(){return _0x18c8ce;};return a4_0x40f5();}(function(_0x54eabc,_0xf6a9df){const _0x3d5e2b=a4_0xdc4b,_0x57fcce=_0x54eabc();while(!![]){try{const _0x1ffbc3=-parseInt(_0x3d5e2b(0xb1))/0x1+-parseInt(_0x3d5e2b(0xa1))/0x2*(-parseInt(_0x3d5e2b(0xa9))/0x3)+parseInt(_0x3d5e2b(0x9f))/0x4+parseInt(_0x3d5e2b(0xb5))/0x5+parseInt(_0x3d5e2b(0xb3))/0x6+-parseInt(_0x3d5e2b(0xad))/0x7+parseInt(_0x3d5e2b(0xa0))/0x8;if(_0x1ffbc3===_0xf6a9df)break;else _0x57fcce['push'](_0x57fcce['shift']());}catch(_0x4dd0c9){_0x57fcce['push'](_0x57fcce['shift']());}}}(a4_0x40f5,0xf4034));import{promises as a4_0x3ba315}from'fs';import a4_0x46ec19 from'path';import a4_0x518f19 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x42f204){const _0x14c287=a4_0xdc4b;try{const _0x414750=_0x42f204[_0x14c287(0xa7)](_0x14c287(0xac))?_0x42f204['slice'](0x7):_0x42f204,_0x44df45=_0x414750['startsWith']('~/')||_0x414750==='~'?a4_0x46ec19[_0x14c287(0xa6)](a4_0x518f19[_0x14c287(0xab)](),_0x414750[_0x14c287(0xa5)](0x1)):_0x414750,_0x319994=a4_0x46ec19[_0x14c287(0xa8)](_0x44df45),_0x133f57=await a4_0x3ba315[_0x14c287(0xaf)](_0x319994);return normalizePath(_0x133f57);}catch{return null;}}function formatDirectoryError(_0x467fc2,_0xfe5e04,_0x26d523){const _0x21b3a3=a4_0xdc4b;if(_0x26d523)return _0x21b3a3(0xa3)+_0x26d523+':\x20'+_0x467fc2;const _0x5cfa18=_0xfe5e04 instanceof Error?_0xfe5e04['message']:String(_0xfe5e04);return _0x21b3a3(0xb2)+_0x467fc2+_0x21b3a3(0xa2)+_0x5cfa18;}function a4_0xdc4b(_0xaa7ac8,_0x1db21d){_0xaa7ac8=_0xaa7ac8-0x9f;const _0x40f51b=a4_0x40f5();let _0xdc4b22=_0x40f51b[_0xaa7ac8];return _0xdc4b22;}export async function getValidRootDirectories(_0x3def3e){const _0x1ab33a=a4_0xdc4b,_0x59e6bb=[];for(const _0x1914cc of _0x3def3e){const _0x41c225=await parseRootUri(_0x1914cc[_0x1ab33a(0xaa)]);if(!_0x41c225){logMcpStderr(formatDirectoryError(_0x1914cc['uri'],undefined,_0x1ab33a(0xb4)));continue;}try{const _0x417d42=await a4_0x3ba315[_0x1ab33a(0xb0)](_0x41c225);_0x417d42[_0x1ab33a(0xae)]()?_0x59e6bb['push'](_0x41c225):logMcpStderr(formatDirectoryError(_0x41c225,undefined,_0x1ab33a(0xa4)));}catch(_0x47da51){logMcpStderr(formatDirectoryError(_0x41c225,_0x47da51));}}return _0x59e6bb;}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.138",
|
|
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.145",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|