@morphllm/morphmcp 0.8.152 → 0.8.153

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 CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- const a0_0x553a3a=a0_0x2765;(function(_0x240d28,_0x258483){const _0x55fe07=a0_0x2765,_0x43adc7=_0x240d28();while(!![]){try{const _0x5ed4a6=parseInt(_0x55fe07(0x1e4))/0x1*(parseInt(_0x55fe07(0x14f))/0x2)+-parseInt(_0x55fe07(0x22f))/0x3*(parseInt(_0x55fe07(0x200))/0x4)+parseInt(_0x55fe07(0x231))/0x5+parseInt(_0x55fe07(0x132))/0x6*(-parseInt(_0x55fe07(0x143))/0x7)+-parseInt(_0x55fe07(0x21d))/0x8*(-parseInt(_0x55fe07(0x21e))/0x9)+-parseInt(_0x55fe07(0x203))/0xa+-parseInt(_0x55fe07(0x19e))/0xb*(-parseInt(_0x55fe07(0x230))/0xc);if(_0x5ed4a6===_0x258483)break;else _0x43adc7['push'](_0x43adc7['shift']());}catch(_0x12d146){_0x43adc7['push'](_0x43adc7['shift']());}}}(a0_0x4b51,0x8880b));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_0x16a0fb from'fs/promises';import a0_0x48e43f from'path';import a0_0x2760a4 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0x115047 from'axios';function fixPathRepetition(_0x195e0f){const _0x4f7891=a0_0x2765,_0x1b79c2=_0x195e0f[_0x4f7891(0x128)](a0_0x48e43f[_0x4f7891(0x179)])[_0x4f7891(0x1b8)](Boolean);if(_0x1b79c2[_0x4f7891(0x167)]<0x2)return null;for(let _0x4df550=Math['floor'](_0x1b79c2[_0x4f7891(0x167)]/0x2);_0x4df550>=0x1;_0x4df550--){for(let _0x515c2e=0x0;_0x515c2e<=_0x1b79c2['length']-0x2*_0x4df550;_0x515c2e++){const _0x10b514=_0x1b79c2[_0x4f7891(0x22d)](_0x515c2e,_0x515c2e+_0x4df550),_0x3c999a=_0x1b79c2[_0x4f7891(0x22d)](_0x515c2e+_0x4df550,_0x515c2e+0x2*_0x4df550);if(_0x10b514[_0x4f7891(0x1c7)]((_0x60b6a8,_0x5d004f)=>_0x60b6a8===_0x3c999a[_0x5d004f])){const _0x4f0749=[..._0x1b79c2[_0x4f7891(0x22d)](0x0,_0x515c2e),..._0x1b79c2[_0x4f7891(0x22d)](_0x515c2e+_0x4df550)];return a0_0x48e43f[_0x4f7891(0x179)]+_0x4f0749[_0x4f7891(0x176)](a0_0x48e43f[_0x4f7891(0x179)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x3108d9=a0_0x2765;try{const _0x56911c=require(_0x3108d9(0x121));return _0x56911c['version']??_0x3108d9(0x227);}catch(_0x1f5775){return logMcpStderr(_0x3108d9(0x232),_0x1f5775),_0x3108d9(0x227);}}function printHelp(){const _0x2d069f=a0_0x2765;console['log'](_0x2d069f(0x161)+getPackageVersion()),console['log'](_0x2d069f(0x182)),console[_0x2d069f(0x1e1)](_0x2d069f(0x17b)),console['log'](_0x2d069f(0x133)),console[_0x2d069f(0x1e1)]('\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit'),console[_0x2d069f(0x1e1)](_0x2d069f(0x1ad)),console['log']('\x0aExamples:'),console['log'](_0x2d069f(0x1c1)),console[_0x2d069f(0x1e1)](_0x2d069f(0x138));}const cliArgs=process[a0_0x553a3a(0x12f)]['slice'](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set([a0_0x553a3a(0x1a0),'-h']);cliArgs[a0_0x553a3a(0x210)](_0x138acb=>VERSION_FLAGS['has'](_0x138acb))&&(console[a0_0x553a3a(0x1e1)]('@morphllm/morphmcp\x20'+getPackageVersion()),process['exit'](0x0));cliArgs['some'](_0x38942c=>HELP_FLAGS[a0_0x553a3a(0x202)](_0x38942c))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x1029fd){const _0x2f0244=a0_0x553a3a;for(let _0x4ae86c=0x0;_0x4ae86c<cliArgs[_0x2f0244(0x167)];_0x4ae86c++){const _0x1981de=cliArgs[_0x4ae86c];if(_0x1981de['startsWith']('--'+_0x1029fd+'='))return _0x1981de[_0x2f0244(0x22d)](('--'+_0x1029fd+'=')['length']);if(_0x1981de==='--'+_0x1029fd&&_0x4ae86c+0x1<cliArgs[_0x2f0244(0x167)])return cliArgs[_0x4ae86c+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x553a3a(0x167)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x553a3a(0x202)](arg)||HELP_FLAGS[a0_0x553a3a(0x202)](arg))continue;if(arg[a0_0x553a3a(0x225)](a0_0x553a3a(0x141)))continue;if(arg===a0_0x553a3a(0x11d)){i++;continue;}args['push'](arg);}const WORKSPACE_ROOT=process[a0_0x553a3a(0x1f7)][a0_0x553a3a(0x191)]||process[a0_0x553a3a(0x1f7)]['PWD']||process[a0_0x553a3a(0x1a8)](),ENABLE_WORKSPACE_MODE=process[a0_0x553a3a(0x1f7)][a0_0x553a3a(0x1d1)]!==a0_0x553a3a(0x189),MORPH_API_KEY=getCliArg(a0_0x553a3a(0x193))??process[a0_0x553a3a(0x1f7)][a0_0x553a3a(0x1a7)],MORPH_API_URL=process['env'][a0_0x553a3a(0x16a)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x553a3a(0x1f7)]['MORPH_WARP_GREP_TIMEOUT']?parseInt(process[a0_0x553a3a(0x1f7)][a0_0x553a3a(0x151)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x553a3a(0x159),a0_0x553a3a(0x192),a0_0x553a3a(0x1b5)]),DISABLED_TOOLS=process[a0_0x553a3a(0x1f7)]['DISABLED_TOOLS']?new Set(process[a0_0x553a3a(0x1f7)][a0_0x553a3a(0x1ff)][a0_0x553a3a(0x128)](',')[a0_0x553a3a(0x18a)](_0x489519=>_0x489519['trim']())[a0_0x553a3a(0x1b8)](_0x11c3d9=>_0x11c3d9['length']>0x0)):new Set();function a0_0x4b51(){const _0x2ad713=['.vscode','Fatal\x20error\x20running\x20server:','function','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','messages','context','4124703uoqORC','Relevant\x20context\x20found:','--help','etimedout','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','toISOString','Workspace\x20mode\x20enabled:\x20Using\x20','morph-v3-fast','-\x20Grepped\x20\x27','MORPH_API_KEY','cwd','sk-','ms.\x20Success:\x20','Failed\x20to\x20read\x20file:\x20','For\x20deletions:\x0a','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','Applied','dryRun','Tool\x20\x22','user','description','Parent\x20directory\x20does\x20not\x20exist:\x20','github_codebase_search','BinaryFile','success','filter','isDirectory','.\x20Changes:\x20','\x22.\x20Known\x20tools:\x20','File\x20read\x20error:','readFile','timeout','error','grep_search','\x20\x20morph-mcp','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','metadata','string','.cursor','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','every','\x20is\x20not\x20a\x20directory','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','❌\x20Morph\x20Edit\x20Failed:\x20','go.mod','basename','ReadError','role','completed_with_file_errors','code','ENABLE_WORKSPACE_MODE','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','message','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','`\x20in\x20`','safeParse','all','listRoots','resolve','completionId','tool_call_id','\x27\x20in\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','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','\x20as\x20allowed\x20directory','read','log',',\x20removed\x20','number','1WVXBOg','timed\x20out','Morph\x20Edit\x20Preview','morph-warp-grep-v2.1','list_directory\x20','normalize','data','.git','Invalid\x20arguments:\x20','warn','tool_calls','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','object','source','\x20disabled\x20via\x20DISABLED_TOOLS','assistant','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','text','env','connect','mcp-filesystem','branch','name','content','\x20error(s)','describe','DISABLED_TOOLS','124BSnyDN','FileReadError','has','4142340JGajGr','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','added\x20','isArray','<file\x20path=\x22','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.','\x20-\x20','roots','default','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','parse','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','application/json','some','\x20chars)','Cargo.toml','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','array','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','timings',',\x20modified\x20','owner_repo','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','.\x20Path:\x20','utf-8','34096GClXWx','1548dQUwcz','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','dirname','-\x20Glob\x20search\x20`','realpath','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','toLowerCase','startsWith','search_string','unknown','getClientCapabilities','Error\x20running\x20fast\x20context\x20search:\x20','command','Specific\x20commit\x20hash\x20to\x20search','arguments','slice','completed','82854nFNfVO','24KSXsTZ','2268770xDXvnX','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','boolean','https://morphllm.com/api/error-report','constructor','substring','--api-key','Disabled\x20tools:\x20','TimeoutError','repo_path','../package.json','SymlinkError','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','WarpGrepError','inputSchema','size','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','split','PathError','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','now','setRequestHandler','searchGitHub','match','argv','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','78azFTHd','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','homedir','Warning:\x20','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','0.2.0','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','stat','RipgrepError','tool','stack','Error:\x20','read\x20','--api-key=','catch','286755BJTLXr','pattern','WarpGrep\x20sub-tool\x20errors:\x20','search_type','\x0a</file>','Max\x20results\x20to\x20return','\x0a...\x20(truncated,\x20total:\x20','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','path','setNotificationHandler','UnknownError','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','850576SCohxX','\x20(new\x20file)','MORPH_WARP_GREP_TIMEOUT','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','morph-','\x22>\x0a','Rules:\x0a','code_edit','Preview\x20changes\x20without\x20applying\x20them.','Repository\x20identifier','edit_file','FileNotFound','changes','\x22>\x0aError\x20reading\x20file:\x20','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.','errors','requiresApiKey','instruction','@morphllm/morphmcp\x20','Unknown\x20error','min','finish','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','enum','length','[github_codebase_search]\x20Done\x20in\x20','list_directory','MORPH_API_URL','package.json','-\x20Listed\x20directory\x20`','github_url','\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable','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','lines','[could\x20not\x20read\x20file:\x20','terminationReason','push','SubToolError','post','join','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','files','sep','Here\x20is\x20the\x20content\x20of\x20files:\x0a','\x0aOptions:','Warning:\x20Workspace\x20fallback\x20failed:\x20','node_modules','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','Server\x20cannot\x20operate:\x20No\x20allowed\x20directories\x20available.\x20Server\x20was\x20started\x20without\x20command-line\x20directories\x20and\x20client\x20either\x20does\x20not\x20support\x20MCP\x20roots\x20protocol\x20or\x20provided\x20empty\x20roots.\x20Please\x20either:\x201)\x20Start\x20server\x20with\x20directory\x20arguments,\x202)\x20Use\x20a\x20client\x20that\x20supports\x20MCP\x20roots\x20protocol\x20and\x20provides\x20valid\x20root\x20directories,\x20or\x203)\x20Enable\x20workspace\x20mode\x20with\x20ENABLE_WORKSPACE_MODE=true.','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','grep','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','ENOENT','optional','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','GitHub\x20search\x20failed:\x20','ms:','false','map','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','tsconfig.json','[github_codebase_search]\x20Failed\x20in\x20','linesRemoved','glob\x20\x27','includes','WORKSPACE_ROOT','codebase_search','api-key','Created\x20File','stringify','terminated','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a'];a0_0x4b51=function(){return _0x2ad713;};return a0_0x4b51();}if(DISABLED_TOOLS[a0_0x553a3a(0x126)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES['has'](tool)&&console[a0_0x553a3a(0x1bf)](a0_0x553a3a(0x204)+tool+a0_0x553a3a(0x1bb)+[...KNOWN_TOOL_NAMES][a0_0x553a3a(0x176)](',\x20'));}console['error'](a0_0x553a3a(0x11e)+[...DISABLED_TOOLS][a0_0x553a3a(0x176)](',\x20'));}function a0_0x2765(_0xb9c9ba,_0x557d57){_0xb9c9ba=_0xb9c9ba-0x11a;const _0x4b51f7=a0_0x4b51();let _0x276504=_0x4b51f7[_0xb9c9ba];return _0x276504;}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x553a3a(0x225)](a0_0x553a3a(0x1a9))&&!MORPH_API_KEY[a0_0x553a3a(0x225)](a0_0x553a3a(0x153))&&logMcpStderr(a0_0x553a3a(0x1d2));async function reportMorphError(_0x58372d){const _0x5865e0=a0_0x553a3a;try{await a0_0x115047[_0x5865e0(0x175)](_0x5865e0(0x11a),{..._0x58372d,'timestamp':new Date()[_0x5865e0(0x1a3)](),'source':_0x58372d['source']||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x58372d[_0x5865e0(0x19d)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x5865e0(0x20f),'Authorization':'Bearer\x20'+MORPH_API_KEY}});}catch{}}args['length']===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),logMcpStderr('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),logMcpStderr('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr(a0_0x553a3a(0x1c2)),logMcpStderr('At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.'));function normalizePath(_0x37a049){const _0x4b7d14=a0_0x553a3a;return a0_0x48e43f[_0x4b7d14(0x1e9)](_0x37a049);}function expandHome(_0x41eb7b){const _0x250dd3=a0_0x553a3a;if(_0x41eb7b[_0x250dd3(0x225)]('~/')||_0x41eb7b==='~')return a0_0x48e43f[_0x250dd3(0x176)](a0_0x2760a4[_0x250dd3(0x135)](),_0x41eb7b[_0x250dd3(0x22d)](0x1));return _0x41eb7b;}let allowedDirectories=await Promise[a0_0x553a3a(0x1d7)](args['map'](async _0x4f9220=>{const _0x53c921=a0_0x553a3a,_0x281e59=expandHome(_0x4f9220),_0x21501c=a0_0x48e43f[_0x53c921(0x1d9)](_0x281e59);try{const _0x3165be=await a0_0x16a0fb['realpath'](_0x21501c);return normalizePath(_0x3165be);}catch(_0x318b1f){return normalizePath(_0x21501c);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x553a3a(0x167)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x553a3a(0x173)](workspaceDir),logMcpStderr(a0_0x553a3a(0x1a4)+workspaceDir+a0_0x553a3a(0x1df)));}catch(a0_0x3dc50c){logMcpStderr('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x3dc50c);}async function detectWorkspaceRoot(_0x3dcb66){const _0x5eeb93=a0_0x553a3a;let _0x12e8ed=a0_0x48e43f[_0x5eeb93(0x1d9)](_0x3dcb66);const _0xf6b1d7=[_0x5eeb93(0x1eb),_0x5eeb93(0x198),_0x5eeb93(0x16b),_0x5eeb93(0x212),'pyproject.toml',_0x5eeb93(0x1cb),_0x5eeb93(0x1c5),_0x5eeb93(0x18c),'composer.json'];while(_0x12e8ed!==a0_0x48e43f[_0x5eeb93(0x220)](_0x12e8ed)){for(const _0x28d860 of _0xf6b1d7){const _0x3fc3e9=a0_0x48e43f['join'](_0x12e8ed,_0x28d860);try{return await a0_0x16a0fb['access'](_0x3fc3e9),normalizePath(_0x12e8ed);}catch{}}_0x12e8ed=a0_0x48e43f[_0x5eeb93(0x220)](_0x12e8ed);}return normalizePath(_0x3dcb66);}await Promise['all'](args['map'](async _0x58a329=>{const _0x528acc=a0_0x553a3a;try{const _0xe66c90=await a0_0x16a0fb[_0x528acc(0x13b)](expandHome(_0x58a329));!_0xe66c90[_0x528acc(0x1b9)]()&&(logMcpStderr('Error:\x20'+_0x58a329+_0x528acc(0x1c8)),process['exit'](0x1));}catch(_0x64a0cf){logMcpStderr('Error\x20accessing\x20directory\x20'+_0x58a329+':',_0x64a0cf),process['exit'](0x1);}}));async function validatePath(_0x176617){const _0x48eddf=a0_0x553a3a,_0x24f016=expandHome(_0x176617),_0x350407=a0_0x48e43f['resolve'](_0x24f016);try{const _0x299222=await a0_0x16a0fb[_0x48eddf(0x222)](_0x350407);return _0x299222;}catch(_0x14635e){if(_0x14635e[_0x48eddf(0x1d0)]==='ENOENT'){const _0x54791c=a0_0x48e43f['dirname'](_0x350407);try{const _0x482cfc=await a0_0x16a0fb[_0x48eddf(0x222)](_0x54791c);return a0_0x48e43f[_0x48eddf(0x176)](_0x482cfc,a0_0x48e43f[_0x48eddf(0x1cc)](_0x350407));}catch{throw new Error(_0x48eddf(0x1b4)+_0x54791c);}}throw _0x14635e;}}const MorphEditFileArgsSchema=z[a0_0x553a3a(0x1f0)]({'path':z[a0_0x553a3a(0x1c4)](),'code_edit':z[a0_0x553a3a(0x1c4)]()['describe'](a0_0x553a3a(0x233)),'instruction':z[a0_0x553a3a(0x1c4)]()['describe'](a0_0x553a3a(0x130)),'dryRun':z[a0_0x553a3a(0x234)]()[a0_0x553a3a(0x20b)](![])[a0_0x553a3a(0x1fe)](a0_0x553a3a(0x157))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x553a3a(0x208),WarpGrepArgsSchema=z[a0_0x553a3a(0x1f0)]({'search_string':z[a0_0x553a3a(0x1c4)]()[a0_0x553a3a(0x1fe)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x553a3a(0x1c4)]()[a0_0x553a3a(0x1fe)](a0_0x553a3a(0x1de)),'search_type':z[a0_0x553a3a(0x166)]([a0_0x553a3a(0x20b),a0_0x553a3a(0x17d)])[a0_0x553a3a(0x185)]()[a0_0x553a3a(0x1fe)]('Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.')}),WarpGrepGitHubArgsSchema=z[a0_0x553a3a(0x1f0)]({'search_string':z[a0_0x553a3a(0x1c4)]()[a0_0x553a3a(0x1fe)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x553a3a(0x1c4)]()[a0_0x553a3a(0x185)]()[a0_0x553a3a(0x1fe)](a0_0x553a3a(0x15d)),'owner_repo':z[a0_0x553a3a(0x1c4)]()[a0_0x553a3a(0x185)]()[a0_0x553a3a(0x1fe)](a0_0x553a3a(0x223)),'branch':z[a0_0x553a3a(0x1c4)]()[a0_0x553a3a(0x185)]()['describe'](a0_0x553a3a(0x14e))}),CodebaseSearchArgsSchema=z[a0_0x553a3a(0x1f0)]({'query':z['string']()[a0_0x553a3a(0x1fe)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z['string']()[a0_0x553a3a(0x1fe)](a0_0x553a3a(0x158)),'branch':z['string']()[a0_0x553a3a(0x185)]()['describe'](a0_0x553a3a(0x19b)),'commitHash':z[a0_0x553a3a(0x1c4)]()[a0_0x553a3a(0x185)]()['describe'](a0_0x553a3a(0x22b)),'targetDirectories':z[a0_0x553a3a(0x214)](z[a0_0x553a3a(0x1c4)]())[a0_0x553a3a(0x20b)]([])[a0_0x553a3a(0x1fe)]('Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all'),'limit':z[a0_0x553a3a(0x1e3)]()[a0_0x553a3a(0x185)]()[a0_0x553a3a(0x20b)](0xa)[a0_0x553a3a(0x1fe)](a0_0x553a3a(0x148))}),server=new Server({'name':'morph-mcp','version':a0_0x553a3a(0x139)},{'capabilities':{'tools':{}}});server[a0_0x553a3a(0x12c)](ListToolsRequestSchema,async()=>{const _0x3d5a4b=a0_0x553a3a,_0x629512=[{'name':_0x3d5a4b(0x159),'description':_0x3d5a4b(0x197)+_0x3d5a4b(0x17e)+_0x3d5a4b(0x186)+_0x3d5a4b(0x1f4)+'Benefits:\x0a'+_0x3d5a4b(0x177)+_0x3d5a4b(0x1d4)+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+_0x3d5a4b(0x123)+_0x3d5a4b(0x21a)+_0x3d5a4b(0x20c)+_0x3d5a4b(0x131)+_0x3d5a4b(0x1ac)+_0x3d5a4b(0x134)+'-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a'+_0x3d5a4b(0x155)+_0x3d5a4b(0x21f)+_0x3d5a4b(0x14a)+_0x3d5a4b(0x152)+_0x3d5a4b(0x12a)+_0x3d5a4b(0x20e)+_0x3d5a4b(0x18b)+_0x3d5a4b(0x1dd),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x3d5a4b(0x192),'description':_0x3d5a4b(0x16f)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x3d5a4b(0x1c6)+_0x3d5a4b(0x165)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x2165ad=_0x629512['filter'](_0x354899=>{const _0x435842=_0x3d5a4b;if(DISABLED_TOOLS[_0x435842(0x202)](_0x354899[_0x435842(0x1fb)]))return console['error']('Tool\x20'+_0x354899[_0x435842(0x1fb)]+_0x435842(0x1f2)),![];if(_0x435842(0x15f)in _0x354899&&_0x354899[_0x435842(0x15f)]&&!MORPH_API_KEY)return logMcpStderr('Warning:\x20'+_0x354899[_0x435842(0x1fb)]+_0x435842(0x1f5)),![];return!![];});return{'tools':_0x2165ad['map'](_0x5159c7=>({'name':_0x5159c7[_0x3d5a4b(0x1fb)],'description':_0x5159c7[_0x3d5a4b(0x1b3)],'inputSchema':_0x5159c7[_0x3d5a4b(0x125)]}))};}),server['setRequestHandler'](CallToolRequestSchema,async _0x50801b=>{const _0x37f499=a0_0x553a3a,{name:_0x450a55,arguments:_0x45d79c}=_0x50801b['params'];try{if(DISABLED_TOOLS['has'](_0x450a55))throw new Error(_0x37f499(0x1b1)+_0x450a55+_0x37f499(0x16e));switch(_0x450a55){case _0x37f499(0x159):{const _0x334f07=_0x45d79c&&typeof _0x45d79c===_0x37f499(0x1f0)&&'instructions'in _0x45d79c&&!(_0x37f499(0x160)in _0x45d79c)?{..._0x45d79c,'instruction':_0x45d79c['instructions'],'instructions':undefined}:_0x45d79c,_0x2eeea3=MorphEditFileArgsSchema['safeParse'](_0x334f07);if(!_0x2eeea3['success'])throw new Error('Invalid\x20arguments\x20for\x20morph_edit_file:\x20'+_0x2eeea3[_0x37f499(0x1bf)]);const _0xf92cf3=await validatePath(_0x2eeea3[_0x37f499(0x1ea)][_0x37f499(0x14b)]);let _0x26c327=null,_0x34717f=!![],_0x2f87dd=null;try{_0x26c327=await a0_0x16a0fb[_0x37f499(0x1bd)](_0xf92cf3,'utf-8');}catch(_0x161335){const _0x3d2085=_0x161335[_0x37f499(0x1d0)];_0x3d2085===_0x37f499(0x184)?(_0x34717f=![],_0x26c327=''):(_0x2f87dd=_0x37f499(0x1ab)+(_0x3d2085||_0x37f499(0x227))+_0x37f499(0x209)+(_0x161335 instanceof Error?_0x161335[_0x37f499(0x1d3)]:String(_0x161335)),logMcpStderr(_0x37f499(0x136)+_0x2f87dd));}let _0x571974;try{const _0x19282b=MORPH_API_KEY;if(!_0x19282b)throw new Error(_0x37f499(0x213));const _0x12ad63=a0_0x48e43f[_0x37f499(0x220)](_0xf92cf3),_0x145f77=a0_0x48e43f[_0x37f499(0x1cc)](_0xf92cf3),_0x25111d=await executeEditFile({'target_filepath':_0x145f77,'code_edit':_0x2eeea3[_0x37f499(0x1ea)][_0x37f499(0x156)],'instruction':_0x2eeea3[_0x37f499(0x1ea)]['instruction']},{'morphApiKey':_0x19282b,'morphApiUrl':MORPH_API_URL,'baseDir':_0x12ad63,'autoWrite':!_0x2eeea3[_0x37f499(0x1ea)]['dryRun'],'generateUdiff':![],'debug':![]});_0x571974=_0x25111d[_0x37f499(0x1da)];if(!_0x25111d[_0x37f499(0x1b7)])throw new Error(_0x25111d[_0x37f499(0x1bf)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x3adc5f=_0x25111d[_0x37f499(0x15b)],_0x250415=_0x37f499(0x205)+_0x3adc5f['linesAdded']+_0x37f499(0x1e2)+_0x3adc5f[_0x37f499(0x18e)]+_0x37f499(0x217)+_0x3adc5f['linesModified'];if(_0x2eeea3['data'][_0x37f499(0x1b0)])return{'content':[{'type':_0x37f499(0x1f6),'text':_0x37f499(0x1e6)+(_0x34717f?'':_0x37f499(0x150))+':\x20'+_0x2eeea3['data'][_0x37f499(0x160)]+_0x37f499(0x1ba)+_0x250415+_0x37f499(0x21b)+_0x2eeea3[_0x37f499(0x1ea)]['path']+'.'}]};return{'content':[{'type':'text','text':'Morph\x20Edit\x20'+(_0x34717f?_0x37f499(0x1af):_0x37f499(0x194))+':\x20'+_0x2eeea3[_0x37f499(0x1ea)][_0x37f499(0x160)]+_0x37f499(0x1ba)+_0x250415+_0x37f499(0x21b)+_0x2eeea3[_0x37f499(0x1ea)][_0x37f499(0x14b)]+'.'}]};}catch(_0x5beb47){const _0x4427c4=_0x5beb47 instanceof Error?_0x5beb47[_0x37f499(0x1d3)]:String(_0x5beb47);return reportMorphError({'error_message':_0x4427c4,'error_type':_0x5beb47 instanceof Error?_0x5beb47[_0x37f499(0x11b)][_0x37f499(0x1fb)]:_0x37f499(0x14d),'context':{'tool':_0x37f499(0x159),'completion_id':_0x571974,'file_path':_0x2eeea3[_0x37f499(0x1ea)][_0x37f499(0x14b)],'validated_path':_0xf92cf3,'instruction':_0x2eeea3['data'][_0x37f499(0x160)],'model':_0x37f499(0x1a5),'dry_run':_0x2eeea3['data'][_0x37f499(0x1b0)],'file_exists':_0x34717f,'file_read_error':_0x2f87dd,'file_readable':_0x26c327!==null,'request_content':{'path':_0x2eeea3[_0x37f499(0x1ea)][_0x37f499(0x14b)],'code_edit':_0x2eeea3[_0x37f499(0x1ea)]['code_edit'],'instruction':_0x2eeea3[_0x37f499(0x1ea)][_0x37f499(0x160)],'original_code':_0x26c327!==null?_0x26c327[_0x37f499(0x167)]>0xc350?_0x26c327[_0x37f499(0x11c)](0x0,0xc350)+_0x37f499(0x149)+_0x26c327[_0x37f499(0x167)]+_0x37f499(0x211):_0x26c327:_0x37f499(0x171)+(_0x2f87dd||'unknown\x20error')+']','original_code_length':_0x26c327?.[_0x37f499(0x167)]??0x0,'model':_0x37f499(0x1a5),'dry_run':_0x2eeea3['data'][_0x37f499(0x1b0)]}},'stack_trace':_0x5beb47 instanceof Error?_0x5beb47[_0x37f499(0x13e)]:undefined,'source':'mcp-filesystem'})[_0x37f499(0x142)](()=>{}),{'content':[{'type':_0x37f499(0x1f6),'text':_0x37f499(0x1ca)+_0x4427c4}],'isError':!![]};}}case _0x37f499(0x192):{const _0x27de95=WarpGrepArgsSchema[_0x37f499(0x1d6)](_0x45d79c);if(!_0x27de95[_0x37f499(0x1b7)])return{'content':[{'type':_0x37f499(0x1f6),'text':_0x37f499(0x1ec)+_0x27de95[_0x37f499(0x1bf)]}],'isError':!![]};const _0x391c1=_0x2ec8f7=>{const _0x173bc3=_0x37f499,_0x357de2=[];for(const _0x3ba175 of _0x2ec8f7||[]){if(_0x3ba175[_0x173bc3(0x1ce)]===_0x173bc3(0x1f3)&&Array[_0x173bc3(0x206)](_0x3ba175['tool_calls']))for(const _0x3f0d7d of _0x3ba175[_0x173bc3(0x1ee)]){try{const _0x331ec7=_0x3f0d7d[_0x173bc3(0x19a)]?.[_0x173bc3(0x1fb)],_0x1936b6=JSON[_0x173bc3(0x20d)](_0x3f0d7d[_0x173bc3(0x19a)]?.[_0x173bc3(0x22c)]||'{}');if(_0x331ec7===_0x173bc3(0x1c0))_0x357de2['push']('grep\x20\x27'+_0x1936b6[_0x173bc3(0x144)]+'\x27\x20'+(_0x1936b6[_0x173bc3(0x14b)]||'.'));else{if(_0x331ec7==='read')_0x357de2[_0x173bc3(0x173)](_0x173bc3(0x140)+_0x1936b6[_0x173bc3(0x14b)]);else{if(_0x331ec7===_0x173bc3(0x169))_0x357de2['push'](_0x173bc3(0x1e8)+(_0x1936b6[_0x173bc3(0x22a)]||'.'));else{if(_0x331ec7==='glob')_0x357de2[_0x173bc3(0x173)](_0x173bc3(0x18f)+_0x1936b6[_0x173bc3(0x144)]+'\x27\x20'+(_0x1936b6[_0x173bc3(0x14b)]||'.'));else _0x331ec7===_0x173bc3(0x164)&&_0x357de2[_0x173bc3(0x173)](_0x173bc3(0x164));}}}}catch{}}}return _0x357de2;},_0x2be59b=_0x54e7a9=>{const _0x2cfcdf=_0x37f499,_0x214717=[];if(!_0x54e7a9||!Array[_0x2cfcdf(0x206)](_0x54e7a9))return _0x214717;const _0x50fe3b=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x2cfcdf(0x15a),'tool':_0x2cfcdf(0x1e0)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x2cfcdf(0x129),'tool':_0x2cfcdf(0x1e0)},{'pattern':/\[READ ERROR\]/,'error_type':'ReadError','tool':_0x2cfcdf(0x1e0)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x2cfcdf(0x1b6),'tool':_0x2cfcdf(0x1e0)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x2cfcdf(0x13c),'tool':_0x2cfcdf(0x181)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':'RipgrepNotAvailable','tool':_0x2cfcdf(0x181)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x2cfcdf(0x1b6),'tool':_0x2cfcdf(0x1e0)},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':_0x2cfcdf(0x1e0)},{'pattern':/not a text file/,'error_type':'BinaryFile','tool':_0x2cfcdf(0x1e0)},{'pattern':/symbolic link/,'error_type':_0x2cfcdf(0x122),'tool':_0x2cfcdf(0x1e0)},{'pattern':/Error reading file:/,'error_type':_0x2cfcdf(0x1cd),'tool':_0x2cfcdf(0x1e0)},{'pattern':/status="error"/,'error_type':'ToolException','tool':_0x2cfcdf(0x227)}];let _0x3733d4=0x0;for(const _0x54acb0 of _0x54e7a9){_0x54acb0[_0x2cfcdf(0x1ce)]==='assistant'&&Array[_0x2cfcdf(0x206)](_0x54acb0[_0x2cfcdf(0x1ee)])&&_0x3733d4++;const _0xac5aca=_0x54acb0['content'];if((_0x54acb0[_0x2cfcdf(0x1ce)]===_0x2cfcdf(0x13d)||_0x54acb0['role']===_0x2cfcdf(0x1b2))&&_0xac5aca&&typeof _0xac5aca===_0x2cfcdf(0x1c4))for(const {pattern:_0x1fff2f,error_type:_0x20a9e4,tool:_0x49ced6}of _0x50fe3b){const _0x20b6d6=_0xac5aca[_0x2cfcdf(0x12e)](new RegExp(_0x1fff2f[_0x2cfcdf(0x1f1)],'g'));if(_0x20b6d6)for(const _0x5beaac of _0x20b6d6){const _0x42b7f2=_0xac5aca['indexOf'](_0x5beaac),_0x3dc011=_0xac5aca[_0x2cfcdf(0x11c)](_0x42b7f2,Math[_0x2cfcdf(0x163)](_0x42b7f2+0xc8,_0xac5aca['length']));_0x214717[_0x2cfcdf(0x173)]({'tool':_0x49ced6,'error_type':_0x20a9e4,'error_message':_0x3dc011[_0x2cfcdf(0x128)]('\x0a')[0x0],'turn':_0x3733d4});}}}return _0x214717;};try{const _0x5d8d98=a0_0x48e43f[_0x37f499(0x1d9)](_0x27de95[_0x37f499(0x1ea)][_0x37f499(0x120)]),_0x511fb8=_0x27de95[_0x37f499(0x1ea)][_0x37f499(0x146)],_0x41fbeb=_0x511fb8===_0x37f499(0x17d)?{'allowNames':[_0x37f499(0x17d)]}:undefined,_0x1b0ef2=new LocalRipgrepProvider(_0x5d8d98,undefined,_0x41fbeb),_0x1212ae=await runWarpGrep({'searchTerm':_0x27de95[_0x37f499(0x1ea)][_0x37f499(0x226)],'repoRoot':_0x5d8d98,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x1b0ef2,'search_type':_0x511fb8}),_0x7cce17=_0x2be59b(_0x1212ae['messages']);_0x7cce17[_0x37f499(0x167)]>0x0&&reportMorphError({'error_message':_0x37f499(0x145)+_0x7cce17[_0x37f499(0x167)]+_0x37f499(0x1fd),'error_type':_0x37f499(0x174),'level':_0x37f499(0x1ed),'tool':_0x37f499(0x192),'context':{'repo_path':_0x27de95[_0x37f499(0x1ea)][_0x37f499(0x120)],'query':_0x27de95[_0x37f499(0x1ea)][_0x37f499(0x226)],'model':_0x37f499(0x1e7),'termination_reason':_0x1212ae[_0x37f499(0x172)],'sub_tool_errors':_0x7cce17,'timings':_0x1212ae[_0x37f499(0x216)],'tool_calls':_0x391c1(_0x1212ae[_0x37f499(0x19c)]),'messages':_0x1212ae[_0x37f499(0x19c)]?.[_0x37f499(0x18a)](_0x2bcfe9=>({'role':_0x2bcfe9[_0x37f499(0x1ce)],'content':_0x2bcfe9[_0x37f499(0x1fc)],..._0x2bcfe9['tool_calls']?{'tool_calls':_0x2bcfe9[_0x37f499(0x1ee)]['length']}:{},..._0x2bcfe9[_0x37f499(0x1db)]?{'tool_call_id':_0x2bcfe9[_0x37f499(0x1db)]}:{}}))},'source':_0x37f499(0x1f9)})[_0x37f499(0x142)](()=>{});let _0x2b61a5='';if(_0x1212ae['terminationReason']===_0x37f499(0x22e)&&_0x1212ae['finish']?.['metadata']?.['files']){const _0xe5f17f=_0x1212ae[_0x37f499(0x164)][_0x37f499(0x1c3)]['files'];if(_0xe5f17f['length']===0x0)return _0x2b61a5=_0x1212ae[_0x37f499(0x164)]['payload']||_0x37f499(0x219),{'content':[{'type':_0x37f499(0x1f6),'text':_0x2b61a5}]};const _0x37fb51=[],_0x2ad60d=[_0x37f499(0x215)];for(const _0x17b61e of _0x1212ae[_0x37f499(0x19c)]){if(_0x17b61e[_0x37f499(0x1ce)]===_0x37f499(0x1f3)&&Array[_0x37f499(0x206)](_0x17b61e['tool_calls']))for(const _0x9a2ce0 of _0x17b61e['tool_calls']){try{const _0x300265=_0x9a2ce0[_0x37f499(0x19a)]?.[_0x37f499(0x1fb)],_0x35342c=JSON['parse'](_0x9a2ce0[_0x37f499(0x19a)]?.[_0x37f499(0x22c)]||'{}');if(_0x300265===_0x37f499(0x1c0))_0x2ad60d['push'](_0x37f499(0x1a6)+_0x35342c[_0x37f499(0x144)]+_0x37f499(0x1dc)+(_0x35342c['path']||'.')+'`');else{if(_0x300265===_0x37f499(0x1e0))_0x2ad60d[_0x37f499(0x173)]('-\x20Read\x20file\x20`'+_0x35342c[_0x37f499(0x14b)]+'`');else{if(_0x300265===_0x37f499(0x169))_0x2ad60d[_0x37f499(0x173)](_0x37f499(0x16c)+(_0x35342c['command']||'.')+'`');else _0x300265==='glob'&&_0x2ad60d[_0x37f499(0x173)](_0x37f499(0x221)+_0x35342c['pattern']+_0x37f499(0x1d5)+(_0x35342c[_0x37f499(0x14b)]||'.')+'`');}}}catch{}}}_0x37fb51[_0x37f499(0x173)](_0x2ad60d[_0x37f499(0x176)]('\x0a'));const _0x503f40=['',_0x37f499(0x19f)];for(const _0x176459 of _0xe5f17f){if(_0x176459['lines']==='*')_0x503f40[_0x37f499(0x173)]('-\x20'+_0x176459['path']+':*');else{if(Array[_0x37f499(0x206)](_0x176459[_0x37f499(0x170)])){const _0x2ab743=_0x176459[_0x37f499(0x170)][_0x37f499(0x18a)](([_0x3d68e8,_0x45bee0])=>{if(_0x3d68e8===_0x45bee0)return''+_0x3d68e8;return _0x3d68e8+'-'+_0x45bee0;});_0x503f40[_0x37f499(0x173)]('-\x20'+_0x176459['path']+':'+_0x2ab743[_0x37f499(0x176)](','));}else _0x503f40[_0x37f499(0x173)]('-\x20'+_0x176459[_0x37f499(0x14b)]+':*');}}_0x503f40[_0x37f499(0x173)](''),_0x37fb51['push'](_0x503f40['join']('\x0a')),_0x37fb51[_0x37f499(0x173)](_0x37f499(0x17a));const _0x29e400=[],_0x4f6ef8=[];for(const _0x40dd48 of _0xe5f17f){let _0x5c07a2=a0_0x48e43f[_0x37f499(0x1d9)](_0x27de95[_0x37f499(0x1ea)][_0x37f499(0x120)],_0x40dd48[_0x37f499(0x14b)]),_0x382f1b=null,_0x44bf02=null;try{_0x382f1b=await a0_0x16a0fb[_0x37f499(0x1bd)](_0x5c07a2,{'encoding':'utf-8'});}catch(_0x2e682d){const _0x3e191a=fixPathRepetition(_0x5c07a2);if(_0x3e191a)try{_0x382f1b=await a0_0x16a0fb['readFile'](_0x3e191a,{'encoding':_0x37f499(0x21c)}),_0x5c07a2=_0x3e191a;}catch{_0x44bf02=_0x2e682d instanceof Error?_0x2e682d:new Error(String(_0x2e682d));}else _0x44bf02=_0x2e682d instanceof Error?_0x2e682d:new Error(String(_0x2e682d));}if(_0x382f1b!==null){const _0x806285=_0x382f1b['split'](/\r?\n/),_0x407381=[];if(_0x40dd48['lines']==='*'||!Array['isArray'](_0x40dd48['lines']))for(let _0x5b2563=0x1;_0x5b2563<=_0x806285[_0x37f499(0x167)];_0x5b2563++){const _0x59799e=_0x806285[_0x5b2563-0x1];_0x407381[_0x37f499(0x173)](_0x5b2563+'|\x20'+_0x59799e);}else for(const [_0x529a66,_0x2ab45b]of _0x40dd48['lines']){_0x407381[_0x37f499(0x167)]>0x0&&_0x407381[_0x37f499(0x173)]('');for(let _0x59c892=_0x529a66;_0x59c892<=_0x2ab45b&&_0x59c892<=_0x806285['length'];_0x59c892++){const _0x2f65a7=_0x806285[_0x59c892-0x1];_0x407381['push'](_0x59c892+'|\x20'+_0x2f65a7);}}_0x4f6ef8[_0x37f499(0x173)]({'path':_0x40dd48[_0x37f499(0x14b)],'content':_0x407381[_0x37f499(0x176)]('\x0a')});}else _0x29e400[_0x37f499(0x173)](_0x37f499(0x207)+_0x40dd48[_0x37f499(0x14b)]+_0x37f499(0x15c)+(_0x44bf02?.['message']||_0x37f499(0x162))+'\x0a</file>');}try{const _0x196608=await compactFileContexts(_0x4f6ef8,_0x27de95[_0x37f499(0x1ea)]['search_string'],MORPH_API_KEY,MORPH_API_URL);for(const _0x237654 of _0x196608){_0x29e400[_0x37f499(0x173)](_0x37f499(0x207)+_0x237654[_0x37f499(0x14b)]+_0x37f499(0x154)+_0x237654[_0x37f499(0x1fc)]+_0x37f499(0x147));}}catch(_0x3503ba){console[_0x37f499(0x1bf)]('[codebase_search]\x20compaction\x20failed',_0x3503ba);for(const _0x1b84fd of _0x4f6ef8){_0x29e400[_0x37f499(0x173)](_0x37f499(0x207)+_0x1b84fd[_0x37f499(0x14b)]+'\x22>\x0a'+_0x1b84fd[_0x37f499(0x1fc)]+_0x37f499(0x147));}}_0x37fb51['push'](_0x29e400[_0x37f499(0x176)]('\x0a\x0a')),_0x2b61a5=_0x37fb51[_0x37f499(0x176)]('\x0a');const _0x32ac31=_0x1212ae[_0x37f499(0x15e)]?.['filter'](_0x2b795e=>_0x2b795e[_0x37f499(0x1d3)]?.['startsWith'](_0x37f499(0x1bc)))||[];if(_0x32ac31[_0x37f499(0x167)]>0x0){const _0xbc3c42=_0x32ac31['map'](_0xc5e8b5=>_0xc5e8b5[_0x37f499(0x1d3)])[_0x37f499(0x176)](';\x20');reportMorphError({'error_message':_0xbc3c42,'error_type':_0x37f499(0x201),'context':{'tool':'codebase_search','repo_path':_0x27de95[_0x37f499(0x1ea)]['repo_path'],'query':_0x27de95[_0x37f499(0x1ea)]['search_string'],'model':_0x37f499(0x1e7),'termination_reason':_0x37f499(0x1cf),'error_count':_0x32ac31[_0x37f499(0x167)],'is_timeout':![],'timings':_0x1212ae[_0x37f499(0x216)],'files_attempted':_0xe5f17f[_0x37f499(0x18a)](_0x30adbb=>({'path':_0x30adbb[_0x37f499(0x14b)],'lines':_0x30adbb[_0x37f499(0x170)]})),'tool_calls':_0x391c1(_0x1212ae[_0x37f499(0x19c)]),'messages':_0x1212ae['messages']?.['map'](_0x1bd410=>({'role':_0x1bd410[_0x37f499(0x1ce)],'content':_0x1bd410['content'],..._0x1bd410[_0x37f499(0x1ee)]?{'tool_calls':_0x1bd410['tool_calls']['length']}:{},..._0x1bd410[_0x37f499(0x1db)]?{'tool_call_id':_0x1bd410[_0x37f499(0x1db)]}:{}})),'request_content':{'query':_0x27de95[_0x37f499(0x1ea)][_0x37f499(0x226)],'repo_path':_0x27de95[_0x37f499(0x1ea)]['repo_path'],'repoRoot':a0_0x48e43f[_0x37f499(0x1d9)](_0x27de95[_0x37f499(0x1ea)][_0x37f499(0x120)]),'model':_0x37f499(0x1e7)}},'source':'mcp-filesystem'})[_0x37f499(0x142)](()=>{});}}else{if(_0x1212ae['terminationReason']===_0x37f499(0x196)&&_0x1212ae[_0x37f499(0x15e)][_0x37f499(0x167)]>0x0){const _0x1b2d00=_0x1212ae['errors'][_0x37f499(0x18a)](_0xe3b1e6=>_0xe3b1e6['message'])[_0x37f499(0x176)](';\x20');_0x2b61a5=_0x37f499(0x13f)+_0x1b2d00;const _0x1d1b45=_0x1b2d00[_0x37f499(0x224)]()[_0x37f499(0x190)](_0x37f499(0x1be))||_0x1b2d00[_0x37f499(0x224)]()[_0x37f499(0x190)](_0x37f499(0x1e5))||_0x1b2d00[_0x37f499(0x224)]()[_0x37f499(0x190)](_0x37f499(0x1a1)),_0x486071=_0x1212ae[_0x37f499(0x164)]?.['metadata']?.[_0x37f499(0x178)],_0x4b7688=_0x1212ae['errors'][0x0];reportMorphError({'error_message':_0x1b2d00,'error_type':_0x1d1b45?'TimeoutError':_0x4b7688?.[_0x37f499(0x11b)]?.['name']||_0x37f499(0x124),'context':{'tool':_0x37f499(0x192),'repo_path':_0x27de95[_0x37f499(0x1ea)][_0x37f499(0x120)],'query':_0x27de95[_0x37f499(0x1ea)]['search_string'],'model':_0x37f499(0x1e7),'termination_reason':_0x1212ae[_0x37f499(0x172)],'error_count':_0x1212ae[_0x37f499(0x15e)][_0x37f499(0x167)],'is_timeout':_0x1d1b45,'timings':_0x1212ae['timings'],'files_attempted':_0x486071?.[_0x37f499(0x18a)](_0x5b822d=>({'path':_0x5b822d[_0x37f499(0x14b)],'lines':_0x5b822d[_0x37f499(0x170)]})),'tool_calls':_0x391c1(_0x1212ae[_0x37f499(0x19c)]),'messages':_0x1212ae[_0x37f499(0x19c)]?.[_0x37f499(0x18a)](_0x4abe17=>({'role':_0x4abe17[_0x37f499(0x1ce)],'content':_0x4abe17[_0x37f499(0x1fc)],..._0x4abe17[_0x37f499(0x1ee)]?{'tool_calls':_0x4abe17[_0x37f499(0x1ee)][_0x37f499(0x167)]}:{},..._0x4abe17[_0x37f499(0x1db)]?{'tool_call_id':_0x4abe17['tool_call_id']}:{}})),'request_content':{'query':_0x27de95['data']['search_string'],'repo_path':_0x27de95[_0x37f499(0x1ea)][_0x37f499(0x120)],'repoRoot':a0_0x48e43f['resolve'](_0x27de95[_0x37f499(0x1ea)][_0x37f499(0x120)]),'model':_0x37f499(0x1e7)}},'stack_trace':_0x4b7688?.['stack']||undefined,'source':_0x37f499(0x1f9)})[_0x37f499(0x142)](()=>{});}else _0x2b61a5=_0x37f499(0x1c9);}return{'content':[{'type':_0x37f499(0x1f6),'text':_0x2b61a5}]};}catch(_0x2d267f){const _0x19ba5f=_0x2d267f instanceof Error?_0x2d267f['message']:String(_0x2d267f),_0x1490f3=_0x19ba5f[_0x37f499(0x224)]()['includes'](_0x37f499(0x1be))||_0x19ba5f[_0x37f499(0x224)]()[_0x37f499(0x190)](_0x37f499(0x1e5))||_0x19ba5f['toLowerCase']()[_0x37f499(0x190)]('etimedout')||_0x2d267f instanceof Error&&_0x2d267f[_0x37f499(0x1fb)]==='TimeoutError';return reportMorphError({'error_message':_0x19ba5f,'error_type':_0x1490f3?_0x37f499(0x11f):_0x2d267f instanceof Error?_0x2d267f[_0x37f499(0x11b)][_0x37f499(0x1fb)]:_0x37f499(0x14d),'context':{'tool':_0x37f499(0x192),'repo_path':_0x27de95[_0x37f499(0x1ea)]['repo_path'],'query':_0x27de95[_0x37f499(0x1ea)][_0x37f499(0x226)],'model':_0x37f499(0x1e7),'is_timeout':_0x1490f3,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x27de95[_0x37f499(0x1ea)]['search_string'],'repo_path':_0x27de95[_0x37f499(0x1ea)][_0x37f499(0x120)],'repoRoot':a0_0x48e43f[_0x37f499(0x1d9)](_0x27de95['data'][_0x37f499(0x120)]),'model':_0x37f499(0x1e7)}},'stack_trace':_0x2d267f instanceof Error?_0x2d267f[_0x37f499(0x13e)]:undefined,'source':_0x37f499(0x1f9)})['catch'](()=>{}),{'content':[{'type':'text','text':_0x37f499(0x229)+_0x19ba5f}],'isError':![]};}}case _0x37f499(0x1b5):{const _0x371d11=WarpGrepGitHubArgsSchema['safeParse'](_0x45d79c);if(!_0x371d11[_0x37f499(0x1b7)])return{'content':[{'type':_0x37f499(0x1f6),'text':_0x37f499(0x1ec)+_0x371d11[_0x37f499(0x1bf)]}],'isError':!![]};const _0x12c109=_0x371d11[_0x37f499(0x1ea)][_0x37f499(0x16d)]||_0x371d11['data'][_0x37f499(0x218)];if(!_0x12c109)return{'content':[{'type':_0x37f499(0x1f6),'text':_0x37f499(0x183)}],'isError':!![]};const _0x21e0fe=MORPH_API_KEY;if(!_0x21e0fe)throw new Error(_0x37f499(0x213));const _0x59253c=Date[_0x37f499(0x12b)]();logMcpStderr('[github_codebase_search]\x20Searching\x20'+_0x12c109+'\x20for:\x20\x22'+_0x371d11[_0x37f499(0x1ea)]['search_string']+'\x22');try{const _0x185f48=new WarpGrepClient({'morphApiKey':_0x21e0fe,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x5a45d6=await _0x185f48[_0x37f499(0x12d)]({'searchTerm':_0x371d11[_0x37f499(0x1ea)][_0x37f499(0x226)],'github':_0x12c109,'branch':_0x371d11[_0x37f499(0x1ea)][_0x37f499(0x1fa)]}),_0x511b57=Date[_0x37f499(0x12b)]()-_0x59253c;logMcpStderr(_0x37f499(0x168)+_0x511b57+_0x37f499(0x1aa)+_0x5a45d6['success']);const _0x3cf196=formatResult(_0x5a45d6);return{'content':[{'type':'text','text':_0x3cf196}]};}catch(_0x4924b8){const _0x556a39=Date['now']()-_0x59253c,_0x4892da=_0x4924b8 instanceof Error?_0x4924b8['message']:String(_0x4924b8);return logMcpStderr(_0x37f499(0x18d)+_0x556a39+_0x37f499(0x188),_0x4892da),reportMorphError({'error_message':_0x4892da,'error_type':_0x4924b8 instanceof Error?_0x4924b8['constructor'][_0x37f499(0x1fb)]:_0x37f499(0x14d),'context':{'tool':'github_codebase_search','github_url':_0x12c109,'search_string':_0x371d11[_0x37f499(0x1ea)]['search_string'],'branch':_0x371d11[_0x37f499(0x1ea)][_0x37f499(0x1fa)]},'stack_trace':_0x4924b8 instanceof Error?_0x4924b8[_0x37f499(0x13e)]:undefined,'source':_0x37f499(0x1f9),'tool':_0x37f499(0x1b5),'latency_ms':_0x556a39})[_0x37f499(0x142)](()=>{}),{'content':[{'type':_0x37f499(0x1f6),'text':_0x37f499(0x187)+_0x4892da}],'isError':![]};}}default:throw new Error('Unknown\x20tool:\x20'+_0x450a55);}}catch(_0x7dadb0){const _0xaf1e5d=_0x7dadb0 instanceof Error?_0x7dadb0[_0x37f499(0x1d3)]:String(_0x7dadb0);return reportMorphError({'error_message':_0xaf1e5d,'error_type':_0x7dadb0 instanceof Error?_0x7dadb0['constructor'][_0x37f499(0x1fb)]:_0x37f499(0x14d),'context':{'tool':_0x450a55,'arguments':_0x45d79c?JSON[_0x37f499(0x195)](_0x45d79c)[_0x37f499(0x11c)](0x0,0x1f4):undefined,'mcp_server_version':_0x37f499(0x139)},'stack_trace':_0x7dadb0 instanceof Error?_0x7dadb0[_0x37f499(0x13e)]:undefined,'source':_0x37f499(0x1f9)})[_0x37f499(0x142)](()=>{}),{'content':[{'type':_0x37f499(0x1f6),'text':_0x37f499(0x13f)+_0xaf1e5d}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x4bbafe){const _0x5483ad=a0_0x553a3a,_0x555de2=await getValidRootDirectories(_0x4bbafe);if(_0x555de2[_0x5483ad(0x167)]>0x0)allowedDirectories=[..._0x555de2],logMcpStderr('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0x555de2['length']+'\x20valid\x20directories');else{logMcpStderr(_0x5483ad(0x1ef));if(ENABLE_WORKSPACE_MODE)try{const _0x4f4e99=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x4f4e99&&(allowedDirectories=[_0x4f4e99],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x4f4e99));}catch(_0x449c1a){logMcpStderr(_0x5483ad(0x17c)+_0x449c1a);}}}server[a0_0x553a3a(0x14c)](RootsListChangedNotificationSchema,async()=>{const _0x10c914=a0_0x553a3a;try{const _0x359a07=await server[_0x10c914(0x1d8)]();_0x359a07&&_0x10c914(0x20a)in _0x359a07&&await updateAllowedDirectoriesFromRoots(_0x359a07[_0x10c914(0x20a)]);}catch(_0x5a3b61){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x5a3b61 instanceof Error?_0x5a3b61[_0x10c914(0x1d3)]:String(_0x5a3b61));}}),server['oninitialized']=async()=>{const _0x1006ad=a0_0x553a3a,_0x47505f=server[_0x1006ad(0x228)]();if(_0x47505f?.[_0x1006ad(0x20a)])try{const _0x3a2581=await server['listRoots']();_0x3a2581&&_0x1006ad(0x20a)in _0x3a2581?await updateAllowedDirectoriesFromRoots(_0x3a2581['roots']):logMcpStderr(_0x1006ad(0x13a));}catch(_0x109476){logMcpStderr(_0x1006ad(0x1a2),_0x109476 instanceof Error?_0x109476[_0x1006ad(0x1d3)]:String(_0x109476));}else{if(allowedDirectories[_0x1006ad(0x167)]>0x0)logMcpStderr(_0x1006ad(0x180),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x1006ad(0x137));else throw new Error(_0x1006ad(0x17f));}}};async function runServer(){const _0x4cab9f=a0_0x553a3a,_0x4b9db2=new StdioServerTransport();await server[_0x4cab9f(0x1f8)](_0x4b9db2),logMcpStderr(_0x4cab9f(0x127)),allowedDirectories[_0x4cab9f(0x167)]===0x0&&logMcpStderr(_0x4cab9f(0x1ae));}runServer()['catch'](_0x10c263=>{const _0x129d72=a0_0x553a3a;logMcpStderr(_0x129d72(0x199),_0x10c263),process['exit'](0x1);});
2
+ const a0_0x517431=a0_0x33a4;(function(_0x202d00,_0x438dab){const _0x408f4c=a0_0x33a4,_0x30d8cf=_0x202d00();while(!![]){try{const _0x46583b=-parseInt(_0x408f4c(0x219))/0x1+parseInt(_0x408f4c(0x28e))/0x2+parseInt(_0x408f4c(0x28c))/0x3*(-parseInt(_0x408f4c(0x1f5))/0x4)+-parseInt(_0x408f4c(0x22b))/0x5*(-parseInt(_0x408f4c(0x1d9))/0x6)+parseInt(_0x408f4c(0x253))/0x7+parseInt(_0x408f4c(0x233))/0x8+-parseInt(_0x408f4c(0x282))/0x9;if(_0x46583b===_0x438dab)break;else _0x30d8cf['push'](_0x30d8cf['shift']());}catch(_0x5cc58e){_0x30d8cf['push'](_0x30d8cf['shift']());}}}(a0_0x4f06,0x71232));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_0x4f58e2 from'fs/promises';import a0_0x1019ba from'path';import a0_0x11aec8 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0xb8966d from'axios';function a0_0x33a4(_0x1462f2,_0x3265cd){_0x1462f2=_0x1462f2-0x1b4;const _0x4f0656=a0_0x4f06();let _0x33a4cf=_0x4f0656[_0x1462f2];return _0x33a4cf;}function fixPathRepetition(_0x57e927){const _0x5056d8=a0_0x33a4,_0x479f34=_0x57e927[_0x5056d8(0x1e1)](a0_0x1019ba[_0x5056d8(0x1d6)])['filter'](Boolean);if(_0x479f34[_0x5056d8(0x26f)]<0x2)return null;for(let _0xa3c03=Math[_0x5056d8(0x273)](_0x479f34[_0x5056d8(0x26f)]/0x2);_0xa3c03>=0x1;_0xa3c03--){for(let _0x54cfb6=0x0;_0x54cfb6<=_0x479f34[_0x5056d8(0x26f)]-0x2*_0xa3c03;_0x54cfb6++){const _0x459ab1=_0x479f34[_0x5056d8(0x204)](_0x54cfb6,_0x54cfb6+_0xa3c03),_0x405039=_0x479f34[_0x5056d8(0x204)](_0x54cfb6+_0xa3c03,_0x54cfb6+0x2*_0xa3c03);if(_0x459ab1['every']((_0x5884ce,_0x4ca6e5)=>_0x5884ce===_0x405039[_0x4ca6e5])){const _0x1c8718=[..._0x479f34[_0x5056d8(0x204)](0x0,_0x54cfb6),..._0x479f34[_0x5056d8(0x204)](_0x54cfb6+_0xa3c03)];return a0_0x1019ba[_0x5056d8(0x1d6)]+_0x1c8718['join'](a0_0x1019ba[_0x5056d8(0x1d6)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x8a8839=a0_0x33a4;try{const _0x331c9f=require('../package.json');return _0x331c9f['version']??'unknown';}catch(_0x3a63cc){return logMcpStderr(_0x8a8839(0x232),_0x3a63cc),_0x8a8839(0x246);}}function printHelp(){const _0x4797de=a0_0x33a4;console[_0x4797de(0x238)](_0x4797de(0x2a9)+getPackageVersion()),console['log'](_0x4797de(0x1bc)),console[_0x4797de(0x238)](_0x4797de(0x2a5)),console[_0x4797de(0x238)](_0x4797de(0x20e)),console[_0x4797de(0x238)](_0x4797de(0x21d)),console[_0x4797de(0x238)](_0x4797de(0x20c)),console[_0x4797de(0x238)](_0x4797de(0x25b)),console[_0x4797de(0x238)]('\x20\x20morph-mcp'),console[_0x4797de(0x238)](_0x4797de(0x1cb));}const cliArgs=process['argv'][a0_0x517431(0x204)](0x2),VERSION_FLAGS=new Set([a0_0x517431(0x29f),'-v','-V']),HELP_FLAGS=new Set([a0_0x517431(0x231),'-h']);cliArgs[a0_0x517431(0x2a1)](_0x1447d1=>VERSION_FLAGS['has'](_0x1447d1))&&(console[a0_0x517431(0x238)](a0_0x517431(0x2a9)+getPackageVersion()),process[a0_0x517431(0x1fb)](0x0));cliArgs[a0_0x517431(0x2a1)](_0xedf5cc=>HELP_FLAGS[a0_0x517431(0x217)](_0xedf5cc))&&(printHelp(),process[a0_0x517431(0x1fb)](0x0));function getCliArg(_0x58c95d){const _0x229696=a0_0x517431;for(let _0x4556e0=0x0;_0x4556e0<cliArgs[_0x229696(0x26f)];_0x4556e0++){const _0x451e9a=cliArgs[_0x4556e0];if(_0x451e9a[_0x229696(0x252)]('--'+_0x58c95d+'='))return _0x451e9a[_0x229696(0x204)](('--'+_0x58c95d+'=')['length']);if(_0x451e9a==='--'+_0x58c95d&&_0x4556e0+0x1<cliArgs[_0x229696(0x26f)])return cliArgs[_0x4556e0+0x1];}return undefined;}function a0_0x4f06(){const _0xdd4995=['-\x20Listed\x20directory\x20`','\x20(new\x20file)','timings','terminated','split','size','role','map','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','repo_path','Here\x20is\x20the\x20content\x20of\x20files:\x0a','list_directory','SubToolError','listRoots','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol',',\x20modified\x20','grep_search','Failed\x20to\x20read\x20file:\x20','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','realpath','error','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','description','12MYTcLF','BinaryFile','all','grep','timeout','\x20as\x20allowed\x20directory','exit','completionId','TimeoutError','[codebase_search]\x20compaction\x20failed','Unknown\x20error','Parent\x20directory\x20does\x20not\x20exist:\x20','params','etimedout','roots','slice','enum','search_type','name','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','tool','-\x20Read\x20file\x20`','glob','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','Warning:\x20','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','morph-v3-fast','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','Morph\x20Edit\x20','Applied','object','morph-mcp','MORPH_API_KEY','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','has','resolve','168557JAddip','PathError','instructions','function','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','Disabled\x20tools:\x20','Fallback:\x20Using\x20workspace\x20root\x20','success','default','connect','.git','node_modules','stringify','.\x20Changes:\x20','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','MORPH_API_URL','\x27\x20in\x20`','[github_codebase_search]\x20Searching\x20','5hZTina','dirname','indexOf','github_codebase_search','<file\x20path=\x22','string','--help','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','801016xWHKvY','basename','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','trim','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','log','owner_repo','RipgrepError','lines','runWarpGrep_call','0.2.0','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','File\x20read\x20error:','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','edit_file','toLowerCase','number','SymlinkError','unknown','Preview\x20changes\x20without\x20applying\x20them.','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.','ReadError','isArray','composer.json','\x22>\x0a','morph-warp-grep-v2.1','files','stack','Specific\x20commit\x20hash\x20to\x20search','\x20for:\x20\x22','startsWith','1824725RWjwCW','metadata','ms:','includes','getClientCapabilities','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','readFile','Morph\x20Edit\x20Preview','\x0aExamples:','code_edit','`\x20in\x20`','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','substring','ms.\x20Success:\x20','optional','Max\x20results\x20to\x20return','\x0a</file>','[github_codebase_search]\x20Done\x20in\x20','data','env','pattern','assistant','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','linesRemoved','Error:\x20','tool_call_id','length','describe','--api-key','.\x20Path:\x20','floor','path','WarpGrepError','MORPH_WARP_GREP_TIMEOUT','.vscode','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','-\x20Grepped\x20\x27','PWD','Morph\x20FastApply\x20failed\x20without\x20error\x20message','ENOENT','package.json','homedir','read','7326342ViOHXp','now','array','requiresApiKey','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','min','RipgrepNotAvailable','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','text','406143pfbYOn','\x0a...\x20(truncated,\x20total:\x20','1747170RfiKCq','parse','-\x20Glob\x20search\x20`','constructor','safeParse','filter','linesAdded','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','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','https://morphllm.com/api/error-report','inputSchema','DISABLED_TOOLS','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','WORKSPACE_ROOT','codebase_search','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','command','--version','tool_calls','some','join','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','application/json','\x0aOptions:','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','@morphllm/morphmcp\x20','errors','api-key','instruction','Error\x20running\x20fast\x20context\x20search:\x20','catch','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','For\x20deletions:\x0a','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','arguments','messages','added\x20','dryRun','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','timed\x20out','GitHub\x20search\x20failed:\x20','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','completed_with_file_errors','normalize','setNotificationHandler','toISOString','completed','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','Created\x20File','\x20-\x20','message','sk-','Repository\x20identifier','push','\x20valid\x20directories','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','mcp-filesystem','oninitialized','user','source','FileNotFound','finish','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','github_url','match','Invalid\x20arguments:\x20','utf-8','terminationReason','search_string','pyproject.toml','content','ENABLE_WORKSPACE_MODE','sep','setRequestHandler','❌\x20Morph\x20Edit\x20Failed:\x20','3706566ADvmbn','branch','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.','UnknownError'];a0_0x4f06=function(){return _0xdd4995;};return a0_0x4f06();}const args=[];for(let i=0x0;i<cliArgs[a0_0x517431(0x26f)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x517431(0x217)](arg)||HELP_FLAGS[a0_0x517431(0x217)](arg))continue;if(arg[a0_0x517431(0x252)]('--api-key='))continue;if(arg===a0_0x517431(0x271)){i++;continue;}args[a0_0x517431(0x1c2)](arg);}const WORKSPACE_ROOT=process['env'][a0_0x517431(0x29b)]||process[a0_0x517431(0x268)][a0_0x517431(0x27c)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0x517431(0x268)][a0_0x517431(0x1d5)]!=='false',MORPH_API_KEY=getCliArg(a0_0x517431(0x2ab))??process[a0_0x517431(0x268)][a0_0x517431(0x215)],MORPH_API_URL=process[a0_0x517431(0x268)][a0_0x517431(0x228)],MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0x517431(0x276)]?parseInt(process[a0_0x517431(0x268)]['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x517431(0x242),a0_0x517431(0x29c),a0_0x517431(0x22e)]),DISABLED_TOOLS=process[a0_0x517431(0x268)][a0_0x517431(0x299)]?new Set(process['env'][a0_0x517431(0x299)][a0_0x517431(0x1e1)](',')[a0_0x517431(0x1e4)](_0x5cfb27=>_0x5cfb27[a0_0x517431(0x236)]())['filter'](_0x4feafe=>_0x4feafe['length']>0x0)):new Set();if(DISABLED_TOOLS[a0_0x517431(0x1e2)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES['has'](tool)&&console[a0_0x517431(0x1f2)](a0_0x517431(0x1cc)+tool+'\x22.\x20Known\x20tools:\x20'+[...KNOWN_TOOL_NAMES][a0_0x517431(0x2a2)](',\x20'));}console[a0_0x517431(0x1f2)](a0_0x517431(0x21e)+[...DISABLED_TOOLS][a0_0x517431(0x2a2)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x517431(0x252)](a0_0x517431(0x1c0))&&!MORPH_API_KEY[a0_0x517431(0x252)]('morph-')&&logMcpStderr(a0_0x517431(0x23e));async function reportMorphError(_0x1634db){const _0x1cb270=a0_0x517431;try{await a0_0xb8966d['post'](_0x1cb270(0x297),{..._0x1634db,'timestamp':new Date()[_0x1cb270(0x1ba)](),'source':_0x1634db[_0x1cb270(0x1c8)]||_0x1cb270(0x1c5),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x1634db['context']}},{'timeout':0x1388,'headers':{'Content-Type':_0x1cb270(0x2a4),'Authorization':'Bearer\x20'+MORPH_API_KEY}});}catch{}}args[a0_0x517431(0x26f)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x517431(0x258)),logMcpStderr(a0_0x517431(0x29a)),logMcpStderr(a0_0x517431(0x29d)),logMcpStderr(a0_0x517431(0x289)),logMcpStderr('\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)'),logMcpStderr('At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.'));function normalizePath(_0x5d6424){const _0x67ea3f=a0_0x517431;return a0_0x1019ba[_0x67ea3f(0x1b8)](_0x5d6424);}function expandHome(_0x40b358){const _0x227e1b=a0_0x517431;if(_0x40b358[_0x227e1b(0x252)]('~/')||_0x40b358==='~')return a0_0x1019ba[_0x227e1b(0x2a2)](a0_0x11aec8[_0x227e1b(0x280)](),_0x40b358[_0x227e1b(0x204)](0x1));return _0x40b358;}let allowedDirectories=await Promise[a0_0x517431(0x1f7)](args[a0_0x517431(0x1e4)](async _0x7631aa=>{const _0x50a23e=a0_0x517431,_0x37b82e=expandHome(_0x7631aa),_0x1a932a=a0_0x1019ba['resolve'](_0x37b82e);try{const _0x78129c=await a0_0x4f58e2[_0x50a23e(0x1f1)](_0x1a932a);return normalizePath(_0x78129c);}catch(_0x267fe4){return normalizePath(_0x1a932a);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x517431(0x26f)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x517431(0x1c2)](workspaceDir),logMcpStderr('Workspace\x20mode\x20enabled:\x20Using\x20'+workspaceDir+a0_0x517431(0x1fa)));}catch(a0_0x4e9400){logMcpStderr(a0_0x517431(0x23f)+a0_0x4e9400);}async function detectWorkspaceRoot(_0x4e88ef){const _0x281040=a0_0x517431;let _0x4ea693=a0_0x1019ba[_0x281040(0x218)](_0x4e88ef);const _0x6be93d=[_0x281040(0x223),_0x281040(0x277),_0x281040(0x27f),'Cargo.toml',_0x281040(0x1d3),'go.mod','.cursor','tsconfig.json',_0x281040(0x24b)];while(_0x4ea693!==a0_0x1019ba[_0x281040(0x22c)](_0x4ea693)){for(const _0x4a7041 of _0x6be93d){const _0x2f82fd=a0_0x1019ba[_0x281040(0x2a2)](_0x4ea693,_0x4a7041);try{return await a0_0x4f58e2['access'](_0x2f82fd),normalizePath(_0x4ea693);}catch{}}_0x4ea693=a0_0x1019ba[_0x281040(0x22c)](_0x4ea693);}return normalizePath(_0x4e88ef);}await Promise[a0_0x517431(0x1f7)](args[a0_0x517431(0x1e4)](async _0x10b2e8=>{const _0x4002f3=a0_0x517431;try{const _0x180010=await a0_0x4f58e2['stat'](expandHome(_0x10b2e8));!_0x180010['isDirectory']()&&(logMcpStderr(_0x4002f3(0x26d)+_0x10b2e8+'\x20is\x20not\x20a\x20directory'),process[_0x4002f3(0x1fb)](0x1));}catch(_0x5db157){logMcpStderr('Error\x20accessing\x20directory\x20'+_0x10b2e8+':',_0x5db157),process[_0x4002f3(0x1fb)](0x1);}}));async function validatePath(_0x4377f5){const _0x11fd15=a0_0x517431,_0x29ad20=expandHome(_0x4377f5),_0xf00789=a0_0x1019ba[_0x11fd15(0x218)](_0x29ad20);try{const _0x2cba5a=await a0_0x4f58e2[_0x11fd15(0x1f1)](_0xf00789);return _0x2cba5a;}catch(_0x4ca9d4){if(_0x4ca9d4['code']==='ENOENT'){const _0x12e76c=a0_0x1019ba[_0x11fd15(0x22c)](_0xf00789);try{const _0x293c87=await a0_0x4f58e2[_0x11fd15(0x1f1)](_0x12e76c);return a0_0x1019ba[_0x11fd15(0x2a2)](_0x293c87,a0_0x1019ba[_0x11fd15(0x234)](_0xf00789));}catch{throw new Error(_0x11fd15(0x200)+_0x12e76c);}}throw _0x4ca9d4;}}const MorphEditFileArgsSchema=z[a0_0x517431(0x213)]({'path':z['string'](),'code_edit':z[a0_0x517431(0x230)]()[a0_0x517431(0x270)](a0_0x517431(0x227)),'instruction':z[a0_0x517431(0x230)]()[a0_0x517431(0x270)](a0_0x517431(0x2b1)),'dryRun':z['boolean']()[a0_0x517431(0x221)](![])[a0_0x517431(0x270)](a0_0x517431(0x247))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x517431(0x1db),WarpGrepArgsSchema=z[a0_0x517431(0x213)]({'search_string':z[a0_0x517431(0x230)]()[a0_0x517431(0x270)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x517431(0x230)]()[a0_0x517431(0x270)](a0_0x517431(0x1e5)),'search_type':z[a0_0x517431(0x205)]([a0_0x517431(0x221),a0_0x517431(0x224)])['optional']()['describe'](a0_0x517431(0x208))}),WarpGrepGitHubArgsSchema=z[a0_0x517431(0x213)]({'search_string':z[a0_0x517431(0x230)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x517431(0x230)]()['optional']()['describe'](a0_0x517431(0x248)),'owner_repo':z['string']()['optional']()[a0_0x517431(0x270)](a0_0x517431(0x2b6)),'branch':z['string']()['optional']()[a0_0x517431(0x270)]('Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)')}),CodebaseSearchArgsSchema=z['object']({'query':z[a0_0x517431(0x230)]()[a0_0x517431(0x270)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x517431(0x230)]()[a0_0x517431(0x270)](a0_0x517431(0x1c1)),'branch':z[a0_0x517431(0x230)]()[a0_0x517431(0x263)]()['describe'](a0_0x517431(0x2a7)),'commitHash':z[a0_0x517431(0x230)]()[a0_0x517431(0x263)]()[a0_0x517431(0x270)](a0_0x517431(0x250)),'targetDirectories':z[a0_0x517431(0x284)](z[a0_0x517431(0x230)]())[a0_0x517431(0x221)]([])['describe'](a0_0x517431(0x2a8)),'limit':z[a0_0x517431(0x244)]()[a0_0x517431(0x263)]()[a0_0x517431(0x221)](0xa)['describe'](a0_0x517431(0x264))}),server=new Server({'name':a0_0x517431(0x214),'version':a0_0x517431(0x23d)},{'capabilities':{'tools':{}}});server[a0_0x517431(0x1d7)](ListToolsRequestSchema,async()=>{const _0x4d0bb3=a0_0x517431,_0x2dfdbf=[{'name':_0x4d0bb3(0x242),'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'+_0x4d0bb3(0x1f0)+_0x4d0bb3(0x286)+'Benefits:\x0a'+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x4d0bb3(0x2a6)+_0x4d0bb3(0x25f)+_0x4d0bb3(0x2af)+_0x4d0bb3(0x241)+_0x4d0bb3(0x216)+'Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a'+_0x4d0bb3(0x2b0)+'-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a'+'-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a'+'Rules:\x0a'+_0x4d0bb3(0x278)+_0x4d0bb3(0x2a3)+_0x4d0bb3(0x1c4)+_0x4d0bb3(0x1eb)+_0x4d0bb3(0x28a)+'-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a'+'IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x4d0bb3(0x29c),'description':_0x4d0bb3(0x296)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+'Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20'+_0x4d0bb3(0x235)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x20fd29=_0x2dfdbf[_0x4d0bb3(0x293)](_0xcfb21f=>{const _0x29f5be=_0x4d0bb3;if(DISABLED_TOOLS[_0x29f5be(0x217)](_0xcfb21f[_0x29f5be(0x207)]))return console[_0x29f5be(0x1f2)]('Tool\x20'+_0xcfb21f[_0x29f5be(0x207)]+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if(_0x29f5be(0x285)in _0xcfb21f&&_0xcfb21f[_0x29f5be(0x285)]&&!MORPH_API_KEY)return logMcpStderr(_0x29f5be(0x20d)+_0xcfb21f[_0x29f5be(0x207)]+_0x29f5be(0x27a)),![];return!![];});return{'tools':_0x20fd29[_0x4d0bb3(0x1e4)](_0x65fae6=>({'name':_0x65fae6[_0x4d0bb3(0x207)],'description':_0x65fae6[_0x4d0bb3(0x1f4)],'inputSchema':_0x65fae6[_0x4d0bb3(0x298)]}))};}),server['setRequestHandler'](CallToolRequestSchema,async _0x16e958=>{const _0x3d3da1=a0_0x517431,{name:_0x13cd10,arguments:_0x14ef62}=_0x16e958[_0x3d3da1(0x201)];try{if(DISABLED_TOOLS[_0x3d3da1(0x217)](_0x13cd10))throw new Error('Tool\x20\x22'+_0x13cd10+'\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable');switch(_0x13cd10){case _0x3d3da1(0x242):{const _0x5ebf17=_0x14ef62&&typeof _0x14ef62===_0x3d3da1(0x213)&&_0x3d3da1(0x21b)in _0x14ef62&&!('instruction'in _0x14ef62)?{..._0x14ef62,'instruction':_0x14ef62['instructions'],'instructions':undefined}:_0x14ef62,_0x5ba07c=MorphEditFileArgsSchema['safeParse'](_0x5ebf17);if(!_0x5ba07c[_0x3d3da1(0x220)])throw new Error(_0x3d3da1(0x1b6)+_0x5ba07c[_0x3d3da1(0x1f2)]);const _0x2cfa04=await validatePath(_0x5ba07c[_0x3d3da1(0x267)]['path']);let _0xaa0e6a=null,_0x8caf6f=!![],_0x31901c=null;try{_0xaa0e6a=await a0_0x4f58e2['readFile'](_0x2cfa04,_0x3d3da1(0x1d0));}catch(_0x8f7090){const _0x371720=_0x8f7090['code'];_0x371720===_0x3d3da1(0x27e)?(_0x8caf6f=![],_0xaa0e6a=''):(_0x31901c=_0x3d3da1(0x1ef)+(_0x371720||_0x3d3da1(0x246))+_0x3d3da1(0x1be)+(_0x8f7090 instanceof Error?_0x8f7090['message']:String(_0x8f7090)),logMcpStderr(_0x3d3da1(0x20d)+_0x31901c));}let _0x205ac6;try{const _0x1a0a3c=MORPH_API_KEY;if(!_0x1a0a3c)throw new Error(_0x3d3da1(0x1f3));const _0xf5078=a0_0x1019ba[_0x3d3da1(0x22c)](_0x2cfa04),_0x345064=a0_0x1019ba[_0x3d3da1(0x234)](_0x2cfa04),_0x1fbb72=await executeEditFile({'target_filepath':_0x345064,'code_edit':_0x5ba07c[_0x3d3da1(0x267)][_0x3d3da1(0x25c)],'instruction':_0x5ba07c['data'][_0x3d3da1(0x2ac)]},{'morphApiKey':_0x1a0a3c,'morphApiUrl':MORPH_API_URL,'baseDir':_0xf5078,'autoWrite':!_0x5ba07c[_0x3d3da1(0x267)][_0x3d3da1(0x2b5)],'generateUdiff':![],'debug':![]});_0x205ac6=_0x1fbb72[_0x3d3da1(0x1fc)];if(!_0x1fbb72[_0x3d3da1(0x220)])throw new Error(_0x1fbb72['error']||_0x3d3da1(0x27d));const _0x45b2e2=_0x1fbb72['changes'],_0x1d76f3=_0x3d3da1(0x2b4)+_0x45b2e2[_0x3d3da1(0x294)]+',\x20removed\x20'+_0x45b2e2[_0x3d3da1(0x26c)]+_0x3d3da1(0x1ed)+_0x45b2e2['linesModified'];if(_0x5ba07c['data'][_0x3d3da1(0x2b5)])return{'content':[{'type':_0x3d3da1(0x28b),'text':_0x3d3da1(0x25a)+(_0x8caf6f?'':_0x3d3da1(0x1de))+':\x20'+_0x5ba07c[_0x3d3da1(0x267)]['instruction']+_0x3d3da1(0x226)+_0x1d76f3+_0x3d3da1(0x272)+_0x5ba07c['data'][_0x3d3da1(0x274)]+'.'}]};return{'content':[{'type':_0x3d3da1(0x28b),'text':_0x3d3da1(0x211)+(_0x8caf6f?_0x3d3da1(0x212):_0x3d3da1(0x1bd))+':\x20'+_0x5ba07c['data']['instruction']+_0x3d3da1(0x226)+_0x1d76f3+_0x3d3da1(0x272)+_0x5ba07c['data']['path']+'.'}]};}catch(_0x2040c6){const _0x173ae2=_0x2040c6 instanceof Error?_0x2040c6[_0x3d3da1(0x1bf)]:String(_0x2040c6);return reportMorphError({'error_message':_0x173ae2,'error_type':_0x2040c6 instanceof Error?_0x2040c6[_0x3d3da1(0x291)][_0x3d3da1(0x207)]:_0x3d3da1(0x1dc),'context':{'tool':'edit_file','completion_id':_0x205ac6,'file_path':_0x5ba07c['data']['path'],'validated_path':_0x2cfa04,'instruction':_0x5ba07c['data'][_0x3d3da1(0x2ac)],'model':'morph-v3-fast','dry_run':_0x5ba07c[_0x3d3da1(0x267)][_0x3d3da1(0x2b5)],'file_exists':_0x8caf6f,'file_read_error':_0x31901c,'file_readable':_0xaa0e6a!==null,'request_content':{'path':_0x5ba07c[_0x3d3da1(0x267)][_0x3d3da1(0x274)],'code_edit':_0x5ba07c[_0x3d3da1(0x267)][_0x3d3da1(0x25c)],'instruction':_0x5ba07c[_0x3d3da1(0x267)][_0x3d3da1(0x2ac)],'original_code':_0xaa0e6a!==null?_0xaa0e6a[_0x3d3da1(0x26f)]>0xc350?_0xaa0e6a[_0x3d3da1(0x261)](0x0,0xc350)+_0x3d3da1(0x28d)+_0xaa0e6a[_0x3d3da1(0x26f)]+'\x20chars)':_0xaa0e6a:'[could\x20not\x20read\x20file:\x20'+(_0x31901c||'unknown\x20error')+']','original_code_length':_0xaa0e6a?.[_0x3d3da1(0x26f)]??0x0,'model':_0x3d3da1(0x20f),'dry_run':_0x5ba07c['data'][_0x3d3da1(0x2b5)]}},'stack_trace':_0x2040c6 instanceof Error?_0x2040c6['stack']:undefined,'source':_0x3d3da1(0x1c5)})[_0x3d3da1(0x2ae)](()=>{}),{'content':[{'type':'text','text':_0x3d3da1(0x1d8)+_0x173ae2}],'isError':!![]};}}case _0x3d3da1(0x29c):{const _0xfdba71=WarpGrepArgsSchema[_0x3d3da1(0x292)](_0x14ef62);if(!_0xfdba71['success'])return{'content':[{'type':_0x3d3da1(0x28b),'text':_0x3d3da1(0x1cf)+_0xfdba71['error']}],'isError':!![]};const _0x21a1b7=_0x122c7c=>{const _0x361312=_0x3d3da1,_0x558337=[];for(const _0x4ed5a1 of _0x122c7c||[]){if(_0x4ed5a1[_0x361312(0x1e3)]===_0x361312(0x26a)&&Array[_0x361312(0x24a)](_0x4ed5a1[_0x361312(0x2a0)]))for(const _0x28b25d of _0x4ed5a1[_0x361312(0x2a0)]){try{const _0x45b31d=_0x28b25d[_0x361312(0x21c)]?.[_0x361312(0x207)],_0x3d54db=JSON[_0x361312(0x28f)](_0x28b25d[_0x361312(0x21c)]?.[_0x361312(0x2b2)]||'{}');if(_0x45b31d===_0x361312(0x1ee))_0x558337['push']('grep\x20\x27'+_0x3d54db[_0x361312(0x269)]+'\x27\x20'+(_0x3d54db['path']||'.'));else{if(_0x45b31d==='read')_0x558337[_0x361312(0x1c2)]('read\x20'+_0x3d54db['path']);else{if(_0x45b31d===_0x361312(0x1e8))_0x558337[_0x361312(0x1c2)]('list_directory\x20'+(_0x3d54db[_0x361312(0x29e)]||'.'));else{if(_0x45b31d===_0x361312(0x20b))_0x558337['push']('glob\x20\x27'+_0x3d54db[_0x361312(0x269)]+'\x27\x20'+(_0x3d54db[_0x361312(0x274)]||'.'));else _0x45b31d===_0x361312(0x1ca)&&_0x558337[_0x361312(0x1c2)](_0x361312(0x1ca));}}}}catch{}}}return _0x558337;},_0x3699af=_0x58e025=>{const _0x6bc0ef=_0x3d3da1,_0x1843bf=[];if(!_0x58e025||!Array[_0x6bc0ef(0x24a)](_0x58e025))return _0x1843bf;const _0x1859a1=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x6bc0ef(0x1c9),'tool':_0x6bc0ef(0x281)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x6bc0ef(0x21a),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x6bc0ef(0x249),'tool':_0x6bc0ef(0x281)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x6bc0ef(0x1f6),'tool':_0x6bc0ef(0x281)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x6bc0ef(0x23a),'tool':'grep'},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x6bc0ef(0x288),'tool':_0x6bc0ef(0x1f8)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x6bc0ef(0x1f6),'tool':_0x6bc0ef(0x281)},{'pattern':/\[SYMLINK\]/,'error_type':_0x6bc0ef(0x245),'tool':_0x6bc0ef(0x281)},{'pattern':/not a text file/,'error_type':_0x6bc0ef(0x1f6),'tool':_0x6bc0ef(0x281)},{'pattern':/symbolic link/,'error_type':_0x6bc0ef(0x245),'tool':'read'},{'pattern':/Error reading file:/,'error_type':_0x6bc0ef(0x249),'tool':_0x6bc0ef(0x281)},{'pattern':/status="error"/,'error_type':'ToolException','tool':_0x6bc0ef(0x246)}];let _0x2573e0=0x0;for(const _0x27a8a8 of _0x58e025){_0x27a8a8['role']==='assistant'&&Array[_0x6bc0ef(0x24a)](_0x27a8a8[_0x6bc0ef(0x2a0)])&&_0x2573e0++;const _0x3d7fc1=_0x27a8a8[_0x6bc0ef(0x1d4)];if((_0x27a8a8[_0x6bc0ef(0x1e3)]===_0x6bc0ef(0x209)||_0x27a8a8[_0x6bc0ef(0x1e3)]===_0x6bc0ef(0x1c7))&&_0x3d7fc1&&typeof _0x3d7fc1==='string')for(const {pattern:_0x25876a,error_type:_0x230a05,tool:_0x1acac6}of _0x1859a1){const _0x5e12ad=_0x3d7fc1[_0x6bc0ef(0x1ce)](new RegExp(_0x25876a[_0x6bc0ef(0x1c8)],'g'));if(_0x5e12ad)for(const _0x1d53c6 of _0x5e12ad){const _0x583b23=_0x3d7fc1[_0x6bc0ef(0x22d)](_0x1d53c6),_0x420bac=_0x3d7fc1['substring'](_0x583b23,Math[_0x6bc0ef(0x287)](_0x583b23+0xc8,_0x3d7fc1[_0x6bc0ef(0x26f)]));_0x1843bf['push']({'tool':_0x1acac6,'error_type':_0x230a05,'error_message':_0x420bac[_0x6bc0ef(0x1e1)]('\x0a')[0x0],'turn':_0x2573e0});}}}return _0x1843bf;};try{const _0x1ed893=a0_0x1019ba['resolve'](_0xfdba71['data']['repo_path']),_0x1ec3f8=_0xfdba71[_0x3d3da1(0x267)][_0x3d3da1(0x206)],_0x588269=_0x1ec3f8===_0x3d3da1(0x224)?{'allowNames':['node_modules']}:undefined,_0x5fb040=new LocalRipgrepProvider(_0x1ed893,undefined,_0x588269),_0x224f6f=await runWarpGrep({'searchTerm':_0xfdba71[_0x3d3da1(0x267)]['search_string'],'repoRoot':_0x1ed893,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x5fb040,'search_type':_0x1ec3f8}),_0x1bb04b=_0x3699af(_0x224f6f[_0x3d3da1(0x2b3)]);_0x1bb04b[_0x3d3da1(0x26f)]>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x1bb04b['length']+'\x20error(s)','error_type':_0x3d3da1(0x1e9),'level':'warn','tool':_0x3d3da1(0x29c),'context':{'repo_path':_0xfdba71[_0x3d3da1(0x267)][_0x3d3da1(0x1e6)],'query':_0xfdba71['data'][_0x3d3da1(0x1d2)],'model':'morph-warp-grep-v2.1','termination_reason':_0x224f6f[_0x3d3da1(0x1d1)],'sub_tool_errors':_0x1bb04b,'timings':_0x224f6f[_0x3d3da1(0x1df)],'tool_calls':_0x21a1b7(_0x224f6f[_0x3d3da1(0x2b3)]),'messages':_0x224f6f['messages']?.['map'](_0x1885e5=>({'role':_0x1885e5[_0x3d3da1(0x1e3)],'content':_0x1885e5['content'],..._0x1885e5['tool_calls']?{'tool_calls':_0x1885e5[_0x3d3da1(0x2a0)][_0x3d3da1(0x26f)]}:{},..._0x1885e5[_0x3d3da1(0x26e)]?{'tool_call_id':_0x1885e5['tool_call_id']}:{}}))},'source':'mcp-filesystem'})[_0x3d3da1(0x2ae)](()=>{});let _0x2e13c8='';if(_0x224f6f[_0x3d3da1(0x1d1)]===_0x3d3da1(0x1bb)&&_0x224f6f[_0x3d3da1(0x1ca)]?.['metadata']?.['files']){const _0x4521ea=_0x224f6f[_0x3d3da1(0x1ca)][_0x3d3da1(0x254)][_0x3d3da1(0x24e)];if(_0x4521ea[_0x3d3da1(0x26f)]===0x0)return _0x2e13c8=_0x224f6f[_0x3d3da1(0x1ca)]['payload']||_0x3d3da1(0x210),{'content':[{'type':'text','text':_0x2e13c8}]};const _0xbc5746=[],_0x3a02aa=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x39876c of _0x224f6f[_0x3d3da1(0x2b3)]){if(_0x39876c[_0x3d3da1(0x1e3)]==='assistant'&&Array['isArray'](_0x39876c[_0x3d3da1(0x2a0)]))for(const _0x76b591 of _0x39876c['tool_calls']){try{const _0x357cf6=_0x76b591[_0x3d3da1(0x21c)]?.[_0x3d3da1(0x207)],_0x3fa033=JSON[_0x3d3da1(0x28f)](_0x76b591[_0x3d3da1(0x21c)]?.[_0x3d3da1(0x2b2)]||'{}');if(_0x357cf6===_0x3d3da1(0x1ee))_0x3a02aa[_0x3d3da1(0x1c2)](_0x3d3da1(0x27b)+_0x3fa033[_0x3d3da1(0x269)]+_0x3d3da1(0x229)+(_0x3fa033[_0x3d3da1(0x274)]||'.')+'`');else{if(_0x357cf6==='read')_0x3a02aa[_0x3d3da1(0x1c2)](_0x3d3da1(0x20a)+_0x3fa033['path']+'`');else{if(_0x357cf6===_0x3d3da1(0x1e8))_0x3a02aa[_0x3d3da1(0x1c2)](_0x3d3da1(0x1dd)+(_0x3fa033[_0x3d3da1(0x29e)]||'.')+'`');else _0x357cf6===_0x3d3da1(0x20b)&&_0x3a02aa[_0x3d3da1(0x1c2)](_0x3d3da1(0x290)+_0x3fa033[_0x3d3da1(0x269)]+_0x3d3da1(0x25d)+(_0x3fa033[_0x3d3da1(0x274)]||'.')+'`');}}}catch{}}}_0xbc5746['push'](_0x3a02aa['join']('\x0a'));const _0x594b88=['','Relevant\x20context\x20found:'];for(const _0x3a7405 of _0x4521ea){if(_0x3a7405[_0x3d3da1(0x23b)]==='*')_0x594b88['push']('-\x20'+_0x3a7405['path']+':*');else{if(Array[_0x3d3da1(0x24a)](_0x3a7405[_0x3d3da1(0x23b)])){const _0xa541a3=_0x3a7405['lines'][_0x3d3da1(0x1e4)](([_0x937a8f,_0x205f3f])=>{if(_0x937a8f===_0x205f3f)return''+_0x937a8f;return _0x937a8f+'-'+_0x205f3f;});_0x594b88[_0x3d3da1(0x1c2)]('-\x20'+_0x3a7405[_0x3d3da1(0x274)]+':'+_0xa541a3[_0x3d3da1(0x2a2)](','));}else _0x594b88[_0x3d3da1(0x1c2)]('-\x20'+_0x3a7405[_0x3d3da1(0x274)]+':*');}}_0x594b88[_0x3d3da1(0x1c2)](''),_0xbc5746[_0x3d3da1(0x1c2)](_0x594b88['join']('\x0a')),_0xbc5746['push'](_0x3d3da1(0x1e7));const _0x1adb7e=[],_0x4dbdaa=[];for(const _0x4a57eb of _0x4521ea){let _0x2242ec=a0_0x1019ba[_0x3d3da1(0x218)](_0xfdba71[_0x3d3da1(0x267)][_0x3d3da1(0x1e6)],_0x4a57eb['path']),_0x3a369a=null,_0x419175=null;try{_0x3a369a=await a0_0x4f58e2[_0x3d3da1(0x259)](_0x2242ec,{'encoding':_0x3d3da1(0x1d0)});}catch(_0x56440f){const _0x6ab03b=fixPathRepetition(_0x2242ec);if(_0x6ab03b)try{_0x3a369a=await a0_0x4f58e2['readFile'](_0x6ab03b,{'encoding':'utf-8'}),_0x2242ec=_0x6ab03b;}catch{_0x419175=_0x56440f instanceof Error?_0x56440f:new Error(String(_0x56440f));}else _0x419175=_0x56440f instanceof Error?_0x56440f:new Error(String(_0x56440f));}if(_0x3a369a!==null){const _0x464143=_0x3a369a['split'](/\r?\n/),_0x4e3159=[];if(_0x4a57eb[_0x3d3da1(0x23b)]==='*'||!Array[_0x3d3da1(0x24a)](_0x4a57eb[_0x3d3da1(0x23b)]))for(let _0x4b66de=0x1;_0x4b66de<=_0x464143[_0x3d3da1(0x26f)];_0x4b66de++){const _0x219d8e=_0x464143[_0x4b66de-0x1];_0x4e3159['push'](_0x4b66de+'|\x20'+_0x219d8e);}else for(const [_0x5883e1,_0x29b82a]of _0x4a57eb[_0x3d3da1(0x23b)]){_0x4e3159[_0x3d3da1(0x26f)]>0x0&&_0x4e3159['push']('');for(let _0x18446f=_0x5883e1;_0x18446f<=_0x29b82a&&_0x18446f<=_0x464143['length'];_0x18446f++){const _0x334a0a=_0x464143[_0x18446f-0x1];_0x4e3159['push'](_0x18446f+'|\x20'+_0x334a0a);}}_0x4dbdaa[_0x3d3da1(0x1c2)]({'path':_0x4a57eb[_0x3d3da1(0x274)],'content':_0x4e3159['join']('\x0a')});}else _0x1adb7e['push'](_0x3d3da1(0x22f)+_0x4a57eb[_0x3d3da1(0x274)]+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x419175?.[_0x3d3da1(0x1bf)]||_0x3d3da1(0x1ff))+_0x3d3da1(0x265));}try{const _0x36713b=await compactFileContexts(_0x4dbdaa,_0xfdba71['data'][_0x3d3da1(0x1d2)],MORPH_API_KEY,MORPH_API_URL);for(const _0x390559 of _0x36713b){_0x1adb7e[_0x3d3da1(0x1c2)](_0x3d3da1(0x22f)+_0x390559[_0x3d3da1(0x274)]+'\x22>\x0a'+_0x390559['content']+_0x3d3da1(0x265));}}catch(_0x54f7bd){console[_0x3d3da1(0x1f2)](_0x3d3da1(0x1fe),_0x54f7bd);for(const _0x4af8ba of _0x4dbdaa){_0x1adb7e[_0x3d3da1(0x1c2)](_0x3d3da1(0x22f)+_0x4af8ba[_0x3d3da1(0x274)]+_0x3d3da1(0x24c)+_0x4af8ba[_0x3d3da1(0x1d4)]+'\x0a</file>');}}_0xbc5746[_0x3d3da1(0x1c2)](_0x1adb7e[_0x3d3da1(0x2a2)]('\x0a\x0a')),_0x2e13c8=_0xbc5746['join']('\x0a');const _0xed6de3=_0x224f6f[_0x3d3da1(0x2aa)]?.[_0x3d3da1(0x293)](_0x51f90c=>_0x51f90c[_0x3d3da1(0x1bf)]?.[_0x3d3da1(0x252)](_0x3d3da1(0x240)))||[];if(_0xed6de3[_0x3d3da1(0x26f)]>0x0){const _0x219d12=_0xed6de3[_0x3d3da1(0x1e4)](_0x319dc7=>_0x319dc7[_0x3d3da1(0x1bf)])[_0x3d3da1(0x2a2)](';\x20');reportMorphError({'error_message':_0x219d12,'error_type':'FileReadError','context':{'tool':_0x3d3da1(0x29c),'repo_path':_0xfdba71[_0x3d3da1(0x267)][_0x3d3da1(0x1e6)],'query':_0xfdba71[_0x3d3da1(0x267)][_0x3d3da1(0x1d2)],'model':_0x3d3da1(0x24d),'termination_reason':_0x3d3da1(0x1b7),'error_count':_0xed6de3['length'],'is_timeout':![],'timings':_0x224f6f[_0x3d3da1(0x1df)],'files_attempted':_0x4521ea['map'](_0x5c96cd=>({'path':_0x5c96cd[_0x3d3da1(0x274)],'lines':_0x5c96cd[_0x3d3da1(0x23b)]})),'tool_calls':_0x21a1b7(_0x224f6f[_0x3d3da1(0x2b3)]),'messages':_0x224f6f[_0x3d3da1(0x2b3)]?.[_0x3d3da1(0x1e4)](_0x3e6dfc=>({'role':_0x3e6dfc[_0x3d3da1(0x1e3)],'content':_0x3e6dfc[_0x3d3da1(0x1d4)],..._0x3e6dfc[_0x3d3da1(0x2a0)]?{'tool_calls':_0x3e6dfc['tool_calls'][_0x3d3da1(0x26f)]}:{},..._0x3e6dfc[_0x3d3da1(0x26e)]?{'tool_call_id':_0x3e6dfc[_0x3d3da1(0x26e)]}:{}})),'request_content':{'query':_0xfdba71[_0x3d3da1(0x267)][_0x3d3da1(0x1d2)],'repo_path':_0xfdba71[_0x3d3da1(0x267)][_0x3d3da1(0x1e6)],'repoRoot':a0_0x1019ba['resolve'](_0xfdba71[_0x3d3da1(0x267)]['repo_path']),'model':_0x3d3da1(0x24d)}},'source':'mcp-filesystem'})[_0x3d3da1(0x2ae)](()=>{});}}else{if(_0x224f6f['terminationReason']===_0x3d3da1(0x1e0)&&_0x224f6f[_0x3d3da1(0x2aa)][_0x3d3da1(0x26f)]>0x0){const _0x3fbe27=_0x224f6f[_0x3d3da1(0x2aa)][_0x3d3da1(0x1e4)](_0x24c4b9=>_0x24c4b9[_0x3d3da1(0x1bf)])[_0x3d3da1(0x2a2)](';\x20');_0x2e13c8=_0x3d3da1(0x26d)+_0x3fbe27;const _0x6ad26d=_0x3fbe27[_0x3d3da1(0x243)]()[_0x3d3da1(0x256)](_0x3d3da1(0x1f9))||_0x3fbe27[_0x3d3da1(0x243)]()[_0x3d3da1(0x256)](_0x3d3da1(0x2b7))||_0x3fbe27[_0x3d3da1(0x243)]()[_0x3d3da1(0x256)]('etimedout'),_0x421acf=_0x224f6f['finish']?.['metadata']?.['files'],_0x9c535e=_0x224f6f[_0x3d3da1(0x2aa)][0x0];reportMorphError({'error_message':_0x3fbe27,'error_type':_0x6ad26d?_0x3d3da1(0x1fd):_0x9c535e?.[_0x3d3da1(0x291)]?.[_0x3d3da1(0x207)]||_0x3d3da1(0x275),'context':{'tool':_0x3d3da1(0x29c),'repo_path':_0xfdba71['data']['repo_path'],'query':_0xfdba71['data'][_0x3d3da1(0x1d2)],'model':_0x3d3da1(0x24d),'termination_reason':_0x224f6f[_0x3d3da1(0x1d1)],'error_count':_0x224f6f[_0x3d3da1(0x2aa)][_0x3d3da1(0x26f)],'is_timeout':_0x6ad26d,'timings':_0x224f6f[_0x3d3da1(0x1df)],'files_attempted':_0x421acf?.[_0x3d3da1(0x1e4)](_0x30144f=>({'path':_0x30144f['path'],'lines':_0x30144f[_0x3d3da1(0x23b)]})),'tool_calls':_0x21a1b7(_0x224f6f[_0x3d3da1(0x2b3)]),'messages':_0x224f6f['messages']?.[_0x3d3da1(0x1e4)](_0x151ba1=>({'role':_0x151ba1[_0x3d3da1(0x1e3)],'content':_0x151ba1['content'],..._0x151ba1['tool_calls']?{'tool_calls':_0x151ba1[_0x3d3da1(0x2a0)][_0x3d3da1(0x26f)]}:{},..._0x151ba1['tool_call_id']?{'tool_call_id':_0x151ba1[_0x3d3da1(0x26e)]}:{}})),'request_content':{'query':_0xfdba71[_0x3d3da1(0x267)]['search_string'],'repo_path':_0xfdba71['data'][_0x3d3da1(0x1e6)],'repoRoot':a0_0x1019ba[_0x3d3da1(0x218)](_0xfdba71[_0x3d3da1(0x267)][_0x3d3da1(0x1e6)]),'model':_0x3d3da1(0x24d)}},'stack_trace':_0x9c535e?.[_0x3d3da1(0x24f)]||undefined,'source':_0x3d3da1(0x1c5)})[_0x3d3da1(0x2ae)](()=>{});}else _0x2e13c8=_0x3d3da1(0x25e);}return{'content':[{'type':_0x3d3da1(0x28b),'text':_0x2e13c8}]};}catch(_0x3cd5e9){const _0x1ad27d=_0x3cd5e9 instanceof Error?_0x3cd5e9[_0x3d3da1(0x1bf)]:String(_0x3cd5e9),_0x49c39a=_0x1ad27d[_0x3d3da1(0x243)]()['includes'](_0x3d3da1(0x1f9))||_0x1ad27d[_0x3d3da1(0x243)]()[_0x3d3da1(0x256)]('timed\x20out')||_0x1ad27d[_0x3d3da1(0x243)]()[_0x3d3da1(0x256)](_0x3d3da1(0x202))||_0x3cd5e9 instanceof Error&&_0x3cd5e9[_0x3d3da1(0x207)]===_0x3d3da1(0x1fd);return reportMorphError({'error_message':_0x1ad27d,'error_type':_0x49c39a?'TimeoutError':_0x3cd5e9 instanceof Error?_0x3cd5e9[_0x3d3da1(0x291)][_0x3d3da1(0x207)]:_0x3d3da1(0x1dc),'context':{'tool':'codebase_search','repo_path':_0xfdba71[_0x3d3da1(0x267)]['repo_path'],'query':_0xfdba71[_0x3d3da1(0x267)][_0x3d3da1(0x1d2)],'model':_0x3d3da1(0x24d),'is_timeout':_0x49c39a,'exception_phase':_0x3d3da1(0x23c),'request_content':{'query':_0xfdba71[_0x3d3da1(0x267)][_0x3d3da1(0x1d2)],'repo_path':_0xfdba71[_0x3d3da1(0x267)][_0x3d3da1(0x1e6)],'repoRoot':a0_0x1019ba[_0x3d3da1(0x218)](_0xfdba71[_0x3d3da1(0x267)][_0x3d3da1(0x1e6)]),'model':_0x3d3da1(0x24d)}},'stack_trace':_0x3cd5e9 instanceof Error?_0x3cd5e9[_0x3d3da1(0x24f)]:undefined,'source':_0x3d3da1(0x1c5)})['catch'](()=>{}),{'content':[{'type':'text','text':_0x3d3da1(0x2ad)+_0x1ad27d}],'isError':![]};}}case _0x3d3da1(0x22e):{const _0x3a4692=WarpGrepGitHubArgsSchema['safeParse'](_0x14ef62);if(!_0x3a4692[_0x3d3da1(0x220)])return{'content':[{'type':_0x3d3da1(0x28b),'text':'Invalid\x20arguments:\x20'+_0x3a4692[_0x3d3da1(0x1f2)]}],'isError':!![]};const _0x46b66c=_0x3a4692[_0x3d3da1(0x267)][_0x3d3da1(0x1cd)]||_0x3a4692['data'][_0x3d3da1(0x239)];if(!_0x46b66c)return{'content':[{'type':_0x3d3da1(0x28b),'text':_0x3d3da1(0x279)}],'isError':!![]};const _0x5fe8b4=MORPH_API_KEY;if(!_0x5fe8b4)throw new Error(_0x3d3da1(0x1f3));const _0x3d494b=Date[_0x3d3da1(0x283)]();logMcpStderr(_0x3d3da1(0x22a)+_0x46b66c+_0x3d3da1(0x251)+_0x3a4692['data']['search_string']+'\x22');try{const _0x4186d7=new WarpGrepClient({'morphApiKey':_0x5fe8b4,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x2c45fe=await _0x4186d7['searchGitHub']({'searchTerm':_0x3a4692[_0x3d3da1(0x267)][_0x3d3da1(0x1d2)],'github':_0x46b66c,'branch':_0x3a4692['data'][_0x3d3da1(0x1da)]}),_0x5ac616=Date[_0x3d3da1(0x283)]()-_0x3d494b;logMcpStderr(_0x3d3da1(0x266)+_0x5ac616+_0x3d3da1(0x262)+_0x2c45fe[_0x3d3da1(0x220)]);const _0x3dba99=formatResult(_0x2c45fe);return{'content':[{'type':_0x3d3da1(0x28b),'text':_0x3dba99}]};}catch(_0x15c44c){const _0x443bb3=Date['now']()-_0x3d494b,_0x1efb14=_0x15c44c instanceof Error?_0x15c44c[_0x3d3da1(0x1bf)]:String(_0x15c44c);return logMcpStderr('[github_codebase_search]\x20Failed\x20in\x20'+_0x443bb3+_0x3d3da1(0x255),_0x1efb14),reportMorphError({'error_message':_0x1efb14,'error_type':_0x15c44c instanceof Error?_0x15c44c[_0x3d3da1(0x291)][_0x3d3da1(0x207)]:_0x3d3da1(0x1dc),'context':{'tool':_0x3d3da1(0x22e),'github_url':_0x46b66c,'search_string':_0x3a4692['data'][_0x3d3da1(0x1d2)],'branch':_0x3a4692[_0x3d3da1(0x267)][_0x3d3da1(0x1da)]},'stack_trace':_0x15c44c instanceof Error?_0x15c44c[_0x3d3da1(0x24f)]:undefined,'source':'mcp-filesystem','tool':_0x3d3da1(0x22e),'latency_ms':_0x443bb3})[_0x3d3da1(0x2ae)](()=>{}),{'content':[{'type':_0x3d3da1(0x28b),'text':_0x3d3da1(0x1b4)+_0x1efb14}],'isError':![]};}}default:throw new Error('Unknown\x20tool:\x20'+_0x13cd10);}}catch(_0x56e06f){const _0x2a1f04=_0x56e06f instanceof Error?_0x56e06f[_0x3d3da1(0x1bf)]:String(_0x56e06f);return reportMorphError({'error_message':_0x2a1f04,'error_type':_0x56e06f instanceof Error?_0x56e06f[_0x3d3da1(0x291)][_0x3d3da1(0x207)]:'UnknownError','context':{'tool':_0x13cd10,'arguments':_0x14ef62?JSON[_0x3d3da1(0x225)](_0x14ef62)[_0x3d3da1(0x261)](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x56e06f instanceof Error?_0x56e06f[_0x3d3da1(0x24f)]:undefined,'source':'mcp-filesystem'})['catch'](()=>{}),{'content':[{'type':_0x3d3da1(0x28b),'text':'Error:\x20'+_0x2a1f04}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x2ad4c0){const _0x3794e5=a0_0x517431,_0x48877f=await getValidRootDirectories(_0x2ad4c0);if(_0x48877f[_0x3794e5(0x26f)]>0x0)allowedDirectories=[..._0x48877f],logMcpStderr(_0x3794e5(0x237)+_0x48877f['length']+_0x3794e5(0x1c3));else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x59f76a=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x59f76a&&(allowedDirectories=[_0x59f76a],logMcpStderr(_0x3794e5(0x21f)+_0x59f76a));}catch(_0x4c87e1){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x4c87e1);}}}server[a0_0x517431(0x1b9)](RootsListChangedNotificationSchema,async()=>{const _0x3106ae=a0_0x517431;try{const _0x6bd4a4=await server[_0x3106ae(0x1ea)]();_0x6bd4a4&&_0x3106ae(0x203)in _0x6bd4a4&&await updateAllowedDirectoriesFromRoots(_0x6bd4a4[_0x3106ae(0x203)]);}catch(_0xaa184b){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0xaa184b instanceof Error?_0xaa184b[_0x3106ae(0x1bf)]:String(_0xaa184b));}}),server[a0_0x517431(0x1c6)]=async()=>{const _0x433a3c=a0_0x517431,_0x404264=server[_0x433a3c(0x257)]();if(_0x404264?.[_0x433a3c(0x203)])try{const _0x504160=await server[_0x433a3c(0x1ea)]();_0x504160&&_0x433a3c(0x203)in _0x504160?await updateAllowedDirectoriesFromRoots(_0x504160['roots']):logMcpStderr(_0x433a3c(0x26b));}catch(_0x2021e6){logMcpStderr(_0x433a3c(0x1b5),_0x2021e6 instanceof Error?_0x2021e6[_0x433a3c(0x1bf)]:String(_0x2021e6));}else{if(allowedDirectories[_0x433a3c(0x26f)]>0x0)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:',allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x433a3c(0x295));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 _0x3e5982=a0_0x517431,_0x3aa490=new StdioServerTransport();await server[_0x3e5982(0x222)](_0x3aa490),logMcpStderr(_0x3e5982(0x260)),allowedDirectories[_0x3e5982(0x26f)]===0x0&&logMcpStderr(_0x3e5982(0x1ec));}runServer()[a0_0x517431(0x2ae)](_0x23518d=>{const _0x2d2fcb=a0_0x517431;logMcpStderr('Fatal\x20error\x20running\x20server:',_0x23518d),process[_0x2d2fcb(0x1fb)](0x1);});
package/dist/log-utils.js CHANGED
@@ -1 +1 @@
1
- var a1_0x32716a=a1_0x209d;function a1_0x5c00(){var _0x1b976d=['linux','1170801xBtSqT','darwin','[os=','7RrYfSs','macOS','Windows','1680932YJTUGM','8fZRJdZ','1369749YSylby','error','641449zbbYIC','3478015vmWWOF','1051164rEuRkg','3778524iieqIN','platform','Unknown'];a1_0x5c00=function(){return _0x1b976d;};return a1_0x5c00();}(function(_0x572d67,_0x132849){var _0x38479e=a1_0x209d,_0x505ffa=_0x572d67();while(!![]){try{var _0x101149=parseInt(_0x38479e(0x1b7))/0x1+parseInt(_0x38479e(0x1b9))/0x2+-parseInt(_0x38479e(0x1b5))/0x3+-parseInt(_0x38479e(0x1b3))/0x4+-parseInt(_0x38479e(0x1b8))/0x5+-parseInt(_0x38479e(0x1ba))/0x6*(-parseInt(_0x38479e(0x1b0))/0x7)+-parseInt(_0x38479e(0x1b4))/0x8*(-parseInt(_0x38479e(0x1ad))/0x9);if(_0x101149===_0x132849)break;else _0x505ffa['push'](_0x505ffa['shift']());}catch(_0x332d11){_0x505ffa['push'](_0x505ffa['shift']());}}}(a1_0x5c00,0x56897));import a1_0x3f6b27 from'os';export function getOperatingSystemType(_0x3029ab=a1_0x3f6b27[a1_0x32716a(0x1bb)]()){var _0x138f40=a1_0x32716a;switch(_0x3029ab){case _0x138f40(0x1ae):return _0x138f40(0x1b1);case'win32':return _0x138f40(0x1b2);case _0x138f40(0x1ac):return'Linux';default:return _0x138f40(0x1ab);}}function a1_0x209d(_0x18c1c0,_0x2e71b4){_0x18c1c0=_0x18c1c0-0x1ab;var _0x5c00f5=a1_0x5c00();var _0x209dde=_0x5c00f5[_0x18c1c0];return _0x209dde;}export function formatMcpLogMessage(_0x1c1361,_0x21a798=a1_0x3f6b27['platform']()){var _0x116a88=a1_0x32716a;return _0x116a88(0x1af)+getOperatingSystemType(_0x21a798)+']\x20'+_0x1c1361;}export function logMcpStderr(_0x2ed1b1,..._0x4e19bd){var _0x4daa1f=a1_0x32716a;console[_0x4daa1f(0x1b6)](formatMcpLogMessage(_0x2ed1b1),..._0x4e19bd);}
1
+ var a1_0x39bd60=a1_0x2069;(function(_0x43b83f,_0x55c28e){var _0x41bcfe=a1_0x2069,_0x525c05=_0x43b83f();while(!![]){try{var _0x10fea0=-parseInt(_0x41bcfe(0x1c3))/0x1+parseInt(_0x41bcfe(0x1b8))/0x2+parseInt(_0x41bcfe(0x1bf))/0x3+-parseInt(_0x41bcfe(0x1b6))/0x4*(-parseInt(_0x41bcfe(0x1b4))/0x5)+parseInt(_0x41bcfe(0x1b9))/0x6*(parseInt(_0x41bcfe(0x1c4))/0x7)+-parseInt(_0x41bcfe(0x1c5))/0x8+-parseInt(_0x41bcfe(0x1b7))/0x9*(-parseInt(_0x41bcfe(0x1bd))/0xa);if(_0x10fea0===_0x55c28e)break;else _0x525c05['push'](_0x525c05['shift']());}catch(_0x248e1a){_0x525c05['push'](_0x525c05['shift']());}}}(a1_0x4623,0xcbec2));import a1_0x144e61 from'os';function a1_0x4623(){var _0x32e009=['3298385GngYKh','Windows','4bAeMZh','403209Zkzxfq','1807968BjeGAz','906kfOZNj','[os=','Linux','macOS','50JzQGQj','platform','938634RDGIaY','darwin','linux','win32','895743uQxGFN','25879NRgbMQ','7422256jhtPlG'];a1_0x4623=function(){return _0x32e009;};return a1_0x4623();}export function getOperatingSystemType(_0x250322=a1_0x144e61[a1_0x39bd60(0x1be)]()){var _0x2accd9=a1_0x39bd60;switch(_0x250322){case _0x2accd9(0x1c0):return _0x2accd9(0x1bc);case _0x2accd9(0x1c2):return _0x2accd9(0x1b5);case _0x2accd9(0x1c1):return _0x2accd9(0x1bb);default:return'Unknown';}}function a1_0x2069(_0x19edda,_0xd8023b){_0x19edda=_0x19edda-0x1b4;var _0x4623d7=a1_0x4623();var _0x2069c5=_0x4623d7[_0x19edda];return _0x2069c5;}export function formatMcpLogMessage(_0xf8a175,_0x5c027b=a1_0x144e61[a1_0x39bd60(0x1be)]()){var _0x36bcf8=a1_0x39bd60;return _0x36bcf8(0x1ba)+getOperatingSystemType(_0x5c027b)+']\x20'+_0xf8a175;}export function logMcpStderr(_0x1b1a34,..._0xfda2b9){console['error'](formatMcpLogMessage(_0x1b1a34),..._0xfda2b9);}
@@ -1 +1 @@
1
- (function(_0x3db51b,_0x481cb9){const _0xa93a1b=a2_0x21d9,_0x477c11=_0x3db51b();while(!![]){try{const _0x48dd21=parseInt(_0xa93a1b(0xe3))/0x1*(parseInt(_0xa93a1b(0xe8))/0x2)+-parseInt(_0xa93a1b(0xe6))/0x3*(parseInt(_0xa93a1b(0xea))/0x4)+-parseInt(_0xa93a1b(0xef))/0x5*(parseInt(_0xa93a1b(0xed))/0x6)+parseInt(_0xa93a1b(0xe5))/0x7+-parseInt(_0xa93a1b(0xe2))/0x8+-parseInt(_0xa93a1b(0xde))/0x9+parseInt(_0xa93a1b(0xdd))/0xa;if(_0x48dd21===_0x481cb9)break;else _0x477c11['push'](_0x477c11['shift']());}catch(_0x21f716){_0x477c11['push'](_0x477c11['shift']());}}}(a2_0x8f09,0x864f6));import a2_0x181cd1 from'path';import a2_0x4e86a1 from'os';function a2_0x21d9(_0x461069,_0x23bb36){_0x461069=_0x461069-0xdd;const _0x8f09e6=a2_0x8f09();let _0x21d9d5=_0x8f09e6[_0x461069];return _0x21d9d5;}export function convertToWindowsPath(_0x31d808){const _0x5a83c4=a2_0x21d9;if(_0x31d808[_0x5a83c4(0xdf)](_0x5a83c4(0xe1))){const _0xd53c89=_0x31d808[_0x5a83c4(0xe4)](0x5)[_0x5a83c4(0xe7)](),_0x2857c3=_0x31d808[_0x5a83c4(0xeb)](0x6)[_0x5a83c4(0xe0)](/\//g,'\x5c');return _0xd53c89+':'+_0x2857c3;}if(_0x31d808[_0x5a83c4(0xf0)](/^\/[a-zA-Z]\//)){const _0xd68b40=_0x31d808[_0x5a83c4(0xe4)](0x1)['toUpperCase'](),_0x2d8734=_0x31d808['slice'](0x2)[_0x5a83c4(0xe0)](/\//g,'\x5c');return _0xd68b40+':'+_0x2d8734;}if(_0x31d808['match'](/^[a-zA-Z]:/))return _0x31d808['replace'](/\//g,'\x5c');return _0x31d808;}export function normalizePath(_0xd7dd43){const _0x2b76f5=a2_0x21d9;_0xd7dd43=_0xd7dd43['trim']()[_0x2b76f5(0xe0)](/^["']|["']$/g,'');const _0x3ebd48=_0xd7dd43['startsWith']('/')&&!_0xd7dd43[_0x2b76f5(0xf0)](/^\/mnt\/[a-z]\//i)&&!_0xd7dd43[_0x2b76f5(0xf0)](/^\/[a-zA-Z]\//);if(_0x3ebd48)return _0xd7dd43['replace'](/\/+/g,'/')[_0x2b76f5(0xe0)](/\/+$/,'');_0xd7dd43=convertToWindowsPath(_0xd7dd43);if(_0xd7dd43[_0x2b76f5(0xdf)]('\x5c\x5c')){let _0x9c95d6=_0xd7dd43;_0x9c95d6=_0x9c95d6['replace'](/^\\{2,}/,'\x5c\x5c');const _0xeaaaea=_0x9c95d6['substring'](0x2)[_0x2b76f5(0xe0)](/\\\\/g,'\x5c');_0xd7dd43='\x5c\x5c'+_0xeaaaea;}else _0xd7dd43=_0xd7dd43['replace'](/\\\\/g,'\x5c');let _0x25318f=a2_0x181cd1[_0x2b76f5(0xec)](_0xd7dd43);_0xd7dd43[_0x2b76f5(0xdf)]('\x5c\x5c')&&!_0x25318f['startsWith']('\x5c\x5c')&&(_0x25318f='\x5c'+_0x25318f);if(_0x25318f[_0x2b76f5(0xf0)](/^[a-zA-Z]:/)){let _0x4ea000=_0x25318f[_0x2b76f5(0xe0)](/\//g,'\x5c');return/^[a-z]:/[_0x2b76f5(0xe9)](_0x4ea000)&&(_0x4ea000=_0x4ea000[_0x2b76f5(0xe4)](0x0)[_0x2b76f5(0xe7)]()+_0x4ea000[_0x2b76f5(0xeb)](0x1)),_0x4ea000;}return _0x25318f[_0x2b76f5(0xe0)](/\//g,'\x5c');}function a2_0x8f09(){const _0x3d8e7b=['5AKHafa','match','16484860FfXuMC','5950980JrDxRL','startsWith','replace','/mnt/','6574824FPWMEs','389gfBTqy','charAt','6890114IJTnZw','189843IImhzF','toUpperCase','4402ssrAKC','test','44ssmHMO','slice','normalize','4558074lmMEgF','join'];a2_0x8f09=function(){return _0x3d8e7b;};return a2_0x8f09();}export function expandHome(_0x17267d){const _0x504266=a2_0x21d9;if(_0x17267d[_0x504266(0xdf)]('~/')||_0x17267d==='~')return a2_0x181cd1[_0x504266(0xee)](a2_0x4e86a1['homedir'](),_0x17267d[_0x504266(0xeb)](0x1));return _0x17267d;}
1
+ (function(_0x463d7e,_0x5b3800){const _0x53a037=a2_0x5047,_0x13e8f3=_0x463d7e();while(!![]){try{const _0x16125b=parseInt(_0x53a037(0x1fa))/0x1+parseInt(_0x53a037(0x1f9))/0x2+parseInt(_0x53a037(0x1ed))/0x3+parseInt(_0x53a037(0x1f3))/0x4+-parseInt(_0x53a037(0x1ef))/0x5+parseInt(_0x53a037(0x1f1))/0x6+-parseInt(_0x53a037(0x1f5))/0x7;if(_0x16125b===_0x5b3800)break;else _0x13e8f3['push'](_0x13e8f3['shift']());}catch(_0x55f218){_0x13e8f3['push'](_0x13e8f3['shift']());}}}(a2_0x2880,0x4cc40));import a2_0xf36f25 from'path';function a2_0x5047(_0x3b1e2b,_0x1272ee){_0x3b1e2b=_0x3b1e2b-0x1e9;const _0x288076=a2_0x2880();let _0x50476e=_0x288076[_0x3b1e2b];return _0x50476e;}function a2_0x2880(){const _0x32c340=['test','4313617xjAbcp','charAt','trim','substring','481094pulALC','274396iBZdDY','join','replace','match','normalize','toUpperCase','97119CRzUkT','homedir','2296500WtZZGB','startsWith','1750836vVsBZo','slice','2203364AVFnuY'];a2_0x2880=function(){return _0x32c340;};return a2_0x2880();}import a2_0xd32699 from'os';export function convertToWindowsPath(_0x4828e3){const _0x48334f=a2_0x5047;if(_0x4828e3[_0x48334f(0x1f0)]('/mnt/')){const _0x37b78e=_0x4828e3[_0x48334f(0x1f6)](0x5)[_0x48334f(0x1ec)](),_0x3ede03=_0x4828e3[_0x48334f(0x1f2)](0x6)[_0x48334f(0x1e9)](/\//g,'\x5c');return _0x37b78e+':'+_0x3ede03;}if(_0x4828e3['match'](/^\/[a-zA-Z]\//)){const _0x34abf9=_0x4828e3[_0x48334f(0x1f6)](0x1)[_0x48334f(0x1ec)](),_0x2cb921=_0x4828e3[_0x48334f(0x1f2)](0x2)[_0x48334f(0x1e9)](/\//g,'\x5c');return _0x34abf9+':'+_0x2cb921;}if(_0x4828e3[_0x48334f(0x1ea)](/^[a-zA-Z]:/))return _0x4828e3['replace'](/\//g,'\x5c');return _0x4828e3;}export function normalizePath(_0x199c55){const _0x3aab0a=a2_0x5047;_0x199c55=_0x199c55[_0x3aab0a(0x1f7)]()[_0x3aab0a(0x1e9)](/^["']|["']$/g,'');const _0x5bed24=_0x199c55[_0x3aab0a(0x1f0)]('/')&&!_0x199c55[_0x3aab0a(0x1ea)](/^\/mnt\/[a-z]\//i)&&!_0x199c55[_0x3aab0a(0x1ea)](/^\/[a-zA-Z]\//);if(_0x5bed24)return _0x199c55[_0x3aab0a(0x1e9)](/\/+/g,'/')[_0x3aab0a(0x1e9)](/\/+$/,'');_0x199c55=convertToWindowsPath(_0x199c55);if(_0x199c55['startsWith']('\x5c\x5c')){let _0x585f1f=_0x199c55;_0x585f1f=_0x585f1f['replace'](/^\\{2,}/,'\x5c\x5c');const _0x128ebc=_0x585f1f[_0x3aab0a(0x1f8)](0x2)['replace'](/\\\\/g,'\x5c');_0x199c55='\x5c\x5c'+_0x128ebc;}else _0x199c55=_0x199c55[_0x3aab0a(0x1e9)](/\\\\/g,'\x5c');let _0x382a46=a2_0xf36f25[_0x3aab0a(0x1eb)](_0x199c55);_0x199c55['startsWith']('\x5c\x5c')&&!_0x382a46[_0x3aab0a(0x1f0)]('\x5c\x5c')&&(_0x382a46='\x5c'+_0x382a46);if(_0x382a46[_0x3aab0a(0x1ea)](/^[a-zA-Z]:/)){let _0x427e53=_0x382a46[_0x3aab0a(0x1e9)](/\//g,'\x5c');return/^[a-z]:/[_0x3aab0a(0x1f4)](_0x427e53)&&(_0x427e53=_0x427e53[_0x3aab0a(0x1f6)](0x0)[_0x3aab0a(0x1ec)]()+_0x427e53[_0x3aab0a(0x1f2)](0x1)),_0x427e53;}return _0x382a46['replace'](/\//g,'\x5c');}export function expandHome(_0x1ff81f){const _0x8442d2=a2_0x5047;if(_0x1ff81f['startsWith']('~/')||_0x1ff81f==='~')return a2_0xf36f25[_0x8442d2(0x1fb)](a2_0xd32699[_0x8442d2(0x1ee)](),_0x1ff81f['slice'](0x1));return _0x1ff81f;}
@@ -1 +1 @@
1
- (function(_0x254b38,_0x36b1f3){const _0x30204e=a3_0x128d,_0x2be88d=_0x254b38();while(!![]){try{const _0x3f2d51=-parseInt(_0x30204e(0x11e))/0x1*(parseInt(_0x30204e(0x114))/0x2)+parseInt(_0x30204e(0x112))/0x3+parseInt(_0x30204e(0x11d))/0x4+parseInt(_0x30204e(0x126))/0x5*(parseInt(_0x30204e(0x11b))/0x6)+-parseInt(_0x30204e(0x124))/0x7*(parseInt(_0x30204e(0x119))/0x8)+parseInt(_0x30204e(0x123))/0x9+-parseInt(_0x30204e(0x116))/0xa*(parseInt(_0x30204e(0x117))/0xb);if(_0x3f2d51===_0x36b1f3)break;else _0x2be88d['push'](_0x2be88d['shift']());}catch(_0x3dbc96){_0x2be88d['push'](_0x2be88d['shift']());}}}(a3_0xef0a,0x1e764));import a3_0x5634b5 from'path';function a3_0x128d(_0x39e1ee,_0x19472b){_0x39e1ee=_0x39e1ee-0x111;const _0xef0aff=a3_0xef0a();let _0x128d80=_0xef0aff[_0x39e1ee];return _0x128d80;}export function isPathWithinAllowedDirectories(_0x3a2dbb,_0x13bf18){const _0x4c6fc1=a3_0x128d;if(typeof _0x3a2dbb!==_0x4c6fc1(0x11a)||!Array[_0x4c6fc1(0x121)](_0x13bf18))return![];if(!_0x3a2dbb||_0x13bf18['length']===0x0)return![];if(_0x3a2dbb[_0x4c6fc1(0x118)]('\x00'))return![];let _0x2dc472;try{_0x2dc472=a3_0x5634b5[_0x4c6fc1(0x111)](a3_0x5634b5[_0x4c6fc1(0x122)](_0x3a2dbb));}catch{return![];}if(!a3_0x5634b5[_0x4c6fc1(0x125)](_0x2dc472))throw new Error(_0x4c6fc1(0x11c));return _0x13bf18[_0x4c6fc1(0x115)](_0x13d7e6=>{const _0x214945=_0x4c6fc1;if(typeof _0x13d7e6!=='string'||!_0x13d7e6)return![];if(_0x13d7e6[_0x214945(0x118)]('\x00'))return![];let _0x5ad4db;try{_0x5ad4db=a3_0x5634b5['resolve'](a3_0x5634b5[_0x214945(0x122)](_0x13d7e6));}catch{return![];}if(!a3_0x5634b5['isAbsolute'](_0x5ad4db))throw new Error(_0x214945(0x11f));if(_0x2dc472===_0x5ad4db)return!![];if(_0x5ad4db===a3_0x5634b5[_0x214945(0x120)])return _0x2dc472['startsWith'](a3_0x5634b5[_0x214945(0x120)]);return _0x2dc472[_0x214945(0x113)](_0x5ad4db+a3_0x5634b5[_0x214945(0x120)]);});}function a3_0xef0a(){const _0x4a670d=['807891FeKapV','isAbsolute','5TMGXdV','resolve','478596mXCIqE','startsWith','2RpcZEO','some','3646830OCiwfY','11rSWjVQ','includes','8mXpnSL','string','1363764pXIwDn','Path\x20must\x20be\x20absolute\x20after\x20normalization','861072fCMfTI','194286sOybSq','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','sep','isArray','normalize','1773540NaAcKR'];a3_0xef0a=function(){return _0x4a670d;};return a3_0xef0a();}
1
+ (function(_0x1a6376,_0x211e03){const _0x41d90c=a3_0x1d7d,_0x382db3=_0x1a6376();while(!![]){try{const _0x4b5dc1=parseInt(_0x41d90c(0x10a))/0x1+-parseInt(_0x41d90c(0x10b))/0x2+parseInt(_0x41d90c(0x111))/0x3+parseInt(_0x41d90c(0x10c))/0x4*(-parseInt(_0x41d90c(0x107))/0x5)+parseInt(_0x41d90c(0x101))/0x6*(parseInt(_0x41d90c(0x110))/0x7)+-parseInt(_0x41d90c(0x105))/0x8+-parseInt(_0x41d90c(0x115))/0x9*(parseInt(_0x41d90c(0x112))/0xa);if(_0x4b5dc1===_0x211e03)break;else _0x382db3['push'](_0x382db3['shift']());}catch(_0x28e960){_0x382db3['push'](_0x382db3['shift']());}}}(a3_0x59b3,0x7671d));import a3_0x45a776 from'path';function a3_0x59b3(){const _0x2f5032=['isAbsolute','3222168SbcNHs','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','378230VCwoUQ','includes','isArray','695999yvTZmU','605092djrnDj','20MiwoXB','startsWith','sep','length','1244075FVokTP','2786121wuqtMF','1533820uIrCjq','Path\x20must\x20be\x20absolute\x20after\x20normalization','resolve','45TtJpfz','normalize','24pvqGUs','string','some'];a3_0x59b3=function(){return _0x2f5032;};return a3_0x59b3();}function a3_0x1d7d(_0x2b2ef7,_0x47f9db){_0x2b2ef7=_0x2b2ef7-0x101;const _0x59b3dc=a3_0x59b3();let _0x1d7d4a=_0x59b3dc[_0x2b2ef7];return _0x1d7d4a;}export function isPathWithinAllowedDirectories(_0x1fcd83,_0x59bd9f){const _0x41251e=a3_0x1d7d;if(typeof _0x1fcd83!==_0x41251e(0x102)||!Array[_0x41251e(0x109)](_0x59bd9f))return![];if(!_0x1fcd83||_0x59bd9f[_0x41251e(0x10f)]===0x0)return![];if(_0x1fcd83[_0x41251e(0x108)]('\x00'))return![];let _0x1ae27a;try{_0x1ae27a=a3_0x45a776[_0x41251e(0x114)](a3_0x45a776[_0x41251e(0x116)](_0x1fcd83));}catch{return![];}if(!a3_0x45a776[_0x41251e(0x104)](_0x1ae27a))throw new Error(_0x41251e(0x113));return _0x59bd9f[_0x41251e(0x103)](_0x5a319e=>{const _0x32652a=_0x41251e;if(typeof _0x5a319e!==_0x32652a(0x102)||!_0x5a319e)return![];if(_0x5a319e['includes']('\x00'))return![];let _0x1a6329;try{_0x1a6329=a3_0x45a776[_0x32652a(0x114)](a3_0x45a776[_0x32652a(0x116)](_0x5a319e));}catch{return![];}if(!a3_0x45a776['isAbsolute'](_0x1a6329))throw new Error(_0x32652a(0x106));if(_0x1ae27a===_0x1a6329)return!![];if(_0x1a6329===a3_0x45a776[_0x32652a(0x10e)])return _0x1ae27a[_0x32652a(0x10d)](a3_0x45a776['sep']);return _0x1ae27a[_0x32652a(0x10d)](_0x1a6329+a3_0x45a776[_0x32652a(0x10e)]);});}
@@ -1 +1 @@
1
- (function(_0x2771e7,_0x4ce973){const _0x4aa45b=a4_0x4c9f,_0x5b1d1d=_0x2771e7();while(!![]){try{const _0x23dd04=-parseInt(_0x4aa45b(0xb0))/0x1*(-parseInt(_0x4aa45b(0xb4))/0x2)+-parseInt(_0x4aa45b(0xb3))/0x3+parseInt(_0x4aa45b(0xa2))/0x4*(-parseInt(_0x4aa45b(0xac))/0x5)+parseInt(_0x4aa45b(0xaf))/0x6+-parseInt(_0x4aa45b(0xb5))/0x7+parseInt(_0x4aa45b(0xa6))/0x8*(parseInt(_0x4aa45b(0xa3))/0x9)+parseInt(_0x4aa45b(0xb2))/0xa;if(_0x23dd04===_0x4ce973)break;else _0x5b1d1d['push'](_0x5b1d1d['shift']());}catch(_0x244f27){_0x5b1d1d['push'](_0x5b1d1d['shift']());}}}(a4_0x198d,0xa450e));import{promises as a4_0x547121}from'fs';import a4_0x575fd9 from'path';import a4_0x6c39d from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';function a4_0x4c9f(_0x3afcf8,_0x4db003){_0x3afcf8=_0x3afcf8-0x9e;const _0x198d92=a4_0x198d();let _0x4c9fee=_0x198d92[_0x3afcf8];return _0x4c9fee;}async function parseRootUri(_0x2efcfb){const _0x364f44=a4_0x4c9f;try{const _0x4bc216=_0x2efcfb[_0x364f44(0xab)](_0x364f44(0xaa))?_0x2efcfb[_0x364f44(0xa7)](0x7):_0x2efcfb,_0x27fb10=_0x4bc216[_0x364f44(0xab)]('~/')||_0x4bc216==='~'?a4_0x575fd9[_0x364f44(0xad)](a4_0x6c39d[_0x364f44(0x9e)](),_0x4bc216[_0x364f44(0xa7)](0x1)):_0x4bc216,_0x4497b8=a4_0x575fd9[_0x364f44(0xa8)](_0x27fb10),_0x49f295=await a4_0x547121['realpath'](_0x4497b8);return normalizePath(_0x49f295);}catch{return null;}}function a4_0x198d(){const _0x1eef8a=['Skipping\x20','\x20due\x20to\x20error:\x20','2223728JbGfSK','slice','resolve','push','file://','startsWith','14465sqcmmE','join','message','2535408GggGiB','1fhiIBV','isDirectory','8350260wqjuau','1611867DHGffv','229960IoFzfi','1486660POBjZP','homedir','uri','invalid\x20path\x20or\x20inaccessible','non-directory\x20root','1468DYcHbe','36OKZLOl'];a4_0x198d=function(){return _0x1eef8a;};return a4_0x198d();}function formatDirectoryError(_0x2e5bbd,_0x729010,_0x1f98e3){const _0x5a75d1=a4_0x4c9f;if(_0x1f98e3)return _0x5a75d1(0xa4)+_0x1f98e3+':\x20'+_0x2e5bbd;const _0x3ce4b1=_0x729010 instanceof Error?_0x729010[_0x5a75d1(0xae)]:String(_0x729010);return'Skipping\x20invalid\x20directory:\x20'+_0x2e5bbd+_0x5a75d1(0xa5)+_0x3ce4b1;}export async function getValidRootDirectories(_0x344fe7){const _0x5215aa=a4_0x4c9f,_0x22a6f2=[];for(const _0x1469f9 of _0x344fe7){const _0x13d8f1=await parseRootUri(_0x1469f9[_0x5215aa(0x9f)]);if(!_0x13d8f1){logMcpStderr(formatDirectoryError(_0x1469f9[_0x5215aa(0x9f)],undefined,_0x5215aa(0xa0)));continue;}try{const _0x36acf3=await a4_0x547121['stat'](_0x13d8f1);_0x36acf3[_0x5215aa(0xb1)]()?_0x22a6f2[_0x5215aa(0xa9)](_0x13d8f1):logMcpStderr(formatDirectoryError(_0x13d8f1,undefined,_0x5215aa(0xa1)));}catch(_0x26c095){logMcpStderr(formatDirectoryError(_0x13d8f1,_0x26c095));}}return _0x22a6f2;}
1
+ (function(_0x1aff87,_0xf74c12){const _0x2cb14e=a4_0x2114,_0x13dd52=_0x1aff87();while(!![]){try{const _0x3b0600=-parseInt(_0x2cb14e(0x1b7))/0x1*(-parseInt(_0x2cb14e(0x1b2))/0x2)+parseInt(_0x2cb14e(0x1a2))/0x3+parseInt(_0x2cb14e(0x1ad))/0x4+-parseInt(_0x2cb14e(0x1a8))/0x5*(parseInt(_0x2cb14e(0x1af))/0x6)+parseInt(_0x2cb14e(0x1a6))/0x7*(-parseInt(_0x2cb14e(0x1ab))/0x8)+-parseInt(_0x2cb14e(0x1a9))/0x9*(parseInt(_0x2cb14e(0x1b6))/0xa)+parseInt(_0x2cb14e(0x1ac))/0xb;if(_0x3b0600===_0xf74c12)break;else _0x13dd52['push'](_0x13dd52['shift']());}catch(_0x4783e3){_0x13dd52['push'](_0x13dd52['shift']());}}}(a4_0xa252,0x215ed));import{promises as a4_0x41d402}from'fs';import a4_0x290ea1 from'path';import a4_0x123c5f from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x22bfbc){const _0x593b59=a4_0x2114;try{const _0x445ec2=_0x22bfbc[_0x593b59(0x1b5)](_0x593b59(0x1a5))?_0x22bfbc[_0x593b59(0x1b1)](0x7):_0x22bfbc,_0xf9335a=_0x445ec2[_0x593b59(0x1b5)]('~/')||_0x445ec2==='~'?a4_0x290ea1[_0x593b59(0x1ae)](a4_0x123c5f[_0x593b59(0x1a3)](),_0x445ec2['slice'](0x1)):_0x445ec2,_0x30af46=a4_0x290ea1['resolve'](_0xf9335a),_0x2d78ce=await a4_0x41d402[_0x593b59(0x1a7)](_0x30af46);return normalizePath(_0x2d78ce);}catch{return null;}}function a4_0x2114(_0x3c5c67,_0x13f9ef){_0x3c5c67=_0x3c5c67-0x1a0;const _0xa252c=a4_0xa252();let _0x211483=_0xa252c[_0x3c5c67];return _0x211483;}function a4_0xa252(){const _0x325842=['slice','74350TCZPFa','stat','message','startsWith','110wqZvml','1GRvOMn','invalid\x20path\x20or\x20inaccessible','non-directory\x20root','770742tLgEVH','homedir','push','file://','4319uHOQHQ','realpath','15BBLnNV','195417awYLFA','Skipping\x20invalid\x20directory:\x20','2888JBJgrB','3155559iBLZDV','909324oQQtpJ','join','420048ZMmyAI','uri'];a4_0xa252=function(){return _0x325842;};return a4_0xa252();}function formatDirectoryError(_0x13a263,_0x33afa6,_0x122163){const _0x3c1ab7=a4_0x2114;if(_0x122163)return'Skipping\x20'+_0x122163+':\x20'+_0x13a263;const _0x2845f8=_0x33afa6 instanceof Error?_0x33afa6[_0x3c1ab7(0x1b4)]:String(_0x33afa6);return _0x3c1ab7(0x1aa)+_0x13a263+'\x20due\x20to\x20error:\x20'+_0x2845f8;}export async function getValidRootDirectories(_0x3141ff){const _0x51f207=a4_0x2114,_0x528f04=[];for(const _0x7b55 of _0x3141ff){const _0x2ff2a9=await parseRootUri(_0x7b55[_0x51f207(0x1b0)]);if(!_0x2ff2a9){logMcpStderr(formatDirectoryError(_0x7b55[_0x51f207(0x1b0)],undefined,_0x51f207(0x1a0)));continue;}try{const _0x45e2ff=await a4_0x41d402[_0x51f207(0x1b3)](_0x2ff2a9);_0x45e2ff['isDirectory']()?_0x528f04[_0x51f207(0x1a4)](_0x2ff2a9):logMcpStderr(formatDirectoryError(_0x2ff2a9,undefined,_0x51f207(0x1a1)));}catch(_0x21f98d){logMcpStderr(formatDirectoryError(_0x2ff2a9,_0x21f98d));}}return _0x528f04;}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morphllm/morphmcp",
3
- "version": "0.8.152",
3
+ "version": "0.8.153",
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.156",
38
+ "@morphllm/morphsdk": "0.2.157",
39
39
  "@vscode/ripgrep": "^1.15.14",
40
40
  "axios": "^1.6.0",
41
41
  "chalk": "^5.3.0",