@morphllm/morphmcp 0.8.129 → 0.8.131

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_0x5417d0=a0_0x462f;(function(_0x24e0c6,_0x4d228c){const _0x48b43e=a0_0x462f,_0x4d6c68=_0x24e0c6();while(!![]){try{const _0x2dffb9=-parseInt(_0x48b43e(0x1f0))/0x1*(-parseInt(_0x48b43e(0x1da))/0x2)+-parseInt(_0x48b43e(0x16b))/0x3+-parseInt(_0x48b43e(0x181))/0x4*(parseInt(_0x48b43e(0x178))/0x5)+-parseInt(_0x48b43e(0x1f9))/0x6+-parseInt(_0x48b43e(0x1f3))/0x7+-parseInt(_0x48b43e(0x15a))/0x8*(-parseInt(_0x48b43e(0x1d4))/0x9)+parseInt(_0x48b43e(0x1b3))/0xa*(parseInt(_0x48b43e(0x172))/0xb);if(_0x2dffb9===_0x4d228c)break;else _0x4d6c68['push'](_0x4d6c68['shift']());}catch(_0xfc3354){_0x4d6c68['push'](_0x4d6c68['shift']());}}}(a0_0x4d4b,0x86f0e));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_0x8c62a7 from'fs/promises';import a0_0x5e6b08 from'path';import a0_0x4a6458 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import a0_0xb47080 from'axios';function fixPathRepetition(_0x5ac938){const _0x3eb4a4=a0_0x462f,_0xaa0649=_0x5ac938[_0x3eb4a4(0x1f6)](a0_0x5e6b08[_0x3eb4a4(0x177)])['filter'](Boolean);if(_0xaa0649[_0x3eb4a4(0x217)]<0x2)return null;for(let _0x21021f=Math[_0x3eb4a4(0x15b)](_0xaa0649[_0x3eb4a4(0x217)]/0x2);_0x21021f>=0x1;_0x21021f--){for(let _0x25de96=0x0;_0x25de96<=_0xaa0649[_0x3eb4a4(0x217)]-0x2*_0x21021f;_0x25de96++){const _0x112900=_0xaa0649[_0x3eb4a4(0x162)](_0x25de96,_0x25de96+_0x21021f),_0x5d82ee=_0xaa0649[_0x3eb4a4(0x162)](_0x25de96+_0x21021f,_0x25de96+0x2*_0x21021f);if(_0x112900['every']((_0x5d3ff7,_0x55b153)=>_0x5d3ff7===_0x5d82ee[_0x55b153])){const _0x55987f=[..._0xaa0649[_0x3eb4a4(0x162)](0x0,_0x25de96),..._0xaa0649[_0x3eb4a4(0x162)](_0x25de96+_0x21021f)];return a0_0x5e6b08[_0x3eb4a4(0x177)]+_0x55987f['join'](a0_0x5e6b08['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x3653c0=a0_0x462f;try{const _0x2e9a55=require('../package.json');return _0x2e9a55[_0x3653c0(0x159)]??'unknown';}catch(_0x52908c){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x52908c),'unknown';}}function printHelp(){const _0x3e6402=a0_0x462f;console[_0x3e6402(0x1ad)](_0x3e6402(0x1d9)+getPackageVersion()),console[_0x3e6402(0x1ad)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0x3e6402(0x1ad)]('\x0aOptions:'),console['log']('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x3e6402(0x1ad)](_0x3e6402(0x207)),console[_0x3e6402(0x1ad)](_0x3e6402(0x20d)),console['log']('\x0aExamples:'),console['log']('\x20\x20morph-mcp'),console['log'](_0x3e6402(0x237));}const cliArgs=process[a0_0x5417d0(0x23a)]['slice'](0x2),VERSION_FLAGS=new Set([a0_0x5417d0(0x153),'-v','-V']),HELP_FLAGS=new Set([a0_0x5417d0(0x23f),'-h']);cliArgs[a0_0x5417d0(0x15c)](_0x455fe2=>VERSION_FLAGS[a0_0x5417d0(0x17f)](_0x455fe2))&&(console[a0_0x5417d0(0x1ad)](a0_0x5417d0(0x1d9)+getPackageVersion()),process[a0_0x5417d0(0x198)](0x0));cliArgs[a0_0x5417d0(0x15c)](_0xdaa2a2=>HELP_FLAGS[a0_0x5417d0(0x17f)](_0xdaa2a2))&&(printHelp(),process['exit'](0x0));function a0_0x462f(_0x15d807,_0x4f2f2f){_0x15d807=_0x15d807-0x150;const _0x4d4ba5=a0_0x4d4b();let _0x462f7a=_0x4d4ba5[_0x15d807];return _0x462f7a;}function getCliArg(_0xe1d6af){const _0x326c3c=a0_0x5417d0;for(let _0x538de4=0x0;_0x538de4<cliArgs[_0x326c3c(0x217)];_0x538de4++){const _0x36261e=cliArgs[_0x538de4];if(_0x36261e[_0x326c3c(0x239)]('--'+_0xe1d6af+'='))return _0x36261e[_0x326c3c(0x162)](('--'+_0xe1d6af+'=')[_0x326c3c(0x217)]);if(_0x36261e==='--'+_0xe1d6af&&_0x538de4+0x1<cliArgs[_0x326c3c(0x217)])return cliArgs[_0x538de4+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x5417d0(0x217)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x5417d0(0x17f)](arg)||HELP_FLAGS[a0_0x5417d0(0x17f)](arg))continue;if(arg[a0_0x5417d0(0x239)]('--api-key='))continue;if(arg===a0_0x5417d0(0x22a)){i++;continue;}args['push'](arg);}const WORKSPACE_ROOT=process[a0_0x5417d0(0x190)][a0_0x5417d0(0x17d)]||process[a0_0x5417d0(0x190)][a0_0x5417d0(0x1a0)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process['env'][a0_0x5417d0(0x1c4)]!=='false',MORPH_API_KEY=getCliArg(a0_0x5417d0(0x1d6))??process[a0_0x5417d0(0x190)][a0_0x5417d0(0x1d1)],MORPH_API_URL=process[a0_0x5417d0(0x190)][a0_0x5417d0(0x18e)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x5417d0(0x190)][a0_0x5417d0(0x167)]?parseInt(process['env'][a0_0x5417d0(0x167)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x5417d0(0x225),a0_0x5417d0(0x248),a0_0x5417d0(0x1c7)]),DISABLED_TOOLS=process['env'][a0_0x5417d0(0x161)]?new Set(process[a0_0x5417d0(0x190)][a0_0x5417d0(0x161)][a0_0x5417d0(0x1f6)](',')[a0_0x5417d0(0x1e2)](_0x82d812=>_0x82d812[a0_0x5417d0(0x1e4)]())[a0_0x5417d0(0x1bb)](_0x4c948c=>_0x4c948c[a0_0x5417d0(0x217)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0x5417d0(0x1b5)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x5417d0(0x17f)](tool)&&console[a0_0x5417d0(0x246)](a0_0x5417d0(0x1e1)+tool+a0_0x5417d0(0x1c5)+[...KNOWN_TOOL_NAMES][a0_0x5417d0(0x1b0)](',\x20'));}console[a0_0x5417d0(0x246)]('Disabled\x20tools:\x20'+[...DISABLED_TOOLS][a0_0x5417d0(0x1b0)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x5417d0(0x239)](a0_0x5417d0(0x191))&&!MORPH_API_KEY[a0_0x5417d0(0x239)]('morph-')&&logMcpStderr(a0_0x5417d0(0x23c));async function reportMorphError(_0x39194e){const _0x17fe52=a0_0x5417d0;try{await a0_0xb47080[_0x17fe52(0x171)]('https://morphllm.com/api/error-report',{..._0x39194e,'timestamp':new Date()[_0x17fe52(0x1cf)](),'source':_0x39194e['source']||_0x17fe52(0x17b),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x39194e[_0x17fe52(0x1c1)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x17fe52(0x1fe),'Authorization':_0x17fe52(0x19e)+MORPH_API_KEY}});}catch{}}args[a0_0x5417d0(0x217)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),logMcpStderr(a0_0x5417d0(0x1f1)),logMcpStderr(a0_0x5417d0(0x1f7)),logMcpStderr(a0_0x5417d0(0x234)),logMcpStderr(a0_0x5417d0(0x16e)),logMcpStderr(a0_0x5417d0(0x17e)));function normalizePath(_0x104652){return a0_0x5e6b08['normalize'](_0x104652);}function expandHome(_0x5c9abb){const _0x860d6=a0_0x5417d0;if(_0x5c9abb[_0x860d6(0x239)]('~/')||_0x5c9abb==='~')return a0_0x5e6b08['join'](a0_0x4a6458[_0x860d6(0x1fc)](),_0x5c9abb['slice'](0x1));return _0x5c9abb;}let allowedDirectories=await Promise[a0_0x5417d0(0x1f5)](args[a0_0x5417d0(0x1e2)](async _0x942478=>{const _0x52b470=a0_0x5417d0,_0x522dc4=expandHome(_0x942478),_0x2e676b=a0_0x5e6b08[_0x52b470(0x19b)](_0x522dc4);try{const _0x3dd2f1=await a0_0x8c62a7[_0x52b470(0x183)](_0x2e676b);return normalizePath(_0x3dd2f1);}catch(_0x5e9405){return normalizePath(_0x2e676b);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x5417d0(0x217)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x5417d0(0x199)](workspaceDir),logMcpStderr(a0_0x5417d0(0x22c)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x2c221d){logMcpStderr(a0_0x5417d0(0x1e7)+a0_0x2c221d);}function a0_0x4d4b(){const _0x4f756e=['Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','morph-v3-fast','Unknown\x20error','metadata','ENOENT','Cargo.toml','oninitialized','Here\x20is\x20the\x20content\x20of\x20files:\x0a','57481lRCOey','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','3604804CkEvTy','Morph\x20Edit\x20','all','split','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','branch','2999586VZEOfI','default','Benefits:\x0a','homedir','read\x20','application/json','toLowerCase','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','finish','changes','timed\x20out','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','added\x20','Invalid\x20arguments:\x20','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','WarpGrepError','For\x20deletions:\x0a','node_modules','repo_path','Error:\x20','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','timeout','.\x20Changes:\x20','inputSchema','github_url','safeParse','messages','search_string','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','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.','length','lines','name','[github_codebase_search]\x20Searching\x20','basename','object','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','ReadError','morph-warp-grep-v1-1111v0','setNotificationHandler','code_edit','Repository\x20identifier','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','morph-mcp','edit_file','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','isDirectory','terminated','Applied','--api-key','Preview\x20changes\x20without\x20applying\x20them.','Workspace\x20mode\x20enabled:\x20Using\x20','isArray','constructor','owner_repo','files','getClientCapabilities','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','Failed\x20to\x20request\x20roots\x20from\x20client:','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','\x20disabled\x20via\x20DISABLED_TOOLS','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','0.2.0','startsWith','argv','Rules:\x0a','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','terminationReason','enum','--help','\x22>\x0aError\x20reading\x20file:\x20','catch','read','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','WarpGrep\x20sub-tool\x20errors:\x20','[github_codebase_search]\x20Done\x20in\x20','error','Parent\x20directory\x20does\x20not\x20exist:\x20','codebase_search','setRequestHandler','dirname','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','access','--version','data','instruction','PathError','includes','\x20-\x20','version','709408woQWFS','floor','some','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','assistant','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','DISABLED_TOOLS','slice','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','now','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','MORPH_WARP_GREP_TIMEOUT','completionId','indexOf','Tool\x20\x22','2350959nGTscM','\x27\x20in\x20`','.cursor','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','etimedout','success','post','25139323htUBcR','substring','Warning:\x20Workspace\x20fallback\x20failed:\x20','grep','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','sep','5QwWnhS','description','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','mcp-filesystem','Unknown\x20tool:\x20','WORKSPACE_ROOT','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','has','Error\x20accessing\x20directory\x20','905732gFOixl','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','realpath','❌\x20Morph\x20Edit\x20Failed:\x20','code','.\x20Path:\x20','Tool\x20','roots','\x20for:\x20\x22','content','unknown','TimeoutError','describe','MORPH_API_URL','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','env','sk-','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','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.','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','Error\x20running\x20fast\x20context\x20search:\x20','tsconfig.json','exit','push','\x20is\x20not\x20a\x20directory','resolve','Specific\x20commit\x20hash\x20to\x20search','params','Bearer\x20','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','PWD','Failed\x20to\x20read\x20file:\x20','payload','source','completed_with_file_errors','SymlinkError','path','package.json','BinaryFile','ms.\x20Success:\x20','runWarpGrep_call','\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable','linesAdded','log','min',',\x20removed\x20','join','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','array','10lHwzmq','Fallback:\x20Using\x20workspace\x20root\x20','size','composer.json','requiresApiKey','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','match','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.','filter','ms:','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','FileReadError','message','grep\x20\x27','context','dryRun','role','ENABLE_WORKSPACE_MODE','\x22.\x20Known\x20tools:\x20','timings','github_codebase_search','UnknownError','Morph\x20FastApply\x20failed\x20without\x20error\x20message','optional','completed','list_directory\x20','\x20valid\x20directories','connect','toISOString','RipgrepNotAvailable','MORPH_API_KEY',',\x20modified\x20','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','18nqbwUg','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','api-key','readFile','text','@morphllm/morphmcp\x20','4yNEwKf','number','utf-8','string','\x0a...\x20(truncated,\x20total:\x20','-\x20Read\x20file\x20`','listRoots','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','map','errors','trim','stack','\x20error(s)','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'];a0_0x4d4b=function(){return _0x4f756e;};return a0_0x4d4b();}async function detectWorkspaceRoot(_0x4020a6){const _0x76ea26=a0_0x5417d0;let _0x567059=a0_0x5e6b08[_0x76ea26(0x19b)](_0x4020a6);const _0x3d04e9=['.git','.vscode',_0x76ea26(0x1a7),_0x76ea26(0x1ed),'pyproject.toml','go.mod',_0x76ea26(0x16d),_0x76ea26(0x197),_0x76ea26(0x1b6)];while(_0x567059!==a0_0x5e6b08['dirname'](_0x567059)){for(const _0x2413a6 of _0x3d04e9){const _0x51b6bb=a0_0x5e6b08['join'](_0x567059,_0x2413a6);try{return await a0_0x8c62a7[_0x76ea26(0x152)](_0x51b6bb),normalizePath(_0x567059);}catch{}}_0x567059=a0_0x5e6b08[_0x76ea26(0x150)](_0x567059);}return normalizePath(_0x4020a6);}await Promise[a0_0x5417d0(0x1f5)](args['map'](async _0x1ebb72=>{const _0x5beeff=a0_0x5417d0;try{const _0x3277f4=await a0_0x8c62a7['stat'](expandHome(_0x1ebb72));!_0x3277f4[_0x5beeff(0x227)]()&&(logMcpStderr(_0x5beeff(0x20c)+_0x1ebb72+_0x5beeff(0x19a)),process[_0x5beeff(0x198)](0x1));}catch(_0x173192){logMcpStderr(_0x5beeff(0x180)+_0x1ebb72+':',_0x173192),process[_0x5beeff(0x198)](0x1);}}));async function validatePath(_0x56a20b){const _0x35b9ce=a0_0x5417d0,_0x31ca28=expandHome(_0x56a20b),_0x44e543=a0_0x5e6b08['resolve'](_0x31ca28);try{const _0x534708=await a0_0x8c62a7[_0x35b9ce(0x183)](_0x44e543);return _0x534708;}catch(_0x56a1fc){if(_0x56a1fc[_0x35b9ce(0x185)]===_0x35b9ce(0x1ec)){const _0x1ba3bb=a0_0x5e6b08['dirname'](_0x44e543);try{const _0x33a5c0=await a0_0x8c62a7['realpath'](_0x1ba3bb);return a0_0x5e6b08['join'](_0x33a5c0,a0_0x5e6b08[_0x35b9ce(0x21b)](_0x44e543));}catch{throw new Error(_0x35b9ce(0x247)+_0x1ba3bb);}}throw _0x56a1fc;}}const MorphEditFileArgsSchema=z[a0_0x5417d0(0x21c)]({'path':z[a0_0x5417d0(0x1dd)](),'code_edit':z[a0_0x5417d0(0x1dd)]()['describe'](a0_0x5417d0(0x182)),'instruction':z[a0_0x5417d0(0x1dd)]()[a0_0x5417d0(0x18d)](a0_0x5417d0(0x223)),'dryRun':z['boolean']()[a0_0x5417d0(0x1fa)](![])['describe'](a0_0x5417d0(0x22b))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x5417d0(0x194),WarpGrepArgsSchema=z[a0_0x5417d0(0x21c)]({'search_string':z['string']()[a0_0x5417d0(0x18d)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x5417d0(0x1dd)]()['describe']('The\x20absolute\x20path\x20of\x20the\x20folder\x20where\x20the\x20search\x20should\x20be\x20performed.\x20In\x20multi-repo\x20workspaces,\x20you\x20have\x20to\x20specify\x20a\x20subfolder\x20where\x20the\x20search\x20should\x20be\x20performed,\x20to\x20avoid\x20searching\x20across\x20all\x20repos'),'search_type':z[a0_0x5417d0(0x23e)]([a0_0x5417d0(0x1fa),a0_0x5417d0(0x20a)])[a0_0x5417d0(0x1ca)]()[a0_0x5417d0(0x18d)](a0_0x5417d0(0x226))}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z[a0_0x5417d0(0x1dd)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()[a0_0x5417d0(0x1ca)]()[a0_0x5417d0(0x18d)](a0_0x5417d0(0x1ba)),'owner_repo':z[a0_0x5417d0(0x1dd)]()['optional']()[a0_0x5417d0(0x18d)](a0_0x5417d0(0x204)),'branch':z[a0_0x5417d0(0x1dd)]()[a0_0x5417d0(0x1ca)]()['describe'](a0_0x5417d0(0x18f))}),CodebaseSearchArgsSchema=z[a0_0x5417d0(0x21c)]({'query':z[a0_0x5417d0(0x1dd)]()[a0_0x5417d0(0x18d)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x5417d0(0x1dd)]()[a0_0x5417d0(0x18d)](a0_0x5417d0(0x222)),'branch':z[a0_0x5417d0(0x1dd)]()[a0_0x5417d0(0x1ca)]()['describe'](a0_0x5417d0(0x193)),'commitHash':z[a0_0x5417d0(0x1dd)]()[a0_0x5417d0(0x1ca)]()['describe'](a0_0x5417d0(0x19c)),'targetDirectories':z[a0_0x5417d0(0x1b2)](z['string']())[a0_0x5417d0(0x1fa)]([])[a0_0x5417d0(0x18d)](a0_0x5417d0(0x176)),'limit':z[a0_0x5417d0(0x1db)]()[a0_0x5417d0(0x1ca)]()[a0_0x5417d0(0x1fa)](0xa)[a0_0x5417d0(0x18d)]('Max\x20results\x20to\x20return')}),server=new Server({'name':a0_0x5417d0(0x224),'version':a0_0x5417d0(0x238)},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x778dc1=a0_0x5417d0,_0x17e72b=[{'name':'edit_file','description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a'+_0x778dc1(0x151)+'🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a'+'IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a'+_0x778dc1(0x1fb)+_0x778dc1(0x15f)+_0x778dc1(0x165)+_0x778dc1(0x232)+_0x778dc1(0x163)+_0x778dc1(0x19f)+_0x778dc1(0x243)+_0x778dc1(0x1f2)+_0x778dc1(0x209)+'-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a'+'-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a'+_0x778dc1(0x23b)+'-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a'+_0x778dc1(0x200)+'-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a'+_0x778dc1(0x1b8)+_0x778dc1(0x17a)+_0x778dc1(0x192)+'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':_0x778dc1(0x248),'description':'A\x20code\x20exploration\x20tool,\x20use\x20this\x20tool\x20when\x20exploring\x20an\x20unfamiliar\x20codebase,\x20and\x20you\x27re\x20unsure\x20of\x20the\x20exact\x20file\x20or\x20string\x20to\x20look\x20for.\x20This\x20tool\x20will\x20find\x20all\x20relevant\x20bits\x20of\x20code\x20given\x20a\x20natural\x20lanugage\x20description,\x20or\x20questin\x20of\x20the\x20thing\x20you\x27re\x20looking\x20for.\x20'+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x778dc1(0x215)+'You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20'+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x40b5d9=_0x17e72b['filter'](_0x4b52e3=>{const _0x2dadf0=_0x778dc1;if(DISABLED_TOOLS[_0x2dadf0(0x17f)](_0x4b52e3['name']))return console[_0x2dadf0(0x246)](_0x2dadf0(0x187)+_0x4b52e3[_0x2dadf0(0x219)]+_0x2dadf0(0x236)),![];if(_0x2dadf0(0x1b7)in _0x4b52e3&&_0x4b52e3[_0x2dadf0(0x1b7)]&&!MORPH_API_KEY)return logMcpStderr('Warning:\x20'+_0x4b52e3[_0x2dadf0(0x219)]+_0x2dadf0(0x166)),![];return!![];});return{'tools':_0x40b5d9['map'](_0x4aed2f=>({'name':_0x4aed2f[_0x778dc1(0x219)],'description':_0x4aed2f[_0x778dc1(0x179)],'inputSchema':_0x4aed2f[_0x778dc1(0x210)]}))};}),server[a0_0x5417d0(0x249)](CallToolRequestSchema,async _0x1a873a=>{const _0xd71059=a0_0x5417d0,{name:_0x4959a5,arguments:_0x52ad0a}=_0x1a873a[_0xd71059(0x19d)];try{if(DISABLED_TOOLS[_0xd71059(0x17f)](_0x4959a5))throw new Error(_0xd71059(0x16a)+_0x4959a5+_0xd71059(0x1ab));switch(_0x4959a5){case _0xd71059(0x225):{const _0x52b535=MorphEditFileArgsSchema['safeParse'](_0x52ad0a);if(!_0x52b535[_0xd71059(0x170)])throw new Error(_0xd71059(0x1d5)+_0x52b535[_0xd71059(0x246)]);const _0x339993=await validatePath(_0x52b535[_0xd71059(0x154)][_0xd71059(0x1a6)]);let _0x16b3dc=null,_0x13dea5=!![],_0x2de8f2=null;try{_0x16b3dc=await a0_0x8c62a7[_0xd71059(0x1d7)](_0x339993,_0xd71059(0x1dc));}catch(_0x580b2f){const _0x2ac70c=_0x580b2f[_0xd71059(0x185)];_0x2ac70c===_0xd71059(0x1ec)?(_0x13dea5=![],_0x16b3dc=''):(_0x2de8f2=_0xd71059(0x1a1)+(_0x2ac70c||_0xd71059(0x18b))+_0xd71059(0x158)+(_0x580b2f instanceof Error?_0x580b2f[_0xd71059(0x1bf)]:String(_0x580b2f)),logMcpStderr('Warning:\x20'+_0x2de8f2));}let _0x4f5544;try{const _0x39d501=MORPH_API_KEY;if(!_0x39d501)throw new Error(_0xd71059(0x235));const _0x5374b3=a0_0x5e6b08[_0xd71059(0x150)](_0x339993),_0x5f81cc=a0_0x5e6b08['basename'](_0x339993),_0x1d3fb1=await executeEditFile({'target_filepath':_0x5f81cc,'code_edit':_0x52b535['data'][_0xd71059(0x221)],'instructions':_0x52b535[_0xd71059(0x154)][_0xd71059(0x155)]},{'morphApiKey':_0x39d501,'morphApiUrl':MORPH_API_URL,'baseDir':_0x5374b3,'autoWrite':!_0x52b535[_0xd71059(0x154)][_0xd71059(0x1c2)],'generateUdiff':![],'debug':![]});_0x4f5544=_0x1d3fb1[_0xd71059(0x168)];if(!_0x1d3fb1[_0xd71059(0x170)])throw new Error(_0x1d3fb1[_0xd71059(0x246)]||_0xd71059(0x1c9));const _0x5d2606=_0x1d3fb1[_0xd71059(0x202)],_0x168420=_0xd71059(0x205)+_0x5d2606[_0xd71059(0x1ac)]+_0xd71059(0x1af)+_0x5d2606['linesRemoved']+_0xd71059(0x1d2)+_0x5d2606['linesModified'];if(_0x52b535[_0xd71059(0x154)][_0xd71059(0x1c2)])return{'content':[{'type':_0xd71059(0x1d8),'text':'Morph\x20Edit\x20Preview'+(_0x13dea5?'':'\x20(new\x20file)')+':\x20'+_0x52b535[_0xd71059(0x154)]['instruction']+_0xd71059(0x20f)+_0x168420+_0xd71059(0x186)+_0x52b535[_0xd71059(0x154)]['path']+'.'}]};return{'content':[{'type':'text','text':_0xd71059(0x1f4)+(_0x13dea5?_0xd71059(0x229):'Created\x20File')+':\x20'+_0x52b535[_0xd71059(0x154)][_0xd71059(0x155)]+_0xd71059(0x20f)+_0x168420+_0xd71059(0x186)+_0x52b535[_0xd71059(0x154)][_0xd71059(0x1a6)]+'.'}]};}catch(_0x536c7f){const _0xa9b4d=_0x536c7f instanceof Error?_0x536c7f[_0xd71059(0x1bf)]:String(_0x536c7f);return reportMorphError({'error_message':_0xa9b4d,'error_type':_0x536c7f instanceof Error?_0x536c7f['constructor']['name']:_0xd71059(0x1c8),'context':{'tool':_0xd71059(0x225),'completion_id':_0x4f5544,'file_path':_0x52b535[_0xd71059(0x154)]['path'],'validated_path':_0x339993,'instruction':_0x52b535[_0xd71059(0x154)][_0xd71059(0x155)],'model':'morph-v3-fast','dry_run':_0x52b535[_0xd71059(0x154)][_0xd71059(0x1c2)],'file_exists':_0x13dea5,'file_read_error':_0x2de8f2,'file_readable':_0x16b3dc!==null,'request_content':{'path':_0x52b535[_0xd71059(0x154)]['path'],'code_edit':_0x52b535['data'][_0xd71059(0x221)],'instruction':_0x52b535[_0xd71059(0x154)][_0xd71059(0x155)],'original_code':_0x16b3dc!==null?_0x16b3dc['length']>0xc350?_0x16b3dc['substring'](0x0,0xc350)+_0xd71059(0x1de)+_0x16b3dc[_0xd71059(0x217)]+'\x20chars)':_0x16b3dc:'[could\x20not\x20read\x20file:\x20'+(_0x2de8f2||'unknown\x20error')+']','original_code_length':_0x16b3dc?.[_0xd71059(0x217)]??0x0,'model':_0xd71059(0x1e9),'dry_run':_0x52b535[_0xd71059(0x154)]['dryRun']}},'stack_trace':_0x536c7f instanceof Error?_0x536c7f[_0xd71059(0x1e5)]:undefined,'source':_0xd71059(0x17b)})['catch'](()=>{}),{'content':[{'type':_0xd71059(0x1d8),'text':_0xd71059(0x184)+_0xa9b4d}],'isError':!![]};}}case _0xd71059(0x248):{const _0x18b1b9=WarpGrepArgsSchema[_0xd71059(0x212)](_0x52ad0a);if(!_0x18b1b9[_0xd71059(0x170)])return{'content':[{'type':'text','text':_0xd71059(0x206)+_0x18b1b9['error']}],'isError':!![]};const _0x53437d=_0x246412=>{const _0x451f48=_0xd71059,_0x32ce81=[];for(const _0x23b665 of _0x246412||[]){const _0x5863ca=_0x23b665[_0x451f48(0x1c3)],_0x98d722=_0x23b665[_0x451f48(0x18a)];if(_0x5863ca===_0x451f48(0x15e)&&_0x98d722){const _0x122288=_0x98d722[_0x451f48(0x1f6)]('\x0a')[_0x451f48(0x1bb)](_0x4638d9=>_0x4638d9[_0x451f48(0x1e4)]());for(const _0x223015 of _0x122288){const _0x2fbc6a=_0x223015[_0x451f48(0x1b9)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x2fbc6a){_0x32ce81[_0x451f48(0x199)](_0x451f48(0x1c0)+_0x2fbc6a[0x1]+'\x27\x20'+_0x2fbc6a[0x2]);continue;}const _0x1e4c97=_0x223015[_0x451f48(0x1b9)](/^read\s+(.+)$/);if(_0x1e4c97){_0x32ce81['push'](_0x451f48(0x1fd)+_0x1e4c97[0x1]);continue;}const _0x46f484=_0x223015[_0x451f48(0x1b9)](/^list_directory\s+(.+)$/);if(_0x46f484){_0x32ce81[_0x451f48(0x199)](_0x451f48(0x1cc)+_0x46f484[0x1]);continue;}}}}return _0x32ce81;},_0x4881db=_0x43ca4e=>{const _0x2357ba=_0xd71059,_0x491636=[];if(!_0x43ca4e||!Array[_0x2357ba(0x22d)](_0x43ca4e))return _0x491636;const _0x8ea5b9=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':'FileNotFound','tool':_0x2357ba(0x242)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x2357ba(0x156),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x2357ba(0x21e),'tool':_0x2357ba(0x242)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x2357ba(0x1a8),'tool':_0x2357ba(0x242)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':'RipgrepError','tool':_0x2357ba(0x175)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x2357ba(0x1d0),'tool':_0x2357ba(0x175)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x2357ba(0x1a8),'tool':_0x2357ba(0x242)},{'pattern':/\[SYMLINK\]/,'error_type':_0x2357ba(0x1a5),'tool':'read'},{'pattern':/not a text file/,'error_type':_0x2357ba(0x1a8),'tool':_0x2357ba(0x242)},{'pattern':/symbolic link/,'error_type':_0x2357ba(0x1a5),'tool':_0x2357ba(0x242)},{'pattern':/Error reading file:/,'error_type':_0x2357ba(0x21e),'tool':_0x2357ba(0x242)},{'pattern':/status="error"/,'error_type':'ToolException','tool':'unknown'}];let _0x73b099=0x0;for(const _0x519eb2 of _0x43ca4e){if(_0x519eb2[_0x2357ba(0x1c3)]==='user'){_0x73b099++;const _0x1c8a14=_0x519eb2['content'];if(!_0x1c8a14||typeof _0x1c8a14!==_0x2357ba(0x1dd))continue;for(const {pattern:_0x5f4e08,error_type:_0x5cf777,tool:_0xe1048f}of _0x8ea5b9){const _0x4700ae=_0x1c8a14[_0x2357ba(0x1b9)](new RegExp(_0x5f4e08[_0x2357ba(0x1a3)],'g'));if(_0x4700ae)for(const _0x12005c of _0x4700ae){const _0x2a6ec8=_0x1c8a14[_0x2357ba(0x169)](_0x12005c),_0x1c32e3=_0x1c8a14[_0x2357ba(0x173)](_0x2a6ec8,Math[_0x2357ba(0x1ae)](_0x2a6ec8+0xc8,_0x1c8a14[_0x2357ba(0x217)]));_0x491636['push']({'tool':_0xe1048f,'error_type':_0x5cf777,'error_message':_0x1c32e3['split']('\x0a')[0x0],'turn':_0x73b099});}}}}return _0x491636;};try{const _0x506144=a0_0x5e6b08['resolve'](_0x18b1b9[_0xd71059(0x154)][_0xd71059(0x20b)]),_0x53a198=_0x18b1b9['data']['search_type'],_0x43d155=_0x53a198===_0xd71059(0x20a)?{'allowNames':[_0xd71059(0x20a)]}:undefined,_0x27d961=new LocalRipgrepProvider(_0x506144,undefined,_0x43d155),_0x191f7c=await runWarpGrep({'searchTerm':_0x18b1b9[_0xd71059(0x154)][_0xd71059(0x214)],'repoRoot':_0x506144,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x27d961,'search_type':_0x53a198}),_0x21835b=_0x4881db(_0x191f7c['messages']);_0x21835b[_0xd71059(0x217)]>0x0&&reportMorphError({'error_message':_0xd71059(0x244)+_0x21835b[_0xd71059(0x217)]+_0xd71059(0x1e6),'error_type':'SubToolError','level':'warn','tool':_0xd71059(0x248),'context':{'repo_path':_0x18b1b9[_0xd71059(0x154)]['repo_path'],'query':_0x18b1b9[_0xd71059(0x154)][_0xd71059(0x214)],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x191f7c['terminationReason'],'sub_tool_errors':_0x21835b,'timings':_0x191f7c[_0xd71059(0x1c6)],'tool_calls':_0x53437d(_0x191f7c[_0xd71059(0x213)]),'messages':_0x191f7c[_0xd71059(0x213)]?.[_0xd71059(0x1e2)](_0x28e01b=>({'role':_0x28e01b[_0xd71059(0x1c3)],'content':_0x28e01b[_0xd71059(0x18a)]}))},'source':_0xd71059(0x17b)})[_0xd71059(0x241)](()=>{});let _0x16838a='';if(_0x191f7c[_0xd71059(0x23d)]===_0xd71059(0x1cb)&&_0x191f7c[_0xd71059(0x201)]?.[_0xd71059(0x1eb)]?.[_0xd71059(0x230)]){const _0x5f5488=_0x191f7c['finish'][_0xd71059(0x1eb)][_0xd71059(0x230)];if(_0x5f5488[_0xd71059(0x217)]===0x0)return _0x16838a=_0x191f7c[_0xd71059(0x201)][_0xd71059(0x1a2)]||_0xd71059(0x160),{'content':[{'type':_0xd71059(0x1d8),'text':_0x16838a}]};const _0x32b79e=[],_0x142498=[_0xd71059(0x1bd)];for(const _0xfd73a7 of _0x191f7c['messages']){const _0x46000a=_0xfd73a7[_0xd71059(0x1c3)],_0x172a65=_0xfd73a7['content'];if(_0x46000a==='assistant'&&_0x172a65){const _0x274022=_0x172a65[_0xd71059(0x1f6)]('\x0a')['filter'](_0x2240e6=>_0x2240e6['trim']());for(const _0x4219d9 of _0x274022){const _0x1828a9=_0x4219d9['match'](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x1828a9){_0x142498[_0xd71059(0x199)]('-\x20Grepped\x20\x27'+_0x1828a9[0x1]+_0xd71059(0x16c)+_0x1828a9[0x2]+'`');continue;}const _0x5d2788=_0x4219d9['match'](/^read\s+(.+)$/);if(_0x5d2788){_0x142498[_0xd71059(0x199)](_0xd71059(0x1df)+_0x5d2788[0x1]+'`');continue;}const _0x2edefc=_0x4219d9[_0xd71059(0x1b9)](/^list_directory\s+(.+)$/);if(_0x2edefc){_0x142498[_0xd71059(0x199)]('-\x20Listed\x20directory\x20`'+_0x2edefc[0x1]+'`');continue;}}}}_0x32b79e[_0xd71059(0x199)](_0x142498['join']('\x0a'));const _0x5a7cea=['','Relevant\x20context\x20found:'];for(const _0x472507 of _0x5f5488){if(_0x472507[_0xd71059(0x218)]==='*')_0x5a7cea['push']('-\x20'+_0x472507[_0xd71059(0x1a6)]+':*');else{if(Array[_0xd71059(0x22d)](_0x472507[_0xd71059(0x218)])){const _0x200eb1=_0x472507[_0xd71059(0x218)][_0xd71059(0x1e2)](([_0x2aee88,_0x45e888])=>{if(_0x2aee88===_0x45e888)return''+_0x2aee88;return _0x2aee88+'-'+_0x45e888;});_0x5a7cea[_0xd71059(0x199)]('-\x20'+_0x472507[_0xd71059(0x1a6)]+':'+_0x200eb1[_0xd71059(0x1b0)](','));}else _0x5a7cea[_0xd71059(0x199)]('-\x20'+_0x472507['path']+':*');}}_0x5a7cea['push'](''),_0x32b79e['push'](_0x5a7cea['join']('\x0a')),_0x32b79e[_0xd71059(0x199)](_0xd71059(0x1ef));const _0xe4f0ae=[];for(const _0x4b8601 of _0x5f5488){let _0x113e31=a0_0x5e6b08[_0xd71059(0x19b)](_0x18b1b9['data']['repo_path'],_0x4b8601[_0xd71059(0x1a6)]),_0x20215e=null,_0x641f93=null;try{_0x20215e=await a0_0x8c62a7['readFile'](_0x113e31,{'encoding':_0xd71059(0x1dc)});}catch(_0x37b659){const _0x4ddfbf=fixPathRepetition(_0x113e31);if(_0x4ddfbf)try{_0x20215e=await a0_0x8c62a7['readFile'](_0x4ddfbf,{'encoding':_0xd71059(0x1dc)}),_0x113e31=_0x4ddfbf;}catch{_0x641f93=_0x37b659 instanceof Error?_0x37b659:new Error(String(_0x37b659));}else _0x641f93=_0x37b659 instanceof Error?_0x37b659:new Error(String(_0x37b659));}if(_0x20215e!==null){const _0xe0d44d=_0x20215e[_0xd71059(0x1f6)](/\r?\n/),_0x1c3940=['<file\x20path=\x22'+_0x4b8601[_0xd71059(0x1a6)]+'\x22>'];if(_0x4b8601[_0xd71059(0x218)]==='*'||!Array['isArray'](_0x4b8601[_0xd71059(0x218)]))for(let _0xa53b7c=0x1;_0xa53b7c<=_0xe0d44d['length'];_0xa53b7c++){const _0x9d28a2=_0xe0d44d[_0xa53b7c-0x1];_0x1c3940['push'](_0xa53b7c+'|\x20'+_0x9d28a2);}else for(const [_0x4d54c4,_0x73a4de]of _0x4b8601['lines']){_0x1c3940[_0xd71059(0x217)]>0x1&&_0x1c3940[_0xd71059(0x199)]('');for(let _0x4ed7df=_0x4d54c4;_0x4ed7df<=_0x73a4de&&_0x4ed7df<=_0xe0d44d[_0xd71059(0x217)];_0x4ed7df++){const _0x58d05c=_0xe0d44d[_0x4ed7df-0x1];_0x1c3940[_0xd71059(0x199)](_0x4ed7df+'|\x20'+_0x58d05c);}}_0x1c3940[_0xd71059(0x199)]('</file>'),_0xe4f0ae['push'](_0x1c3940[_0xd71059(0x1b0)]('\x0a'));}else _0xe4f0ae['push']('<file\x20path=\x22'+_0x4b8601['path']+_0xd71059(0x240)+(_0x641f93?.['message']||_0xd71059(0x1ea))+'\x0a</file>');}_0x32b79e[_0xd71059(0x199)](_0xe4f0ae[_0xd71059(0x1b0)]('\x0a\x0a')),_0x16838a=_0x32b79e[_0xd71059(0x1b0)]('\x0a');const _0x497d79=_0x191f7c[_0xd71059(0x1e3)]?.[_0xd71059(0x1bb)](_0x591025=>_0x591025[_0xd71059(0x1bf)]?.[_0xd71059(0x239)]('File\x20read\x20error:'))||[];if(_0x497d79[_0xd71059(0x217)]>0x0){const _0x17b19c=_0x497d79[_0xd71059(0x1e2)](_0x649405=>_0x649405['message'])['join'](';\x20');reportMorphError({'error_message':_0x17b19c,'error_type':_0xd71059(0x1be),'context':{'tool':_0xd71059(0x248),'repo_path':_0x18b1b9['data'][_0xd71059(0x20b)],'query':_0x18b1b9['data']['search_string'],'model':_0xd71059(0x21f),'termination_reason':_0xd71059(0x1a4),'error_count':_0x497d79[_0xd71059(0x217)],'is_timeout':![],'timings':_0x191f7c[_0xd71059(0x1c6)],'files_attempted':_0x5f5488[_0xd71059(0x1e2)](_0x4ee5b5=>({'path':_0x4ee5b5[_0xd71059(0x1a6)],'lines':_0x4ee5b5['lines']})),'tool_calls':_0x53437d(_0x191f7c['messages']),'messages':_0x191f7c[_0xd71059(0x213)]?.['map'](_0x7e8f69=>({'role':_0x7e8f69['role'],'content':_0x7e8f69[_0xd71059(0x18a)]})),'request_content':{'query':_0x18b1b9['data'][_0xd71059(0x214)],'repo_path':_0x18b1b9[_0xd71059(0x154)][_0xd71059(0x20b)],'repoRoot':a0_0x5e6b08[_0xd71059(0x19b)](_0x18b1b9[_0xd71059(0x154)][_0xd71059(0x20b)]),'model':_0xd71059(0x21f)}},'source':_0xd71059(0x17b)})[_0xd71059(0x241)](()=>{});}}else{if(_0x191f7c['terminationReason']===_0xd71059(0x228)&&_0x191f7c[_0xd71059(0x1e3)]['length']>0x0){const _0x2fa8fa=_0x191f7c[_0xd71059(0x1e3)][_0xd71059(0x1e2)](_0x1ddd9c=>_0x1ddd9c[_0xd71059(0x1bf)])[_0xd71059(0x1b0)](';\x20');_0x16838a=_0xd71059(0x20c)+_0x2fa8fa;const _0x3af85=_0x2fa8fa[_0xd71059(0x1ff)]()['includes'](_0xd71059(0x20e))||_0x2fa8fa[_0xd71059(0x1ff)]()[_0xd71059(0x157)](_0xd71059(0x203))||_0x2fa8fa[_0xd71059(0x1ff)]()[_0xd71059(0x157)](_0xd71059(0x16f)),_0x2cc81b=_0x191f7c['finish']?.['metadata']?.[_0xd71059(0x230)],_0x136493=_0x191f7c[_0xd71059(0x1e3)][0x0];reportMorphError({'error_message':_0x2fa8fa,'error_type':_0x3af85?'TimeoutError':_0x136493?.[_0xd71059(0x22e)]?.['name']||_0xd71059(0x208),'context':{'tool':_0xd71059(0x248),'repo_path':_0x18b1b9[_0xd71059(0x154)]['repo_path'],'query':_0x18b1b9['data']['search_string'],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x191f7c[_0xd71059(0x23d)],'error_count':_0x191f7c['errors']['length'],'is_timeout':_0x3af85,'timings':_0x191f7c[_0xd71059(0x1c6)],'files_attempted':_0x2cc81b?.['map'](_0x3e16d4=>({'path':_0x3e16d4['path'],'lines':_0x3e16d4[_0xd71059(0x218)]})),'tool_calls':_0x53437d(_0x191f7c[_0xd71059(0x213)]),'messages':_0x191f7c[_0xd71059(0x213)]?.[_0xd71059(0x1e2)](_0x5ebcb4=>({'role':_0x5ebcb4[_0xd71059(0x1c3)],'content':_0x5ebcb4[_0xd71059(0x18a)]})),'request_content':{'query':_0x18b1b9['data'][_0xd71059(0x214)],'repo_path':_0x18b1b9['data'][_0xd71059(0x20b)],'repoRoot':a0_0x5e6b08['resolve'](_0x18b1b9['data'][_0xd71059(0x20b)]),'model':_0xd71059(0x21f)}},'stack_trace':_0x136493?.[_0xd71059(0x1e5)]||undefined,'source':_0xd71059(0x17b)})[_0xd71059(0x241)](()=>{});}else _0x16838a='Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.';}return{'content':[{'type':_0xd71059(0x1d8),'text':_0x16838a}]};}catch(_0x14c62c){const _0x59b80d=_0x14c62c instanceof Error?_0x14c62c[_0xd71059(0x1bf)]:String(_0x14c62c),_0x57d126=_0x59b80d['toLowerCase']()[_0xd71059(0x157)](_0xd71059(0x20e))||_0x59b80d[_0xd71059(0x1ff)]()[_0xd71059(0x157)](_0xd71059(0x203))||_0x59b80d[_0xd71059(0x1ff)]()[_0xd71059(0x157)](_0xd71059(0x16f))||_0x14c62c instanceof Error&&_0x14c62c[_0xd71059(0x219)]===_0xd71059(0x18c);return reportMorphError({'error_message':_0x59b80d,'error_type':_0x57d126?'TimeoutError':_0x14c62c instanceof Error?_0x14c62c[_0xd71059(0x22e)]['name']:_0xd71059(0x1c8),'context':{'tool':_0xd71059(0x248),'repo_path':_0x18b1b9[_0xd71059(0x154)][_0xd71059(0x20b)],'query':_0x18b1b9[_0xd71059(0x154)]['search_string'],'model':_0xd71059(0x21f),'is_timeout':_0x57d126,'exception_phase':_0xd71059(0x1aa),'request_content':{'query':_0x18b1b9[_0xd71059(0x154)]['search_string'],'repo_path':_0x18b1b9[_0xd71059(0x154)][_0xd71059(0x20b)],'repoRoot':a0_0x5e6b08['resolve'](_0x18b1b9[_0xd71059(0x154)][_0xd71059(0x20b)]),'model':_0xd71059(0x21f)}},'stack_trace':_0x14c62c instanceof Error?_0x14c62c['stack']:undefined,'source':_0xd71059(0x17b)})[_0xd71059(0x241)](()=>{}),{'content':[{'type':_0xd71059(0x1d8),'text':_0xd71059(0x196)+_0x59b80d}],'isError':![]};}}case _0xd71059(0x1c7):{const _0x3054b5=WarpGrepGitHubArgsSchema[_0xd71059(0x212)](_0x52ad0a);if(!_0x3054b5[_0xd71059(0x170)])return{'content':[{'type':_0xd71059(0x1d8),'text':_0xd71059(0x206)+_0x3054b5[_0xd71059(0x246)]}],'isError':!![]};const _0x3b8a67=_0x3054b5[_0xd71059(0x154)][_0xd71059(0x211)]||_0x3054b5[_0xd71059(0x154)][_0xd71059(0x22f)];if(!_0x3b8a67)return{'content':[{'type':'text','text':_0xd71059(0x195)}],'isError':!![]};const _0x2d8e20=MORPH_API_KEY;if(!_0x2d8e20)throw new Error(_0xd71059(0x235));const _0x1f916d=Date['now']();logMcpStderr(_0xd71059(0x21a)+_0x3b8a67+_0xd71059(0x189)+_0x3054b5[_0xd71059(0x154)][_0xd71059(0x214)]+'\x22');try{const _0xb7d95=new WarpGrepClient({'morphApiKey':_0x2d8e20,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0xf9a009=await _0xb7d95['searchGitHub']({'searchTerm':_0x3054b5['data']['search_string'],'github':_0x3b8a67,'branch':_0x3054b5[_0xd71059(0x154)][_0xd71059(0x1f8)]}),_0x133a28=Date[_0xd71059(0x164)]()-_0x1f916d;logMcpStderr(_0xd71059(0x245)+_0x133a28+_0xd71059(0x1a9)+_0xf9a009[_0xd71059(0x170)]);const _0x2a17e0=formatResult(_0xf9a009);return{'content':[{'type':_0xd71059(0x1d8),'text':_0x2a17e0}]};}catch(_0x33a40b){const _0x2e0785=Date[_0xd71059(0x164)]()-_0x1f916d,_0x328072=_0x33a40b instanceof Error?_0x33a40b['message']:String(_0x33a40b);return logMcpStderr('[github_codebase_search]\x20Failed\x20in\x20'+_0x2e0785+_0xd71059(0x1bc),_0x328072),reportMorphError({'error_message':_0x328072,'error_type':_0x33a40b instanceof Error?_0x33a40b[_0xd71059(0x22e)][_0xd71059(0x219)]:_0xd71059(0x1c8),'context':{'tool':_0xd71059(0x1c7),'github_url':_0x3b8a67,'search_string':_0x3054b5[_0xd71059(0x154)][_0xd71059(0x214)],'branch':_0x3054b5[_0xd71059(0x154)][_0xd71059(0x1f8)]},'stack_trace':_0x33a40b instanceof Error?_0x33a40b['stack']:undefined,'source':_0xd71059(0x17b),'tool':'github_codebase_search','latency_ms':_0x2e0785})['catch'](()=>{}),{'content':[{'type':_0xd71059(0x1d8),'text':'GitHub\x20search\x20failed:\x20'+_0x328072}],'isError':![]};}}default:throw new Error(_0xd71059(0x17c)+_0x4959a5);}}catch(_0x1caef5){const _0x3c51a1=_0x1caef5 instanceof Error?_0x1caef5[_0xd71059(0x1bf)]:String(_0x1caef5);return reportMorphError({'error_message':_0x3c51a1,'error_type':_0x1caef5 instanceof Error?_0x1caef5[_0xd71059(0x22e)][_0xd71059(0x219)]:'UnknownError','context':{'tool':_0x4959a5,'arguments':_0x52ad0a?JSON['stringify'](_0x52ad0a)['substring'](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x1caef5 instanceof Error?_0x1caef5['stack']:undefined,'source':_0xd71059(0x17b)})[_0xd71059(0x241)](()=>{}),{'content':[{'type':_0xd71059(0x1d8),'text':_0xd71059(0x20c)+_0x3c51a1}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x57e70b){const _0x13a1d7=a0_0x5417d0,_0x2d3e40=await getValidRootDirectories(_0x57e70b);if(_0x2d3e40['length']>0x0)allowedDirectories=[..._0x2d3e40],logMcpStderr(_0x13a1d7(0x15d)+_0x2d3e40[_0x13a1d7(0x217)]+_0x13a1d7(0x1cd));else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x4a29b9=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x4a29b9&&(allowedDirectories=[_0x4a29b9],logMcpStderr(_0x13a1d7(0x1b4)+_0x4a29b9));}catch(_0x2a51f8){logMcpStderr(_0x13a1d7(0x174)+_0x2a51f8);}}}server[a0_0x5417d0(0x220)](RootsListChangedNotificationSchema,async()=>{const _0x4a2f3e=a0_0x5417d0;try{const _0x18bd0b=await server[_0x4a2f3e(0x1e0)]();_0x18bd0b&&_0x4a2f3e(0x188)in _0x18bd0b&&await updateAllowedDirectoriesFromRoots(_0x18bd0b[_0x4a2f3e(0x188)]);}catch(_0x1573cf){logMcpStderr(_0x4a2f3e(0x233),_0x1573cf instanceof Error?_0x1573cf[_0x4a2f3e(0x1bf)]:String(_0x1573cf));}}),server[a0_0x5417d0(0x1ee)]=async()=>{const _0x101408=a0_0x5417d0,_0x32d2d0=server[_0x101408(0x231)]();if(_0x32d2d0?.['roots'])try{const _0x39344d=await server[_0x101408(0x1e0)]();_0x39344d&&_0x101408(0x188)in _0x39344d?await updateAllowedDirectoriesFromRoots(_0x39344d[_0x101408(0x188)]):logMcpStderr(_0x101408(0x1e8));}catch(_0x1768c9){logMcpStderr('Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:',_0x1768c9 instanceof Error?_0x1768c9[_0x101408(0x1bf)]:String(_0x1768c9));}else{if(allowedDirectories['length']>0x0)logMcpStderr(_0x101408(0x21d),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode');else throw new Error(_0x101408(0x216));}}};async function runServer(){const _0x558449=a0_0x5417d0,_0x5b81b1=new StdioServerTransport();await server[_0x558449(0x1ce)](_0x5b81b1),logMcpStderr(_0x558449(0x1d3)),allowedDirectories[_0x558449(0x217)]===0x0&&logMcpStderr(_0x558449(0x1b1));}runServer()[a0_0x5417d0(0x241)](_0x4371b5=>{const _0x36b4b0=a0_0x5417d0;logMcpStderr('Fatal\x20error\x20running\x20server:',_0x4371b5),process[_0x36b4b0(0x198)](0x1);});
2
+ const a0_0x444965=a0_0x2930;(function(_0xe86024,_0x1f8e2a){const _0x40ac54=a0_0x2930,_0x5db14f=_0xe86024();while(!![]){try{const _0x486139=-parseInt(_0x40ac54(0x175))/0x1*(-parseInt(_0x40ac54(0xdf))/0x2)+parseInt(_0x40ac54(0xe9))/0x3+-parseInt(_0x40ac54(0x179))/0x4*(parseInt(_0x40ac54(0xfc))/0x5)+parseInt(_0x40ac54(0x12c))/0x6*(parseInt(_0x40ac54(0xa1))/0x7)+parseInt(_0x40ac54(0x174))/0x8*(parseInt(_0x40ac54(0xf5))/0x9)+parseInt(_0x40ac54(0x182))/0xa+-parseInt(_0x40ac54(0xbb))/0xb*(parseInt(_0x40ac54(0x101))/0xc);if(_0x486139===_0x1f8e2a)break;else _0x5db14f['push'](_0x5db14f['shift']());}catch(_0x25cbbd){_0x5db14f['push'](_0x5db14f['shift']());}}}(a0_0x47b8,0xe0d50));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_0x15f2b5 from'fs/promises';import a0_0x1f560b from'path';import a0_0x342a8b from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import a0_0x2ab830 from'axios';function fixPathRepetition(_0x5296ec){const _0x346309=a0_0x2930,_0x21ec54=_0x5296ec[_0x346309(0xa3)](a0_0x1f560b[_0x346309(0xee)])[_0x346309(0x142)](Boolean);if(_0x21ec54['length']<0x2)return null;for(let _0x349f64=Math[_0x346309(0x170)](_0x21ec54[_0x346309(0xa7)]/0x2);_0x349f64>=0x1;_0x349f64--){for(let _0x42d8d1=0x0;_0x42d8d1<=_0x21ec54['length']-0x2*_0x349f64;_0x42d8d1++){const _0x3be415=_0x21ec54[_0x346309(0x151)](_0x42d8d1,_0x42d8d1+_0x349f64),_0x1c597e=_0x21ec54['slice'](_0x42d8d1+_0x349f64,_0x42d8d1+0x2*_0x349f64);if(_0x3be415[_0x346309(0xdc)]((_0x2da36e,_0x2261b7)=>_0x2da36e===_0x1c597e[_0x2261b7])){const _0x5694aa=[..._0x21ec54['slice'](0x0,_0x42d8d1),..._0x21ec54[_0x346309(0x151)](_0x42d8d1+_0x349f64)];return a0_0x1f560b['sep']+_0x5694aa['join'](a0_0x1f560b[_0x346309(0xee)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x30b182=a0_0x2930;try{const _0x1b313f=require(_0x30b182(0x164));return _0x1b313f['version']??_0x30b182(0xe8);}catch(_0x1d1d2d){return logMcpStderr(_0x30b182(0x15e),_0x1d1d2d),_0x30b182(0xe8);}}function printHelp(){const _0x169ee2=a0_0x2930;console[_0x169ee2(0xea)](_0x169ee2(0x14a)+getPackageVersion()),console[_0x169ee2(0xea)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0x169ee2(0xea)](_0x169ee2(0x88)),console['log']('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x169ee2(0xea)](_0x169ee2(0x107)),console[_0x169ee2(0xea)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console['log'](_0x169ee2(0xde)),console[_0x169ee2(0xea)](_0x169ee2(0xd5)),console['log']('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process['argv'][a0_0x444965(0x151)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set([a0_0x444965(0x122),'-h']);cliArgs[a0_0x444965(0x109)](_0x74bba0=>VERSION_FLAGS[a0_0x444965(0x16e)](_0x74bba0))&&(console['log'](a0_0x444965(0x14a)+getPackageVersion()),process[a0_0x444965(0x12e)](0x0));cliArgs['some'](_0x476688=>HELP_FLAGS['has'](_0x476688))&&(printHelp(),process[a0_0x444965(0x12e)](0x0));function getCliArg(_0x202a5a){const _0x5ed05d=a0_0x444965;for(let _0x2b2f33=0x0;_0x2b2f33<cliArgs[_0x5ed05d(0xa7)];_0x2b2f33++){const _0x316e11=cliArgs[_0x2b2f33];if(_0x316e11[_0x5ed05d(0xbc)]('--'+_0x202a5a+'='))return _0x316e11[_0x5ed05d(0x151)](('--'+_0x202a5a+'=')[_0x5ed05d(0xa7)]);if(_0x316e11==='--'+_0x202a5a&&_0x2b2f33+0x1<cliArgs[_0x5ed05d(0xa7)])return cliArgs[_0x2b2f33+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x444965(0xa7)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x444965(0x16e)](arg)||HELP_FLAGS[a0_0x444965(0x16e)](arg))continue;if(arg[a0_0x444965(0xbc)](a0_0x444965(0xf8)))continue;if(arg==='--api-key'){i++;continue;}args[a0_0x444965(0xca)](arg);}const WORKSPACE_ROOT=process[a0_0x444965(0xa8)][a0_0x444965(0xe2)]||process[a0_0x444965(0xa8)][a0_0x444965(0x7f)]||process[a0_0x444965(0xd1)](),ENABLE_WORKSPACE_MODE=process[a0_0x444965(0xa8)]['ENABLE_WORKSPACE_MODE']!==a0_0x444965(0x168),MORPH_API_KEY=getCliArg('api-key')??process[a0_0x444965(0xa8)][a0_0x444965(0x184)],MORPH_API_URL=process[a0_0x444965(0xa8)][a0_0x444965(0x9e)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x444965(0xa8)][a0_0x444965(0x90)]?parseInt(process['env']['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x444965(0x125),'codebase_search','github_codebase_search']),DISABLED_TOOLS=process[a0_0x444965(0xa8)]['DISABLED_TOOLS']?new Set(process['env'][a0_0x444965(0x108)][a0_0x444965(0xa3)](',')[a0_0x444965(0x94)](_0x2597af=>_0x2597af[a0_0x444965(0x185)]())['filter'](_0x388ddb=>_0x388ddb[a0_0x444965(0xa7)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0x444965(0xf4)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x444965(0x16e)](tool)&&console[a0_0x444965(0x18a)](a0_0x444965(0xb4)+tool+'\x22.\x20Known\x20tools:\x20'+[...KNOWN_TOOL_NAMES]['join'](',\x20'));}console[a0_0x444965(0x18a)](a0_0x444965(0xb7)+[...DISABLED_TOOLS]['join'](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x444965(0xbc)](a0_0x444965(0xac))&&!MORPH_API_KEY['startsWith'](a0_0x444965(0xa5))&&logMcpStderr(a0_0x444965(0x111));async function reportMorphError(_0x1aac6a){const _0x81438d=a0_0x444965;try{await a0_0x2ab830[_0x81438d(0xbf)]('https://morphllm.com/api/error-report',{..._0x1aac6a,'timestamp':new Date()[_0x81438d(0x171)](),'source':_0x1aac6a['source']||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x1aac6a[_0x81438d(0xd9)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x81438d(0x163),'Authorization':_0x81438d(0x134)+MORPH_API_KEY}});}catch{}}args['length']===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x444965(0xec)),logMcpStderr(a0_0x444965(0x14c)),logMcpStderr(a0_0x444965(0x118)),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr(a0_0x444965(0x147)),logMcpStderr(a0_0x444965(0x15f)));function normalizePath(_0x54ea06){const _0x46e948=a0_0x444965;return a0_0x1f560b[_0x46e948(0x187)](_0x54ea06);}function a0_0x2930(_0x3a00cf,_0x3b673d){_0x3a00cf=_0x3a00cf-0x7f;const _0x47b805=a0_0x47b8();let _0x29307a=_0x47b805[_0x3a00cf];return _0x29307a;}function expandHome(_0x1908a2){const _0x15db7e=a0_0x444965;if(_0x1908a2[_0x15db7e(0xbc)]('~/')||_0x1908a2==='~')return a0_0x1f560b[_0x15db7e(0x115)](a0_0x342a8b[_0x15db7e(0x17b)](),_0x1908a2[_0x15db7e(0x151)](0x1));return _0x1908a2;}let allowedDirectories=await Promise[a0_0x444965(0xe5)](args[a0_0x444965(0x94)](async _0x3c5860=>{const _0x31e398=a0_0x444965,_0x1467b0=expandHome(_0x3c5860),_0x4cb00c=a0_0x1f560b[_0x31e398(0x97)](_0x1467b0);try{const _0x1ad698=await a0_0x15f2b5[_0x31e398(0x181)](_0x4cb00c);return normalizePath(_0x1ad698);}catch(_0xfeefc5){return normalizePath(_0x4cb00c);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x444965(0xa7)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x444965(0xca)](workspaceDir),logMcpStderr(a0_0x444965(0x173)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x37e0ad){logMcpStderr(a0_0x444965(0xc4)+a0_0x37e0ad);}async function detectWorkspaceRoot(_0x349d06){const _0x17b8f4=a0_0x444965;let _0x166577=a0_0x1f560b[_0x17b8f4(0x97)](_0x349d06);const _0x5d3dcf=[_0x17b8f4(0x96),_0x17b8f4(0xc9),_0x17b8f4(0x16c),_0x17b8f4(0x12d),_0x17b8f4(0x140),'go.mod','.cursor',_0x17b8f4(0x131),'composer.json'];while(_0x166577!==a0_0x1f560b[_0x17b8f4(0x135)](_0x166577)){for(const _0x275291 of _0x5d3dcf){const _0x1bf1db=a0_0x1f560b[_0x17b8f4(0x115)](_0x166577,_0x275291);try{return await a0_0x15f2b5[_0x17b8f4(0xb9)](_0x1bf1db),normalizePath(_0x166577);}catch{}}_0x166577=a0_0x1f560b[_0x17b8f4(0x135)](_0x166577);}return normalizePath(_0x349d06);}await Promise[a0_0x444965(0xe5)](args[a0_0x444965(0x94)](async _0x224dcd=>{const _0x3ea8a9=a0_0x444965;try{const _0x27f723=await a0_0x15f2b5[_0x3ea8a9(0x99)](expandHome(_0x224dcd));!_0x27f723[_0x3ea8a9(0xff)]()&&(logMcpStderr('Error:\x20'+_0x224dcd+_0x3ea8a9(0xb2)),process['exit'](0x1));}catch(_0xfc499c){logMcpStderr(_0x3ea8a9(0x183)+_0x224dcd+':',_0xfc499c),process['exit'](0x1);}}));async function validatePath(_0x3655dc){const _0x51b53e=a0_0x444965,_0x2befce=expandHome(_0x3655dc),_0x56133b=a0_0x1f560b[_0x51b53e(0x97)](_0x2befce);try{const _0x5b96a2=await a0_0x15f2b5[_0x51b53e(0x181)](_0x56133b);return _0x5b96a2;}catch(_0x2d70ae){if(_0x2d70ae[_0x51b53e(0xa0)]===_0x51b53e(0xed)){const _0x5a7b21=a0_0x1f560b[_0x51b53e(0x135)](_0x56133b);try{const _0x16ff44=await a0_0x15f2b5[_0x51b53e(0x181)](_0x5a7b21);return a0_0x1f560b[_0x51b53e(0x115)](_0x16ff44,a0_0x1f560b[_0x51b53e(0xf6)](_0x56133b));}catch{throw new Error(_0x51b53e(0x161)+_0x5a7b21);}}throw _0x2d70ae;}}const MorphEditFileArgsSchema=z['object']({'path':z['string'](),'code_edit':z[a0_0x444965(0xfe)]()[a0_0x444965(0xef)]('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z[a0_0x444965(0xfe)]()[a0_0x444965(0xef)](a0_0x444965(0x86)),'dryRun':z[a0_0x444965(0x127)]()[a0_0x444965(0x129)](![])['describe'](a0_0x444965(0xd3))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x444965(0x17e),WarpGrepArgsSchema=z[a0_0x444965(0x16f)]({'search_string':z['string']()[a0_0x444965(0xef)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z['string']()[a0_0x444965(0xef)]('The\x20absolute\x20path\x20of\x20the\x20folder\x20where\x20the\x20search\x20should\x20be\x20performed.\x20In\x20multi-repo\x20workspaces,\x20you\x20have\x20to\x20specify\x20a\x20subfolder\x20where\x20the\x20search\x20should\x20be\x20performed,\x20to\x20avoid\x20searching\x20across\x20all\x20repos'),'search_type':z['enum'](['default',a0_0x444965(0xaa)])[a0_0x444965(0x113)]()[a0_0x444965(0xef)]('Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.')}),WarpGrepGitHubArgsSchema=z[a0_0x444965(0x16f)]({'search_string':z[a0_0x444965(0xfe)]()[a0_0x444965(0xef)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x444965(0xfe)]()[a0_0x444965(0x113)]()['describe'](a0_0x444965(0x11d)),'owner_repo':z['string']()[a0_0x444965(0x113)]()['describe'](a0_0x444965(0x98)),'branch':z[a0_0x444965(0xfe)]()['optional']()['describe'](a0_0x444965(0x14b))}),CodebaseSearchArgsSchema=z[a0_0x444965(0x16f)]({'query':z[a0_0x444965(0xfe)]()[a0_0x444965(0xef)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x444965(0xfe)]()[a0_0x444965(0xef)](a0_0x444965(0x8b)),'branch':z['string']()['optional']()['describe']('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x444965(0xfe)]()['optional']()[a0_0x444965(0xef)](a0_0x444965(0xd2)),'targetDirectories':z[a0_0x444965(0x10e)](z[a0_0x444965(0xfe)]())[a0_0x444965(0x129)]([])[a0_0x444965(0xef)](a0_0x444965(0x11f)),'limit':z[a0_0x444965(0xda)]()[a0_0x444965(0x113)]()[a0_0x444965(0x129)](0xa)[a0_0x444965(0xef)](a0_0x444965(0xcc))}),server=new Server({'name':a0_0x444965(0xc5),'version':a0_0x444965(0x12a)},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x292c3e=a0_0x444965,_0x16f0b4=[{'name':_0x292c3e(0x125),'description':_0x292c3e(0x11a)+'⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a'+'🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a'+_0x292c3e(0xb6)+_0x292c3e(0x169)+_0x292c3e(0x14f)+_0x292c3e(0x177)+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+_0x292c3e(0x8e)+_0x292c3e(0x8d)+'ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a'+_0x292c3e(0x148)+_0x292c3e(0xeb)+_0x292c3e(0x13d)+_0x292c3e(0x85)+'Rules:\x0a'+_0x292c3e(0xe7)+_0x292c3e(0x144)+_0x292c3e(0x103)+_0x292c3e(0x10f)+_0x292c3e(0x13b)+_0x292c3e(0x8f)+_0x292c3e(0x124),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x292c3e(0xa9),'description':_0x292c3e(0x119)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x292c3e(0xf9)+'You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20'+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x15b6e3=_0x16f0b4[_0x292c3e(0x142)](_0x22b755=>{const _0x3a3a6b=_0x292c3e;if(DISABLED_TOOLS[_0x3a3a6b(0x16e)](_0x22b755[_0x3a3a6b(0x13a)]))return console[_0x3a3a6b(0x18a)](_0x3a3a6b(0xdb)+_0x22b755[_0x3a3a6b(0x13a)]+_0x3a3a6b(0x110)),![];if(_0x3a3a6b(0x116)in _0x22b755&&_0x22b755[_0x3a3a6b(0x116)]&&!MORPH_API_KEY)return logMcpStderr('Warning:\x20'+_0x22b755['name']+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x15b6e3['map'](_0x4fc509=>({'name':_0x4fc509[_0x292c3e(0x13a)],'description':_0x4fc509[_0x292c3e(0x8a)],'inputSchema':_0x4fc509[_0x292c3e(0x178)]}))};}),server[a0_0x444965(0x160)](CallToolRequestSchema,async _0x102dcb=>{const _0x500b25=a0_0x444965,{name:_0x2f223f,arguments:_0x27ba84}=_0x102dcb[_0x500b25(0xc6)];try{if(DISABLED_TOOLS['has'](_0x2f223f))throw new Error(_0x500b25(0xd0)+_0x2f223f+'\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable');switch(_0x2f223f){case _0x500b25(0x125):{const _0x2011e0=MorphEditFileArgsSchema[_0x500b25(0x12b)](_0x27ba84);if(!_0x2011e0[_0x500b25(0x17f)])throw new Error(_0x500b25(0xbd)+_0x2011e0[_0x500b25(0x18a)]);const _0x28ce79=await validatePath(_0x2011e0[_0x500b25(0x128)][_0x500b25(0x159)]);let _0x2be91d=null,_0x40a3e4=!![],_0x113164=null;try{_0x2be91d=await a0_0x15f2b5['readFile'](_0x28ce79,'utf-8');}catch(_0x2e81ee){const _0x40e4a0=_0x2e81ee[_0x500b25(0xa0)];_0x40e4a0===_0x500b25(0xed)?(_0x40a3e4=![],_0x2be91d=''):(_0x113164=_0x500b25(0x180)+(_0x40e4a0||_0x500b25(0xe8))+_0x500b25(0x156)+(_0x2e81ee instanceof Error?_0x2e81ee[_0x500b25(0xd7)]:String(_0x2e81ee)),logMcpStderr(_0x500b25(0xf0)+_0x113164));}let _0x4eaab4;try{const _0x519f70=MORPH_API_KEY;if(!_0x519f70)throw new Error(_0x500b25(0x112));const _0x4af24a=a0_0x1f560b['dirname'](_0x28ce79),_0x38987c=a0_0x1f560b[_0x500b25(0xf6)](_0x28ce79),_0x16df74=await executeEditFile({'target_filepath':_0x38987c,'code_edit':_0x2011e0[_0x500b25(0x128)][_0x500b25(0x14d)],'instructions':_0x2011e0[_0x500b25(0x128)][_0x500b25(0xad)]},{'morphApiKey':_0x519f70,'morphApiUrl':MORPH_API_URL,'baseDir':_0x4af24a,'autoWrite':!_0x2011e0[_0x500b25(0x128)][_0x500b25(0x13f)],'generateUdiff':![],'debug':![]});_0x4eaab4=_0x16df74[_0x500b25(0x8c)];if(!_0x16df74[_0x500b25(0x17f)])throw new Error(_0x16df74[_0x500b25(0x18a)]||_0x500b25(0xc7));const _0xdefb26=_0x16df74[_0x500b25(0xc2)],_0xf04faf=_0x500b25(0x81)+_0xdefb26[_0x500b25(0x9a)]+',\x20removed\x20'+_0xdefb26[_0x500b25(0xa6)]+_0x500b25(0xab)+_0xdefb26[_0x500b25(0x130)];if(_0x2011e0[_0x500b25(0x128)][_0x500b25(0x13f)])return{'content':[{'type':_0x500b25(0xb5),'text':'Morph\x20Edit\x20Preview'+(_0x40a3e4?'':_0x500b25(0x165))+':\x20'+_0x2011e0[_0x500b25(0x128)]['instruction']+_0x500b25(0x10b)+_0xf04faf+_0x500b25(0xbe)+_0x2011e0[_0x500b25(0x128)][_0x500b25(0x159)]+'.'}]};return{'content':[{'type':_0x500b25(0xb5),'text':_0x500b25(0xfb)+(_0x40a3e4?_0x500b25(0x16d):_0x500b25(0x172))+':\x20'+_0x2011e0['data'][_0x500b25(0xad)]+_0x500b25(0x10b)+_0xf04faf+_0x500b25(0xbe)+_0x2011e0['data'][_0x500b25(0x159)]+'.'}]};}catch(_0x127bce){const _0x3bca95=_0x127bce instanceof Error?_0x127bce[_0x500b25(0xd7)]:String(_0x127bce);return reportMorphError({'error_message':_0x3bca95,'error_type':_0x127bce instanceof Error?_0x127bce[_0x500b25(0x120)][_0x500b25(0x13a)]:_0x500b25(0xfa),'context':{'tool':_0x500b25(0x125),'completion_id':_0x4eaab4,'file_path':_0x2011e0[_0x500b25(0x128)][_0x500b25(0x159)],'validated_path':_0x28ce79,'instruction':_0x2011e0[_0x500b25(0x128)][_0x500b25(0xad)],'model':_0x500b25(0x145),'dry_run':_0x2011e0[_0x500b25(0x128)][_0x500b25(0x13f)],'file_exists':_0x40a3e4,'file_read_error':_0x113164,'file_readable':_0x2be91d!==null,'request_content':{'path':_0x2011e0['data'][_0x500b25(0x159)],'code_edit':_0x2011e0[_0x500b25(0x128)][_0x500b25(0x14d)],'instruction':_0x2011e0[_0x500b25(0x128)][_0x500b25(0xad)],'original_code':_0x2be91d!==null?_0x2be91d[_0x500b25(0xa7)]>0xc350?_0x2be91d[_0x500b25(0x9f)](0x0,0xc350)+_0x500b25(0xd4)+_0x2be91d[_0x500b25(0xa7)]+_0x500b25(0x87):_0x2be91d:_0x500b25(0xf3)+(_0x113164||_0x500b25(0xc3))+']','original_code_length':_0x2be91d?.[_0x500b25(0xa7)]??0x0,'model':'morph-v3-fast','dry_run':_0x2011e0['data'][_0x500b25(0x13f)]}},'stack_trace':_0x127bce instanceof Error?_0x127bce[_0x500b25(0xd8)]:undefined,'source':_0x500b25(0x102)})['catch'](()=>{}),{'content':[{'type':_0x500b25(0xb5),'text':_0x500b25(0x166)+_0x3bca95}],'isError':!![]};}}case _0x500b25(0xa9):{const _0x5b1917=WarpGrepArgsSchema[_0x500b25(0x12b)](_0x27ba84);if(!_0x5b1917['success'])return{'content':[{'type':_0x500b25(0xb5),'text':'Invalid\x20arguments:\x20'+_0x5b1917[_0x500b25(0x18a)]}],'isError':!![]};const _0x4d5ea5=_0x2ed168=>{const _0x2cf243=_0x500b25,_0x5ab478=[];for(const _0x43369f of _0x2ed168||[]){const _0x4fade3=_0x43369f[_0x2cf243(0x126)],_0x32f4d0=_0x43369f[_0x2cf243(0x82)];if(_0x4fade3===_0x2cf243(0x123)&&_0x32f4d0){const _0x1974d2=_0x32f4d0[_0x2cf243(0xa3)]('\x0a')[_0x2cf243(0x142)](_0x29ffcc=>_0x29ffcc[_0x2cf243(0x185)]());for(const _0xf7d41 of _0x1974d2){const _0x5cd01e=_0xf7d41[_0x2cf243(0xc8)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x5cd01e){_0x5ab478[_0x2cf243(0xca)](_0x2cf243(0xb8)+_0x5cd01e[0x1]+'\x27\x20'+_0x5cd01e[0x2]);continue;}const _0x3fda8a=_0xf7d41[_0x2cf243(0xc8)](/^read\s+(.+)$/);if(_0x3fda8a){_0x5ab478[_0x2cf243(0xca)](_0x2cf243(0x83)+_0x3fda8a[0x1]);continue;}const _0x4cb6ae=_0xf7d41[_0x2cf243(0xc8)](/^list_directory\s+(.+)$/);if(_0x4cb6ae){_0x5ab478[_0x2cf243(0xca)](_0x2cf243(0xe3)+_0x4cb6ae[0x1]);continue;}}}}return _0x5ab478;},_0x437266=_0x5e7dac=>{const _0x2a5aeb=_0x500b25,_0x5df35a=[];if(!_0x5e7dac||!Array[_0x2a5aeb(0x84)](_0x5e7dac))return _0x5df35a;const _0x5ac2e8=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x2a5aeb(0x188),'tool':_0x2a5aeb(0x15c)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x2a5aeb(0x162),'tool':_0x2a5aeb(0x15c)},{'pattern':/\[READ ERROR\]/,'error_type':_0x2a5aeb(0xf1),'tool':_0x2a5aeb(0x15c)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x2a5aeb(0x11e),'tool':'read'},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x2a5aeb(0x152),'tool':_0x2a5aeb(0x15d)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':'RipgrepNotAvailable','tool':_0x2a5aeb(0x15d)},{'pattern':/\[BINARY FILE\]/,'error_type':'BinaryFile','tool':_0x2a5aeb(0x15c)},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':_0x2a5aeb(0x15c)},{'pattern':/not a text file/,'error_type':_0x2a5aeb(0x11e),'tool':_0x2a5aeb(0x15c)},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':_0x2a5aeb(0x15c)},{'pattern':/Error reading file:/,'error_type':_0x2a5aeb(0xf1),'tool':_0x2a5aeb(0x15c)},{'pattern':/status="error"/,'error_type':_0x2a5aeb(0xb3),'tool':_0x2a5aeb(0xe8)}];let _0x3a25b1=0x0;for(const _0x386d09 of _0x5e7dac){if(_0x386d09[_0x2a5aeb(0x126)]===_0x2a5aeb(0x91)){_0x3a25b1++;const _0x5568a6=_0x386d09[_0x2a5aeb(0x82)];if(!_0x5568a6||typeof _0x5568a6!==_0x2a5aeb(0xfe))continue;for(const {pattern:_0x4eca22,error_type:_0x3e1102,tool:_0x3403a1}of _0x5ac2e8){const _0x431c39=_0x5568a6['match'](new RegExp(_0x4eca22[_0x2a5aeb(0xe6)],'g'));if(_0x431c39)for(const _0x3251df of _0x431c39){const _0x566da5=_0x5568a6[_0x2a5aeb(0x17a)](_0x3251df),_0x48c8f9=_0x5568a6['substring'](_0x566da5,Math[_0x2a5aeb(0x154)](_0x566da5+0xc8,_0x5568a6['length']));_0x5df35a[_0x2a5aeb(0xca)]({'tool':_0x3403a1,'error_type':_0x3e1102,'error_message':_0x48c8f9[_0x2a5aeb(0xa3)]('\x0a')[0x0],'turn':_0x3a25b1});}}}}return _0x5df35a;};try{const _0x33e2fa=a0_0x1f560b['resolve'](_0x5b1917[_0x500b25(0x128)][_0x500b25(0x14e)]),_0x26fb24=_0x5b1917[_0x500b25(0x128)][_0x500b25(0xc0)],_0x32517e=_0x26fb24===_0x500b25(0xaa)?{'allowNames':['node_modules']}:undefined,_0x26665e=new LocalRipgrepProvider(_0x33e2fa,undefined,_0x32517e),_0x1fc4e3=await runWarpGrep({'searchTerm':_0x5b1917['data'][_0x500b25(0x9d)],'repoRoot':_0x33e2fa,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x26665e,'search_type':_0x26fb24}),_0x11af0e=_0x437266(_0x1fc4e3[_0x500b25(0x157)]);_0x11af0e[_0x500b25(0xa7)]>0x0&&reportMorphError({'error_message':_0x500b25(0x10a)+_0x11af0e[_0x500b25(0xa7)]+_0x500b25(0xc1),'error_type':_0x500b25(0x80),'level':'warn','tool':_0x500b25(0xa9),'context':{'repo_path':_0x5b1917['data'][_0x500b25(0x14e)],'query':_0x5b1917[_0x500b25(0x128)][_0x500b25(0x9d)],'model':_0x500b25(0xb1),'termination_reason':_0x1fc4e3[_0x500b25(0x143)],'sub_tool_errors':_0x11af0e,'timings':_0x1fc4e3['timings'],'tool_calls':_0x4d5ea5(_0x1fc4e3['messages']),'messages':_0x1fc4e3[_0x500b25(0x157)]?.[_0x500b25(0x94)](_0x4a01ca=>({'role':_0x4a01ca[_0x500b25(0x126)],'content':_0x4a01ca[_0x500b25(0x82)]}))},'source':_0x500b25(0x102)})[_0x500b25(0xe0)](()=>{});let _0x2000f5='';if(_0x1fc4e3[_0x500b25(0x143)]===_0x500b25(0x89)&&_0x1fc4e3['finish']?.[_0x500b25(0x92)]?.[_0x500b25(0xba)]){const _0x46a59f=_0x1fc4e3[_0x500b25(0xdd)][_0x500b25(0x92)][_0x500b25(0xba)];if(_0x46a59f['length']===0x0)return _0x2000f5=_0x1fc4e3['finish'][_0x500b25(0x149)]||_0x500b25(0x100),{'content':[{'type':'text','text':_0x2000f5}]};const _0x2d5043=[],_0x770ff1=[_0x500b25(0x11c)];for(const _0x1dc3fa of _0x1fc4e3[_0x500b25(0x157)]){const _0x11804e=_0x1dc3fa[_0x500b25(0x126)],_0x8bd8bf=_0x1dc3fa[_0x500b25(0x82)];if(_0x11804e==='assistant'&&_0x8bd8bf){const _0x1b39d7=_0x8bd8bf[_0x500b25(0xa3)]('\x0a')['filter'](_0x2efbbe=>_0x2efbbe['trim']());for(const _0x36f86e of _0x1b39d7){const _0x2559c5=_0x36f86e[_0x500b25(0xc8)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x2559c5){_0x770ff1[_0x500b25(0xca)](_0x500b25(0x16a)+_0x2559c5[0x1]+_0x500b25(0xa2)+_0x2559c5[0x2]+'`');continue;}const _0x4bab89=_0x36f86e['match'](/^read\s+(.+)$/);if(_0x4bab89){_0x770ff1[_0x500b25(0xca)]('-\x20Read\x20file\x20`'+_0x4bab89[0x1]+'`');continue;}const _0x3057b5=_0x36f86e[_0x500b25(0xc8)](/^list_directory\s+(.+)$/);if(_0x3057b5){_0x770ff1['push'](_0x500b25(0x9b)+_0x3057b5[0x1]+'`');continue;}}}}_0x2d5043[_0x500b25(0xca)](_0x770ff1[_0x500b25(0x115)]('\x0a'));const _0x22bb4a=['','Relevant\x20context\x20found:'];for(const _0x3c02a5 of _0x46a59f){if(_0x3c02a5[_0x500b25(0x150)]==='*')_0x22bb4a[_0x500b25(0xca)]('-\x20'+_0x3c02a5[_0x500b25(0x159)]+':*');else{if(Array[_0x500b25(0x84)](_0x3c02a5[_0x500b25(0x150)])){const _0x70d450=_0x3c02a5[_0x500b25(0x150)]['map'](([_0x479800,_0x418195])=>{if(_0x479800===_0x418195)return''+_0x479800;return _0x479800+'-'+_0x418195;});_0x22bb4a[_0x500b25(0xca)]('-\x20'+_0x3c02a5['path']+':'+_0x70d450[_0x500b25(0x115)](','));}else _0x22bb4a[_0x500b25(0xca)]('-\x20'+_0x3c02a5[_0x500b25(0x159)]+':*');}}_0x22bb4a['push'](''),_0x2d5043[_0x500b25(0xca)](_0x22bb4a['join']('\x0a')),_0x2d5043[_0x500b25(0xca)](_0x500b25(0x139));const _0x2fb0ac=[];for(const _0x4644ed of _0x46a59f){let _0x2fd647=a0_0x1f560b[_0x500b25(0x97)](_0x5b1917['data'][_0x500b25(0x14e)],_0x4644ed[_0x500b25(0x159)]),_0x1df6ca=null,_0x4379c1=null;try{_0x1df6ca=await a0_0x15f2b5[_0x500b25(0x95)](_0x2fd647,{'encoding':_0x500b25(0x158)});}catch(_0x159b2b){const _0x1a80a3=fixPathRepetition(_0x2fd647);if(_0x1a80a3)try{_0x1df6ca=await a0_0x15f2b5['readFile'](_0x1a80a3,{'encoding':_0x500b25(0x158)}),_0x2fd647=_0x1a80a3;}catch{_0x4379c1=_0x159b2b instanceof Error?_0x159b2b:new Error(String(_0x159b2b));}else _0x4379c1=_0x159b2b instanceof Error?_0x159b2b:new Error(String(_0x159b2b));}if(_0x1df6ca!==null){const _0x4b4cfc=_0x1df6ca['split'](/\r?\n/),_0x4319cd=[_0x500b25(0x133)+_0x4644ed[_0x500b25(0x159)]+'\x22>'];if(_0x4644ed[_0x500b25(0x150)]==='*'||!Array['isArray'](_0x4644ed[_0x500b25(0x150)]))for(let _0x471967=0x1;_0x471967<=_0x4b4cfc[_0x500b25(0xa7)];_0x471967++){const _0x3053de=_0x4b4cfc[_0x471967-0x1];_0x4319cd['push'](_0x471967+'|\x20'+_0x3053de);}else for(const [_0x404dcd,_0x422f15]of _0x4644ed['lines']){_0x4319cd['length']>0x1&&_0x4319cd['push']('');for(let _0x30365f=_0x404dcd;_0x30365f<=_0x422f15&&_0x30365f<=_0x4b4cfc['length'];_0x30365f++){const _0x236fda=_0x4b4cfc[_0x30365f-0x1];_0x4319cd[_0x500b25(0xca)](_0x30365f+'|\x20'+_0x236fda);}}_0x4319cd['push'](_0x500b25(0x13c)),_0x2fb0ac['push'](_0x4319cd['join']('\x0a'));}else _0x2fb0ac[_0x500b25(0xca)]('<file\x20path=\x22'+_0x4644ed[_0x500b25(0x159)]+_0x500b25(0x104)+(_0x4379c1?.[_0x500b25(0xd7)]||'Unknown\x20error')+_0x500b25(0x117));}_0x2d5043[_0x500b25(0xca)](_0x2fb0ac['join']('\x0a\x0a')),_0x2000f5=_0x2d5043[_0x500b25(0x115)]('\x0a');const _0x3097ed=_0x1fc4e3[_0x500b25(0x93)]?.[_0x500b25(0x142)](_0x13422e=>_0x13422e[_0x500b25(0xd7)]?.[_0x500b25(0xbc)](_0x500b25(0x189)))||[];if(_0x3097ed[_0x500b25(0xa7)]>0x0){const _0x26f144=_0x3097ed[_0x500b25(0x94)](_0x3feff9=>_0x3feff9[_0x500b25(0xd7)])['join'](';\x20');reportMorphError({'error_message':_0x26f144,'error_type':'FileReadError','context':{'tool':_0x500b25(0xa9),'repo_path':_0x5b1917[_0x500b25(0x128)][_0x500b25(0x14e)],'query':_0x5b1917[_0x500b25(0x128)][_0x500b25(0x9d)],'model':_0x500b25(0xb1),'termination_reason':_0x500b25(0x146),'error_count':_0x3097ed['length'],'is_timeout':![],'timings':_0x1fc4e3[_0x500b25(0xcb)],'files_attempted':_0x46a59f[_0x500b25(0x94)](_0x534e37=>({'path':_0x534e37['path'],'lines':_0x534e37[_0x500b25(0x150)]})),'tool_calls':_0x4d5ea5(_0x1fc4e3['messages']),'messages':_0x1fc4e3[_0x500b25(0x157)]?.[_0x500b25(0x94)](_0x13cc64=>({'role':_0x13cc64[_0x500b25(0x126)],'content':_0x13cc64[_0x500b25(0x82)]})),'request_content':{'query':_0x5b1917[_0x500b25(0x128)][_0x500b25(0x9d)],'repo_path':_0x5b1917['data'][_0x500b25(0x14e)],'repoRoot':a0_0x1f560b['resolve'](_0x5b1917[_0x500b25(0x128)][_0x500b25(0x14e)]),'model':_0x500b25(0xb1)}},'source':_0x500b25(0x102)})[_0x500b25(0xe0)](()=>{});}}else{if(_0x1fc4e3[_0x500b25(0x143)]===_0x500b25(0xe4)&&_0x1fc4e3['errors'][_0x500b25(0xa7)]>0x0){const _0x1e4581=_0x1fc4e3[_0x500b25(0x93)][_0x500b25(0x94)](_0x2f3572=>_0x2f3572[_0x500b25(0xd7)])[_0x500b25(0x115)](';\x20');_0x2000f5=_0x500b25(0xd6)+_0x1e4581;const _0x4d0ca6=_0x1e4581[_0x500b25(0xb0)]()[_0x500b25(0x17c)](_0x500b25(0x10c))||_0x1e4581[_0x500b25(0xb0)]()[_0x500b25(0x17c)](_0x500b25(0xae))||_0x1e4581[_0x500b25(0xb0)]()[_0x500b25(0x17c)](_0x500b25(0xe1)),_0x5a2b8e=_0x1fc4e3['finish']?.[_0x500b25(0x92)]?.[_0x500b25(0xba)],_0x3843d0=_0x1fc4e3[_0x500b25(0x93)][0x0];reportMorphError({'error_message':_0x1e4581,'error_type':_0x4d0ca6?_0x500b25(0x11b):_0x3843d0?.[_0x500b25(0x120)]?.[_0x500b25(0x13a)]||_0x500b25(0x138),'context':{'tool':_0x500b25(0xa9),'repo_path':_0x5b1917[_0x500b25(0x128)][_0x500b25(0x14e)],'query':_0x5b1917[_0x500b25(0x128)][_0x500b25(0x9d)],'model':_0x500b25(0xb1),'termination_reason':_0x1fc4e3[_0x500b25(0x143)],'error_count':_0x1fc4e3[_0x500b25(0x93)]['length'],'is_timeout':_0x4d0ca6,'timings':_0x1fc4e3[_0x500b25(0xcb)],'files_attempted':_0x5a2b8e?.[_0x500b25(0x94)](_0x4ad370=>({'path':_0x4ad370[_0x500b25(0x159)],'lines':_0x4ad370[_0x500b25(0x150)]})),'tool_calls':_0x4d5ea5(_0x1fc4e3[_0x500b25(0x157)]),'messages':_0x1fc4e3[_0x500b25(0x157)]?.['map'](_0x3f7a05=>({'role':_0x3f7a05['role'],'content':_0x3f7a05[_0x500b25(0x82)]})),'request_content':{'query':_0x5b1917['data']['search_string'],'repo_path':_0x5b1917[_0x500b25(0x128)][_0x500b25(0x14e)],'repoRoot':a0_0x1f560b[_0x500b25(0x97)](_0x5b1917[_0x500b25(0x128)][_0x500b25(0x14e)]),'model':_0x500b25(0xb1)}},'stack_trace':_0x3843d0?.['stack']||undefined,'source':_0x500b25(0x102)})[_0x500b25(0xe0)](()=>{});}else _0x2000f5='Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.';}return{'content':[{'type':_0x500b25(0xb5),'text':_0x2000f5}]};}catch(_0x299f53){const _0x2747e0=_0x299f53 instanceof Error?_0x299f53[_0x500b25(0xd7)]:String(_0x299f53),_0x53290f=_0x2747e0[_0x500b25(0xb0)]()[_0x500b25(0x17c)](_0x500b25(0x10c))||_0x2747e0[_0x500b25(0xb0)]()[_0x500b25(0x17c)](_0x500b25(0xae))||_0x2747e0[_0x500b25(0xb0)]()[_0x500b25(0x17c)](_0x500b25(0xe1))||_0x299f53 instanceof Error&&_0x299f53['name']===_0x500b25(0x11b);return reportMorphError({'error_message':_0x2747e0,'error_type':_0x53290f?_0x500b25(0x11b):_0x299f53 instanceof Error?_0x299f53[_0x500b25(0x120)][_0x500b25(0x13a)]:_0x500b25(0xfa),'context':{'tool':'codebase_search','repo_path':_0x5b1917[_0x500b25(0x128)]['repo_path'],'query':_0x5b1917['data']['search_string'],'model':'morph-warp-grep-v1-1111v0','is_timeout':_0x53290f,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x5b1917['data'][_0x500b25(0x9d)],'repo_path':_0x5b1917[_0x500b25(0x128)][_0x500b25(0x14e)],'repoRoot':a0_0x1f560b['resolve'](_0x5b1917[_0x500b25(0x128)][_0x500b25(0x14e)]),'model':_0x500b25(0xb1)}},'stack_trace':_0x299f53 instanceof Error?_0x299f53[_0x500b25(0xd8)]:undefined,'source':_0x500b25(0x102)})[_0x500b25(0xe0)](()=>{}),{'content':[{'type':_0x500b25(0xb5),'text':_0x500b25(0x10d)+_0x2747e0}],'isError':![]};}}case _0x500b25(0xa4):{const _0x1cd3ab=WarpGrepGitHubArgsSchema[_0x500b25(0x12b)](_0x27ba84);if(!_0x1cd3ab[_0x500b25(0x17f)])return{'content':[{'type':_0x500b25(0xb5),'text':_0x500b25(0xfd)+_0x1cd3ab['error']}],'isError':!![]};const _0x1cbf34=_0x1cd3ab[_0x500b25(0x128)]['github_url']||_0x1cd3ab[_0x500b25(0x128)][_0x500b25(0x186)];if(!_0x1cbf34)return{'content':[{'type':'text','text':'Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id'}],'isError':!![]};const _0x3d5059=MORPH_API_KEY;if(!_0x3d5059)throw new Error(_0x500b25(0x112));const _0x14367e=Date[_0x500b25(0x13e)]();logMcpStderr(_0x500b25(0xcf)+_0x1cbf34+'\x20for:\x20\x22'+_0x1cd3ab[_0x500b25(0x128)][_0x500b25(0x9d)]+'\x22');try{const _0x72bcf5=new WarpGrepClient({'morphApiKey':_0x3d5059,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x5eda9b=await _0x72bcf5[_0x500b25(0x155)]({'searchTerm':_0x1cd3ab[_0x500b25(0x128)]['search_string'],'github':_0x1cbf34,'branch':_0x1cd3ab[_0x500b25(0x128)][_0x500b25(0x15b)]}),_0x300a37=Date['now']()-_0x14367e;logMcpStderr('[github_codebase_search]\x20Done\x20in\x20'+_0x300a37+_0x500b25(0x176)+_0x5eda9b['success']);const _0x48c20e=formatResult(_0x5eda9b);return{'content':[{'type':_0x500b25(0xb5),'text':_0x48c20e}]};}catch(_0x412742){const _0x1e3621=Date[_0x500b25(0x13e)]()-_0x14367e,_0x563d98=_0x412742 instanceof Error?_0x412742[_0x500b25(0xd7)]:String(_0x412742);return logMcpStderr(_0x500b25(0xcd)+_0x1e3621+_0x500b25(0x9c),_0x563d98),reportMorphError({'error_message':_0x563d98,'error_type':_0x412742 instanceof Error?_0x412742['constructor']['name']:'UnknownError','context':{'tool':'github_codebase_search','github_url':_0x1cbf34,'search_string':_0x1cd3ab[_0x500b25(0x128)][_0x500b25(0x9d)],'branch':_0x1cd3ab[_0x500b25(0x128)][_0x500b25(0x15b)]},'stack_trace':_0x412742 instanceof Error?_0x412742['stack']:undefined,'source':_0x500b25(0x102),'tool':_0x500b25(0xa4),'latency_ms':_0x1e3621})['catch'](()=>{}),{'content':[{'type':_0x500b25(0xb5),'text':'GitHub\x20search\x20failed:\x20'+_0x563d98}],'isError':![]};}}default:throw new Error(_0x500b25(0x12f)+_0x2f223f);}}catch(_0x57c83f){const _0x53ef5c=_0x57c83f instanceof Error?_0x57c83f[_0x500b25(0xd7)]:String(_0x57c83f);return reportMorphError({'error_message':_0x53ef5c,'error_type':_0x57c83f instanceof Error?_0x57c83f[_0x500b25(0x120)][_0x500b25(0x13a)]:_0x500b25(0xfa),'context':{'tool':_0x2f223f,'arguments':_0x27ba84?JSON[_0x500b25(0xf7)](_0x27ba84)['substring'](0x0,0x1f4):undefined,'mcp_server_version':_0x500b25(0x12a)},'stack_trace':_0x57c83f instanceof Error?_0x57c83f[_0x500b25(0xd8)]:undefined,'source':_0x500b25(0x102)})[_0x500b25(0xe0)](()=>{}),{'content':[{'type':'text','text':_0x500b25(0xd6)+_0x53ef5c}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x2d3d3a){const _0x2c817e=a0_0x444965,_0x422436=await getValidRootDirectories(_0x2d3d3a);if(_0x422436[_0x2c817e(0xa7)]>0x0)allowedDirectories=[..._0x422436],logMcpStderr(_0x2c817e(0xf2)+_0x422436['length']+_0x2c817e(0x132));else{logMcpStderr(_0x2c817e(0x106));if(ENABLE_WORKSPACE_MODE)try{const _0x2ff586=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x2ff586&&(allowedDirectories=[_0x2ff586],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x2ff586));}catch(_0x2eba94){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x2eba94);}}}server[a0_0x444965(0x114)](RootsListChangedNotificationSchema,async()=>{const _0xecd82=a0_0x444965;try{const _0x3afb7a=await server['listRoots']();_0x3afb7a&&'roots'in _0x3afb7a&&await updateAllowedDirectoriesFromRoots(_0x3afb7a['roots']);}catch(_0x30b4dc){logMcpStderr(_0xecd82(0x15a),_0x30b4dc instanceof Error?_0x30b4dc[_0xecd82(0xd7)]:String(_0x30b4dc));}}),server[a0_0x444965(0x136)]=async()=>{const _0x858f29=a0_0x444965,_0x14928b=server[_0x858f29(0x137)]();if(_0x14928b?.[_0x858f29(0x105)])try{const _0x470ee7=await server['listRoots']();_0x470ee7&&_0x858f29(0x105)in _0x470ee7?await updateAllowedDirectoriesFromRoots(_0x470ee7[_0x858f29(0x105)]):logMcpStderr(_0x858f29(0x17d));}catch(_0x1bbf46){logMcpStderr(_0x858f29(0x167),_0x1bbf46 instanceof Error?_0x1bbf46[_0x858f29(0xd7)]:String(_0x1bbf46));}else{if(allowedDirectories[_0x858f29(0xa7)]>0x0)logMcpStderr(_0x858f29(0xce),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x858f29(0x153));else throw new Error(_0x858f29(0xaf));}}};function a0_0x47b8(){const _0x55f8d9=['Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','[github_codebase_search]\x20Searching\x20','Tool\x20\x22','cwd','Specific\x20commit\x20hash\x20to\x20search','Preview\x20changes\x20without\x20applying\x20them.','\x0a...\x20(truncated,\x20total:\x20','\x20\x20morph-mcp','Error:\x20','message','stack','context','number','Tool\x20','every','finish','\x0aExamples:','2582zgsegZ','catch','etimedout','WORKSPACE_ROOT','list_directory\x20','terminated','all','source','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','unknown','1057638cMidsV','log','For\x20deletions:\x0a','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','ENOENT','sep','describe','Warning:\x20','ReadError','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','[could\x20not\x20read\x20file:\x20','size','576YMPUwW','basename','stringify','--api-key=','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','UnknownError','Morph\x20Edit\x20','185835sFGLbB','Invalid\x20arguments:\x20','string','isDirectory','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','28248NkMtyH','mcp-filesystem','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','\x22>\x0aError\x20reading\x20file:\x20','roots','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','DISABLED_TOOLS','some','WarpGrep\x20sub-tool\x20errors:\x20','.\x20Changes:\x20','timeout','Error\x20running\x20fast\x20context\x20search:\x20','array','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','\x20disabled\x20via\x20DISABLED_TOOLS','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','optional','setNotificationHandler','join','requiresApiKey','\x0a</file>','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','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','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','TimeoutError','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','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.','BinaryFile','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','constructor','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','--help','assistant','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','edit_file','role','boolean','data','default','0.2.0','safeParse','258ZzffTo','Cargo.toml','exit','Unknown\x20tool:\x20','linesModified','tsconfig.json','\x20valid\x20directories','<file\x20path=\x22','Bearer\x20','dirname','oninitialized','getClientCapabilities','WarpGrepError','Here\x20is\x20the\x20content\x20of\x20files:\x0a','name','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','</file>','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','now','dryRun','pyproject.toml','connect','filter','terminationReason','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','morph-v3-fast','completed_with_file_errors','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','payload','@morphllm/morphmcp\x20','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','code_edit','repo_path','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','lines','slice','RipgrepError','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','min','searchGitHub','\x20-\x20','messages','utf-8','path','Failed\x20to\x20request\x20roots\x20from\x20client:','branch','read','grep','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','setRequestHandler','Parent\x20directory\x20does\x20not\x20exist:\x20','PathError','application/json','../package.json','\x20(new\x20file)','❌\x20Morph\x20Edit\x20Failed:\x20','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','false','Benefits:\x0a','-\x20Grepped\x20\x27','Fatal\x20error\x20running\x20server:','package.json','Applied','has','object','floor','toISOString','Created\x20File','Workspace\x20mode\x20enabled:\x20Using\x20','154736JOLNcr','938NnVuEc','ms.\x20Success:\x20','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','inputSchema','68dMZsek','indexOf','homedir','includes','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','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.','success','Failed\x20to\x20read\x20file:\x20','realpath','10204080pcJqbr','Error\x20accessing\x20directory\x20','MORPH_API_KEY','trim','owner_repo','normalize','FileNotFound','File\x20read\x20error:','error','PWD','SubToolError','added\x20','content','read\x20','isArray','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','\x20chars)','\x0aOptions:','completed','description','Repository\x20identifier','completionId','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','MORPH_WARP_GREP_TIMEOUT','user','metadata','errors','map','readFile','.git','resolve','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','stat','linesAdded','-\x20Listed\x20directory\x20`','ms:','search_string','MORPH_API_URL','substring','code','169029tXjVyT','\x27\x20in\x20`','split','github_codebase_search','morph-','linesRemoved','length','env','codebase_search','node_modules',',\x20modified\x20','sk-','instruction','timed\x20out','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.','toLowerCase','morph-warp-grep-v1-1111v0','\x20is\x20not\x20a\x20directory','ToolException','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','text','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','Disabled\x20tools:\x20','grep\x20\x27','access','files','15455KRNIKw','startsWith','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','.\x20Path:\x20','post','search_type','\x20error(s)','changes','unknown\x20error','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','morph-mcp','params','Morph\x20FastApply\x20failed\x20without\x20error\x20message','match','.vscode','push','timings','Max\x20results\x20to\x20return','[github_codebase_search]\x20Failed\x20in\x20'];a0_0x47b8=function(){return _0x55f8d9;};return a0_0x47b8();}async function runServer(){const _0x1c1ee2=a0_0x444965,_0xe2d23=new StdioServerTransport();await server[_0x1c1ee2(0x141)](_0xe2d23),logMcpStderr('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories['length']===0x0&&logMcpStderr(_0x1c1ee2(0x121));}runServer()[a0_0x444965(0xe0)](_0x1f52da=>{const _0x4130fc=a0_0x444965;logMcpStderr(_0x4130fc(0x16b),_0x1f52da),process[_0x4130fc(0x12e)](0x1);});
package/dist/log-utils.js CHANGED
@@ -1 +1 @@
1
- function a1_0x8d42(){var _0x56c8af=['macOS','197052LaFdFw','430739CDIeaX','21952jtcGNz','952056YwMufD','40uNuIkI','402JAoKAf','linux','2CzzgkI','2667490UYyThk','platform','40ZVHGAs','800316yQsNiG','win32','3283488Gkruxt','darwin','Unknown','156sZLtKt','[os='];a1_0x8d42=function(){return _0x56c8af;};return a1_0x8d42();}var a1_0x17f0dc=a1_0x3f6e;(function(_0x5d7074,_0x58e58a){var _0x4dfab9=a1_0x3f6e,_0x3be4b7=_0x5d7074();while(!![]){try{var _0x4a5eda=parseInt(_0x4dfab9(0x128))/0x1*(-parseInt(_0x4dfab9(0x12e))/0x2)+parseInt(_0x4dfab9(0x12c))/0x3*(parseInt(_0x4dfab9(0x129))/0x4)+-parseInt(_0x4dfab9(0x12b))/0x5*(parseInt(_0x4dfab9(0x127))/0x6)+-parseInt(_0x4dfab9(0x12f))/0x7+parseInt(_0x4dfab9(0x121))/0x8+-parseInt(_0x4dfab9(0x12a))/0x9*(parseInt(_0x4dfab9(0x11e))/0xa)+parseInt(_0x4dfab9(0x11f))/0xb*(parseInt(_0x4dfab9(0x124))/0xc);if(_0x4a5eda===_0x58e58a)break;else _0x3be4b7['push'](_0x3be4b7['shift']());}catch(_0x30e986){_0x3be4b7['push'](_0x3be4b7['shift']());}}}(a1_0x8d42,0x91037));import a1_0x32843c from'os';export function getOperatingSystemType(_0x4afb9c=a1_0x32843c[a1_0x17f0dc(0x11d)]()){var _0x5731a4=a1_0x17f0dc;switch(_0x4afb9c){case _0x5731a4(0x122):return _0x5731a4(0x126);case _0x5731a4(0x120):return'Windows';case _0x5731a4(0x12d):return'Linux';default:return _0x5731a4(0x123);}}export function formatMcpLogMessage(_0xa9d0ed,_0x29b13d=a1_0x32843c['platform']()){var _0x135625=a1_0x17f0dc;return _0x135625(0x125)+getOperatingSystemType(_0x29b13d)+']\x20'+_0xa9d0ed;}function a1_0x3f6e(_0x386539,_0x389180){_0x386539=_0x386539-0x11d;var _0x8d4239=a1_0x8d42();var _0x3f6eb8=_0x8d4239[_0x386539];return _0x3f6eb8;}export function logMcpStderr(_0x5d912a,..._0x575f01){console['error'](formatMcpLogMessage(_0x5d912a),..._0x575f01);}
1
+ var a1_0x5b1d56=a1_0x5c23;(function(_0x1defe7,_0x1945e0){var _0x2db73a=a1_0x5c23,_0x47a7de=_0x1defe7();while(!![]){try{var _0x27d77=-parseInt(_0x2db73a(0x8b))/0x1*(parseInt(_0x2db73a(0x92))/0x2)+-parseInt(_0x2db73a(0x97))/0x3+parseInt(_0x2db73a(0x96))/0x4*(-parseInt(_0x2db73a(0x95))/0x5)+-parseInt(_0x2db73a(0x98))/0x6+parseInt(_0x2db73a(0x89))/0x7+parseInt(_0x2db73a(0x91))/0x8*(-parseInt(_0x2db73a(0x90))/0x9)+-parseInt(_0x2db73a(0x8f))/0xa*(-parseInt(_0x2db73a(0x8d))/0xb);if(_0x27d77===_0x1945e0)break;else _0x47a7de['push'](_0x47a7de['shift']());}catch(_0x55e08d){_0x47a7de['push'](_0x47a7de['shift']());}}}(a1_0x46bd,0xecf16));function a1_0x5c23(_0x49b57c,_0x49a04e){_0x49b57c=_0x49b57c-0x84;var _0x46bdca=a1_0x46bd();var _0x5c2301=_0x46bdca[_0x49b57c];return _0x5c2301;}import a1_0x23f092 from'os';export function getOperatingSystemType(_0x60c9c7=a1_0x23f092[a1_0x5b1d56(0x85)]()){var _0x346059=a1_0x5b1d56;switch(_0x60c9c7){case _0x346059(0x84):return _0x346059(0x94);case _0x346059(0x8a):return _0x346059(0x8c);case _0x346059(0x87):return _0x346059(0x88);default:return _0x346059(0x93);}}export function formatMcpLogMessage(_0x279b7f,_0x11e814=a1_0x23f092[a1_0x5b1d56(0x85)]()){var _0x5d4bd2=a1_0x5b1d56;return _0x5d4bd2(0x8e)+getOperatingSystemType(_0x11e814)+']\x20'+_0x279b7f;}function a1_0x46bd(){var _0x5a0b54=['Linux','9853095UCSLPj','win32','72519QeUGaG','Windows','17121346ONEdik','[os=','20rXqbJK','108711llSaHo','552QKtKQA','26ekdBBY','Unknown','macOS','11665zctDHl','1016rdQncj','3148977lsOrwu','789600wLYMWE','darwin','platform','error','linux'];a1_0x46bd=function(){return _0x5a0b54;};return a1_0x46bd();}export function logMcpStderr(_0x5e0c23,..._0x39a706){var _0x56ee20=a1_0x5b1d56;console[_0x56ee20(0x86)](formatMcpLogMessage(_0x5e0c23),..._0x39a706);}
@@ -1 +1 @@
1
- (function(_0x439218,_0x917068){const _0x5a1e9f=a2_0x3187,_0x4e0fc5=_0x439218();while(!![]){try{const _0x4eb2d0=-parseInt(_0x5a1e9f(0xa5))/0x1*(-parseInt(_0x5a1e9f(0xa1))/0x2)+-parseInt(_0x5a1e9f(0x9b))/0x3+-parseInt(_0x5a1e9f(0xa8))/0x4+-parseInt(_0x5a1e9f(0xa6))/0x5+parseInt(_0x5a1e9f(0xaa))/0x6*(-parseInt(_0x5a1e9f(0x97))/0x7)+-parseInt(_0x5a1e9f(0x95))/0x8*(-parseInt(_0x5a1e9f(0xa9))/0x9)+parseInt(_0x5a1e9f(0xa7))/0xa*(parseInt(_0x5a1e9f(0xa2))/0xb);if(_0x4eb2d0===_0x917068)break;else _0x4e0fc5['push'](_0x4e0fc5['shift']());}catch(_0x242bbe){_0x4e0fc5['push'](_0x4e0fc5['shift']());}}}(a2_0x5465,0xbdef0));import a2_0x5b3650 from'path';function a2_0x3187(_0x48537e,_0x1651f4){_0x48537e=_0x48537e-0x94;const _0x546526=a2_0x5465();let _0x318775=_0x546526[_0x48537e];return _0x318775;}import a2_0xe0df7a from'os';export function convertToWindowsPath(_0x56f9e7){const _0x3a83d9=a2_0x3187;if(_0x56f9e7['startsWith'](_0x3a83d9(0x96))){const _0x605a9a=_0x56f9e7[_0x3a83d9(0xa4)](0x5)[_0x3a83d9(0x99)](),_0x3cba91=_0x56f9e7[_0x3a83d9(0x98)](0x6)[_0x3a83d9(0x9f)](/\//g,'\x5c');return _0x605a9a+':'+_0x3cba91;}if(_0x56f9e7['match'](/^\/[a-zA-Z]\//)){const _0x3aa9a2=_0x56f9e7['charAt'](0x1)[_0x3a83d9(0x99)](),_0x240561=_0x56f9e7[_0x3a83d9(0x98)](0x2)[_0x3a83d9(0x9f)](/\//g,'\x5c');return _0x3aa9a2+':'+_0x240561;}if(_0x56f9e7[_0x3a83d9(0xa0)](/^[a-zA-Z]:/))return _0x56f9e7[_0x3a83d9(0x9f)](/\//g,'\x5c');return _0x56f9e7;}function a2_0x5465(){const _0x5118db=['charAt','41VLDZuc','1709965hvvwPH','10BKcnGw','5046584kxUWQc','720YQcHfa','6XmbRoR','join','69840lHFkmG','/mnt/','4055716nhoLvO','slice','toUpperCase','test','475842jFDflA','startsWith','homedir','substring','replace','match','68652wDarsa','11152273bwvLdm','normalize'];a2_0x5465=function(){return _0x5118db;};return a2_0x5465();}export function normalizePath(_0x2138f6){const _0x56c66f=a2_0x3187;_0x2138f6=_0x2138f6['trim']()['replace'](/^["']|["']$/g,'');const _0x366e44=_0x2138f6[_0x56c66f(0x9c)]('/')&&!_0x2138f6[_0x56c66f(0xa0)](/^\/mnt\/[a-z]\//i)&&!_0x2138f6[_0x56c66f(0xa0)](/^\/[a-zA-Z]\//);if(_0x366e44)return _0x2138f6['replace'](/\/+/g,'/')['replace'](/\/+$/,'');_0x2138f6=convertToWindowsPath(_0x2138f6);if(_0x2138f6[_0x56c66f(0x9c)]('\x5c\x5c')){let _0x19f312=_0x2138f6;_0x19f312=_0x19f312[_0x56c66f(0x9f)](/^\\{2,}/,'\x5c\x5c');const _0x4e302c=_0x19f312[_0x56c66f(0x9e)](0x2)['replace'](/\\\\/g,'\x5c');_0x2138f6='\x5c\x5c'+_0x4e302c;}else _0x2138f6=_0x2138f6[_0x56c66f(0x9f)](/\\\\/g,'\x5c');let _0x2df60d=a2_0x5b3650[_0x56c66f(0xa3)](_0x2138f6);_0x2138f6[_0x56c66f(0x9c)]('\x5c\x5c')&&!_0x2df60d[_0x56c66f(0x9c)]('\x5c\x5c')&&(_0x2df60d='\x5c'+_0x2df60d);if(_0x2df60d[_0x56c66f(0xa0)](/^[a-zA-Z]:/)){let _0x4bd6d8=_0x2df60d['replace'](/\//g,'\x5c');return/^[a-z]:/[_0x56c66f(0x9a)](_0x4bd6d8)&&(_0x4bd6d8=_0x4bd6d8[_0x56c66f(0xa4)](0x0)['toUpperCase']()+_0x4bd6d8[_0x56c66f(0x98)](0x1)),_0x4bd6d8;}return _0x2df60d[_0x56c66f(0x9f)](/\//g,'\x5c');}export function expandHome(_0x145a1e){const _0x323246=a2_0x3187;if(_0x145a1e[_0x323246(0x9c)]('~/')||_0x145a1e==='~')return a2_0x5b3650[_0x323246(0x94)](a2_0xe0df7a[_0x323246(0x9d)](),_0x145a1e[_0x323246(0x98)](0x1));return _0x145a1e;}
1
+ (function(_0x8e3760,_0x24714a){const _0x3f7dd6=a2_0x5efc,_0x14102c=_0x8e3760();while(!![]){try{const _0x17771b=parseInt(_0x3f7dd6(0x17c))/0x1+-parseInt(_0x3f7dd6(0x185))/0x2*(parseInt(_0x3f7dd6(0x186))/0x3)+-parseInt(_0x3f7dd6(0x192))/0x4*(-parseInt(_0x3f7dd6(0x190))/0x5)+parseInt(_0x3f7dd6(0x17d))/0x6*(-parseInt(_0x3f7dd6(0x194))/0x7)+parseInt(_0x3f7dd6(0x18f))/0x8*(-parseInt(_0x3f7dd6(0x189))/0x9)+-parseInt(_0x3f7dd6(0x195))/0xa*(-parseInt(_0x3f7dd6(0x18b))/0xb)+parseInt(_0x3f7dd6(0x188))/0xc*(parseInt(_0x3f7dd6(0x183))/0xd);if(_0x17771b===_0x24714a)break;else _0x14102c['push'](_0x14102c['shift']());}catch(_0x5bac44){_0x14102c['push'](_0x14102c['shift']());}}}(a2_0xdad6,0xde235));import a2_0x56a854 from'path';import a2_0x1d6f39 from'os';function a2_0xdad6(){const _0x18c898=['test','/mnt/','272gRRyhx','45QjPDvQ','join','496916zfbCzh','charAt','1926239WeHdXT','4692290qcTGER','1672204BTMrwa','24dHGATf','startsWith','normalize','substring','trim','replace','2171zyGUHU','slice','254466WhtjYr','36CBrUoz','homedir','31260aqGwVV','41598hBkAiI','toUpperCase','11cRYGKS','match'];a2_0xdad6=function(){return _0x18c898;};return a2_0xdad6();}export function convertToWindowsPath(_0xa16eb2){const _0x506f21=a2_0x5efc;if(_0xa16eb2[_0x506f21(0x17e)](_0x506f21(0x18e))){const _0x2459b5=_0xa16eb2[_0x506f21(0x193)](0x5)[_0x506f21(0x18a)](),_0x165315=_0xa16eb2[_0x506f21(0x184)](0x6)[_0x506f21(0x182)](/\//g,'\x5c');return _0x2459b5+':'+_0x165315;}if(_0xa16eb2[_0x506f21(0x18c)](/^\/[a-zA-Z]\//)){const _0x49966f=_0xa16eb2[_0x506f21(0x193)](0x1)[_0x506f21(0x18a)](),_0x511da0=_0xa16eb2[_0x506f21(0x184)](0x2)[_0x506f21(0x182)](/\//g,'\x5c');return _0x49966f+':'+_0x511da0;}if(_0xa16eb2[_0x506f21(0x18c)](/^[a-zA-Z]:/))return _0xa16eb2[_0x506f21(0x182)](/\//g,'\x5c');return _0xa16eb2;}export function normalizePath(_0x900d81){const _0x3196e8=a2_0x5efc;_0x900d81=_0x900d81[_0x3196e8(0x181)]()[_0x3196e8(0x182)](/^["']|["']$/g,'');const _0x40c802=_0x900d81[_0x3196e8(0x17e)]('/')&&!_0x900d81[_0x3196e8(0x18c)](/^\/mnt\/[a-z]\//i)&&!_0x900d81['match'](/^\/[a-zA-Z]\//);if(_0x40c802)return _0x900d81[_0x3196e8(0x182)](/\/+/g,'/')[_0x3196e8(0x182)](/\/+$/,'');_0x900d81=convertToWindowsPath(_0x900d81);if(_0x900d81['startsWith']('\x5c\x5c')){let _0x40a8ca=_0x900d81;_0x40a8ca=_0x40a8ca[_0x3196e8(0x182)](/^\\{2,}/,'\x5c\x5c');const _0x47cce7=_0x40a8ca[_0x3196e8(0x180)](0x2)['replace'](/\\\\/g,'\x5c');_0x900d81='\x5c\x5c'+_0x47cce7;}else _0x900d81=_0x900d81[_0x3196e8(0x182)](/\\\\/g,'\x5c');let _0x56de2b=a2_0x56a854[_0x3196e8(0x17f)](_0x900d81);_0x900d81[_0x3196e8(0x17e)]('\x5c\x5c')&&!_0x56de2b[_0x3196e8(0x17e)]('\x5c\x5c')&&(_0x56de2b='\x5c'+_0x56de2b);if(_0x56de2b[_0x3196e8(0x18c)](/^[a-zA-Z]:/)){let _0x5b1e8b=_0x56de2b[_0x3196e8(0x182)](/\//g,'\x5c');return/^[a-z]:/[_0x3196e8(0x18d)](_0x5b1e8b)&&(_0x5b1e8b=_0x5b1e8b['charAt'](0x0)[_0x3196e8(0x18a)]()+_0x5b1e8b[_0x3196e8(0x184)](0x1)),_0x5b1e8b;}return _0x56de2b[_0x3196e8(0x182)](/\//g,'\x5c');}function a2_0x5efc(_0x26e004,_0x1ca634){_0x26e004=_0x26e004-0x17c;const _0xdad610=a2_0xdad6();let _0x5efc15=_0xdad610[_0x26e004];return _0x5efc15;}export function expandHome(_0x3f29e1){const _0x482cb7=a2_0x5efc;if(_0x3f29e1[_0x482cb7(0x17e)]('~/')||_0x3f29e1==='~')return a2_0x56a854[_0x482cb7(0x191)](a2_0x1d6f39[_0x482cb7(0x187)](),_0x3f29e1[_0x482cb7(0x184)](0x1));return _0x3f29e1;}
@@ -1 +1 @@
1
- (function(_0x2a6c27,_0x21a443){const _0x927bae=a3_0x14f7,_0x284d76=_0x2a6c27();while(!![]){try{const _0x35d1f7=parseInt(_0x927bae(0xfa))/0x1+parseInt(_0x927bae(0x102))/0x2*(-parseInt(_0x927bae(0x109))/0x3)+parseInt(_0x927bae(0x100))/0x4*(-parseInt(_0x927bae(0xf9))/0x5)+parseInt(_0x927bae(0xfe))/0x6+-parseInt(_0x927bae(0x10c))/0x7*(parseInt(_0x927bae(0xff))/0x8)+parseInt(_0x927bae(0xfb))/0x9+parseInt(_0x927bae(0x105))/0xa;if(_0x35d1f7===_0x21a443)break;else _0x284d76['push'](_0x284d76['shift']());}catch(_0x1598be){_0x284d76['push'](_0x284d76['shift']());}}}(a3_0x3002,0xdd23e));import a3_0x4a9b7d from'path';export function isPathWithinAllowedDirectories(_0x51fee2,_0xdbb689){const _0x4330d8=a3_0x14f7;if(typeof _0x51fee2!==_0x4330d8(0x10b)||!Array[_0x4330d8(0x103)](_0xdbb689))return![];if(!_0x51fee2||_0xdbb689[_0x4330d8(0x101)]===0x0)return![];if(_0x51fee2[_0x4330d8(0xfd)]('\x00'))return![];let _0x35aecb;try{_0x35aecb=a3_0x4a9b7d[_0x4330d8(0x107)](a3_0x4a9b7d[_0x4330d8(0xfc)](_0x51fee2));}catch{return![];}if(!a3_0x4a9b7d[_0x4330d8(0x10a)](_0x35aecb))throw new Error('Path\x20must\x20be\x20absolute\x20after\x20normalization');return _0xdbb689[_0x4330d8(0x106)](_0x46ac71=>{const _0x1257e=_0x4330d8;if(typeof _0x46ac71!==_0x1257e(0x10b)||!_0x46ac71)return![];if(_0x46ac71[_0x1257e(0xfd)]('\x00'))return![];let _0x21a1c9;try{_0x21a1c9=a3_0x4a9b7d['resolve'](a3_0x4a9b7d[_0x1257e(0xfc)](_0x46ac71));}catch{return![];}if(!a3_0x4a9b7d[_0x1257e(0x10a)](_0x21a1c9))throw new Error('Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization');if(_0x35aecb===_0x21a1c9)return!![];if(_0x21a1c9===a3_0x4a9b7d['sep'])return _0x35aecb[_0x1257e(0x108)](a3_0x4a9b7d['sep']);return _0x35aecb[_0x1257e(0x108)](_0x21a1c9+a3_0x4a9b7d[_0x1257e(0x104)]);});}function a3_0x14f7(_0x255d39,_0x39a4d1){_0x255d39=_0x255d39-0xf9;const _0x3002f1=a3_0x3002();let _0x14f73f=_0x3002f1[_0x255d39];return _0x14f73f;}function a3_0x3002(){const _0x5f3997=['string','1182951QRHJli','178040QlRSRC','1301111iHrkCt','2423151VMGypv','normalize','includes','2272824GoVpko','32gTaxbF','88LYwaWA','length','30116FinrsL','isArray','sep','9279560qXAlVV','some','resolve','startsWith','102XZGMex','isAbsolute'];a3_0x3002=function(){return _0x5f3997;};return a3_0x3002();}
1
+ (function(_0x1ac411,_0x41b745){const _0x3d6903=a3_0x15db,_0x45679b=_0x1ac411();while(!![]){try{const _0x2f1199=-parseInt(_0x3d6903(0x76))/0x1*(-parseInt(_0x3d6903(0x7a))/0x2)+parseInt(_0x3d6903(0x74))/0x3*(-parseInt(_0x3d6903(0x82))/0x4)+-parseInt(_0x3d6903(0x79))/0x5+parseInt(_0x3d6903(0x87))/0x6*(parseInt(_0x3d6903(0x81))/0x7)+parseInt(_0x3d6903(0x80))/0x8+-parseInt(_0x3d6903(0x83))/0x9+parseInt(_0x3d6903(0x7f))/0xa*(parseInt(_0x3d6903(0x7e))/0xb);if(_0x2f1199===_0x41b745)break;else _0x45679b['push'](_0x45679b['shift']());}catch(_0x250b2c){_0x45679b['push'](_0x45679b['shift']());}}}(a3_0x4d1a,0x2fc60));import a3_0x233d0a from'path';function a3_0x15db(_0x1d928a,_0x4b23a3){_0x1d928a=_0x1d928a-0x73;const _0x4d1a9e=a3_0x4d1a();let _0x15db8a=_0x4d1a9e[_0x1d928a];return _0x15db8a;}export function isPathWithinAllowedDirectories(_0x258186,_0x1ec307){const _0x13d007=a3_0x15db;if(typeof _0x258186!==_0x13d007(0x84)||!Array[_0x13d007(0x7d)](_0x1ec307))return![];if(!_0x258186||_0x1ec307['length']===0x0)return![];if(_0x258186[_0x13d007(0x85)]('\x00'))return![];let _0x2bc9c6;try{_0x2bc9c6=a3_0x233d0a[_0x13d007(0x77)](a3_0x233d0a['normalize'](_0x258186));}catch{return![];}if(!a3_0x233d0a[_0x13d007(0x86)](_0x2bc9c6))throw new Error(_0x13d007(0x7b));return _0x1ec307[_0x13d007(0x78)](_0x26f331=>{const _0x482140=_0x13d007;if(typeof _0x26f331!=='string'||!_0x26f331)return![];if(_0x26f331[_0x482140(0x85)]('\x00'))return![];let _0xa0f6e7;try{_0xa0f6e7=a3_0x233d0a['resolve'](a3_0x233d0a['normalize'](_0x26f331));}catch{return![];}if(!a3_0x233d0a[_0x482140(0x86)](_0xa0f6e7))throw new Error(_0x482140(0x73));if(_0x2bc9c6===_0xa0f6e7)return!![];if(_0xa0f6e7===a3_0x233d0a[_0x482140(0x75)])return _0x2bc9c6[_0x482140(0x7c)](a3_0x233d0a['sep']);return _0x2bc9c6[_0x482140(0x7c)](_0xa0f6e7+a3_0x233d0a[_0x482140(0x75)]);});}function a3_0x4d1a(){const _0x434152=['Path\x20must\x20be\x20absolute\x20after\x20normalization','startsWith','isArray','209fZnAqB','126460TDEsaF','625880wumyQU','24437oEJvXT','4rSCqIK','1570104yZsEXC','string','includes','isAbsolute','150ZYKUHK','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','306219mWaKil','sep','19055tcciRE','resolve','some','715900QpJimK','22hXIpqH'];a3_0x4d1a=function(){return _0x434152;};return a3_0x4d1a();}
@@ -1 +1 @@
1
- (function(_0x27a096,_0x13f1d1){const _0xda035b=a4_0x55a3,_0x468bb2=_0x27a096();while(!![]){try{const _0x14933c=-parseInt(_0xda035b(0x1fb))/0x1+-parseInt(_0xda035b(0x1fc))/0x2+-parseInt(_0xda035b(0x204))/0x3+parseInt(_0xda035b(0x201))/0x4+-parseInt(_0xda035b(0x1ef))/0x5*(parseInt(_0xda035b(0x1f7))/0x6)+-parseInt(_0xda035b(0x1fd))/0x7*(parseInt(_0xda035b(0x1f2))/0x8)+parseInt(_0xda035b(0x202))/0x9*(parseInt(_0xda035b(0x1f5))/0xa);if(_0x14933c===_0x13f1d1)break;else _0x468bb2['push'](_0x468bb2['shift']());}catch(_0x2d2f24){_0x468bb2['push'](_0x468bb2['shift']());}}}(a4_0x4bfd,0xed29f));import{promises as a4_0x71a54f}from'fs';import a4_0x555bca from'path';import a4_0x32bd46 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x6430f8){const _0x57191d=a4_0x55a3;try{const _0x2b5582=_0x6430f8[_0x57191d(0x1f8)](_0x57191d(0x1ec))?_0x6430f8[_0x57191d(0x1f4)](0x7):_0x6430f8,_0x370eac=_0x2b5582['startsWith']('~/')||_0x2b5582==='~'?a4_0x555bca['join'](a4_0x32bd46[_0x57191d(0x1f9)](),_0x2b5582[_0x57191d(0x1f4)](0x1)):_0x2b5582,_0x4144c9=a4_0x555bca[_0x57191d(0x1ed)](_0x370eac),_0x8ae696=await a4_0x71a54f[_0x57191d(0x203)](_0x4144c9);return normalizePath(_0x8ae696);}catch{return null;}}function a4_0x55a3(_0x344167,_0x529922){_0x344167=_0x344167-0x1ec;const _0x4bfd5a=a4_0x4bfd();let _0x55a392=_0x4bfd5a[_0x344167];return _0x55a392;}function formatDirectoryError(_0x2161d5,_0x50e7d0,_0x5021e4){const _0x1f92d0=a4_0x55a3;if(_0x5021e4)return'Skipping\x20'+_0x5021e4+':\x20'+_0x2161d5;const _0xec57f4=_0x50e7d0 instanceof Error?_0x50e7d0[_0x1f92d0(0x1ee)]:String(_0x50e7d0);return _0x1f92d0(0x1fe)+_0x2161d5+_0x1f92d0(0x1f6)+_0xec57f4;}export async function getValidRootDirectories(_0x1155af){const _0x32a34a=a4_0x55a3,_0x52dd40=[];for(const _0x51156f of _0x1155af){const _0x40a5f1=await parseRootUri(_0x51156f[_0x32a34a(0x1f3)]);if(!_0x40a5f1){logMcpStderr(formatDirectoryError(_0x51156f[_0x32a34a(0x1f3)],undefined,_0x32a34a(0x1f0)));continue;}try{const _0x16f709=await a4_0x71a54f[_0x32a34a(0x1ff)](_0x40a5f1);_0x16f709[_0x32a34a(0x1fa)]()?_0x52dd40[_0x32a34a(0x1f1)](_0x40a5f1):logMcpStderr(formatDirectoryError(_0x40a5f1,undefined,_0x32a34a(0x200)));}catch(_0x20f998){logMcpStderr(formatDirectoryError(_0x40a5f1,_0x20f998));}}return _0x52dd40;}function a4_0x4bfd(){const _0x5857e0=['5022auiCQi','realpath','5810535dYvyeL','file://','resolve','message','705njLOLk','invalid\x20path\x20or\x20inaccessible','push','8FWGWbc','uri','slice','124920fhWJnn','\x20due\x20to\x20error:\x20','62220mdfGUj','startsWith','homedir','isDirectory','1466530lGLFPF','2021976oObUMe','1152613unJPnd','Skipping\x20invalid\x20directory:\x20','stat','non-directory\x20root','168316vyEXsx'];a4_0x4bfd=function(){return _0x5857e0;};return a4_0x4bfd();}
1
+ (function(_0xf36ca8,_0x4bdfd0){const _0x3b9425=a4_0x7bee,_0x2ee642=_0xf36ca8();while(!![]){try{const _0x2c0ada=-parseInt(_0x3b9425(0x79))/0x1*(-parseInt(_0x3b9425(0x72))/0x2)+parseInt(_0x3b9425(0x7f))/0x3*(-parseInt(_0x3b9425(0x84))/0x4)+parseInt(_0x3b9425(0x8b))/0x5+-parseInt(_0x3b9425(0x7c))/0x6*(parseInt(_0x3b9425(0x74))/0x7)+-parseInt(_0x3b9425(0x80))/0x8*(parseInt(_0x3b9425(0x86))/0x9)+parseInt(_0x3b9425(0x85))/0xa+parseInt(_0x3b9425(0x89))/0xb;if(_0x2c0ada===_0x4bdfd0)break;else _0x2ee642['push'](_0x2ee642['shift']());}catch(_0x321135){_0x2ee642['push'](_0x2ee642['shift']());}}}(a4_0x2f98,0x924ac));import{promises as a4_0x34385e}from'fs';import a4_0x44c95a from'path';import a4_0x48e49f from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x432ffb){const _0x2300d6=a4_0x7bee;try{const _0x59f896=_0x432ffb[_0x2300d6(0x75)](_0x2300d6(0x81))?_0x432ffb[_0x2300d6(0x71)](0x7):_0x432ffb,_0x3c033d=_0x59f896[_0x2300d6(0x75)]('~/')||_0x59f896==='~'?a4_0x44c95a[_0x2300d6(0x78)](a4_0x48e49f[_0x2300d6(0x83)](),_0x59f896[_0x2300d6(0x71)](0x1)):_0x59f896,_0x1683c9=a4_0x44c95a[_0x2300d6(0x76)](_0x3c033d),_0x50ae58=await a4_0x34385e[_0x2300d6(0x7d)](_0x1683c9);return normalizePath(_0x50ae58);}catch{return null;}}function a4_0x2f98(){const _0x3e1a9d=['push','Skipping\x20invalid\x20directory:\x20','17971987LdsMog','Skipping\x20','3553665ZLETTE','slice','1766348bHyAkS','uri','28714XjLubA','startsWith','resolve','invalid\x20path\x20or\x20inaccessible','join','1qIcpmY','\x20due\x20to\x20error:\x20','isDirectory','1506YbMEAo','realpath','stat','162366vhCWGT','72ebKcss','file://','message','homedir','44vpswYs','965110ITogYD','1100079XaXPYF'];a4_0x2f98=function(){return _0x3e1a9d;};return a4_0x2f98();}function a4_0x7bee(_0x132c80,_0xa83cff){_0x132c80=_0x132c80-0x71;const _0x2f98d9=a4_0x2f98();let _0x7beea7=_0x2f98d9[_0x132c80];return _0x7beea7;}function formatDirectoryError(_0x756972,_0x3dd3ad,_0x258f1b){const _0x3070bf=a4_0x7bee;if(_0x258f1b)return _0x3070bf(0x8a)+_0x258f1b+':\x20'+_0x756972;const _0x1ab9f0=_0x3dd3ad instanceof Error?_0x3dd3ad[_0x3070bf(0x82)]:String(_0x3dd3ad);return _0x3070bf(0x88)+_0x756972+_0x3070bf(0x7a)+_0x1ab9f0;}export async function getValidRootDirectories(_0x40f8b3){const _0x279e15=a4_0x7bee,_0x12db70=[];for(const _0x52fa5 of _0x40f8b3){const _0x10ffb0=await parseRootUri(_0x52fa5['uri']);if(!_0x10ffb0){logMcpStderr(formatDirectoryError(_0x52fa5[_0x279e15(0x73)],undefined,_0x279e15(0x77)));continue;}try{const _0x1fe37a=await a4_0x34385e[_0x279e15(0x7e)](_0x10ffb0);_0x1fe37a[_0x279e15(0x7b)]()?_0x12db70[_0x279e15(0x87)](_0x10ffb0):logMcpStderr(formatDirectoryError(_0x10ffb0,undefined,'non-directory\x20root'));}catch(_0x5ec496){logMcpStderr(formatDirectoryError(_0x10ffb0,_0x5ec496));}}return _0x12db70;}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morphllm/morphmcp",
3
- "version": "0.8.129",
3
+ "version": "0.8.131",
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.137",
38
+ "@morphllm/morphsdk": "0.2.139",
39
39
  "@vscode/ripgrep": "^1.15.14",
40
40
  "axios": "^1.6.0",
41
41
  "chalk": "^5.3.0",