@morphllm/morphmcp 0.8.130 → 0.8.132

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_0x5cfe16=a0_0x5d11;(function(_0x38eb08,_0x2b11d9){const _0x538fb4=a0_0x5d11,_0x6c7b32=_0x38eb08();while(!![]){try{const _0x8e81bf=-parseInt(_0x538fb4(0x1fb))/0x1+parseInt(_0x538fb4(0x269))/0x2+parseInt(_0x538fb4(0x2af))/0x3*(parseInt(_0x538fb4(0x278))/0x4)+parseInt(_0x538fb4(0x29d))/0x5*(parseInt(_0x538fb4(0x27c))/0x6)+parseInt(_0x538fb4(0x1ed))/0x7+parseInt(_0x538fb4(0x2c2))/0x8+parseInt(_0x538fb4(0x242))/0x9*(-parseInt(_0x538fb4(0x238))/0xa);if(_0x8e81bf===_0x2b11d9)break;else _0x6c7b32['push'](_0x6c7b32['shift']());}catch(_0x506280){_0x6c7b32['push'](_0x6c7b32['shift']());}}}(a0_0x2ad7,0x688e5));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_0x4fd9b9 from'fs/promises';import a0_0x52f230 from'path';import a0_0x426b3d from'os';function a0_0x5d11(_0x4332ee,_0x3a5118){_0x4332ee=_0x4332ee-0x1c1;const _0x2ad7fa=a0_0x2ad7();let _0x5d1196=_0x2ad7fa[_0x4332ee];return _0x5d1196;}import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';function a0_0x2ad7(){const _0xd2cc23=['Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','catch','morph-warp-grep-v1-1111v0','27gosoqf','DISABLED_TOOLS','lines','github_codebase_search','WORKSPACE_ROOT','https://morphllm.com/api/error-report','\x0aExamples:','For\x20deletions:\x0a','Warning:\x20Workspace\x20fallback\x20failed:\x20','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','go.mod','<file\x20path=\x22','messages','version','filter','stringify','dryRun','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','role','min','.\x20Path:\x20','substring','floor','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','isArray','message','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','terminationReason','name','[could\x20not\x20read\x20file:\x20','0.2.0','enum','Tool\x20','context','\x0a</file>','SymlinkError','etimedout','includes','../package.json','1492842aMWCkb','now','MORPH_API_URL','data','github_url','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','-\x20Listed\x20directory\x20`','unknown','added\x20','connect','post','basename','success','Disabled\x20tools:\x20','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','20MPRWUp','toLowerCase','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','join','2219478pvEYkZ','setNotificationHandler','Created\x20File','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','user','false','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','list_directory\x20','Specific\x20commit\x20hash\x20to\x20search','files','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','ENOENT','inputSchema','Tool\x20\x22','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','map','finish','morph-mcp','Invalid\x20arguments:\x20','toISOString','[github_codebase_search]\x20Searching\x20','ReadError','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','trim','oninitialized','\x22.\x20Known\x20tools:\x20','source','metadata','every','10pKFCDS','PathError','File\x20read\x20error:','roots','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','composer.json','Error:\x20','timed\x20out','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','realpath','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','dirname','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','length','MORPH_WARP_GREP_TIMEOUT','codebase_search','text','396525PZOxlB','package.json','pyproject.toml','GitHub\x20search\x20failed:\x20','optional','size','--api-key','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','Preview\x20changes\x20without\x20applying\x20them.','completed_with_file_errors','branch','read','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','Relevant\x20context\x20found:','search_string','slice','warn','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','4942040WwstPH','Unknown\x20error','morph-v3-fast','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','split','\x27\x20in\x20`','describe','--version','completionId','WarpGrep\x20sub-tool\x20errors:\x20','Warning:\x20','Cargo.toml','RipgrepError','BinaryFile','.cursor','isDirectory','Fatal\x20error\x20running\x20server:','ENABLE_WORKSPACE_MODE','env','edit_file','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','path','api-key','ms:','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','setRequestHandler','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','stack','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','❌\x20Morph\x20Edit\x20Failed:\x20','\x20(new\x20file)','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','ms.\x20Success:\x20','utf-8','Repository\x20identifier','sep','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','default','content','error','FileReadError','Morph\x20Edit\x20Preview','RipgrepNotAvailable','PWD','match','getClientCapabilities','565432BTCLDm','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.','\x0aOptions:','constructor','Workspace\x20mode\x20enabled:\x20Using\x20','TimeoutError','listRoots','push','safeParse','exit','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','[github_codebase_search]\x20Failed\x20in\x20','Failed\x20to\x20request\x20roots\x20from\x20client:','406723cBKtyZ','sk-','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','ToolException','repo_path',',\x20modified\x20','code_edit','timings','argv','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.','grep','--api-key=','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','Morph\x20Edit\x20','object','Here\x20is\x20the\x20content\x20of\x20files:\x0a','Fallback:\x20Using\x20workspace\x20root\x20','application/json','runWarpGrep_call','-\x20Grepped\x20\x27','instruction','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','Error\x20running\x20fast\x20context\x20search:\x20','Rules:\x0a','all','-\x20Read\x20file\x20`','\x22>\x0aError\x20reading\x20file:\x20','requiresApiKey','read\x20','code','Unknown\x20tool:\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.','description','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','node_modules','timeout','unknown\x20error','assistant','\x0a...\x20(truncated,\x20total:\x20','@morphllm/morphmcp\x20','\x20for:\x20\x22','morph-','has','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','Benefits:\x0a','mcp-filesystem','startsWith','stat','UnknownError','string','.\x20Changes:\x20','number','log','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','resolve','\x20\x20morph-mcp','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','readFile','cwd','6702230GMBjZw','[github_codebase_search]\x20Done\x20in\x20','errors','some','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a'];a0_0x2ad7=function(){return _0xd2cc23;};return a0_0x2ad7();}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_0x5744a5 from'axios';function fixPathRepetition(_0x1daea1){const _0x49b149=a0_0x5d11,_0x17b070=_0x1daea1['split'](a0_0x52f230[_0x49b149(0x1e1)])[_0x49b149(0x250)](Boolean);if(_0x17b070[_0x49b149(0x2ab)]<0x2)return null;for(let _0x21dd2b=Math[_0x49b149(0x258)](_0x17b070[_0x49b149(0x2ab)]/0x2);_0x21dd2b>=0x1;_0x21dd2b--){for(let _0x21a83b=0x0;_0x21a83b<=_0x17b070[_0x49b149(0x2ab)]-0x2*_0x21dd2b;_0x21a83b++){const _0x3e994a=_0x17b070[_0x49b149(0x2be)](_0x21a83b,_0x21a83b+_0x21dd2b),_0x201dd9=_0x17b070['slice'](_0x21a83b+_0x21dd2b,_0x21a83b+0x2*_0x21dd2b);if(_0x3e994a[_0x49b149(0x29c)]((_0x1ff41f,_0x151fe2)=>_0x1ff41f===_0x201dd9[_0x151fe2])){const _0x1c9479=[..._0x17b070[_0x49b149(0x2be)](0x0,_0x21a83b),..._0x17b070[_0x49b149(0x2be)](_0x21a83b+_0x21dd2b)];return a0_0x52f230[_0x49b149(0x1e1)]+_0x1c9479[_0x49b149(0x27b)](a0_0x52f230['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x25d439=a0_0x5d11;try{const _0x325363=require(_0x25d439(0x268));return _0x325363[_0x25d439(0x24f)]??_0x25d439(0x270);}catch(_0x2ea007){return logMcpStderr(_0x25d439(0x2a7),_0x2ea007),_0x25d439(0x270);}}function printHelp(){const _0xf2c973=a0_0x5d11;console['log']('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0xf2c973(0x231)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0xf2c973(0x231)](_0xf2c973(0x1ef)),console[_0xf2c973(0x231)](_0xf2c973(0x2a5)),console['log'](_0xf2c973(0x1e3)),console[_0xf2c973(0x231)](_0xf2c973(0x2a9)),console['log'](_0xf2c973(0x248)),console[_0xf2c973(0x231)](_0xf2c973(0x234)),console[_0xf2c973(0x231)](_0xf2c973(0x21d));}const cliArgs=process[a0_0x5cfe16(0x203)]['slice'](0x2),VERSION_FLAGS=new Set([a0_0x5cfe16(0x1c3),'-v','-V']),HELP_FLAGS=new Set(['--help','-h']);cliArgs[a0_0x5cfe16(0x23b)](_0x314a78=>VERSION_FLAGS[a0_0x5cfe16(0x226)](_0x314a78))&&(console[a0_0x5cfe16(0x231)](a0_0x5cfe16(0x223)+getPackageVersion()),process['exit'](0x0));cliArgs[a0_0x5cfe16(0x23b)](_0x492145=>HELP_FLAGS[a0_0x5cfe16(0x226)](_0x492145))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x5c5cc4){const _0x2cb796=a0_0x5cfe16;for(let _0x1d006d=0x0;_0x1d006d<cliArgs[_0x2cb796(0x2ab)];_0x1d006d++){const _0x402dff=cliArgs[_0x1d006d];if(_0x402dff[_0x2cb796(0x22b)]('--'+_0x5c5cc4+'='))return _0x402dff[_0x2cb796(0x2be)](('--'+_0x5c5cc4+'=')[_0x2cb796(0x2ab)]);if(_0x402dff==='--'+_0x5c5cc4&&_0x1d006d+0x1<cliArgs[_0x2cb796(0x2ab)])return cliArgs[_0x1d006d+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs['length'];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x5cfe16(0x226)](arg)||HELP_FLAGS[a0_0x5cfe16(0x226)](arg))continue;if(arg[a0_0x5cfe16(0x22b)](a0_0x5cfe16(0x206)))continue;if(arg===a0_0x5cfe16(0x2b5)){i++;continue;}args[a0_0x5cfe16(0x1f4)](arg);}const WORKSPACE_ROOT=process[a0_0x5cfe16(0x1ce)][a0_0x5cfe16(0x246)]||process[a0_0x5cfe16(0x1ce)][a0_0x5cfe16(0x1ea)]||process[a0_0x5cfe16(0x237)](),ENABLE_WORKSPACE_MODE=process[a0_0x5cfe16(0x1ce)][a0_0x5cfe16(0x1cd)]!==a0_0x5cfe16(0x281),MORPH_API_KEY=getCliArg(a0_0x5cfe16(0x1d2))??process[a0_0x5cfe16(0x1ce)]['MORPH_API_KEY'],MORPH_API_URL=process['env'][a0_0x5cfe16(0x26b)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x5cfe16(0x1ce)][a0_0x5cfe16(0x2ac)]?parseInt(process[a0_0x5cfe16(0x1ce)][a0_0x5cfe16(0x2ac)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set(['edit_file',a0_0x5cfe16(0x2ad),'github_codebase_search']),DISABLED_TOOLS=process[a0_0x5cfe16(0x1ce)][a0_0x5cfe16(0x243)]?new Set(process['env'][a0_0x5cfe16(0x243)]['split'](',')[a0_0x5cfe16(0x28f)](_0x14c91d=>_0x14c91d[a0_0x5cfe16(0x297)]())[a0_0x5cfe16(0x250)](_0x55a5f7=>_0x55a5f7[a0_0x5cfe16(0x2ab)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0x5cfe16(0x2b4)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x5cfe16(0x226)](tool)&&console['error'](a0_0x5cfe16(0x2a1)+tool+a0_0x5cfe16(0x299)+[...KNOWN_TOOL_NAMES]['join'](',\x20'));}console[a0_0x5cfe16(0x1e6)](a0_0x5cfe16(0x276)+[...DISABLED_TOOLS][a0_0x5cfe16(0x27b)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY['startsWith'](a0_0x5cfe16(0x1fc))&&!MORPH_API_KEY[a0_0x5cfe16(0x22b)](a0_0x5cfe16(0x225))&&logMcpStderr(a0_0x5cfe16(0x284));async function reportMorphError(_0xfd0240){const _0x16cdce=a0_0x5cfe16;try{await a0_0x5744a5[_0x16cdce(0x273)](_0x16cdce(0x247),{..._0xfd0240,'timestamp':new Date()[_0x16cdce(0x293)](),'source':_0xfd0240[_0x16cdce(0x29a)]||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0xfd0240[_0x16cdce(0x263)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x16cdce(0x20d),'Authorization':'Bearer\x20'+MORPH_API_KEY}});}catch{}}args[a0_0x5cfe16(0x2ab)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x5cfe16(0x259)),logMcpStderr(a0_0x5cfe16(0x296)),logMcpStderr(a0_0x5cfe16(0x28d)),logMcpStderr(a0_0x5cfe16(0x2c5)),logMcpStderr('\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)'),logMcpStderr(a0_0x5cfe16(0x1dd)));function normalizePath(_0x943866){return a0_0x52f230['normalize'](_0x943866);}function expandHome(_0x539a55){const _0x9b9bff=a0_0x5cfe16;if(_0x539a55['startsWith']('~/')||_0x539a55==='~')return a0_0x52f230['join'](a0_0x426b3d['homedir'](),_0x539a55[_0x9b9bff(0x2be)](0x1));return _0x539a55;}let allowedDirectories=await Promise[a0_0x5cfe16(0x214)](args[a0_0x5cfe16(0x28f)](async _0x405cc1=>{const _0x30c4e8=a0_0x5cfe16,_0xffea0e=expandHome(_0x405cc1),_0xb84fb1=a0_0x52f230[_0x30c4e8(0x233)](_0xffea0e);try{const _0x359384=await a0_0x4fd9b9[_0x30c4e8(0x2a6)](_0xb84fb1);return normalizePath(_0x359384);}catch(_0x3533e1){return normalizePath(_0xb84fb1);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x5cfe16(0x2ab)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x5cfe16(0x1f4)](workspaceDir),logMcpStderr(a0_0x5cfe16(0x1f1)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x473b2b){logMcpStderr(a0_0x5cfe16(0x25c)+a0_0x473b2b);}async function detectWorkspaceRoot(_0x38efad){const _0x397939=a0_0x5cfe16;let _0x2a3aa6=a0_0x52f230[_0x397939(0x233)](_0x38efad);const _0x4f194e=['.git','.vscode',_0x397939(0x2b0),_0x397939(0x1c7),_0x397939(0x2b1),_0x397939(0x24c),_0x397939(0x1ca),'tsconfig.json',_0x397939(0x2a2)];while(_0x2a3aa6!==a0_0x52f230[_0x397939(0x2a8)](_0x2a3aa6)){for(const _0x2eef75 of _0x4f194e){const _0x138925=a0_0x52f230[_0x397939(0x27b)](_0x2a3aa6,_0x2eef75);try{return await a0_0x4fd9b9['access'](_0x138925),normalizePath(_0x2a3aa6);}catch{}}_0x2a3aa6=a0_0x52f230['dirname'](_0x2a3aa6);}return normalizePath(_0x38efad);}await Promise[a0_0x5cfe16(0x214)](args['map'](async _0x3f427e=>{const _0x1e4747=a0_0x5cfe16;try{const _0x3c0a92=await a0_0x4fd9b9[_0x1e4747(0x22c)](expandHome(_0x3f427e));!_0x3c0a92[_0x1e4747(0x1cb)]()&&(logMcpStderr('Error:\x20'+_0x3f427e+'\x20is\x20not\x20a\x20directory'),process['exit'](0x1));}catch(_0x5d35a0){logMcpStderr('Error\x20accessing\x20directory\x20'+_0x3f427e+':',_0x5d35a0),process[_0x1e4747(0x1f6)](0x1);}}));async function validatePath(_0x56ab6e){const _0x78b78d=a0_0x5cfe16,_0x3462c1=expandHome(_0x56ab6e),_0x2cdf1a=a0_0x52f230[_0x78b78d(0x233)](_0x3462c1);try{const _0x5549c5=await a0_0x4fd9b9[_0x78b78d(0x2a6)](_0x2cdf1a);return _0x5549c5;}catch(_0x1eecb6){if(_0x1eecb6[_0x78b78d(0x219)]===_0x78b78d(0x289)){const _0xd4cc45=a0_0x52f230[_0x78b78d(0x2a8)](_0x2cdf1a);try{const _0x9d67aa=await a0_0x4fd9b9['realpath'](_0xd4cc45);return a0_0x52f230[_0x78b78d(0x27b)](_0x9d67aa,a0_0x52f230[_0x78b78d(0x274)](_0x2cdf1a));}catch{throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0xd4cc45);}}throw _0x1eecb6;}}const MorphEditFileArgsSchema=z[a0_0x5cfe16(0x20a)]({'path':z[a0_0x5cfe16(0x22e)](),'code_edit':z[a0_0x5cfe16(0x22e)]()[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x24b)),'instruction':z[a0_0x5cfe16(0x22e)]()[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x2c1)),'dryRun':z['boolean']()[a0_0x5cfe16(0x1e4)](![])[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x2b7))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x5cfe16(0x1ee),WarpGrepArgsSchema=z['object']({'search_string':z[a0_0x5cfe16(0x22e)]()[a0_0x5cfe16(0x1c2)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x5cfe16(0x22e)]()[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x1d9)),'search_type':z[a0_0x5cfe16(0x261)](['default',a0_0x5cfe16(0x21e)])['optional']()['describe']('Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.')}),WarpGrepGitHubArgsSchema=z[a0_0x5cfe16(0x20a)]({'search_string':z[a0_0x5cfe16(0x22e)]()[a0_0x5cfe16(0x1c2)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()[a0_0x5cfe16(0x2b3)]()[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x204)),'owner_repo':z[a0_0x5cfe16(0x22e)]()['optional']()[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x211)),'branch':z['string']()[a0_0x5cfe16(0x2b3)]()['describe'](a0_0x5cfe16(0x2c0))}),CodebaseSearchArgsSchema=z[a0_0x5cfe16(0x20a)]({'query':z['string']()[a0_0x5cfe16(0x1c2)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x5cfe16(0x22e)]()[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x1e0)),'branch':z['string']()[a0_0x5cfe16(0x2b3)]()[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x1d5)),'commitHash':z[a0_0x5cfe16(0x22e)]()[a0_0x5cfe16(0x2b3)]()[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x286)),'targetDirectories':z['array'](z[a0_0x5cfe16(0x22e)]())['default']([])[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x23e)),'limit':z[a0_0x5cfe16(0x230)]()[a0_0x5cfe16(0x2b3)]()[a0_0x5cfe16(0x1e4)](0xa)['describe']('Max\x20results\x20to\x20return')}),server=new Server({'name':a0_0x5cfe16(0x291),'version':a0_0x5cfe16(0x260)},{'capabilities':{'tools':{}}});server[a0_0x5cfe16(0x1d6)](ListToolsRequestSchema,async()=>{const _0x1356eb=a0_0x5cfe16,_0x12d8ac=[{'name':'edit_file','description':_0x1356eb(0x23c)+_0x1356eb(0x27a)+_0x1356eb(0x207)+_0x1356eb(0x28e)+_0x1356eb(0x229)+_0x1356eb(0x277)+'-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a'+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+'-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a'+_0x1356eb(0x1f8)+_0x1356eb(0x27f)+_0x1356eb(0x23d)+_0x1356eb(0x249)+'-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a'+_0x1356eb(0x1d4)+_0x1356eb(0x213)+_0x1356eb(0x235)+'-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a'+_0x1356eb(0x1e2)+_0x1356eb(0x23f)+_0x1356eb(0x227)+_0x1356eb(0x283)+_0x1356eb(0x1fd),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x1356eb(0x2ad),'description':_0x1356eb(0x1d0)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x1356eb(0x2b6)+_0x1356eb(0x1d7)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x2d747f=_0x12d8ac[_0x1356eb(0x250)](_0x4a5492=>{const _0x515a2f=_0x1356eb;if(DISABLED_TOOLS[_0x515a2f(0x226)](_0x4a5492[_0x515a2f(0x25e)]))return console[_0x515a2f(0x1e6)](_0x515a2f(0x262)+_0x4a5492['name']+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if(_0x515a2f(0x217)in _0x4a5492&&_0x4a5492[_0x515a2f(0x217)]&&!MORPH_API_KEY)return logMcpStderr(_0x515a2f(0x1c6)+_0x4a5492[_0x515a2f(0x25e)]+_0x515a2f(0x208)),![];return!![];});return{'tools':_0x2d747f[_0x1356eb(0x28f)](_0x17a0d5=>({'name':_0x17a0d5['name'],'description':_0x17a0d5[_0x1356eb(0x21c)],'inputSchema':_0x17a0d5[_0x1356eb(0x28a)]}))};}),server[a0_0x5cfe16(0x1d6)](CallToolRequestSchema,async _0x10b8be=>{const _0x433903=a0_0x5cfe16,{name:_0x45482f,arguments:_0x25c5ea}=_0x10b8be['params'];try{if(DISABLED_TOOLS[_0x433903(0x226)](_0x45482f))throw new Error(_0x433903(0x28b)+_0x45482f+'\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable');switch(_0x45482f){case _0x433903(0x1cf):{const _0x2e277f=MorphEditFileArgsSchema[_0x433903(0x1f5)](_0x25c5ea);if(!_0x2e277f['success'])throw new Error(_0x433903(0x28c)+_0x2e277f['error']);const _0x20711e=await validatePath(_0x2e277f[_0x433903(0x26c)][_0x433903(0x1d1)]);let _0x43a59d=null,_0xbb1d2c=!![],_0xe71999=null;try{_0x43a59d=await a0_0x4fd9b9[_0x433903(0x236)](_0x20711e,_0x433903(0x1df));}catch(_0x3f5893){const _0x519904=_0x3f5893[_0x433903(0x219)];_0x519904===_0x433903(0x289)?(_0xbb1d2c=![],_0x43a59d=''):(_0xe71999='Failed\x20to\x20read\x20file:\x20'+(_0x519904||_0x433903(0x270))+'\x20-\x20'+(_0x3f5893 instanceof Error?_0x3f5893[_0x433903(0x25b)]:String(_0x3f5893)),logMcpStderr('Warning:\x20'+_0xe71999));}let _0x2d715a;try{const _0x28d23f=MORPH_API_KEY;if(!_0x28d23f)throw new Error(_0x433903(0x26e));const _0x5eae51=a0_0x52f230[_0x433903(0x2a8)](_0x20711e),_0xdd933=a0_0x52f230[_0x433903(0x274)](_0x20711e),_0x2c8ed2=await executeEditFile({'target_filepath':_0xdd933,'code_edit':_0x2e277f['data']['code_edit'],'instructions':_0x2e277f[_0x433903(0x26c)][_0x433903(0x210)]},{'morphApiKey':_0x28d23f,'morphApiUrl':MORPH_API_URL,'baseDir':_0x5eae51,'autoWrite':!_0x2e277f[_0x433903(0x26c)][_0x433903(0x252)],'generateUdiff':![],'debug':![]});_0x2d715a=_0x2c8ed2[_0x433903(0x1c4)];if(!_0x2c8ed2[_0x433903(0x275)])throw new Error(_0x2c8ed2[_0x433903(0x1e6)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x50055b=_0x2c8ed2['changes'],_0x3db1a5=_0x433903(0x271)+_0x50055b['linesAdded']+',\x20removed\x20'+_0x50055b['linesRemoved']+_0x433903(0x200)+_0x50055b['linesModified'];if(_0x2e277f['data'][_0x433903(0x252)])return{'content':[{'type':'text','text':_0x433903(0x1e8)+(_0xbb1d2c?'':_0x433903(0x1dc))+':\x20'+_0x2e277f['data'][_0x433903(0x210)]+_0x433903(0x22f)+_0x3db1a5+'.\x20Path:\x20'+_0x2e277f[_0x433903(0x26c)][_0x433903(0x1d1)]+'.'}]};return{'content':[{'type':_0x433903(0x2ae),'text':_0x433903(0x209)+(_0xbb1d2c?'Applied':_0x433903(0x27e))+':\x20'+_0x2e277f[_0x433903(0x26c)][_0x433903(0x210)]+_0x433903(0x22f)+_0x3db1a5+_0x433903(0x256)+_0x2e277f[_0x433903(0x26c)][_0x433903(0x1d1)]+'.'}]};}catch(_0x5ab1cd){const _0x5803f6=_0x5ab1cd instanceof Error?_0x5ab1cd[_0x433903(0x25b)]:String(_0x5ab1cd);return reportMorphError({'error_message':_0x5803f6,'error_type':_0x5ab1cd instanceof Error?_0x5ab1cd[_0x433903(0x1f0)]['name']:_0x433903(0x22d),'context':{'tool':'edit_file','completion_id':_0x2d715a,'file_path':_0x2e277f[_0x433903(0x26c)][_0x433903(0x1d1)],'validated_path':_0x20711e,'instruction':_0x2e277f[_0x433903(0x26c)][_0x433903(0x210)],'model':_0x433903(0x2c4),'dry_run':_0x2e277f['data'][_0x433903(0x252)],'file_exists':_0xbb1d2c,'file_read_error':_0xe71999,'file_readable':_0x43a59d!==null,'request_content':{'path':_0x2e277f[_0x433903(0x26c)][_0x433903(0x1d1)],'code_edit':_0x2e277f[_0x433903(0x26c)][_0x433903(0x201)],'instruction':_0x2e277f[_0x433903(0x26c)]['instruction'],'original_code':_0x43a59d!==null?_0x43a59d[_0x433903(0x2ab)]>0xc350?_0x43a59d['substring'](0x0,0xc350)+_0x433903(0x222)+_0x43a59d[_0x433903(0x2ab)]+'\x20chars)':_0x43a59d:_0x433903(0x25f)+(_0xe71999||_0x433903(0x220))+']','original_code_length':_0x43a59d?.[_0x433903(0x2ab)]??0x0,'model':'morph-v3-fast','dry_run':_0x2e277f[_0x433903(0x26c)]['dryRun']}},'stack_trace':_0x5ab1cd instanceof Error?_0x5ab1cd[_0x433903(0x1d8)]:undefined,'source':_0x433903(0x22a)})[_0x433903(0x240)](()=>{}),{'content':[{'type':'text','text':_0x433903(0x1db)+_0x5803f6}],'isError':!![]};}}case _0x433903(0x2ad):{const _0x380425=WarpGrepArgsSchema[_0x433903(0x1f5)](_0x25c5ea);if(!_0x380425['success'])return{'content':[{'type':_0x433903(0x2ae),'text':_0x433903(0x292)+_0x380425[_0x433903(0x1e6)]}],'isError':!![]};const _0x4a2f51=_0x52a6ae=>{const _0x63e9a0=_0x433903,_0x23b5f7=[];for(const _0x147bb0 of _0x52a6ae||[]){const _0x4c176f=_0x147bb0[_0x63e9a0(0x254)],_0x54daa4=_0x147bb0[_0x63e9a0(0x1e5)];if(_0x4c176f===_0x63e9a0(0x221)&&_0x54daa4){const _0x49b975=_0x54daa4[_0x63e9a0(0x2c6)]('\x0a')[_0x63e9a0(0x250)](_0x1bed2e=>_0x1bed2e[_0x63e9a0(0x297)]());for(const _0x5852e1 of _0x49b975){const _0x2bec67=_0x5852e1[_0x63e9a0(0x1eb)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x2bec67){_0x23b5f7[_0x63e9a0(0x1f4)]('grep\x20\x27'+_0x2bec67[0x1]+'\x27\x20'+_0x2bec67[0x2]);continue;}const _0x2a6145=_0x5852e1[_0x63e9a0(0x1eb)](/^read\s+(.+)$/);if(_0x2a6145){_0x23b5f7[_0x63e9a0(0x1f4)](_0x63e9a0(0x218)+_0x2a6145[0x1]);continue;}const _0x57ea95=_0x5852e1[_0x63e9a0(0x1eb)](/^list_directory\s+(.+)$/);if(_0x57ea95){_0x23b5f7['push'](_0x63e9a0(0x285)+_0x57ea95[0x1]);continue;}}}}return _0x23b5f7;},_0x437c5c=_0x2be448=>{const _0x36636c=_0x433903,_0x1c8ef7=[];if(!_0x2be448||!Array[_0x36636c(0x25a)](_0x2be448))return _0x1c8ef7;const _0x39dfd1=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':'FileNotFound','tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':_0x36636c(0x29e),'tool':_0x36636c(0x2ba)},{'pattern':/\[READ ERROR\]/,'error_type':_0x36636c(0x295),'tool':_0x36636c(0x2ba)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x36636c(0x1c9),'tool':_0x36636c(0x2ba)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x36636c(0x1c8),'tool':'grep'},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x36636c(0x1e9),'tool':_0x36636c(0x205)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x36636c(0x1c9),'tool':_0x36636c(0x2ba)},{'pattern':/\[SYMLINK\]/,'error_type':_0x36636c(0x265),'tool':_0x36636c(0x2ba)},{'pattern':/not a text file/,'error_type':_0x36636c(0x1c9),'tool':_0x36636c(0x2ba)},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':'read'},{'pattern':/Error reading file:/,'error_type':_0x36636c(0x295),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x36636c(0x1fe),'tool':_0x36636c(0x270)}];let _0x19d2d8=0x0;for(const _0x1d13ee of _0x2be448){if(_0x1d13ee['role']===_0x36636c(0x280)){_0x19d2d8++;const _0x24e5f0=_0x1d13ee[_0x36636c(0x1e5)];if(!_0x24e5f0||typeof _0x24e5f0!==_0x36636c(0x22e))continue;for(const {pattern:_0x50c81,error_type:_0xf9f673,tool:_0x8bda32}of _0x39dfd1){const _0x2d9a22=_0x24e5f0[_0x36636c(0x1eb)](new RegExp(_0x50c81[_0x36636c(0x29a)],'g'));if(_0x2d9a22)for(const _0x4424aa of _0x2d9a22){const _0x4b616c=_0x24e5f0['indexOf'](_0x4424aa),_0xa1f231=_0x24e5f0[_0x36636c(0x257)](_0x4b616c,Math[_0x36636c(0x255)](_0x4b616c+0xc8,_0x24e5f0[_0x36636c(0x2ab)]));_0x1c8ef7[_0x36636c(0x1f4)]({'tool':_0x8bda32,'error_type':_0xf9f673,'error_message':_0xa1f231[_0x36636c(0x2c6)]('\x0a')[0x0],'turn':_0x19d2d8});}}}}return _0x1c8ef7;};try{const _0x142ea5=a0_0x52f230[_0x433903(0x233)](_0x380425[_0x433903(0x26c)][_0x433903(0x1ff)]),_0x48417b=_0x380425[_0x433903(0x26c)][_0x433903(0x1da)],_0x1dede3=_0x48417b===_0x433903(0x21e)?{'allowNames':[_0x433903(0x21e)]}:undefined,_0x456f56=new LocalRipgrepProvider(_0x142ea5,undefined,_0x1dede3),_0x1c63e2=await runWarpGrep({'searchTerm':_0x380425[_0x433903(0x26c)][_0x433903(0x2bd)],'repoRoot':_0x142ea5,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x456f56,'search_type':_0x48417b}),_0x534f1e=_0x437c5c(_0x1c63e2[_0x433903(0x24e)]);_0x534f1e['length']>0x0&&reportMorphError({'error_message':_0x433903(0x1c5)+_0x534f1e[_0x433903(0x2ab)]+'\x20error(s)','error_type':'SubToolError','level':_0x433903(0x2bf),'tool':'codebase_search','context':{'repo_path':_0x380425['data'][_0x433903(0x1ff)],'query':_0x380425['data'][_0x433903(0x2bd)],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x1c63e2[_0x433903(0x25d)],'sub_tool_errors':_0x534f1e,'timings':_0x1c63e2[_0x433903(0x202)],'tool_calls':_0x4a2f51(_0x1c63e2['messages']),'messages':_0x1c63e2[_0x433903(0x24e)]?.[_0x433903(0x28f)](_0x17c382=>({'role':_0x17c382[_0x433903(0x254)],'content':_0x17c382[_0x433903(0x1e5)]}))},'source':_0x433903(0x22a)})[_0x433903(0x240)](()=>{});let _0x4d6185='';if(_0x1c63e2['terminationReason']==='completed'&&_0x1c63e2[_0x433903(0x290)]?.[_0x433903(0x29b)]?.['files']){const _0x3e2bb2=_0x1c63e2[_0x433903(0x290)]['metadata'][_0x433903(0x287)];if(_0x3e2bb2[_0x433903(0x2ab)]===0x0)return _0x4d6185=_0x1c63e2[_0x433903(0x290)]['payload']||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x433903(0x2ae),'text':_0x4d6185}]};const _0x49d538=[],_0x1ce883=[_0x433903(0x282)];for(const _0x3092c1 of _0x1c63e2[_0x433903(0x24e)]){const _0x54a6ee=_0x3092c1[_0x433903(0x254)],_0xfdbe9d=_0x3092c1[_0x433903(0x1e5)];if(_0x54a6ee===_0x433903(0x221)&&_0xfdbe9d){const _0x223de3=_0xfdbe9d[_0x433903(0x2c6)]('\x0a')[_0x433903(0x250)](_0x21fcf9=>_0x21fcf9['trim']());for(const _0x505c01 of _0x223de3){const _0x3439bb=_0x505c01['match'](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x3439bb){_0x1ce883['push'](_0x433903(0x20f)+_0x3439bb[0x1]+_0x433903(0x1c1)+_0x3439bb[0x2]+'`');continue;}const _0x2c31d5=_0x505c01[_0x433903(0x1eb)](/^read\s+(.+)$/);if(_0x2c31d5){_0x1ce883[_0x433903(0x1f4)](_0x433903(0x215)+_0x2c31d5[0x1]+'`');continue;}const _0xe3451f=_0x505c01[_0x433903(0x1eb)](/^list_directory\s+(.+)$/);if(_0xe3451f){_0x1ce883['push'](_0x433903(0x26f)+_0xe3451f[0x1]+'`');continue;}}}}_0x49d538['push'](_0x1ce883[_0x433903(0x27b)]('\x0a'));const _0x53fdee=['',_0x433903(0x2bc)];for(const _0x4e51f9 of _0x3e2bb2){if(_0x4e51f9[_0x433903(0x244)]==='*')_0x53fdee[_0x433903(0x1f4)]('-\x20'+_0x4e51f9[_0x433903(0x1d1)]+':*');else{if(Array[_0x433903(0x25a)](_0x4e51f9[_0x433903(0x244)])){const _0x3bbe0d=_0x4e51f9[_0x433903(0x244)][_0x433903(0x28f)](([_0x4cb0ba,_0x3bd7ed])=>{if(_0x4cb0ba===_0x3bd7ed)return''+_0x4cb0ba;return _0x4cb0ba+'-'+_0x3bd7ed;});_0x53fdee['push']('-\x20'+_0x4e51f9['path']+':'+_0x3bbe0d['join'](','));}else _0x53fdee[_0x433903(0x1f4)]('-\x20'+_0x4e51f9[_0x433903(0x1d1)]+':*');}}_0x53fdee['push'](''),_0x49d538[_0x433903(0x1f4)](_0x53fdee[_0x433903(0x27b)]('\x0a')),_0x49d538[_0x433903(0x1f4)](_0x433903(0x20b));const _0x5dfd2d=[];for(const _0x63d616 of _0x3e2bb2){let _0x43cd0b=a0_0x52f230['resolve'](_0x380425[_0x433903(0x26c)][_0x433903(0x1ff)],_0x63d616[_0x433903(0x1d1)]),_0x2caf75=null,_0x335ab8=null;try{_0x2caf75=await a0_0x4fd9b9[_0x433903(0x236)](_0x43cd0b,{'encoding':_0x433903(0x1df)});}catch(_0x2804c0){const _0x1a8cb4=fixPathRepetition(_0x43cd0b);if(_0x1a8cb4)try{_0x2caf75=await a0_0x4fd9b9['readFile'](_0x1a8cb4,{'encoding':'utf-8'}),_0x43cd0b=_0x1a8cb4;}catch{_0x335ab8=_0x2804c0 instanceof Error?_0x2804c0:new Error(String(_0x2804c0));}else _0x335ab8=_0x2804c0 instanceof Error?_0x2804c0:new Error(String(_0x2804c0));}if(_0x2caf75!==null){const _0x28961a=_0x2caf75[_0x433903(0x2c6)](/\r?\n/),_0x269ad3=[_0x433903(0x24d)+_0x63d616[_0x433903(0x1d1)]+'\x22>'];if(_0x63d616[_0x433903(0x244)]==='*'||!Array['isArray'](_0x63d616[_0x433903(0x244)]))for(let _0x197abb=0x1;_0x197abb<=_0x28961a[_0x433903(0x2ab)];_0x197abb++){const _0x276fbb=_0x28961a[_0x197abb-0x1];_0x269ad3[_0x433903(0x1f4)](_0x197abb+'|\x20'+_0x276fbb);}else for(const [_0x249ad5,_0x10c4fd]of _0x63d616[_0x433903(0x244)]){_0x269ad3[_0x433903(0x2ab)]>0x1&&_0x269ad3['push']('');for(let _0x51958c=_0x249ad5;_0x51958c<=_0x10c4fd&&_0x51958c<=_0x28961a[_0x433903(0x2ab)];_0x51958c++){const _0x39e43a=_0x28961a[_0x51958c-0x1];_0x269ad3['push'](_0x51958c+'|\x20'+_0x39e43a);}}_0x269ad3['push']('</file>'),_0x5dfd2d[_0x433903(0x1f4)](_0x269ad3['join']('\x0a'));}else _0x5dfd2d[_0x433903(0x1f4)](_0x433903(0x24d)+_0x63d616[_0x433903(0x1d1)]+_0x433903(0x216)+(_0x335ab8?.[_0x433903(0x25b)]||_0x433903(0x2c3))+_0x433903(0x264));}_0x49d538[_0x433903(0x1f4)](_0x5dfd2d[_0x433903(0x27b)]('\x0a\x0a')),_0x4d6185=_0x49d538[_0x433903(0x27b)]('\x0a');const _0x3040f2=_0x1c63e2['errors']?.['filter'](_0x57c567=>_0x57c567[_0x433903(0x25b)]?.[_0x433903(0x22b)](_0x433903(0x29f)))||[];if(_0x3040f2[_0x433903(0x2ab)]>0x0){const _0x576497=_0x3040f2[_0x433903(0x28f)](_0xa07e35=>_0xa07e35[_0x433903(0x25b)])['join'](';\x20');reportMorphError({'error_message':_0x576497,'error_type':_0x433903(0x1e7),'context':{'tool':_0x433903(0x2ad),'repo_path':_0x380425[_0x433903(0x26c)]['repo_path'],'query':_0x380425[_0x433903(0x26c)][_0x433903(0x2bd)],'model':_0x433903(0x241),'termination_reason':_0x433903(0x2b8),'error_count':_0x3040f2[_0x433903(0x2ab)],'is_timeout':![],'timings':_0x1c63e2[_0x433903(0x202)],'files_attempted':_0x3e2bb2[_0x433903(0x28f)](_0x3a4b7d=>({'path':_0x3a4b7d[_0x433903(0x1d1)],'lines':_0x3a4b7d[_0x433903(0x244)]})),'tool_calls':_0x4a2f51(_0x1c63e2[_0x433903(0x24e)]),'messages':_0x1c63e2[_0x433903(0x24e)]?.[_0x433903(0x28f)](_0x121d2a=>({'role':_0x121d2a[_0x433903(0x254)],'content':_0x121d2a[_0x433903(0x1e5)]})),'request_content':{'query':_0x380425[_0x433903(0x26c)][_0x433903(0x2bd)],'repo_path':_0x380425[_0x433903(0x26c)]['repo_path'],'repoRoot':a0_0x52f230[_0x433903(0x233)](_0x380425['data'][_0x433903(0x1ff)]),'model':'morph-warp-grep-v1-1111v0'}},'source':_0x433903(0x22a)})[_0x433903(0x240)](()=>{});}}else{if(_0x1c63e2[_0x433903(0x25d)]==='terminated'&&_0x1c63e2[_0x433903(0x23a)][_0x433903(0x2ab)]>0x0){const _0x3c692a=_0x1c63e2[_0x433903(0x23a)][_0x433903(0x28f)](_0x271b35=>_0x271b35['message'])['join'](';\x20');_0x4d6185=_0x433903(0x2a3)+_0x3c692a;const _0x3b56d6=_0x3c692a[_0x433903(0x279)]()[_0x433903(0x267)](_0x433903(0x21f))||_0x3c692a[_0x433903(0x279)]()[_0x433903(0x267)](_0x433903(0x2a4))||_0x3c692a[_0x433903(0x279)]()[_0x433903(0x267)](_0x433903(0x266)),_0x62f6cc=_0x1c63e2[_0x433903(0x290)]?.[_0x433903(0x29b)]?.[_0x433903(0x287)],_0x12170e=_0x1c63e2[_0x433903(0x23a)][0x0];reportMorphError({'error_message':_0x3c692a,'error_type':_0x3b56d6?_0x433903(0x1f2):_0x12170e?.['constructor']?.[_0x433903(0x25e)]||'WarpGrepError','context':{'tool':_0x433903(0x2ad),'repo_path':_0x380425[_0x433903(0x26c)][_0x433903(0x1ff)],'query':_0x380425[_0x433903(0x26c)][_0x433903(0x2bd)],'model':_0x433903(0x241),'termination_reason':_0x1c63e2['terminationReason'],'error_count':_0x1c63e2[_0x433903(0x23a)][_0x433903(0x2ab)],'is_timeout':_0x3b56d6,'timings':_0x1c63e2['timings'],'files_attempted':_0x62f6cc?.['map'](_0x2f2691=>({'path':_0x2f2691[_0x433903(0x1d1)],'lines':_0x2f2691['lines']})),'tool_calls':_0x4a2f51(_0x1c63e2[_0x433903(0x24e)]),'messages':_0x1c63e2[_0x433903(0x24e)]?.[_0x433903(0x28f)](_0x1fb0d5=>({'role':_0x1fb0d5[_0x433903(0x254)],'content':_0x1fb0d5[_0x433903(0x1e5)]})),'request_content':{'query':_0x380425['data'][_0x433903(0x2bd)],'repo_path':_0x380425[_0x433903(0x26c)][_0x433903(0x1ff)],'repoRoot':a0_0x52f230['resolve'](_0x380425[_0x433903(0x26c)][_0x433903(0x1ff)]),'model':_0x433903(0x241)}},'stack_trace':_0x12170e?.[_0x433903(0x1d8)]||undefined,'source':_0x433903(0x22a)})[_0x433903(0x240)](()=>{});}else _0x4d6185=_0x433903(0x232);}return{'content':[{'type':_0x433903(0x2ae),'text':_0x4d6185}]};}catch(_0x9346bd){const _0x466c30=_0x9346bd instanceof Error?_0x9346bd['message']:String(_0x9346bd),_0x9158f4=_0x466c30['toLowerCase']()['includes'](_0x433903(0x21f))||_0x466c30[_0x433903(0x279)]()[_0x433903(0x267)](_0x433903(0x2a4))||_0x466c30[_0x433903(0x279)]()['includes'](_0x433903(0x266))||_0x9346bd instanceof Error&&_0x9346bd[_0x433903(0x25e)]===_0x433903(0x1f2);return reportMorphError({'error_message':_0x466c30,'error_type':_0x9158f4?_0x433903(0x1f2):_0x9346bd instanceof Error?_0x9346bd['constructor'][_0x433903(0x25e)]:_0x433903(0x22d),'context':{'tool':_0x433903(0x2ad),'repo_path':_0x380425[_0x433903(0x26c)][_0x433903(0x1ff)],'query':_0x380425['data'][_0x433903(0x2bd)],'model':_0x433903(0x241),'is_timeout':_0x9158f4,'exception_phase':_0x433903(0x20e),'request_content':{'query':_0x380425[_0x433903(0x26c)][_0x433903(0x2bd)],'repo_path':_0x380425[_0x433903(0x26c)][_0x433903(0x1ff)],'repoRoot':a0_0x52f230[_0x433903(0x233)](_0x380425['data'][_0x433903(0x1ff)]),'model':'morph-warp-grep-v1-1111v0'}},'stack_trace':_0x9346bd instanceof Error?_0x9346bd[_0x433903(0x1d8)]:undefined,'source':_0x433903(0x22a)})[_0x433903(0x240)](()=>{}),{'content':[{'type':_0x433903(0x2ae),'text':_0x433903(0x212)+_0x466c30}],'isError':![]};}}case _0x433903(0x245):{const _0x53144c=WarpGrepGitHubArgsSchema[_0x433903(0x1f5)](_0x25c5ea);if(!_0x53144c[_0x433903(0x275)])return{'content':[{'type':_0x433903(0x2ae),'text':_0x433903(0x292)+_0x53144c['error']}],'isError':!![]};const _0x40feb5=_0x53144c['data'][_0x433903(0x26d)]||_0x53144c[_0x433903(0x26c)]['owner_repo'];if(!_0x40feb5)return{'content':[{'type':_0x433903(0x2ae),'text':'Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id'}],'isError':!![]};const _0x21c329=MORPH_API_KEY;if(!_0x21c329)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x1a4fae=Date[_0x433903(0x26a)]();logMcpStderr(_0x433903(0x294)+_0x40feb5+_0x433903(0x224)+_0x53144c[_0x433903(0x26c)][_0x433903(0x2bd)]+'\x22');try{const _0x29a417=new WarpGrepClient({'morphApiKey':_0x21c329,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x5b4e31=await _0x29a417['searchGitHub']({'searchTerm':_0x53144c['data'][_0x433903(0x2bd)],'github':_0x40feb5,'branch':_0x53144c[_0x433903(0x26c)][_0x433903(0x2b9)]}),_0x455e88=Date[_0x433903(0x26a)]()-_0x1a4fae;logMcpStderr(_0x433903(0x239)+_0x455e88+_0x433903(0x1de)+_0x5b4e31[_0x433903(0x275)]);const _0x40005a=formatResult(_0x5b4e31);return{'content':[{'type':_0x433903(0x2ae),'text':_0x40005a}]};}catch(_0x11e8a2){const _0x570453=Date['now']()-_0x1a4fae,_0x1f63a9=_0x11e8a2 instanceof Error?_0x11e8a2[_0x433903(0x25b)]:String(_0x11e8a2);return logMcpStderr(_0x433903(0x1f9)+_0x570453+_0x433903(0x1d3),_0x1f63a9),reportMorphError({'error_message':_0x1f63a9,'error_type':_0x11e8a2 instanceof Error?_0x11e8a2[_0x433903(0x1f0)][_0x433903(0x25e)]:_0x433903(0x22d),'context':{'tool':_0x433903(0x245),'github_url':_0x40feb5,'search_string':_0x53144c[_0x433903(0x26c)][_0x433903(0x2bd)],'branch':_0x53144c['data'][_0x433903(0x2b9)]},'stack_trace':_0x11e8a2 instanceof Error?_0x11e8a2[_0x433903(0x1d8)]:undefined,'source':_0x433903(0x22a),'tool':_0x433903(0x245),'latency_ms':_0x570453})[_0x433903(0x240)](()=>{}),{'content':[{'type':_0x433903(0x2ae),'text':_0x433903(0x2b2)+_0x1f63a9}],'isError':![]};}}default:throw new Error(_0x433903(0x21a)+_0x45482f);}}catch(_0x3a9a8c){const _0x325be5=_0x3a9a8c instanceof Error?_0x3a9a8c[_0x433903(0x25b)]:String(_0x3a9a8c);return reportMorphError({'error_message':_0x325be5,'error_type':_0x3a9a8c instanceof Error?_0x3a9a8c[_0x433903(0x1f0)][_0x433903(0x25e)]:'UnknownError','context':{'tool':_0x45482f,'arguments':_0x25c5ea?JSON[_0x433903(0x251)](_0x25c5ea)[_0x433903(0x257)](0x0,0x1f4):undefined,'mcp_server_version':_0x433903(0x260)},'stack_trace':_0x3a9a8c instanceof Error?_0x3a9a8c['stack']:undefined,'source':_0x433903(0x22a)})[_0x433903(0x240)](()=>{}),{'content':[{'type':_0x433903(0x2ae),'text':_0x433903(0x2a3)+_0x325be5}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0xbcfc67){const _0x217380=a0_0x5cfe16,_0xad299e=await getValidRootDirectories(_0xbcfc67);if(_0xad299e['length']>0x0)allowedDirectories=[..._0xad299e],logMcpStderr(_0x217380(0x253)+_0xad299e['length']+'\x20valid\x20directories');else{logMcpStderr(_0x217380(0x2aa));if(ENABLE_WORKSPACE_MODE)try{const _0x8b7c82=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x8b7c82&&(allowedDirectories=[_0x8b7c82],logMcpStderr(_0x217380(0x20c)+_0x8b7c82));}catch(_0x368928){logMcpStderr(_0x217380(0x24a)+_0x368928);}}}server[a0_0x5cfe16(0x27d)](RootsListChangedNotificationSchema,async()=>{const _0x5571d7=a0_0x5cfe16;try{const _0xbd2603=await server[_0x5571d7(0x1f3)]();_0xbd2603&&_0x5571d7(0x2a0)in _0xbd2603&&await updateAllowedDirectoriesFromRoots(_0xbd2603[_0x5571d7(0x2a0)]);}catch(_0x346884){logMcpStderr(_0x5571d7(0x1fa),_0x346884 instanceof Error?_0x346884[_0x5571d7(0x25b)]:String(_0x346884));}}),server[a0_0x5cfe16(0x298)]=async()=>{const _0x54853a=a0_0x5cfe16,_0x3c88d0=server[_0x54853a(0x1ec)]();if(_0x3c88d0?.[_0x54853a(0x2a0)])try{const _0x5cf272=await server[_0x54853a(0x1f3)]();_0x5cf272&&_0x54853a(0x2a0)in _0x5cf272?await updateAllowedDirectoriesFromRoots(_0x5cf272[_0x54853a(0x2a0)]):logMcpStderr(_0x54853a(0x228));}catch(_0xf137d2){logMcpStderr(_0x54853a(0x2bb),_0xf137d2 instanceof Error?_0xf137d2[_0x54853a(0x25b)]:String(_0xf137d2));}else{if(allowedDirectories[_0x54853a(0x2ab)]>0x0)logMcpStderr(_0x54853a(0x1f7),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x54853a(0x288));else throw new Error(_0x54853a(0x21b));}}};async function runServer(){const _0x67cd85=a0_0x5cfe16,_0x160825=new StdioServerTransport();await server[_0x67cd85(0x272)](_0x160825),logMcpStderr('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories['length']===0x0&&logMcpStderr('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()[a0_0x5cfe16(0x240)](_0x4f7e80=>{const _0x439a42=a0_0x5cfe16;logMcpStderr(_0x439a42(0x1cc),_0x4f7e80),process[_0x439a42(0x1f6)](0x1);});
2
+ const a0_0x516777=a0_0x55da;(function(_0x4a5278,_0x3e0763){const _0x2f1800=a0_0x55da,_0x3ca585=_0x4a5278();while(!![]){try{const _0x1ff306=-parseInt(_0x2f1800(0x1f2))/0x1+parseInt(_0x2f1800(0x216))/0x2*(-parseInt(_0x2f1800(0x12b))/0x3)+-parseInt(_0x2f1800(0x19f))/0x4+-parseInt(_0x2f1800(0x125))/0x5+parseInt(_0x2f1800(0x1eb))/0x6+-parseInt(_0x2f1800(0x1b5))/0x7+parseInt(_0x2f1800(0x1d6))/0x8;if(_0x1ff306===_0x3e0763)break;else _0x3ca585['push'](_0x3ca585['shift']());}catch(_0x36b4f0){_0x3ca585['push'](_0x3ca585['shift']());}}}(a0_0x526b,0x2a5cf));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_0xe4ef90 from'fs/promises';import a0_0x4d30fe from'path';import a0_0x1a3d20 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_0x5ab2ca from'axios';function fixPathRepetition(_0x4b15bc){const _0x50195d=a0_0x55da,_0x387db9=_0x4b15bc['split'](a0_0x4d30fe['sep'])['filter'](Boolean);if(_0x387db9[_0x50195d(0x169)]<0x2)return null;for(let _0x1fc15b=Math['floor'](_0x387db9[_0x50195d(0x169)]/0x2);_0x1fc15b>=0x1;_0x1fc15b--){for(let _0x462803=0x0;_0x462803<=_0x387db9[_0x50195d(0x169)]-0x2*_0x1fc15b;_0x462803++){const _0x578a45=_0x387db9['slice'](_0x462803,_0x462803+_0x1fc15b),_0x22b3c3=_0x387db9['slice'](_0x462803+_0x1fc15b,_0x462803+0x2*_0x1fc15b);if(_0x578a45['every']((_0x2cf512,_0x10dfb9)=>_0x2cf512===_0x22b3c3[_0x10dfb9])){const _0x230536=[..._0x387db9[_0x50195d(0x21e)](0x0,_0x462803),..._0x387db9['slice'](_0x462803+_0x1fc15b)];return a0_0x4d30fe[_0x50195d(0x161)]+_0x230536[_0x50195d(0x1d1)](a0_0x4d30fe['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0xfdd50a=a0_0x55da;try{const _0x53012d=require(_0xfdd50a(0x155));return _0x53012d[_0xfdd50a(0x16b)]??_0xfdd50a(0x224);}catch(_0x6d26e){return logMcpStderr(_0xfdd50a(0x14f),_0x6d26e),'unknown';}}function printHelp(){const _0x3f8105=a0_0x55da;console[_0x3f8105(0x14a)](_0x3f8105(0x1ff)+getPackageVersion()),console[_0x3f8105(0x14a)](_0x3f8105(0x183)),console[_0x3f8105(0x14a)](_0x3f8105(0x1f6)),console['log'](_0x3f8105(0x1ba)),console['log'](_0x3f8105(0x1e5)),console['log'](_0x3f8105(0x1a3)),console[_0x3f8105(0x14a)]('\x0aExamples:'),console[_0x3f8105(0x14a)](_0x3f8105(0x1b7)),console[_0x3f8105(0x14a)](_0x3f8105(0x16f));}const cliArgs=process[a0_0x516777(0x1c2)][a0_0x516777(0x21e)](0x2),VERSION_FLAGS=new Set([a0_0x516777(0x1ab),'-v','-V']),HELP_FLAGS=new Set([a0_0x516777(0x1e9),'-h']);cliArgs[a0_0x516777(0x20f)](_0x1b27eb=>VERSION_FLAGS[a0_0x516777(0x193)](_0x1b27eb))&&(console[a0_0x516777(0x14a)](a0_0x516777(0x1ff)+getPackageVersion()),process['exit'](0x0));cliArgs[a0_0x516777(0x20f)](_0x272fa4=>HELP_FLAGS[a0_0x516777(0x193)](_0x272fa4))&&(printHelp(),process['exit'](0x0));function getCliArg(_0xda1552){const _0x459c95=a0_0x516777;for(let _0x13751e=0x0;_0x13751e<cliArgs['length'];_0x13751e++){const _0x1f18a8=cliArgs[_0x13751e];if(_0x1f18a8[_0x459c95(0x154)]('--'+_0xda1552+'='))return _0x1f18a8[_0x459c95(0x21e)](('--'+_0xda1552+'=')[_0x459c95(0x169)]);if(_0x1f18a8==='--'+_0xda1552&&_0x13751e+0x1<cliArgs[_0x459c95(0x169)])return cliArgs[_0x13751e+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x516777(0x169)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x516777(0x193)](arg)||HELP_FLAGS['has'](arg))continue;if(arg[a0_0x516777(0x154)]('--api-key='))continue;if(arg===a0_0x516777(0x12f)){i++;continue;}args['push'](arg);}const WORKSPACE_ROOT=process[a0_0x516777(0x1b3)][a0_0x516777(0x12c)]||process['env']['PWD']||process[a0_0x516777(0x163)](),ENABLE_WORKSPACE_MODE=process[a0_0x516777(0x1b3)][a0_0x516777(0x1d7)]!==a0_0x516777(0x1d0),MORPH_API_KEY=getCliArg(a0_0x516777(0x1dc))??process['env'][a0_0x516777(0x13f)],MORPH_API_URL=process[a0_0x516777(0x1b3)][a0_0x516777(0x170)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x516777(0x1b3)][a0_0x516777(0x140)]?parseInt(process[a0_0x516777(0x1b3)][a0_0x516777(0x140)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x516777(0x184),a0_0x516777(0x175),a0_0x516777(0x150)]),DISABLED_TOOLS=process['env'][a0_0x516777(0x136)]?new Set(process[a0_0x516777(0x1b3)][a0_0x516777(0x136)][a0_0x516777(0x1fc)](',')[a0_0x516777(0x1c9)](_0x11b44e=>_0x11b44e[a0_0x516777(0x19a)]())['filter'](_0x2644ab=>_0x2644ab[a0_0x516777(0x169)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0x516777(0x226)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x516777(0x193)](tool)&&console[a0_0x516777(0x190)]('Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22'+tool+a0_0x516777(0x18c)+[...KNOWN_TOOL_NAMES][a0_0x516777(0x1d1)](',\x20'));}console[a0_0x516777(0x190)](a0_0x516777(0x195)+[...DISABLED_TOOLS][a0_0x516777(0x1d1)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x516777(0x154)]('sk-')&&!MORPH_API_KEY[a0_0x516777(0x154)](a0_0x516777(0x130))&&logMcpStderr('Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27');async function reportMorphError(_0x4796f2){const _0x5dfa67=a0_0x516777;try{await a0_0x5ab2ca[_0x5dfa67(0x1e1)](_0x5dfa67(0x209),{..._0x4796f2,'timestamp':new Date()['toISOString'](),'source':_0x4796f2['source']||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x4796f2[_0x5dfa67(0x192)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x5dfa67(0x199),'Authorization':_0x5dfa67(0x19b)+MORPH_API_KEY}});}catch{}}args[a0_0x516777(0x169)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x516777(0x1de)),logMcpStderr(a0_0x516777(0x15a)),logMcpStderr(a0_0x516777(0x168)),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr(a0_0x516777(0x180)),logMcpStderr(a0_0x516777(0x134)));function normalizePath(_0x54ef0e){const _0xb8c9dd=a0_0x516777;return a0_0x4d30fe[_0xb8c9dd(0x1dd)](_0x54ef0e);}function expandHome(_0x573403){const _0x295287=a0_0x516777;if(_0x573403[_0x295287(0x154)]('~/')||_0x573403==='~')return a0_0x4d30fe[_0x295287(0x1d1)](a0_0x1a3d20[_0x295287(0x172)](),_0x573403['slice'](0x1));return _0x573403;}let allowedDirectories=await Promise[a0_0x516777(0x17a)](args[a0_0x516777(0x1c9)](async _0x38433b=>{const _0x26bccb=a0_0x516777,_0x1e2a72=expandHome(_0x38433b),_0x519901=a0_0x4d30fe[_0x26bccb(0x151)](_0x1e2a72);try{const _0x4e8950=await a0_0xe4ef90['realpath'](_0x519901);return normalizePath(_0x4e8950);}catch(_0x20d388){return normalizePath(_0x519901);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x516777(0x169)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x516777(0x21f)](workspaceDir),logMcpStderr(a0_0x516777(0x12d)+workspaceDir+a0_0x516777(0x1db)));}catch(a0_0x47009d){logMcpStderr(a0_0x516777(0x198)+a0_0x47009d);}async function detectWorkspaceRoot(_0x36cf6a){const _0x37e4d3=a0_0x516777;let _0x1b8b8d=a0_0x4d30fe[_0x37e4d3(0x151)](_0x36cf6a);const _0x1fc996=[_0x37e4d3(0x185),_0x37e4d3(0x1b1),_0x37e4d3(0x1ea),_0x37e4d3(0x129),'pyproject.toml',_0x37e4d3(0x131),_0x37e4d3(0x13e),_0x37e4d3(0x148),_0x37e4d3(0x1f3)];while(_0x1b8b8d!==a0_0x4d30fe['dirname'](_0x1b8b8d)){for(const _0x41d646 of _0x1fc996){const _0x3ebece=a0_0x4d30fe[_0x37e4d3(0x1d1)](_0x1b8b8d,_0x41d646);try{return await a0_0xe4ef90[_0x37e4d3(0x124)](_0x3ebece),normalizePath(_0x1b8b8d);}catch{}}_0x1b8b8d=a0_0x4d30fe[_0x37e4d3(0x1d8)](_0x1b8b8d);}return normalizePath(_0x36cf6a);}function a0_0x55da(_0x288ff4,_0x3752ae){_0x288ff4=_0x288ff4-0x124;const _0x526b5d=a0_0x526b();let _0x55da86=_0x526b5d[_0x288ff4];return _0x55da86;}await Promise[a0_0x516777(0x17a)](args[a0_0x516777(0x1c9)](async _0x2612e3=>{const _0x17080e=a0_0x516777;try{const _0x2ffb68=await a0_0xe4ef90[_0x17080e(0x12a)](expandHome(_0x2612e3));!_0x2ffb68['isDirectory']()&&(logMcpStderr('Error:\x20'+_0x2612e3+_0x17080e(0x14c)),process['exit'](0x1));}catch(_0x23c97d){logMcpStderr(_0x17080e(0x1ee)+_0x2612e3+':',_0x23c97d),process[_0x17080e(0x128)](0x1);}}));async function validatePath(_0x6e1593){const _0xbbfd1=a0_0x516777,_0x227b2b=expandHome(_0x6e1593),_0x4a33d5=a0_0x4d30fe['resolve'](_0x227b2b);try{const _0x663d22=await a0_0xe4ef90[_0xbbfd1(0x157)](_0x4a33d5);return _0x663d22;}catch(_0x22f134){if(_0x22f134[_0xbbfd1(0x1f1)]===_0xbbfd1(0x1c6)){const _0x591943=a0_0x4d30fe[_0xbbfd1(0x1d8)](_0x4a33d5);try{const _0x349959=await a0_0xe4ef90[_0xbbfd1(0x157)](_0x591943);return a0_0x4d30fe['join'](_0x349959,a0_0x4d30fe[_0xbbfd1(0x1f8)](_0x4a33d5));}catch{throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x591943);}}throw _0x22f134;}}function a0_0x526b(){const _0x2e22bc=['[github_codebase_search]\x20Searching\x20','connect','isArray','text','message','slice','push','name','catch','timings','linesAdded','unknown','indexOf','size','<file\x20path=\x22','access','1105665GJNDBW','terminationReason','SubToolError','exit','Cargo.toml','stat','328197iykTJY','WORKSPACE_ROOT','Workspace\x20mode\x20enabled:\x20Using\x20','TimeoutError','--api-key','morph-','go.mod','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','Morph\x20Edit\x20','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','boolean','DISABLED_TOOLS','content','messages','Morph\x20FastApply\x20failed\x20without\x20error\x20message','files','timeout','searchGitHub','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','.cursor','MORPH_API_KEY','MORPH_WARP_GREP_TIMEOUT','dryRun','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','params','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.','.\x20Path:\x20','now','tsconfig.json','array','log','PathError','\x20is\x20not\x20a\x20directory','roots','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','github_codebase_search','resolve','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','mcp-filesystem','startsWith','../package.json','Created\x20File','realpath','</file>','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','grep\x20\x27','0.2.0','\x27\x20in\x20`','FileReadError','metadata','completed_with_file_errors','sep','stack','cwd','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','WarpGrepError','user','code_edit','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','length','Max\x20results\x20to\x20return','version','branch','data','ms:','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','MORPH_API_URL','-\x20Grepped\x20\x27','homedir','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','Tool\x20','codebase_search','payload','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','readFile','search_string','all','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','ToolException','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','\x20error(s)','object','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','listRoots','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','edit_file','.git','\x20-\x20','read\x20','added\x20','Repository\x20identifier','terminated','description','\x22.\x20Known\x20tools:\x20','completionId','role','stringify','error','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','context','has','path','Disabled\x20tools:\x20','Unknown\x20error','Invalid\x20arguments:\x20','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','application/json','trim','Bearer\x20','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','morph-v3-fast','143156hUHBYe','Tool\x20\x22','etimedout','linesModified','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','min','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','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.','toLowerCase','github_url','--version','Error\x20running\x20fast\x20context\x20search:\x20','Warning:\x20Workspace\x20fallback\x20failed:\x20','\x20chars)','For\x20deletions:\x0a','ReadError','.vscode','Specific\x20commit\x20hash\x20to\x20search','env','string','1296848VjZHvo','substring','\x20\x20morph-mcp','FileNotFound','Unknown\x20tool:\x20','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','default','getClientCapabilities','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','Benefits:\x0a','node_modules','constructor','grep','argv','setRequestHandler','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','\x20for:\x20\x22','ENOENT','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','map','includes',',\x20removed\x20','describe','RipgrepNotAvailable','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','utf-8','false','join','safeParse','\x20(new\x20file)','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','[github_codebase_search]\x20Failed\x20in\x20','6563544MPvSoH','ENABLE_WORKSPACE_MODE','dirname','list_directory\x20','morph-warp-grep-v1-1111v0','\x20as\x20allowed\x20directory','api-key','normalize','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','runWarpGrep_call','-\x20Listed\x20directory\x20`','post','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','[could\x20not\x20read\x20file:\x20','RipgrepError','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','Warning:\x20','instruction','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','--help','package.json','544128oWHzZz','\x20disabled\x20via\x20DISABLED_TOOLS','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','Error\x20accessing\x20directory\x20','UnknownError','Relevant\x20context\x20found:','code','186027qWHzjG','composer.json','Fatal\x20error\x20running\x20server:','source','\x0aOptions:','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','basename','filter','.\x20Changes:\x20','❌\x20Morph\x20Edit\x20Failed:\x20','split','enum','finish','@morphllm/morphmcp\x20','unknown\x20error','SymlinkError','assistant','Here\x20is\x20the\x20content\x20of\x20files:\x0a','success','optional','linesRemoved',',\x20modified\x20','read','https://morphllm.com/api/error-report','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','Error:\x20','errors','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','match','some','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.','repo_path','completed','oninitialized','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','requiresApiKey','2LWZOEW','BinaryFile','lines'];a0_0x526b=function(){return _0x2e22bc;};return a0_0x526b();}const MorphEditFileArgsSchema=z[a0_0x516777(0x17f)]({'path':z[a0_0x516777(0x1b4)](),'code_edit':z[a0_0x516777(0x1b4)]()[a0_0x516777(0x1cc)]('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z[a0_0x516777(0x1b4)]()[a0_0x516777(0x1cc)](a0_0x516777(0x177)),'dryRun':z[a0_0x516777(0x135)]()[a0_0x516777(0x1bb)](![])['describe']('Preview\x20changes\x20without\x20applying\x20them.')}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x516777(0x210),WarpGrepArgsSchema=z[a0_0x516777(0x17f)]({'search_string':z['string']()[a0_0x516777(0x1cc)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x516777(0x1b4)]()[a0_0x516777(0x1cc)]('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_0x516777(0x1fd)](['default',a0_0x516777(0x1bf)])[a0_0x516777(0x205)]()[a0_0x516777(0x1cc)](a0_0x516777(0x1ce))}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z[a0_0x516777(0x1b4)]()[a0_0x516777(0x1cc)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()[a0_0x516777(0x205)]()[a0_0x516777(0x1cc)](a0_0x516777(0x1a8)),'owner_repo':z[a0_0x516777(0x1b4)]()[a0_0x516777(0x205)]()[a0_0x516777(0x1cc)](a0_0x516777(0x132)),'branch':z[a0_0x516777(0x1b4)]()[a0_0x516777(0x205)]()[a0_0x516777(0x1cc)](a0_0x516777(0x142))}),CodebaseSearchArgsSchema=z[a0_0x516777(0x17f)]({'query':z[a0_0x516777(0x1b4)]()[a0_0x516777(0x1cc)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x516777(0x1b4)]()[a0_0x516777(0x1cc)](a0_0x516777(0x189)),'branch':z['string']()[a0_0x516777(0x205)]()['describe'](a0_0x516777(0x152)),'commitHash':z['string']()[a0_0x516777(0x205)]()[a0_0x516777(0x1cc)](a0_0x516777(0x1b2)),'targetDirectories':z[a0_0x516777(0x149)](z[a0_0x516777(0x1b4)]())['default']([])['describe'](a0_0x516777(0x20a)),'limit':z['number']()[a0_0x516777(0x205)]()[a0_0x516777(0x1bb)](0xa)[a0_0x516777(0x1cc)](a0_0x516777(0x16a))}),server=new Server({'name':'morph-mcp','version':a0_0x516777(0x15c)},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x1e90b9=a0_0x516777,_0x3bb26c=[{'name':_0x1e90b9(0x184),'description':_0x1e90b9(0x1c8)+'⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a'+_0x1e90b9(0x17b)+'IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a'+_0x1e90b9(0x1be)+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x1e90b9(0x20d)+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+_0x1e90b9(0x1a7)+'Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a'+_0x1e90b9(0x17d)+_0x1e90b9(0x143)+_0x1e90b9(0x1af)+_0x1e90b9(0x164)+_0x1e90b9(0x19d)+'Rules:\x0a'+_0x1e90b9(0x191)+_0x1e90b9(0x1ed)+'-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a'+_0x1e90b9(0x13d)+_0x1e90b9(0x1e8)+_0x1e90b9(0x1c7)+_0x1e90b9(0x1f7),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x1e90b9(0x175),'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'+_0x1e90b9(0x1c4)+_0x1e90b9(0x1a6)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x2a22c5=_0x3bb26c[_0x1e90b9(0x1f9)](_0x55a9dd=>{const _0x5e489e=_0x1e90b9;if(DISABLED_TOOLS[_0x5e489e(0x193)](_0x55a9dd[_0x5e489e(0x220)]))return console['error'](_0x5e489e(0x174)+_0x55a9dd['name']+_0x5e489e(0x1ec)),![];if('requiresApiKey'in _0x55a9dd&&_0x55a9dd[_0x5e489e(0x215)]&&!MORPH_API_KEY)return logMcpStderr(_0x5e489e(0x1e6)+_0x55a9dd['name']+_0x5e489e(0x1e2)),![];return!![];});return{'tools':_0x2a22c5[_0x1e90b9(0x1c9)](_0x5dd0e9=>({'name':_0x5dd0e9[_0x1e90b9(0x220)],'description':_0x5dd0e9[_0x1e90b9(0x18b)],'inputSchema':_0x5dd0e9['inputSchema']}))};}),server[a0_0x516777(0x1c3)](CallToolRequestSchema,async _0xef050=>{const _0x57e482=a0_0x516777,{name:_0x4880b4,arguments:_0x3dcbc1}=_0xef050[_0x57e482(0x144)];try{if(DISABLED_TOOLS[_0x57e482(0x193)](_0x4880b4))throw new Error(_0x57e482(0x1a0)+_0x4880b4+'\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable');switch(_0x4880b4){case _0x57e482(0x184):{const _0x1b6df0=MorphEditFileArgsSchema['safeParse'](_0x3dcbc1);if(!_0x1b6df0['success'])throw new Error(_0x57e482(0x14e)+_0x1b6df0[_0x57e482(0x190)]);const _0x48a3e4=await validatePath(_0x1b6df0[_0x57e482(0x16d)][_0x57e482(0x194)]);let _0x1a284b=null,_0x32525c=!![],_0x3d0bdf=null;try{_0x1a284b=await a0_0xe4ef90['readFile'](_0x48a3e4,_0x57e482(0x1cf));}catch(_0x39d47d){const _0xd7a829=_0x39d47d['code'];_0xd7a829===_0x57e482(0x1c6)?(_0x32525c=![],_0x1a284b=''):(_0x3d0bdf='Failed\x20to\x20read\x20file:\x20'+(_0xd7a829||_0x57e482(0x224))+_0x57e482(0x186)+(_0x39d47d instanceof Error?_0x39d47d[_0x57e482(0x21d)]:String(_0x39d47d)),logMcpStderr(_0x57e482(0x1e6)+_0x3d0bdf));}let _0x1fa96c;try{const _0x168fb5=MORPH_API_KEY;if(!_0x168fb5)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x3d944b=a0_0x4d30fe[_0x57e482(0x1d8)](_0x48a3e4),_0x2af01a=a0_0x4d30fe[_0x57e482(0x1f8)](_0x48a3e4),_0x4f9034=await executeEditFile({'target_filepath':_0x2af01a,'code_edit':_0x1b6df0[_0x57e482(0x16d)][_0x57e482(0x167)],'instructions':_0x1b6df0['data'][_0x57e482(0x1e7)]},{'morphApiKey':_0x168fb5,'morphApiUrl':MORPH_API_URL,'baseDir':_0x3d944b,'autoWrite':!_0x1b6df0[_0x57e482(0x16d)][_0x57e482(0x141)],'generateUdiff':![],'debug':![]});_0x1fa96c=_0x4f9034[_0x57e482(0x18d)];if(!_0x4f9034[_0x57e482(0x204)])throw new Error(_0x4f9034[_0x57e482(0x190)]||_0x57e482(0x139));const _0x2ab230=_0x4f9034['changes'],_0x22cbdc=_0x57e482(0x188)+_0x2ab230[_0x57e482(0x223)]+_0x57e482(0x1cb)+_0x2ab230[_0x57e482(0x206)]+_0x57e482(0x207)+_0x2ab230[_0x57e482(0x1a2)];if(_0x1b6df0['data'][_0x57e482(0x141)])return{'content':[{'type':_0x57e482(0x21c),'text':'Morph\x20Edit\x20Preview'+(_0x32525c?'':_0x57e482(0x1d3))+':\x20'+_0x1b6df0[_0x57e482(0x16d)][_0x57e482(0x1e7)]+_0x57e482(0x1fa)+_0x22cbdc+_0x57e482(0x146)+_0x1b6df0['data'][_0x57e482(0x194)]+'.'}]};return{'content':[{'type':_0x57e482(0x21c),'text':_0x57e482(0x133)+(_0x32525c?'Applied':_0x57e482(0x156))+':\x20'+_0x1b6df0[_0x57e482(0x16d)][_0x57e482(0x1e7)]+_0x57e482(0x1fa)+_0x22cbdc+_0x57e482(0x146)+_0x1b6df0['data'][_0x57e482(0x194)]+'.'}]};}catch(_0xe36a75){const _0x1eadef=_0xe36a75 instanceof Error?_0xe36a75[_0x57e482(0x21d)]:String(_0xe36a75);return reportMorphError({'error_message':_0x1eadef,'error_type':_0xe36a75 instanceof Error?_0xe36a75[_0x57e482(0x1c0)][_0x57e482(0x220)]:_0x57e482(0x1ef),'context':{'tool':_0x57e482(0x184),'completion_id':_0x1fa96c,'file_path':_0x1b6df0['data'][_0x57e482(0x194)],'validated_path':_0x48a3e4,'instruction':_0x1b6df0[_0x57e482(0x16d)]['instruction'],'model':_0x57e482(0x19e),'dry_run':_0x1b6df0[_0x57e482(0x16d)][_0x57e482(0x141)],'file_exists':_0x32525c,'file_read_error':_0x3d0bdf,'file_readable':_0x1a284b!==null,'request_content':{'path':_0x1b6df0['data'][_0x57e482(0x194)],'code_edit':_0x1b6df0[_0x57e482(0x16d)][_0x57e482(0x167)],'instruction':_0x1b6df0[_0x57e482(0x16d)][_0x57e482(0x1e7)],'original_code':_0x1a284b!==null?_0x1a284b[_0x57e482(0x169)]>0xc350?_0x1a284b[_0x57e482(0x1b6)](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x1a284b[_0x57e482(0x169)]+_0x57e482(0x1ae):_0x1a284b:_0x57e482(0x1e3)+(_0x3d0bdf||_0x57e482(0x200))+']','original_code_length':_0x1a284b?.[_0x57e482(0x169)]??0x0,'model':_0x57e482(0x19e),'dry_run':_0x1b6df0[_0x57e482(0x16d)][_0x57e482(0x141)]}},'stack_trace':_0xe36a75 instanceof Error?_0xe36a75[_0x57e482(0x162)]:undefined,'source':_0x57e482(0x153)})[_0x57e482(0x221)](()=>{}),{'content':[{'type':_0x57e482(0x21c),'text':_0x57e482(0x1fb)+_0x1eadef}],'isError':!![]};}}case'codebase_search':{const _0x586427=WarpGrepArgsSchema['safeParse'](_0x3dcbc1);if(!_0x586427[_0x57e482(0x204)])return{'content':[{'type':_0x57e482(0x21c),'text':_0x57e482(0x197)+_0x586427[_0x57e482(0x190)]}],'isError':!![]};const _0x223a73=_0x463f98=>{const _0xb5b3aa=_0x57e482,_0x351a3f=[];for(const _0x323d9e of _0x463f98||[]){const _0x4bcbac=_0x323d9e[_0xb5b3aa(0x18e)],_0x598566=_0x323d9e['content'];if(_0x4bcbac===_0xb5b3aa(0x202)&&_0x598566){const _0x1170bf=_0x598566[_0xb5b3aa(0x1fc)]('\x0a')[_0xb5b3aa(0x1f9)](_0x1525bd=>_0x1525bd[_0xb5b3aa(0x19a)]());for(const _0x4aaf4c of _0x1170bf){const _0x5d68de=_0x4aaf4c[_0xb5b3aa(0x20e)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x5d68de){_0x351a3f[_0xb5b3aa(0x21f)](_0xb5b3aa(0x15b)+_0x5d68de[0x1]+'\x27\x20'+_0x5d68de[0x2]);continue;}const _0x4ea50c=_0x4aaf4c['match'](/^read\s+(.+)$/);if(_0x4ea50c){_0x351a3f[_0xb5b3aa(0x21f)](_0xb5b3aa(0x187)+_0x4ea50c[0x1]);continue;}const _0x5a41be=_0x4aaf4c[_0xb5b3aa(0x20e)](/^list_directory\s+(.+)$/);if(_0x5a41be){_0x351a3f['push'](_0xb5b3aa(0x1d9)+_0x5a41be[0x1]);continue;}}}}return _0x351a3f;},_0x4fb404=_0x5efd75=>{const _0x56e8f3=_0x57e482,_0x34f074=[];if(!_0x5efd75||!Array[_0x56e8f3(0x21b)](_0x5efd75))return _0x34f074;const _0x1dfc35=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x56e8f3(0x1b8),'tool':_0x56e8f3(0x208)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x56e8f3(0x14b),'tool':_0x56e8f3(0x208)},{'pattern':/\[READ ERROR\]/,'error_type':_0x56e8f3(0x1b0),'tool':_0x56e8f3(0x208)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x56e8f3(0x217),'tool':_0x56e8f3(0x208)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x56e8f3(0x1e4),'tool':_0x56e8f3(0x1c1)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x56e8f3(0x1cd),'tool':_0x56e8f3(0x1c1)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x56e8f3(0x217),'tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':'read'},{'pattern':/not a text file/,'error_type':_0x56e8f3(0x217),'tool':'read'},{'pattern':/symbolic link/,'error_type':_0x56e8f3(0x201),'tool':_0x56e8f3(0x208)},{'pattern':/Error reading file:/,'error_type':_0x56e8f3(0x1b0),'tool':_0x56e8f3(0x208)},{'pattern':/status="error"/,'error_type':_0x56e8f3(0x17c),'tool':'unknown'}];let _0x200bbc=0x0;for(const _0x56e18b of _0x5efd75){if(_0x56e18b[_0x56e8f3(0x18e)]===_0x56e8f3(0x166)){_0x200bbc++;const _0x202f0f=_0x56e18b['content'];if(!_0x202f0f||typeof _0x202f0f!=='string')continue;for(const {pattern:_0x4db7ae,error_type:_0x16402f,tool:_0x18f6bd}of _0x1dfc35){const _0x1de3a2=_0x202f0f[_0x56e8f3(0x20e)](new RegExp(_0x4db7ae[_0x56e8f3(0x1f5)],'g'));if(_0x1de3a2)for(const _0x488ebd of _0x1de3a2){const _0x32c016=_0x202f0f[_0x56e8f3(0x225)](_0x488ebd),_0x2f344e=_0x202f0f[_0x56e8f3(0x1b6)](_0x32c016,Math[_0x56e8f3(0x1a4)](_0x32c016+0xc8,_0x202f0f[_0x56e8f3(0x169)]));_0x34f074[_0x56e8f3(0x21f)]({'tool':_0x18f6bd,'error_type':_0x16402f,'error_message':_0x2f344e['split']('\x0a')[0x0],'turn':_0x200bbc});}}}}return _0x34f074;};try{const _0x58744d=a0_0x4d30fe[_0x57e482(0x151)](_0x586427[_0x57e482(0x16d)][_0x57e482(0x211)]),_0x1a30cb=_0x586427['data']['search_type'],_0x128092=_0x1a30cb===_0x57e482(0x1bf)?{'allowNames':['node_modules']}:undefined,_0xfd53b8=new LocalRipgrepProvider(_0x58744d,undefined,_0x128092),_0x322d67=await runWarpGrep({'searchTerm':_0x586427[_0x57e482(0x16d)][_0x57e482(0x179)],'repoRoot':_0x58744d,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0xfd53b8,'search_type':_0x1a30cb}),_0x34396e=_0x4fb404(_0x322d67[_0x57e482(0x138)]);_0x34396e[_0x57e482(0x169)]>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x34396e['length']+_0x57e482(0x17e),'error_type':_0x57e482(0x127),'level':'warn','tool':'codebase_search','context':{'repo_path':_0x586427['data'][_0x57e482(0x211)],'query':_0x586427['data'][_0x57e482(0x179)],'model':_0x57e482(0x1da),'termination_reason':_0x322d67[_0x57e482(0x126)],'sub_tool_errors':_0x34396e,'timings':_0x322d67[_0x57e482(0x222)],'tool_calls':_0x223a73(_0x322d67['messages']),'messages':_0x322d67[_0x57e482(0x138)]?.[_0x57e482(0x1c9)](_0x155884=>({'role':_0x155884[_0x57e482(0x18e)],'content':_0x155884[_0x57e482(0x137)]}))},'source':_0x57e482(0x153)})['catch'](()=>{});let _0x1d901a='';if(_0x322d67[_0x57e482(0x126)]===_0x57e482(0x212)&&_0x322d67[_0x57e482(0x1fe)]?.['metadata']?.['files']){const _0x3847cb=_0x322d67[_0x57e482(0x1fe)][_0x57e482(0x15f)][_0x57e482(0x13a)];if(_0x3847cb[_0x57e482(0x169)]===0x0)return _0x1d901a=_0x322d67['finish'][_0x57e482(0x176)]||_0x57e482(0x159),{'content':[{'type':'text','text':_0x1d901a}]};const _0x482779=[],_0x47acda=[_0x57e482(0x19c)];for(const _0x389700 of _0x322d67[_0x57e482(0x138)]){const _0x97a639=_0x389700[_0x57e482(0x18e)],_0x195d5e=_0x389700['content'];if(_0x97a639===_0x57e482(0x202)&&_0x195d5e){const _0x447130=_0x195d5e[_0x57e482(0x1fc)]('\x0a')[_0x57e482(0x1f9)](_0x39f1a3=>_0x39f1a3['trim']());for(const _0x404246 of _0x447130){const _0x56f614=_0x404246[_0x57e482(0x20e)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x56f614){_0x47acda[_0x57e482(0x21f)](_0x57e482(0x171)+_0x56f614[0x1]+_0x57e482(0x15d)+_0x56f614[0x2]+'`');continue;}const _0x1f776f=_0x404246[_0x57e482(0x20e)](/^read\s+(.+)$/);if(_0x1f776f){_0x47acda[_0x57e482(0x21f)]('-\x20Read\x20file\x20`'+_0x1f776f[0x1]+'`');continue;}const _0x36667f=_0x404246[_0x57e482(0x20e)](/^list_directory\s+(.+)$/);if(_0x36667f){_0x47acda[_0x57e482(0x21f)](_0x57e482(0x1e0)+_0x36667f[0x1]+'`');continue;}}}}_0x482779[_0x57e482(0x21f)](_0x47acda[_0x57e482(0x1d1)]('\x0a'));const _0x2a439a=['',_0x57e482(0x1f0)];for(const _0x137ccc of _0x3847cb){if(_0x137ccc[_0x57e482(0x218)]==='*')_0x2a439a['push']('-\x20'+_0x137ccc['path']+':*');else{if(Array[_0x57e482(0x21b)](_0x137ccc['lines'])){const _0x31cb93=_0x137ccc[_0x57e482(0x218)][_0x57e482(0x1c9)](([_0xe1973c,_0x45d77f])=>{if(_0xe1973c===_0x45d77f)return''+_0xe1973c;return _0xe1973c+'-'+_0x45d77f;});_0x2a439a['push']('-\x20'+_0x137ccc[_0x57e482(0x194)]+':'+_0x31cb93['join'](','));}else _0x2a439a['push']('-\x20'+_0x137ccc[_0x57e482(0x194)]+':*');}}_0x2a439a[_0x57e482(0x21f)](''),_0x482779['push'](_0x2a439a[_0x57e482(0x1d1)]('\x0a')),_0x482779[_0x57e482(0x21f)](_0x57e482(0x203));const _0x6f5dbd=[];for(const _0x2ca3d3 of _0x3847cb){let _0x55510a=a0_0x4d30fe[_0x57e482(0x151)](_0x586427[_0x57e482(0x16d)]['repo_path'],_0x2ca3d3['path']),_0x2077b6=null,_0x2b3326=null;try{_0x2077b6=await a0_0xe4ef90[_0x57e482(0x178)](_0x55510a,{'encoding':_0x57e482(0x1cf)});}catch(_0x25396){const _0x405052=fixPathRepetition(_0x55510a);if(_0x405052)try{_0x2077b6=await a0_0xe4ef90[_0x57e482(0x178)](_0x405052,{'encoding':'utf-8'}),_0x55510a=_0x405052;}catch{_0x2b3326=_0x25396 instanceof Error?_0x25396:new Error(String(_0x25396));}else _0x2b3326=_0x25396 instanceof Error?_0x25396:new Error(String(_0x25396));}if(_0x2077b6!==null){const _0x373d2b=_0x2077b6[_0x57e482(0x1fc)](/\r?\n/),_0x5f245d=[_0x57e482(0x227)+_0x2ca3d3[_0x57e482(0x194)]+'\x22>'];if(_0x2ca3d3[_0x57e482(0x218)]==='*'||!Array[_0x57e482(0x21b)](_0x2ca3d3[_0x57e482(0x218)]))for(let _0x346dc8=0x1;_0x346dc8<=_0x373d2b[_0x57e482(0x169)];_0x346dc8++){const _0x1cafaa=_0x373d2b[_0x346dc8-0x1];_0x5f245d['push'](_0x346dc8+'|\x20'+_0x1cafaa);}else for(const [_0x99d447,_0x1a3957]of _0x2ca3d3['lines']){_0x5f245d[_0x57e482(0x169)]>0x1&&_0x5f245d[_0x57e482(0x21f)]('');for(let _0x593387=_0x99d447;_0x593387<=_0x1a3957&&_0x593387<=_0x373d2b[_0x57e482(0x169)];_0x593387++){const _0x4783ce=_0x373d2b[_0x593387-0x1];_0x5f245d['push'](_0x593387+'|\x20'+_0x4783ce);}}_0x5f245d[_0x57e482(0x21f)](_0x57e482(0x158)),_0x6f5dbd[_0x57e482(0x21f)](_0x5f245d[_0x57e482(0x1d1)]('\x0a'));}else _0x6f5dbd[_0x57e482(0x21f)](_0x57e482(0x227)+_0x2ca3d3[_0x57e482(0x194)]+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x2b3326?.[_0x57e482(0x21d)]||_0x57e482(0x196))+'\x0a</file>');}_0x482779[_0x57e482(0x21f)](_0x6f5dbd['join']('\x0a\x0a')),_0x1d901a=_0x482779[_0x57e482(0x1d1)]('\x0a');const _0x38b29c=_0x322d67[_0x57e482(0x20c)]?.[_0x57e482(0x1f9)](_0x44b75b=>_0x44b75b[_0x57e482(0x21d)]?.[_0x57e482(0x154)]('File\x20read\x20error:'))||[];if(_0x38b29c['length']>0x0){const _0x3dca4a=_0x38b29c[_0x57e482(0x1c9)](_0x54edd4=>_0x54edd4[_0x57e482(0x21d)])[_0x57e482(0x1d1)](';\x20');reportMorphError({'error_message':_0x3dca4a,'error_type':_0x57e482(0x15e),'context':{'tool':'codebase_search','repo_path':_0x586427[_0x57e482(0x16d)][_0x57e482(0x211)],'query':_0x586427[_0x57e482(0x16d)][_0x57e482(0x179)],'model':_0x57e482(0x1da),'termination_reason':_0x57e482(0x160),'error_count':_0x38b29c[_0x57e482(0x169)],'is_timeout':![],'timings':_0x322d67[_0x57e482(0x222)],'files_attempted':_0x3847cb[_0x57e482(0x1c9)](_0x457103=>({'path':_0x457103['path'],'lines':_0x457103[_0x57e482(0x218)]})),'tool_calls':_0x223a73(_0x322d67[_0x57e482(0x138)]),'messages':_0x322d67['messages']?.[_0x57e482(0x1c9)](_0x5ca33a=>({'role':_0x5ca33a[_0x57e482(0x18e)],'content':_0x5ca33a[_0x57e482(0x137)]})),'request_content':{'query':_0x586427[_0x57e482(0x16d)][_0x57e482(0x179)],'repo_path':_0x586427[_0x57e482(0x16d)][_0x57e482(0x211)],'repoRoot':a0_0x4d30fe[_0x57e482(0x151)](_0x586427[_0x57e482(0x16d)][_0x57e482(0x211)]),'model':_0x57e482(0x1da)}},'source':_0x57e482(0x153)})['catch'](()=>{});}}else{if(_0x322d67[_0x57e482(0x126)]===_0x57e482(0x18a)&&_0x322d67['errors'][_0x57e482(0x169)]>0x0){const _0x429ae7=_0x322d67[_0x57e482(0x20c)][_0x57e482(0x1c9)](_0x28560b=>_0x28560b['message'])[_0x57e482(0x1d1)](';\x20');_0x1d901a=_0x57e482(0x20b)+_0x429ae7;const _0x187679=_0x429ae7[_0x57e482(0x1a9)]()[_0x57e482(0x1ca)](_0x57e482(0x13b))||_0x429ae7[_0x57e482(0x1a9)]()['includes']('timed\x20out')||_0x429ae7[_0x57e482(0x1a9)]()[_0x57e482(0x1ca)](_0x57e482(0x1a1)),_0x57655e=_0x322d67[_0x57e482(0x1fe)]?.['metadata']?.[_0x57e482(0x13a)],_0x2e2569=_0x322d67[_0x57e482(0x20c)][0x0];reportMorphError({'error_message':_0x429ae7,'error_type':_0x187679?_0x57e482(0x12e):_0x2e2569?.[_0x57e482(0x1c0)]?.[_0x57e482(0x220)]||_0x57e482(0x165),'context':{'tool':_0x57e482(0x175),'repo_path':_0x586427[_0x57e482(0x16d)][_0x57e482(0x211)],'query':_0x586427[_0x57e482(0x16d)][_0x57e482(0x179)],'model':_0x57e482(0x1da),'termination_reason':_0x322d67[_0x57e482(0x126)],'error_count':_0x322d67[_0x57e482(0x20c)][_0x57e482(0x169)],'is_timeout':_0x187679,'timings':_0x322d67[_0x57e482(0x222)],'files_attempted':_0x57655e?.[_0x57e482(0x1c9)](_0x3765ca=>({'path':_0x3765ca[_0x57e482(0x194)],'lines':_0x3765ca[_0x57e482(0x218)]})),'tool_calls':_0x223a73(_0x322d67[_0x57e482(0x138)]),'messages':_0x322d67[_0x57e482(0x138)]?.[_0x57e482(0x1c9)](_0x1a3dc6=>({'role':_0x1a3dc6[_0x57e482(0x18e)],'content':_0x1a3dc6['content']})),'request_content':{'query':_0x586427[_0x57e482(0x16d)][_0x57e482(0x179)],'repo_path':_0x586427[_0x57e482(0x16d)][_0x57e482(0x211)],'repoRoot':a0_0x4d30fe[_0x57e482(0x151)](_0x586427[_0x57e482(0x16d)]['repo_path']),'model':'morph-warp-grep-v1-1111v0'}},'stack_trace':_0x2e2569?.['stack']||undefined,'source':_0x57e482(0x153)})[_0x57e482(0x221)](()=>{});}else _0x1d901a='Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.';}return{'content':[{'type':_0x57e482(0x21c),'text':_0x1d901a}]};}catch(_0x150ac5){const _0x213d2d=_0x150ac5 instanceof Error?_0x150ac5[_0x57e482(0x21d)]:String(_0x150ac5),_0x21005b=_0x213d2d[_0x57e482(0x1a9)]()['includes'](_0x57e482(0x13b))||_0x213d2d['toLowerCase']()[_0x57e482(0x1ca)]('timed\x20out')||_0x213d2d[_0x57e482(0x1a9)]()[_0x57e482(0x1ca)]('etimedout')||_0x150ac5 instanceof Error&&_0x150ac5['name']===_0x57e482(0x12e);return reportMorphError({'error_message':_0x213d2d,'error_type':_0x21005b?_0x57e482(0x12e):_0x150ac5 instanceof Error?_0x150ac5['constructor'][_0x57e482(0x220)]:'UnknownError','context':{'tool':_0x57e482(0x175),'repo_path':_0x586427[_0x57e482(0x16d)][_0x57e482(0x211)],'query':_0x586427[_0x57e482(0x16d)][_0x57e482(0x179)],'model':_0x57e482(0x1da),'is_timeout':_0x21005b,'exception_phase':_0x57e482(0x1df),'request_content':{'query':_0x586427[_0x57e482(0x16d)][_0x57e482(0x179)],'repo_path':_0x586427[_0x57e482(0x16d)][_0x57e482(0x211)],'repoRoot':a0_0x4d30fe[_0x57e482(0x151)](_0x586427[_0x57e482(0x16d)][_0x57e482(0x211)]),'model':_0x57e482(0x1da)}},'stack_trace':_0x150ac5 instanceof Error?_0x150ac5[_0x57e482(0x162)]:undefined,'source':_0x57e482(0x153)})[_0x57e482(0x221)](()=>{}),{'content':[{'type':'text','text':_0x57e482(0x1ac)+_0x213d2d}],'isError':![]};}}case _0x57e482(0x150):{const _0xa44b15=WarpGrepGitHubArgsSchema[_0x57e482(0x1d2)](_0x3dcbc1);if(!_0xa44b15['success'])return{'content':[{'type':_0x57e482(0x21c),'text':'Invalid\x20arguments:\x20'+_0xa44b15[_0x57e482(0x190)]}],'isError':!![]};const _0x3c1421=_0xa44b15[_0x57e482(0x16d)][_0x57e482(0x1aa)]||_0xa44b15[_0x57e482(0x16d)]['owner_repo'];if(!_0x3c1421)return{'content':[{'type':_0x57e482(0x21c),'text':_0x57e482(0x1a5)}],'isError':!![]};const _0x3e85b9=MORPH_API_KEY;if(!_0x3e85b9)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x5b1d8a=Date[_0x57e482(0x147)]();logMcpStderr(_0x57e482(0x219)+_0x3c1421+_0x57e482(0x1c5)+_0xa44b15[_0x57e482(0x16d)][_0x57e482(0x179)]+'\x22');try{const _0x2201f8=new WarpGrepClient({'morphApiKey':_0x3e85b9,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x4e5f1c=await _0x2201f8[_0x57e482(0x13c)]({'searchTerm':_0xa44b15['data'][_0x57e482(0x179)],'github':_0x3c1421,'branch':_0xa44b15[_0x57e482(0x16d)][_0x57e482(0x16c)]}),_0x4d4aa7=Date[_0x57e482(0x147)]()-_0x5b1d8a;logMcpStderr('[github_codebase_search]\x20Done\x20in\x20'+_0x4d4aa7+'ms.\x20Success:\x20'+_0x4e5f1c[_0x57e482(0x204)]);const _0x49875f=formatResult(_0x4e5f1c);return{'content':[{'type':_0x57e482(0x21c),'text':_0x49875f}]};}catch(_0x4fc322){const _0x1375a2=Date[_0x57e482(0x147)]()-_0x5b1d8a,_0x239904=_0x4fc322 instanceof Error?_0x4fc322[_0x57e482(0x21d)]:String(_0x4fc322);return logMcpStderr(_0x57e482(0x1d5)+_0x1375a2+_0x57e482(0x16e),_0x239904),reportMorphError({'error_message':_0x239904,'error_type':_0x4fc322 instanceof Error?_0x4fc322[_0x57e482(0x1c0)][_0x57e482(0x220)]:_0x57e482(0x1ef),'context':{'tool':_0x57e482(0x150),'github_url':_0x3c1421,'search_string':_0xa44b15[_0x57e482(0x16d)][_0x57e482(0x179)],'branch':_0xa44b15['data'][_0x57e482(0x16c)]},'stack_trace':_0x4fc322 instanceof Error?_0x4fc322[_0x57e482(0x162)]:undefined,'source':_0x57e482(0x153),'tool':_0x57e482(0x150),'latency_ms':_0x1375a2})[_0x57e482(0x221)](()=>{}),{'content':[{'type':_0x57e482(0x21c),'text':'GitHub\x20search\x20failed:\x20'+_0x239904}],'isError':![]};}}default:throw new Error(_0x57e482(0x1b9)+_0x4880b4);}}catch(_0x344520){const _0x497099=_0x344520 instanceof Error?_0x344520[_0x57e482(0x21d)]:String(_0x344520);return reportMorphError({'error_message':_0x497099,'error_type':_0x344520 instanceof Error?_0x344520[_0x57e482(0x1c0)][_0x57e482(0x220)]:_0x57e482(0x1ef),'context':{'tool':_0x4880b4,'arguments':_0x3dcbc1?JSON[_0x57e482(0x18f)](_0x3dcbc1)[_0x57e482(0x1b6)](0x0,0x1f4):undefined,'mcp_server_version':_0x57e482(0x15c)},'stack_trace':_0x344520 instanceof Error?_0x344520[_0x57e482(0x162)]:undefined,'source':'mcp-filesystem'})[_0x57e482(0x221)](()=>{}),{'content':[{'type':_0x57e482(0x21c),'text':'Error:\x20'+_0x497099}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x4a9d21){const _0x2e9e6b=a0_0x516777,_0x1cd4aa=await getValidRootDirectories(_0x4a9d21);if(_0x1cd4aa[_0x2e9e6b(0x169)]>0x0)allowedDirectories=[..._0x1cd4aa],logMcpStderr(_0x2e9e6b(0x1bd)+_0x1cd4aa['length']+'\x20valid\x20directories');else{logMcpStderr(_0x2e9e6b(0x214));if(ENABLE_WORKSPACE_MODE)try{const _0x4d3cd7=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x4d3cd7&&(allowedDirectories=[_0x4d3cd7],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x4d3cd7));}catch(_0xcd0834){logMcpStderr(_0x2e9e6b(0x1ad)+_0xcd0834);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x10ef48=a0_0x516777;try{const _0x12b7dd=await server[_0x10ef48(0x182)]();_0x12b7dd&&_0x10ef48(0x14d)in _0x12b7dd&&await updateAllowedDirectoriesFromRoots(_0x12b7dd[_0x10ef48(0x14d)]);}catch(_0x23c5cb){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x23c5cb instanceof Error?_0x23c5cb['message']:String(_0x23c5cb));}}),server[a0_0x516777(0x213)]=async()=>{const _0x42eba1=a0_0x516777,_0x47bbf7=server[_0x42eba1(0x1bc)]();if(_0x47bbf7?.[_0x42eba1(0x14d)])try{const _0x2f22d2=await server[_0x42eba1(0x182)]();_0x2f22d2&&_0x42eba1(0x14d)in _0x2f22d2?await updateAllowedDirectoriesFromRoots(_0x2f22d2['roots']):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x5e3b49){logMcpStderr(_0x42eba1(0x181),_0x5e3b49 instanceof Error?_0x5e3b49[_0x42eba1(0x21d)]:String(_0x5e3b49));}else{if(allowedDirectories['length']>0x0)logMcpStderr(_0x42eba1(0x1d4),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x42eba1(0x173));else throw new Error(_0x42eba1(0x145));}}};async function runServer(){const _0x147f75=a0_0x516777,_0x34e601=new StdioServerTransport();await server[_0x147f75(0x21a)](_0x34e601),logMcpStderr('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories[_0x147f75(0x169)]===0x0&&logMcpStderr('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()['catch'](_0x4b24d2=>{const _0x544618=a0_0x516777;logMcpStderr(_0x544618(0x1f4),_0x4b24d2),process['exit'](0x1);});
package/dist/log-utils.js CHANGED
@@ -1 +1 @@
1
- var a1_0x1d3643=a1_0x402f;function a1_0x402f(_0x5a8d0a,_0x12a616){_0x5a8d0a=_0x5a8d0a-0x14e;var _0x2f84da=a1_0x2f84();var _0x402f6e=_0x2f84da[_0x5a8d0a];return _0x402f6e;}(function(_0x36b8a5,_0xf30907){var _0x1fb5c0=a1_0x402f,_0x14ba46=_0x36b8a5();while(!![]){try{var _0x94d644=parseInt(_0x1fb5c0(0x154))/0x1*(parseInt(_0x1fb5c0(0x150))/0x2)+parseInt(_0x1fb5c0(0x152))/0x3*(-parseInt(_0x1fb5c0(0x155))/0x4)+-parseInt(_0x1fb5c0(0x14e))/0x5+parseInt(_0x1fb5c0(0x15c))/0x6+parseInt(_0x1fb5c0(0x157))/0x7*(parseInt(_0x1fb5c0(0x14f))/0x8)+-parseInt(_0x1fb5c0(0x15f))/0x9+parseInt(_0x1fb5c0(0x153))/0xa*(parseInt(_0x1fb5c0(0x15e))/0xb);if(_0x94d644===_0xf30907)break;else _0x14ba46['push'](_0x14ba46['shift']());}catch(_0x49e3b5){_0x14ba46['push'](_0x14ba46['shift']());}}}(a1_0x2f84,0x40c05));import a1_0x3250dd from'os';export function getOperatingSystemType(_0x1c76cf=a1_0x3250dd[a1_0x1d3643(0x15a)]()){var _0x21cb26=a1_0x1d3643;switch(_0x1c76cf){case _0x21cb26(0x160):return'macOS';case _0x21cb26(0x158):return _0x21cb26(0x156);case'linux':return _0x21cb26(0x15b);default:return _0x21cb26(0x159);}}function a1_0x2f84(){var _0x5ab659=['11LfqZYv','3948399sYOLjx','darwin','1543415CcBiIl','32vsrSbt','2xRCWrL','[os=','32607tuXlBm','7121270hdqHPp','20867UlRVsC','100ysRfdR','Windows','244776VtwHei','win32','Unknown','platform','Linux','2468844TpHEGa','error'];a1_0x2f84=function(){return _0x5ab659;};return a1_0x2f84();}export function formatMcpLogMessage(_0x1f3779,_0x56eb48=a1_0x3250dd[a1_0x1d3643(0x15a)]()){var _0x30558e=a1_0x1d3643;return _0x30558e(0x151)+getOperatingSystemType(_0x56eb48)+']\x20'+_0x1f3779;}export function logMcpStderr(_0x17c564,..._0x30b421){var _0x2e433f=a1_0x1d3643;console[_0x2e433f(0x15d)](formatMcpLogMessage(_0x17c564),..._0x30b421);}
1
+ var a1_0x23bcac=a1_0x3646;function a1_0x45de(){var _0x5e0c33=['32934HkHzSK','darwin','win32','1453590toaoNO','6JIRoxY','29511kOfxRs','linux','2592KYMJoy','690SxbsvF','6HAaXPv','platform','macOS','540236FfUbNd','98UkEoUs','124602gnMPua','1671328scXuCg','64604ylrphh'];a1_0x45de=function(){return _0x5e0c33;};return a1_0x45de();}function a1_0x3646(_0x33cd30,_0xe781c4){_0x33cd30=_0x33cd30-0x161;var _0x45de1b=a1_0x45de();var _0x3646bc=_0x45de1b[_0x33cd30];return _0x3646bc;}(function(_0x5d3878,_0x3d579c){var _0x33f18c=a1_0x3646,_0x3e83a6=_0x5d3878();while(!![]){try{var _0x7cee33=-parseInt(_0x33f18c(0x167))/0x1*(parseInt(_0x33f18c(0x16c))/0x2)+-parseInt(_0x33f18c(0x171))/0x3*(parseInt(_0x33f18c(0x163))/0x4)+-parseInt(_0x33f18c(0x16b))/0x5+-parseInt(_0x33f18c(0x165))/0x6*(-parseInt(_0x33f18c(0x164))/0x7)+parseInt(_0x33f18c(0x166))/0x8+parseInt(_0x33f18c(0x16d))/0x9*(-parseInt(_0x33f18c(0x170))/0xa)+-parseInt(_0x33f18c(0x168))/0xb*(-parseInt(_0x33f18c(0x16f))/0xc);if(_0x7cee33===_0x3d579c)break;else _0x3e83a6['push'](_0x3e83a6['shift']());}catch(_0xc880a0){_0x3e83a6['push'](_0x3e83a6['shift']());}}}(a1_0x45de,0x28653));import a1_0x15afdf from'os';export function getOperatingSystemType(_0x5387da=a1_0x15afdf[a1_0x23bcac(0x161)]()){var _0x5e6f39=a1_0x23bcac;switch(_0x5387da){case _0x5e6f39(0x169):return _0x5e6f39(0x162);case _0x5e6f39(0x16a):return'Windows';case _0x5e6f39(0x16e):return'Linux';default:return'Unknown';}}export function formatMcpLogMessage(_0xf9daa7,_0x33f682=a1_0x15afdf[a1_0x23bcac(0x161)]()){return'[os='+getOperatingSystemType(_0x33f682)+']\x20'+_0xf9daa7;}export function logMcpStderr(_0x286398,..._0x5169a0){console['error'](formatMcpLogMessage(_0x286398),..._0x5169a0);}
@@ -1 +1 @@
1
- (function(_0x35e7c9,_0x1a093a){const _0x33de6f=a2_0x34bb,_0x101de5=_0x35e7c9();while(!![]){try{const _0x558d39=parseInt(_0x33de6f(0x1ea))/0x1*(-parseInt(_0x33de6f(0x1ec))/0x2)+parseInt(_0x33de6f(0x1e8))/0x3*(parseInt(_0x33de6f(0x1e9))/0x4)+-parseInt(_0x33de6f(0x1f1))/0x5+-parseInt(_0x33de6f(0x1e5))/0x6+parseInt(_0x33de6f(0x1eb))/0x7+parseInt(_0x33de6f(0x1e3))/0x8+parseInt(_0x33de6f(0x1e6))/0x9;if(_0x558d39===_0x1a093a)break;else _0x101de5['push'](_0x101de5['shift']());}catch(_0x58f20f){_0x101de5['push'](_0x101de5['shift']());}}}(a2_0x179b,0x58176));function a2_0x179b(){const _0x119ea9=['normalize','toUpperCase','/mnt/','222560IyhiwO','join','3310404uZRvFx','6932214qJGlrC','replace','52203KrloWE','72DvpaZQ','5703evFUkN','28812WlDkbO','68XAKWob','charAt','startsWith','match','homedir','44710hchbTh','test','slice'];a2_0x179b=function(){return _0x119ea9;};return a2_0x179b();}function a2_0x34bb(_0x52312f,_0x19ef99){_0x52312f=_0x52312f-0x1e2;const _0x179b23=a2_0x179b();let _0x34bbfb=_0x179b23[_0x52312f];return _0x34bbfb;}import a2_0x487a79 from'path';import a2_0x38a420 from'os';export function convertToWindowsPath(_0x1351cb){const _0x3ba0e3=a2_0x34bb;if(_0x1351cb[_0x3ba0e3(0x1ee)](_0x3ba0e3(0x1e2))){const _0x180a11=_0x1351cb[_0x3ba0e3(0x1ed)](0x5)['toUpperCase'](),_0x1e9df8=_0x1351cb['slice'](0x6)[_0x3ba0e3(0x1e7)](/\//g,'\x5c');return _0x180a11+':'+_0x1e9df8;}if(_0x1351cb[_0x3ba0e3(0x1ef)](/^\/[a-zA-Z]\//)){const _0x1a17c5=_0x1351cb['charAt'](0x1)[_0x3ba0e3(0x1f5)](),_0x237033=_0x1351cb[_0x3ba0e3(0x1f3)](0x2)[_0x3ba0e3(0x1e7)](/\//g,'\x5c');return _0x1a17c5+':'+_0x237033;}if(_0x1351cb[_0x3ba0e3(0x1ef)](/^[a-zA-Z]:/))return _0x1351cb[_0x3ba0e3(0x1e7)](/\//g,'\x5c');return _0x1351cb;}export function normalizePath(_0x49f3a0){const _0x21bcf5=a2_0x34bb;_0x49f3a0=_0x49f3a0['trim']()[_0x21bcf5(0x1e7)](/^["']|["']$/g,'');const _0x19a36a=_0x49f3a0[_0x21bcf5(0x1ee)]('/')&&!_0x49f3a0[_0x21bcf5(0x1ef)](/^\/mnt\/[a-z]\//i)&&!_0x49f3a0[_0x21bcf5(0x1ef)](/^\/[a-zA-Z]\//);if(_0x19a36a)return _0x49f3a0[_0x21bcf5(0x1e7)](/\/+/g,'/')[_0x21bcf5(0x1e7)](/\/+$/,'');_0x49f3a0=convertToWindowsPath(_0x49f3a0);if(_0x49f3a0[_0x21bcf5(0x1ee)]('\x5c\x5c')){let _0x5d86b2=_0x49f3a0;_0x5d86b2=_0x5d86b2[_0x21bcf5(0x1e7)](/^\\{2,}/,'\x5c\x5c');const _0x46481a=_0x5d86b2['substring'](0x2)[_0x21bcf5(0x1e7)](/\\\\/g,'\x5c');_0x49f3a0='\x5c\x5c'+_0x46481a;}else _0x49f3a0=_0x49f3a0[_0x21bcf5(0x1e7)](/\\\\/g,'\x5c');let _0x48130d=a2_0x487a79[_0x21bcf5(0x1f4)](_0x49f3a0);_0x49f3a0['startsWith']('\x5c\x5c')&&!_0x48130d[_0x21bcf5(0x1ee)]('\x5c\x5c')&&(_0x48130d='\x5c'+_0x48130d);if(_0x48130d[_0x21bcf5(0x1ef)](/^[a-zA-Z]:/)){let _0x3d70bc=_0x48130d[_0x21bcf5(0x1e7)](/\//g,'\x5c');return/^[a-z]:/[_0x21bcf5(0x1f2)](_0x3d70bc)&&(_0x3d70bc=_0x3d70bc[_0x21bcf5(0x1ed)](0x0)[_0x21bcf5(0x1f5)]()+_0x3d70bc[_0x21bcf5(0x1f3)](0x1)),_0x3d70bc;}return _0x48130d[_0x21bcf5(0x1e7)](/\//g,'\x5c');}export function expandHome(_0x18db63){const _0x867956=a2_0x34bb;if(_0x18db63[_0x867956(0x1ee)]('~/')||_0x18db63==='~')return a2_0x487a79[_0x867956(0x1e4)](a2_0x38a420[_0x867956(0x1f0)](),_0x18db63['slice'](0x1));return _0x18db63;}
1
+ (function(_0x513723,_0x465a31){const _0x5db65c=a2_0x52ef,_0x25c7fc=_0x513723();while(!![]){try{const _0x292c22=-parseInt(_0x5db65c(0xf3))/0x1*(parseInt(_0x5db65c(0x103))/0x2)+parseInt(_0x5db65c(0x102))/0x3*(-parseInt(_0x5db65c(0xf2))/0x4)+-parseInt(_0x5db65c(0xf7))/0x5*(parseInt(_0x5db65c(0xfb))/0x6)+-parseInt(_0x5db65c(0x105))/0x7+-parseInt(_0x5db65c(0xf8))/0x8+-parseInt(_0x5db65c(0xf6))/0x9*(parseInt(_0x5db65c(0x101))/0xa)+parseInt(_0x5db65c(0x104))/0xb;if(_0x292c22===_0x465a31)break;else _0x25c7fc['push'](_0x25c7fc['shift']());}catch(_0x458f4a){_0x25c7fc['push'](_0x25c7fc['shift']());}}}(a2_0x8f30,0x92ada));import a2_0x247438 from'path';function a2_0x52ef(_0x3cd0e5,_0x4f5b15){_0x3cd0e5=_0x3cd0e5-0xf2;const _0x8f30ca=a2_0x8f30();let _0x52ef25=_0x8f30ca[_0x3cd0e5];return _0x52ef25;}import a2_0x181f39 from'os';export function convertToWindowsPath(_0x21af16){const _0x3c7ed4=a2_0x52ef;if(_0x21af16[_0x3c7ed4(0x108)](_0x3c7ed4(0xf5))){const _0xb56a0d=_0x21af16['charAt'](0x5)[_0x3c7ed4(0x109)](),_0x43fd97=_0x21af16['slice'](0x6)[_0x3c7ed4(0x100)](/\//g,'\x5c');return _0xb56a0d+':'+_0x43fd97;}if(_0x21af16[_0x3c7ed4(0x106)](/^\/[a-zA-Z]\//)){const _0x250225=_0x21af16[_0x3c7ed4(0xfd)](0x1)[_0x3c7ed4(0x109)](),_0x3f3733=_0x21af16[_0x3c7ed4(0xfc)](0x2)[_0x3c7ed4(0x100)](/\//g,'\x5c');return _0x250225+':'+_0x3f3733;}if(_0x21af16['match'](/^[a-zA-Z]:/))return _0x21af16['replace'](/\//g,'\x5c');return _0x21af16;}function a2_0x8f30(){const _0x160caf=['534GLTDxo','substring','/mnt/','63dsmBkN','487015ZpkyUE','5980944DhNILF','join','test','6mkeUGA','slice','charAt','homedir','normalize','replace','415830nxZHeA','33ZCVoEf','4354sjUsAB','43139822YVqwSY','2335438GkWRwI','match','trim','startsWith','toUpperCase','250456URSGcU'];a2_0x8f30=function(){return _0x160caf;};return a2_0x8f30();}export function normalizePath(_0xd5ab3){const _0x253ba8=a2_0x52ef;_0xd5ab3=_0xd5ab3[_0x253ba8(0x107)]()[_0x253ba8(0x100)](/^["']|["']$/g,'');const _0x308ad8=_0xd5ab3[_0x253ba8(0x108)]('/')&&!_0xd5ab3['match'](/^\/mnt\/[a-z]\//i)&&!_0xd5ab3[_0x253ba8(0x106)](/^\/[a-zA-Z]\//);if(_0x308ad8)return _0xd5ab3[_0x253ba8(0x100)](/\/+/g,'/')['replace'](/\/+$/,'');_0xd5ab3=convertToWindowsPath(_0xd5ab3);if(_0xd5ab3['startsWith']('\x5c\x5c')){let _0x1d88db=_0xd5ab3;_0x1d88db=_0x1d88db[_0x253ba8(0x100)](/^\\{2,}/,'\x5c\x5c');const _0x2b7e55=_0x1d88db[_0x253ba8(0xf4)](0x2)[_0x253ba8(0x100)](/\\\\/g,'\x5c');_0xd5ab3='\x5c\x5c'+_0x2b7e55;}else _0xd5ab3=_0xd5ab3[_0x253ba8(0x100)](/\\\\/g,'\x5c');let _0x4c45cf=a2_0x247438[_0x253ba8(0xff)](_0xd5ab3);_0xd5ab3[_0x253ba8(0x108)]('\x5c\x5c')&&!_0x4c45cf[_0x253ba8(0x108)]('\x5c\x5c')&&(_0x4c45cf='\x5c'+_0x4c45cf);if(_0x4c45cf['match'](/^[a-zA-Z]:/)){let _0x4bd385=_0x4c45cf[_0x253ba8(0x100)](/\//g,'\x5c');return/^[a-z]:/[_0x253ba8(0xfa)](_0x4bd385)&&(_0x4bd385=_0x4bd385[_0x253ba8(0xfd)](0x0)[_0x253ba8(0x109)]()+_0x4bd385['slice'](0x1)),_0x4bd385;}return _0x4c45cf['replace'](/\//g,'\x5c');}export function expandHome(_0x325167){const _0x1d40cf=a2_0x52ef;if(_0x325167[_0x1d40cf(0x108)]('~/')||_0x325167==='~')return a2_0x247438[_0x1d40cf(0xf9)](a2_0x181f39[_0x1d40cf(0xfe)](),_0x325167['slice'](0x1));return _0x325167;}
@@ -1 +1 @@
1
- function a3_0x589c(_0x23d63f,_0xe1aa4e){_0x23d63f=_0x23d63f-0xea;const _0x4d2593=a3_0x4d25();let _0x589c4d=_0x4d2593[_0x23d63f];return _0x589c4d;}function a3_0x4d25(){const _0x42f6b5=['some','sep','includes','isAbsolute','1662344EIBzHx','444090hvafRt','normalize','string','2851724JxAeLw','length','695243xOtSYb','4123422LVsZiL','829200TKCEPl','12485361IyDckj','resolve','startsWith','Path\x20must\x20be\x20absolute\x20after\x20normalization'];a3_0x4d25=function(){return _0x42f6b5;};return a3_0x4d25();}(function(_0x348285,_0xefa2f9){const _0x2ad437=a3_0x589c,_0x2a1163=_0x348285();while(!![]){try{const _0x3bc4d3=-parseInt(_0x2ad437(0xea))/0x1+-parseInt(_0x2ad437(0xf5))/0x2+parseInt(_0x2ad437(0xec))/0x3+-parseInt(_0x2ad437(0xf9))/0x4+-parseInt(_0x2ad437(0xf6))/0x5+parseInt(_0x2ad437(0xeb))/0x6+parseInt(_0x2ad437(0xed))/0x7;if(_0x3bc4d3===_0xefa2f9)break;else _0x2a1163['push'](_0x2a1163['shift']());}catch(_0x5a62f0){_0x2a1163['push'](_0x2a1163['shift']());}}}(a3_0x4d25,0x66518));import a3_0x2eefed from'path';export function isPathWithinAllowedDirectories(_0x567d6f,_0x335bd6){const _0xd1a0f2=a3_0x589c;if(typeof _0x567d6f!==_0xd1a0f2(0xf8)||!Array['isArray'](_0x335bd6))return![];if(!_0x567d6f||_0x335bd6[_0xd1a0f2(0xfa)]===0x0)return![];if(_0x567d6f[_0xd1a0f2(0xf3)]('\x00'))return![];let _0x242181;try{_0x242181=a3_0x2eefed[_0xd1a0f2(0xee)](a3_0x2eefed[_0xd1a0f2(0xf7)](_0x567d6f));}catch{return![];}if(!a3_0x2eefed[_0xd1a0f2(0xf4)](_0x242181))throw new Error(_0xd1a0f2(0xf0));return _0x335bd6[_0xd1a0f2(0xf1)](_0x307efd=>{const _0x141230=_0xd1a0f2;if(typeof _0x307efd!==_0x141230(0xf8)||!_0x307efd)return![];if(_0x307efd[_0x141230(0xf3)]('\x00'))return![];let _0x261a41;try{_0x261a41=a3_0x2eefed[_0x141230(0xee)](a3_0x2eefed['normalize'](_0x307efd));}catch{return![];}if(!a3_0x2eefed[_0x141230(0xf4)](_0x261a41))throw new Error('Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization');if(_0x242181===_0x261a41)return!![];if(_0x261a41===a3_0x2eefed[_0x141230(0xf2)])return _0x242181['startsWith'](a3_0x2eefed['sep']);return _0x242181[_0x141230(0xef)](_0x261a41+a3_0x2eefed['sep']);});}
1
+ (function(_0x446ceb,_0x68c41d){const _0x38be77=a3_0x1452,_0x50da33=_0x446ceb();while(!![]){try{const _0x55cd6b=parseInt(_0x38be77(0x1ba))/0x1*(parseInt(_0x38be77(0x1af))/0x2)+parseInt(_0x38be77(0x1ac))/0x3*(-parseInt(_0x38be77(0x1aa))/0x4)+parseInt(_0x38be77(0x1bc))/0x5*(-parseInt(_0x38be77(0x1ab))/0x6)+-parseInt(_0x38be77(0x1b4))/0x7*(parseInt(_0x38be77(0x1ae))/0x8)+-parseInt(_0x38be77(0x1b0))/0x9+parseInt(_0x38be77(0x1b5))/0xa+parseInt(_0x38be77(0x1b3))/0xb;if(_0x55cd6b===_0x68c41d)break;else _0x50da33['push'](_0x50da33['shift']());}catch(_0x54656c){_0x50da33['push'](_0x50da33['shift']());}}}(a3_0xa7cc,0xa67c3));function a3_0x1452(_0x1d52a2,_0x58c3c3){_0x1d52a2=_0x1d52a2-0x1a8;const _0xa7cca5=a3_0xa7cc();let _0x145260=_0xa7cca5[_0x1d52a2];return _0x145260;}import a3_0x2e5f0e from'path';export function isPathWithinAllowedDirectories(_0x18cb23,_0x11508d){const _0x17ddd8=a3_0x1452;if(typeof _0x18cb23!==_0x17ddd8(0x1b9)||!Array['isArray'](_0x11508d))return![];if(!_0x18cb23||_0x11508d[_0x17ddd8(0x1a8)]===0x0)return![];if(_0x18cb23[_0x17ddd8(0x1b7)]('\x00'))return![];let _0x3adf2c;try{_0x3adf2c=a3_0x2e5f0e[_0x17ddd8(0x1a9)](a3_0x2e5f0e[_0x17ddd8(0x1b2)](_0x18cb23));}catch{return![];}if(!a3_0x2e5f0e[_0x17ddd8(0x1ad)](_0x3adf2c))throw new Error(_0x17ddd8(0x1b6));return _0x11508d['some'](_0x32440a=>{const _0x3fcae4=_0x17ddd8;if(typeof _0x32440a!==_0x3fcae4(0x1b9)||!_0x32440a)return![];if(_0x32440a['includes']('\x00'))return![];let _0x3018f0;try{_0x3018f0=a3_0x2e5f0e[_0x3fcae4(0x1a9)](a3_0x2e5f0e[_0x3fcae4(0x1b2)](_0x32440a));}catch{return![];}if(!a3_0x2e5f0e['isAbsolute'](_0x3018f0))throw new Error(_0x3fcae4(0x1b8));if(_0x3adf2c===_0x3018f0)return!![];if(_0x3018f0===a3_0x2e5f0e[_0x3fcae4(0x1bb)])return _0x3adf2c[_0x3fcae4(0x1b1)](a3_0x2e5f0e[_0x3fcae4(0x1bb)]);return _0x3adf2c[_0x3fcae4(0x1b1)](_0x3018f0+a3_0x2e5f0e['sep']);});}function a3_0xa7cc(){const _0x57152b=['15687848qytkxD','3521861AyhzBt','4559910MpsfBg','Path\x20must\x20be\x20absolute\x20after\x20normalization','includes','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','string','368241BRQmNH','sep','5nUaknZ','length','resolve','4AhPHDl','311154EkBboq','1261815akWQht','isAbsolute','16CbmBAZ','4hOacZT','4122072oGErRP','startsWith','normalize'];a3_0xa7cc=function(){return _0x57152b;};return a3_0xa7cc();}
@@ -1 +1 @@
1
- (function(_0x4c33c6,_0x595898){const _0x3bfcd8=a4_0x27cd,_0x426723=_0x4c33c6();while(!![]){try{const _0x35872=-parseInt(_0x3bfcd8(0x1e3))/0x1+-parseInt(_0x3bfcd8(0x1ec))/0x2*(parseInt(_0x3bfcd8(0x1f0))/0x3)+-parseInt(_0x3bfcd8(0x1f3))/0x4+-parseInt(_0x3bfcd8(0x1e6))/0x5*(parseInt(_0x3bfcd8(0x1f1))/0x6)+-parseInt(_0x3bfcd8(0x1ea))/0x7*(-parseInt(_0x3bfcd8(0x1f2))/0x8)+parseInt(_0x3bfcd8(0x1ed))/0x9*(-parseInt(_0x3bfcd8(0x1e2))/0xa)+parseInt(_0x3bfcd8(0x1e1))/0xb;if(_0x35872===_0x595898)break;else _0x426723['push'](_0x426723['shift']());}catch(_0x207199){_0x426723['push'](_0x426723['shift']());}}}(a4_0x33c7,0xf1991));import{promises as a4_0x2c6267}from'fs';import a4_0x3a4f19 from'path';import a4_0x140ade from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';function a4_0x27cd(_0x3d58ca,_0x5e44fa){_0x3d58ca=_0x3d58ca-0x1dd;const _0x33c733=a4_0x33c7();let _0x27cdd9=_0x33c733[_0x3d58ca];return _0x27cdd9;}async function parseRootUri(_0x1a18f0){const _0x32f4ec=a4_0x27cd;try{const _0x35e738=_0x1a18f0['startsWith'](_0x32f4ec(0x1e5))?_0x1a18f0['slice'](0x7):_0x1a18f0,_0x46dae6=_0x35e738[_0x32f4ec(0x1de)]('~/')||_0x35e738==='~'?a4_0x3a4f19[_0x32f4ec(0x1e0)](a4_0x140ade[_0x32f4ec(0x1dd)](),_0x35e738['slice'](0x1)):_0x35e738,_0x2cbfaf=a4_0x3a4f19[_0x32f4ec(0x1ef)](_0x46dae6),_0x1d9642=await a4_0x2c6267[_0x32f4ec(0x1e4)](_0x2cbfaf);return normalizePath(_0x1d9642);}catch{return null;}}function formatDirectoryError(_0x456b28,_0xac3dfd,_0xeb0347){const _0x53ad44=a4_0x27cd;if(_0xeb0347)return _0x53ad44(0x1e9)+_0xeb0347+':\x20'+_0x456b28;const _0x200d28=_0xac3dfd instanceof Error?_0xac3dfd[_0x53ad44(0x1df)]:String(_0xac3dfd);return _0x53ad44(0x1e8)+_0x456b28+'\x20due\x20to\x20error:\x20'+_0x200d28;}function a4_0x33c7(){const _0x401027=['70683404aCUnvi','10XvstWT','141828PcMFVR','realpath','file://','4233660pJSsLE','isDirectory','Skipping\x20invalid\x20directory:\x20','Skipping\x20','170597QlBmVL','stat','1915036tGiPHz','13902174ajgJQL','uri','resolve','3mhnrOf','12INCALT','136rZcDXr','6051960GkJePz','homedir','startsWith','message','join'];a4_0x33c7=function(){return _0x401027;};return a4_0x33c7();}export async function getValidRootDirectories(_0xcbd6d6){const _0x5172c3=a4_0x27cd,_0x1ab702=[];for(const _0x21a792 of _0xcbd6d6){const _0x10af8a=await parseRootUri(_0x21a792[_0x5172c3(0x1ee)]);if(!_0x10af8a){logMcpStderr(formatDirectoryError(_0x21a792[_0x5172c3(0x1ee)],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0x5b37ae=await a4_0x2c6267[_0x5172c3(0x1eb)](_0x10af8a);_0x5b37ae[_0x5172c3(0x1e7)]()?_0x1ab702['push'](_0x10af8a):logMcpStderr(formatDirectoryError(_0x10af8a,undefined,'non-directory\x20root'));}catch(_0x14777c){logMcpStderr(formatDirectoryError(_0x10af8a,_0x14777c));}}return _0x1ab702;}
1
+ (function(_0x192320,_0x34a89a){const _0x49eb0e=a4_0x1d8d,_0x360536=_0x192320();while(!![]){try{const _0x2f1161=-parseInt(_0x49eb0e(0x188))/0x1+-parseInt(_0x49eb0e(0x18a))/0x2*(-parseInt(_0x49eb0e(0x19c))/0x3)+-parseInt(_0x49eb0e(0x191))/0x4*(parseInt(_0x49eb0e(0x19b))/0x5)+parseInt(_0x49eb0e(0x18c))/0x6+-parseInt(_0x49eb0e(0x193))/0x7+parseInt(_0x49eb0e(0x189))/0x8+parseInt(_0x49eb0e(0x18b))/0x9;if(_0x2f1161===_0x34a89a)break;else _0x360536['push'](_0x360536['shift']());}catch(_0x3fbe66){_0x360536['push'](_0x360536['shift']());}}}(a4_0x3e8d,0x85bc0));import{promises as a4_0x1ac395}from'fs';import a4_0x456e5b from'path';function a4_0x3e8d(){const _0x2b6150=['uri','invalid\x20path\x20or\x20inaccessible','\x20due\x20to\x20error:\x20','realpath','17615aelgRT','307569QBxwRi','homedir','Skipping\x20invalid\x20directory:\x20','stat','resolve','509918hDfAGt','5825464oTAQWb','18AOMvrK','924426RBrMap','1796334wlvCvq','startsWith','file://','non-directory\x20root','Skipping\x20','52oBDPCk','isDirectory','6646500hlFHbN','slice','push','message'];a4_0x3e8d=function(){return _0x2b6150;};return a4_0x3e8d();}import a4_0x23ea0d from'os';function a4_0x1d8d(_0x53d8b0,_0x42f76c){_0x53d8b0=_0x53d8b0-0x184;const _0x3e8d31=a4_0x3e8d();let _0x1d8df0=_0x3e8d31[_0x53d8b0];return _0x1d8df0;}import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x576a66){const _0x47b3f0=a4_0x1d8d;try{const _0x394bf5=_0x576a66['startsWith'](_0x47b3f0(0x18e))?_0x576a66[_0x47b3f0(0x194)](0x7):_0x576a66,_0x5a5761=_0x394bf5[_0x47b3f0(0x18d)]('~/')||_0x394bf5==='~'?a4_0x456e5b['join'](a4_0x23ea0d[_0x47b3f0(0x184)](),_0x394bf5[_0x47b3f0(0x194)](0x1)):_0x394bf5,_0x11b65a=a4_0x456e5b[_0x47b3f0(0x187)](_0x5a5761),_0x59cf77=await a4_0x1ac395[_0x47b3f0(0x19a)](_0x11b65a);return normalizePath(_0x59cf77);}catch{return null;}}function formatDirectoryError(_0x200fc0,_0x43b6ca,_0x262220){const _0x464c83=a4_0x1d8d;if(_0x262220)return _0x464c83(0x190)+_0x262220+':\x20'+_0x200fc0;const _0x1c4c96=_0x43b6ca instanceof Error?_0x43b6ca[_0x464c83(0x196)]:String(_0x43b6ca);return _0x464c83(0x185)+_0x200fc0+_0x464c83(0x199)+_0x1c4c96;}export async function getValidRootDirectories(_0x2500f4){const _0x58ce7d=a4_0x1d8d,_0x47a0e0=[];for(const _0x2468a3 of _0x2500f4){const _0x1e713a=await parseRootUri(_0x2468a3[_0x58ce7d(0x197)]);if(!_0x1e713a){logMcpStderr(formatDirectoryError(_0x2468a3[_0x58ce7d(0x197)],undefined,_0x58ce7d(0x198)));continue;}try{const _0x2a4751=await a4_0x1ac395[_0x58ce7d(0x186)](_0x1e713a);_0x2a4751[_0x58ce7d(0x192)]()?_0x47a0e0[_0x58ce7d(0x195)](_0x1e713a):logMcpStderr(formatDirectoryError(_0x1e713a,undefined,_0x58ce7d(0x18f)));}catch(_0x4bba4f){logMcpStderr(formatDirectoryError(_0x1e713a,_0x4bba4f));}}return _0x47a0e0;}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morphllm/morphmcp",
3
- "version": "0.8.130",
3
+ "version": "0.8.132",
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.138",
38
+ "@morphllm/morphsdk": "0.2.140",
39
39
  "@vscode/ripgrep": "^1.15.14",
40
40
  "axios": "^1.6.0",
41
41
  "chalk": "^5.3.0",