@morphllm/morphmcp 0.8.183 → 0.8.185

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_0x35c683=a0_0x2a96;(function(_0x451925,_0x280bd9){const _0x23f1ac=a0_0x2a96,_0x111cb1=_0x451925();while(!![]){try{const _0x112bf4=-parseInt(_0x23f1ac(0x106))/0x1+-parseInt(_0x23f1ac(0x129))/0x2+parseInt(_0x23f1ac(0xe3))/0x3+parseInt(_0x23f1ac(0xbd))/0x4+parseInt(_0x23f1ac(0xfd))/0x5+-parseInt(_0x23f1ac(0x11c))/0x6*(parseInt(_0x23f1ac(0x92))/0x7)+-parseInt(_0x23f1ac(0xa3))/0x8;if(_0x112bf4===_0x280bd9)break;else _0x111cb1['push'](_0x111cb1['shift']());}catch(_0x5ebec9){_0x111cb1['push'](_0x111cb1['shift']());}}}(a0_0x2da1,0x4ce63));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_0x4c1682 from'fs/promises';import a0_0xc22154 from'path';import a0_0x44e459 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';function a0_0x2da1(){const _0x515999=['1205067ETTmLJ','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','list_directory\x20','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','roots','Morph\x20Edit\x20Preview','node_modules','\x0a</file>','.\x20Changes:\x20','Applied','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','data','setNotificationHandler','tool_calls','optional','timeout','source','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','api-key','WarpGrep\x20sub-tool\x20errors:\x20','describe','linesRemoved','name','Rules:\x0a','warn','Error:\x20','2720160SVOCGE','messages','parse','code','application/json','codebase_search','instruction','filePath','https://morphllm.com/api/error-report','476741SvwUdS','\x0a...\x20(truncated,\x20total:\x20','pattern','-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a','FileNotFound','-\x20Grepped\x20\x27','isArray','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','getClientCapabilities','edit_file','now','unknown','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','<file\x20path=\x22','\x20error(s)','tool','normalize','-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a','-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a','grep','MORPH_LARGE_APPLY','137490gVLGkZ','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','target_file','Parent\x20directory\x20does\x20not\x20exist:\x20','terminated','env','grep_search','[github_codebase_search]\x20Failed\x20in\x20','MCP','morph-v3-large','join','\x20-\x20','unknown\x20error','375308WkAiIq','package.json','new_string','\x20\x20morph-mcp','etimedout','API\x20error\x20(auth/rate-limit)','success','post','Failed\x20to\x20read\x20file:\x20','\x0aExamples:','trim','WarpGrepError','argv','turns','warp_grep_complete','setRequestHandler','Invalid\x20arguments:\x20','utf-8','`\x20in\x20`','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','Created\x20File','metadata','completionId','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','file_read_failed','push','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','MORPH_API_KEY','catch','exit','all','Relevant\x20context\x20found:','listRoots','context','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.','message','version','morph-warp-grep-v2.1','linesAdded','response','files','stack','Warning:\x20','LocalRipgrepProvider','target_filepath','enum','tool_call_id','has','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','tsconfig.json','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.','Parameters:\x0a','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','GITHUB_CODEBASE_SEARCH','\x20as\x20allowed\x20directory','UnknownError','\x20disabled\x20via\x20DISABLED_TOOLS','string','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','morph-','text','cwd','Failed\x20to\x20request\x20roots\x20from\x20client:','Unknown\x20tool:\x20','file_path','timed\x20out','morph-v3-fast','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','search_string','**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','Fatal\x20error\x20running\x20server:','map','provider_created','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','indexOf','\x22>\x0a','GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','function','finish','@morphllm/morphmcp\x20','terminationReason','github_url','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Cargo.toml','list_directory','sep','Repository\x20identifier','oninitialized','morph-mcp','go.mod','path_validation_failed','params','runWarpGrep_call','readFile','constructor','added\x20','ms.\x20Success:\x20','every','homedir','false','Workspace\x20mode\x20enabled:\x20Using\x20','includes','Example\x20format:\x0a','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','changes','read\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','min','owner_repo','match','FileReadError','grep\x20\x27','size','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','errors','BinaryFile','Tool\x20','glob','read','content','file_read_complete','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','--help','array','Warning:\x20Workspace\x20fallback\x20failed:\x20','glob\x20\x27','-\x20Read\x20file\x20`','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','\x22>\x0aError\x20reading\x20file:\x20','timings','DISABLED_TOOLS','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','.\x20Path:\x20','sk-','Here\x20is\x20the\x20content\x20of\x20files:\x0a','91YuiFwR','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','pyproject.toml','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.','dirname','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','resolve','0.2.0','Error\x20accessing\x20directory\x20','toLowerCase','linesModified','❌\x20Morph\x20Edit\x20Failed:\x20','\x20is\x20not\x20a\x20directory','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','Unknown\x20error','some','ReadError','23824KpZoug','repo_path',',\x20removed\x20','floor','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','length','RipgrepNotAvailable','mcp-filesystem','github_search_start','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','EDIT_FILE','lines','filter','CODEBASE_SEARCH','safeParse','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','.cursor','basename','role','tool_call_error','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','GitHub\x20search\x20failed:\x20','branch','\x22.\x20Known\x20tools:\x20','-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a','ms:','1338104ZvqJVI','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','status','-\x20Preserve\x20exact\x20indentation\x0a','realpath','command','PWD','Disabled\x20tools:\x20','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','connect','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','\x20chars)','Specific\x20commit\x20hash\x20to\x20search','code_edit','ENABLE_WORKSPACE_MODE','path','edit','slice','startsWith','object','debug','-\x20Listed\x20directory\x20`','error','\x0aOptions:','TimeoutError','split','\x20(new\x20file)','dryRun','Morph\x20Edit\x20','completed_with_file_errors','assistant','log','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','default','SymlinkError','isDirectory','File\x20read\x20error:','instructions'];a0_0x2da1=function(){return _0x515999;};return a0_0x2da1();}import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0xffc5fc from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function a0_0x2a96(_0x23892f,_0x3f3a3d){_0x23892f=_0x23892f-0x8c;const _0x2da193=a0_0x2da1();let _0x2a96cc=_0x2da193[_0x23892f];return _0x2a96cc;}function fixPathRepetition(_0x4d3cd5){const _0x3b5290=a0_0x2a96,_0x4e15d4=_0x4d3cd5['split'](a0_0xc22154[_0x3b5290(0x17f)])['filter'](Boolean);if(_0x4e15d4[_0x3b5290(0xa8)]<0x2)return null;for(let _0x1e1d9e=Math[_0x3b5290(0xa6)](_0x4e15d4[_0x3b5290(0xa8)]/0x2);_0x1e1d9e>=0x1;_0x1e1d9e--){for(let _0x327082=0x0;_0x327082<=_0x4e15d4[_0x3b5290(0xa8)]-0x2*_0x1e1d9e;_0x327082++){const _0x583351=_0x4e15d4[_0x3b5290(0xce)](_0x327082,_0x327082+_0x1e1d9e),_0x1a649a=_0x4e15d4[_0x3b5290(0xce)](_0x327082+_0x1e1d9e,_0x327082+0x2*_0x1e1d9e);if(_0x583351[_0x3b5290(0x18b)]((_0x9fd856,_0x3a891c)=>_0x9fd856===_0x1a649a[_0x3a891c])){const _0x1ef36b=[..._0x4e15d4[_0x3b5290(0xce)](0x0,_0x327082),..._0x4e15d4[_0x3b5290(0xce)](_0x327082+_0x1e1d9e)];return a0_0xc22154[_0x3b5290(0x17f)]+_0x1ef36b[_0x3b5290(0x126)](a0_0xc22154['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x3b66d5=a0_0x2a96;try{const _0x5b8ce6=require('../package.json');return _0x5b8ce6[_0x3b66d5(0x14d)]??_0x3b66d5(0x112);}catch(_0x17ddc6){return logMcpStderr(_0x3b66d5(0x15d),_0x17ddc6),_0x3b66d5(0x112);}}function printHelp(){const _0x557b7e=a0_0x2a96;console[_0x557b7e(0xdc)](_0x557b7e(0x179)+getPackageVersion()),console['log'](_0x557b7e(0x93)),console[_0x557b7e(0xdc)](_0x557b7e(0xd4)),console[_0x557b7e(0xdc)]('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console['log']('\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit'),console[_0x557b7e(0xdc)](_0x557b7e(0xe6)),console[_0x557b7e(0xdc)](_0x557b7e(0x132)),console[_0x557b7e(0xdc)](_0x557b7e(0x12c)),console[_0x557b7e(0xdc)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0x35c683(0x135)][a0_0x35c683(0xce)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set([a0_0x35c683(0x1a4),'-h']);cliArgs['some'](_0x5057dc=>VERSION_FLAGS[a0_0x35c683(0x158)](_0x5057dc))&&(console[a0_0x35c683(0xdc)](a0_0x35c683(0x179)+getPackageVersion()),process[a0_0x35c683(0x146)](0x0));cliArgs[a0_0x35c683(0xa1)](_0x3222f5=>HELP_FLAGS[a0_0x35c683(0x158)](_0x3222f5))&&(printHelp(),process[a0_0x35c683(0x146)](0x0));function getCliArg(_0x46694e){const _0xb8ced5=a0_0x35c683;for(let _0x6294eb=0x0;_0x6294eb<cliArgs[_0xb8ced5(0xa8)];_0x6294eb++){const _0x294f11=cliArgs[_0x6294eb];if(_0x294f11[_0xb8ced5(0xcf)]('--'+_0x46694e+'='))return _0x294f11['slice'](('--'+_0x46694e+'=')[_0xb8ced5(0xa8)]);if(_0x294f11==='--'+_0x46694e&&_0x6294eb+0x1<cliArgs[_0xb8ced5(0xa8)])return cliArgs[_0x6294eb+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x35c683(0xa8)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x35c683(0x158)](arg)||HELP_FLAGS[a0_0x35c683(0x158)](arg))continue;if(arg[a0_0x35c683(0xcf)]('--api-key='))continue;if(arg==='--api-key'){i++;continue;}args[a0_0x35c683(0x142)](arg);}const WORKSPACE_ROOT=process[a0_0x35c683(0x121)]['WORKSPACE_ROOT']||process[a0_0x35c683(0x121)][a0_0x35c683(0xc3)]||process[a0_0x35c683(0x167)](),ENABLE_WORKSPACE_MODE=process['env'][a0_0x35c683(0xcb)]!==a0_0x35c683(0x18d),MORPH_API_KEY=getCliArg(a0_0x35c683(0xf5))??process[a0_0x35c683(0x121)][a0_0x35c683(0x144)],MORPH_API_URL=process[a0_0x35c683(0x121)]['MORPH_API_URL'],MORPH_LARGE_APPLY=process[a0_0x35c683(0x121)][a0_0x35c683(0x11b)]!==a0_0x35c683(0x18d),MORPH_WARP_GREP_TIMEOUT=process[a0_0x35c683(0x121)]['MORPH_WARP_GREP_TIMEOUT']?parseInt(process[a0_0x35c683(0x121)]['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x35c683(0x121)]['DISABLED_TOOLS']?new Set(process[a0_0x35c683(0x121)][a0_0x35c683(0x8d)][a0_0x35c683(0xd6)](',')[a0_0x35c683(0x171)](_0x3ac530=>_0x3ac530[a0_0x35c683(0x133)]())['filter'](_0x2ba7cc=>_0x2ba7cc[a0_0x35c683(0xa8)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x35c683(0x19a)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x35c683(0x158)](tool)&&console['error']('Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22'+tool+a0_0x35c683(0xba)+[...KNOWN_TOOL_NAMES][a0_0x35c683(0x126)](',\x20'));}console[a0_0x35c683(0xd3)](a0_0x35c683(0xc4)+[...DISABLED_TOOLS][a0_0x35c683(0x126)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x35c683(0xcf)](a0_0x35c683(0x90))&&!MORPH_API_KEY[a0_0x35c683(0xcf)](a0_0x35c683(0x165))&&logMcpStderr(a0_0x35c683(0xed));async function reportMorphError(_0x454181){const _0x5b2f46=a0_0x35c683;try{await a0_0xffc5fc[_0x5b2f46(0x130)](_0x5b2f46(0x105),{..._0x454181,'timestamp':new Date()['toISOString'](),'source':_0x454181['source']||_0x5b2f46(0xaa),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x454181[_0x5b2f46(0x14a)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x5b2f46(0x101),'Authorization':'Bearer\x20'+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x1d0930,_0x4eaf85){const _0x591947=a0_0x35c683;if(_0x1d0930&&typeof _0x1d0930===_0x591947(0xd0)&&'status'in _0x1d0930)return _0x1d0930['status'];if(_0x1d0930&&typeof _0x1d0930===_0x591947(0xd0)&&_0x591947(0x150)in _0x1d0930)return _0x1d0930[_0x591947(0x150)]?.[_0x591947(0xbf)];const _0x2e6c1d=_0x4eaf85[_0x591947(0x197)](/\b(401|429)\b/);return _0x2e6c1d?parseInt(_0x2e6c1d[0x1],0xa):null;}function handleMorphAPIError(_0x3654ff){const _0x124770=a0_0x35c683,_0x39e272=_0x3654ff instanceof Error?_0x3654ff[_0x124770(0x14c)]:String(_0x3654ff),_0x247c19=extractStatusCode(_0x3654ff,_0x39e272);switch(_0x247c19){case 0x191:return{'content':[{'type':'text','text':_0x124770(0x15b)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x124770(0x166),'text':_0x124770(0xbe)}],'isError':!![]};default:return null;}}args[a0_0x35c683(0xa8)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x35c683(0xc5)),logMcpStderr(a0_0x35c683(0xe4)),logMcpStderr(a0_0x35c683(0x159)),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr(a0_0x35c683(0x17c)),logMcpStderr(a0_0x35c683(0xf4)));function normalizePath(_0x551ab9){const _0xedcca1=a0_0x35c683;return a0_0xc22154[_0xedcca1(0x117)](_0x551ab9);}function expandHome(_0x91538e){const _0x31cc20=a0_0x35c683;if(_0x91538e[_0x31cc20(0xcf)]('~/')||_0x91538e==='~')return a0_0xc22154[_0x31cc20(0x126)](a0_0x44e459[_0x31cc20(0x18c)](),_0x91538e[_0x31cc20(0xce)](0x1));return _0x91538e;}let allowedDirectories=await Promise['all'](args[a0_0x35c683(0x171)](async _0xbc9c90=>{const _0x801e6c=a0_0x35c683,_0x3c8631=expandHome(_0xbc9c90),_0x30d215=a0_0xc22154[_0x801e6c(0x98)](_0x3c8631);try{const _0x54b273=await a0_0x4c1682[_0x801e6c(0xc1)](_0x30d215);return normalizePath(_0x54b273);}catch(_0x1ad87d){return normalizePath(_0x30d215);}}));if(ENABLE_WORKSPACE_MODE&&args['length']===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x35c683(0x142)](workspaceDir),logMcpStderr(a0_0x35c683(0x18e)+workspaceDir+a0_0x35c683(0x160)));}catch(a0_0x5e7259){logMcpStderr(a0_0x35c683(0x97)+a0_0x5e7259);}async function detectWorkspaceRoot(_0x11e21d){const _0x49afe3=a0_0x35c683;let _0x4df3a5=a0_0xc22154[_0x49afe3(0x98)](_0x11e21d);const _0x27754a=['.git','.vscode',_0x49afe3(0x12a),_0x49afe3(0x17d),_0x49afe3(0x94),_0x49afe3(0x183),_0x49afe3(0xb3),_0x49afe3(0x15a),'composer.json'];while(_0x4df3a5!==a0_0xc22154[_0x49afe3(0x96)](_0x4df3a5)){for(const _0x3e7082 of _0x27754a){const _0xe38176=a0_0xc22154[_0x49afe3(0x126)](_0x4df3a5,_0x3e7082);try{return await a0_0x4c1682['access'](_0xe38176),normalizePath(_0x4df3a5);}catch{}}_0x4df3a5=a0_0xc22154[_0x49afe3(0x96)](_0x4df3a5);}return normalizePath(_0x11e21d);}await Promise[a0_0x35c683(0x147)](args[a0_0x35c683(0x171)](async _0x532324=>{const _0x2c7108=a0_0x35c683;try{const _0x107dcb=await a0_0x4c1682['stat'](expandHome(_0x532324));!_0x107dcb[_0x2c7108(0xe0)]()&&(logMcpStderr(_0x2c7108(0xfc)+_0x532324+_0x2c7108(0x9e)),process[_0x2c7108(0x146)](0x1));}catch(_0x46c054){logMcpStderr(_0x2c7108(0x9a)+_0x532324+':',_0x46c054),process[_0x2c7108(0x146)](0x1);}}));async function validatePath(_0x6d1fe5){const _0x1274a1=a0_0x35c683,_0x3e1d26=expandHome(_0x6d1fe5),_0x4157a7=a0_0xc22154['resolve'](_0x3e1d26);logger[_0x1274a1(0xd1)](_0x1274a1(0x124),'path_validation_start',{'raw_path':_0x6d1fe5,'absolute':_0x4157a7});try{const _0x33c3ca=await a0_0x4c1682[_0x1274a1(0xc1)](_0x4157a7);return logger[_0x1274a1(0xd1)](_0x1274a1(0x124),'path_validation_resolved',{'resolved':_0x33c3ca,'symlink':_0x33c3ca!==_0x4157a7}),_0x33c3ca;}catch(_0x455743){if(_0x455743[_0x1274a1(0x100)]==='ENOENT'){const _0x1761f6=a0_0xc22154[_0x1274a1(0x96)](_0x4157a7);try{const _0x1666b8=await a0_0x4c1682[_0x1274a1(0xc1)](_0x1761f6),_0x119896=a0_0xc22154[_0x1274a1(0x126)](_0x1666b8,a0_0xc22154[_0x1274a1(0xb4)](_0x4157a7));return logger['debug'](_0x1274a1(0x124),'path_validation_resolved',{'resolved':_0x119896,'new_file':!![]}),_0x119896;}catch{logger[_0x1274a1(0xd3)](_0x1274a1(0x124),'path_validation_failed',{'raw_path':_0x6d1fe5,'error':_0x1274a1(0x11f)+_0x1761f6});throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x1761f6);}}logger[_0x1274a1(0xd3)](_0x1274a1(0x124),_0x1274a1(0x184),{'raw_path':_0x6d1fe5,'error':_0x455743[_0x1274a1(0x14c)]});throw _0x455743;}}const MorphEditFileArgsSchema=z[a0_0x35c683(0xd0)]({'path':z[a0_0x35c683(0x163)](),'code_edit':z[a0_0x35c683(0x163)]()[a0_0x35c683(0xf7)](a0_0x35c683(0xdd)),'instruction':z[a0_0x35c683(0x163)]()[a0_0x35c683(0xf7)](a0_0x35c683(0x173)),'dryRun':z['boolean']()[a0_0x35c683(0xde)](![])['describe']('Preview\x20changes\x20without\x20applying\x20them.')}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x35c683(0x14b),WarpGrepArgsSchema=z[a0_0x35c683(0xd0)]({'search_string':z[a0_0x35c683(0x163)]()[a0_0x35c683(0xf7)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x35c683(0x163)]()[a0_0x35c683(0xf7)](a0_0x35c683(0x194)),'search_type':z[a0_0x35c683(0x156)]([a0_0x35c683(0xde),a0_0x35c683(0xe9)])[a0_0x35c683(0xf1)]()[a0_0x35c683(0xf7)](a0_0x35c683(0xa7))}),WarpGrepGitHubArgsSchema=z[a0_0x35c683(0xd0)]({'search_string':z[a0_0x35c683(0x163)]()[a0_0x35c683(0xf7)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x35c683(0x163)]()[a0_0x35c683(0xf1)]()[a0_0x35c683(0xf7)](a0_0x35c683(0x176)),'owner_repo':z['string']()[a0_0x35c683(0xf1)]()['describe']('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z[a0_0x35c683(0x163)]()[a0_0x35c683(0xf1)]()['describe']('Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)')}),CodebaseSearchArgsSchema=z[a0_0x35c683(0xd0)]({'query':z[a0_0x35c683(0x163)]()[a0_0x35c683(0xf7)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x35c683(0x163)]()[a0_0x35c683(0xf7)](a0_0x35c683(0x180)),'branch':z[a0_0x35c683(0x163)]()[a0_0x35c683(0xf1)]()[a0_0x35c683(0xf7)](a0_0x35c683(0x10d)),'commitHash':z[a0_0x35c683(0x163)]()[a0_0x35c683(0xf1)]()[a0_0x35c683(0xf7)](a0_0x35c683(0xc9)),'targetDirectories':z[a0_0x35c683(0x1a5)](z[a0_0x35c683(0x163)]())['default']([])[a0_0x35c683(0xf7)]('Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all'),'limit':z['number']()[a0_0x35c683(0xf1)]()[a0_0x35c683(0xde)](0xa)[a0_0x35c683(0xf7)]('Max\x20results\x20to\x20return')}),server=new Server({'name':a0_0x35c683(0x182),'version':'0.2.0'},{'capabilities':{'tools':{}}});server[a0_0x35c683(0x138)](ListToolsRequestSchema,async()=>{const _0x1f5841=a0_0x35c683,_0x4b26a3=[{'name':TOOL_NAMES['EDIT_FILE'],'description':_0x1f5841(0x16f)+_0x1f5841(0x15c)+'-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a'+_0x1f5841(0xbb)+_0x1f5841(0x109)+_0x1f5841(0x1a3)+_0x1f5841(0x190)+'//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a'+_0x1f5841(0xfa)+_0x1f5841(0x118)+_0x1f5841(0xc0)+_0x1f5841(0x119)+_0x1f5841(0xac),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x1f5841(0xb0)],'description':_0x1f5841(0x11d)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x1f5841(0x13c)+_0x1f5841(0x143)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x49e866=_0x4b26a3[_0x1f5841(0xaf)](_0x2dd1d3=>{const _0x5824c6=_0x1f5841;if(DISABLED_TOOLS[_0x5824c6(0x158)](_0x2dd1d3[_0x5824c6(0xf9)]))return console[_0x5824c6(0xd3)](_0x5824c6(0x19e)+_0x2dd1d3[_0x5824c6(0xf9)]+_0x5824c6(0x162)),![];if('requiresApiKey'in _0x2dd1d3&&_0x2dd1d3['requiresApiKey']&&!MORPH_API_KEY)return logMcpStderr(_0x5824c6(0x153)+_0x2dd1d3[_0x5824c6(0xf9)]+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x49e866[_0x1f5841(0x171)](_0x28e456=>({'name':_0x28e456[_0x1f5841(0xf9)],'description':_0x28e456['description'],'inputSchema':_0x28e456['inputSchema']}))};}),server[a0_0x35c683(0x138)](CallToolRequestSchema,async _0x320ac6=>{const _0x205f40=a0_0x35c683,{name:_0x243636,arguments:_0x1cbe99}=_0x320ac6[_0x205f40(0x185)],_0x16db6d=Date['now']();logger[_0x205f40(0xd1)]('MCP','tool_call_received',{'tool':_0x243636,'args':_0x243636===_0x205f40(0x110)?{'path':_0x1cbe99?.[_0x205f40(0xcc)],'instruction':_0x1cbe99?.[_0x205f40(0x103)]||_0x1cbe99?.[_0x205f40(0xe2)],'dryRun':_0x1cbe99?.[_0x205f40(0xd8)]}:_0x1cbe99});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x205f40(0x166),'text':_0x205f40(0x113)}],'isError':!![]};if(!MORPH_API_KEY['startsWith'](_0x205f40(0x90))&&!MORPH_API_KEY[_0x205f40(0xcf)](_0x205f40(0x165)))return{'content':[{'type':_0x205f40(0x166),'text':'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.'}],'isError':!![]};if(DISABLED_TOOLS[_0x205f40(0x158)](_0x243636))return{'content':[{'type':_0x205f40(0x166),'text':'Tool\x20\x22'+_0x243636+_0x205f40(0x140)}],'isError':![]};switch(_0x243636){case TOOL_NAMES[_0x205f40(0xad)]:{let _0x349281=_0x1cbe99;if(_0x349281&&typeof _0x349281===_0x205f40(0xd0)){if(!('path'in _0x349281)){const _0x37c408=_0x349281[_0x205f40(0x11e)]??_0x349281[_0x205f40(0x104)]??_0x349281[_0x205f40(0x155)]??_0x349281[_0x205f40(0x16a)]??_0x349281['file'];if(_0x37c408)_0x349281={..._0x349281,'path':_0x37c408};}_0x205f40(0xe2)in _0x349281&&!('instruction'in _0x349281)&&(_0x349281={..._0x349281,'instruction':_0x349281[_0x205f40(0xe2)]});if(!(_0x205f40(0xca)in _0x349281)){const _0x5848e6=_0x349281[_0x205f40(0x100)]??_0x349281[_0x205f40(0x12b)]??_0x349281[_0x205f40(0x1a1)]??_0x349281[_0x205f40(0xcd)];if(_0x5848e6)_0x349281={..._0x349281,'code_edit':_0x5848e6};}}const _0x29d834=MorphEditFileArgsSchema[_0x205f40(0xb1)](_0x349281);if(!_0x29d834['success'])throw new Error(_0x205f40(0x15e)+_0x29d834[_0x205f40(0xd3)]);const _0x271a56=await validatePath(_0x29d834[_0x205f40(0xee)][_0x205f40(0xcc)]);let _0x441132=null,_0x42500a=!![],_0x48847d=null;try{_0x441132=await a0_0x4c1682['readFile'](_0x271a56,_0x205f40(0x13a)),logger['debug']('MCP',_0x205f40(0x1a2),{'path':_0x271a56,'size_bytes':_0x441132[_0x205f40(0xa8)]});}catch(_0x99302e){const _0x1a54c0=_0x99302e['code'];_0x1a54c0==='ENOENT'?(_0x42500a=![],_0x441132='',logger[_0x205f40(0xd1)](_0x205f40(0x124),_0x205f40(0x1a2),{'path':_0x271a56,'exists':![]})):(_0x48847d=_0x205f40(0x131)+(_0x1a54c0||'unknown')+_0x205f40(0x127)+(_0x99302e instanceof Error?_0x99302e[_0x205f40(0x14c)]:String(_0x99302e)),logger[_0x205f40(0xd3)](_0x205f40(0x124),_0x205f40(0x141),{'path':_0x271a56,'error':_0x48847d}),logMcpStderr(_0x205f40(0x153)+_0x48847d));}let _0xbaa3b2;try{const _0xc276aa=MORPH_API_KEY;if(!_0xc276aa)throw new Error(_0x205f40(0x9f));const _0x24aa56=a0_0xc22154['dirname'](_0x271a56),_0x446ff8=a0_0xc22154[_0x205f40(0xb4)](_0x271a56);logger[_0x205f40(0xd1)](_0x205f40(0x124),'api_request_start',{'model':_0x205f40(0x16c),'path':_0x29d834['data'][_0x205f40(0xcc)],'instruction_len':_0x29d834[_0x205f40(0xee)]['instruction'][_0x205f40(0xa8)],'code_edit_len':_0x29d834[_0x205f40(0xee)][_0x205f40(0xca)][_0x205f40(0xa8)],'original_code_len':_0x441132?.[_0x205f40(0xa8)]??0x0,'dry_run':_0x29d834[_0x205f40(0xee)]['dryRun']});const _0x4c1b6a=Date['now'](),_0x2999c2=await executeEditFile({'target_filepath':_0x446ff8,'code_edit':_0x29d834[_0x205f40(0xee)][_0x205f40(0xca)],'instruction':_0x29d834[_0x205f40(0xee)][_0x205f40(0x103)]},{'morphApiKey':_0xc276aa,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x24aa56,'autoWrite':!_0x29d834[_0x205f40(0xee)]['dryRun'],'generateUdiff':![],'debug':![]}),_0x4506ce=Date[_0x205f40(0x111)]()-_0x4c1b6a;_0xbaa3b2=_0x2999c2[_0x205f40(0x13f)];if(!_0x2999c2[_0x205f40(0x12f)])throw new Error(_0x2999c2['error']||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0xe2d6db=_0x2999c2[_0x205f40(0x192)],_0x379e1c=_0x205f40(0x189)+_0xe2d6db['linesAdded']+_0x205f40(0xa5)+_0xe2d6db[_0x205f40(0xf8)]+',\x20modified\x20'+_0xe2d6db[_0x205f40(0x9c)];logger[_0x205f40(0xd1)]('MCP','tool_call_complete',{'tool':_0x205f40(0x110),'success':!![],'latency_ms':Date[_0x205f40(0x111)]()-_0x16db6d,'edit_latency_ms':_0x4506ce,'changes':{'added':_0xe2d6db[_0x205f40(0x14f)],'removed':_0xe2d6db[_0x205f40(0xf8)],'modified':_0xe2d6db[_0x205f40(0x9c)]},'completion_id':_0xbaa3b2});if(_0x29d834[_0x205f40(0xee)][_0x205f40(0xd8)])return{'content':[{'type':'text','text':_0x205f40(0xe8)+(_0x42500a?'':_0x205f40(0xd7))+':\x20'+_0x29d834[_0x205f40(0xee)][_0x205f40(0x103)]+'.\x20Changes:\x20'+_0x379e1c+_0x205f40(0x8f)+_0x29d834[_0x205f40(0xee)]['path']+'.'}]};return{'content':[{'type':_0x205f40(0x166),'text':_0x205f40(0xd9)+(_0x42500a?_0x205f40(0xec):_0x205f40(0x13d))+':\x20'+_0x29d834['data'][_0x205f40(0x103)]+_0x205f40(0xeb)+_0x379e1c+_0x205f40(0x8f)+_0x29d834[_0x205f40(0xee)]['path']+'.'}]};}catch(_0x56b238){const _0x587914=handleMorphAPIError(_0x56b238);if(_0x587914)return logger['error'](_0x205f40(0x124),_0x205f40(0xb6),{'tool':'edit_file','error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date['now']()-_0x16db6d}),_0x587914;const _0x2b1756=_0x56b238 instanceof Error?_0x56b238['message']:String(_0x56b238);return logger[_0x205f40(0xd3)](_0x205f40(0x124),_0x205f40(0xb6),{'tool':_0x205f40(0x110),'error':_0x2b1756,'path':_0x29d834[_0x205f40(0xee)][_0x205f40(0xcc)],'validated_path':_0x271a56,'latency_ms':Date['now']()-_0x16db6d,'stack':_0x56b238 instanceof Error?_0x56b238[_0x205f40(0x152)]:undefined}),reportMorphError({'error_message':_0x2b1756,'error_type':_0x56b238 instanceof Error?_0x56b238[_0x205f40(0x188)][_0x205f40(0xf9)]:_0x205f40(0x161),'context':{'tool':_0x205f40(0x110),'completion_id':_0xbaa3b2,'file_path':_0x29d834[_0x205f40(0xee)]['path'],'validated_path':_0x271a56,'instruction':_0x29d834[_0x205f40(0xee)][_0x205f40(0x103)],'model':MORPH_LARGE_APPLY?_0x205f40(0x125):'morph-v3-fast','dry_run':_0x29d834[_0x205f40(0xee)][_0x205f40(0xd8)],'file_exists':_0x42500a,'file_read_error':_0x48847d,'file_readable':_0x441132!==null,'request_content':{'path':_0x29d834['data'][_0x205f40(0xcc)],'code_edit':_0x29d834[_0x205f40(0xee)][_0x205f40(0xca)],'instruction':_0x29d834[_0x205f40(0xee)]['instruction'],'original_code':_0x441132!==null?_0x441132[_0x205f40(0xa8)]>0xc350?_0x441132['substring'](0x0,0xc350)+_0x205f40(0x107)+_0x441132[_0x205f40(0xa8)]+_0x205f40(0xc8):_0x441132:'[could\x20not\x20read\x20file:\x20'+(_0x48847d||_0x205f40(0x128))+']','original_code_length':_0x441132?.['length']??0x0,'model':MORPH_LARGE_APPLY?_0x205f40(0x125):_0x205f40(0x16c),'dry_run':_0x29d834[_0x205f40(0xee)][_0x205f40(0xd8)]}},'stack_trace':_0x56b238 instanceof Error?_0x56b238[_0x205f40(0x152)]:undefined,'source':_0x205f40(0xaa)})[_0x205f40(0x145)](()=>{}),{'content':[{'type':_0x205f40(0x166),'text':_0x205f40(0x9d)+_0x2b1756}],'isError':!![]};}}case TOOL_NAMES[_0x205f40(0xb0)]:{const _0x47fb36=WarpGrepArgsSchema[_0x205f40(0xb1)](_0x1cbe99);if(!_0x47fb36['success'])return{'content':[{'type':_0x205f40(0x166),'text':'Invalid\x20arguments:\x20'+_0x47fb36[_0x205f40(0xd3)]}],'isError':!![]};const _0xd5874c=_0x420e64=>{const _0x3d2e67=_0x205f40,_0x3d9de9=[];for(const _0x1b393e of _0x420e64||[]){if(_0x1b393e[_0x3d2e67(0xb5)]==='assistant'&&Array[_0x3d2e67(0x10c)](_0x1b393e[_0x3d2e67(0xf0)]))for(const _0x1e3534 of _0x1b393e[_0x3d2e67(0xf0)]){try{const _0x5131d0=_0x1e3534[_0x3d2e67(0x177)]?.[_0x3d2e67(0xf9)],_0x5c8df5=JSON[_0x3d2e67(0xff)](_0x1e3534[_0x3d2e67(0x177)]?.['arguments']||'{}');if(_0x5131d0===_0x3d2e67(0x122))_0x3d9de9['push'](_0x3d2e67(0x199)+_0x5c8df5[_0x3d2e67(0x108)]+'\x27\x20'+(_0x5c8df5[_0x3d2e67(0xcc)]||'.'));else{if(_0x5131d0===_0x3d2e67(0x1a0))_0x3d9de9[_0x3d2e67(0x142)](_0x3d2e67(0x193)+_0x5c8df5[_0x3d2e67(0xcc)]);else{if(_0x5131d0===_0x3d2e67(0x17e))_0x3d9de9[_0x3d2e67(0x142)](_0x3d2e67(0xe5)+(_0x5c8df5['command']||'.'));else{if(_0x5131d0===_0x3d2e67(0x19f))_0x3d9de9[_0x3d2e67(0x142)](_0x3d2e67(0x1a7)+_0x5c8df5[_0x3d2e67(0x108)]+'\x27\x20'+(_0x5c8df5[_0x3d2e67(0xcc)]||'.'));else _0x5131d0===_0x3d2e67(0x178)&&_0x3d9de9[_0x3d2e67(0x142)]('finish');}}}}catch{}}}return _0x3d9de9;},_0x5a1b95=_0x1d42df=>{const _0x59e437=_0x205f40,_0x3f8a77=[];if(!_0x1d42df||!Array[_0x59e437(0x10c)](_0x1d42df))return _0x3f8a77;const _0xe3abda=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x59e437(0x10a),'tool':_0x59e437(0x1a0)},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x59e437(0x1a0)},{'pattern':/\[READ ERROR\]/,'error_type':_0x59e437(0xa2),'tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x59e437(0x19d),'tool':'read'},{'pattern':/\[RIPGREP ERROR\]/,'error_type':'RipgrepError','tool':_0x59e437(0x11a)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x59e437(0xa9),'tool':'grep'},{'pattern':/\[BINARY FILE\]/,'error_type':_0x59e437(0x19d),'tool':_0x59e437(0x1a0)},{'pattern':/\[SYMLINK\]/,'error_type':_0x59e437(0xdf),'tool':_0x59e437(0x1a0)},{'pattern':/not a text file/,'error_type':_0x59e437(0x19d),'tool':_0x59e437(0x1a0)},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':_0x59e437(0x1a0)},{'pattern':/Error reading file:/,'error_type':_0x59e437(0xa2),'tool':_0x59e437(0x1a0)},{'pattern':/status="error"/,'error_type':'ToolException','tool':'unknown'}];let _0x3df4c1=0x0;for(const _0x5a4805 of _0x1d42df){_0x5a4805[_0x59e437(0xb5)]===_0x59e437(0xdb)&&Array['isArray'](_0x5a4805[_0x59e437(0xf0)])&&_0x3df4c1++;const _0x20e93e=_0x5a4805['content'];if((_0x5a4805[_0x59e437(0xb5)]===_0x59e437(0x116)||_0x5a4805[_0x59e437(0xb5)]==='user')&&_0x20e93e&&typeof _0x20e93e===_0x59e437(0x163))for(const {pattern:_0x3b94dc,error_type:_0x2e3e12,tool:_0x4d7871}of _0xe3abda){const _0x4c7244=_0x20e93e[_0x59e437(0x197)](new RegExp(_0x3b94dc[_0x59e437(0xf3)],'g'));if(_0x4c7244)for(const _0xbb564e of _0x4c7244){const _0x129c90=_0x20e93e[_0x59e437(0x174)](_0xbb564e),_0x11db85=_0x20e93e['substring'](_0x129c90,Math[_0x59e437(0x195)](_0x129c90+0xc8,_0x20e93e[_0x59e437(0xa8)]));_0x3f8a77[_0x59e437(0x142)]({'tool':_0x4d7871,'error_type':_0x2e3e12,'error_message':_0x11db85['split']('\x0a')[0x0],'turn':_0x3df4c1});}}}return _0x3f8a77;};try{const _0x2e0e73=a0_0xc22154[_0x205f40(0x98)](_0x47fb36[_0x205f40(0xee)][_0x205f40(0xa4)]),_0x323f76=_0x47fb36['data']['search_type'],_0x457ea4=_0x323f76===_0x205f40(0xe9)?{'allowNames':['node_modules']}:undefined,_0x4b4622=new LocalRipgrepProvider(_0x2e0e73,undefined,_0x457ea4);logger[_0x205f40(0xd1)](_0x205f40(0x124),_0x205f40(0x172),{'type':_0x205f40(0x154),'repo_root':_0x2e0e73,'search_type':_0x323f76||_0x205f40(0xde)}),logger[_0x205f40(0xd1)](_0x205f40(0x124),'warp_grep_start',{'query':_0x47fb36[_0x205f40(0xee)][_0x205f40(0x16e)],'repo_root':_0x2e0e73,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x1f9b88=Date[_0x205f40(0x111)](),_0x1e9c08=await runWarpGrep({'searchTerm':_0x47fb36[_0x205f40(0xee)][_0x205f40(0x16e)],'repoRoot':_0x2e0e73,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x4b4622,'search_type':_0x323f76}),_0x1f8205=Date[_0x205f40(0x111)]()-_0x1f9b88,_0x3f1398=_0x1e9c08[_0x205f40(0x178)]?.[_0x205f40(0x13e)]?.[_0x205f40(0x151)]?.[_0x205f40(0xa8)]??0x0;logger['debug']('MCP',_0x205f40(0x137),{'termination':_0x1e9c08['terminationReason'],'turns':_0x1e9c08[_0x205f40(0x8c)]?.[_0x205f40(0x136)]??0x0,'files_found':_0x3f1398,'latency_ms':_0x1f8205});const _0x4c2fd8=_0x5a1b95(_0x1e9c08[_0x205f40(0xfe)]);_0x4c2fd8[_0x205f40(0xa8)]>0x0&&reportMorphError({'error_message':_0x205f40(0xf6)+_0x4c2fd8['length']+_0x205f40(0x115),'error_type':'SubToolError','level':_0x205f40(0xfb),'tool':_0x205f40(0x102),'context':{'repo_path':_0x47fb36[_0x205f40(0xee)][_0x205f40(0xa4)],'query':_0x47fb36[_0x205f40(0xee)]['search_string'],'model':'morph-warp-grep-v2.1','termination_reason':_0x1e9c08[_0x205f40(0x17a)],'sub_tool_errors':_0x4c2fd8,'timings':_0x1e9c08[_0x205f40(0x8c)],'tool_calls':_0xd5874c(_0x1e9c08[_0x205f40(0xfe)]),'messages':_0x1e9c08[_0x205f40(0xfe)]?.[_0x205f40(0x171)](_0x4660a4=>({'role':_0x4660a4['role'],'content':_0x4660a4[_0x205f40(0x1a1)],..._0x4660a4[_0x205f40(0xf0)]?{'tool_calls':_0x4660a4['tool_calls']['length']}:{},..._0x4660a4[_0x205f40(0x157)]?{'tool_call_id':_0x4660a4['tool_call_id']}:{}}))},'source':_0x205f40(0xaa)})[_0x205f40(0x145)](()=>{});let _0x2fa726='';if(_0x1e9c08[_0x205f40(0x17a)]==='completed'&&_0x1e9c08[_0x205f40(0x178)]?.[_0x205f40(0x13e)]?.['files']){const _0x5ec049=_0x1e9c08[_0x205f40(0x178)][_0x205f40(0x13e)]['files'];if(_0x5ec049[_0x205f40(0xa8)]===0x0)return _0x2fa726=_0x1e9c08['finish']['payload']||_0x205f40(0x1a9),{'content':[{'type':_0x205f40(0x166),'text':_0x2fa726}]};const _0xb6e96f=[],_0x211b95=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x311043 of _0x1e9c08['messages']){if(_0x311043[_0x205f40(0xb5)]===_0x205f40(0xdb)&&Array[_0x205f40(0x10c)](_0x311043[_0x205f40(0xf0)]))for(const _0x3b0d47 of _0x311043[_0x205f40(0xf0)]){try{const _0x5a9373=_0x3b0d47[_0x205f40(0x177)]?.[_0x205f40(0xf9)],_0x1ff7fa=JSON[_0x205f40(0xff)](_0x3b0d47[_0x205f40(0x177)]?.['arguments']||'{}');if(_0x5a9373===_0x205f40(0x122))_0x211b95['push'](_0x205f40(0x10b)+_0x1ff7fa[_0x205f40(0x108)]+'\x27\x20in\x20`'+(_0x1ff7fa[_0x205f40(0xcc)]||'.')+'`');else{if(_0x5a9373===_0x205f40(0x1a0))_0x211b95['push'](_0x205f40(0x1a8)+_0x1ff7fa[_0x205f40(0xcc)]+'`');else{if(_0x5a9373===_0x205f40(0x17e))_0x211b95['push'](_0x205f40(0xd2)+(_0x1ff7fa[_0x205f40(0xc2)]||'.')+'`');else _0x5a9373===_0x205f40(0x19f)&&_0x211b95[_0x205f40(0x142)]('-\x20Glob\x20search\x20`'+_0x1ff7fa[_0x205f40(0x108)]+_0x205f40(0x13b)+(_0x1ff7fa[_0x205f40(0xcc)]||'.')+'`');}}}catch{}}}_0xb6e96f[_0x205f40(0x142)](_0x211b95[_0x205f40(0x126)]('\x0a'));const _0x2933b0=['',_0x205f40(0x148)];for(const _0x48648c of _0x5ec049){if(_0x48648c[_0x205f40(0xae)]==='*')_0x2933b0[_0x205f40(0x142)]('-\x20'+_0x48648c[_0x205f40(0xcc)]+':*');else{if(Array[_0x205f40(0x10c)](_0x48648c[_0x205f40(0xae)])){const _0xb1d473=_0x48648c[_0x205f40(0xae)][_0x205f40(0x171)](([_0x1fddaa,_0x2c8cef])=>{if(_0x1fddaa===_0x2c8cef)return''+_0x1fddaa;return _0x1fddaa+'-'+_0x2c8cef;});_0x2933b0[_0x205f40(0x142)]('-\x20'+_0x48648c[_0x205f40(0xcc)]+':'+_0xb1d473[_0x205f40(0x126)](','));}else _0x2933b0['push']('-\x20'+_0x48648c[_0x205f40(0xcc)]+':*');}}_0x2933b0[_0x205f40(0x142)](''),_0xb6e96f[_0x205f40(0x142)](_0x2933b0[_0x205f40(0x126)]('\x0a')),_0xb6e96f[_0x205f40(0x142)](_0x205f40(0x91));const _0x228d2d=[],_0x2e170a=[];for(const _0xd7bb26 of _0x5ec049){let _0x3e9232=a0_0xc22154[_0x205f40(0x98)](_0x47fb36['data']['repo_path'],_0xd7bb26[_0x205f40(0xcc)]),_0x234402=null,_0x3c5033=null;try{_0x234402=await a0_0x4c1682[_0x205f40(0x187)](_0x3e9232,{'encoding':_0x205f40(0x13a)});}catch(_0x3569b0){const _0x65358a=fixPathRepetition(_0x3e9232);if(_0x65358a)try{_0x234402=await a0_0x4c1682[_0x205f40(0x187)](_0x65358a,{'encoding':_0x205f40(0x13a)}),_0x3e9232=_0x65358a;}catch{_0x3c5033=_0x3569b0 instanceof Error?_0x3569b0:new Error(String(_0x3569b0));}else _0x3c5033=_0x3569b0 instanceof Error?_0x3569b0:new Error(String(_0x3569b0));}if(_0x234402!==null){const _0x3fef55=_0x234402[_0x205f40(0xd6)](/\r?\n/),_0x2ed25e=[];if(_0xd7bb26[_0x205f40(0xae)]==='*'||!Array['isArray'](_0xd7bb26[_0x205f40(0xae)]))for(let _0x18c8d4=0x1;_0x18c8d4<=_0x3fef55['length'];_0x18c8d4++){const _0xce2438=_0x3fef55[_0x18c8d4-0x1];_0x2ed25e[_0x205f40(0x142)](_0x18c8d4+'|\x20'+_0xce2438);}else for(const [_0x3b960c,_0x344d37]of _0xd7bb26[_0x205f40(0xae)]){_0x2ed25e['length']>0x0&&_0x2ed25e[_0x205f40(0x142)]('');for(let _0x59b90f=_0x3b960c;_0x59b90f<=_0x344d37&&_0x59b90f<=_0x3fef55[_0x205f40(0xa8)];_0x59b90f++){const _0x13f222=_0x3fef55[_0x59b90f-0x1];_0x2ed25e[_0x205f40(0x142)](_0x59b90f+'|\x20'+_0x13f222);}}_0x2e170a[_0x205f40(0x142)]({'path':_0xd7bb26['path'],'content':_0x2ed25e[_0x205f40(0x126)]('\x0a')});}else _0x228d2d[_0x205f40(0x142)](_0x205f40(0x114)+_0xd7bb26[_0x205f40(0xcc)]+_0x205f40(0x1aa)+(_0x3c5033?.[_0x205f40(0x14c)]||_0x205f40(0xa0))+_0x205f40(0xea));}try{const _0x15c090=await compactFileContexts(_0x2e170a,_0x47fb36['data'][_0x205f40(0x16e)],MORPH_API_KEY,MORPH_API_URL);for(const _0x3613b7 of _0x15c090){_0x228d2d[_0x205f40(0x142)](_0x205f40(0x114)+_0x3613b7[_0x205f40(0xcc)]+_0x205f40(0x175)+_0x3613b7[_0x205f40(0x1a1)]+_0x205f40(0xea));}}catch(_0x3e7c65){logger[_0x205f40(0xfb)](_0x205f40(0x124),'compaction_failed',{'error':_0x3e7c65 instanceof Error?_0x3e7c65[_0x205f40(0x14c)]:String(_0x3e7c65),'files_count':_0x2e170a[_0x205f40(0xa8)]});for(const _0x43cd25 of _0x2e170a){_0x228d2d[_0x205f40(0x142)]('<file\x20path=\x22'+_0x43cd25[_0x205f40(0xcc)]+_0x205f40(0x175)+_0x43cd25[_0x205f40(0x1a1)]+_0x205f40(0xea));}}_0xb6e96f[_0x205f40(0x142)](_0x228d2d['join']('\x0a\x0a')),_0x2fa726=_0xb6e96f[_0x205f40(0x126)]('\x0a');const _0x1a2f9e=_0x1e9c08[_0x205f40(0x19c)]?.[_0x205f40(0xaf)](_0x2df4af=>_0x2df4af[_0x205f40(0x14c)]?.['startsWith'](_0x205f40(0xe1)))||[];if(_0x1a2f9e['length']>0x0){const _0x3df723=_0x1a2f9e['map'](_0x5f0d19=>_0x5f0d19[_0x205f40(0x14c)])[_0x205f40(0x126)](';\x20');reportMorphError({'error_message':_0x3df723,'error_type':_0x205f40(0x198),'context':{'tool':_0x205f40(0x102),'repo_path':_0x47fb36[_0x205f40(0xee)][_0x205f40(0xa4)],'query':_0x47fb36[_0x205f40(0xee)][_0x205f40(0x16e)],'model':_0x205f40(0x14e),'termination_reason':_0x205f40(0xda),'error_count':_0x1a2f9e[_0x205f40(0xa8)],'is_timeout':![],'timings':_0x1e9c08[_0x205f40(0x8c)],'files_attempted':_0x5ec049[_0x205f40(0x171)](_0x3bdcc4=>({'path':_0x3bdcc4['path'],'lines':_0x3bdcc4[_0x205f40(0xae)]})),'tool_calls':_0xd5874c(_0x1e9c08[_0x205f40(0xfe)]),'messages':_0x1e9c08[_0x205f40(0xfe)]?.[_0x205f40(0x171)](_0x181915=>({'role':_0x181915[_0x205f40(0xb5)],'content':_0x181915[_0x205f40(0x1a1)],..._0x181915[_0x205f40(0xf0)]?{'tool_calls':_0x181915[_0x205f40(0xf0)][_0x205f40(0xa8)]}:{},..._0x181915['tool_call_id']?{'tool_call_id':_0x181915[_0x205f40(0x157)]}:{}})),'request_content':{'query':_0x47fb36[_0x205f40(0xee)][_0x205f40(0x16e)],'repo_path':_0x47fb36[_0x205f40(0xee)][_0x205f40(0xa4)],'repoRoot':a0_0xc22154[_0x205f40(0x98)](_0x47fb36[_0x205f40(0xee)]['repo_path']),'model':'morph-warp-grep-v2.1'}},'source':_0x205f40(0xaa)})['catch'](()=>{});}}else{if(_0x1e9c08[_0x205f40(0x17a)]===_0x205f40(0x120)&&_0x1e9c08[_0x205f40(0x19c)][_0x205f40(0xa8)]>0x0){const _0x12467a=_0x1e9c08[_0x205f40(0x19c)]['map'](_0xc43bb2=>_0xc43bb2[_0x205f40(0x14c)])[_0x205f40(0x126)](';\x20');_0x2fa726=_0x205f40(0xfc)+_0x12467a;const _0x401d9b=_0x12467a['toLowerCase']()[_0x205f40(0x18f)](_0x205f40(0xf2))||_0x12467a[_0x205f40(0x9b)]()[_0x205f40(0x18f)]('timed\x20out')||_0x12467a['toLowerCase']()[_0x205f40(0x18f)](_0x205f40(0x12d)),_0x17adbd=_0x1e9c08[_0x205f40(0x178)]?.['metadata']?.['files'],_0x548e3e=_0x1e9c08[_0x205f40(0x19c)][0x0];reportMorphError({'error_message':_0x12467a,'error_type':_0x401d9b?_0x205f40(0xd5):_0x548e3e?.[_0x205f40(0x188)]?.[_0x205f40(0xf9)]||_0x205f40(0x134),'context':{'tool':_0x205f40(0x102),'repo_path':_0x47fb36[_0x205f40(0xee)]['repo_path'],'query':_0x47fb36['data'][_0x205f40(0x16e)],'model':_0x205f40(0x14e),'termination_reason':_0x1e9c08[_0x205f40(0x17a)],'error_count':_0x1e9c08['errors'][_0x205f40(0xa8)],'is_timeout':_0x401d9b,'timings':_0x1e9c08[_0x205f40(0x8c)],'files_attempted':_0x17adbd?.[_0x205f40(0x171)](_0x11353f=>({'path':_0x11353f[_0x205f40(0xcc)],'lines':_0x11353f[_0x205f40(0xae)]})),'tool_calls':_0xd5874c(_0x1e9c08[_0x205f40(0xfe)]),'messages':_0x1e9c08['messages']?.[_0x205f40(0x171)](_0x3d5553=>({'role':_0x3d5553['role'],'content':_0x3d5553[_0x205f40(0x1a1)],..._0x3d5553[_0x205f40(0xf0)]?{'tool_calls':_0x3d5553['tool_calls'][_0x205f40(0xa8)]}:{},..._0x3d5553[_0x205f40(0x157)]?{'tool_call_id':_0x3d5553[_0x205f40(0x157)]}:{}})),'request_content':{'query':_0x47fb36['data'][_0x205f40(0x16e)],'repo_path':_0x47fb36[_0x205f40(0xee)][_0x205f40(0xa4)],'repoRoot':a0_0xc22154[_0x205f40(0x98)](_0x47fb36[_0x205f40(0xee)][_0x205f40(0xa4)]),'model':_0x205f40(0x14e)}},'stack_trace':_0x548e3e?.['stack']||undefined,'source':_0x205f40(0xaa)})[_0x205f40(0x145)](()=>{});}else _0x2fa726=_0x205f40(0x191);}return{'content':[{'type':_0x205f40(0x166),'text':_0x2fa726}]};}catch(_0x352c0e){const _0x5ea769=handleMorphAPIError(_0x352c0e);if(_0x5ea769)return logger['error']('MCP',_0x205f40(0xb6),{'tool':_0x205f40(0x102),'error':_0x205f40(0x12e),'latency_ms':Date[_0x205f40(0x111)]()-_0x16db6d}),_0x5ea769;const _0x51955f=_0x352c0e instanceof Error?_0x352c0e[_0x205f40(0x14c)]:String(_0x352c0e);logger['error'](_0x205f40(0x124),_0x205f40(0xb6),{'tool':_0x205f40(0x102),'error':_0x51955f,'repo_path':_0x47fb36['data'][_0x205f40(0xa4)],'query':_0x47fb36[_0x205f40(0xee)][_0x205f40(0x16e)],'latency_ms':Date[_0x205f40(0x111)]()-_0x16db6d});const _0x35ae96=_0x51955f['toLowerCase']()[_0x205f40(0x18f)](_0x205f40(0xf2))||_0x51955f[_0x205f40(0x9b)]()[_0x205f40(0x18f)](_0x205f40(0x16b))||_0x51955f[_0x205f40(0x9b)]()['includes'](_0x205f40(0x12d))||_0x352c0e instanceof Error&&_0x352c0e[_0x205f40(0xf9)]===_0x205f40(0xd5);return reportMorphError({'error_message':_0x51955f,'error_type':_0x35ae96?_0x205f40(0xd5):_0x352c0e instanceof Error?_0x352c0e[_0x205f40(0x188)][_0x205f40(0xf9)]:_0x205f40(0x161),'context':{'tool':'codebase_search','repo_path':_0x47fb36['data']['repo_path'],'query':_0x47fb36[_0x205f40(0xee)][_0x205f40(0x16e)],'model':'morph-warp-grep-v2.1','is_timeout':_0x35ae96,'exception_phase':_0x205f40(0x186),'request_content':{'query':_0x47fb36[_0x205f40(0xee)][_0x205f40(0x16e)],'repo_path':_0x47fb36[_0x205f40(0xee)]['repo_path'],'repoRoot':a0_0xc22154[_0x205f40(0x98)](_0x47fb36[_0x205f40(0xee)][_0x205f40(0xa4)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x352c0e instanceof Error?_0x352c0e[_0x205f40(0x152)]:undefined,'source':_0x205f40(0xaa)})[_0x205f40(0x145)](()=>{}),{'content':[{'type':_0x205f40(0x166),'text':'Error\x20running\x20fast\x20context\x20search:\x20'+_0x51955f}],'isError':![]};}}case TOOL_NAMES[_0x205f40(0x15f)]:{const _0x334992=WarpGrepGitHubArgsSchema[_0x205f40(0xb1)](_0x1cbe99);if(!_0x334992['success'])return{'content':[{'type':_0x205f40(0x166),'text':_0x205f40(0x139)+_0x334992[_0x205f40(0xd3)]}],'isError':!![]};const _0xe2198f=_0x334992[_0x205f40(0xee)][_0x205f40(0x17b)]||_0x334992[_0x205f40(0xee)][_0x205f40(0x196)];if(!_0xe2198f)return{'content':[{'type':_0x205f40(0x166),'text':_0x205f40(0x16d)}],'isError':!![]};const _0x14c3cf=MORPH_API_KEY;if(!_0x14c3cf)throw new Error(_0x205f40(0x9f));const _0x57f4b2=Date[_0x205f40(0x111)]();logger[_0x205f40(0xd1)](_0x205f40(0x124),_0x205f40(0xab),{'identifier':_0xe2198f,'query':_0x334992[_0x205f40(0xee)][_0x205f40(0x16e)],'branch':_0x334992['data'][_0x205f40(0xb9)]});try{const _0x126017=new WarpGrepClient({'morphApiKey':_0x14c3cf,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x179a72=await _0x126017['searchGitHub']({'searchTerm':_0x334992[_0x205f40(0xee)][_0x205f40(0x16e)],'github':_0xe2198f,'branch':_0x334992[_0x205f40(0xee)][_0x205f40(0xb9)]}),_0x74e2a1=Date['now']()-_0x57f4b2;logMcpStderr('[github_codebase_search]\x20Done\x20in\x20'+_0x74e2a1+_0x205f40(0x18a)+_0x179a72[_0x205f40(0x12f)]);const _0x4858f7=formatResult(_0x179a72);return{'content':[{'type':'text','text':_0x4858f7}]};}catch(_0x3b769f){const _0x396d28=handleMorphAPIError(_0x3b769f);if(_0x396d28)return _0x396d28;const _0x44736e=Date['now']()-_0x57f4b2,_0x4e6bbe=_0x3b769f instanceof Error?_0x3b769f[_0x205f40(0x14c)]:String(_0x3b769f);return logMcpStderr(_0x205f40(0x123)+_0x44736e+_0x205f40(0xbc),_0x4e6bbe),reportMorphError({'error_message':_0x4e6bbe,'error_type':_0x3b769f instanceof Error?_0x3b769f[_0x205f40(0x188)]['name']:_0x205f40(0x161),'context':{'tool':'github_codebase_search','github_url':_0xe2198f,'search_string':_0x334992['data']['search_string'],'branch':_0x334992[_0x205f40(0xee)]['branch']},'stack_trace':_0x3b769f instanceof Error?_0x3b769f['stack']:undefined,'source':_0x205f40(0xaa),'tool':'github_codebase_search','latency_ms':_0x44736e})[_0x205f40(0x145)](()=>{}),{'content':[{'type':_0x205f40(0x166),'text':_0x205f40(0xb8)+_0x4e6bbe}],'isError':![]};}}default:throw new Error(_0x205f40(0x169)+_0x243636);}}catch(_0x1d13fe){const _0x1a1922=_0x1d13fe instanceof Error?_0x1d13fe[_0x205f40(0x14c)]:String(_0x1d13fe);return reportMorphError({'error_message':_0x1a1922,'error_type':_0x1d13fe instanceof Error?_0x1d13fe[_0x205f40(0x188)][_0x205f40(0xf9)]:_0x205f40(0x161),'context':{'tool':_0x243636,'arguments':_0x1cbe99?JSON['stringify'](_0x1cbe99)['substring'](0x0,0x1f4):undefined,'mcp_server_version':_0x205f40(0x99)},'stack_trace':_0x1d13fe instanceof Error?_0x1d13fe[_0x205f40(0x152)]:undefined,'source':_0x205f40(0xaa)})[_0x205f40(0x145)](()=>{}),{'content':[{'type':_0x205f40(0x166),'text':_0x205f40(0xfc)+_0x1a1922}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x3b71eb){const _0x4a367f=a0_0x35c683,_0x33820e=await getValidRootDirectories(_0x3b71eb);if(_0x33820e[_0x4a367f(0xa8)]>0x0)allowedDirectories=[..._0x33820e],logMcpStderr(_0x4a367f(0x164)+_0x33820e['length']+'\x20valid\x20directories');else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x2b7bcd=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x2b7bcd&&(allowedDirectories=[_0x2b7bcd],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x2b7bcd));}catch(_0x1ceeb1){logMcpStderr(_0x4a367f(0x1a6)+_0x1ceeb1);}}}server[a0_0x35c683(0xef)](RootsListChangedNotificationSchema,async()=>{const _0x55bdfe=a0_0x35c683;try{const _0x1b1916=await server[_0x55bdfe(0x149)]();_0x1b1916&&'roots'in _0x1b1916&&await updateAllowedDirectoriesFromRoots(_0x1b1916[_0x55bdfe(0xe7)]);}catch(_0x40b5b5){logMcpStderr(_0x55bdfe(0x168),_0x40b5b5 instanceof Error?_0x40b5b5[_0x55bdfe(0x14c)]:String(_0x40b5b5));}}),server[a0_0x35c683(0x181)]=async()=>{const _0x5adac1=a0_0x35c683,_0x3deb55=server[_0x5adac1(0x10f)]();if(_0x3deb55?.[_0x5adac1(0xe7)])try{const _0x4ec39f=await server[_0x5adac1(0x149)]();_0x4ec39f&&_0x5adac1(0xe7)in _0x4ec39f?await updateAllowedDirectoriesFromRoots(_0x4ec39f[_0x5adac1(0xe7)]):logMcpStderr(_0x5adac1(0xb7));}catch(_0x1449e7){logMcpStderr(_0x5adac1(0xb2),_0x1449e7 instanceof Error?_0x1449e7[_0x5adac1(0x14c)]:String(_0x1449e7));}else{if(allowedDirectories[_0x5adac1(0xa8)]>0x0)logMcpStderr(_0x5adac1(0x8e),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x5adac1(0x19b));else throw new Error(_0x5adac1(0x95));}}};async function runServer(){const _0x2d3a88=a0_0x35c683,_0x1469c5=new StdioServerTransport();await server[_0x2d3a88(0xc6)](_0x1469c5),logMcpStderr(_0x2d3a88(0xc7)),allowedDirectories['length']===0x0&&logMcpStderr(_0x2d3a88(0x10e));}runServer()[a0_0x35c683(0x145)](_0x128ef5=>{const _0x5d64a1=a0_0x35c683;logMcpStderr(_0x5d64a1(0x170),_0x128ef5),process[_0x5d64a1(0x146)](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_0x9e9d41=a1_0x42f8;(function(_0x77aeda,_0x52d16c){var _0x1758ea=a1_0x42f8,_0xc79968=_0x77aeda();while(!![]){try{var _0xb7e542=-parseInt(_0x1758ea(0xc5))/0x1+parseInt(_0x1758ea(0xba))/0x2+parseInt(_0x1758ea(0xca))/0x3*(-parseInt(_0x1758ea(0xc4))/0x4)+-parseInt(_0x1758ea(0xbf))/0x5*(-parseInt(_0x1758ea(0xcc))/0x6)+-parseInt(_0x1758ea(0xbe))/0x7+-parseInt(_0x1758ea(0xc6))/0x8*(parseInt(_0x1758ea(0xc1))/0x9)+parseInt(_0x1758ea(0xbb))/0xa;if(_0xb7e542===_0x52d16c)break;else _0xc79968['push'](_0xc79968['shift']());}catch(_0x27b912){_0xc79968['push'](_0xc79968['shift']());}}}(a1_0x4713,0xe6986));import a1_0x2e45e6 from'os';function a1_0x4713(){var _0x416c83=['290322TaLFFd','darwin','2526HzchDS','1949290oICVLb','16661040VQAVeC','error','platform','4785543zHvoux','18415EsDBQK','Windows','45Uqpaen','info','macOS','60wkTlbE','75380CcVFSW','1657816khRehB','map','[os=','Linux'];a1_0x4713=function(){return _0x416c83;};return a1_0x4713();}import{logger}from'./logger.js';export function getOperatingSystemType(_0x25c5c5=a1_0x2e45e6[a1_0x9e9d41(0xbd)]()){var _0x5d7ecb=a1_0x9e9d41;switch(_0x25c5c5){case _0x5d7ecb(0xcb):return _0x5d7ecb(0xc3);case'win32':return _0x5d7ecb(0xc0);case'linux':return _0x5d7ecb(0xc9);default:return'Unknown';}}function a1_0x42f8(_0x496579,_0x1dbab7){_0x496579=_0x496579-0xba;var _0x4713d4=a1_0x4713();var _0x42f840=_0x4713d4[_0x496579];return _0x42f840;}export function formatMcpLogMessage(_0x27f14a,_0x410df7=a1_0x2e45e6[a1_0x9e9d41(0xbd)]()){var _0x1e7539=a1_0x9e9d41;return _0x1e7539(0xc8)+getOperatingSystemType(_0x410df7)+']\x20'+_0x27f14a;}export function logMcpStderr(_0x18f309,..._0x4781f6){var _0x313f80=a1_0x9e9d41;console[_0x313f80(0xbc)](formatMcpLogMessage(_0x18f309),..._0x4781f6),logger[_0x313f80(0xc2)]('MCP',_0x18f309,_0x4781f6['length']?{'args':_0x4781f6[_0x313f80(0xc7)](_0x36b987=>String(_0x36b987))}: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
+ const a2_0x215def=a2_0x3426;(function(_0x3f0f0a,_0x2a31de){const _0x29f835=a2_0x3426,_0x4bde9b=_0x3f0f0a();while(!![]){try{const _0x344b7e=-parseInt(_0x29f835(0x118))/0x1*(-parseInt(_0x29f835(0x110))/0x2)+-parseInt(_0x29f835(0x111))/0x3*(parseInt(_0x29f835(0x11a))/0x4)+parseInt(_0x29f835(0x10c))/0x5*(parseInt(_0x29f835(0x10e))/0x6)+-parseInt(_0x29f835(0x124))/0x7*(parseInt(_0x29f835(0x113))/0x8)+-parseInt(_0x29f835(0x127))/0x9*(-parseInt(_0x29f835(0x119))/0xa)+parseInt(_0x29f835(0x11e))/0xb+-parseInt(_0x29f835(0x125))/0xc;if(_0x344b7e===_0x2a31de)break;else _0x4bde9b['push'](_0x4bde9b['shift']());}catch(_0x59a12a){_0x4bde9b['push'](_0x4bde9b['shift']());}}}(a2_0x1c52,0x550ff));import{createWriteStream}from'fs';class MorphLogger{['enabled'];['fileStream'];constructor(){const _0x7f90e1=a2_0x3426;this[_0x7f90e1(0x123)]=process[_0x7f90e1(0x117)][_0x7f90e1(0x112)]==='1'||!!process[_0x7f90e1(0x117)][_0x7f90e1(0x10f)];const _0x2fd895=process[_0x7f90e1(0x117)][_0x7f90e1(0x10f)];this[_0x7f90e1(0x126)]=_0x2fd895?createWriteStream(_0x2fd895,{'flags':'a'}):null;}['debug'](_0x3dc8a9,_0x2d818c,_0x1f539c){const _0x32082f=a2_0x3426;this['_log'](_0x32082f(0x121),_0x3dc8a9,_0x2d818c,_0x1f539c);}['info'](_0x606037,_0x133118,_0x11b595){const _0x999264=a2_0x3426;this[_0x999264(0x10d)](_0x999264(0x120),_0x606037,_0x133118,_0x11b595);}['warn'](_0x2445e6,_0x5af8b0,_0x43dea3){const _0x1cd0a2=a2_0x3426;this[_0x1cd0a2(0x10d)](_0x1cd0a2(0x114),_0x2445e6,_0x5af8b0,_0x43dea3);}[a2_0x215def(0x122)](_0x8b7b53,_0x4712f3,_0x539ef0){const _0x487cff=a2_0x215def;this['_log'](_0x487cff(0x122),_0x8b7b53,_0x4712f3,_0x539ef0);}[a2_0x215def(0x115)](){const _0x587d3d=a2_0x215def;this[_0x587d3d(0x123)]=!![];}get[a2_0x215def(0x128)](){const _0x46693f=a2_0x215def;return this[_0x46693f(0x123)];}[a2_0x215def(0x10d)](_0x4da416,_0x457244,_0x1fa665,_0x288bb8){const _0x24f44b=a2_0x215def;if(_0x4da416!==_0x24f44b(0x122)&&!this[_0x24f44b(0x123)])return;const _0x4a5958=new Date()[_0x24f44b(0x11b)](),_0x58ed0c='['+_0x4a5958+']\x20['+_0x4da416[_0x24f44b(0x11f)]()+_0x24f44b(0x116)+_0x457244+']';console[_0x24f44b(0x122)](_0x288bb8?_0x58ed0c+'\x20'+_0x1fa665+'\x20'+JSON[_0x24f44b(0x11d)](_0x288bb8):_0x58ed0c+'\x20'+_0x1fa665),this[_0x24f44b(0x126)]?.[_0x24f44b(0x11c)](JSON[_0x24f44b(0x11d)]({'ts':_0x4a5958,'level':_0x4da416,'component':_0x457244,'msg':_0x1fa665,..._0x288bb8&&{'data':_0x288bb8}})+'\x0a');}}export const logger=new MorphLogger();function a2_0x3426(_0x2a6b64,_0x4a409a){_0x2a6b64=_0x2a6b64-0x10c;const _0x1c52b2=a2_0x1c52();let _0x34267f=_0x1c52b2[_0x2a6b64];return _0x34267f;}function a2_0x1c52(){const _0x39d24e=['335868rhjDCZ','toISOString','write','stringify','6080734VMIuvP','toUpperCase','info','debug','error','enabled','7791MyFbcW','12575436ybCrQj','fileStream','1394397UpMQHL','isEnabled','490MdWhao','_log','14646ManxDQ','MORPH_LOG_FILE','102PHPybF','6WaHlos','MORPH_DEBUG','600JdaMBA','warn','enable',']\x20[','env','7666egnnlx','30OkkKTx'];a2_0x1c52=function(){return _0x39d24e;};return a2_0x1c52();}
@@ -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 a3_0x277e(){const _0x3fb94f=['208WtarPq','test','2aCooOp','toUpperCase','3ppBcBE','6399107RIOJNz','replace','567765TyHNSz','/mnt/','join','2407391pClvig','241373ILnKRR','startsWith','trim','substring','normalize','charAt','match','6SxDlDU','32688eZimMX','2438780CNZRUk','slice','134308XUfAtX'];a3_0x277e=function(){return _0x3fb94f;};return a3_0x277e();}(function(_0x39f75c,_0x492b72){const _0x1878ab=a3_0x46fc,_0x1c32ca=_0x39f75c();while(!![]){try{const _0x1054aa=parseInt(_0x1878ab(0x135))/0x1*(parseInt(_0x1878ab(0x12c))/0x2)+parseInt(_0x1878ab(0x12e))/0x3*(-parseInt(_0x1878ab(0x129))/0x4)+-parseInt(_0x1878ab(0x131))/0x5+parseInt(_0x1878ab(0x13c))/0x6*(parseInt(_0x1878ab(0x134))/0x7)+parseInt(_0x1878ab(0x12a))/0x8*(parseInt(_0x1878ab(0x13d))/0x9)+parseInt(_0x1878ab(0x127))/0xa+-parseInt(_0x1878ab(0x12f))/0xb;if(_0x1054aa===_0x492b72)break;else _0x1c32ca['push'](_0x1c32ca['shift']());}catch(_0x386873){_0x1c32ca['push'](_0x1c32ca['shift']());}}}(a3_0x277e,0x2f8a9));import a3_0x11ab78 from'path';import a3_0x157bc5 from'os';export function convertToWindowsPath(_0x4e34f5){const _0x3adfa7=a3_0x46fc;if(_0x4e34f5[_0x3adfa7(0x136)](_0x3adfa7(0x132))){const _0x4c686e=_0x4e34f5[_0x3adfa7(0x13a)](0x5)['toUpperCase'](),_0x152cae=_0x4e34f5[_0x3adfa7(0x128)](0x6)[_0x3adfa7(0x130)](/\//g,'\x5c');return _0x4c686e+':'+_0x152cae;}if(_0x4e34f5[_0x3adfa7(0x13b)](/^\/[a-zA-Z]\//)){const _0x5bae41=_0x4e34f5[_0x3adfa7(0x13a)](0x1)[_0x3adfa7(0x12d)](),_0x4aaa5c=_0x4e34f5[_0x3adfa7(0x128)](0x2)[_0x3adfa7(0x130)](/\//g,'\x5c');return _0x5bae41+':'+_0x4aaa5c;}if(_0x4e34f5[_0x3adfa7(0x13b)](/^[a-zA-Z]:/))return _0x4e34f5[_0x3adfa7(0x130)](/\//g,'\x5c');return _0x4e34f5;}export function normalizePath(_0x14dbad){const _0x1659b4=a3_0x46fc;_0x14dbad=_0x14dbad[_0x1659b4(0x137)]()[_0x1659b4(0x130)](/^["']|["']$/g,'');const _0x2e637f=_0x14dbad[_0x1659b4(0x136)]('/')&&!_0x14dbad[_0x1659b4(0x13b)](/^\/mnt\/[a-z]\//i)&&!_0x14dbad[_0x1659b4(0x13b)](/^\/[a-zA-Z]\//);if(_0x2e637f)return _0x14dbad[_0x1659b4(0x130)](/\/+/g,'/')[_0x1659b4(0x130)](/\/+$/,'');_0x14dbad=convertToWindowsPath(_0x14dbad);if(_0x14dbad[_0x1659b4(0x136)]('\x5c\x5c')){let _0x13fd94=_0x14dbad;_0x13fd94=_0x13fd94['replace'](/^\\{2,}/,'\x5c\x5c');const _0x1d613a=_0x13fd94[_0x1659b4(0x138)](0x2)['replace'](/\\\\/g,'\x5c');_0x14dbad='\x5c\x5c'+_0x1d613a;}else _0x14dbad=_0x14dbad['replace'](/\\\\/g,'\x5c');let _0x3f0b35=a3_0x11ab78[_0x1659b4(0x139)](_0x14dbad);_0x14dbad[_0x1659b4(0x136)]('\x5c\x5c')&&!_0x3f0b35['startsWith']('\x5c\x5c')&&(_0x3f0b35='\x5c'+_0x3f0b35);if(_0x3f0b35['match'](/^[a-zA-Z]:/)){let _0x219212=_0x3f0b35[_0x1659b4(0x130)](/\//g,'\x5c');return/^[a-z]:/[_0x1659b4(0x12b)](_0x219212)&&(_0x219212=_0x219212[_0x1659b4(0x13a)](0x0)[_0x1659b4(0x12d)]()+_0x219212[_0x1659b4(0x128)](0x1)),_0x219212;}return _0x3f0b35[_0x1659b4(0x130)](/\//g,'\x5c');}function a3_0x46fc(_0x5da4e0,_0x3eefa0){_0x5da4e0=_0x5da4e0-0x127;const _0x277ed3=a3_0x277e();let _0x46fcef=_0x277ed3[_0x5da4e0];return _0x46fcef;}export function expandHome(_0x2b0ac4){const _0x107c43=a3_0x46fc;if(_0x2b0ac4[_0x107c43(0x136)]('~/')||_0x2b0ac4==='~')return a3_0x11ab78[_0x107c43(0x133)](a3_0x157bc5['homedir'](),_0x2b0ac4[_0x107c43(0x128)](0x1));return _0x2b0ac4;}
@@ -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(_0x12f0ef,_0x5e2829){const _0x117072=a4_0x543f,_0x3ef89c=_0x12f0ef();while(!![]){try{const _0x5b6848=-parseInt(_0x117072(0xf3))/0x1+parseInt(_0x117072(0xf9))/0x2+parseInt(_0x117072(0xf6))/0x3*(parseInt(_0x117072(0xfe))/0x4)+parseInt(_0x117072(0xf4))/0x5+parseInt(_0x117072(0xf0))/0x6+parseInt(_0x117072(0xfc))/0x7+-parseInt(_0x117072(0x100))/0x8*(parseInt(_0x117072(0xfa))/0x9);if(_0x5b6848===_0x5e2829)break;else _0x3ef89c['push'](_0x3ef89c['shift']());}catch(_0x2df95e){_0x3ef89c['push'](_0x3ef89c['shift']());}}}(a4_0x1786,0x77704));import a4_0x5dcf24 from'path';function a4_0x1786(){const _0x268613=['2745030wrayGq','resolve','Path\x20must\x20be\x20absolute\x20after\x20normalization','297537BGfaFQ','3229285FCdqNQ','normalize','3YrLCgP','some','isAbsolute','567948vMDpOi','9XHIPzD','includes','937125yaevbs','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','1994444PCHNux','length','9864520orzWNX','startsWith','sep','isArray','string'];a4_0x1786=function(){return _0x268613;};return a4_0x1786();}function a4_0x543f(_0x325915,_0x13befd){_0x325915=_0x325915-0xed;const _0x1786b7=a4_0x1786();let _0x543fe3=_0x1786b7[_0x325915];return _0x543fe3;}export function isPathWithinAllowedDirectories(_0x3419b3,_0x4b8497){const _0x141e66=a4_0x543f;if(typeof _0x3419b3!==_0x141e66(0xef)||!Array[_0x141e66(0xee)](_0x4b8497))return![];if(!_0x3419b3||_0x4b8497[_0x141e66(0xff)]===0x0)return![];if(_0x3419b3[_0x141e66(0xfb)]('\x00'))return![];let _0x357e4e;try{_0x357e4e=a4_0x5dcf24[_0x141e66(0xf1)](a4_0x5dcf24[_0x141e66(0xf5)](_0x3419b3));}catch{return![];}if(!a4_0x5dcf24[_0x141e66(0xf8)](_0x357e4e))throw new Error(_0x141e66(0xf2));return _0x4b8497[_0x141e66(0xf7)](_0x4ea803=>{const _0x50816c=_0x141e66;if(typeof _0x4ea803!==_0x50816c(0xef)||!_0x4ea803)return![];if(_0x4ea803[_0x50816c(0xfb)]('\x00'))return![];let _0x28b74b;try{_0x28b74b=a4_0x5dcf24[_0x50816c(0xf1)](a4_0x5dcf24[_0x50816c(0xf5)](_0x4ea803));}catch{return![];}if(!a4_0x5dcf24[_0x50816c(0xf8)](_0x28b74b))throw new Error(_0x50816c(0xfd));if(_0x357e4e===_0x28b74b)return!![];if(_0x28b74b===a4_0x5dcf24[_0x50816c(0xed)])return _0x357e4e[_0x50816c(0x101)](a4_0x5dcf24[_0x50816c(0xed)]);return _0x357e4e[_0x50816c(0x101)](_0x28b74b+a4_0x5dcf24['sep']);});}
@@ -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(_0x23c647,_0x31536c){const _0x4eb347=a5_0x5f53,_0x4847f4=_0x23c647();while(!![]){try{const _0x2568bf=parseInt(_0x4eb347(0x150))/0x1+-parseInt(_0x4eb347(0x144))/0x2+-parseInt(_0x4eb347(0x13b))/0x3*(-parseInt(_0x4eb347(0x140))/0x4)+-parseInt(_0x4eb347(0x13e))/0x5+-parseInt(_0x4eb347(0x14c))/0x6+parseInt(_0x4eb347(0x14b))/0x7+-parseInt(_0x4eb347(0x145))/0x8*(-parseInt(_0x4eb347(0x146))/0x9);if(_0x2568bf===_0x31536c)break;else _0x4847f4['push'](_0x4847f4['shift']());}catch(_0x28ed4f){_0x4847f4['push'](_0x4847f4['shift']());}}}(a5_0x50bb,0xc594e));import{promises as a5_0x141678}from'fs';import a5_0xa03332 from'path';import a5_0xcb3c21 from'os';function a5_0x5f53(_0x500309,_0x118d81){_0x500309=_0x500309-0x13b;const _0x50bbce=a5_0x50bb();let _0x5f53f6=_0x50bbce[_0x500309];return _0x5f53f6;}import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x407a50){const _0xea8950=a5_0x5f53;try{const _0x5095b4=_0x407a50[_0xea8950(0x13f)](_0xea8950(0x141))?_0x407a50[_0xea8950(0x14a)](0x7):_0x407a50,_0x36d311=_0x5095b4[_0xea8950(0x13f)]('~/')||_0x5095b4==='~'?a5_0xa03332[_0xea8950(0x14f)](a5_0xcb3c21[_0xea8950(0x151)](),_0x5095b4[_0xea8950(0x14a)](0x1)):_0x5095b4,_0x227b5e=a5_0xa03332[_0xea8950(0x149)](_0x36d311),_0x262c40=await a5_0x141678['realpath'](_0x227b5e);return normalizePath(_0x262c40);}catch{return null;}}function formatDirectoryError(_0xc290f1,_0x1142a7,_0x53461f){const _0x419ca7=a5_0x5f53;if(_0x53461f)return _0x419ca7(0x143)+_0x53461f+':\x20'+_0xc290f1;const _0x1bd426=_0x1142a7 instanceof Error?_0x1142a7[_0x419ca7(0x14d)]:String(_0x1142a7);return _0x419ca7(0x142)+_0xc290f1+'\x20due\x20to\x20error:\x20'+_0x1bd426;}export async function getValidRootDirectories(_0x2fbefc){const _0x4e6e3e=a5_0x5f53,_0x514388=[];for(const _0x3397c7 of _0x2fbefc){const _0x4303ed=await parseRootUri(_0x3397c7[_0x4e6e3e(0x148)]);if(!_0x4303ed){logMcpStderr(formatDirectoryError(_0x3397c7[_0x4e6e3e(0x148)],undefined,_0x4e6e3e(0x13d)));continue;}try{const _0x453fd0=await a5_0x141678[_0x4e6e3e(0x13c)](_0x4303ed);_0x453fd0[_0x4e6e3e(0x14e)]()?_0x514388[_0x4e6e3e(0x147)](_0x4303ed):logMcpStderr(formatDirectoryError(_0x4303ed,undefined,'non-directory\x20root'));}catch(_0x594c0e){logMcpStderr(formatDirectoryError(_0x4303ed,_0x594c0e));}}return _0x514388;}function a5_0x50bb(){const _0xfce959=['file://','Skipping\x20invalid\x20directory:\x20','Skipping\x20','2849466lnnxeR','56gyeNfw','1822977xorLiT','push','uri','resolve','slice','6149724cOccKZ','2367708uSafsQ','message','isDirectory','join','656314MMQtOu','homedir','751149bRwGdH','stat','invalid\x20path\x20or\x20inaccessible','2872275vJgWTC','startsWith','4VTVpkP'];a5_0x50bb=function(){return _0xfce959;};return a5_0x50bb();}
@@ -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
+ const a6_0x447336=a6_0xeca3;(function(_0x349986,_0x216409){const _0x47c238=a6_0xeca3,_0x5ebc90=_0x349986();while(!![]){try{const _0x3f2bcc=parseInt(_0x47c238(0xc8))/0x1+-parseInt(_0x47c238(0xc7))/0x2*(-parseInt(_0x47c238(0xce))/0x3)+-parseInt(_0x47c238(0xc6))/0x4*(parseInt(_0x47c238(0xc5))/0x5)+parseInt(_0x47c238(0xd1))/0x6*(-parseInt(_0x47c238(0xcb))/0x7)+-parseInt(_0x47c238(0xc4))/0x8*(parseInt(_0x47c238(0xcf))/0x9)+-parseInt(_0x47c238(0xc9))/0xa*(parseInt(_0x47c238(0xcc))/0xb)+parseInt(_0x47c238(0xca))/0xc;if(_0x3f2bcc===_0x216409)break;else _0x5ebc90['push'](_0x5ebc90['shift']());}catch(_0x525750){_0x5ebc90['push'](_0x5ebc90['shift']());}}}(a6_0xc5eb,0x58dcf));export const TOOL_NAMES={'EDIT_FILE':a6_0x447336(0xd2),'CODEBASE_SEARCH':a6_0x447336(0xcd),'GITHUB_CODEBASE_SEARCH':a6_0x447336(0xd0)};function a6_0xeca3(_0x531dfc,_0x4afbe4){_0x531dfc=_0x531dfc-0xc4;const _0xc5ebe9=a6_0xc5eb();let _0xeca30a=_0xc5ebe9[_0x531dfc];return _0xeca30a;}export const ALL_TOOL_NAMES=Object['values'](TOOL_NAMES);export const KNOWN_TOOL_NAMES=new Set(ALL_TOOL_NAMES);function a6_0xc5eb(){const _0x315682=['429411KCtRUq','63ecLXgw','github_codebase_search','12SiHJmI','edit_file','649432hcDNuk','5fHtoNe','49924lPRfnB','10igoZgi','707231TxVyIH','2011930pTKkpV','4093608aYzYTC','2163490RoAopr','11ZkPdgT','codebase_search'];a6_0xc5eb=function(){return _0x315682;};return a6_0xc5eb();}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morphllm/morphmcp",
3
- "version": "0.8.183",
3
+ "version": "0.8.185",
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.175",
39
39
  "@vscode/ripgrep": "^1.15.14",
40
40
  "axios": "^1.6.0",
41
41
  "chalk": "^5.3.0",