@morphllm/morphmcp 0.8.183 → 0.8.184

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
- function a0_0x3e0c(_0x3d7cb7,_0x5dc597){_0x3d7cb7=_0x3d7cb7-0xf0;const _0x1a93fc=a0_0x1a93();let _0x3e0c86=_0x1a93fc[_0x3d7cb7];return _0x3e0c86;}const a0_0x547ea5=a0_0x3e0c;(function(_0x48268d,_0x2100be){const _0x4cd707=a0_0x3e0c,_0x4248b2=_0x48268d();while(!![]){try{const _0x3314d9=-parseInt(_0x4cd707(0x11b))/0x1+-parseInt(_0x4cd707(0x169))/0x2*(-parseInt(_0x4cd707(0x1ab))/0x3)+parseInt(_0x4cd707(0x16f))/0x4+parseInt(_0x4cd707(0x1f4))/0x5*(-parseInt(_0x4cd707(0x117))/0x6)+parseInt(_0x4cd707(0x161))/0x7+parseInt(_0x4cd707(0x1c1))/0x8*(-parseInt(_0x4cd707(0x207))/0x9)+-parseInt(_0x4cd707(0x188))/0xa;if(_0x3314d9===_0x2100be)break;else _0x4248b2['push'](_0x4248b2['shift']());}catch(_0x134186){_0x4248b2['push'](_0x4248b2['shift']());}}}(a0_0x1a93,0x4b5cf));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_0x5d164c from'fs/promises';import a0_0x376bd5 from'path';import a0_0x19db69 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{logger}from'./logger.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0x41e6a9 from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x5b5470){const _0x4daca7=a0_0x3e0c,_0x49d906=_0x5b5470[_0x4daca7(0x1e7)](a0_0x376bd5['sep'])[_0x4daca7(0xf0)](Boolean);if(_0x49d906[_0x4daca7(0x1ce)]<0x2)return null;for(let _0x409da0=Math['floor'](_0x49d906[_0x4daca7(0x1ce)]/0x2);_0x409da0>=0x1;_0x409da0--){for(let _0x362cb6=0x0;_0x362cb6<=_0x49d906[_0x4daca7(0x1ce)]-0x2*_0x409da0;_0x362cb6++){const _0x2b6587=_0x49d906[_0x4daca7(0xfa)](_0x362cb6,_0x362cb6+_0x409da0),_0x24ef71=_0x49d906['slice'](_0x362cb6+_0x409da0,_0x362cb6+0x2*_0x409da0);if(_0x2b6587[_0x4daca7(0x159)]((_0x3a0eda,_0x5dc4be)=>_0x3a0eda===_0x24ef71[_0x5dc4be])){const _0x265946=[..._0x49d906[_0x4daca7(0xfa)](0x0,_0x362cb6),..._0x49d906['slice'](_0x362cb6+_0x409da0)];return a0_0x376bd5[_0x4daca7(0x14f)]+_0x265946[_0x4daca7(0x180)](a0_0x376bd5['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x27dee9=a0_0x3e0c;try{const _0x103b92=require(_0x27dee9(0x1c8));return _0x103b92[_0x27dee9(0x1cb)]??_0x27dee9(0x10c);}catch(_0x5997b7){return logMcpStderr(_0x27dee9(0x1ae),_0x5997b7),_0x27dee9(0x10c);}}function printHelp(){const _0x753bfa=a0_0x3e0c;console['log'](_0x753bfa(0x1c9)+getPackageVersion()),console[_0x753bfa(0xf2)](_0x753bfa(0x1bf)),console[_0x753bfa(0xf2)](_0x753bfa(0x185)),console['log']('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x753bfa(0xf2)](_0x753bfa(0x196)),console[_0x753bfa(0xf2)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console[_0x753bfa(0xf2)](_0x753bfa(0x12c)),console['log'](_0x753bfa(0x192)),console[_0x753bfa(0xf2)](_0x753bfa(0x194));}const cliArgs=process[a0_0x547ea5(0x1df)][a0_0x547ea5(0xfa)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set(['--help','-h']);cliArgs['some'](_0x2ad4ac=>VERSION_FLAGS[a0_0x547ea5(0x1da)](_0x2ad4ac))&&(console[a0_0x547ea5(0xf2)]('@morphllm/morphmcp\x20'+getPackageVersion()),process['exit'](0x0));cliArgs['some'](_0x39ea55=>HELP_FLAGS[a0_0x547ea5(0x1da)](_0x39ea55))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x191b26){const _0x38b102=a0_0x547ea5;for(let _0xed6911=0x0;_0xed6911<cliArgs[_0x38b102(0x1ce)];_0xed6911++){const _0x48aa71=cliArgs[_0xed6911];if(_0x48aa71[_0x38b102(0x10e)]('--'+_0x191b26+'='))return _0x48aa71[_0x38b102(0xfa)](('--'+_0x191b26+'=')[_0x38b102(0x1ce)]);if(_0x48aa71==='--'+_0x191b26&&_0xed6911+0x1<cliArgs[_0x38b102(0x1ce)])return cliArgs[_0xed6911+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x547ea5(0x1ce)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x547ea5(0x1da)](arg)||HELP_FLAGS[a0_0x547ea5(0x1da)](arg))continue;if(arg[a0_0x547ea5(0x10e)](a0_0x547ea5(0x1a2)))continue;if(arg==='--api-key'){i++;continue;}args[a0_0x547ea5(0x1d8)](arg);}function a0_0x1a93(){const _0x32ac08=['node_modules','error','Use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code\x20blocks.\x20Include\x20just\x20enough\x20surrounding\x20context\x20to\x20locate\x20each\x20edit\x20precisely.\x0a\x0a','string','BinaryFile','lines','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','read','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','homedir','stack','requiresApiKey','-\x20Read\x20file\x20`','325170rYEUPk','basename','Morph\x20Edit\x20Preview','cwd','-\x20Grepped\x20\x27','debug','tool_calls','finish','data','command','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.','-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a','pattern','\x20disabled\x20via\x20DISABLED_TOOLS','filter','utf-8','log','Repository\x20identifier','access','\x0a</file>','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','GitHub\x20search\x20failed:\x20','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','TimeoutError','slice','composer.json','content','instruction','message','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','.git','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','connect','api_request_start','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','.vscode','morph-warp-grep-v2.1','ENOENT','Created\x20File','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.','Parameters:\x0a','unknown','EDIT_FILE','startsWith','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','catch','\x22>\x0a','[github_codebase_search]\x20Failed\x20in\x20','messages','tool_call_error','PathError','search_string','1099704aZDBjl','linesRemoved','description','Morph\x20FastApply\x20failed\x20without\x20error\x20message','345332eRySXv','PWD','code','file_read_complete','github_search_start','MORPH_API_URL','terminationReason','go.mod','source','all','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','turns','env','searchGitHub','path_validation_failed','UnknownError','file','\x0aExamples:','files','branch','MCP','tool_call_complete','`\x20in\x20`','mcp-filesystem','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','size','Parent\x20directory\x20does\x20not\x20exist:\x20','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','Tool\x20\x22','describe','now','timeout','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','assistant','repo_path','match','search_type','completed_with_file_errors','FileNotFound','filePath','etimedout','payload','\x0a...\x20(truncated,\x20total:\x20','https://morphllm.com/api/error-report','DISABLED_TOOLS','edit','Failed\x20to\x20request\x20roots\x20from\x20client:','path','status','dirname','added\x20','sk-','sep','API\x20error\x20(auth/rate-limit)','Unknown\x20error','list_directory','Preview\x20changes\x20without\x20applying\x20them.','function','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','completed','Tool\x20',',\x20removed\x20','every','\x27\x20in\x20`','-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a','indexOf','terminated','-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a','number','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','3248343BbLttF','instructions','Authentication\x20failed:\x20Your\x20Morph\x20API\x20key\x20is\x20invalid\x20or\x20has\x20been\x20revoked.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key,\x20then\x20update\x20your\x20MCP\x20configuration.','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','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','MORPH_API_KEY','stat','completionId','1156556QBdhzf','glob','Disabled\x20tools:\x20','realpath','Error\x20accessing\x20directory\x20','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','2397144wOWAAd','success','setRequestHandler','SymlinkError','warp_grep_start','ToolException','❌\x20Morph\x20Edit\x20Failed:\x20','RipgrepError','ReadError','path_validation_start','object','Warning:\x20Workspace\x20fallback\x20failed:\x20','listRoots','stringify','linesModified','enum','substring','join','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','name','safeParse','text','\x0aOptions:','Error:\x20','SubToolError','2623600swUtNP','Specific\x20commit\x20hash\x20to\x20search','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','pyproject.toml','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','\x20error(s)','morph-v3-large','code_edit','response','array','\x20\x20morph-mcp','timings','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','linesAdded','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','Cargo.toml','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','Error\x20running\x20fast\x20context\x20search:\x20','new_string','exit','Unknown\x20tool:\x20','glob\x20\x27','[github_codebase_search]\x20Done\x20in\x20','LocalRipgrepProvider','--api-key=','file_path','morph-mcp','Invalid\x20arguments:\x20','map','0.2.0','-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a','warp_grep_complete','.\x20Changes:\x20','3rQGQoG','grep\x20\x27','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','toLowerCase','api-key','WORKSPACE_ROOT','RipgrepNotAvailable','metadata','constructor','runWarpGrep_call','optional','arguments','File\x20read\x20error:','Invalid\x20Morph\x20API\x20key\x20format.\x20API\x20keys\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key.','Rules:\x0a','Example\x20format:\x0a','-\x20Listed\x20directory\x20`','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','includes','120ZqANWI','grep_search','morph-v3-fast','MORPH_WARP_GREP_TIMEOUT','FileReadError','compaction_failed','tool_call_id','../package.json','@morphllm/morphmcp\x20','CODEBASE_SEARCH','version','normalize','isDirectory','length','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','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.','codebase_search','.cursor','\x20as\x20allowed\x20directory','roots','isArray','Workspace\x20mode\x20enabled:\x20Using\x20','trim','push','provider_created','has','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','\x20valid\x20directories','toISOString','dryRun','argv','role','changes','min','parse','edit_file','-\x20Glob\x20search\x20`','.\x20Path:\x20','split','timed\x20out','resolve','readFile','Warning:\x20','github_codebase_search','errors','morph-','grep','\x20chars)','<file\x20path=\x22','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','ms.\x20Success:\x20','5gYOVBE','default','Max\x20results\x20to\x20return','false','\x22.\x20Known\x20tools:\x20','owner_repo'];a0_0x1a93=function(){return _0x32ac08;};return a0_0x1a93();}const WORKSPACE_ROOT=process['env'][a0_0x547ea5(0x1b3)]||process[a0_0x547ea5(0x127)][a0_0x547ea5(0x11c)]||process[a0_0x547ea5(0x20a)](),ENABLE_WORKSPACE_MODE=process[a0_0x547ea5(0x127)]['ENABLE_WORKSPACE_MODE']!==a0_0x547ea5(0x1f7),MORPH_API_KEY=getCliArg(a0_0x547ea5(0x1b2))??process[a0_0x547ea5(0x127)][a0_0x547ea5(0x166)],MORPH_API_URL=process[a0_0x547ea5(0x127)][a0_0x547ea5(0x120)],MORPH_LARGE_APPLY=process[a0_0x547ea5(0x127)]['MORPH_LARGE_APPLY']!=='false',MORPH_WARP_GREP_TIMEOUT=process[a0_0x547ea5(0x127)]['MORPH_WARP_GREP_TIMEOUT']?parseInt(process['env'][a0_0x547ea5(0x1c4)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process['env'][a0_0x547ea5(0x147)]?new Set(process[a0_0x547ea5(0x127)]['DISABLED_TOOLS'][a0_0x547ea5(0x1e7)](',')[a0_0x547ea5(0x1a6)](_0x353c68=>_0x353c68[a0_0x547ea5(0x1d7)]())[a0_0x547ea5(0xf0)](_0x2112b2=>_0x2112b2[a0_0x547ea5(0x1ce)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x547ea5(0x134)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x547ea5(0x1da)](tool)&&console[a0_0x547ea5(0x1fb)](a0_0x547ea5(0x200)+tool+a0_0x547ea5(0x1f8)+[...KNOWN_TOOL_NAMES]['join'](',\x20'));}console[a0_0x547ea5(0x1fb)](a0_0x547ea5(0x16b)+[...DISABLED_TOOLS][a0_0x547ea5(0x180)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x547ea5(0x10e)](a0_0x547ea5(0x14e))&&!MORPH_API_KEY['startsWith'](a0_0x547ea5(0x1ee))&&logMcpStderr(a0_0x547ea5(0x181));async function reportMorphError(_0x105f26){const _0x36af08=a0_0x547ea5;try{await a0_0x41e6a9['post'](_0x36af08(0x146),{..._0x105f26,'timestamp':new Date()[_0x36af08(0x1dd)](),'source':_0x105f26[_0x36af08(0x123)]||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x105f26['context']}},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':'Bearer\x20'+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x55a27b,_0x45a445){const _0x4cd345=a0_0x547ea5;if(_0x55a27b&&typeof _0x55a27b===_0x4cd345(0x179)&&'status'in _0x55a27b)return _0x55a27b[_0x4cd345(0x14b)];if(_0x55a27b&&typeof _0x55a27b==='object'&&_0x4cd345(0x190)in _0x55a27b)return _0x55a27b[_0x4cd345(0x190)]?.['status'];const _0x4bfa1e=_0x45a445[_0x4cd345(0x13e)](/\b(401|429)\b/);return _0x4bfa1e?parseInt(_0x4bfa1e[0x1],0xa):null;}function handleMorphAPIError(_0x27d195){const _0x38ba38=a0_0x547ea5,_0x348899=_0x27d195 instanceof Error?_0x27d195[_0x38ba38(0xfe)]:String(_0x27d195),_0x3c307b=extractStatusCode(_0x27d195,_0x348899);switch(_0x3c307b){case 0x191:return{'content':[{'type':_0x38ba38(0x184),'text':_0x38ba38(0x163)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x38ba38(0x184),'text':_0x38ba38(0x18c)}],'isError':!![]};default:return null;}}args[a0_0x547ea5(0x1ce)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),logMcpStderr('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),logMcpStderr('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),logMcpStderr(a0_0x547ea5(0xff)),logMcpStderr('\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)'),logMcpStderr(a0_0x547ea5(0x202)));function normalizePath(_0x3cdf75){const _0x3e34c4=a0_0x547ea5;return a0_0x376bd5[_0x3e34c4(0x1cc)](_0x3cdf75);}function expandHome(_0x28738b){const _0x1c28c6=a0_0x547ea5;if(_0x28738b[_0x1c28c6(0x10e)]('~/')||_0x28738b==='~')return a0_0x376bd5[_0x1c28c6(0x180)](a0_0x19db69[_0x1c28c6(0x203)](),_0x28738b[_0x1c28c6(0xfa)](0x1));return _0x28738b;}let allowedDirectories=await Promise[a0_0x547ea5(0x124)](args['map'](async _0x100d33=>{const _0x5341bc=a0_0x547ea5,_0x505d1c=expandHome(_0x100d33),_0x21edbf=a0_0x376bd5['resolve'](_0x505d1c);try{const _0x487f25=await a0_0x5d164c[_0x5341bc(0x16c)](_0x21edbf);return normalizePath(_0x487f25);}catch(_0xb45c1e){return normalizePath(_0x21edbf);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x547ea5(0x1ce)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x547ea5(0x1d8)](workspaceDir),logMcpStderr(a0_0x547ea5(0x1d6)+workspaceDir+a0_0x547ea5(0x1d3)));}catch(a0_0x2b843c){logMcpStderr(a0_0x547ea5(0x16e)+a0_0x2b843c);}async function detectWorkspaceRoot(_0x245d36){const _0x25cc08=a0_0x547ea5;let _0x14040e=a0_0x376bd5['resolve'](_0x245d36);const _0x325def=[_0x25cc08(0x100),_0x25cc08(0x106),'package.json',_0x25cc08(0x198),_0x25cc08(0x18b),_0x25cc08(0x122),_0x25cc08(0x1d2),'tsconfig.json',_0x25cc08(0xfb)];while(_0x14040e!==a0_0x376bd5[_0x25cc08(0x14c)](_0x14040e)){for(const _0x26a46e of _0x325def){const _0x5d5ecf=a0_0x376bd5[_0x25cc08(0x180)](_0x14040e,_0x26a46e);try{return await a0_0x5d164c[_0x25cc08(0xf4)](_0x5d5ecf),normalizePath(_0x14040e);}catch{}}_0x14040e=a0_0x376bd5[_0x25cc08(0x14c)](_0x14040e);}return normalizePath(_0x245d36);}await Promise['all'](args['map'](async _0x1c1beb=>{const _0xc643bb=a0_0x547ea5;try{const _0x3a8755=await a0_0x5d164c[_0xc643bb(0x167)](expandHome(_0x1c1beb));!_0x3a8755[_0xc643bb(0x1cd)]()&&(logMcpStderr(_0xc643bb(0x186)+_0x1c1beb+'\x20is\x20not\x20a\x20directory'),process[_0xc643bb(0x19d)](0x1));}catch(_0x5f2a93){logMcpStderr(_0xc643bb(0x16d)+_0x1c1beb+':',_0x5f2a93),process[_0xc643bb(0x19d)](0x1);}}));async function validatePath(_0x309903){const _0x46985e=a0_0x547ea5,_0x284b66=expandHome(_0x309903),_0x2b8110=a0_0x376bd5['resolve'](_0x284b66);logger[_0x46985e(0x20c)](_0x46985e(0x12f),_0x46985e(0x178),{'raw_path':_0x309903,'absolute':_0x2b8110});try{const _0x205ccd=await a0_0x5d164c[_0x46985e(0x16c)](_0x2b8110);return logger[_0x46985e(0x20c)](_0x46985e(0x12f),'path_validation_resolved',{'resolved':_0x205ccd,'symlink':_0x205ccd!==_0x2b8110}),_0x205ccd;}catch(_0x1f0287){if(_0x1f0287[_0x46985e(0x11d)]===_0x46985e(0x108)){const _0x5e469c=a0_0x376bd5[_0x46985e(0x14c)](_0x2b8110);try{const _0x24c8c5=await a0_0x5d164c[_0x46985e(0x16c)](_0x5e469c),_0x24a857=a0_0x376bd5[_0x46985e(0x180)](_0x24c8c5,a0_0x376bd5[_0x46985e(0x208)](_0x2b8110));return logger[_0x46985e(0x20c)]('MCP','path_validation_resolved',{'resolved':_0x24a857,'new_file':!![]}),_0x24a857;}catch{logger[_0x46985e(0x1fb)]('MCP',_0x46985e(0x129),{'raw_path':_0x309903,'error':'Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x5e469c});throw new Error(_0x46985e(0x135)+_0x5e469c);}}logger['error']('MCP','path_validation_failed',{'raw_path':_0x309903,'error':_0x1f0287['message']});throw _0x1f0287;}}const MorphEditFileArgsSchema=z['object']({'path':z[a0_0x547ea5(0x1fd)](),'code_edit':z[a0_0x547ea5(0x1fd)]()[a0_0x547ea5(0x138)](a0_0x547ea5(0x1f2)),'instruction':z[a0_0x547ea5(0x1fd)]()[a0_0x547ea5(0x138)](a0_0x547ea5(0x1cf)),'dryRun':z['boolean']()[a0_0x547ea5(0x1f5)](![])[a0_0x547ea5(0x138)](a0_0x547ea5(0x153))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x547ea5(0x10a),WarpGrepArgsSchema=z[a0_0x547ea5(0x179)]({'search_string':z[a0_0x547ea5(0x1fd)]()[a0_0x547ea5(0x138)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z['string']()[a0_0x547ea5(0x138)](a0_0x547ea5(0x164)),'search_type':z[a0_0x547ea5(0x17e)](['default','node_modules'])['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['object']({'search_string':z[a0_0x547ea5(0x1fd)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()['optional']()[a0_0x547ea5(0x138)](a0_0x547ea5(0x1d0)),'owner_repo':z['string']()[a0_0x547ea5(0x1b8)]()[a0_0x547ea5(0x138)]('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z[a0_0x547ea5(0x1fd)]()[a0_0x547ea5(0x1b8)]()['describe']('Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)')}),CodebaseSearchArgsSchema=z[a0_0x547ea5(0x179)]({'query':z['string']()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x547ea5(0x1fd)]()['describe'](a0_0x547ea5(0xf3)),'branch':z['string']()['optional']()[a0_0x547ea5(0x138)](a0_0x547ea5(0x1db)),'commitHash':z[a0_0x547ea5(0x1fd)]()['optional']()[a0_0x547ea5(0x138)](a0_0x547ea5(0x189)),'targetDirectories':z[a0_0x547ea5(0x191)](z['string']())['default']([])[a0_0x547ea5(0x138)](a0_0x547ea5(0x13b)),'limit':z[a0_0x547ea5(0x15f)]()[a0_0x547ea5(0x1b8)]()[a0_0x547ea5(0x1f5)](0xa)['describe'](a0_0x547ea5(0x1f6))}),server=new Server({'name':a0_0x547ea5(0x1a4),'version':'0.2.0'},{'capabilities':{'tools':{}}});server[a0_0x547ea5(0x171)](ListToolsRequestSchema,async()=>{const _0xd1bd1a=a0_0x547ea5,_0x3767ce=[{'name':TOOL_NAMES[_0xd1bd1a(0x10d)],'description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES.**\x20Fast,\x20accurate,\x20and\x20prevents\x20context\x20pollution.\x20Especially\x20useful\x20when\x20making\x20multiple\x20edits\x20in\x20one\x20file:\x20describe\x20all\x20changes\x20in\x20a\x20single\x20call\x20and\x20the\x20semantic\x20edit\x20applies\x20them\x20all\x20at\x20once,\x20more\x20accurately\x20and\x20faster\x20than\x20sequential\x20edits.\x20Unlike\x20search-and-replace\x20or\x20patch\x20edits\x20which\x20do\x20narrow\x20edits\x20one\x20at\x20a\x20time,\x20with\x20this\x20tool\x20you\x20should\x20do\x20all\x20your\x20code\x20changes\x20in\x20one\x20go\x20separated\x20by\x20`//\x20...\x20existing\x20code\x20...`\x20markers.\x20This\x20saves\x20tokens\x20and\x20improves\x20performance\x20because\x20you\x20do\x20not\x20need\x20to\x20reread\x20files\x20before\x20edits.\x20All\x20three\x20parameters\x20are\x20required.\x0a\x0a'+_0xd1bd1a(0x10b)+_0xd1bd1a(0x15b)+_0xd1bd1a(0x15e)+_0xd1bd1a(0x1a8)+_0xd1bd1a(0x1fc)+_0xd1bd1a(0x1bd)+_0xd1bd1a(0x105)+_0xd1bd1a(0x1bc)+'-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a'+'-\x20Preserve\x20exact\x20indentation\x0a'+_0xd1bd1a(0x212)+_0xd1bd1a(0x197),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0xd1bd1a(0x1ca)],'description':_0xd1bd1a(0x165)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+'Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20'+_0xd1bd1a(0x1b0)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x1e053e=_0x3767ce[_0xd1bd1a(0xf0)](_0xd0befd=>{const _0x5bc062=_0xd1bd1a;if(DISABLED_TOOLS[_0x5bc062(0x1da)](_0xd0befd[_0x5bc062(0x182)]))return console[_0x5bc062(0x1fb)](_0x5bc062(0x157)+_0xd0befd[_0x5bc062(0x182)]+_0x5bc062(0x214)),![];if('requiresApiKey'in _0xd0befd&&_0xd0befd[_0x5bc062(0x205)]&&!MORPH_API_KEY)return logMcpStderr(_0x5bc062(0x1eb)+_0xd0befd[_0x5bc062(0x182)]+_0x5bc062(0x10f)),![];return!![];});return{'tools':_0x1e053e[_0xd1bd1a(0x1a6)](_0x5d50db=>({'name':_0x5d50db['name'],'description':_0x5d50db[_0xd1bd1a(0x119)],'inputSchema':_0x5d50db['inputSchema']}))};}),server[a0_0x547ea5(0x171)](CallToolRequestSchema,async _0x438c7a=>{const _0x3ae4e8=a0_0x547ea5,{name:_0x2846d5,arguments:_0x56a022}=_0x438c7a['params'],_0x436fbd=Date[_0x3ae4e8(0x139)]();logger[_0x3ae4e8(0x20c)](_0x3ae4e8(0x12f),'tool_call_received',{'tool':_0x2846d5,'args':_0x2846d5==='edit_file'?{'path':_0x56a022?.['path'],'instruction':_0x56a022?.[_0x3ae4e8(0xfd)]||_0x56a022?.['instructions'],'dryRun':_0x56a022?.['dryRun']}:_0x56a022});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x3ae4e8(0x184),'text':_0x3ae4e8(0x160)}],'isError':!![]};if(!MORPH_API_KEY[_0x3ae4e8(0x10e)](_0x3ae4e8(0x14e))&&!MORPH_API_KEY[_0x3ae4e8(0x10e)](_0x3ae4e8(0x1ee)))return{'content':[{'type':'text','text':_0x3ae4e8(0x1bb)}],'isError':!![]};if(DISABLED_TOOLS[_0x3ae4e8(0x1da)](_0x2846d5))return{'content':[{'type':'text','text':_0x3ae4e8(0x137)+_0x2846d5+_0x3ae4e8(0x18a)}],'isError':![]};switch(_0x2846d5){case TOOL_NAMES[_0x3ae4e8(0x10d)]:{let _0x3862a5=_0x56a022;if(_0x3862a5&&typeof _0x3862a5===_0x3ae4e8(0x179)){if(!('path'in _0x3862a5)){const _0xe77872=_0x3862a5['target_file']??_0x3862a5[_0x3ae4e8(0x142)]??_0x3862a5['target_filepath']??_0x3862a5[_0x3ae4e8(0x1a3)]??_0x3862a5[_0x3ae4e8(0x12b)];if(_0xe77872)_0x3862a5={..._0x3862a5,'path':_0xe77872};}_0x3ae4e8(0x162)in _0x3862a5&&!(_0x3ae4e8(0xfd)in _0x3862a5)&&(_0x3862a5={..._0x3862a5,'instruction':_0x3862a5[_0x3ae4e8(0x162)]});if(!(_0x3ae4e8(0x18f)in _0x3862a5)){const _0x5ba8fb=_0x3862a5[_0x3ae4e8(0x11d)]??_0x3862a5[_0x3ae4e8(0x19c)]??_0x3862a5[_0x3ae4e8(0xfc)]??_0x3862a5[_0x3ae4e8(0x148)];if(_0x5ba8fb)_0x3862a5={..._0x3862a5,'code_edit':_0x5ba8fb};}}const _0x2d9f00=MorphEditFileArgsSchema['safeParse'](_0x3862a5);if(!_0x2d9f00[_0x3ae4e8(0x170)])throw new Error('Invalid\x20arguments\x20for\x20morph_edit_file:\x20'+_0x2d9f00[_0x3ae4e8(0x1fb)]);const _0x381df5=await validatePath(_0x2d9f00[_0x3ae4e8(0x20f)][_0x3ae4e8(0x14a)]);let _0x270906=null,_0x3f94f6=!![],_0x27fc0f=null;try{_0x270906=await a0_0x5d164c['readFile'](_0x381df5,_0x3ae4e8(0xf1)),logger[_0x3ae4e8(0x20c)](_0x3ae4e8(0x12f),_0x3ae4e8(0x11e),{'path':_0x381df5,'size_bytes':_0x270906[_0x3ae4e8(0x1ce)]});}catch(_0x2e60a6){const _0x4e9707=_0x2e60a6[_0x3ae4e8(0x11d)];_0x4e9707===_0x3ae4e8(0x108)?(_0x3f94f6=![],_0x270906='',logger[_0x3ae4e8(0x20c)](_0x3ae4e8(0x12f),'file_read_complete',{'path':_0x381df5,'exists':![]})):(_0x27fc0f='Failed\x20to\x20read\x20file:\x20'+(_0x4e9707||_0x3ae4e8(0x10c))+'\x20-\x20'+(_0x2e60a6 instanceof Error?_0x2e60a6['message']:String(_0x2e60a6)),logger[_0x3ae4e8(0x1fb)](_0x3ae4e8(0x12f),'file_read_failed',{'path':_0x381df5,'error':_0x27fc0f}),logMcpStderr('Warning:\x20'+_0x27fc0f));}let _0x29f0ab;try{const _0x482bd8=MORPH_API_KEY;if(!_0x482bd8)throw new Error(_0x3ae4e8(0x1af));const _0x28dabc=a0_0x376bd5['dirname'](_0x381df5),_0x4dfcee=a0_0x376bd5[_0x3ae4e8(0x208)](_0x381df5);logger[_0x3ae4e8(0x20c)]('MCP',_0x3ae4e8(0x103),{'model':_0x3ae4e8(0x1c3),'path':_0x2d9f00['data']['path'],'instruction_len':_0x2d9f00[_0x3ae4e8(0x20f)]['instruction'][_0x3ae4e8(0x1ce)],'code_edit_len':_0x2d9f00[_0x3ae4e8(0x20f)]['code_edit']['length'],'original_code_len':_0x270906?.[_0x3ae4e8(0x1ce)]??0x0,'dry_run':_0x2d9f00[_0x3ae4e8(0x20f)][_0x3ae4e8(0x1de)]});const _0x5aabf4=Date[_0x3ae4e8(0x139)](),_0x1186e6=await executeEditFile({'target_filepath':_0x4dfcee,'code_edit':_0x2d9f00[_0x3ae4e8(0x20f)][_0x3ae4e8(0x18f)],'instruction':_0x2d9f00[_0x3ae4e8(0x20f)][_0x3ae4e8(0xfd)]},{'morphApiKey':_0x482bd8,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x28dabc,'autoWrite':!_0x2d9f00[_0x3ae4e8(0x20f)]['dryRun'],'generateUdiff':![],'debug':![]}),_0x301a42=Date[_0x3ae4e8(0x139)]()-_0x5aabf4;_0x29f0ab=_0x1186e6[_0x3ae4e8(0x168)];if(!_0x1186e6[_0x3ae4e8(0x170)])throw new Error(_0x1186e6[_0x3ae4e8(0x1fb)]||_0x3ae4e8(0x11a));const _0x5ae0ae=_0x1186e6[_0x3ae4e8(0x1e1)],_0xab64f6=_0x3ae4e8(0x14d)+_0x5ae0ae[_0x3ae4e8(0x195)]+_0x3ae4e8(0x158)+_0x5ae0ae[_0x3ae4e8(0x118)]+',\x20modified\x20'+_0x5ae0ae[_0x3ae4e8(0x17d)];logger['debug'](_0x3ae4e8(0x12f),_0x3ae4e8(0x130),{'tool':_0x3ae4e8(0x1e4),'success':!![],'latency_ms':Date[_0x3ae4e8(0x139)]()-_0x436fbd,'edit_latency_ms':_0x301a42,'changes':{'added':_0x5ae0ae[_0x3ae4e8(0x195)],'removed':_0x5ae0ae['linesRemoved'],'modified':_0x5ae0ae[_0x3ae4e8(0x17d)]},'completion_id':_0x29f0ab});if(_0x2d9f00[_0x3ae4e8(0x20f)]['dryRun'])return{'content':[{'type':_0x3ae4e8(0x184),'text':_0x3ae4e8(0x209)+(_0x3f94f6?'':'\x20(new\x20file)')+':\x20'+_0x2d9f00[_0x3ae4e8(0x20f)][_0x3ae4e8(0xfd)]+_0x3ae4e8(0x1aa)+_0xab64f6+_0x3ae4e8(0x1e6)+_0x2d9f00['data'][_0x3ae4e8(0x14a)]+'.'}]};return{'content':[{'type':_0x3ae4e8(0x184),'text':'Morph\x20Edit\x20'+(_0x3f94f6?'Applied':_0x3ae4e8(0x109))+':\x20'+_0x2d9f00[_0x3ae4e8(0x20f)][_0x3ae4e8(0xfd)]+'.\x20Changes:\x20'+_0xab64f6+_0x3ae4e8(0x1e6)+_0x2d9f00[_0x3ae4e8(0x20f)][_0x3ae4e8(0x14a)]+'.'}]};}catch(_0x1dbad5){const _0x465ced=handleMorphAPIError(_0x1dbad5);if(_0x465ced)return logger[_0x3ae4e8(0x1fb)]('MCP',_0x3ae4e8(0x114),{'tool':_0x3ae4e8(0x1e4),'error':_0x3ae4e8(0x150),'latency_ms':Date[_0x3ae4e8(0x139)]()-_0x436fbd}),_0x465ced;const _0x537dba=_0x1dbad5 instanceof Error?_0x1dbad5[_0x3ae4e8(0xfe)]:String(_0x1dbad5);return logger[_0x3ae4e8(0x1fb)]('MCP',_0x3ae4e8(0x114),{'tool':_0x3ae4e8(0x1e4),'error':_0x537dba,'path':_0x2d9f00[_0x3ae4e8(0x20f)][_0x3ae4e8(0x14a)],'validated_path':_0x381df5,'latency_ms':Date[_0x3ae4e8(0x139)]()-_0x436fbd,'stack':_0x1dbad5 instanceof Error?_0x1dbad5[_0x3ae4e8(0x204)]:undefined}),reportMorphError({'error_message':_0x537dba,'error_type':_0x1dbad5 instanceof Error?_0x1dbad5[_0x3ae4e8(0x1b6)]['name']:'UnknownError','context':{'tool':'edit_file','completion_id':_0x29f0ab,'file_path':_0x2d9f00[_0x3ae4e8(0x20f)][_0x3ae4e8(0x14a)],'validated_path':_0x381df5,'instruction':_0x2d9f00[_0x3ae4e8(0x20f)][_0x3ae4e8(0xfd)],'model':MORPH_LARGE_APPLY?'morph-v3-large':'morph-v3-fast','dry_run':_0x2d9f00[_0x3ae4e8(0x20f)][_0x3ae4e8(0x1de)],'file_exists':_0x3f94f6,'file_read_error':_0x27fc0f,'file_readable':_0x270906!==null,'request_content':{'path':_0x2d9f00[_0x3ae4e8(0x20f)]['path'],'code_edit':_0x2d9f00[_0x3ae4e8(0x20f)]['code_edit'],'instruction':_0x2d9f00['data'][_0x3ae4e8(0xfd)],'original_code':_0x270906!==null?_0x270906['length']>0xc350?_0x270906[_0x3ae4e8(0x17f)](0x0,0xc350)+_0x3ae4e8(0x145)+_0x270906[_0x3ae4e8(0x1ce)]+_0x3ae4e8(0x1f0):_0x270906:'[could\x20not\x20read\x20file:\x20'+(_0x27fc0f||'unknown\x20error')+']','original_code_length':_0x270906?.[_0x3ae4e8(0x1ce)]??0x0,'model':MORPH_LARGE_APPLY?_0x3ae4e8(0x18e):_0x3ae4e8(0x1c3),'dry_run':_0x2d9f00[_0x3ae4e8(0x20f)]['dryRun']}},'stack_trace':_0x1dbad5 instanceof Error?_0x1dbad5[_0x3ae4e8(0x204)]:undefined,'source':'mcp-filesystem'})[_0x3ae4e8(0x110)](()=>{}),{'content':[{'type':'text','text':_0x3ae4e8(0x175)+_0x537dba}],'isError':!![]};}}case TOOL_NAMES[_0x3ae4e8(0x1ca)]:{const _0x22f0f8=WarpGrepArgsSchema[_0x3ae4e8(0x183)](_0x56a022);if(!_0x22f0f8[_0x3ae4e8(0x170)])return{'content':[{'type':_0x3ae4e8(0x184),'text':_0x3ae4e8(0x1a5)+_0x22f0f8[_0x3ae4e8(0x1fb)]}],'isError':!![]};const _0xa13f44=_0x2fd4ee=>{const _0x14bb20=_0x3ae4e8,_0x4db3c6=[];for(const _0x4c55d0 of _0x2fd4ee||[]){if(_0x4c55d0[_0x14bb20(0x1e0)]==='assistant'&&Array[_0x14bb20(0x1d5)](_0x4c55d0['tool_calls']))for(const _0x498b6a of _0x4c55d0[_0x14bb20(0x20d)]){try{const _0x3d77c9=_0x498b6a[_0x14bb20(0x154)]?.[_0x14bb20(0x182)],_0x37acb5=JSON[_0x14bb20(0x1e3)](_0x498b6a['function']?.[_0x14bb20(0x1b9)]||'{}');if(_0x3d77c9===_0x14bb20(0x1c2))_0x4db3c6[_0x14bb20(0x1d8)](_0x14bb20(0x1ac)+_0x37acb5[_0x14bb20(0x213)]+'\x27\x20'+(_0x37acb5[_0x14bb20(0x14a)]||'.'));else{if(_0x3d77c9===_0x14bb20(0x201))_0x4db3c6['push']('read\x20'+_0x37acb5[_0x14bb20(0x14a)]);else{if(_0x3d77c9===_0x14bb20(0x152))_0x4db3c6[_0x14bb20(0x1d8)]('list_directory\x20'+(_0x37acb5[_0x14bb20(0x210)]||'.'));else{if(_0x3d77c9===_0x14bb20(0x16a))_0x4db3c6[_0x14bb20(0x1d8)](_0x14bb20(0x19f)+_0x37acb5[_0x14bb20(0x213)]+'\x27\x20'+(_0x37acb5['path']||'.'));else _0x3d77c9==='finish'&&_0x4db3c6[_0x14bb20(0x1d8)](_0x14bb20(0x20e));}}}}catch{}}}return _0x4db3c6;},_0x2ff5da=_0x345479=>{const _0x21a64a=_0x3ae4e8,_0x3738a3=[];if(!_0x345479||!Array['isArray'](_0x345479))return _0x3738a3;const _0x3b370b=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x21a64a(0x141),'tool':_0x21a64a(0x201)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x21a64a(0x115),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x21a64a(0x177),'tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x21a64a(0x1fe),'tool':_0x21a64a(0x201)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x21a64a(0x176),'tool':'grep'},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x21a64a(0x1b4),'tool':_0x21a64a(0x1ef)},{'pattern':/\[BINARY FILE\]/,'error_type':'BinaryFile','tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':'read'},{'pattern':/not a text file/,'error_type':_0x21a64a(0x1fe),'tool':_0x21a64a(0x201)},{'pattern':/symbolic link/,'error_type':_0x21a64a(0x172),'tool':_0x21a64a(0x201)},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':_0x21a64a(0x201)},{'pattern':/status="error"/,'error_type':_0x21a64a(0x174),'tool':'unknown'}];let _0x1c0e37=0x0;for(const _0x158995 of _0x345479){_0x158995[_0x21a64a(0x1e0)]===_0x21a64a(0x13c)&&Array['isArray'](_0x158995[_0x21a64a(0x20d)])&&_0x1c0e37++;const _0x5cd465=_0x158995[_0x21a64a(0xfc)];if((_0x158995[_0x21a64a(0x1e0)]==='tool'||_0x158995['role']==='user')&&_0x5cd465&&typeof _0x5cd465===_0x21a64a(0x1fd))for(const {pattern:_0x1c45d8,error_type:_0x856c24,tool:_0x529c04}of _0x3b370b){const _0x599b30=_0x5cd465[_0x21a64a(0x13e)](new RegExp(_0x1c45d8[_0x21a64a(0x123)],'g'));if(_0x599b30)for(const _0x45990c of _0x599b30){const _0x1f14c5=_0x5cd465[_0x21a64a(0x15c)](_0x45990c),_0xabd0af=_0x5cd465[_0x21a64a(0x17f)](_0x1f14c5,Math[_0x21a64a(0x1e2)](_0x1f14c5+0xc8,_0x5cd465['length']));_0x3738a3[_0x21a64a(0x1d8)]({'tool':_0x529c04,'error_type':_0x856c24,'error_message':_0xabd0af[_0x21a64a(0x1e7)]('\x0a')[0x0],'turn':_0x1c0e37});}}}return _0x3738a3;};try{const _0x521d46=a0_0x376bd5[_0x3ae4e8(0x1e9)](_0x22f0f8[_0x3ae4e8(0x20f)]['repo_path']),_0x2c76d0=_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x13f)],_0x41f197=_0x2c76d0===_0x3ae4e8(0x1fa)?{'allowNames':['node_modules']}:undefined,_0x4ed305=new LocalRipgrepProvider(_0x521d46,undefined,_0x41f197);logger['debug'](_0x3ae4e8(0x12f),_0x3ae4e8(0x1d9),{'type':_0x3ae4e8(0x1a1),'repo_root':_0x521d46,'search_type':_0x2c76d0||_0x3ae4e8(0x1f5)}),logger[_0x3ae4e8(0x20c)](_0x3ae4e8(0x12f),_0x3ae4e8(0x173),{'query':_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x116)],'repo_root':_0x521d46,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x50da67=Date[_0x3ae4e8(0x139)](),_0x5bd579=await runWarpGrep({'searchTerm':_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x116)],'repoRoot':_0x521d46,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x4ed305,'search_type':_0x2c76d0}),_0x553a4e=Date[_0x3ae4e8(0x139)]()-_0x50da67,_0x147c5f=_0x5bd579[_0x3ae4e8(0x20e)]?.[_0x3ae4e8(0x1b5)]?.[_0x3ae4e8(0x12d)]?.[_0x3ae4e8(0x1ce)]??0x0;logger[_0x3ae4e8(0x20c)](_0x3ae4e8(0x12f),_0x3ae4e8(0x1a9),{'termination':_0x5bd579[_0x3ae4e8(0x121)],'turns':_0x5bd579[_0x3ae4e8(0x193)]?.[_0x3ae4e8(0x126)]??0x0,'files_found':_0x147c5f,'latency_ms':_0x553a4e});const _0x555392=_0x2ff5da(_0x5bd579[_0x3ae4e8(0x113)]);_0x555392[_0x3ae4e8(0x1ce)]>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x555392[_0x3ae4e8(0x1ce)]+_0x3ae4e8(0x18d),'error_type':_0x3ae4e8(0x187),'level':'warn','tool':_0x3ae4e8(0x1d1),'context':{'repo_path':_0x22f0f8[_0x3ae4e8(0x20f)]['repo_path'],'query':_0x22f0f8[_0x3ae4e8(0x20f)]['search_string'],'model':_0x3ae4e8(0x107),'termination_reason':_0x5bd579[_0x3ae4e8(0x121)],'sub_tool_errors':_0x555392,'timings':_0x5bd579['timings'],'tool_calls':_0xa13f44(_0x5bd579[_0x3ae4e8(0x113)]),'messages':_0x5bd579['messages']?.[_0x3ae4e8(0x1a6)](_0x29adf2=>({'role':_0x29adf2[_0x3ae4e8(0x1e0)],'content':_0x29adf2[_0x3ae4e8(0xfc)],..._0x29adf2[_0x3ae4e8(0x20d)]?{'tool_calls':_0x29adf2['tool_calls'][_0x3ae4e8(0x1ce)]}:{},..._0x29adf2['tool_call_id']?{'tool_call_id':_0x29adf2[_0x3ae4e8(0x1c7)]}:{}}))},'source':_0x3ae4e8(0x132)})[_0x3ae4e8(0x110)](()=>{});let _0x19b76b='';if(_0x5bd579[_0x3ae4e8(0x121)]===_0x3ae4e8(0x156)&&_0x5bd579[_0x3ae4e8(0x20e)]?.[_0x3ae4e8(0x1b5)]?.[_0x3ae4e8(0x12d)]){const _0x29f18d=_0x5bd579['finish'][_0x3ae4e8(0x1b5)]['files'];if(_0x29f18d[_0x3ae4e8(0x1ce)]===0x0)return _0x19b76b=_0x5bd579[_0x3ae4e8(0x20e)][_0x3ae4e8(0x144)]||_0x3ae4e8(0xf8),{'content':[{'type':_0x3ae4e8(0x184),'text':_0x19b76b}]};const _0x5d9d76=[],_0x486217=[_0x3ae4e8(0x1ad)];for(const _0x3f3711 of _0x5bd579[_0x3ae4e8(0x113)]){if(_0x3f3711[_0x3ae4e8(0x1e0)]==='assistant'&&Array[_0x3ae4e8(0x1d5)](_0x3f3711['tool_calls']))for(const _0x32c066 of _0x3f3711[_0x3ae4e8(0x20d)]){try{const _0x1fd4f4=_0x32c066[_0x3ae4e8(0x154)]?.[_0x3ae4e8(0x182)],_0x57cc71=JSON[_0x3ae4e8(0x1e3)](_0x32c066[_0x3ae4e8(0x154)]?.[_0x3ae4e8(0x1b9)]||'{}');if(_0x1fd4f4===_0x3ae4e8(0x1c2))_0x486217[_0x3ae4e8(0x1d8)](_0x3ae4e8(0x20b)+_0x57cc71[_0x3ae4e8(0x213)]+_0x3ae4e8(0x15a)+(_0x57cc71[_0x3ae4e8(0x14a)]||'.')+'`');else{if(_0x1fd4f4===_0x3ae4e8(0x201))_0x486217[_0x3ae4e8(0x1d8)](_0x3ae4e8(0x206)+_0x57cc71['path']+'`');else{if(_0x1fd4f4===_0x3ae4e8(0x152))_0x486217['push'](_0x3ae4e8(0x1be)+(_0x57cc71[_0x3ae4e8(0x210)]||'.')+'`');else _0x1fd4f4===_0x3ae4e8(0x16a)&&_0x486217[_0x3ae4e8(0x1d8)](_0x3ae4e8(0x1e5)+_0x57cc71[_0x3ae4e8(0x213)]+_0x3ae4e8(0x131)+(_0x57cc71[_0x3ae4e8(0x14a)]||'.')+'`');}}}catch{}}}_0x5d9d76[_0x3ae4e8(0x1d8)](_0x486217[_0x3ae4e8(0x180)]('\x0a'));const _0x2bd2f8=['','Relevant\x20context\x20found:'];for(const _0x17a71d of _0x29f18d){if(_0x17a71d['lines']==='*')_0x2bd2f8[_0x3ae4e8(0x1d8)]('-\x20'+_0x17a71d[_0x3ae4e8(0x14a)]+':*');else{if(Array[_0x3ae4e8(0x1d5)](_0x17a71d[_0x3ae4e8(0x1ff)])){const _0x463abf=_0x17a71d[_0x3ae4e8(0x1ff)][_0x3ae4e8(0x1a6)](([_0x1898d0,_0x258101])=>{if(_0x1898d0===_0x258101)return''+_0x1898d0;return _0x1898d0+'-'+_0x258101;});_0x2bd2f8[_0x3ae4e8(0x1d8)]('-\x20'+_0x17a71d[_0x3ae4e8(0x14a)]+':'+_0x463abf[_0x3ae4e8(0x180)](','));}else _0x2bd2f8['push']('-\x20'+_0x17a71d[_0x3ae4e8(0x14a)]+':*');}}_0x2bd2f8['push'](''),_0x5d9d76[_0x3ae4e8(0x1d8)](_0x2bd2f8[_0x3ae4e8(0x180)]('\x0a')),_0x5d9d76[_0x3ae4e8(0x1d8)]('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x1340db=[],_0x5e0dd8=[];for(const _0x4a07a7 of _0x29f18d){let _0x407a57=a0_0x376bd5[_0x3ae4e8(0x1e9)](_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x13d)],_0x4a07a7[_0x3ae4e8(0x14a)]),_0x984504=null,_0x11f2da=null;try{_0x984504=await a0_0x5d164c['readFile'](_0x407a57,{'encoding':_0x3ae4e8(0xf1)});}catch(_0x31b275){const _0x50a918=fixPathRepetition(_0x407a57);if(_0x50a918)try{_0x984504=await a0_0x5d164c[_0x3ae4e8(0x1ea)](_0x50a918,{'encoding':'utf-8'}),_0x407a57=_0x50a918;}catch{_0x11f2da=_0x31b275 instanceof Error?_0x31b275:new Error(String(_0x31b275));}else _0x11f2da=_0x31b275 instanceof Error?_0x31b275:new Error(String(_0x31b275));}if(_0x984504!==null){const _0x242c3e=_0x984504[_0x3ae4e8(0x1e7)](/\r?\n/),_0x1f21c9=[];if(_0x4a07a7[_0x3ae4e8(0x1ff)]==='*'||!Array['isArray'](_0x4a07a7[_0x3ae4e8(0x1ff)]))for(let _0x63d178=0x1;_0x63d178<=_0x242c3e['length'];_0x63d178++){const _0x3cd422=_0x242c3e[_0x63d178-0x1];_0x1f21c9[_0x3ae4e8(0x1d8)](_0x63d178+'|\x20'+_0x3cd422);}else for(const [_0x5271c4,_0x2ffb06]of _0x4a07a7[_0x3ae4e8(0x1ff)]){_0x1f21c9[_0x3ae4e8(0x1ce)]>0x0&&_0x1f21c9[_0x3ae4e8(0x1d8)]('');for(let _0x569130=_0x5271c4;_0x569130<=_0x2ffb06&&_0x569130<=_0x242c3e['length'];_0x569130++){const _0x1151a4=_0x242c3e[_0x569130-0x1];_0x1f21c9[_0x3ae4e8(0x1d8)](_0x569130+'|\x20'+_0x1151a4);}}_0x5e0dd8[_0x3ae4e8(0x1d8)]({'path':_0x4a07a7[_0x3ae4e8(0x14a)],'content':_0x1f21c9['join']('\x0a')});}else _0x1340db['push'](_0x3ae4e8(0x1f1)+_0x4a07a7['path']+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x11f2da?.['message']||_0x3ae4e8(0x151))+'\x0a</file>');}try{const _0x16e90b=await compactFileContexts(_0x5e0dd8,_0x22f0f8['data'][_0x3ae4e8(0x116)],MORPH_API_KEY,MORPH_API_URL);for(const _0x259362 of _0x16e90b){_0x1340db[_0x3ae4e8(0x1d8)](_0x3ae4e8(0x1f1)+_0x259362[_0x3ae4e8(0x14a)]+'\x22>\x0a'+_0x259362[_0x3ae4e8(0xfc)]+_0x3ae4e8(0xf5));}}catch(_0x1733d0){logger['warn'](_0x3ae4e8(0x12f),_0x3ae4e8(0x1c6),{'error':_0x1733d0 instanceof Error?_0x1733d0['message']:String(_0x1733d0),'files_count':_0x5e0dd8['length']});for(const _0x580347 of _0x5e0dd8){_0x1340db[_0x3ae4e8(0x1d8)](_0x3ae4e8(0x1f1)+_0x580347[_0x3ae4e8(0x14a)]+_0x3ae4e8(0x111)+_0x580347['content']+_0x3ae4e8(0xf5));}}_0x5d9d76[_0x3ae4e8(0x1d8)](_0x1340db[_0x3ae4e8(0x180)]('\x0a\x0a')),_0x19b76b=_0x5d9d76['join']('\x0a');const _0x401dd7=_0x5bd579[_0x3ae4e8(0x1ed)]?.[_0x3ae4e8(0xf0)](_0x38ffcf=>_0x38ffcf[_0x3ae4e8(0xfe)]?.[_0x3ae4e8(0x10e)](_0x3ae4e8(0x1ba)))||[];if(_0x401dd7[_0x3ae4e8(0x1ce)]>0x0){const _0x55a6ca=_0x401dd7['map'](_0x4aff54=>_0x4aff54[_0x3ae4e8(0xfe)])[_0x3ae4e8(0x180)](';\x20');reportMorphError({'error_message':_0x55a6ca,'error_type':_0x3ae4e8(0x1c5),'context':{'tool':_0x3ae4e8(0x1d1),'repo_path':_0x22f0f8[_0x3ae4e8(0x20f)]['repo_path'],'query':_0x22f0f8['data'][_0x3ae4e8(0x116)],'model':_0x3ae4e8(0x107),'termination_reason':_0x3ae4e8(0x140),'error_count':_0x401dd7['length'],'is_timeout':![],'timings':_0x5bd579['timings'],'files_attempted':_0x29f18d['map'](_0x57c2a6=>({'path':_0x57c2a6[_0x3ae4e8(0x14a)],'lines':_0x57c2a6[_0x3ae4e8(0x1ff)]})),'tool_calls':_0xa13f44(_0x5bd579[_0x3ae4e8(0x113)]),'messages':_0x5bd579[_0x3ae4e8(0x113)]?.[_0x3ae4e8(0x1a6)](_0x46c575=>({'role':_0x46c575[_0x3ae4e8(0x1e0)],'content':_0x46c575[_0x3ae4e8(0xfc)],..._0x46c575[_0x3ae4e8(0x20d)]?{'tool_calls':_0x46c575[_0x3ae4e8(0x20d)]['length']}:{},..._0x46c575[_0x3ae4e8(0x1c7)]?{'tool_call_id':_0x46c575[_0x3ae4e8(0x1c7)]}:{}})),'request_content':{'query':_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x116)],'repo_path':_0x22f0f8[_0x3ae4e8(0x20f)]['repo_path'],'repoRoot':a0_0x376bd5[_0x3ae4e8(0x1e9)](_0x22f0f8['data']['repo_path']),'model':_0x3ae4e8(0x107)}},'source':'mcp-filesystem'})[_0x3ae4e8(0x110)](()=>{});}}else{if(_0x5bd579[_0x3ae4e8(0x121)]===_0x3ae4e8(0x15d)&&_0x5bd579[_0x3ae4e8(0x1ed)][_0x3ae4e8(0x1ce)]>0x0){const _0x604204=_0x5bd579[_0x3ae4e8(0x1ed)][_0x3ae4e8(0x1a6)](_0x11e7a7=>_0x11e7a7['message'])[_0x3ae4e8(0x180)](';\x20');_0x19b76b=_0x3ae4e8(0x186)+_0x604204;const _0x5511b6=_0x604204[_0x3ae4e8(0x1b1)]()[_0x3ae4e8(0x1c0)](_0x3ae4e8(0x13a))||_0x604204[_0x3ae4e8(0x1b1)]()[_0x3ae4e8(0x1c0)](_0x3ae4e8(0x1e8))||_0x604204[_0x3ae4e8(0x1b1)]()[_0x3ae4e8(0x1c0)](_0x3ae4e8(0x143)),_0x4edf15=_0x5bd579[_0x3ae4e8(0x20e)]?.[_0x3ae4e8(0x1b5)]?.['files'],_0x595761=_0x5bd579[_0x3ae4e8(0x1ed)][0x0];reportMorphError({'error_message':_0x604204,'error_type':_0x5511b6?_0x3ae4e8(0xf9):_0x595761?.['constructor']?.['name']||'WarpGrepError','context':{'tool':_0x3ae4e8(0x1d1),'repo_path':_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x13d)],'query':_0x22f0f8[_0x3ae4e8(0x20f)]['search_string'],'model':'morph-warp-grep-v2.1','termination_reason':_0x5bd579[_0x3ae4e8(0x121)],'error_count':_0x5bd579[_0x3ae4e8(0x1ed)]['length'],'is_timeout':_0x5511b6,'timings':_0x5bd579[_0x3ae4e8(0x193)],'files_attempted':_0x4edf15?.[_0x3ae4e8(0x1a6)](_0x51a298=>({'path':_0x51a298['path'],'lines':_0x51a298[_0x3ae4e8(0x1ff)]})),'tool_calls':_0xa13f44(_0x5bd579[_0x3ae4e8(0x113)]),'messages':_0x5bd579['messages']?.[_0x3ae4e8(0x1a6)](_0x26d9f2=>({'role':_0x26d9f2[_0x3ae4e8(0x1e0)],'content':_0x26d9f2['content'],..._0x26d9f2[_0x3ae4e8(0x20d)]?{'tool_calls':_0x26d9f2[_0x3ae4e8(0x20d)]['length']}:{},..._0x26d9f2[_0x3ae4e8(0x1c7)]?{'tool_call_id':_0x26d9f2[_0x3ae4e8(0x1c7)]}:{}})),'request_content':{'query':_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x116)],'repo_path':_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x13d)],'repoRoot':a0_0x376bd5[_0x3ae4e8(0x1e9)](_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x13d)]),'model':_0x3ae4e8(0x107)}},'stack_trace':_0x595761?.[_0x3ae4e8(0x204)]||undefined,'source':_0x3ae4e8(0x132)})[_0x3ae4e8(0x110)](()=>{});}else _0x19b76b=_0x3ae4e8(0x136);}return{'content':[{'type':'text','text':_0x19b76b}]};}catch(_0x55a73e){const _0x23387c=handleMorphAPIError(_0x55a73e);if(_0x23387c)return logger[_0x3ae4e8(0x1fb)](_0x3ae4e8(0x12f),_0x3ae4e8(0x114),{'tool':_0x3ae4e8(0x1d1),'error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date['now']()-_0x436fbd}),_0x23387c;const _0x578d4a=_0x55a73e instanceof Error?_0x55a73e[_0x3ae4e8(0xfe)]:String(_0x55a73e);logger[_0x3ae4e8(0x1fb)](_0x3ae4e8(0x12f),_0x3ae4e8(0x114),{'tool':_0x3ae4e8(0x1d1),'error':_0x578d4a,'repo_path':_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x13d)],'query':_0x22f0f8['data'][_0x3ae4e8(0x116)],'latency_ms':Date[_0x3ae4e8(0x139)]()-_0x436fbd});const _0x4be0cf=_0x578d4a[_0x3ae4e8(0x1b1)]()[_0x3ae4e8(0x1c0)](_0x3ae4e8(0x13a))||_0x578d4a[_0x3ae4e8(0x1b1)]()[_0x3ae4e8(0x1c0)]('timed\x20out')||_0x578d4a[_0x3ae4e8(0x1b1)]()[_0x3ae4e8(0x1c0)](_0x3ae4e8(0x143))||_0x55a73e instanceof Error&&_0x55a73e[_0x3ae4e8(0x182)]===_0x3ae4e8(0xf9);return reportMorphError({'error_message':_0x578d4a,'error_type':_0x4be0cf?_0x3ae4e8(0xf9):_0x55a73e instanceof Error?_0x55a73e[_0x3ae4e8(0x1b6)][_0x3ae4e8(0x182)]:_0x3ae4e8(0x12a),'context':{'tool':_0x3ae4e8(0x1d1),'repo_path':_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x13d)],'query':_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x116)],'model':'morph-warp-grep-v2.1','is_timeout':_0x4be0cf,'exception_phase':_0x3ae4e8(0x1b7),'request_content':{'query':_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x116)],'repo_path':_0x22f0f8[_0x3ae4e8(0x20f)][_0x3ae4e8(0x13d)],'repoRoot':a0_0x376bd5[_0x3ae4e8(0x1e9)](_0x22f0f8[_0x3ae4e8(0x20f)]['repo_path']),'model':_0x3ae4e8(0x107)}},'stack_trace':_0x55a73e instanceof Error?_0x55a73e[_0x3ae4e8(0x204)]:undefined,'source':_0x3ae4e8(0x132)})[_0x3ae4e8(0x110)](()=>{}),{'content':[{'type':_0x3ae4e8(0x184),'text':_0x3ae4e8(0x19b)+_0x578d4a}],'isError':![]};}}case TOOL_NAMES['GITHUB_CODEBASE_SEARCH']:{const _0x30f74c=WarpGrepGitHubArgsSchema[_0x3ae4e8(0x183)](_0x56a022);if(!_0x30f74c[_0x3ae4e8(0x170)])return{'content':[{'type':'text','text':_0x3ae4e8(0x1a5)+_0x30f74c[_0x3ae4e8(0x1fb)]}],'isError':!![]};const _0x173c32=_0x30f74c[_0x3ae4e8(0x20f)]['github_url']||_0x30f74c[_0x3ae4e8(0x20f)][_0x3ae4e8(0x1f9)];if(!_0x173c32)return{'content':[{'type':_0x3ae4e8(0x184),'text':_0x3ae4e8(0x199)}],'isError':!![]};const _0x1626a3=MORPH_API_KEY;if(!_0x1626a3)throw new Error(_0x3ae4e8(0x1af));const _0x2826ee=Date['now']();logger['debug']('MCP',_0x3ae4e8(0x11f),{'identifier':_0x173c32,'query':_0x30f74c[_0x3ae4e8(0x20f)][_0x3ae4e8(0x116)],'branch':_0x30f74c[_0x3ae4e8(0x20f)]['branch']});try{const _0x48cee4=new WarpGrepClient({'morphApiKey':_0x1626a3,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x463531=await _0x48cee4[_0x3ae4e8(0x128)]({'searchTerm':_0x30f74c[_0x3ae4e8(0x20f)][_0x3ae4e8(0x116)],'github':_0x173c32,'branch':_0x30f74c[_0x3ae4e8(0x20f)][_0x3ae4e8(0x12e)]}),_0x8d92c3=Date[_0x3ae4e8(0x139)]()-_0x2826ee;logMcpStderr(_0x3ae4e8(0x1a0)+_0x8d92c3+_0x3ae4e8(0x1f3)+_0x463531[_0x3ae4e8(0x170)]);const _0x54faf0=formatResult(_0x463531);return{'content':[{'type':_0x3ae4e8(0x184),'text':_0x54faf0}]};}catch(_0x36f06c){const _0x191db9=handleMorphAPIError(_0x36f06c);if(_0x191db9)return _0x191db9;const _0x345cfb=Date[_0x3ae4e8(0x139)]()-_0x2826ee,_0x301914=_0x36f06c instanceof Error?_0x36f06c[_0x3ae4e8(0xfe)]:String(_0x36f06c);return logMcpStderr(_0x3ae4e8(0x112)+_0x345cfb+'ms:',_0x301914),reportMorphError({'error_message':_0x301914,'error_type':_0x36f06c instanceof Error?_0x36f06c['constructor'][_0x3ae4e8(0x182)]:'UnknownError','context':{'tool':_0x3ae4e8(0x1ec),'github_url':_0x173c32,'search_string':_0x30f74c[_0x3ae4e8(0x20f)][_0x3ae4e8(0x116)],'branch':_0x30f74c[_0x3ae4e8(0x20f)][_0x3ae4e8(0x12e)]},'stack_trace':_0x36f06c instanceof Error?_0x36f06c[_0x3ae4e8(0x204)]:undefined,'source':_0x3ae4e8(0x132),'tool':_0x3ae4e8(0x1ec),'latency_ms':_0x345cfb})[_0x3ae4e8(0x110)](()=>{}),{'content':[{'type':_0x3ae4e8(0x184),'text':_0x3ae4e8(0xf7)+_0x301914}],'isError':![]};}}default:throw new Error(_0x3ae4e8(0x19e)+_0x2846d5);}}catch(_0x54c610){const _0xb82ffe=_0x54c610 instanceof Error?_0x54c610['message']:String(_0x54c610);return reportMorphError({'error_message':_0xb82ffe,'error_type':_0x54c610 instanceof Error?_0x54c610[_0x3ae4e8(0x1b6)][_0x3ae4e8(0x182)]:_0x3ae4e8(0x12a),'context':{'tool':_0x2846d5,'arguments':_0x56a022?JSON[_0x3ae4e8(0x17c)](_0x56a022)['substring'](0x0,0x1f4):undefined,'mcp_server_version':_0x3ae4e8(0x1a7)},'stack_trace':_0x54c610 instanceof Error?_0x54c610[_0x3ae4e8(0x204)]:undefined,'source':'mcp-filesystem'})[_0x3ae4e8(0x110)](()=>{}),{'content':[{'type':_0x3ae4e8(0x184),'text':_0x3ae4e8(0x186)+_0xb82ffe}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x294701){const _0x3cbe25=a0_0x547ea5,_0x459dfa=await getValidRootDirectories(_0x294701);if(_0x459dfa[_0x3cbe25(0x1ce)]>0x0)allowedDirectories=[..._0x459dfa],logMcpStderr('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0x459dfa[_0x3cbe25(0x1ce)]+_0x3cbe25(0x1dc));else{logMcpStderr(_0x3cbe25(0x104));if(ENABLE_WORKSPACE_MODE)try{const _0x9dbd3a=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x9dbd3a&&(allowedDirectories=[_0x9dbd3a],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x9dbd3a));}catch(_0xc80b5d){logMcpStderr(_0x3cbe25(0x17a)+_0xc80b5d);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x1e7350=a0_0x547ea5;try{const _0x19d574=await server[_0x1e7350(0x17b)]();_0x19d574&&'roots'in _0x19d574&&await updateAllowedDirectoriesFromRoots(_0x19d574['roots']);}catch(_0x13402c){logMcpStderr(_0x1e7350(0x149),_0x13402c instanceof Error?_0x13402c[_0x1e7350(0xfe)]:String(_0x13402c));}}),server['oninitialized']=async()=>{const _0x11a2a9=a0_0x547ea5,_0x3540e8=server['getClientCapabilities']();if(_0x3540e8?.[_0x11a2a9(0x1d4)])try{const _0x33daf3=await server['listRoots']();_0x33daf3&&_0x11a2a9(0x1d4)in _0x33daf3?await updateAllowedDirectoriesFromRoots(_0x33daf3[_0x11a2a9(0x1d4)]):logMcpStderr(_0x11a2a9(0x125));}catch(_0x5e0810){logMcpStderr(_0x11a2a9(0x101),_0x5e0810 instanceof Error?_0x5e0810[_0x11a2a9(0xfe)]:String(_0x5e0810));}else{if(allowedDirectories[_0x11a2a9(0x1ce)]>0x0)logMcpStderr(_0x11a2a9(0x155),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x11a2a9(0xf6));else throw new Error(_0x11a2a9(0x211));}}};async function runServer(){const _0x33dce9=a0_0x547ea5,_0x4c681d=new StdioServerTransport();await server[_0x33dce9(0x102)](_0x4c681d),logMcpStderr(_0x33dce9(0x133)),allowedDirectories[_0x33dce9(0x1ce)]===0x0&&logMcpStderr(_0x33dce9(0x19a));}runServer()['catch'](_0x2ab30c=>{const _0x3b8217=a0_0x547ea5;logMcpStderr('Fatal\x20error\x20running\x20server:',_0x2ab30c),process[_0x3b8217(0x19d)](0x1);});
2
+ const a0_0x40eb78=a0_0x1a61;(function(_0x1d60cf,_0x22b412){const _0x2cb1ab=a0_0x1a61,_0x4326be=_0x1d60cf();while(!![]){try{const _0x26ca07=parseInt(_0x2cb1ab(0x1b7))/0x1+-parseInt(_0x2cb1ab(0x156))/0x2+-parseInt(_0x2cb1ab(0xee))/0x3+parseInt(_0x2cb1ab(0x131))/0x4+parseInt(_0x2cb1ab(0x1d2))/0x5*(-parseInt(_0x2cb1ab(0x10b))/0x6)+parseInt(_0x2cb1ab(0x18f))/0x7*(parseInt(_0x2cb1ab(0x1d9))/0x8)+parseInt(_0x2cb1ab(0xce))/0x9*(-parseInt(_0x2cb1ab(0x1cf))/0xa);if(_0x26ca07===_0x22b412)break;else _0x4326be['push'](_0x4326be['shift']());}catch(_0x39dd08){_0x4326be['push'](_0x4326be['shift']());}}}(a0_0x3b61,0x22e97));import{Server}from'@modelcontextprotocol/sdk/server/index.js';function a0_0x1a61(_0x1d2a59,_0x47bc1e){_0x1d2a59=_0x1d2a59-0xbe;const _0x3b6171=a0_0x3b61();let _0x1a6124=_0x3b6171[_0x1d2a59];return _0x1a6124;}import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import{CallToolRequestSchema,ListToolsRequestSchema,RootsListChangedNotificationSchema}from'@modelcontextprotocol/sdk/types.js';import a0_0x198608 from'fs/promises';import a0_0x41cd8c from'path';import a0_0x4b32b0 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{logger}from'./logger.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0x3c6dee from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x442863){const _0x222dc4=a0_0x1a61,_0x21b46e=_0x442863['split'](a0_0x41cd8c[_0x222dc4(0x1bf)])[_0x222dc4(0x173)](Boolean);if(_0x21b46e[_0x222dc4(0x148)]<0x2)return null;for(let _0x8a8726=Math[_0x222dc4(0x193)](_0x21b46e[_0x222dc4(0x148)]/0x2);_0x8a8726>=0x1;_0x8a8726--){for(let _0x5a77ff=0x0;_0x5a77ff<=_0x21b46e[_0x222dc4(0x148)]-0x2*_0x8a8726;_0x5a77ff++){const _0x58ae5d=_0x21b46e['slice'](_0x5a77ff,_0x5a77ff+_0x8a8726),_0xb27a8a=_0x21b46e[_0x222dc4(0xf6)](_0x5a77ff+_0x8a8726,_0x5a77ff+0x2*_0x8a8726);if(_0x58ae5d[_0x222dc4(0x115)]((_0x4c22f9,_0x2123a3)=>_0x4c22f9===_0xb27a8a[_0x2123a3])){const _0x54f9e3=[..._0x21b46e['slice'](0x0,_0x5a77ff),..._0x21b46e[_0x222dc4(0xf6)](_0x5a77ff+_0x8a8726)];return a0_0x41cd8c['sep']+_0x54f9e3[_0x222dc4(0xe4)](a0_0x41cd8c[_0x222dc4(0x1bf)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x2b82a4=a0_0x1a61;try{const _0x2ab66f=require(_0x2b82a4(0x114));return _0x2ab66f[_0x2b82a4(0x134)]??_0x2b82a4(0x125);}catch(_0x2af014){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x2af014),_0x2b82a4(0x125);}}function printHelp(){const _0x3f8c68=a0_0x1a61;console[_0x3f8c68(0xe0)]('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x3f8c68(0xe0)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0x3f8c68(0xe0)](_0x3f8c68(0x161)),console['log']('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x3f8c68(0xe0)](_0x3f8c68(0xe6)),console['log']('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console[_0x3f8c68(0xe0)]('\x0aExamples:'),console[_0x3f8c68(0xe0)](_0x3f8c68(0x169)),console[_0x3f8c68(0xe0)](_0x3f8c68(0x199));}const cliArgs=process[a0_0x40eb78(0xdd)][a0_0x40eb78(0xf6)](0x2),VERSION_FLAGS=new Set([a0_0x40eb78(0xc2),'-v','-V']),HELP_FLAGS=new Set([a0_0x40eb78(0x1bb),'-h']);cliArgs[a0_0x40eb78(0x1b5)](_0x157e4e=>VERSION_FLAGS[a0_0x40eb78(0xe5)](_0x157e4e))&&(console[a0_0x40eb78(0xe0)](a0_0x40eb78(0x1cc)+getPackageVersion()),process[a0_0x40eb78(0xfe)](0x0));cliArgs['some'](_0x33c525=>HELP_FLAGS[a0_0x40eb78(0xe5)](_0x33c525))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x23bfbc){const _0x47f1de=a0_0x40eb78;for(let _0x2916f2=0x0;_0x2916f2<cliArgs[_0x47f1de(0x148)];_0x2916f2++){const _0x40d10f=cliArgs[_0x2916f2];if(_0x40d10f[_0x47f1de(0xff)]('--'+_0x23bfbc+'='))return _0x40d10f[_0x47f1de(0xf6)](('--'+_0x23bfbc+'=')[_0x47f1de(0x148)]);if(_0x40d10f==='--'+_0x23bfbc&&_0x2916f2+0x1<cliArgs[_0x47f1de(0x148)])return cliArgs[_0x2916f2+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x40eb78(0x148)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x40eb78(0xe5)](arg)||HELP_FLAGS[a0_0x40eb78(0xe5)](arg))continue;if(arg[a0_0x40eb78(0xff)]('--api-key='))continue;if(arg===a0_0x40eb78(0x1a7)){i++;continue;}args[a0_0x40eb78(0xfb)](arg);}const WORKSPACE_ROOT=process['env'][a0_0x40eb78(0x1b0)]||process[a0_0x40eb78(0x183)][a0_0x40eb78(0x126)]||process[a0_0x40eb78(0x177)](),ENABLE_WORKSPACE_MODE=process[a0_0x40eb78(0x183)]['ENABLE_WORKSPACE_MODE']!==a0_0x40eb78(0x132),MORPH_API_KEY=getCliArg(a0_0x40eb78(0x13e))??process[a0_0x40eb78(0x183)]['MORPH_API_KEY'],MORPH_API_URL=process[a0_0x40eb78(0x183)][a0_0x40eb78(0x182)],MORPH_LARGE_APPLY=process[a0_0x40eb78(0x183)][a0_0x40eb78(0x146)]!=='false',MORPH_WARP_GREP_TIMEOUT=process[a0_0x40eb78(0x183)][a0_0x40eb78(0x174)]?parseInt(process[a0_0x40eb78(0x183)][a0_0x40eb78(0x174)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x40eb78(0x183)]['DISABLED_TOOLS']?new Set(process['env'][a0_0x40eb78(0x14a)][a0_0x40eb78(0x1af)](',')[a0_0x40eb78(0x1c4)](_0x22c6a8=>_0x22c6a8['trim']())['filter'](_0x17e983=>_0x17e983[a0_0x40eb78(0x148)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x40eb78(0x1b4)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES['has'](tool)&&console[a0_0x40eb78(0x14e)](a0_0x40eb78(0xcd)+tool+a0_0x40eb78(0x10f)+[...KNOWN_TOOL_NAMES][a0_0x40eb78(0xe4)](',\x20'));}console[a0_0x40eb78(0x14e)](a0_0x40eb78(0xf8)+[...DISABLED_TOOLS]['join'](',\x20'));}function a0_0x3b61(){const _0x3e212b=['warp_grep_complete','finish','repo_path','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','\x20disabled\x20via\x20DISABLED_TOOLS','FileNotFound','api-key','\x20valid\x20directories','added\x20','Parent\x20directory\x20does\x20not\x20exist:\x20','FileReadError',',\x20removed\x20','morph-warp-grep-v2.1','catch','MORPH_LARGE_APPLY','edit_file','length','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','DISABLED_TOOLS','inputSchema','grep\x20\x27','terminationReason','error','debug','github_codebase_search','\x20chars)','-\x20Read\x20file\x20`','File\x20read\x20error:','normalize','searchGitHub','125796KmnjRM','Unknown\x20tool:\x20','realpath','ms:','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','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','Warning:\x20Workspace\x20fallback\x20failed:\x20','terminated','Example\x20format:\x0a','assistant','roots','\x0aOptions:','message','composer.json','text','constructor','github_search_start','Morph\x20Edit\x20Preview','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','\x20\x20morph-mcp','file_path','Morph\x20Edit\x20','❌\x20Morph\x20Edit\x20Failed:\x20','morph-v3-fast','content','Invalid\x20Morph\x20API\x20key\x20format.\x20API\x20keys\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key.','Rules:\x0a','isArray','instruction','filter','MORPH_WARP_GREP_TIMEOUT','-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a','runWarpGrep_call','cwd','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','string','compaction_failed','-\x20Grepped\x20\x27','.vscode','linesRemoved','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','Use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code\x20blocks.\x20Include\x20just\x20enough\x20surrounding\x20context\x20to\x20locate\x20each\x20edit\x20precisely.\x0a\x0a','MORPH_API_URL','env','glob','timeout','changes','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','GitHub\x20search\x20failed:\x20','application/json','arguments','-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a','LocalRipgrepProvider','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','file_read_failed','20125uFRVcZ','setRequestHandler','substring','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','floor','user','search_type','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','path_validation_failed','toISOString','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','command','Invalid\x20arguments:\x20','Error\x20accessing\x20directory\x20','-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','Workspace\x20mode\x20enabled:\x20Using\x20','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','post','\x20(new\x20file)','provider_created','morph-','array','--api-key','owner_repo','lines','BinaryFile','response','<file\x20path=\x22','filePath','API\x20error\x20(auth/rate-limit)','split','WORKSPACE_ROOT','\x20as\x20allowed\x20directory','Unknown\x20error','data','size','some','go.mod','80597GlPAUk','tool_call_received','utf-8','describe','--help','homedir','Server\x20cannot\x20operate:\x20No\x20allowed\x20directories\x20available.\x20Server\x20was\x20started\x20without\x20command-line\x20directories\x20and\x20client\x20either\x20does\x20not\x20support\x20MCP\x20roots\x20protocol\x20or\x20provided\x20empty\x20roots.\x20Please\x20either:\x201)\x20Start\x20server\x20with\x20directory\x20arguments,\x202)\x20Use\x20a\x20client\x20that\x20supports\x20MCP\x20roots\x20protocol\x20and\x20provides\x20valid\x20root\x20directories,\x20or\x203)\x20Enable\x20workspace\x20mode\x20with\x20ENABLE_WORKSPACE_MODE=true.','readFile','sep','UnknownError','metadata','new_string','description','map','Tool\x20\x22','`\x20in\x20`','list_directory','basename','file','tool_calls','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','@morphllm/morphmcp\x20','stat','function','68790sPnTTK','0.2.0','parse','5WArbUS','glob\x20\x27','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','target_filepath','[could\x20not\x20read\x20file:\x20','TimeoutError','number','696IZyMzk','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','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.','tool_call_id','match','timed\x20out','Error:\x20','messages','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','access','Fallback:\x20Using\x20workspace\x20root\x20','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','Created\x20File','Authentication\x20failed:\x20Your\x20Morph\x20API\x20key\x20is\x20invalid\x20or\x20has\x20been\x20revoked.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key,\x20then\x20update\x20your\x20MCP\x20configuration.','.\x20Changes:\x20','instructions','\x0a</file>','now','EDIT_FILE','.git','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','target_file','branch','grep','--version','codebase_search','MCP','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','etimedout','RipgrepNotAvailable','source','node_modules','WarpGrepError','linesAdded','requiresApiKey','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','144FgaqbT','Tool\x20','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','\x20error(s)','\x22>\x0aError\x20reading\x20file:\x20','role','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','path','list_directory\x20','ENOENT','search_string','code','-\x20Glob\x20search\x20`','isDirectory','argv','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','grep_search','log','Parameters:\x0a','errors','SubToolError','join','has','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','completed_with_file_errors','read','safeParse','enum','CODEBASE_SEARCH','SymlinkError','includes','423810RxIJmG','listRoots','optional','https://morphllm.com/api/error-report','object','Cargo.toml','-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a','\x0a...\x20(truncated,\x20total:\x20','slice','code_edit','Disabled\x20tools:\x20','success','files','push','pattern','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.','exit','startsWith','dirname','WarpGrep\x20sub-tool\x20errors:\x20','github_url','oninitialized','completed','tool_call_complete','Bearer\x20','Fatal\x20error\x20running\x20server:','Error\x20running\x20fast\x20context\x20search:\x20','mcp-filesystem','stack','130254dfScOn','tsconfig.json','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','\x22.\x20Known\x20tools:\x20','toLowerCase','\x20is\x20not\x20a\x20directory','path_validation_resolved','name','../package.json','every','file_read_complete','resolve','.cursor','status','default',',\x20modified\x20','ReadError','RipgrepError','completionId','Failed\x20to\x20read\x20file:\x20','dryRun','path_validation_start','tool_call_error','warn','timings','unknown','PWD','Here\x20is\x20the\x20content\x20of\x20files:\x0a','package.json','GITHUB_CODEBASE_SEARCH','Warning:\x20','params','\x22>\x0a','ToolException','\x20-\x20','.\x20Path:\x20','Repository\x20identifier','592872usHJcC','false','indexOf','version','all','linesModified','payload'];a0_0x3b61=function(){return _0x3e212b;};return a0_0x3b61();}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x40eb78(0xff)]('sk-')&&!MORPH_API_KEY[a0_0x40eb78(0xff)](a0_0x40eb78(0x1a5))&&logMcpStderr(a0_0x40eb78(0x180));async function reportMorphError(_0x5b0853){const _0x395bbc=a0_0x40eb78;try{await a0_0x3c6dee[_0x395bbc(0x1a2)](_0x395bbc(0xf1),{..._0x5b0853,'timestamp':new Date()[_0x395bbc(0x198)](),'source':_0x5b0853[_0x395bbc(0xc8)]||_0x395bbc(0x109),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x5b0853['context']}},{'timeout':0x1388,'headers':{'Content-Type':_0x395bbc(0x189),'Authorization':_0x395bbc(0x106)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x30d3fa,_0x54405d){const _0x4e1908=a0_0x40eb78;if(_0x30d3fa&&typeof _0x30d3fa==='object'&&'status'in _0x30d3fa)return _0x30d3fa[_0x4e1908(0x119)];if(_0x30d3fa&&typeof _0x30d3fa==='object'&&'response'in _0x30d3fa)return _0x30d3fa[_0x4e1908(0x1ab)]?.['status'];const _0x52fcd1=_0x54405d['match'](/\b(401|429)\b/);return _0x52fcd1?parseInt(_0x52fcd1[0x1],0xa):null;}function handleMorphAPIError(_0x5bb34c){const _0x593fc7=a0_0x40eb78,_0x156cb8=_0x5bb34c instanceof Error?_0x5bb34c['message']:String(_0x5bb34c),_0x441f79=extractStatusCode(_0x5bb34c,_0x156cb8);switch(_0x441f79){case 0x191:return{'content':[{'type':_0x593fc7(0x164),'text':_0x593fc7(0x1e6)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x593fc7(0x164),'text':'Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.'}],'isError':!![]};default:return null;}}args[a0_0x40eb78(0x148)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x40eb78(0xc5)),logMcpStderr('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),logMcpStderr(a0_0x40eb78(0x179)),logMcpStderr(a0_0x40eb78(0x1da)),logMcpStderr(a0_0x40eb78(0x178)),logMcpStderr(a0_0x40eb78(0x1e4)));function normalizePath(_0x53fb89){const _0x142533=a0_0x40eb78;return a0_0x41cd8c[_0x142533(0x154)](_0x53fb89);}function expandHome(_0x59b5f8){const _0x41521e=a0_0x40eb78;if(_0x59b5f8['startsWith']('~/')||_0x59b5f8==='~')return a0_0x41cd8c[_0x41521e(0xe4)](a0_0x4b32b0[_0x41521e(0x1bc)](),_0x59b5f8[_0x41521e(0xf6)](0x1));return _0x59b5f8;}let allowedDirectories=await Promise[a0_0x40eb78(0x135)](args['map'](async _0x2eb477=>{const _0x1a5518=a0_0x40eb78,_0x46cca=expandHome(_0x2eb477),_0x27829b=a0_0x41cd8c[_0x1a5518(0x117)](_0x46cca);try{const _0x4dd584=await a0_0x198608[_0x1a5518(0x158)](_0x27829b);return normalizePath(_0x4dd584);}catch(_0x1da7ce){return normalizePath(_0x27829b);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x40eb78(0x148)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x40eb78(0xfb)](workspaceDir),logMcpStderr(a0_0x40eb78(0x1a0)+workspaceDir+a0_0x40eb78(0x1b1)));}catch(a0_0x1431c5){logMcpStderr(a0_0x40eb78(0x15a)+a0_0x1431c5);}async function detectWorkspaceRoot(_0x46fe36){const _0x25657e=a0_0x40eb78;let _0x382fcb=a0_0x41cd8c[_0x25657e(0x117)](_0x46fe36);const _0x31f53d=[_0x25657e(0x1ec),_0x25657e(0x17d),_0x25657e(0x128),_0x25657e(0xf3),'pyproject.toml',_0x25657e(0x1b6),_0x25657e(0x118),_0x25657e(0x10c),_0x25657e(0x163)];while(_0x382fcb!==a0_0x41cd8c[_0x25657e(0x100)](_0x382fcb)){for(const _0x44b50f of _0x31f53d){const _0x5ab363=a0_0x41cd8c[_0x25657e(0xe4)](_0x382fcb,_0x44b50f);try{return await a0_0x198608[_0x25657e(0x1e2)](_0x5ab363),normalizePath(_0x382fcb);}catch{}}_0x382fcb=a0_0x41cd8c[_0x25657e(0x100)](_0x382fcb);}return normalizePath(_0x46fe36);}await Promise[a0_0x40eb78(0x135)](args[a0_0x40eb78(0x1c4)](async _0x8ca957=>{const _0x30aeee=a0_0x40eb78;try{const _0x581547=await a0_0x198608[_0x30aeee(0x1cd)](expandHome(_0x8ca957));!_0x581547[_0x30aeee(0xdc)]()&&(logMcpStderr('Error:\x20'+_0x8ca957+_0x30aeee(0x111)),process['exit'](0x1));}catch(_0x29cca0){logMcpStderr(_0x30aeee(0x19c)+_0x8ca957+':',_0x29cca0),process[_0x30aeee(0xfe)](0x1);}}));async function validatePath(_0x298936){const _0x1c0518=a0_0x40eb78,_0x49829b=expandHome(_0x298936),_0x6b13f1=a0_0x41cd8c[_0x1c0518(0x117)](_0x49829b);logger[_0x1c0518(0x14f)](_0x1c0518(0xc4),_0x1c0518(0x121),{'raw_path':_0x298936,'absolute':_0x6b13f1});try{const _0x4289c5=await a0_0x198608[_0x1c0518(0x158)](_0x6b13f1);return logger[_0x1c0518(0x14f)](_0x1c0518(0xc4),'path_validation_resolved',{'resolved':_0x4289c5,'symlink':_0x4289c5!==_0x6b13f1}),_0x4289c5;}catch(_0x457dfb){if(_0x457dfb[_0x1c0518(0xda)]===_0x1c0518(0xd8)){const _0x1aa68c=a0_0x41cd8c[_0x1c0518(0x100)](_0x6b13f1);try{const _0x1dcf3d=await a0_0x198608['realpath'](_0x1aa68c),_0x53762a=a0_0x41cd8c[_0x1c0518(0xe4)](_0x1dcf3d,a0_0x41cd8c[_0x1c0518(0x1c8)](_0x6b13f1));return logger[_0x1c0518(0x14f)]('MCP',_0x1c0518(0x112),{'resolved':_0x53762a,'new_file':!![]}),_0x53762a;}catch{logger[_0x1c0518(0x14e)]('MCP',_0x1c0518(0x197),{'raw_path':_0x298936,'error':_0x1c0518(0x141)+_0x1aa68c});throw new Error(_0x1c0518(0x141)+_0x1aa68c);}}logger[_0x1c0518(0x14e)](_0x1c0518(0xc4),_0x1c0518(0x197),{'raw_path':_0x298936,'error':_0x457dfb[_0x1c0518(0x162)]});throw _0x457dfb;}}const MorphEditFileArgsSchema=z[a0_0x40eb78(0xf2)]({'path':z['string'](),'code_edit':z[a0_0x40eb78(0x17a)]()[a0_0x40eb78(0x1ba)](a0_0x40eb78(0x187)),'instruction':z[a0_0x40eb78(0x17a)]()[a0_0x40eb78(0x1ba)](a0_0x40eb78(0xd5)),'dryRun':z['boolean']()[a0_0x40eb78(0x11a)](![])[a0_0x40eb78(0x1ba)]('Preview\x20changes\x20without\x20applying\x20them.')}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x40eb78(0xfd),WarpGrepArgsSchema=z[a0_0x40eb78(0xf2)]({'search_string':z[a0_0x40eb78(0x17a)]()[a0_0x40eb78(0x1ba)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z['string']()[a0_0x40eb78(0x1ba)](a0_0x40eb78(0x15b)),'search_type':z[a0_0x40eb78(0xea)]([a0_0x40eb78(0x11a),a0_0x40eb78(0xc9)])['optional']()[a0_0x40eb78(0x1ba)]('Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.')}),WarpGrepGitHubArgsSchema=z[a0_0x40eb78(0xf2)]({'search_string':z[a0_0x40eb78(0x17a)]()[a0_0x40eb78(0x1ba)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x40eb78(0x17a)]()['optional']()[a0_0x40eb78(0x1ba)](a0_0x40eb78(0x1db)),'owner_repo':z[a0_0x40eb78(0x17a)]()['optional']()[a0_0x40eb78(0x1ba)](a0_0x40eb78(0x17f)),'branch':z[a0_0x40eb78(0x17a)]()[a0_0x40eb78(0xf0)]()[a0_0x40eb78(0x1ba)](a0_0x40eb78(0xde))}),CodebaseSearchArgsSchema=z[a0_0x40eb78(0xf2)]({'query':z['string']()[a0_0x40eb78(0x1ba)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x40eb78(0x17a)]()[a0_0x40eb78(0x1ba)](a0_0x40eb78(0x130)),'branch':z['string']()['optional']()[a0_0x40eb78(0x1ba)]('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z['string']()[a0_0x40eb78(0xf0)]()[a0_0x40eb78(0x1ba)]('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z[a0_0x40eb78(0x1a6)](z[a0_0x40eb78(0x17a)]())[a0_0x40eb78(0x11a)]([])['describe'](a0_0x40eb78(0xd0)),'limit':z[a0_0x40eb78(0x1d8)]()['optional']()[a0_0x40eb78(0x11a)](0xa)[a0_0x40eb78(0x1ba)]('Max\x20results\x20to\x20return')}),server=new Server({'name':'morph-mcp','version':a0_0x40eb78(0x1d0)},{'capabilities':{'tools':{}}});server[a0_0x40eb78(0x190)](ListToolsRequestSchema,async()=>{const _0x45e7fb=a0_0x40eb78,_0x1b7e58=[{'name':TOOL_NAMES['EDIT_FILE'],'description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES.**\x20Fast,\x20accurate,\x20and\x20prevents\x20context\x20pollution.\x20Especially\x20useful\x20when\x20making\x20multiple\x20edits\x20in\x20one\x20file:\x20describe\x20all\x20changes\x20in\x20a\x20single\x20call\x20and\x20the\x20semantic\x20edit\x20applies\x20them\x20all\x20at\x20once,\x20more\x20accurately\x20and\x20faster\x20than\x20sequential\x20edits.\x20Unlike\x20search-and-replace\x20or\x20patch\x20edits\x20which\x20do\x20narrow\x20edits\x20one\x20at\x20a\x20time,\x20with\x20this\x20tool\x20you\x20should\x20do\x20all\x20your\x20code\x20changes\x20in\x20one\x20go\x20separated\x20by\x20`//\x20...\x20existing\x20code\x20...`\x20markers.\x20This\x20saves\x20tokens\x20and\x20improves\x20performance\x20because\x20you\x20do\x20not\x20need\x20to\x20reread\x20files\x20before\x20edits.\x20All\x20three\x20parameters\x20are\x20required.\x0a\x0a'+_0x45e7fb(0xe1)+_0x45e7fb(0x175)+_0x45e7fb(0x18b)+_0x45e7fb(0x19d)+_0x45e7fb(0x181)+_0x45e7fb(0x15e)+_0x45e7fb(0x18d)+_0x45e7fb(0x170)+_0x45e7fb(0xf4)+'-\x20Preserve\x20exact\x20indentation\x0a'+'-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a'+_0x45e7fb(0x19e),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x45e7fb(0xeb)],'description':_0x45e7fb(0x149)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x45e7fb(0x168)+_0x45e7fb(0x1cb)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x57d626=_0x1b7e58['filter'](_0x130cbd=>{const _0x280f7b=_0x45e7fb;if(DISABLED_TOOLS[_0x280f7b(0xe5)](_0x130cbd[_0x280f7b(0x113)]))return console['error'](_0x280f7b(0xcf)+_0x130cbd[_0x280f7b(0x113)]+_0x280f7b(0x13c)),![];if(_0x280f7b(0xcc)in _0x130cbd&&_0x130cbd[_0x280f7b(0xcc)]&&!MORPH_API_KEY)return logMcpStderr(_0x280f7b(0x12a)+_0x130cbd[_0x280f7b(0x113)]+_0x280f7b(0x192)),![];return!![];});return{'tools':_0x57d626[_0x45e7fb(0x1c4)](_0x295ee3=>({'name':_0x295ee3['name'],'description':_0x295ee3[_0x45e7fb(0x1c3)],'inputSchema':_0x295ee3[_0x45e7fb(0x14b)]}))};}),server['setRequestHandler'](CallToolRequestSchema,async _0x14fb5c=>{const _0x31a3bd=a0_0x40eb78,{name:_0x2061d5,arguments:_0x59abb9}=_0x14fb5c[_0x31a3bd(0x12b)],_0x3cf95c=Date['now']();logger[_0x31a3bd(0x14f)](_0x31a3bd(0xc4),_0x31a3bd(0x1b8),{'tool':_0x2061d5,'args':_0x2061d5==='edit_file'?{'path':_0x59abb9?.[_0x31a3bd(0xd6)],'instruction':_0x59abb9?.[_0x31a3bd(0x172)]||_0x59abb9?.[_0x31a3bd(0x1e8)],'dryRun':_0x59abb9?.[_0x31a3bd(0x120)]}:_0x59abb9});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x31a3bd(0x164),'text':'No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.'}],'isError':!![]};if(!MORPH_API_KEY[_0x31a3bd(0xff)]('sk-')&&!MORPH_API_KEY[_0x31a3bd(0xff)](_0x31a3bd(0x1a5)))return{'content':[{'type':'text','text':_0x31a3bd(0x16f)}],'isError':!![]};if(DISABLED_TOOLS[_0x31a3bd(0xe5)](_0x2061d5))return{'content':[{'type':_0x31a3bd(0x164),'text':_0x31a3bd(0x1c5)+_0x2061d5+'\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.'}],'isError':![]};switch(_0x2061d5){case TOOL_NAMES[_0x31a3bd(0x1eb)]:{let _0x216beb=_0x59abb9;if(_0x216beb&&typeof _0x216beb===_0x31a3bd(0xf2)){if(!(_0x31a3bd(0xd6)in _0x216beb)){const _0x45a0aa=_0x216beb[_0x31a3bd(0xbf)]??_0x216beb[_0x31a3bd(0x1ad)]??_0x216beb[_0x31a3bd(0x1d5)]??_0x216beb[_0x31a3bd(0x16a)]??_0x216beb[_0x31a3bd(0x1c9)];if(_0x45a0aa)_0x216beb={..._0x216beb,'path':_0x45a0aa};}_0x31a3bd(0x1e8)in _0x216beb&&!(_0x31a3bd(0x172)in _0x216beb)&&(_0x216beb={..._0x216beb,'instruction':_0x216beb[_0x31a3bd(0x1e8)]});if(!('code_edit'in _0x216beb)){const _0x729abc=_0x216beb[_0x31a3bd(0xda)]??_0x216beb[_0x31a3bd(0x1c2)]??_0x216beb[_0x31a3bd(0x16e)]??_0x216beb['edit'];if(_0x729abc)_0x216beb={..._0x216beb,'code_edit':_0x729abc};}}const _0x1518ef=MorphEditFileArgsSchema[_0x31a3bd(0xe9)](_0x216beb);if(!_0x1518ef['success'])throw new Error(_0x31a3bd(0x196)+_0x1518ef[_0x31a3bd(0x14e)]);const _0x58ce77=await validatePath(_0x1518ef[_0x31a3bd(0x1b3)]['path']);let _0x1be44e=null,_0x5172cf=!![],_0x3baea4=null;try{_0x1be44e=await a0_0x198608[_0x31a3bd(0x1be)](_0x58ce77,_0x31a3bd(0x1b9)),logger['debug'](_0x31a3bd(0xc4),_0x31a3bd(0x116),{'path':_0x58ce77,'size_bytes':_0x1be44e[_0x31a3bd(0x148)]});}catch(_0x2130df){const _0x516d8a=_0x2130df['code'];_0x516d8a===_0x31a3bd(0xd8)?(_0x5172cf=![],_0x1be44e='',logger[_0x31a3bd(0x14f)]('MCP',_0x31a3bd(0x116),{'path':_0x58ce77,'exists':![]})):(_0x3baea4=_0x31a3bd(0x11f)+(_0x516d8a||'unknown')+_0x31a3bd(0x12e)+(_0x2130df instanceof Error?_0x2130df[_0x31a3bd(0x162)]:String(_0x2130df)),logger[_0x31a3bd(0x14e)]('MCP',_0x31a3bd(0x18e),{'path':_0x58ce77,'error':_0x3baea4}),logMcpStderr(_0x31a3bd(0x12a)+_0x3baea4));}let _0x40e544;try{const _0x6f918d=MORPH_API_KEY;if(!_0x6f918d)throw new Error(_0x31a3bd(0xbe));const _0x5a2c1e=a0_0x41cd8c['dirname'](_0x58ce77),_0x68c565=a0_0x41cd8c[_0x31a3bd(0x1c8)](_0x58ce77);logger[_0x31a3bd(0x14f)](_0x31a3bd(0xc4),'api_request_start',{'model':_0x31a3bd(0x16d),'path':_0x1518ef[_0x31a3bd(0x1b3)][_0x31a3bd(0xd6)],'instruction_len':_0x1518ef[_0x31a3bd(0x1b3)][_0x31a3bd(0x172)]['length'],'code_edit_len':_0x1518ef[_0x31a3bd(0x1b3)][_0x31a3bd(0xf7)][_0x31a3bd(0x148)],'original_code_len':_0x1be44e?.[_0x31a3bd(0x148)]??0x0,'dry_run':_0x1518ef[_0x31a3bd(0x1b3)]['dryRun']});const _0x37a49c=Date[_0x31a3bd(0x1ea)](),_0x55f78a=await executeEditFile({'target_filepath':_0x68c565,'code_edit':_0x1518ef['data'][_0x31a3bd(0xf7)],'instruction':_0x1518ef[_0x31a3bd(0x1b3)][_0x31a3bd(0x172)]},{'morphApiKey':_0x6f918d,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x5a2c1e,'autoWrite':!_0x1518ef['data'][_0x31a3bd(0x120)],'generateUdiff':![],'debug':![]}),_0x165d9f=Date['now']()-_0x37a49c;_0x40e544=_0x55f78a[_0x31a3bd(0x11e)];if(!_0x55f78a[_0x31a3bd(0xf9)])throw new Error(_0x55f78a[_0x31a3bd(0x14e)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x11458b=_0x55f78a[_0x31a3bd(0x186)],_0x497ee3=_0x31a3bd(0x140)+_0x11458b['linesAdded']+_0x31a3bd(0x143)+_0x11458b[_0x31a3bd(0x17e)]+_0x31a3bd(0x11b)+_0x11458b[_0x31a3bd(0x136)];logger[_0x31a3bd(0x14f)](_0x31a3bd(0xc4),_0x31a3bd(0x105),{'tool':_0x31a3bd(0x147),'success':!![],'latency_ms':Date['now']()-_0x3cf95c,'edit_latency_ms':_0x165d9f,'changes':{'added':_0x11458b[_0x31a3bd(0xcb)],'removed':_0x11458b[_0x31a3bd(0x17e)],'modified':_0x11458b['linesModified']},'completion_id':_0x40e544});if(_0x1518ef['data'][_0x31a3bd(0x120)])return{'content':[{'type':_0x31a3bd(0x164),'text':_0x31a3bd(0x167)+(_0x5172cf?'':_0x31a3bd(0x1a3))+':\x20'+_0x1518ef[_0x31a3bd(0x1b3)][_0x31a3bd(0x172)]+_0x31a3bd(0x1e7)+_0x497ee3+_0x31a3bd(0x12f)+_0x1518ef[_0x31a3bd(0x1b3)][_0x31a3bd(0xd6)]+'.'}]};return{'content':[{'type':_0x31a3bd(0x164),'text':_0x31a3bd(0x16b)+(_0x5172cf?'Applied':_0x31a3bd(0x1e5))+':\x20'+_0x1518ef[_0x31a3bd(0x1b3)]['instruction']+_0x31a3bd(0x1e7)+_0x497ee3+_0x31a3bd(0x12f)+_0x1518ef[_0x31a3bd(0x1b3)][_0x31a3bd(0xd6)]+'.'}]};}catch(_0x5429fa){const _0x3b0e25=handleMorphAPIError(_0x5429fa);if(_0x3b0e25)return logger[_0x31a3bd(0x14e)]('MCP','tool_call_error',{'tool':'edit_file','error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date[_0x31a3bd(0x1ea)]()-_0x3cf95c}),_0x3b0e25;const _0x20656a=_0x5429fa instanceof Error?_0x5429fa[_0x31a3bd(0x162)]:String(_0x5429fa);return logger[_0x31a3bd(0x14e)](_0x31a3bd(0xc4),'tool_call_error',{'tool':'edit_file','error':_0x20656a,'path':_0x1518ef[_0x31a3bd(0x1b3)][_0x31a3bd(0xd6)],'validated_path':_0x58ce77,'latency_ms':Date[_0x31a3bd(0x1ea)]()-_0x3cf95c,'stack':_0x5429fa instanceof Error?_0x5429fa[_0x31a3bd(0x10a)]:undefined}),reportMorphError({'error_message':_0x20656a,'error_type':_0x5429fa instanceof Error?_0x5429fa[_0x31a3bd(0x165)]['name']:_0x31a3bd(0x1c0),'context':{'tool':_0x31a3bd(0x147),'completion_id':_0x40e544,'file_path':_0x1518ef[_0x31a3bd(0x1b3)][_0x31a3bd(0xd6)],'validated_path':_0x58ce77,'instruction':_0x1518ef[_0x31a3bd(0x1b3)][_0x31a3bd(0x172)],'model':MORPH_LARGE_APPLY?'morph-v3-large':_0x31a3bd(0x16d),'dry_run':_0x1518ef[_0x31a3bd(0x1b3)][_0x31a3bd(0x120)],'file_exists':_0x5172cf,'file_read_error':_0x3baea4,'file_readable':_0x1be44e!==null,'request_content':{'path':_0x1518ef[_0x31a3bd(0x1b3)][_0x31a3bd(0xd6)],'code_edit':_0x1518ef['data'][_0x31a3bd(0xf7)],'instruction':_0x1518ef[_0x31a3bd(0x1b3)]['instruction'],'original_code':_0x1be44e!==null?_0x1be44e[_0x31a3bd(0x148)]>0xc350?_0x1be44e['substring'](0x0,0xc350)+_0x31a3bd(0xf5)+_0x1be44e[_0x31a3bd(0x148)]+_0x31a3bd(0x151):_0x1be44e:_0x31a3bd(0x1d6)+(_0x3baea4||'unknown\x20error')+']','original_code_length':_0x1be44e?.[_0x31a3bd(0x148)]??0x0,'model':MORPH_LARGE_APPLY?'morph-v3-large':_0x31a3bd(0x16d),'dry_run':_0x1518ef[_0x31a3bd(0x1b3)][_0x31a3bd(0x120)]}},'stack_trace':_0x5429fa instanceof Error?_0x5429fa[_0x31a3bd(0x10a)]:undefined,'source':'mcp-filesystem'})['catch'](()=>{}),{'content':[{'type':_0x31a3bd(0x164),'text':_0x31a3bd(0x16c)+_0x20656a}],'isError':!![]};}}case TOOL_NAMES[_0x31a3bd(0xeb)]:{const _0x351f2f=WarpGrepArgsSchema[_0x31a3bd(0xe9)](_0x59abb9);if(!_0x351f2f[_0x31a3bd(0xf9)])return{'content':[{'type':_0x31a3bd(0x164),'text':_0x31a3bd(0x19b)+_0x351f2f['error']}],'isError':!![]};const _0x4d1d6f=_0x35a321=>{const _0x54804c=_0x31a3bd,_0x43624d=[];for(const _0x50c48a of _0x35a321||[]){if(_0x50c48a[_0x54804c(0xd3)]===_0x54804c(0x15f)&&Array['isArray'](_0x50c48a[_0x54804c(0x1ca)]))for(const _0x48826c of _0x50c48a[_0x54804c(0x1ca)]){try{const _0x3abcab=_0x48826c['function']?.[_0x54804c(0x113)],_0x29fb0b=JSON[_0x54804c(0x1d1)](_0x48826c[_0x54804c(0x1ce)]?.[_0x54804c(0x18a)]||'{}');if(_0x3abcab===_0x54804c(0xdf))_0x43624d[_0x54804c(0xfb)](_0x54804c(0x14c)+_0x29fb0b[_0x54804c(0xfc)]+'\x27\x20'+(_0x29fb0b[_0x54804c(0xd6)]||'.'));else{if(_0x3abcab==='read')_0x43624d[_0x54804c(0xfb)]('read\x20'+_0x29fb0b[_0x54804c(0xd6)]);else{if(_0x3abcab===_0x54804c(0x1c7))_0x43624d[_0x54804c(0xfb)](_0x54804c(0xd7)+(_0x29fb0b['command']||'.'));else{if(_0x3abcab===_0x54804c(0x184))_0x43624d[_0x54804c(0xfb)](_0x54804c(0x1d3)+_0x29fb0b[_0x54804c(0xfc)]+'\x27\x20'+(_0x29fb0b[_0x54804c(0xd6)]||'.'));else _0x3abcab===_0x54804c(0x139)&&_0x43624d['push']('finish');}}}}catch{}}}return _0x43624d;},_0x3cc303=_0xeb47d3=>{const _0x1c9bda=_0x31a3bd,_0x526027=[];if(!_0xeb47d3||!Array[_0x1c9bda(0x171)](_0xeb47d3))return _0x526027;const _0x4a184c=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x1c9bda(0x13d),'tool':_0x1c9bda(0xe8)},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x1c9bda(0xe8)},{'pattern':/\[READ ERROR\]/,'error_type':_0x1c9bda(0x11c),'tool':_0x1c9bda(0xe8)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x1c9bda(0x1aa),'tool':_0x1c9bda(0xe8)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x1c9bda(0x11d),'tool':'grep'},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x1c9bda(0xc7),'tool':_0x1c9bda(0xc1)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x1c9bda(0x1aa),'tool':_0x1c9bda(0xe8)},{'pattern':/\[SYMLINK\]/,'error_type':_0x1c9bda(0xec),'tool':'read'},{'pattern':/not a text file/,'error_type':_0x1c9bda(0x1aa),'tool':_0x1c9bda(0xe8)},{'pattern':/symbolic link/,'error_type':_0x1c9bda(0xec),'tool':_0x1c9bda(0xe8)},{'pattern':/Error reading file:/,'error_type':_0x1c9bda(0x11c),'tool':_0x1c9bda(0xe8)},{'pattern':/status="error"/,'error_type':_0x1c9bda(0x12d),'tool':_0x1c9bda(0x125)}];let _0x1c7060=0x0;for(const _0x2fdc88 of _0xeb47d3){_0x2fdc88[_0x1c9bda(0xd3)]==='assistant'&&Array[_0x1c9bda(0x171)](_0x2fdc88[_0x1c9bda(0x1ca)])&&_0x1c7060++;const _0x1e6563=_0x2fdc88[_0x1c9bda(0x16e)];if((_0x2fdc88[_0x1c9bda(0xd3)]==='tool'||_0x2fdc88[_0x1c9bda(0xd3)]===_0x1c9bda(0x194))&&_0x1e6563&&typeof _0x1e6563===_0x1c9bda(0x17a))for(const {pattern:_0xe1dccc,error_type:_0x436bd6,tool:_0x244342}of _0x4a184c){const _0x3a4535=_0x1e6563[_0x1c9bda(0x1dd)](new RegExp(_0xe1dccc[_0x1c9bda(0xc8)],'g'));if(_0x3a4535)for(const _0x4bfad1 of _0x3a4535){const _0x24edf9=_0x1e6563[_0x1c9bda(0x133)](_0x4bfad1),_0x25f1ed=_0x1e6563['substring'](_0x24edf9,Math['min'](_0x24edf9+0xc8,_0x1e6563[_0x1c9bda(0x148)]));_0x526027['push']({'tool':_0x244342,'error_type':_0x436bd6,'error_message':_0x25f1ed['split']('\x0a')[0x0],'turn':_0x1c7060});}}}return _0x526027;};try{const _0xd1b741=a0_0x41cd8c[_0x31a3bd(0x117)](_0x351f2f[_0x31a3bd(0x1b3)][_0x31a3bd(0x13a)]),_0x32605d=_0x351f2f[_0x31a3bd(0x1b3)][_0x31a3bd(0x195)],_0x4ffd4e=_0x32605d===_0x31a3bd(0xc9)?{'allowNames':[_0x31a3bd(0xc9)]}:undefined,_0x15dcc6=new LocalRipgrepProvider(_0xd1b741,undefined,_0x4ffd4e);logger[_0x31a3bd(0x14f)]('MCP',_0x31a3bd(0x1a4),{'type':_0x31a3bd(0x18c),'repo_root':_0xd1b741,'search_type':_0x32605d||'default'}),logger[_0x31a3bd(0x14f)]('MCP','warp_grep_start',{'query':_0x351f2f[_0x31a3bd(0x1b3)][_0x31a3bd(0xd9)],'repo_root':_0xd1b741,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x342f13=Date[_0x31a3bd(0x1ea)](),_0x3896c9=await runWarpGrep({'searchTerm':_0x351f2f[_0x31a3bd(0x1b3)][_0x31a3bd(0xd9)],'repoRoot':_0xd1b741,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x15dcc6,'search_type':_0x32605d}),_0x397a82=Date[_0x31a3bd(0x1ea)]()-_0x342f13,_0x3f1938=_0x3896c9[_0x31a3bd(0x139)]?.[_0x31a3bd(0x1c1)]?.[_0x31a3bd(0xfa)]?.['length']??0x0;logger[_0x31a3bd(0x14f)]('MCP',_0x31a3bd(0x138),{'termination':_0x3896c9[_0x31a3bd(0x14d)],'turns':_0x3896c9['timings']?.['turns']??0x0,'files_found':_0x3f1938,'latency_ms':_0x397a82});const _0x27bac9=_0x3cc303(_0x3896c9[_0x31a3bd(0x1e0)]);_0x27bac9[_0x31a3bd(0x148)]>0x0&&reportMorphError({'error_message':_0x31a3bd(0x101)+_0x27bac9[_0x31a3bd(0x148)]+_0x31a3bd(0xd1),'error_type':_0x31a3bd(0xe3),'level':_0x31a3bd(0x123),'tool':_0x31a3bd(0xc3),'context':{'repo_path':_0x351f2f[_0x31a3bd(0x1b3)][_0x31a3bd(0x13a)],'query':_0x351f2f[_0x31a3bd(0x1b3)][_0x31a3bd(0xd9)],'model':'morph-warp-grep-v2.1','termination_reason':_0x3896c9['terminationReason'],'sub_tool_errors':_0x27bac9,'timings':_0x3896c9[_0x31a3bd(0x124)],'tool_calls':_0x4d1d6f(_0x3896c9[_0x31a3bd(0x1e0)]),'messages':_0x3896c9[_0x31a3bd(0x1e0)]?.['map'](_0x1969ca=>({'role':_0x1969ca[_0x31a3bd(0xd3)],'content':_0x1969ca[_0x31a3bd(0x16e)],..._0x1969ca[_0x31a3bd(0x1ca)]?{'tool_calls':_0x1969ca[_0x31a3bd(0x1ca)][_0x31a3bd(0x148)]}:{},..._0x1969ca[_0x31a3bd(0x1dc)]?{'tool_call_id':_0x1969ca[_0x31a3bd(0x1dc)]}:{}}))},'source':_0x31a3bd(0x109)})['catch'](()=>{});let _0x4037bc='';if(_0x3896c9['terminationReason']===_0x31a3bd(0x104)&&_0x3896c9['finish']?.[_0x31a3bd(0x1c1)]?.[_0x31a3bd(0xfa)]){const _0x5b2085=_0x3896c9[_0x31a3bd(0x139)][_0x31a3bd(0x1c1)][_0x31a3bd(0xfa)];if(_0x5b2085[_0x31a3bd(0x148)]===0x0)return _0x4037bc=_0x3896c9[_0x31a3bd(0x139)][_0x31a3bd(0x137)]||_0x31a3bd(0xd4),{'content':[{'type':_0x31a3bd(0x164),'text':_0x4037bc}]};const _0x3012d7=[],_0x1b3835=[_0x31a3bd(0x1d4)];for(const _0x11f62b of _0x3896c9[_0x31a3bd(0x1e0)]){if(_0x11f62b[_0x31a3bd(0xd3)]===_0x31a3bd(0x15f)&&Array[_0x31a3bd(0x171)](_0x11f62b[_0x31a3bd(0x1ca)]))for(const _0x38c7dc of _0x11f62b['tool_calls']){try{const _0x313c7f=_0x38c7dc['function']?.[_0x31a3bd(0x113)],_0x564284=JSON[_0x31a3bd(0x1d1)](_0x38c7dc[_0x31a3bd(0x1ce)]?.[_0x31a3bd(0x18a)]||'{}');if(_0x313c7f===_0x31a3bd(0xdf))_0x1b3835[_0x31a3bd(0xfb)](_0x31a3bd(0x17c)+_0x564284[_0x31a3bd(0xfc)]+'\x27\x20in\x20`'+(_0x564284[_0x31a3bd(0xd6)]||'.')+'`');else{if(_0x313c7f===_0x31a3bd(0xe8))_0x1b3835[_0x31a3bd(0xfb)](_0x31a3bd(0x152)+_0x564284[_0x31a3bd(0xd6)]+'`');else{if(_0x313c7f==='list_directory')_0x1b3835['push']('-\x20Listed\x20directory\x20`'+(_0x564284[_0x31a3bd(0x19a)]||'.')+'`');else _0x313c7f===_0x31a3bd(0x184)&&_0x1b3835[_0x31a3bd(0xfb)](_0x31a3bd(0xdb)+_0x564284[_0x31a3bd(0xfc)]+_0x31a3bd(0x1c6)+(_0x564284['path']||'.')+'`');}}}catch{}}}_0x3012d7['push'](_0x1b3835[_0x31a3bd(0xe4)]('\x0a'));const _0x17b8cc=['','Relevant\x20context\x20found:'];for(const _0x3a2262 of _0x5b2085){if(_0x3a2262['lines']==='*')_0x17b8cc[_0x31a3bd(0xfb)]('-\x20'+_0x3a2262['path']+':*');else{if(Array[_0x31a3bd(0x171)](_0x3a2262[_0x31a3bd(0x1a9)])){const _0x9f6b89=_0x3a2262[_0x31a3bd(0x1a9)][_0x31a3bd(0x1c4)](([_0x51e895,_0x5464a1])=>{if(_0x51e895===_0x5464a1)return''+_0x51e895;return _0x51e895+'-'+_0x5464a1;});_0x17b8cc[_0x31a3bd(0xfb)]('-\x20'+_0x3a2262[_0x31a3bd(0xd6)]+':'+_0x9f6b89[_0x31a3bd(0xe4)](','));}else _0x17b8cc[_0x31a3bd(0xfb)]('-\x20'+_0x3a2262[_0x31a3bd(0xd6)]+':*');}}_0x17b8cc[_0x31a3bd(0xfb)](''),_0x3012d7[_0x31a3bd(0xfb)](_0x17b8cc['join']('\x0a')),_0x3012d7['push'](_0x31a3bd(0x127));const _0xf1a98c=[],_0x528b0a=[];for(const _0x25f5a9 of _0x5b2085){let _0x560cbf=a0_0x41cd8c[_0x31a3bd(0x117)](_0x351f2f[_0x31a3bd(0x1b3)][_0x31a3bd(0x13a)],_0x25f5a9[_0x31a3bd(0xd6)]),_0x2ada8c=null,_0x48a037=null;try{_0x2ada8c=await a0_0x198608['readFile'](_0x560cbf,{'encoding':_0x31a3bd(0x1b9)});}catch(_0x580044){const _0x33cd3=fixPathRepetition(_0x560cbf);if(_0x33cd3)try{_0x2ada8c=await a0_0x198608['readFile'](_0x33cd3,{'encoding':_0x31a3bd(0x1b9)}),_0x560cbf=_0x33cd3;}catch{_0x48a037=_0x580044 instanceof Error?_0x580044:new Error(String(_0x580044));}else _0x48a037=_0x580044 instanceof Error?_0x580044:new Error(String(_0x580044));}if(_0x2ada8c!==null){const _0x20d295=_0x2ada8c['split'](/\r?\n/),_0x66bbfd=[];if(_0x25f5a9['lines']==='*'||!Array[_0x31a3bd(0x171)](_0x25f5a9[_0x31a3bd(0x1a9)]))for(let _0x226f35=0x1;_0x226f35<=_0x20d295[_0x31a3bd(0x148)];_0x226f35++){const _0x453e8c=_0x20d295[_0x226f35-0x1];_0x66bbfd[_0x31a3bd(0xfb)](_0x226f35+'|\x20'+_0x453e8c);}else for(const [_0x413547,_0x5c2e09]of _0x25f5a9['lines']){_0x66bbfd[_0x31a3bd(0x148)]>0x0&&_0x66bbfd[_0x31a3bd(0xfb)]('');for(let _0x5ac1dd=_0x413547;_0x5ac1dd<=_0x5c2e09&&_0x5ac1dd<=_0x20d295[_0x31a3bd(0x148)];_0x5ac1dd++){const _0x3b1410=_0x20d295[_0x5ac1dd-0x1];_0x66bbfd['push'](_0x5ac1dd+'|\x20'+_0x3b1410);}}_0x528b0a[_0x31a3bd(0xfb)]({'path':_0x25f5a9[_0x31a3bd(0xd6)],'content':_0x66bbfd['join']('\x0a')});}else _0xf1a98c[_0x31a3bd(0xfb)](_0x31a3bd(0x1ac)+_0x25f5a9[_0x31a3bd(0xd6)]+_0x31a3bd(0xd2)+(_0x48a037?.[_0x31a3bd(0x162)]||_0x31a3bd(0x1b2))+_0x31a3bd(0x1e9));}try{const _0x1386ab=await compactFileContexts(_0x528b0a,_0x351f2f['data']['search_string'],MORPH_API_KEY,MORPH_API_URL);for(const _0x5e739d of _0x1386ab){_0xf1a98c['push']('<file\x20path=\x22'+_0x5e739d[_0x31a3bd(0xd6)]+_0x31a3bd(0x12c)+_0x5e739d[_0x31a3bd(0x16e)]+_0x31a3bd(0x1e9));}}catch(_0x2dc928){logger[_0x31a3bd(0x123)]('MCP',_0x31a3bd(0x17b),{'error':_0x2dc928 instanceof Error?_0x2dc928[_0x31a3bd(0x162)]:String(_0x2dc928),'files_count':_0x528b0a['length']});for(const _0x2490e3 of _0x528b0a){_0xf1a98c[_0x31a3bd(0xfb)](_0x31a3bd(0x1ac)+_0x2490e3['path']+'\x22>\x0a'+_0x2490e3[_0x31a3bd(0x16e)]+_0x31a3bd(0x1e9));}}_0x3012d7['push'](_0xf1a98c[_0x31a3bd(0xe4)]('\x0a\x0a')),_0x4037bc=_0x3012d7[_0x31a3bd(0xe4)]('\x0a');const _0x4dcd92=_0x3896c9[_0x31a3bd(0xe2)]?.[_0x31a3bd(0x173)](_0x37b2b4=>_0x37b2b4[_0x31a3bd(0x162)]?.[_0x31a3bd(0xff)](_0x31a3bd(0x153)))||[];if(_0x4dcd92[_0x31a3bd(0x148)]>0x0){const _0x44a57d=_0x4dcd92[_0x31a3bd(0x1c4)](_0x43c9d0=>_0x43c9d0[_0x31a3bd(0x162)])[_0x31a3bd(0xe4)](';\x20');reportMorphError({'error_message':_0x44a57d,'error_type':_0x31a3bd(0x142),'context':{'tool':_0x31a3bd(0xc3),'repo_path':_0x351f2f[_0x31a3bd(0x1b3)][_0x31a3bd(0x13a)],'query':_0x351f2f['data'][_0x31a3bd(0xd9)],'model':_0x31a3bd(0x144),'termination_reason':_0x31a3bd(0xe7),'error_count':_0x4dcd92[_0x31a3bd(0x148)],'is_timeout':![],'timings':_0x3896c9[_0x31a3bd(0x124)],'files_attempted':_0x5b2085[_0x31a3bd(0x1c4)](_0x1edcf5=>({'path':_0x1edcf5[_0x31a3bd(0xd6)],'lines':_0x1edcf5['lines']})),'tool_calls':_0x4d1d6f(_0x3896c9[_0x31a3bd(0x1e0)]),'messages':_0x3896c9[_0x31a3bd(0x1e0)]?.[_0x31a3bd(0x1c4)](_0x26f160=>({'role':_0x26f160[_0x31a3bd(0xd3)],'content':_0x26f160[_0x31a3bd(0x16e)],..._0x26f160['tool_calls']?{'tool_calls':_0x26f160[_0x31a3bd(0x1ca)][_0x31a3bd(0x148)]}:{},..._0x26f160[_0x31a3bd(0x1dc)]?{'tool_call_id':_0x26f160[_0x31a3bd(0x1dc)]}:{}})),'request_content':{'query':_0x351f2f['data'][_0x31a3bd(0xd9)],'repo_path':_0x351f2f[_0x31a3bd(0x1b3)][_0x31a3bd(0x13a)],'repoRoot':a0_0x41cd8c[_0x31a3bd(0x117)](_0x351f2f[_0x31a3bd(0x1b3)][_0x31a3bd(0x13a)]),'model':_0x31a3bd(0x144)}},'source':_0x31a3bd(0x109)})[_0x31a3bd(0x145)](()=>{});}}else{if(_0x3896c9[_0x31a3bd(0x14d)]===_0x31a3bd(0x15d)&&_0x3896c9[_0x31a3bd(0xe2)][_0x31a3bd(0x148)]>0x0){const _0x69fb13=_0x3896c9[_0x31a3bd(0xe2)]['map'](_0x2708bf=>_0x2708bf[_0x31a3bd(0x162)])[_0x31a3bd(0xe4)](';\x20');_0x4037bc=_0x31a3bd(0x1df)+_0x69fb13;const _0x32c5e2=_0x69fb13[_0x31a3bd(0x110)]()[_0x31a3bd(0xed)](_0x31a3bd(0x185))||_0x69fb13[_0x31a3bd(0x110)]()[_0x31a3bd(0xed)](_0x31a3bd(0x1de))||_0x69fb13[_0x31a3bd(0x110)]()['includes'](_0x31a3bd(0xc6)),_0x420617=_0x3896c9[_0x31a3bd(0x139)]?.[_0x31a3bd(0x1c1)]?.['files'],_0x3e0e6d=_0x3896c9['errors'][0x0];reportMorphError({'error_message':_0x69fb13,'error_type':_0x32c5e2?'TimeoutError':_0x3e0e6d?.[_0x31a3bd(0x165)]?.[_0x31a3bd(0x113)]||_0x31a3bd(0xca),'context':{'tool':_0x31a3bd(0xc3),'repo_path':_0x351f2f[_0x31a3bd(0x1b3)][_0x31a3bd(0x13a)],'query':_0x351f2f[_0x31a3bd(0x1b3)][_0x31a3bd(0xd9)],'model':_0x31a3bd(0x144),'termination_reason':_0x3896c9[_0x31a3bd(0x14d)],'error_count':_0x3896c9[_0x31a3bd(0xe2)][_0x31a3bd(0x148)],'is_timeout':_0x32c5e2,'timings':_0x3896c9[_0x31a3bd(0x124)],'files_attempted':_0x420617?.[_0x31a3bd(0x1c4)](_0x474d41=>({'path':_0x474d41[_0x31a3bd(0xd6)],'lines':_0x474d41[_0x31a3bd(0x1a9)]})),'tool_calls':_0x4d1d6f(_0x3896c9[_0x31a3bd(0x1e0)]),'messages':_0x3896c9[_0x31a3bd(0x1e0)]?.[_0x31a3bd(0x1c4)](_0x52c6b5=>({'role':_0x52c6b5[_0x31a3bd(0xd3)],'content':_0x52c6b5[_0x31a3bd(0x16e)],..._0x52c6b5['tool_calls']?{'tool_calls':_0x52c6b5['tool_calls'][_0x31a3bd(0x148)]}:{},..._0x52c6b5['tool_call_id']?{'tool_call_id':_0x52c6b5['tool_call_id']}:{}})),'request_content':{'query':_0x351f2f[_0x31a3bd(0x1b3)]['search_string'],'repo_path':_0x351f2f[_0x31a3bd(0x1b3)][_0x31a3bd(0x13a)],'repoRoot':a0_0x41cd8c[_0x31a3bd(0x117)](_0x351f2f[_0x31a3bd(0x1b3)]['repo_path']),'model':_0x31a3bd(0x144)}},'stack_trace':_0x3e0e6d?.['stack']||undefined,'source':_0x31a3bd(0x109)})[_0x31a3bd(0x145)](()=>{});}else _0x4037bc=_0x31a3bd(0x1a1);}return{'content':[{'type':_0x31a3bd(0x164),'text':_0x4037bc}]};}catch(_0x262fea){const _0x4b121=handleMorphAPIError(_0x262fea);if(_0x4b121)return logger[_0x31a3bd(0x14e)](_0x31a3bd(0xc4),_0x31a3bd(0x122),{'tool':_0x31a3bd(0xc3),'error':_0x31a3bd(0x1ae),'latency_ms':Date['now']()-_0x3cf95c}),_0x4b121;const _0x5bab25=_0x262fea instanceof Error?_0x262fea[_0x31a3bd(0x162)]:String(_0x262fea);logger[_0x31a3bd(0x14e)](_0x31a3bd(0xc4),'tool_call_error',{'tool':_0x31a3bd(0xc3),'error':_0x5bab25,'repo_path':_0x351f2f[_0x31a3bd(0x1b3)][_0x31a3bd(0x13a)],'query':_0x351f2f[_0x31a3bd(0x1b3)]['search_string'],'latency_ms':Date[_0x31a3bd(0x1ea)]()-_0x3cf95c});const _0x51f976=_0x5bab25[_0x31a3bd(0x110)]()['includes'](_0x31a3bd(0x185))||_0x5bab25[_0x31a3bd(0x110)]()[_0x31a3bd(0xed)](_0x31a3bd(0x1de))||_0x5bab25[_0x31a3bd(0x110)]()['includes'](_0x31a3bd(0xc6))||_0x262fea instanceof Error&&_0x262fea[_0x31a3bd(0x113)]===_0x31a3bd(0x1d7);return reportMorphError({'error_message':_0x5bab25,'error_type':_0x51f976?_0x31a3bd(0x1d7):_0x262fea instanceof Error?_0x262fea[_0x31a3bd(0x165)]['name']:_0x31a3bd(0x1c0),'context':{'tool':_0x31a3bd(0xc3),'repo_path':_0x351f2f[_0x31a3bd(0x1b3)][_0x31a3bd(0x13a)],'query':_0x351f2f[_0x31a3bd(0x1b3)][_0x31a3bd(0xd9)],'model':_0x31a3bd(0x144),'is_timeout':_0x51f976,'exception_phase':_0x31a3bd(0x176),'request_content':{'query':_0x351f2f['data'][_0x31a3bd(0xd9)],'repo_path':_0x351f2f[_0x31a3bd(0x1b3)][_0x31a3bd(0x13a)],'repoRoot':a0_0x41cd8c['resolve'](_0x351f2f['data'][_0x31a3bd(0x13a)]),'model':_0x31a3bd(0x144)}},'stack_trace':_0x262fea instanceof Error?_0x262fea[_0x31a3bd(0x10a)]:undefined,'source':_0x31a3bd(0x109)})[_0x31a3bd(0x145)](()=>{}),{'content':[{'type':_0x31a3bd(0x164),'text':_0x31a3bd(0x108)+_0x5bab25}],'isError':![]};}}case TOOL_NAMES[_0x31a3bd(0x129)]:{const _0x539188=WarpGrepGitHubArgsSchema[_0x31a3bd(0xe9)](_0x59abb9);if(!_0x539188[_0x31a3bd(0xf9)])return{'content':[{'type':_0x31a3bd(0x164),'text':_0x31a3bd(0x19b)+_0x539188[_0x31a3bd(0x14e)]}],'isError':!![]};const _0xed5cc8=_0x539188[_0x31a3bd(0x1b3)][_0x31a3bd(0x102)]||_0x539188[_0x31a3bd(0x1b3)][_0x31a3bd(0x1a8)];if(!_0xed5cc8)return{'content':[{'type':_0x31a3bd(0x164),'text':_0x31a3bd(0x10e)}],'isError':!![]};const _0x2b3ade=MORPH_API_KEY;if(!_0x2b3ade)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x325492=Date[_0x31a3bd(0x1ea)]();logger[_0x31a3bd(0x14f)]('MCP',_0x31a3bd(0x166),{'identifier':_0xed5cc8,'query':_0x539188[_0x31a3bd(0x1b3)][_0x31a3bd(0xd9)],'branch':_0x539188['data'][_0x31a3bd(0xc0)]});try{const _0xf6df82=new WarpGrepClient({'morphApiKey':_0x2b3ade,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x26574e=await _0xf6df82[_0x31a3bd(0x155)]({'searchTerm':_0x539188['data'][_0x31a3bd(0xd9)],'github':_0xed5cc8,'branch':_0x539188[_0x31a3bd(0x1b3)][_0x31a3bd(0xc0)]}),_0x37082d=Date[_0x31a3bd(0x1ea)]()-_0x325492;logMcpStderr('[github_codebase_search]\x20Done\x20in\x20'+_0x37082d+'ms.\x20Success:\x20'+_0x26574e['success']);const _0x5933c5=formatResult(_0x26574e);return{'content':[{'type':'text','text':_0x5933c5}]};}catch(_0x4944aa){const _0x1a2a4e=handleMorphAPIError(_0x4944aa);if(_0x1a2a4e)return _0x1a2a4e;const _0x27dca5=Date['now']()-_0x325492,_0x46b2b9=_0x4944aa instanceof Error?_0x4944aa[_0x31a3bd(0x162)]:String(_0x4944aa);return logMcpStderr('[github_codebase_search]\x20Failed\x20in\x20'+_0x27dca5+_0x31a3bd(0x159),_0x46b2b9),reportMorphError({'error_message':_0x46b2b9,'error_type':_0x4944aa instanceof Error?_0x4944aa[_0x31a3bd(0x165)][_0x31a3bd(0x113)]:_0x31a3bd(0x1c0),'context':{'tool':'github_codebase_search','github_url':_0xed5cc8,'search_string':_0x539188[_0x31a3bd(0x1b3)][_0x31a3bd(0xd9)],'branch':_0x539188[_0x31a3bd(0x1b3)]['branch']},'stack_trace':_0x4944aa instanceof Error?_0x4944aa[_0x31a3bd(0x10a)]:undefined,'source':_0x31a3bd(0x109),'tool':_0x31a3bd(0x150),'latency_ms':_0x27dca5})['catch'](()=>{}),{'content':[{'type':'text','text':_0x31a3bd(0x188)+_0x46b2b9}],'isError':![]};}}default:throw new Error(_0x31a3bd(0x157)+_0x2061d5);}}catch(_0x3bccb2){const _0x2a4546=_0x3bccb2 instanceof Error?_0x3bccb2['message']:String(_0x3bccb2);return reportMorphError({'error_message':_0x2a4546,'error_type':_0x3bccb2 instanceof Error?_0x3bccb2[_0x31a3bd(0x165)]['name']:'UnknownError','context':{'tool':_0x2061d5,'arguments':_0x59abb9?JSON['stringify'](_0x59abb9)[_0x31a3bd(0x191)](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x3bccb2 instanceof Error?_0x3bccb2[_0x31a3bd(0x10a)]:undefined,'source':_0x31a3bd(0x109)})['catch'](()=>{}),{'content':[{'type':_0x31a3bd(0x164),'text':_0x31a3bd(0x1df)+_0x2a4546}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x1bfd05){const _0x3878ad=a0_0x40eb78,_0x1062ca=await getValidRootDirectories(_0x1bfd05);if(_0x1062ca[_0x3878ad(0x148)]>0x0)allowedDirectories=[..._0x1062ca],logMcpStderr(_0x3878ad(0x19f)+_0x1062ca[_0x3878ad(0x148)]+_0x3878ad(0x13f));else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x4a9d31=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x4a9d31&&(allowedDirectories=[_0x4a9d31],logMcpStderr(_0x3878ad(0x1e3)+_0x4a9d31));}catch(_0x824515){logMcpStderr(_0x3878ad(0x15c)+_0x824515);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x4e9246=a0_0x40eb78;try{const _0x2a2d37=await server[_0x4e9246(0xef)]();_0x2a2d37&&'roots'in _0x2a2d37&&await updateAllowedDirectoriesFromRoots(_0x2a2d37[_0x4e9246(0x160)]);}catch(_0x353fbb){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x353fbb instanceof Error?_0x353fbb[_0x4e9246(0x162)]:String(_0x353fbb));}}),server[a0_0x40eb78(0x103)]=async()=>{const _0x116d47=a0_0x40eb78,_0x5366cc=server['getClientCapabilities']();if(_0x5366cc?.[_0x116d47(0x160)])try{const _0x46689a=await server[_0x116d47(0xef)]();_0x46689a&&'roots'in _0x46689a?await updateAllowedDirectoriesFromRoots(_0x46689a[_0x116d47(0x160)]):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x5a7418){logMcpStderr(_0x116d47(0x1e1),_0x5a7418 instanceof Error?_0x5a7418[_0x116d47(0x162)]:String(_0x5a7418));}else{if(allowedDirectories['length']>0x0)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:',allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode');else throw new Error(_0x116d47(0x1bd));}}};async function runServer(){const _0x2886b4=a0_0x40eb78,_0x18f143=new StdioServerTransport();await server['connect'](_0x18f143),logMcpStderr(_0x2886b4(0x13b)),allowedDirectories[_0x2886b4(0x148)]===0x0&&logMcpStderr(_0x2886b4(0x10d));}runServer()[a0_0x40eb78(0x145)](_0x5a788f=>{const _0xb5cff4=a0_0x40eb78;logMcpStderr(_0xb5cff4(0x107),_0x5a788f),process[_0xb5cff4(0xfe)](0x1);});
package/dist/log-utils.js CHANGED
@@ -1 +1 @@
1
- function a1_0x2bf8(_0x44ab27,_0xce3b9b){_0x44ab27=_0x44ab27-0x11c;var _0x2a06ce=a1_0x2a06();var _0x2bf85b=_0x2a06ce[_0x44ab27];return _0x2bf85b;}var a1_0x3daa1b=a1_0x2bf8;(function(_0x476e5f,_0x587a59){var _0x431793=a1_0x2bf8,_0x46e22a=_0x476e5f();while(!![]){try{var _0x20487e=parseInt(_0x431793(0x124))/0x1+parseInt(_0x431793(0x128))/0x2+parseInt(_0x431793(0x126))/0x3*(parseInt(_0x431793(0x121))/0x4)+parseInt(_0x431793(0x12a))/0x5*(parseInt(_0x431793(0x12c))/0x6)+-parseInt(_0x431793(0x12d))/0x7+-parseInt(_0x431793(0x123))/0x8+parseInt(_0x431793(0x130))/0x9*(-parseInt(_0x431793(0x11d))/0xa);if(_0x20487e===_0x587a59)break;else _0x46e22a['push'](_0x46e22a['shift']());}catch(_0x1cf611){_0x46e22a['push'](_0x46e22a['shift']());}}}(a1_0x2a06,0x8ae59));import a1_0x40e247 from'os';import{logger}from'./logger.js';export function getOperatingSystemType(_0x1c5b56=a1_0x40e247['platform']()){var _0x306ee1=a1_0x2bf8;switch(_0x1c5b56){case _0x306ee1(0x127):return'macOS';case _0x306ee1(0x12f):return _0x306ee1(0x12b);case _0x306ee1(0x125):return _0x306ee1(0x129);default:return _0x306ee1(0x11f);}}export function formatMcpLogMessage(_0x122219,_0x1e80cf=a1_0x40e247[a1_0x3daa1b(0x120)]()){return'[os='+getOperatingSystemType(_0x1e80cf)+']\x20'+_0x122219;}function a1_0x2a06(){var _0x22433e=['length','win32','9YOLdUr','map','12215570sOURWS','error','Unknown','platform','4QFxopP','MCP','8096424CFeGHY','721756tRltDF','linux','1936101LkDHcM','darwin','1571436mTMsCp','Linux','4479105tknwDC','Windows','6wYdvaU','1722917TFYNiv'];a1_0x2a06=function(){return _0x22433e;};return a1_0x2a06();}export function logMcpStderr(_0x2c8729,..._0xf2b74f){var _0x543a97=a1_0x3daa1b;console[_0x543a97(0x11e)](formatMcpLogMessage(_0x2c8729),..._0xf2b74f),logger['info'](_0x543a97(0x122),_0x2c8729,_0xf2b74f[_0x543a97(0x12e)]?{'args':_0xf2b74f[_0x543a97(0x11c)](_0x15c4a2=>String(_0x15c4a2))}:undefined);}
1
+ var a1_0x175f5e=a1_0x57c7;function a1_0x25da(){var _0x11558a=['32066560zokUkw','141jOTzKE','linux','length','1335LvyVQv','darwin','error','Unknown','8340ISeTDx','macOS','802089aepCve','791EOlkKw','286902JPlTQt','[os=','11lMLNUM','platform','win32','Linux','36592ToPJNk','map','1709826KNdmXO','20252gPMLqL'];a1_0x25da=function(){return _0x11558a;};return a1_0x25da();}(function(_0x1bd0a6,_0x20e09f){var _0x61d6f3=a1_0x57c7,_0x216bf9=_0x1bd0a6();while(!![]){try{var _0x4ad8ae=-parseInt(_0x61d6f3(0x83))/0x1+-parseInt(_0x61d6f3(0x77))/0x2+-parseInt(_0x61d6f3(0x7a))/0x3*(parseInt(_0x61d6f3(0x78))/0x4)+parseInt(_0x61d6f3(0x7d))/0x5*(-parseInt(_0x61d6f3(0x81))/0x6)+-parseInt(_0x61d6f3(0x84))/0x7*(parseInt(_0x61d6f3(0x75))/0x8)+parseInt(_0x61d6f3(0x85))/0x9+parseInt(_0x61d6f3(0x79))/0xa*(parseInt(_0x61d6f3(0x87))/0xb);if(_0x4ad8ae===_0x20e09f)break;else _0x216bf9['push'](_0x216bf9['shift']());}catch(_0x26b447){_0x216bf9['push'](_0x216bf9['shift']());}}}(a1_0x25da,0x6f39b));import a1_0x42ca57 from'os';import{logger}from'./logger.js';function a1_0x57c7(_0x21eef5,_0x485b3d){_0x21eef5=_0x21eef5-0x72;var _0x25da2c=a1_0x25da();var _0x57c7b4=_0x25da2c[_0x21eef5];return _0x57c7b4;}export function getOperatingSystemType(_0x565e41=a1_0x42ca57['platform']()){var _0x4553bb=a1_0x57c7;switch(_0x565e41){case _0x4553bb(0x7e):return _0x4553bb(0x82);case _0x4553bb(0x73):return'Windows';case _0x4553bb(0x7b):return _0x4553bb(0x74);default:return _0x4553bb(0x80);}}export function formatMcpLogMessage(_0x1655cc,_0x5575ba=a1_0x42ca57[a1_0x175f5e(0x72)]()){var _0x3b996e=a1_0x175f5e;return _0x3b996e(0x86)+getOperatingSystemType(_0x5575ba)+']\x20'+_0x1655cc;}export function logMcpStderr(_0xc27ea,..._0xeaa069){var _0x46d0cb=a1_0x175f5e;console[_0x46d0cb(0x7f)](formatMcpLogMessage(_0xc27ea),..._0xeaa069),logger['info']('MCP',_0xc27ea,_0xeaa069[_0x46d0cb(0x7c)]?{'args':_0xeaa069[_0x46d0cb(0x76)](_0x1a3d64=>String(_0x1a3d64))}:undefined);}
package/dist/logger.js CHANGED
@@ -1 +1 @@
1
- const a2_0x5e6449=a2_0x540d;function a2_0x540d(_0x24ddca,_0x2f5865){_0x24ddca=_0x24ddca-0x180;const _0x408a6e=a2_0x408a();let _0x540d8a=_0x408a6e[_0x24ddca];return _0x540d8a;}(function(_0x14df72,_0x5887c0){const _0x1af352=a2_0x540d,_0x1924ba=_0x14df72();while(!![]){try{const _0x51d8ce=-parseInt(_0x1af352(0x182))/0x1*(parseInt(_0x1af352(0x195))/0x2)+-parseInt(_0x1af352(0x186))/0x3+-parseInt(_0x1af352(0x191))/0x4+-parseInt(_0x1af352(0x18e))/0x5*(parseInt(_0x1af352(0x18d))/0x6)+parseInt(_0x1af352(0x18b))/0x7*(parseInt(_0x1af352(0x188))/0x8)+parseInt(_0x1af352(0x194))/0x9*(-parseInt(_0x1af352(0x196))/0xa)+parseInt(_0x1af352(0x199))/0xb;if(_0x51d8ce===_0x5887c0)break;else _0x1924ba['push'](_0x1924ba['shift']());}catch(_0x3313fe){_0x1924ba['push'](_0x1924ba['shift']());}}}(a2_0x408a,0x38ccd));import{createWriteStream}from'fs';function a2_0x408a(){const _0x13217c=['env','MORPH_DEBUG','1526020SNrPZl','debug','toISOString','9qWDERP','140872FzmOeT','3736190fEvSqD','enabled','isEnabled','19538387FQLTdf','write','fileStream','info','5SjXIKf','warn','enable','error','891030BMIfcr','MORPH_LOG_FILE','8fySoRq','_log','stringify','1765841ckJdbC',']\x20[','642kxydsC','18295foOGhm'];a2_0x408a=function(){return _0x13217c;};return a2_0x408a();}class MorphLogger{[a2_0x5e6449(0x197)];['fileStream'];constructor(){const _0xe7f8cf=a2_0x5e6449;this['enabled']=process['env'][_0xe7f8cf(0x190)]==='1'||!!process['env'][_0xe7f8cf(0x187)];const _0x386fe6=process[_0xe7f8cf(0x18f)][_0xe7f8cf(0x187)];this[_0xe7f8cf(0x180)]=_0x386fe6?createWriteStream(_0x386fe6,{'flags':'a'}):null;}[a2_0x5e6449(0x192)](_0x5efc8a,_0xfe1a0f,_0xfa9434){const _0x29af09=a2_0x5e6449;this[_0x29af09(0x189)](_0x29af09(0x192),_0x5efc8a,_0xfe1a0f,_0xfa9434);}[a2_0x5e6449(0x181)](_0x42fe0c,_0x2a7bee,_0x346097){const _0x22f5b8=a2_0x5e6449;this[_0x22f5b8(0x189)](_0x22f5b8(0x181),_0x42fe0c,_0x2a7bee,_0x346097);}['warn'](_0xd5ad0b,_0x3da49f,_0x346a6a){const _0x9a0365=a2_0x5e6449;this[_0x9a0365(0x189)](_0x9a0365(0x183),_0xd5ad0b,_0x3da49f,_0x346a6a);}[a2_0x5e6449(0x185)](_0x4ddb01,_0x5b91b2,_0x57491a){const _0x45f565=a2_0x5e6449;this[_0x45f565(0x189)](_0x45f565(0x185),_0x4ddb01,_0x5b91b2,_0x57491a);}[a2_0x5e6449(0x184)](){this['enabled']=!![];}get[a2_0x5e6449(0x198)](){const _0x39f520=a2_0x5e6449;return this[_0x39f520(0x197)];}[a2_0x5e6449(0x189)](_0x596918,_0x9c959d,_0x3d49e5,_0x3b6815){const _0x334c38=a2_0x5e6449;if(_0x596918!==_0x334c38(0x185)&&!this[_0x334c38(0x197)])return;const _0x3b4c62=new Date()[_0x334c38(0x193)](),_0x5e4ad2='['+_0x3b4c62+_0x334c38(0x18c)+_0x596918['toUpperCase']()+_0x334c38(0x18c)+_0x9c959d+']';console[_0x334c38(0x185)](_0x3b6815?_0x5e4ad2+'\x20'+_0x3d49e5+'\x20'+JSON[_0x334c38(0x18a)](_0x3b6815):_0x5e4ad2+'\x20'+_0x3d49e5),this[_0x334c38(0x180)]?.[_0x334c38(0x19a)](JSON['stringify']({'ts':_0x3b4c62,'level':_0x596918,'component':_0x9c959d,'msg':_0x3d49e5,..._0x3b6815&&{'data':_0x3b6815}})+'\x0a');}}export const logger=new MorphLogger();
1
+ function a2_0x1e8f(){const _0x24c165=['debug','enable','isEnabled','726498OmsyMN','263060NlxiTW','4356uORjNl','warn','_log','fileStream','80gSYnCE','MORPH_LOG_FILE','131ZbhPOQ','error','write','2379615WlTCwY','stringify','MORPH_DEBUG','934960xYutcE','toUpperCase','enabled','1489314NXUIsP','info','1672365SeDTJl','env',']\x20['];a2_0x1e8f=function(){return _0x24c165;};return a2_0x1e8f();}const a2_0x3a410f=a2_0x18fc;(function(_0x293789,_0x5ea2ab){const _0x40c9aa=a2_0x18fc,_0x20c3ac=_0x293789();while(!![]){try{const _0x41e985=-parseInt(_0x40c9aa(0x7b))/0x1*(parseInt(_0x40c9aa(0x75))/0x2)+-parseInt(_0x40c9aa(0x6d))/0x3+parseInt(_0x40c9aa(0x81))/0x4+parseInt(_0x40c9aa(0x7e))/0x5+-parseInt(_0x40c9aa(0x84))/0x6+parseInt(_0x40c9aa(0x74))/0x7+-parseInt(_0x40c9aa(0x79))/0x8*(-parseInt(_0x40c9aa(0x73))/0x9);if(_0x41e985===_0x5ea2ab)break;else _0x20c3ac['push'](_0x20c3ac['shift']());}catch(_0x379e12){_0x20c3ac['push'](_0x20c3ac['shift']());}}}(a2_0x1e8f,0x7126f));function a2_0x18fc(_0x5cad37,_0x1ad232){_0x5cad37=_0x5cad37-0x6c;const _0x1e8f5f=a2_0x1e8f();let _0x18fc77=_0x1e8f5f[_0x5cad37];return _0x18fc77;}import{createWriteStream}from'fs';class MorphLogger{[a2_0x3a410f(0x83)];['fileStream'];constructor(){const _0x4066d1=a2_0x3a410f;this['enabled']=process['env'][_0x4066d1(0x80)]==='1'||!!process[_0x4066d1(0x6e)][_0x4066d1(0x7a)];const _0x5892a9=process['env'][_0x4066d1(0x7a)];this[_0x4066d1(0x78)]=_0x5892a9?createWriteStream(_0x5892a9,{'flags':'a'}):null;}[a2_0x3a410f(0x70)](_0x12a444,_0x504333,_0x3ca0a1){const _0x3fbc32=a2_0x3a410f;this[_0x3fbc32(0x77)](_0x3fbc32(0x70),_0x12a444,_0x504333,_0x3ca0a1);}[a2_0x3a410f(0x6c)](_0x131569,_0x2b8408,_0x2cfeea){const _0x3e6a8a=a2_0x3a410f;this['_log'](_0x3e6a8a(0x6c),_0x131569,_0x2b8408,_0x2cfeea);}[a2_0x3a410f(0x76)](_0x3a151d,_0x50c6a8,_0x34faf8){const _0x456d5e=a2_0x3a410f;this[_0x456d5e(0x77)](_0x456d5e(0x76),_0x3a151d,_0x50c6a8,_0x34faf8);}[a2_0x3a410f(0x7c)](_0x216285,_0x48f948,_0x1035c3){const _0x1f5c94=a2_0x3a410f;this[_0x1f5c94(0x77)](_0x1f5c94(0x7c),_0x216285,_0x48f948,_0x1035c3);}[a2_0x3a410f(0x71)](){const _0xf8d3d6=a2_0x3a410f;this[_0xf8d3d6(0x83)]=!![];}get[a2_0x3a410f(0x72)](){const _0x389cd0=a2_0x3a410f;return this[_0x389cd0(0x83)];}[a2_0x3a410f(0x77)](_0x14cfae,_0x3a3975,_0x68e7e4,_0x1d4754){const _0x4b0291=a2_0x3a410f;if(_0x14cfae!==_0x4b0291(0x7c)&&!this[_0x4b0291(0x83)])return;const _0x3bd93c=new Date()['toISOString'](),_0x21154a='['+_0x3bd93c+_0x4b0291(0x6f)+_0x14cfae[_0x4b0291(0x82)]()+_0x4b0291(0x6f)+_0x3a3975+']';console[_0x4b0291(0x7c)](_0x1d4754?_0x21154a+'\x20'+_0x68e7e4+'\x20'+JSON[_0x4b0291(0x7f)](_0x1d4754):_0x21154a+'\x20'+_0x68e7e4),this[_0x4b0291(0x78)]?.[_0x4b0291(0x7d)](JSON[_0x4b0291(0x7f)]({'ts':_0x3bd93c,'level':_0x14cfae,'component':_0x3a3975,'msg':_0x68e7e4,..._0x1d4754&&{'data':_0x1d4754}})+'\x0a');}}export const logger=new MorphLogger();
@@ -1 +1 @@
1
- (function(_0x3bf6a8,_0x5275a9){const _0x47802e=a3_0x1606,_0x14b502=_0x3bf6a8();while(!![]){try{const _0x3d62ef=-parseInt(_0x47802e(0xf1))/0x1*(-parseInt(_0x47802e(0xea))/0x2)+-parseInt(_0x47802e(0xe5))/0x3+parseInt(_0x47802e(0xf0))/0x4+-parseInt(_0x47802e(0xe7))/0x5*(-parseInt(_0x47802e(0xe2))/0x6)+parseInt(_0x47802e(0xef))/0x7+-parseInt(_0x47802e(0xe0))/0x8+-parseInt(_0x47802e(0xee))/0x9;if(_0x3d62ef===_0x5275a9)break;else _0x14b502['push'](_0x14b502['shift']());}catch(_0x2a4583){_0x14b502['push'](_0x14b502['shift']());}}}(a3_0x43b1,0x63902));import a3_0x5b386f from'path';import a3_0x2b711e from'os';export function convertToWindowsPath(_0x22d890){const _0x5ed34b=a3_0x1606;if(_0x22d890[_0x5ed34b(0xdf)](_0x5ed34b(0xe4))){const _0x348b8a=_0x22d890[_0x5ed34b(0xec)](0x5)[_0x5ed34b(0xde)](),_0x26e506=_0x22d890[_0x5ed34b(0xed)](0x6)[_0x5ed34b(0xe6)](/\//g,'\x5c');return _0x348b8a+':'+_0x26e506;}if(_0x22d890[_0x5ed34b(0xdd)](/^\/[a-zA-Z]\//)){const _0x523e31=_0x22d890[_0x5ed34b(0xec)](0x1)[_0x5ed34b(0xde)](),_0x197a39=_0x22d890['slice'](0x2)[_0x5ed34b(0xe6)](/\//g,'\x5c');return _0x523e31+':'+_0x197a39;}if(_0x22d890[_0x5ed34b(0xdd)](/^[a-zA-Z]:/))return _0x22d890['replace'](/\//g,'\x5c');return _0x22d890;}function a3_0x1606(_0x695f69,_0x1d8829){_0x695f69=_0x695f69-0xdd;const _0x43b166=a3_0x43b1();let _0x1606c8=_0x43b166[_0x695f69];return _0x1606c8;}export function normalizePath(_0x4a1de2){const _0x44d472=a3_0x1606;_0x4a1de2=_0x4a1de2[_0x44d472(0xe3)]()['replace'](/^["']|["']$/g,'');const _0x1320a8=_0x4a1de2[_0x44d472(0xdf)]('/')&&!_0x4a1de2[_0x44d472(0xdd)](/^\/mnt\/[a-z]\//i)&&!_0x4a1de2[_0x44d472(0xdd)](/^\/[a-zA-Z]\//);if(_0x1320a8)return _0x4a1de2[_0x44d472(0xe6)](/\/+/g,'/')[_0x44d472(0xe6)](/\/+$/,'');_0x4a1de2=convertToWindowsPath(_0x4a1de2);if(_0x4a1de2[_0x44d472(0xdf)]('\x5c\x5c')){let _0x243e5f=_0x4a1de2;_0x243e5f=_0x243e5f['replace'](/^\\{2,}/,'\x5c\x5c');const _0x422698=_0x243e5f['substring'](0x2)['replace'](/\\\\/g,'\x5c');_0x4a1de2='\x5c\x5c'+_0x422698;}else _0x4a1de2=_0x4a1de2[_0x44d472(0xe6)](/\\\\/g,'\x5c');let _0x375056=a3_0x5b386f[_0x44d472(0xe9)](_0x4a1de2);_0x4a1de2['startsWith']('\x5c\x5c')&&!_0x375056['startsWith']('\x5c\x5c')&&(_0x375056='\x5c'+_0x375056);if(_0x375056[_0x44d472(0xdd)](/^[a-zA-Z]:/)){let _0x51a596=_0x375056[_0x44d472(0xe6)](/\//g,'\x5c');return/^[a-z]:/[_0x44d472(0xe8)](_0x51a596)&&(_0x51a596=_0x51a596['charAt'](0x0)[_0x44d472(0xde)]()+_0x51a596['slice'](0x1)),_0x51a596;}return _0x375056[_0x44d472(0xe6)](/\//g,'\x5c');}export function expandHome(_0xfe27c5){const _0x495f93=a3_0x1606;if(_0xfe27c5[_0x495f93(0xdf)]('~/')||_0xfe27c5==='~')return a3_0x5b386f[_0x495f93(0xeb)](a3_0x2b711e[_0x495f93(0xe1)](),_0xfe27c5[_0x495f93(0xed)](0x1));return _0xfe27c5;}function a3_0x43b1(){const _0x598400=['join','charAt','slice','13139631rcloAU','5375489ohRtVy','268928lrAClq','1IyxUSx','match','toUpperCase','startsWith','797360VlUAXs','homedir','15966KVQqPE','trim','/mnt/','367263irQXhX','replace','1250aXraVf','test','normalize','1178902mMtyCd'];a3_0x43b1=function(){return _0x598400;};return a3_0x43b1();}
1
+ (function(_0xce80b6,_0x2202a4){const _0x1cfc02=a3_0x2eb6,_0x373240=_0xce80b6();while(!![]){try{const _0x4aed29=parseInt(_0x1cfc02(0x92))/0x1*(-parseInt(_0x1cfc02(0x8f))/0x2)+parseInt(_0x1cfc02(0x93))/0x3+parseInt(_0x1cfc02(0x8e))/0x4+parseInt(_0x1cfc02(0x81))/0x5+-parseInt(_0x1cfc02(0x95))/0x6*(-parseInt(_0x1cfc02(0x8a))/0x7)+-parseInt(_0x1cfc02(0x8d))/0x8+-parseInt(_0x1cfc02(0x86))/0x9;if(_0x4aed29===_0x2202a4)break;else _0x373240['push'](_0x373240['shift']());}catch(_0x18dd05){_0x373240['push'](_0x373240['shift']());}}}(a3_0x5a9c,0x31a30));import a3_0x1af97f from'path';import a3_0x21ad06 from'os';function a3_0x2eb6(_0x5a4590,_0x4fc082){_0x5a4590=_0x5a4590-0x81;const _0x5a9cc4=a3_0x5a9c();let _0x2eb60c=_0x5a9cc4[_0x5a4590];return _0x2eb60c;}export function convertToWindowsPath(_0x5450b3){const _0x3f5b35=a3_0x2eb6;if(_0x5450b3[_0x3f5b35(0x89)]('/mnt/')){const _0xee8898=_0x5450b3[_0x3f5b35(0x8c)](0x5)['toUpperCase'](),_0x42a465=_0x5450b3[_0x3f5b35(0x87)](0x6)[_0x3f5b35(0x8b)](/\//g,'\x5c');return _0xee8898+':'+_0x42a465;}if(_0x5450b3[_0x3f5b35(0x85)](/^\/[a-zA-Z]\//)){const _0x114dd8=_0x5450b3[_0x3f5b35(0x8c)](0x1)[_0x3f5b35(0x88)](),_0x2aefd7=_0x5450b3['slice'](0x2)[_0x3f5b35(0x8b)](/\//g,'\x5c');return _0x114dd8+':'+_0x2aefd7;}if(_0x5450b3[_0x3f5b35(0x85)](/^[a-zA-Z]:/))return _0x5450b3['replace'](/\//g,'\x5c');return _0x5450b3;}function a3_0x5a9c(){const _0x10f8c6=['133637fSPVCe','replace','charAt','60816CACRaE','214712YaVCup','78994kUehQk','join','homedir','7JMKXUJ','1105392IwOsun','normalize','42VoGZdx','1673310PuEjUq','substring','test','trim','match','3627432toaxIS','slice','toUpperCase','startsWith'];a3_0x5a9c=function(){return _0x10f8c6;};return a3_0x5a9c();}export function normalizePath(_0x7a0434){const _0x5b6c03=a3_0x2eb6;_0x7a0434=_0x7a0434[_0x5b6c03(0x84)]()['replace'](/^["']|["']$/g,'');const _0x25adad=_0x7a0434[_0x5b6c03(0x89)]('/')&&!_0x7a0434[_0x5b6c03(0x85)](/^\/mnt\/[a-z]\//i)&&!_0x7a0434[_0x5b6c03(0x85)](/^\/[a-zA-Z]\//);if(_0x25adad)return _0x7a0434[_0x5b6c03(0x8b)](/\/+/g,'/')[_0x5b6c03(0x8b)](/\/+$/,'');_0x7a0434=convertToWindowsPath(_0x7a0434);if(_0x7a0434['startsWith']('\x5c\x5c')){let _0x5270ff=_0x7a0434;_0x5270ff=_0x5270ff[_0x5b6c03(0x8b)](/^\\{2,}/,'\x5c\x5c');const _0x4d4ef8=_0x5270ff[_0x5b6c03(0x82)](0x2)[_0x5b6c03(0x8b)](/\\\\/g,'\x5c');_0x7a0434='\x5c\x5c'+_0x4d4ef8;}else _0x7a0434=_0x7a0434[_0x5b6c03(0x8b)](/\\\\/g,'\x5c');let _0x198ba2=a3_0x1af97f[_0x5b6c03(0x94)](_0x7a0434);_0x7a0434[_0x5b6c03(0x89)]('\x5c\x5c')&&!_0x198ba2['startsWith']('\x5c\x5c')&&(_0x198ba2='\x5c'+_0x198ba2);if(_0x198ba2[_0x5b6c03(0x85)](/^[a-zA-Z]:/)){let _0xb84fb0=_0x198ba2[_0x5b6c03(0x8b)](/\//g,'\x5c');return/^[a-z]:/[_0x5b6c03(0x83)](_0xb84fb0)&&(_0xb84fb0=_0xb84fb0[_0x5b6c03(0x8c)](0x0)[_0x5b6c03(0x88)]()+_0xb84fb0[_0x5b6c03(0x87)](0x1)),_0xb84fb0;}return _0x198ba2[_0x5b6c03(0x8b)](/\//g,'\x5c');}export function expandHome(_0x95fb69){const _0xe8337d=a3_0x2eb6;if(_0x95fb69[_0xe8337d(0x89)]('~/')||_0x95fb69==='~')return a3_0x1af97f[_0xe8337d(0x90)](a3_0x21ad06[_0xe8337d(0x91)](),_0x95fb69['slice'](0x1));return _0x95fb69;}
@@ -1 +1 @@
1
- (function(_0x4f594f,_0x4df636){const _0xe589e3=a4_0x1490,_0x5ae7f7=_0x4f594f();while(!![]){try{const _0x492ade=-parseInt(_0xe589e3(0xbd))/0x1+parseInt(_0xe589e3(0xc3))/0x2*(parseInt(_0xe589e3(0xb9))/0x3)+parseInt(_0xe589e3(0xc2))/0x4+-parseInt(_0xe589e3(0xb6))/0x5+-parseInt(_0xe589e3(0xc6))/0x6*(parseInt(_0xe589e3(0xb3))/0x7)+parseInt(_0xe589e3(0xb7))/0x8+-parseInt(_0xe589e3(0xb4))/0x9*(-parseInt(_0xe589e3(0xbe))/0xa);if(_0x492ade===_0x4df636)break;else _0x5ae7f7['push'](_0x5ae7f7['shift']());}catch(_0x16dce1){_0x5ae7f7['push'](_0x5ae7f7['shift']());}}}(a4_0x43cd,0x198f6));import a4_0x1fd2d2 from'path';export function isPathWithinAllowedDirectories(_0x3eb0ba,_0x4c7e82){const _0x3a39a7=a4_0x1490;if(typeof _0x3eb0ba!==_0x3a39a7(0xbf)||!Array['isArray'](_0x4c7e82))return![];if(!_0x3eb0ba||_0x4c7e82[_0x3a39a7(0xba)]===0x0)return![];if(_0x3eb0ba[_0x3a39a7(0xb5)]('\x00'))return![];let _0x18297a;try{_0x18297a=a4_0x1fd2d2[_0x3a39a7(0xc5)](a4_0x1fd2d2[_0x3a39a7(0xbc)](_0x3eb0ba));}catch{return![];}if(!a4_0x1fd2d2[_0x3a39a7(0xbb)](_0x18297a))throw new Error(_0x3a39a7(0xc4));return _0x4c7e82[_0x3a39a7(0xc0)](_0x19e106=>{const _0x2c1e63=_0x3a39a7;if(typeof _0x19e106!=='string'||!_0x19e106)return![];if(_0x19e106[_0x2c1e63(0xb5)]('\x00'))return![];let _0x956462;try{_0x956462=a4_0x1fd2d2[_0x2c1e63(0xc5)](a4_0x1fd2d2['normalize'](_0x19e106));}catch{return![];}if(!a4_0x1fd2d2[_0x2c1e63(0xbb)](_0x956462))throw new Error(_0x2c1e63(0xc7));if(_0x18297a===_0x956462)return!![];if(_0x956462===a4_0x1fd2d2[_0x2c1e63(0xb8)])return _0x18297a[_0x2c1e63(0xc1)](a4_0x1fd2d2['sep']);return _0x18297a['startsWith'](_0x956462+a4_0x1fd2d2[_0x2c1e63(0xb8)]);});}function a4_0x1490(_0x59a782,_0x224a28){_0x59a782=_0x59a782-0xb3;const _0x43cd5b=a4_0x43cd();let _0x1490b5=_0x43cd5b[_0x59a782];return _0x1490b5;}function a4_0x43cd(){const _0x114f80=['2636MtFunN','Path\x20must\x20be\x20absolute\x20after\x20normalization','resolve','90FsLkUh','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','93359xgxYUZ','1843623nAcVSh','includes','855190tiupTq','1043368MNUgVq','sep','408UZaKFF','length','isAbsolute','normalize','68218AnDmGj','10agVNXL','string','some','startsWith','117956SKGKPv'];a4_0x43cd=function(){return _0x114f80;};return a4_0x43cd();}
1
+ function a4_0x22ce(_0x4af2ef,_0x57459c){_0x4af2ef=_0x4af2ef-0x143;const _0x10b451=a4_0x10b4();let _0x22ce96=_0x10b451[_0x4af2ef];return _0x22ce96;}(function(_0x5cb206,_0xee7d03){const _0x12ad9f=a4_0x22ce,_0x39aeb9=_0x5cb206();while(!![]){try{const _0x5aeb7b=parseInt(_0x12ad9f(0x14b))/0x1+parseInt(_0x12ad9f(0x14d))/0x2+parseInt(_0x12ad9f(0x14a))/0x3+parseInt(_0x12ad9f(0x143))/0x4*(-parseInt(_0x12ad9f(0x14e))/0x5)+-parseInt(_0x12ad9f(0x151))/0x6+-parseInt(_0x12ad9f(0x149))/0x7*(parseInt(_0x12ad9f(0x145))/0x8)+-parseInt(_0x12ad9f(0x148))/0x9;if(_0x5aeb7b===_0xee7d03)break;else _0x39aeb9['push'](_0x39aeb9['shift']());}catch(_0x1e53b8){_0x39aeb9['push'](_0x39aeb9['shift']());}}}(a4_0x10b4,0x8b40a));import a4_0x4099dd from'path';export function isPathWithinAllowedDirectories(_0x2a05be,_0x5e4d78){const _0x21c44f=a4_0x22ce;if(typeof _0x2a05be!==_0x21c44f(0x144)||!Array[_0x21c44f(0x153)](_0x5e4d78))return![];if(!_0x2a05be||_0x5e4d78[_0x21c44f(0x14c)]===0x0)return![];if(_0x2a05be[_0x21c44f(0x152)]('\x00'))return![];let _0x1244c9;try{_0x1244c9=a4_0x4099dd[_0x21c44f(0x154)](a4_0x4099dd[_0x21c44f(0x150)](_0x2a05be));}catch{return![];}if(!a4_0x4099dd[_0x21c44f(0x156)](_0x1244c9))throw new Error(_0x21c44f(0x14f));return _0x5e4d78[_0x21c44f(0x155)](_0x4a8718=>{const _0x2dc512=_0x21c44f;if(typeof _0x4a8718!==_0x2dc512(0x144)||!_0x4a8718)return![];if(_0x4a8718['includes']('\x00'))return![];let _0x15f636;try{_0x15f636=a4_0x4099dd[_0x2dc512(0x154)](a4_0x4099dd['normalize'](_0x4a8718));}catch{return![];}if(!a4_0x4099dd[_0x2dc512(0x156)](_0x15f636))throw new Error('Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization');if(_0x1244c9===_0x15f636)return!![];if(_0x15f636===a4_0x4099dd[_0x2dc512(0x147)])return _0x1244c9[_0x2dc512(0x146)](a4_0x4099dd[_0x2dc512(0x147)]);return _0x1244c9[_0x2dc512(0x146)](_0x15f636+a4_0x4099dd[_0x2dc512(0x147)]);});}function a4_0x10b4(){const _0x6f7593=['some','isAbsolute','4zszesc','string','645912LJPOju','startsWith','sep','3495717kpJqXV','35tddBVQ','2062875YSpWmH','1084200mjPjYy','length','830206YtmVGi','2367745uSOxIL','Path\x20must\x20be\x20absolute\x20after\x20normalization','normalize','2105358lFKDlS','includes','isArray','resolve'];a4_0x10b4=function(){return _0x6f7593;};return a4_0x10b4();}
@@ -1 +1 @@
1
- (function(_0x27495f,_0x105200){const _0x33a155=a5_0x2edb,_0x237466=_0x27495f();while(!![]){try{const _0x105a01=parseInt(_0x33a155(0x1d3))/0x1+-parseInt(_0x33a155(0x1c8))/0x2+parseInt(_0x33a155(0x1cc))/0x3*(-parseInt(_0x33a155(0x1c0))/0x4)+-parseInt(_0x33a155(0x1c2))/0x5*(-parseInt(_0x33a155(0x1d1))/0x6)+parseInt(_0x33a155(0x1bf))/0x7+parseInt(_0x33a155(0x1c7))/0x8*(-parseInt(_0x33a155(0x1cf))/0x9)+parseInt(_0x33a155(0x1d5))/0xa;if(_0x105a01===_0x105200)break;else _0x237466['push'](_0x237466['shift']());}catch(_0x4b3a43){_0x237466['push'](_0x237466['shift']());}}}(a5_0x1c7a,0x1babf));function a5_0x2edb(_0x51d4e0,_0x5c4ed2){_0x51d4e0=_0x51d4e0-0x1bf;const _0x1c7a30=a5_0x1c7a();let _0x2edbcd=_0x1c7a30[_0x51d4e0];return _0x2edbcd;}import{promises as a5_0x43a0e2}from'fs';import a5_0x2e3fc3 from'path';import a5_0x24f682 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x56d123){const _0x397007=a5_0x2edb;try{const _0x5455f9=_0x56d123[_0x397007(0x1c3)](_0x397007(0x1d0))?_0x56d123[_0x397007(0x1cd)](0x7):_0x56d123,_0x5a8f17=_0x5455f9[_0x397007(0x1c3)]('~/')||_0x5455f9==='~'?a5_0x2e3fc3[_0x397007(0x1d4)](a5_0x24f682[_0x397007(0x1c1)](),_0x5455f9[_0x397007(0x1cd)](0x1)):_0x5455f9,_0x23e3be=a5_0x2e3fc3[_0x397007(0x1d2)](_0x5a8f17),_0x390adb=await a5_0x43a0e2[_0x397007(0x1c4)](_0x23e3be);return normalizePath(_0x390adb);}catch{return null;}}function formatDirectoryError(_0x302b21,_0x40b010,_0xd6301c){const _0x4f8afe=a5_0x2edb;if(_0xd6301c)return _0x4f8afe(0x1c9)+_0xd6301c+':\x20'+_0x302b21;const _0x1f7978=_0x40b010 instanceof Error?_0x40b010['message']:String(_0x40b010);return'Skipping\x20invalid\x20directory:\x20'+_0x302b21+'\x20due\x20to\x20error:\x20'+_0x1f7978;}export async function getValidRootDirectories(_0x493ac5){const _0x20a579=a5_0x2edb,_0x4b0353=[];for(const _0x4301c8 of _0x493ac5){const _0xf164cd=await parseRootUri(_0x4301c8['uri']);if(!_0xf164cd){logMcpStderr(formatDirectoryError(_0x4301c8[_0x20a579(0x1ca)],undefined,_0x20a579(0x1c5)));continue;}try{const _0x397e66=await a5_0x43a0e2['stat'](_0xf164cd);_0x397e66[_0x20a579(0x1ce)]()?_0x4b0353[_0x20a579(0x1cb)](_0xf164cd):logMcpStderr(formatDirectoryError(_0xf164cd,undefined,_0x20a579(0x1c6)));}catch(_0x52ac70){logMcpStderr(formatDirectoryError(_0xf164cd,_0x52ac70));}}return _0x4b0353;}function a5_0x1c7a(){const _0x160135=['join','3996730WInrjo','353836WBKzuv','268NIYPRU','homedir','248550PvcfxF','startsWith','realpath','invalid\x20path\x20or\x20inaccessible','non-directory\x20root','48072mzGdMc','239116SKVUDN','Skipping\x20','uri','push','6855NpzuZz','slice','isDirectory','279XSDEqi','file://','6agiApu','resolve','72344HLbfRs'];a5_0x1c7a=function(){return _0x160135;};return a5_0x1c7a();}
1
+ (function(_0x3231e2,_0x4b8309){const _0x20aadf=a5_0x3bda,_0x33b8bc=_0x3231e2();while(!![]){try{const _0x5065=parseInt(_0x20aadf(0x1e8))/0x1*(parseInt(_0x20aadf(0x1f4))/0x2)+-parseInt(_0x20aadf(0x1ea))/0x3*(parseInt(_0x20aadf(0x1f1))/0x4)+parseInt(_0x20aadf(0x1e9))/0x5+parseInt(_0x20aadf(0x1e2))/0x6+parseInt(_0x20aadf(0x1ef))/0x7*(parseInt(_0x20aadf(0x1e3))/0x8)+parseInt(_0x20aadf(0x1f7))/0x9*(parseInt(_0x20aadf(0x1f0))/0xa)+-parseInt(_0x20aadf(0x1f5))/0xb*(parseInt(_0x20aadf(0x1f2))/0xc);if(_0x5065===_0x4b8309)break;else _0x33b8bc['push'](_0x33b8bc['shift']());}catch(_0x2352d1){_0x33b8bc['push'](_0x33b8bc['shift']());}}}(a5_0x3ef1,0xdfd02));import{promises as a5_0x518111}from'fs';import a5_0x308d2a from'path';import a5_0x2e0c5d from'os';function a5_0x3ef1(){const _0xe9fb7e=['\x20due\x20to\x20error:\x20','39708iPyJSP','non-directory\x20root','Skipping\x20invalid\x20directory:\x20','10400544keovyX','2108688Bimuuu','isDirectory','slice','stat','realpath','1lduoNC','6489330SSIKnI','50484NcHzun','file://','resolve','uri','Skipping\x20','14RaOKRy','1170cHnDVu','368iQMspR','782664KXDaxF','join','1867812NKGMKs','429vAdlEU'];a5_0x3ef1=function(){return _0xe9fb7e;};return a5_0x3ef1();}import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';function a5_0x3bda(_0x35f3b8,_0x239681){_0x35f3b8=_0x35f3b8-0x1e1;const _0x3ef17a=a5_0x3ef1();let _0x3bdac1=_0x3ef17a[_0x35f3b8];return _0x3bdac1;}async function parseRootUri(_0x140d4c){const _0x316e13=a5_0x3bda;try{const _0x517491=_0x140d4c['startsWith'](_0x316e13(0x1eb))?_0x140d4c['slice'](0x7):_0x140d4c,_0x177614=_0x517491['startsWith']('~/')||_0x517491==='~'?a5_0x308d2a[_0x316e13(0x1f3)](a5_0x2e0c5d['homedir'](),_0x517491[_0x316e13(0x1e5)](0x1)):_0x517491,_0x1e1627=a5_0x308d2a[_0x316e13(0x1ec)](_0x177614),_0x20b19a=await a5_0x518111[_0x316e13(0x1e7)](_0x1e1627);return normalizePath(_0x20b19a);}catch{return null;}}function formatDirectoryError(_0x221dcc,_0x2b4493,_0x14b988){const _0x4acf39=a5_0x3bda;if(_0x14b988)return _0x4acf39(0x1ee)+_0x14b988+':\x20'+_0x221dcc;const _0x5ef671=_0x2b4493 instanceof Error?_0x2b4493['message']:String(_0x2b4493);return _0x4acf39(0x1e1)+_0x221dcc+_0x4acf39(0x1f6)+_0x5ef671;}export async function getValidRootDirectories(_0xaa525){const _0x34d661=a5_0x3bda,_0x18db06=[];for(const _0xb10967 of _0xaa525){const _0x4fe84f=await parseRootUri(_0xb10967[_0x34d661(0x1ed)]);if(!_0x4fe84f){logMcpStderr(formatDirectoryError(_0xb10967[_0x34d661(0x1ed)],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0x4ccfd5=await a5_0x518111[_0x34d661(0x1e6)](_0x4fe84f);_0x4ccfd5[_0x34d661(0x1e4)]()?_0x18db06['push'](_0x4fe84f):logMcpStderr(formatDirectoryError(_0x4fe84f,undefined,_0x34d661(0x1f8)));}catch(_0x30d3dc){logMcpStderr(formatDirectoryError(_0x4fe84f,_0x30d3dc));}}return _0x18db06;}
@@ -1 +1 @@
1
- const a6_0x5e7e58=a6_0x9789;(function(_0x31a789,_0x527f60){const _0x20cc5b=a6_0x9789,_0xdad804=_0x31a789();while(!![]){try{const _0x2bfc8f=parseInt(_0x20cc5b(0x1d4))/0x1*(-parseInt(_0x20cc5b(0x1d0))/0x2)+parseInt(_0x20cc5b(0x1d8))/0x3*(parseInt(_0x20cc5b(0x1d7))/0x4)+-parseInt(_0x20cc5b(0x1ce))/0x5+-parseInt(_0x20cc5b(0x1cb))/0x6+-parseInt(_0x20cc5b(0x1cc))/0x7*(-parseInt(_0x20cc5b(0x1d6))/0x8)+parseInt(_0x20cc5b(0x1cd))/0x9*(-parseInt(_0x20cc5b(0x1d2))/0xa)+parseInt(_0x20cc5b(0x1d1))/0xb;if(_0x2bfc8f===_0x527f60)break;else _0xdad804['push'](_0xdad804['shift']());}catch(_0x3422c6){_0xdad804['push'](_0xdad804['shift']());}}}(a6_0x3984,0xb5860));export const TOOL_NAMES={'EDIT_FILE':a6_0x5e7e58(0x1d3),'CODEBASE_SEARCH':a6_0x5e7e58(0x1cf),'GITHUB_CODEBASE_SEARCH':'github_codebase_search'};export const ALL_TOOL_NAMES=Object[a6_0x5e7e58(0x1d5)](TOOL_NAMES);export const KNOWN_TOOL_NAMES=new Set(ALL_TOOL_NAMES);function a6_0x9789(_0x2aa6e2,_0xd3b586){_0x2aa6e2=_0x2aa6e2-0x1cb;const _0x3984a5=a6_0x3984();let _0x978977=_0x3984a5[_0x2aa6e2];return _0x978977;}function a6_0x3984(){const _0x5a9b54=['edit_file','23523vkLdEy','values','57608XrbbQq','100ruqlPo','94044GWTMZX','4397574jvjNgf','91IzDBPW','166707vUqnUR','505840DffEnp','codebase_search','8sgMPSn','16888476phgFwx','400tVhhtQ'];a6_0x3984=function(){return _0x5a9b54;};return a6_0x3984();}
1
+ function a6_0x2d53(){const _0x5c4ca4=['18nwlIDY','7891156fQAbfu','23830wREeEn','7564256NJLYxi','1866944yaDRlV','3020880ldgvvg','668274zTkOrO','7092138efZMQu'];a6_0x2d53=function(){return _0x5c4ca4;};return a6_0x2d53();}(function(_0x517afc,_0x230d65){const _0x5454af=a6_0xf094,_0x6464c8=_0x517afc();while(!![]){try{const _0x5cca16=-parseInt(_0x5454af(0x11c))/0x1*(parseInt(_0x5454af(0x11a))/0x2)+-parseInt(_0x5454af(0x120))/0x3+-parseInt(_0x5454af(0x11e))/0x4+parseInt(_0x5454af(0x11f))/0x5+-parseInt(_0x5454af(0x121))/0x6+parseInt(_0x5454af(0x11b))/0x7+parseInt(_0x5454af(0x11d))/0x8;if(_0x5cca16===_0x230d65)break;else _0x6464c8['push'](_0x6464c8['shift']());}catch(_0x130e94){_0x6464c8['push'](_0x6464c8['shift']());}}}(a6_0x2d53,0x904b5));export const TOOL_NAMES={'EDIT_FILE':'edit_file','CODEBASE_SEARCH':'codebase_search','GITHUB_CODEBASE_SEARCH':'github_codebase_search'};function a6_0xf094(_0x4405e2,_0x5424cd){_0x4405e2=_0x4405e2-0x11a;const _0x2d53da=a6_0x2d53();let _0xf09465=_0x2d53da[_0x4405e2];return _0xf09465;}export const ALL_TOOL_NAMES=Object['values'](TOOL_NAMES);export const KNOWN_TOOL_NAMES=new Set(ALL_TOOL_NAMES);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morphllm/morphmcp",
3
- "version": "0.8.183",
3
+ "version": "0.8.184",
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.173",
38
+ "@morphllm/morphsdk": "0.2.174",
39
39
  "@vscode/ripgrep": "^1.15.14",
40
40
  "axios": "^1.6.0",
41
41
  "chalk": "^5.3.0",