@morphllm/morphmcp
Advanced tools
+1
-1
| #!/usr/bin/env node | ||
| const a0_0x240656=a0_0x1a82;(function(_0x43a044,_0x3fc623){const _0x530a01=a0_0x1a82,_0x54915c=_0x43a044();while(!![]){try{const _0x3019d0=parseInt(_0x530a01(0x232))/0x1+parseInt(_0x530a01(0x19e))/0x2+-parseInt(_0x530a01(0x196))/0x3+-parseInt(_0x530a01(0x249))/0x4*(-parseInt(_0x530a01(0x1a3))/0x5)+-parseInt(_0x530a01(0x24c))/0x6*(-parseInt(_0x530a01(0x299))/0x7)+parseInt(_0x530a01(0x1f6))/0x8+-parseInt(_0x530a01(0x1c6))/0x9*(parseInt(_0x530a01(0x25c))/0xa);if(_0x3019d0===_0x3fc623)break;else _0x54915c['push'](_0x54915c['shift']());}catch(_0x26494d){_0x54915c['push'](_0x54915c['shift']());}}}(a0_0x4719,0x19445));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_0x5207e6 from'fs/promises';import a0_0x4c88d7 from'path';import a0_0x1ee4d4 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_0x4832c4 from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x4a222b){const _0x3e8997=a0_0x1a82,_0x40ea2e=_0x4a222b[_0x3e8997(0x296)](a0_0x4c88d7['sep'])['filter'](Boolean);if(_0x40ea2e[_0x3e8997(0x19a)]<0x2)return null;for(let _0x539993=Math[_0x3e8997(0x1bd)](_0x40ea2e['length']/0x2);_0x539993>=0x1;_0x539993--){for(let _0x50f340=0x0;_0x50f340<=_0x40ea2e[_0x3e8997(0x19a)]-0x2*_0x539993;_0x50f340++){const _0xbb88d5=_0x40ea2e[_0x3e8997(0x199)](_0x50f340,_0x50f340+_0x539993),_0x14d241=_0x40ea2e['slice'](_0x50f340+_0x539993,_0x50f340+0x2*_0x539993);if(_0xbb88d5[_0x3e8997(0x23f)]((_0x564552,_0x4fe823)=>_0x564552===_0x14d241[_0x4fe823])){const _0x472d4b=[..._0x40ea2e[_0x3e8997(0x199)](0x0,_0x50f340),..._0x40ea2e[_0x3e8997(0x199)](_0x50f340+_0x539993)];return a0_0x4c88d7[_0x3e8997(0x27c)]+_0x472d4b[_0x3e8997(0x20e)](a0_0x4c88d7['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x25929f=a0_0x1a82;try{const _0x5e2d13=require(_0x25929f(0x263));return _0x5e2d13['version']??_0x25929f(0x1af);}catch(_0x4406aa){return logMcpStderr(_0x25929f(0x29e),_0x4406aa),_0x25929f(0x1af);}}function printHelp(){const _0x19ed23=a0_0x1a82;console[_0x19ed23(0x292)]('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x19ed23(0x292)](_0x19ed23(0x293)),console[_0x19ed23(0x292)]('\x0aOptions:'),console[_0x19ed23(0x292)](_0x19ed23(0x1e8)),console['log'](_0x19ed23(0x298)),console[_0x19ed23(0x292)](_0x19ed23(0x262)),console[_0x19ed23(0x292)](_0x19ed23(0x1ab)),console[_0x19ed23(0x292)](_0x19ed23(0x1bf)),console['log'](_0x19ed23(0x1b7));}const cliArgs=process[a0_0x240656(0x1a9)]['slice'](0x2),VERSION_FLAGS=new Set([a0_0x240656(0x18b),'-v','-V']),HELP_FLAGS=new Set(['--help','-h']);cliArgs[a0_0x240656(0x1c3)](_0x247935=>VERSION_FLAGS['has'](_0x247935))&&(console[a0_0x240656(0x292)](a0_0x240656(0x193)+getPackageVersion()),process['exit'](0x0));cliArgs[a0_0x240656(0x1c3)](_0x564fed=>HELP_FLAGS['has'](_0x564fed))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x2f90d0){const _0x1cf539=a0_0x240656;for(let _0x5953a3=0x0;_0x5953a3<cliArgs[_0x1cf539(0x19a)];_0x5953a3++){const _0xf0309f=cliArgs[_0x5953a3];if(_0xf0309f[_0x1cf539(0x1c4)]('--'+_0x2f90d0+'='))return _0xf0309f[_0x1cf539(0x199)](('--'+_0x2f90d0+'=')[_0x1cf539(0x19a)]);if(_0xf0309f==='--'+_0x2f90d0&&_0x5953a3+0x1<cliArgs[_0x1cf539(0x19a)])return cliArgs[_0x5953a3+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x240656(0x19a)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x240656(0x204)](arg)||HELP_FLAGS[a0_0x240656(0x204)](arg))continue;if(arg['startsWith'](a0_0x240656(0x267)))continue;if(arg===a0_0x240656(0x22b)){i++;continue;}args[a0_0x240656(0x1a2)](arg);}const WORKSPACE_ROOT=process['env'][a0_0x240656(0x184)]||process[a0_0x240656(0x190)]['PWD']||process[a0_0x240656(0x197)](),ENABLE_WORKSPACE_MODE=process[a0_0x240656(0x190)][a0_0x240656(0x1d7)]!==a0_0x240656(0x28f),MORPH_API_KEY=getCliArg('api-key')??process[a0_0x240656(0x190)][a0_0x240656(0x1a1)],MORPH_API_URL=process[a0_0x240656(0x190)]['MORPH_API_URL'],MORPH_LARGE_APPLY=process[a0_0x240656(0x190)][a0_0x240656(0x244)]!==a0_0x240656(0x28f),MORPH_WARP_GREP_TIMEOUT=process[a0_0x240656(0x190)][a0_0x240656(0x24b)]?parseInt(process[a0_0x240656(0x190)]['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x240656(0x190)][a0_0x240656(0x1b1)]?new Set(process[a0_0x240656(0x190)]['DISABLED_TOOLS']['split'](',')[a0_0x240656(0x185)](_0x5b25cd=>_0x5b25cd[a0_0x240656(0x17f)]())['filter'](_0x31ad5f=>_0x31ad5f[a0_0x240656(0x19a)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x240656(0x269)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES['has'](tool)&&console[a0_0x240656(0x29c)](a0_0x240656(0x243)+tool+a0_0x240656(0x17e)+[...KNOWN_TOOL_NAMES][a0_0x240656(0x20e)](',\x20'));}console[a0_0x240656(0x29c)](a0_0x240656(0x210)+[...DISABLED_TOOLS][a0_0x240656(0x20e)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY['startsWith'](a0_0x240656(0x219))&&!MORPH_API_KEY[a0_0x240656(0x1c4)](a0_0x240656(0x19d))&&logMcpStderr(a0_0x240656(0x29a));async function reportMorphError(_0x144b41){const _0x2e95d2=a0_0x240656;try{await a0_0x4832c4['post'](_0x2e95d2(0x1ac),{..._0x144b41,'timestamp':new Date()[_0x2e95d2(0x1db)](),'source':_0x144b41[_0x2e95d2(0x1e0)]||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x144b41[_0x2e95d2(0x257)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x2e95d2(0x1c1),'Authorization':_0x2e95d2(0x226)+MORPH_API_KEY}});}catch{}}function a0_0x1a82(_0x42a8f6,_0x233d48){_0x42a8f6=_0x42a8f6-0x17d;const _0x4719ac=a0_0x4719();let _0x1a8236=_0x4719ac[_0x42a8f6];return _0x1a8236;}function extractStatusCode(_0x3820d7,_0x4c92f5){const _0x3ee3ad=a0_0x240656;if(_0x3820d7&&typeof _0x3820d7===_0x3ee3ad(0x286)&&'status'in _0x3820d7)return _0x3820d7[_0x3ee3ad(0x18c)];if(_0x3820d7&&typeof _0x3820d7==='object'&&_0x3ee3ad(0x291)in _0x3820d7)return _0x3820d7[_0x3ee3ad(0x291)]?.[_0x3ee3ad(0x18c)];const _0x2630e8=_0x4c92f5[_0x3ee3ad(0x2a4)](/\b(401|429)\b/);return _0x2630e8?parseInt(_0x2630e8[0x1],0xa):null;}function handleMorphAPIError(_0x5d8342){const _0x3f1a55=a0_0x240656,_0x489dbc=_0x5d8342 instanceof Error?_0x5d8342[_0x3f1a55(0x282)]:String(_0x5d8342),_0x1b92d8=extractStatusCode(_0x5d8342,_0x489dbc);switch(_0x1b92d8){case 0x191:return{'content':[{'type':_0x3f1a55(0x23e),'text':'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.'}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x3f1a55(0x23e),'text':_0x3f1a55(0x295)}],'isError':!![]};default:return null;}}args[a0_0x240656(0x19a)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x240656(0x29d)),logMcpStderr(a0_0x240656(0x283)),logMcpStderr(a0_0x240656(0x2a0)),logMcpStderr(a0_0x240656(0x297)),logMcpStderr('\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)'),logMcpStderr(a0_0x240656(0x1a8)));function normalizePath(_0x31a301){const _0x25a908=a0_0x240656;return a0_0x4c88d7[_0x25a908(0x273)](_0x31a301);}function expandHome(_0x346f65){const _0x4cbc47=a0_0x240656;if(_0x346f65[_0x4cbc47(0x1c4)]('~/')||_0x346f65==='~')return a0_0x4c88d7[_0x4cbc47(0x20e)](a0_0x1ee4d4['homedir'](),_0x346f65[_0x4cbc47(0x199)](0x1));return _0x346f65;}let allowedDirectories=await Promise[a0_0x240656(0x1f8)](args['map'](async _0x31d402=>{const _0x2c9171=a0_0x240656,_0x5091d6=expandHome(_0x31d402),_0x416676=a0_0x4c88d7[_0x2c9171(0x24a)](_0x5091d6);try{const _0x2edc74=await a0_0x5207e6[_0x2c9171(0x26c)](_0x416676);return normalizePath(_0x2edc74);}catch(_0x35da41){return normalizePath(_0x416676);}}));function a0_0x4719(){const _0x3bd627=['now','tool_call_id','description','\x22>\x0a','1457152PyXnbT','assistant','all','changes','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.','github_search_start','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','repo_path','go.mod','compaction_failed','stringify','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','Invalid\x20arguments:\x20','has','Error\x20accessing\x20directory\x20','Preview\x20changes\x20without\x20applying\x20them.','linesRemoved','new_string','catch','etimedout','metadata','parse','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','join','\x20as\x20allowed\x20directory','Disabled\x20tools:\x20','ReadError','Failed\x20to\x20read\x20file:\x20','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','-\x20Read\x20file\x20`','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','runWarpGrep_call','warn','errors','sk-','content','list_directory\x20','Error:\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','\x20-\x20','owner_repo','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','search_string','github_url','array','composer.json','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.','Bearer\x20','Specific\x20commit\x20hash\x20to\x20search','includes','Unknown\x20error','-\x20Preserve\x20exact\x20indentation\x0a','--api-key','read\x20','\x0a</file>','tool_call_error','number','Repository\x20identifier','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','60682WMICZA','readFile','path_validation_start','-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a','command','role','grep_search','.\x20Changes:\x20','lines','boolean',',\x20removed\x20','code','text','every','FileNotFound','package.json','list_directory','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','MORPH_LARGE_APPLY','instructions','Relevant\x20context\x20found:','code_edit','Workspace\x20mode\x20enabled:\x20Using\x20','18788nqsmuH','resolve','MORPH_WARP_GREP_TIMEOUT','18rRmwVp','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','path_validation_failed','path_validation_resolved','file_read_failed','setRequestHandler','safeParse','Parent\x20directory\x20does\x20not\x20exist:\x20','RipgrepNotAvailable','Here\x20is\x20the\x20content\x20of\x20files:\x0a','substring','context','connect','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','branch','API\x20error\x20(auth/rate-limit)','30JIxvQG','FileReadError','timings','Warning:\x20Workspace\x20fallback\x20failed:\x20','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','**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','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','../package.json','searchGitHub','provider_created','describe','--api-key=','filter','size','ms:','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','realpath','Max\x20results\x20to\x20return','[github_codebase_search]\x20Failed\x20in\x20','path','Unknown\x20tool:\x20','[could\x20not\x20read\x20file:\x20','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','normalize','roots','messages','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','\x0a...\x20(truncated,\x20total:\x20','tool_calls','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','tool_call_received','`\x20in\x20`','sep','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','.\x20Path:\x20','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','enum','message','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','dryRun','MCP','object','files','morph-v3-fast','constructor','default','grep\x20\x27','toLowerCase','RipgrepError','.git','false','isArray','response','log','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','Cargo.toml','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','split','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','271285AKedCS','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','github_codebase_search','error','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','timeout','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','\x27\x20in\x20`','-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a','completed','match','edit_file','added\x20','timed\x20out','completionId','user','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','edit','ENOENT','PathError','SubToolError','\x20valid\x20directories','\x22.\x20Known\x20tools:\x20','trim','debug','ms.\x20Success:\x20','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','access','WORKSPACE_ROOT','map','SymlinkError','ToolException','BinaryFile','LocalRipgrepProvider','function','--version','status','-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a','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.','oninitialized','env','linesModified','finish','@morphllm/morphmcp\x20','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','inputSchema','230178uDlQqK','cwd','completed_with_file_errors','slice','length','mcp-filesystem','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','morph-','155738mrQHtn','\x20disabled\x20via\x20DISABLED_TOOLS','data','MORPH_API_KEY','push','80PFUbXa','basename','Morph\x20FastApply\x20failed\x20without\x20error\x20message','string','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','argv','grep','\x0aExamples:','https://morphllm.com/api/error-report','TimeoutError','-\x20Listed\x20directory\x20`','unknown','CODEBASE_SEARCH','DISABLED_TOOLS','stack','target_file','Tool\x20','Fatal\x20error\x20running\x20server:','terminated','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','read','Failed\x20to\x20request\x20roots\x20from\x20client:','tool','tool_call_complete','glob\x20\x27','floor','UnknownError','\x20\x20morph-mcp','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','application/json','Fallback:\x20Using\x20workspace\x20root\x20','some','startsWith','requiresApiKey','995679vOhSjR','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.','params','Example\x20format:\x0a','dirname','morph-mcp','node_modules','EDIT_FILE','exit','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','glob','isDirectory',',\x20modified\x20','<file\x20path=\x22','file_read_complete','success','indexOf','ENABLE_WORKSPACE_MODE','warp_grep_complete','arguments','optional','toISOString','payload','Parameters:\x0a','Tool\x20\x22','-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a','source','codebase_search','unknown\x20error','pattern','search_type','Morph\x20Edit\x20','linesAdded','morph-warp-grep-v2.1','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','GITHUB_CODEBASE_SEARCH','\x20(new\x20file)','instruction','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','name','-\x20Glob\x20search\x20`','listRoots','terminationReason','File\x20read\x20error:'];a0_0x4719=function(){return _0x3bd627;};return a0_0x4719();}if(ENABLE_WORKSPACE_MODE&&args[a0_0x240656(0x19a)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories['push'](workspaceDir),logMcpStderr(a0_0x240656(0x248)+workspaceDir+a0_0x240656(0x20f)));}catch(a0_0x4d6634){logMcpStderr(a0_0x240656(0x279)+a0_0x4d6634);}async function detectWorkspaceRoot(_0x58c676){const _0x255f3d=a0_0x240656;let _0x55cda6=a0_0x4c88d7[_0x255f3d(0x24a)](_0x58c676);const _0x383395=[_0x255f3d(0x28e),'.vscode',_0x255f3d(0x241),_0x255f3d(0x294),'pyproject.toml',_0x255f3d(0x1fe),'.cursor','tsconfig.json',_0x255f3d(0x224)];while(_0x55cda6!==a0_0x4c88d7['dirname'](_0x55cda6)){for(const _0x521827 of _0x383395){const _0x1823aa=a0_0x4c88d7[_0x255f3d(0x20e)](_0x55cda6,_0x521827);try{return await a0_0x5207e6[_0x255f3d(0x183)](_0x1823aa),normalizePath(_0x55cda6);}catch{}}_0x55cda6=a0_0x4c88d7[_0x255f3d(0x1ca)](_0x55cda6);}return normalizePath(_0x58c676);}await Promise[a0_0x240656(0x1f8)](args[a0_0x240656(0x185)](async _0x434d89=>{const _0x54ba0a=a0_0x240656;try{const _0x30aeec=await a0_0x5207e6['stat'](expandHome(_0x434d89));!_0x30aeec[_0x54ba0a(0x1d1)]()&&(logMcpStderr(_0x54ba0a(0x21c)+_0x434d89+'\x20is\x20not\x20a\x20directory'),process[_0x54ba0a(0x1ce)](0x1));}catch(_0x537a6c){logMcpStderr(_0x54ba0a(0x205)+_0x434d89+':',_0x537a6c),process['exit'](0x1);}}));async function validatePath(_0x4fb9ea){const _0x35f60f=a0_0x240656,_0x47c244=expandHome(_0x4fb9ea),_0x550569=a0_0x4c88d7['resolve'](_0x47c244);logger[_0x35f60f(0x180)](_0x35f60f(0x285),_0x35f60f(0x234),{'raw_path':_0x4fb9ea,'absolute':_0x550569});try{const _0x3a4b76=await a0_0x5207e6[_0x35f60f(0x26c)](_0x550569);return logger[_0x35f60f(0x180)](_0x35f60f(0x285),'path_validation_resolved',{'resolved':_0x3a4b76,'symlink':_0x3a4b76!==_0x550569}),_0x3a4b76;}catch(_0x1e7816){if(_0x1e7816[_0x35f60f(0x23d)]===_0x35f60f(0x2ac)){const _0x2b2205=a0_0x4c88d7[_0x35f60f(0x1ca)](_0x550569);try{const _0x4940a6=await a0_0x5207e6[_0x35f60f(0x26c)](_0x2b2205),_0x21ba7b=a0_0x4c88d7[_0x35f60f(0x20e)](_0x4940a6,a0_0x4c88d7[_0x35f60f(0x1a4)](_0x550569));return logger[_0x35f60f(0x180)](_0x35f60f(0x285),_0x35f60f(0x24f),{'resolved':_0x21ba7b,'new_file':!![]}),_0x21ba7b;}catch{logger['error']('MCP',_0x35f60f(0x24e),{'raw_path':_0x4fb9ea,'error':_0x35f60f(0x253)+_0x2b2205});throw new Error(_0x35f60f(0x253)+_0x2b2205);}}logger[_0x35f60f(0x29c)]('MCP',_0x35f60f(0x24e),{'raw_path':_0x4fb9ea,'error':_0x1e7816[_0x35f60f(0x282)]});throw _0x1e7816;}}const MorphEditFileArgsSchema=z[a0_0x240656(0x286)]({'path':z[a0_0x240656(0x1a6)](),'code_edit':z[a0_0x240656(0x1a6)]()[a0_0x240656(0x266)](a0_0x240656(0x202)),'instruction':z[a0_0x240656(0x1a6)]()[a0_0x240656(0x266)](a0_0x240656(0x194)),'dryRun':z[a0_0x240656(0x23b)]()[a0_0x240656(0x28a)](![])['describe'](a0_0x240656(0x206))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x240656(0x225),WarpGrepArgsSchema=z['object']({'search_string':z[a0_0x240656(0x1a6)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x240656(0x1a6)]()[a0_0x240656(0x266)](a0_0x240656(0x21d)),'search_type':z[a0_0x240656(0x281)](['default',a0_0x240656(0x1cc)])[a0_0x240656(0x1da)]()['describe'](a0_0x240656(0x27d))}),WarpGrepGitHubArgsSchema=z[a0_0x240656(0x286)]({'search_string':z[a0_0x240656(0x1a6)]()[a0_0x240656(0x266)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x240656(0x1a6)]()[a0_0x240656(0x1da)]()['describe'](a0_0x240656(0x1fa)),'owner_repo':z[a0_0x240656(0x1a6)]()[a0_0x240656(0x1da)]()[a0_0x240656(0x266)](a0_0x240656(0x280)),'branch':z['string']()[a0_0x240656(0x1da)]()[a0_0x240656(0x266)](a0_0x240656(0x27e))}),CodebaseSearchArgsSchema=z[a0_0x240656(0x286)]({'query':z[a0_0x240656(0x1a6)]()[a0_0x240656(0x266)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x240656(0x1a6)]()[a0_0x240656(0x266)](a0_0x240656(0x230)),'branch':z['string']()['optional']()[a0_0x240656(0x266)]('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z['string']()['optional']()[a0_0x240656(0x266)](a0_0x240656(0x227)),'targetDirectories':z[a0_0x240656(0x223)](z[a0_0x240656(0x1a6)]())[a0_0x240656(0x28a)]([])[a0_0x240656(0x266)](a0_0x240656(0x259)),'limit':z[a0_0x240656(0x22f)]()[a0_0x240656(0x1da)]()[a0_0x240656(0x28a)](0xa)['describe'](a0_0x240656(0x26d))}),server=new Server({'name':a0_0x240656(0x1cb),'version':'0.2.0'},{'capabilities':{'tools':{}}});server[a0_0x240656(0x251)](ListToolsRequestSchema,async()=>{const _0x596c63=a0_0x240656,_0x5c3978=[{'name':TOOL_NAMES['EDIT_FILE'],'description':_0x596c63(0x261)+_0x596c63(0x1dd)+_0x596c63(0x1df)+_0x596c63(0x235)+_0x596c63(0x2a2)+_0x596c63(0x260)+_0x596c63(0x1c9)+_0x596c63(0x1a7)+'Rules:\x0a'+_0x596c63(0x18d)+_0x596c63(0x22a)+'-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a'+_0x596c63(0x213),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x596c63(0x1b0)],'description':_0x596c63(0x272)+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'+_0x596c63(0x26b)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x3fc4ca=_0x5c3978[_0x596c63(0x268)](_0x38ae22=>{const _0x499db5=_0x596c63;if(DISABLED_TOOLS[_0x499db5(0x204)](_0x38ae22[_0x499db5(0x1ed)]))return console[_0x499db5(0x29c)](_0x499db5(0x1b4)+_0x38ae22[_0x499db5(0x1ed)]+_0x499db5(0x19f)),![];if(_0x499db5(0x1c5)in _0x38ae22&&_0x38ae22[_0x499db5(0x1c5)]&&!MORPH_API_KEY)return logMcpStderr('Warning:\x20'+_0x38ae22[_0x499db5(0x1ed)]+_0x499db5(0x1cf)),![];return!![];});return{'tools':_0x3fc4ca['map'](_0x2a7b33=>({'name':_0x2a7b33[_0x596c63(0x1ed)],'description':_0x2a7b33[_0x596c63(0x1f4)],'inputSchema':_0x2a7b33[_0x596c63(0x195)]}))};}),server['setRequestHandler'](CallToolRequestSchema,async _0x26e4a5=>{const _0x426f0e=a0_0x240656,{name:_0x5e3c72,arguments:_0x4aeb44}=_0x26e4a5[_0x426f0e(0x1c8)],_0x19a68a=Date[_0x426f0e(0x1f2)]();logger[_0x426f0e(0x180)]('MCP',_0x426f0e(0x27a),{'tool':_0x5e3c72,'args':_0x5e3c72==='edit_file'?{'path':_0x4aeb44?.[_0x426f0e(0x26f)],'instruction':_0x4aeb44?.['instruction']||_0x4aeb44?.[_0x426f0e(0x245)],'dryRun':_0x4aeb44?.[_0x426f0e(0x284)]}:_0x4aeb44});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x426f0e(0x23e),'text':_0x426f0e(0x20d)}],'isError':!![]};if(!MORPH_API_KEY['startsWith']('sk-')&&!MORPH_API_KEY[_0x426f0e(0x1c4)](_0x426f0e(0x19d)))return{'content':[{'type':_0x426f0e(0x23e),'text':_0x426f0e(0x18e)}],'isError':!![]};if(DISABLED_TOOLS['has'](_0x5e3c72))return{'content':[{'type':_0x426f0e(0x23e),'text':_0x426f0e(0x1de)+_0x5e3c72+_0x426f0e(0x1c0)}],'isError':![]};switch(_0x5e3c72){case TOOL_NAMES[_0x426f0e(0x1cd)]:{let _0x347b27=_0x4aeb44;if(_0x347b27&&typeof _0x347b27==='object'){if(!(_0x426f0e(0x26f)in _0x347b27)){const _0x2be5e3=_0x347b27[_0x426f0e(0x1b3)]??_0x347b27['filePath']??_0x347b27['target_filepath']??_0x347b27['file_path']??_0x347b27['file'];if(_0x2be5e3)_0x347b27={..._0x347b27,'path':_0x2be5e3};}_0x426f0e(0x245)in _0x347b27&&!(_0x426f0e(0x1eb)in _0x347b27)&&(_0x347b27={..._0x347b27,'instruction':_0x347b27[_0x426f0e(0x245)]});if(!(_0x426f0e(0x247)in _0x347b27)){const _0x232689=_0x347b27[_0x426f0e(0x23d)]??_0x347b27[_0x426f0e(0x208)]??_0x347b27['content']??_0x347b27[_0x426f0e(0x2ab)];if(_0x232689)_0x347b27={..._0x347b27,'code_edit':_0x232689};}}const _0x29e50c=MorphEditFileArgsSchema[_0x426f0e(0x252)](_0x347b27);if(!_0x29e50c[_0x426f0e(0x1d5)])throw new Error('Invalid\x20arguments\x20for\x20morph_edit_file:\x20'+_0x29e50c[_0x426f0e(0x29c)]);const _0x44db33=await validatePath(_0x29e50c['data'][_0x426f0e(0x26f)]);let _0x2a806c=null,_0x4721f4=!![],_0x552c58=null;try{_0x2a806c=await a0_0x5207e6[_0x426f0e(0x233)](_0x44db33,'utf-8'),logger['debug'](_0x426f0e(0x285),_0x426f0e(0x1d4),{'path':_0x44db33,'size_bytes':_0x2a806c[_0x426f0e(0x19a)]});}catch(_0x5caa45){const _0x23f4dd=_0x5caa45[_0x426f0e(0x23d)];_0x23f4dd===_0x426f0e(0x2ac)?(_0x4721f4=![],_0x2a806c='',logger['debug'](_0x426f0e(0x285),'file_read_complete',{'path':_0x44db33,'exists':![]})):(_0x552c58=_0x426f0e(0x212)+(_0x23f4dd||_0x426f0e(0x1af))+_0x426f0e(0x21e)+(_0x5caa45 instanceof Error?_0x5caa45[_0x426f0e(0x282)]:String(_0x5caa45)),logger[_0x426f0e(0x29c)](_0x426f0e(0x285),_0x426f0e(0x250),{'path':_0x44db33,'error':_0x552c58}),logMcpStderr('Warning:\x20'+_0x552c58));}let _0x57c52a;try{const _0x467539=MORPH_API_KEY;if(!_0x467539)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x434b46=a0_0x4c88d7[_0x426f0e(0x1ca)](_0x44db33),_0xba21c=a0_0x4c88d7[_0x426f0e(0x1a4)](_0x44db33);logger[_0x426f0e(0x180)](_0x426f0e(0x285),'api_request_start',{'model':_0x426f0e(0x288),'path':_0x29e50c[_0x426f0e(0x1a0)][_0x426f0e(0x26f)],'instruction_len':_0x29e50c[_0x426f0e(0x1a0)][_0x426f0e(0x1eb)]['length'],'code_edit_len':_0x29e50c['data'][_0x426f0e(0x247)][_0x426f0e(0x19a)],'original_code_len':_0x2a806c?.['length']??0x0,'dry_run':_0x29e50c[_0x426f0e(0x1a0)]['dryRun']});const _0x67ddb8=Date[_0x426f0e(0x1f2)](),_0x23f2bd=await executeEditFile({'target_filepath':_0xba21c,'code_edit':_0x29e50c[_0x426f0e(0x1a0)][_0x426f0e(0x247)],'instruction':_0x29e50c['data'][_0x426f0e(0x1eb)]},{'morphApiKey':_0x467539,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x434b46,'autoWrite':!_0x29e50c[_0x426f0e(0x1a0)][_0x426f0e(0x284)],'generateUdiff':![],'debug':![]}),_0x221939=Date[_0x426f0e(0x1f2)]()-_0x67ddb8;_0x57c52a=_0x23f2bd[_0x426f0e(0x2a8)];if(!_0x23f2bd['success'])throw new Error(_0x23f2bd[_0x426f0e(0x29c)]||_0x426f0e(0x1a5));const _0x4fa55d=_0x23f2bd[_0x426f0e(0x1f9)],_0x1a42e0=_0x426f0e(0x2a6)+_0x4fa55d[_0x426f0e(0x1e6)]+_0x426f0e(0x23c)+_0x4fa55d[_0x426f0e(0x207)]+_0x426f0e(0x1d2)+_0x4fa55d[_0x426f0e(0x191)];logger[_0x426f0e(0x180)](_0x426f0e(0x285),_0x426f0e(0x1bb),{'tool':'edit_file','success':!![],'latency_ms':Date[_0x426f0e(0x1f2)]()-_0x19a68a,'edit_latency_ms':_0x221939,'changes':{'added':_0x4fa55d[_0x426f0e(0x1e6)],'removed':_0x4fa55d[_0x426f0e(0x207)],'modified':_0x4fa55d[_0x426f0e(0x191)]},'completion_id':_0x57c52a});if(_0x29e50c[_0x426f0e(0x1a0)]['dryRun'])return{'content':[{'type':'text','text':'Morph\x20Edit\x20Preview'+(_0x4721f4?'':_0x426f0e(0x1ea))+':\x20'+_0x29e50c['data'][_0x426f0e(0x1eb)]+_0x426f0e(0x239)+_0x1a42e0+_0x426f0e(0x27f)+_0x29e50c[_0x426f0e(0x1a0)][_0x426f0e(0x26f)]+'.'}]};return{'content':[{'type':'text','text':_0x426f0e(0x1e5)+(_0x4721f4?'Applied':'Created\x20File')+':\x20'+_0x29e50c[_0x426f0e(0x1a0)]['instruction']+_0x426f0e(0x239)+_0x1a42e0+_0x426f0e(0x27f)+_0x29e50c[_0x426f0e(0x1a0)][_0x426f0e(0x26f)]+'.'}]};}catch(_0x1a6928){const _0x3cd8a9=handleMorphAPIError(_0x1a6928);if(_0x3cd8a9)return logger[_0x426f0e(0x29c)]('MCP',_0x426f0e(0x22e),{'tool':_0x426f0e(0x2a5),'error':_0x426f0e(0x25b),'latency_ms':Date[_0x426f0e(0x1f2)]()-_0x19a68a}),_0x3cd8a9;const _0x58c548=_0x1a6928 instanceof Error?_0x1a6928['message']:String(_0x1a6928);return logger[_0x426f0e(0x29c)](_0x426f0e(0x285),_0x426f0e(0x22e),{'tool':_0x426f0e(0x2a5),'error':_0x58c548,'path':_0x29e50c[_0x426f0e(0x1a0)]['path'],'validated_path':_0x44db33,'latency_ms':Date[_0x426f0e(0x1f2)]()-_0x19a68a,'stack':_0x1a6928 instanceof Error?_0x1a6928[_0x426f0e(0x1b2)]:undefined}),reportMorphError({'error_message':_0x58c548,'error_type':_0x1a6928 instanceof Error?_0x1a6928[_0x426f0e(0x289)][_0x426f0e(0x1ed)]:_0x426f0e(0x1be),'context':{'tool':_0x426f0e(0x2a5),'completion_id':_0x57c52a,'file_path':_0x29e50c[_0x426f0e(0x1a0)][_0x426f0e(0x26f)],'validated_path':_0x44db33,'instruction':_0x29e50c[_0x426f0e(0x1a0)]['instruction'],'model':MORPH_LARGE_APPLY?'morph-v3-large':_0x426f0e(0x288),'dry_run':_0x29e50c['data']['dryRun'],'file_exists':_0x4721f4,'file_read_error':_0x552c58,'file_readable':_0x2a806c!==null,'request_content':{'path':_0x29e50c[_0x426f0e(0x1a0)][_0x426f0e(0x26f)],'code_edit':_0x29e50c[_0x426f0e(0x1a0)][_0x426f0e(0x247)],'instruction':_0x29e50c['data'][_0x426f0e(0x1eb)],'original_code':_0x2a806c!==null?_0x2a806c[_0x426f0e(0x19a)]>0xc350?_0x2a806c[_0x426f0e(0x256)](0x0,0xc350)+_0x426f0e(0x277)+_0x2a806c[_0x426f0e(0x19a)]+'\x20chars)':_0x2a806c:_0x426f0e(0x271)+(_0x552c58||_0x426f0e(0x1e2))+']','original_code_length':_0x2a806c?.['length']??0x0,'model':MORPH_LARGE_APPLY?'morph-v3-large':_0x426f0e(0x288),'dry_run':_0x29e50c['data'][_0x426f0e(0x284)]}},'stack_trace':_0x1a6928 instanceof Error?_0x1a6928[_0x426f0e(0x1b2)]:undefined,'source':_0x426f0e(0x19b)})[_0x426f0e(0x209)](()=>{}),{'content':[{'type':_0x426f0e(0x23e),'text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x58c548}],'isError':!![]};}}case TOOL_NAMES['CODEBASE_SEARCH']:{const _0x16d1c7=WarpGrepArgsSchema[_0x426f0e(0x252)](_0x4aeb44);if(!_0x16d1c7['success'])return{'content':[{'type':'text','text':_0x426f0e(0x203)+_0x16d1c7[_0x426f0e(0x29c)]}],'isError':!![]};const _0x2f695c=_0x2ca39e=>{const _0x2e5e51=_0x426f0e,_0x4af8cd=[];for(const _0x3b0a94 of _0x2ca39e||[]){if(_0x3b0a94[_0x2e5e51(0x237)]===_0x2e5e51(0x1f7)&&Array['isArray'](_0x3b0a94[_0x2e5e51(0x278)]))for(const _0x3098a2 of _0x3b0a94[_0x2e5e51(0x278)]){try{const _0x3222af=_0x3098a2[_0x2e5e51(0x18a)]?.[_0x2e5e51(0x1ed)],_0x170498=JSON['parse'](_0x3098a2['function']?.[_0x2e5e51(0x1d9)]||'{}');if(_0x3222af==='grep_search')_0x4af8cd[_0x2e5e51(0x1a2)](_0x2e5e51(0x28b)+_0x170498['pattern']+'\x27\x20'+(_0x170498[_0x2e5e51(0x26f)]||'.'));else{if(_0x3222af==='read')_0x4af8cd[_0x2e5e51(0x1a2)](_0x2e5e51(0x22c)+_0x170498[_0x2e5e51(0x26f)]);else{if(_0x3222af===_0x2e5e51(0x242))_0x4af8cd[_0x2e5e51(0x1a2)](_0x2e5e51(0x21b)+(_0x170498['command']||'.'));else{if(_0x3222af===_0x2e5e51(0x1d0))_0x4af8cd[_0x2e5e51(0x1a2)](_0x2e5e51(0x1bc)+_0x170498['pattern']+'\x27\x20'+(_0x170498['path']||'.'));else _0x3222af===_0x2e5e51(0x192)&&_0x4af8cd[_0x2e5e51(0x1a2)](_0x2e5e51(0x192));}}}}catch{}}}return _0x4af8cd;},_0x5a292d=_0x4c581a=>{const _0x510d34=_0x426f0e,_0x3df306=[];if(!_0x4c581a||!Array[_0x510d34(0x290)](_0x4c581a))return _0x3df306;const _0x3db5d3=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x510d34(0x240),'tool':_0x510d34(0x1b8)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x510d34(0x2ad),'tool':_0x510d34(0x1b8)},{'pattern':/\[READ ERROR\]/,'error_type':_0x510d34(0x211),'tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x510d34(0x188),'tool':_0x510d34(0x1b8)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x510d34(0x28d),'tool':_0x510d34(0x1aa)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x510d34(0x254),'tool':_0x510d34(0x1aa)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x510d34(0x188),'tool':_0x510d34(0x1b8)},{'pattern':/\[SYMLINK\]/,'error_type':_0x510d34(0x186),'tool':_0x510d34(0x1b8)},{'pattern':/not a text file/,'error_type':'BinaryFile','tool':'read'},{'pattern':/symbolic link/,'error_type':_0x510d34(0x186),'tool':_0x510d34(0x1b8)},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':_0x510d34(0x1b8)},{'pattern':/status="error"/,'error_type':_0x510d34(0x187),'tool':'unknown'}];let _0x1bc69a=0x0;for(const _0x4e136f of _0x4c581a){_0x4e136f[_0x510d34(0x237)]===_0x510d34(0x1f7)&&Array[_0x510d34(0x290)](_0x4e136f['tool_calls'])&&_0x1bc69a++;const _0x3084fa=_0x4e136f[_0x510d34(0x21a)];if((_0x4e136f[_0x510d34(0x237)]===_0x510d34(0x1ba)||_0x4e136f[_0x510d34(0x237)]===_0x510d34(0x2a9))&&_0x3084fa&&typeof _0x3084fa===_0x510d34(0x1a6))for(const {pattern:_0x460bc5,error_type:_0x10b821,tool:_0x5285c6}of _0x3db5d3){const _0x1e1117=_0x3084fa[_0x510d34(0x2a4)](new RegExp(_0x460bc5['source'],'g'));if(_0x1e1117)for(const _0x45e74c of _0x1e1117){const _0x591753=_0x3084fa[_0x510d34(0x1d6)](_0x45e74c),_0x410df5=_0x3084fa[_0x510d34(0x256)](_0x591753,Math['min'](_0x591753+0xc8,_0x3084fa[_0x510d34(0x19a)]));_0x3df306['push']({'tool':_0x5285c6,'error_type':_0x10b821,'error_message':_0x410df5[_0x510d34(0x296)]('\x0a')[0x0],'turn':_0x1bc69a});}}}return _0x3df306;};try{const _0xf48624=a0_0x4c88d7[_0x426f0e(0x24a)](_0x16d1c7[_0x426f0e(0x1a0)]['repo_path']),_0x2357ff=_0x16d1c7['data'][_0x426f0e(0x1e4)],_0xa86b20=_0x2357ff===_0x426f0e(0x1cc)?{'allowNames':[_0x426f0e(0x1cc)]}:undefined,_0x4892d1=new LocalRipgrepProvider(_0xf48624,undefined,_0xa86b20);logger['debug'](_0x426f0e(0x285),_0x426f0e(0x265),{'type':_0x426f0e(0x189),'repo_root':_0xf48624,'search_type':_0x2357ff||_0x426f0e(0x28a)}),logger['debug'](_0x426f0e(0x285),'warp_grep_start',{'query':_0x16d1c7[_0x426f0e(0x1a0)][_0x426f0e(0x221)],'repo_root':_0xf48624,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x1171c3=Date[_0x426f0e(0x1f2)](),_0x2f776b=await runWarpGrep({'searchTerm':_0x16d1c7[_0x426f0e(0x1a0)]['search_string'],'repoRoot':_0xf48624,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x4892d1,'search_type':_0x2357ff}),_0x5b637c=Date['now']()-_0x1171c3,_0x38b456=_0x2f776b[_0x426f0e(0x192)]?.['metadata']?.[_0x426f0e(0x287)]?.[_0x426f0e(0x19a)]??0x0;logger[_0x426f0e(0x180)](_0x426f0e(0x285),_0x426f0e(0x1d8),{'termination':_0x2f776b[_0x426f0e(0x1f0)],'turns':_0x2f776b[_0x426f0e(0x25e)]?.['turns']??0x0,'files_found':_0x38b456,'latency_ms':_0x5b637c});const _0x429363=_0x5a292d(_0x2f776b['messages']);_0x429363['length']>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x429363['length']+'\x20error(s)','error_type':_0x426f0e(0x2ae),'level':'warn','tool':'codebase_search','context':{'repo_path':_0x16d1c7['data'][_0x426f0e(0x1fd)],'query':_0x16d1c7[_0x426f0e(0x1a0)][_0x426f0e(0x221)],'model':'morph-warp-grep-v2.1','termination_reason':_0x2f776b['terminationReason'],'sub_tool_errors':_0x429363,'timings':_0x2f776b[_0x426f0e(0x25e)],'tool_calls':_0x2f695c(_0x2f776b[_0x426f0e(0x275)]),'messages':_0x2f776b[_0x426f0e(0x275)]?.['map'](_0x4e9a15=>({'role':_0x4e9a15[_0x426f0e(0x237)],'content':_0x4e9a15[_0x426f0e(0x21a)],..._0x4e9a15['tool_calls']?{'tool_calls':_0x4e9a15[_0x426f0e(0x278)][_0x426f0e(0x19a)]}:{},..._0x4e9a15['tool_call_id']?{'tool_call_id':_0x4e9a15[_0x426f0e(0x1f3)]}:{}}))},'source':_0x426f0e(0x19b)})[_0x426f0e(0x209)](()=>{});let _0x2e9d71='';if(_0x2f776b['terminationReason']===_0x426f0e(0x2a3)&&_0x2f776b['finish']?.[_0x426f0e(0x20b)]?.['files']){const _0x5dde31=_0x2f776b[_0x426f0e(0x192)][_0x426f0e(0x20b)][_0x426f0e(0x287)];if(_0x5dde31[_0x426f0e(0x19a)]===0x0)return _0x2e9d71=_0x2f776b[_0x426f0e(0x192)][_0x426f0e(0x1dc)]||_0x426f0e(0x231),{'content':[{'type':_0x426f0e(0x23e),'text':_0x2e9d71}]};const _0x4bca2e=[],_0xc53af1=[_0x426f0e(0x1fc)];for(const _0xc90277 of _0x2f776b[_0x426f0e(0x275)]){if(_0xc90277[_0x426f0e(0x237)]===_0x426f0e(0x1f7)&&Array[_0x426f0e(0x290)](_0xc90277[_0x426f0e(0x278)]))for(const _0x296f07 of _0xc90277['tool_calls']){try{const _0x4c06c9=_0x296f07['function']?.['name'],_0x4d8d3b=JSON[_0x426f0e(0x20c)](_0x296f07[_0x426f0e(0x18a)]?.[_0x426f0e(0x1d9)]||'{}');if(_0x4c06c9===_0x426f0e(0x238))_0xc53af1[_0x426f0e(0x1a2)]('-\x20Grepped\x20\x27'+_0x4d8d3b['pattern']+_0x426f0e(0x2a1)+(_0x4d8d3b[_0x426f0e(0x26f)]||'.')+'`');else{if(_0x4c06c9===_0x426f0e(0x1b8))_0xc53af1[_0x426f0e(0x1a2)](_0x426f0e(0x214)+_0x4d8d3b['path']+'`');else{if(_0x4c06c9==='list_directory')_0xc53af1[_0x426f0e(0x1a2)](_0x426f0e(0x1ae)+(_0x4d8d3b[_0x426f0e(0x236)]||'.')+'`');else _0x4c06c9==='glob'&&_0xc53af1[_0x426f0e(0x1a2)](_0x426f0e(0x1ee)+_0x4d8d3b[_0x426f0e(0x1e3)]+_0x426f0e(0x27b)+(_0x4d8d3b[_0x426f0e(0x26f)]||'.')+'`');}}}catch{}}}_0x4bca2e['push'](_0xc53af1['join']('\x0a'));const _0x13788c=['',_0x426f0e(0x246)];for(const _0x18dae2 of _0x5dde31){if(_0x18dae2['lines']==='*')_0x13788c['push']('-\x20'+_0x18dae2[_0x426f0e(0x26f)]+':*');else{if(Array['isArray'](_0x18dae2[_0x426f0e(0x23a)])){const _0x4a4963=_0x18dae2['lines']['map'](([_0xc04d59,_0xd17907])=>{if(_0xc04d59===_0xd17907)return''+_0xc04d59;return _0xc04d59+'-'+_0xd17907;});_0x13788c[_0x426f0e(0x1a2)]('-\x20'+_0x18dae2[_0x426f0e(0x26f)]+':'+_0x4a4963[_0x426f0e(0x20e)](','));}else _0x13788c[_0x426f0e(0x1a2)]('-\x20'+_0x18dae2[_0x426f0e(0x26f)]+':*');}}_0x13788c['push'](''),_0x4bca2e['push'](_0x13788c[_0x426f0e(0x20e)]('\x0a')),_0x4bca2e[_0x426f0e(0x1a2)](_0x426f0e(0x255));const _0x132000=[],_0x21b1a1=[];for(const _0x55adf9 of _0x5dde31){let _0xd86ef=a0_0x4c88d7[_0x426f0e(0x24a)](_0x16d1c7[_0x426f0e(0x1a0)]['repo_path'],_0x55adf9[_0x426f0e(0x26f)]),_0x1c0122=null,_0x3a3cb2=null;try{_0x1c0122=await a0_0x5207e6[_0x426f0e(0x233)](_0xd86ef,{'encoding':'utf-8'});}catch(_0x118fcb){const _0x3246ee=fixPathRepetition(_0xd86ef);if(_0x3246ee)try{_0x1c0122=await a0_0x5207e6[_0x426f0e(0x233)](_0x3246ee,{'encoding':'utf-8'}),_0xd86ef=_0x3246ee;}catch{_0x3a3cb2=_0x118fcb instanceof Error?_0x118fcb:new Error(String(_0x118fcb));}else _0x3a3cb2=_0x118fcb instanceof Error?_0x118fcb:new Error(String(_0x118fcb));}if(_0x1c0122!==null){const _0x553f07=_0x1c0122[_0x426f0e(0x296)](/\r?\n/),_0xcba27d=[];if(_0x55adf9[_0x426f0e(0x23a)]==='*'||!Array['isArray'](_0x55adf9['lines']))for(let _0x46f4b1=0x1;_0x46f4b1<=_0x553f07[_0x426f0e(0x19a)];_0x46f4b1++){const _0x1f16c3=_0x553f07[_0x46f4b1-0x1];_0xcba27d[_0x426f0e(0x1a2)](_0x46f4b1+'|\x20'+_0x1f16c3);}else for(const [_0x4f1697,_0x2a8ea5]of _0x55adf9['lines']){_0xcba27d[_0x426f0e(0x19a)]>0x0&&_0xcba27d[_0x426f0e(0x1a2)]('');for(let _0x3573c3=_0x4f1697;_0x3573c3<=_0x2a8ea5&&_0x3573c3<=_0x553f07[_0x426f0e(0x19a)];_0x3573c3++){const _0x16fbe7=_0x553f07[_0x3573c3-0x1];_0xcba27d[_0x426f0e(0x1a2)](_0x3573c3+'|\x20'+_0x16fbe7);}}_0x21b1a1[_0x426f0e(0x1a2)]({'path':_0x55adf9[_0x426f0e(0x26f)],'content':_0xcba27d[_0x426f0e(0x20e)]('\x0a')});}else _0x132000[_0x426f0e(0x1a2)](_0x426f0e(0x1d3)+_0x55adf9[_0x426f0e(0x26f)]+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x3a3cb2?.[_0x426f0e(0x282)]||_0x426f0e(0x229))+_0x426f0e(0x22d));}try{const _0x2625aa=await compactFileContexts(_0x21b1a1,_0x16d1c7['data'][_0x426f0e(0x221)],MORPH_API_KEY,MORPH_API_URL);for(const _0x33ea4f of _0x2625aa){_0x132000[_0x426f0e(0x1a2)](_0x426f0e(0x1d3)+_0x33ea4f[_0x426f0e(0x26f)]+'\x22>\x0a'+_0x33ea4f['content']+'\x0a</file>');}}catch(_0x2ae193){logger[_0x426f0e(0x217)](_0x426f0e(0x285),_0x426f0e(0x1ff),{'error':_0x2ae193 instanceof Error?_0x2ae193[_0x426f0e(0x282)]:String(_0x2ae193),'files_count':_0x21b1a1[_0x426f0e(0x19a)]});for(const _0x3f9c3 of _0x21b1a1){_0x132000[_0x426f0e(0x1a2)](_0x426f0e(0x1d3)+_0x3f9c3[_0x426f0e(0x26f)]+_0x426f0e(0x1f5)+_0x3f9c3[_0x426f0e(0x21a)]+_0x426f0e(0x22d));}}_0x4bca2e[_0x426f0e(0x1a2)](_0x132000[_0x426f0e(0x20e)]('\x0a\x0a')),_0x2e9d71=_0x4bca2e[_0x426f0e(0x20e)]('\x0a');const _0x5e85e8=_0x2f776b[_0x426f0e(0x218)]?.[_0x426f0e(0x268)](_0x4d3762=>_0x4d3762[_0x426f0e(0x282)]?.['startsWith'](_0x426f0e(0x1f1)))||[];if(_0x5e85e8['length']>0x0){const _0x44a081=_0x5e85e8[_0x426f0e(0x185)](_0x44f1ea=>_0x44f1ea[_0x426f0e(0x282)])[_0x426f0e(0x20e)](';\x20');reportMorphError({'error_message':_0x44a081,'error_type':_0x426f0e(0x25d),'context':{'tool':_0x426f0e(0x1e1),'repo_path':_0x16d1c7[_0x426f0e(0x1a0)][_0x426f0e(0x1fd)],'query':_0x16d1c7[_0x426f0e(0x1a0)][_0x426f0e(0x221)],'model':'morph-warp-grep-v2.1','termination_reason':_0x426f0e(0x198),'error_count':_0x5e85e8[_0x426f0e(0x19a)],'is_timeout':![],'timings':_0x2f776b['timings'],'files_attempted':_0x5dde31[_0x426f0e(0x185)](_0x3dd36a=>({'path':_0x3dd36a[_0x426f0e(0x26f)],'lines':_0x3dd36a[_0x426f0e(0x23a)]})),'tool_calls':_0x2f695c(_0x2f776b[_0x426f0e(0x275)]),'messages':_0x2f776b['messages']?.[_0x426f0e(0x185)](_0x30d88f=>({'role':_0x30d88f[_0x426f0e(0x237)],'content':_0x30d88f['content'],..._0x30d88f[_0x426f0e(0x278)]?{'tool_calls':_0x30d88f[_0x426f0e(0x278)][_0x426f0e(0x19a)]}:{},..._0x30d88f[_0x426f0e(0x1f3)]?{'tool_call_id':_0x30d88f[_0x426f0e(0x1f3)]}:{}})),'request_content':{'query':_0x16d1c7[_0x426f0e(0x1a0)]['search_string'],'repo_path':_0x16d1c7['data'][_0x426f0e(0x1fd)],'repoRoot':a0_0x4c88d7[_0x426f0e(0x24a)](_0x16d1c7[_0x426f0e(0x1a0)]['repo_path']),'model':_0x426f0e(0x1e7)}},'source':_0x426f0e(0x19b)})[_0x426f0e(0x209)](()=>{});}}else{if(_0x2f776b[_0x426f0e(0x1f0)]===_0x426f0e(0x1b6)&&_0x2f776b[_0x426f0e(0x218)][_0x426f0e(0x19a)]>0x0){const _0x38ef2f=_0x2f776b[_0x426f0e(0x218)][_0x426f0e(0x185)](_0x1a34a4=>_0x1a34a4['message'])[_0x426f0e(0x20e)](';\x20');_0x2e9d71='Error:\x20'+_0x38ef2f;const _0x9daf02=_0x38ef2f[_0x426f0e(0x28c)]()[_0x426f0e(0x228)](_0x426f0e(0x29f))||_0x38ef2f[_0x426f0e(0x28c)]()[_0x426f0e(0x228)]('timed\x20out')||_0x38ef2f[_0x426f0e(0x28c)]()[_0x426f0e(0x228)](_0x426f0e(0x20a)),_0x59290c=_0x2f776b[_0x426f0e(0x192)]?.[_0x426f0e(0x20b)]?.[_0x426f0e(0x287)],_0x434b84=_0x2f776b[_0x426f0e(0x218)][0x0];reportMorphError({'error_message':_0x38ef2f,'error_type':_0x9daf02?_0x426f0e(0x1ad):_0x434b84?.[_0x426f0e(0x289)]?.['name']||'WarpGrepError','context':{'tool':_0x426f0e(0x1e1),'repo_path':_0x16d1c7['data']['repo_path'],'query':_0x16d1c7[_0x426f0e(0x1a0)][_0x426f0e(0x221)],'model':_0x426f0e(0x1e7),'termination_reason':_0x2f776b[_0x426f0e(0x1f0)],'error_count':_0x2f776b[_0x426f0e(0x218)][_0x426f0e(0x19a)],'is_timeout':_0x9daf02,'timings':_0x2f776b['timings'],'files_attempted':_0x59290c?.[_0x426f0e(0x185)](_0x11adc7=>({'path':_0x11adc7[_0x426f0e(0x26f)],'lines':_0x11adc7['lines']})),'tool_calls':_0x2f695c(_0x2f776b['messages']),'messages':_0x2f776b['messages']?.[_0x426f0e(0x185)](_0x36bcd2=>({'role':_0x36bcd2['role'],'content':_0x36bcd2['content'],..._0x36bcd2['tool_calls']?{'tool_calls':_0x36bcd2[_0x426f0e(0x278)][_0x426f0e(0x19a)]}:{},..._0x36bcd2[_0x426f0e(0x1f3)]?{'tool_call_id':_0x36bcd2[_0x426f0e(0x1f3)]}:{}})),'request_content':{'query':_0x16d1c7[_0x426f0e(0x1a0)][_0x426f0e(0x221)],'repo_path':_0x16d1c7[_0x426f0e(0x1a0)][_0x426f0e(0x1fd)],'repoRoot':a0_0x4c88d7[_0x426f0e(0x24a)](_0x16d1c7[_0x426f0e(0x1a0)][_0x426f0e(0x1fd)]),'model':_0x426f0e(0x1e7)}},'stack_trace':_0x434b84?.[_0x426f0e(0x1b2)]||undefined,'source':_0x426f0e(0x19b)})[_0x426f0e(0x209)](()=>{});}else _0x2e9d71=_0x426f0e(0x2aa);}return{'content':[{'type':_0x426f0e(0x23e),'text':_0x2e9d71}]};}catch(_0x2ecf41){const _0xf8af4e=handleMorphAPIError(_0x2ecf41);if(_0xf8af4e)return logger[_0x426f0e(0x29c)](_0x426f0e(0x285),_0x426f0e(0x22e),{'tool':_0x426f0e(0x1e1),'error':_0x426f0e(0x25b),'latency_ms':Date['now']()-_0x19a68a}),_0xf8af4e;const _0x4a223f=_0x2ecf41 instanceof Error?_0x2ecf41[_0x426f0e(0x282)]:String(_0x2ecf41);logger[_0x426f0e(0x29c)]('MCP',_0x426f0e(0x22e),{'tool':_0x426f0e(0x1e1),'error':_0x4a223f,'repo_path':_0x16d1c7['data'][_0x426f0e(0x1fd)],'query':_0x16d1c7[_0x426f0e(0x1a0)]['search_string'],'latency_ms':Date[_0x426f0e(0x1f2)]()-_0x19a68a});const _0x2fe6db=_0x4a223f[_0x426f0e(0x28c)]()[_0x426f0e(0x228)](_0x426f0e(0x29f))||_0x4a223f[_0x426f0e(0x28c)]()[_0x426f0e(0x228)](_0x426f0e(0x2a7))||_0x4a223f[_0x426f0e(0x28c)]()[_0x426f0e(0x228)](_0x426f0e(0x20a))||_0x2ecf41 instanceof Error&&_0x2ecf41[_0x426f0e(0x1ed)]===_0x426f0e(0x1ad);return reportMorphError({'error_message':_0x4a223f,'error_type':_0x2fe6db?_0x426f0e(0x1ad):_0x2ecf41 instanceof Error?_0x2ecf41[_0x426f0e(0x289)]['name']:_0x426f0e(0x1be),'context':{'tool':'codebase_search','repo_path':_0x16d1c7[_0x426f0e(0x1a0)][_0x426f0e(0x1fd)],'query':_0x16d1c7[_0x426f0e(0x1a0)]['search_string'],'model':_0x426f0e(0x1e7),'is_timeout':_0x2fe6db,'exception_phase':_0x426f0e(0x216),'request_content':{'query':_0x16d1c7[_0x426f0e(0x1a0)][_0x426f0e(0x221)],'repo_path':_0x16d1c7[_0x426f0e(0x1a0)][_0x426f0e(0x1fd)],'repoRoot':a0_0x4c88d7['resolve'](_0x16d1c7[_0x426f0e(0x1a0)][_0x426f0e(0x1fd)]),'model':_0x426f0e(0x1e7)}},'stack_trace':_0x2ecf41 instanceof Error?_0x2ecf41[_0x426f0e(0x1b2)]:undefined,'source':_0x426f0e(0x19b)})[_0x426f0e(0x209)](()=>{}),{'content':[{'type':_0x426f0e(0x23e),'text':'Error\x20running\x20fast\x20context\x20search:\x20'+_0x4a223f}],'isError':![]};}}case TOOL_NAMES[_0x426f0e(0x1e9)]:{const _0x59c49a=WarpGrepGitHubArgsSchema[_0x426f0e(0x252)](_0x4aeb44);if(!_0x59c49a[_0x426f0e(0x1d5)])return{'content':[{'type':_0x426f0e(0x23e),'text':_0x426f0e(0x203)+_0x59c49a[_0x426f0e(0x29c)]}],'isError':!![]};const _0x5ed080=_0x59c49a['data'][_0x426f0e(0x222)]||_0x59c49a['data'][_0x426f0e(0x21f)];if(!_0x5ed080)return{'content':[{'type':_0x426f0e(0x23e),'text':_0x426f0e(0x182)}],'isError':!![]};const _0x2de418=MORPH_API_KEY;if(!_0x2de418)throw new Error(_0x426f0e(0x19c));const _0x32b20d=Date[_0x426f0e(0x1f2)]();logger[_0x426f0e(0x180)](_0x426f0e(0x285),_0x426f0e(0x1fb),{'identifier':_0x5ed080,'query':_0x59c49a[_0x426f0e(0x1a0)][_0x426f0e(0x221)],'branch':_0x59c49a[_0x426f0e(0x1a0)]['branch']});try{const _0x1c5e93=new WarpGrepClient({'morphApiKey':_0x2de418,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x484191=await _0x1c5e93[_0x426f0e(0x264)]({'searchTerm':_0x59c49a['data'][_0x426f0e(0x221)],'github':_0x5ed080,'branch':_0x59c49a[_0x426f0e(0x1a0)][_0x426f0e(0x25a)]}),_0x5e6a5c=Date['now']()-_0x32b20d;logMcpStderr('[github_codebase_search]\x20Done\x20in\x20'+_0x5e6a5c+_0x426f0e(0x181)+_0x484191['success']);const _0x376aa2=formatResult(_0x484191);return{'content':[{'type':'text','text':_0x376aa2}]};}catch(_0x42fee7){const _0x5117e9=handleMorphAPIError(_0x42fee7);if(_0x5117e9)return _0x5117e9;const _0x2d9692=Date['now']()-_0x32b20d,_0x5dceb3=_0x42fee7 instanceof Error?_0x42fee7['message']:String(_0x42fee7);return logMcpStderr(_0x426f0e(0x26e)+_0x2d9692+_0x426f0e(0x26a),_0x5dceb3),reportMorphError({'error_message':_0x5dceb3,'error_type':_0x42fee7 instanceof Error?_0x42fee7[_0x426f0e(0x289)][_0x426f0e(0x1ed)]:_0x426f0e(0x1be),'context':{'tool':_0x426f0e(0x29b),'github_url':_0x5ed080,'search_string':_0x59c49a[_0x426f0e(0x1a0)][_0x426f0e(0x221)],'branch':_0x59c49a[_0x426f0e(0x1a0)]['branch']},'stack_trace':_0x42fee7 instanceof Error?_0x42fee7[_0x426f0e(0x1b2)]:undefined,'source':'mcp-filesystem','tool':'github_codebase_search','latency_ms':_0x2d9692})[_0x426f0e(0x209)](()=>{}),{'content':[{'type':_0x426f0e(0x23e),'text':'GitHub\x20search\x20failed:\x20'+_0x5dceb3}],'isError':![]};}}default:throw new Error(_0x426f0e(0x270)+_0x5e3c72);}}catch(_0x3f68ce){const _0x3b344f=_0x3f68ce instanceof Error?_0x3f68ce[_0x426f0e(0x282)]:String(_0x3f68ce);return reportMorphError({'error_message':_0x3b344f,'error_type':_0x3f68ce instanceof Error?_0x3f68ce['constructor']['name']:_0x426f0e(0x1be),'context':{'tool':_0x5e3c72,'arguments':_0x4aeb44?JSON[_0x426f0e(0x200)](_0x4aeb44)['substring'](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x3f68ce instanceof Error?_0x3f68ce['stack']:undefined,'source':_0x426f0e(0x19b)})['catch'](()=>{}),{'content':[{'type':_0x426f0e(0x23e),'text':_0x426f0e(0x21c)+_0x3b344f}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x54321f){const _0x258869=a0_0x240656,_0x2a9324=await getValidRootDirectories(_0x54321f);if(_0x2a9324[_0x258869(0x19a)]>0x0)allowedDirectories=[..._0x2a9324],logMcpStderr('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0x2a9324['length']+_0x258869(0x17d));else{logMcpStderr(_0x258869(0x24d));if(ENABLE_WORKSPACE_MODE)try{const _0x1f74dc=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x1f74dc&&(allowedDirectories=[_0x1f74dc],logMcpStderr(_0x258869(0x1c2)+_0x1f74dc));}catch(_0x94dbaf){logMcpStderr(_0x258869(0x25f)+_0x94dbaf);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x345da7=a0_0x240656;try{const _0x549c5d=await server[_0x345da7(0x1ef)]();_0x549c5d&&'roots'in _0x549c5d&&await updateAllowedDirectoriesFromRoots(_0x549c5d['roots']);}catch(_0x56a4ea){logMcpStderr(_0x345da7(0x1b9),_0x56a4ea instanceof Error?_0x56a4ea[_0x345da7(0x282)]:String(_0x56a4ea));}}),server[a0_0x240656(0x18f)]=async()=>{const _0x2170ec=a0_0x240656,_0x8fb490=server['getClientCapabilities']();if(_0x8fb490?.[_0x2170ec(0x274)])try{const _0x2a7957=await server['listRoots']();_0x2a7957&&_0x2170ec(0x274)in _0x2a7957?await updateAllowedDirectoriesFromRoots(_0x2a7957[_0x2170ec(0x274)]):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x327325){logMcpStderr(_0x2170ec(0x1ec),_0x327325 instanceof Error?_0x327325[_0x2170ec(0x282)]:String(_0x327325));}else{if(allowedDirectories[_0x2170ec(0x19a)]>0x0)logMcpStderr(_0x2170ec(0x201),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x2170ec(0x276));else throw new Error(_0x2170ec(0x1c7));}}};async function runServer(){const _0x59153a=a0_0x240656,_0x25aecc=new StdioServerTransport();await server[_0x59153a(0x258)](_0x25aecc),logMcpStderr(_0x59153a(0x215)),allowedDirectories[_0x59153a(0x19a)]===0x0&&logMcpStderr(_0x59153a(0x220));}runServer()[a0_0x240656(0x209)](_0x2eaf9d=>{const _0x2f9cad=a0_0x240656;logMcpStderr(_0x2f9cad(0x1b5),_0x2eaf9d),process['exit'](0x1);}); | ||
| 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);}); |
@@ -1,1 +0,1 @@ | ||
| var a1_0x144558=a1_0x2aa2;(function(_0x1c5d7b,_0xafa634){var _0x307f33=a1_0x2aa2,_0x1ff498=_0x1c5d7b();while(!![]){try{var _0x95e60b=-parseInt(_0x307f33(0x14c))/0x1+parseInt(_0x307f33(0x15c))/0x2+parseInt(_0x307f33(0x151))/0x3*(-parseInt(_0x307f33(0x150))/0x4)+-parseInt(_0x307f33(0x156))/0x5+-parseInt(_0x307f33(0x14f))/0x6*(-parseInt(_0x307f33(0x14d))/0x7)+parseInt(_0x307f33(0x15e))/0x8*(parseInt(_0x307f33(0x14b))/0x9)+parseInt(_0x307f33(0x153))/0xa;if(_0x95e60b===_0xafa634)break;else _0x1ff498['push'](_0x1ff498['shift']());}catch(_0x3368f5){_0x1ff498['push'](_0x1ff498['shift']());}}}(a1_0xb580,0x8c3d8));function a1_0x2aa2(_0x34332a,_0x260b67){_0x34332a=_0x34332a-0x14b;var _0xb580c=a1_0xb580();var _0x2aa24a=_0xb580c[_0x34332a];return _0x2aa24a;}import a1_0x3df17b from'os';import{logger}from'./logger.js';export function getOperatingSystemType(_0x637548=a1_0x3df17b['platform']()){var _0x1b50c1=a1_0x2aa2;switch(_0x637548){case'darwin':return _0x1b50c1(0x158);case _0x1b50c1(0x154):return _0x1b50c1(0x15a);case _0x1b50c1(0x15d):return _0x1b50c1(0x157);default:return'Unknown';}}export function formatMcpLogMessage(_0x4904ba,_0x224533=a1_0x3df17b[a1_0x144558(0x155)]()){return'[os='+getOperatingSystemType(_0x224533)+']\x20'+_0x4904ba;}export function logMcpStderr(_0x2ce46d,..._0x1f25ba){var _0x1ca646=a1_0x144558;console[_0x1ca646(0x152)](formatMcpLogMessage(_0x2ce46d),..._0x1f25ba),logger[_0x1ca646(0x15b)](_0x1ca646(0x14e),_0x2ce46d,_0x1f25ba[_0x1ca646(0x159)]?{'args':_0x1f25ba['map'](_0x420ca5=>String(_0x420ca5))}:undefined);}function a1_0xb580(){var _0x17460f=['MCP','6751314pRsXor','77416zhNmxp','45MhwmNG','error','3217300wibDQj','win32','platform','331420fAacHM','Linux','macOS','length','Windows','info','535224gZXZiC','linux','1492880UJFwBD','9qrFXAO','970153KAIhbh','7jwryBY'];a1_0xb580=function(){return _0x17460f;};return a1_0xb580();} | ||
| 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
-1
@@ -1,1 +0,1 @@ | ||
| function a2_0x4a0a(_0x4fbb5b,_0x296cc1){_0x4fbb5b=_0x4fbb5b-0x140;const _0x4f7219=a2_0x4f72();let _0x4a0a14=_0x4f7219[_0x4fbb5b];return _0x4a0a14;}const a2_0x10925a=a2_0x4a0a;(function(_0x2854e2,_0x5150a5){const _0x2bd8f2=a2_0x4a0a,_0x250f24=_0x2854e2();while(!![]){try{const _0x55f75e=-parseInt(_0x2bd8f2(0x153))/0x1+parseInt(_0x2bd8f2(0x14d))/0x2+parseInt(_0x2bd8f2(0x154))/0x3*(parseInt(_0x2bd8f2(0x14e))/0x4)+parseInt(_0x2bd8f2(0x152))/0x5+-parseInt(_0x2bd8f2(0x157))/0x6+parseInt(_0x2bd8f2(0x148))/0x7*(-parseInt(_0x2bd8f2(0x147))/0x8)+-parseInt(_0x2bd8f2(0x151))/0x9*(-parseInt(_0x2bd8f2(0x155))/0xa);if(_0x55f75e===_0x5150a5)break;else _0x250f24['push'](_0x250f24['shift']());}catch(_0x35e288){_0x250f24['push'](_0x250f24['shift']());}}}(a2_0x4f72,0x9a553));function a2_0x4f72(){const _0x16e255=['toISOString','fileStream',']\x20[','debug','5440RVOEVI','4179kferBq','warn','enabled','stringify','toUpperCase','1584624WyFJPU','1320INTOkc','env','info','9TLqvLV','1761150gUOFjI','911175JVjNuP','7347eQnOke','9375830uoKXsu','enable','5646078MGscHU','error','MORPH_DEBUG','MORPH_LOG_FILE','_log'];a2_0x4f72=function(){return _0x16e255;};return a2_0x4f72();}import{createWriteStream}from'fs';class MorphLogger{['enabled'];[a2_0x10925a(0x144)];constructor(){const _0x24409a=a2_0x10925a;this['enabled']=process[_0x24409a(0x14f)][_0x24409a(0x140)]==='1'||!!process[_0x24409a(0x14f)][_0x24409a(0x141)];const _0x5a5973=process[_0x24409a(0x14f)]['MORPH_LOG_FILE'];this[_0x24409a(0x144)]=_0x5a5973?createWriteStream(_0x5a5973,{'flags':'a'}):null;}[a2_0x10925a(0x146)](_0x5860d4,_0x59af30,_0x484170){const _0x1aa8ad=a2_0x10925a;this['_log'](_0x1aa8ad(0x146),_0x5860d4,_0x59af30,_0x484170);}[a2_0x10925a(0x150)](_0x1dfb47,_0x4c2276,_0xa3eeeb){const _0x2ae03f=a2_0x10925a;this[_0x2ae03f(0x142)](_0x2ae03f(0x150),_0x1dfb47,_0x4c2276,_0xa3eeeb);}['warn'](_0x1eba7f,_0x2e1294,_0x54a6c0){const _0x479d93=a2_0x10925a;this[_0x479d93(0x142)](_0x479d93(0x149),_0x1eba7f,_0x2e1294,_0x54a6c0);}[a2_0x10925a(0x158)](_0x2be30a,_0x1d8717,_0x4a0074){const _0x5a4824=a2_0x10925a;this[_0x5a4824(0x142)](_0x5a4824(0x158),_0x2be30a,_0x1d8717,_0x4a0074);}[a2_0x10925a(0x156)](){const _0x53be0b=a2_0x10925a;this[_0x53be0b(0x14a)]=!![];}get['isEnabled'](){const _0x26674d=a2_0x10925a;return this[_0x26674d(0x14a)];}['_log'](_0x3600a0,_0x35c607,_0xca7f4c,_0x8c6bd4){const _0x397c61=a2_0x10925a;if(_0x3600a0!==_0x397c61(0x158)&&!this[_0x397c61(0x14a)])return;const _0x38eb0b=new Date()[_0x397c61(0x143)](),_0x1323cc='['+_0x38eb0b+_0x397c61(0x145)+_0x3600a0[_0x397c61(0x14c)]()+_0x397c61(0x145)+_0x35c607+']';console[_0x397c61(0x158)](_0x8c6bd4?_0x1323cc+'\x20'+_0xca7f4c+'\x20'+JSON[_0x397c61(0x14b)](_0x8c6bd4):_0x1323cc+'\x20'+_0xca7f4c),this['fileStream']?.['write'](JSON[_0x397c61(0x14b)]({'ts':_0x38eb0b,'level':_0x3600a0,'component':_0x35c607,'msg':_0xca7f4c,..._0x8c6bd4&&{'data':_0x8c6bd4}})+'\x0a');}}export const logger=new MorphLogger(); | ||
| 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,1 +0,1 @@ | ||
| (function(_0x38ba32,_0x396db9){const _0x494d06=a3_0x570e,_0x18658a=_0x38ba32();while(!![]){try{const _0x2d44f7=-parseInt(_0x494d06(0xa1))/0x1+parseInt(_0x494d06(0x96))/0x2+-parseInt(_0x494d06(0x99))/0x3+parseInt(_0x494d06(0x9d))/0x4+-parseInt(_0x494d06(0xa6))/0x5*(parseInt(_0x494d06(0xa2))/0x6)+parseInt(_0x494d06(0x9a))/0x7+-parseInt(_0x494d06(0x9e))/0x8*(-parseInt(_0x494d06(0x95))/0x9);if(_0x2d44f7===_0x396db9)break;else _0x18658a['push'](_0x18658a['shift']());}catch(_0x14b44e){_0x18658a['push'](_0x18658a['shift']());}}}(a3_0x48bf,0xae490));function a3_0x570e(_0x383dad,_0x6cf6b){_0x383dad=_0x383dad-0x95;const _0x48bfa2=a3_0x48bf();let _0x570ea2=_0x48bfa2[_0x383dad];return _0x570ea2;}import a3_0x4fc87b from'path';import a3_0x31372e from'os';export function convertToWindowsPath(_0x3a22cc){const _0x38ac21=a3_0x570e;if(_0x3a22cc['startsWith']('/mnt/')){const _0x2ce60d=_0x3a22cc[_0x38ac21(0x9b)](0x5)[_0x38ac21(0xa3)](),_0x49b037=_0x3a22cc['slice'](0x6)[_0x38ac21(0x97)](/\//g,'\x5c');return _0x2ce60d+':'+_0x49b037;}if(_0x3a22cc[_0x38ac21(0xa4)](/^\/[a-zA-Z]\//)){const _0x2c11c8=_0x3a22cc[_0x38ac21(0x9b)](0x1)[_0x38ac21(0xa3)](),_0x116e0c=_0x3a22cc['slice'](0x2)[_0x38ac21(0x97)](/\//g,'\x5c');return _0x2c11c8+':'+_0x116e0c;}if(_0x3a22cc[_0x38ac21(0xa4)](/^[a-zA-Z]:/))return _0x3a22cc[_0x38ac21(0x97)](/\//g,'\x5c');return _0x3a22cc;}export function normalizePath(_0x4f2b9c){const _0x5c3c57=a3_0x570e;_0x4f2b9c=_0x4f2b9c[_0x5c3c57(0xa5)]()['replace'](/^["']|["']$/g,'');const _0xccef89=_0x4f2b9c[_0x5c3c57(0x9f)]('/')&&!_0x4f2b9c[_0x5c3c57(0xa4)](/^\/mnt\/[a-z]\//i)&&!_0x4f2b9c['match'](/^\/[a-zA-Z]\//);if(_0xccef89)return _0x4f2b9c[_0x5c3c57(0x97)](/\/+/g,'/')[_0x5c3c57(0x97)](/\/+$/,'');_0x4f2b9c=convertToWindowsPath(_0x4f2b9c);if(_0x4f2b9c[_0x5c3c57(0x9f)]('\x5c\x5c')){let _0x18e48c=_0x4f2b9c;_0x18e48c=_0x18e48c[_0x5c3c57(0x97)](/^\\{2,}/,'\x5c\x5c');const _0x28fae0=_0x18e48c['substring'](0x2)['replace'](/\\\\/g,'\x5c');_0x4f2b9c='\x5c\x5c'+_0x28fae0;}else _0x4f2b9c=_0x4f2b9c['replace'](/\\\\/g,'\x5c');let _0x5da78b=a3_0x4fc87b[_0x5c3c57(0x9c)](_0x4f2b9c);_0x4f2b9c['startsWith']('\x5c\x5c')&&!_0x5da78b[_0x5c3c57(0x9f)]('\x5c\x5c')&&(_0x5da78b='\x5c'+_0x5da78b);if(_0x5da78b['match'](/^[a-zA-Z]:/)){let _0xe830b3=_0x5da78b[_0x5c3c57(0x97)](/\//g,'\x5c');return/^[a-z]:/[_0x5c3c57(0x98)](_0xe830b3)&&(_0xe830b3=_0xe830b3['charAt'](0x0)[_0x5c3c57(0xa3)]()+_0xe830b3[_0x5c3c57(0xa7)](0x1)),_0xe830b3;}return _0x5da78b[_0x5c3c57(0x97)](/\//g,'\x5c');}export function expandHome(_0x5170d5){const _0x5118a1=a3_0x570e;if(_0x5170d5[_0x5118a1(0x9f)]('~/')||_0x5170d5==='~')return a3_0x4fc87b[_0x5118a1(0xa0)](a3_0x31372e['homedir'](),_0x5170d5['slice'](0x1));return _0x5170d5;}function a3_0x48bf(){const _0xde3b85=['5OQGOgl','slice','18435969hPbcEw','1811450HwajUn','replace','test','4250400pArNJT','3302306SzLgdf','charAt','normalize','2352904HIZznr','8sdQckg','startsWith','join','767554HQsKDP','6695544lIlZZc','toUpperCase','match','trim'];a3_0x48bf=function(){return _0xde3b85;};return a3_0x48bf();} | ||
| (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,1 +0,1 @@ | ||
| (function(_0x44d4a6,_0x239c07){const _0x4a89d6=a4_0x4044,_0x45a028=_0x44d4a6();while(!![]){try{const _0xab00d5=parseInt(_0x4a89d6(0x10e))/0x1+parseInt(_0x4a89d6(0x10d))/0x2*(parseInt(_0x4a89d6(0x109))/0x3)+parseInt(_0x4a89d6(0x113))/0x4+parseInt(_0x4a89d6(0x115))/0x5*(parseInt(_0x4a89d6(0x10f))/0x6)+parseInt(_0x4a89d6(0x104))/0x7*(-parseInt(_0x4a89d6(0x108))/0x8)+-parseInt(_0x4a89d6(0x111))/0x9*(-parseInt(_0x4a89d6(0x10c))/0xa)+-parseInt(_0x4a89d6(0x105))/0xb;if(_0xab00d5===_0x239c07)break;else _0x45a028['push'](_0x45a028['shift']());}catch(_0x45f071){_0x45a028['push'](_0x45a028['shift']());}}}(a4_0x2de3,0x94f16));import a4_0x18f966 from'path';export function isPathWithinAllowedDirectories(_0x2dd783,_0x21fcc9){const _0x5c76f9=a4_0x4044;if(typeof _0x2dd783!=='string'||!Array[_0x5c76f9(0x10b)](_0x21fcc9))return![];if(!_0x2dd783||_0x21fcc9[_0x5c76f9(0x110)]===0x0)return![];if(_0x2dd783[_0x5c76f9(0x103)]('\x00'))return![];let _0x16ae00;try{_0x16ae00=a4_0x18f966[_0x5c76f9(0x10a)](a4_0x18f966['normalize'](_0x2dd783));}catch{return![];}if(!a4_0x18f966[_0x5c76f9(0x107)](_0x16ae00))throw new Error(_0x5c76f9(0x112));return _0x21fcc9[_0x5c76f9(0x114)](_0x5f42de=>{const _0x54ed39=_0x5c76f9;if(typeof _0x5f42de!=='string'||!_0x5f42de)return![];if(_0x5f42de[_0x54ed39(0x103)]('\x00'))return![];let _0x30a9ad;try{_0x30a9ad=a4_0x18f966[_0x54ed39(0x10a)](a4_0x18f966['normalize'](_0x5f42de));}catch{return![];}if(!a4_0x18f966['isAbsolute'](_0x30a9ad))throw new Error(_0x54ed39(0x106));if(_0x16ae00===_0x30a9ad)return!![];if(_0x30a9ad===a4_0x18f966['sep'])return _0x16ae00[_0x54ed39(0x102)](a4_0x18f966[_0x54ed39(0x101)]);return _0x16ae00[_0x54ed39(0x102)](_0x30a9ad+a4_0x18f966[_0x54ed39(0x101)]);});}function a4_0x4044(_0x4e2791,_0x50fcb6){_0x4e2791=_0x4e2791-0x101;const _0x2de382=a4_0x2de3();let _0x40440=_0x2de382[_0x4e2791];return _0x40440;}function a4_0x2de3(){const _0x5cb1bd=['includes','7LQjWWy','12816760dgyMNB','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','isAbsolute','1024056XjcNCO','12EEBfdu','resolve','isArray','6965690pHTPcu','46390sDzwJd','30782hIQrIg','35202GkdXhs','length','9giyjkk','Path\x20must\x20be\x20absolute\x20after\x20normalization','3440640UOLuwo','some','190MLxFHd','sep','startsWith'];a4_0x2de3=function(){return _0x5cb1bd;};return a4_0x2de3();} | ||
| (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,1 +0,1 @@ | ||
| (function(_0x24c67d,_0x5a37b2){const _0x2869fd=a5_0x3866,_0x39ac81=_0x24c67d();while(!![]){try{const _0x30b305=-parseInt(_0x2869fd(0x10e))/0x1+parseInt(_0x2869fd(0x11d))/0x2*(-parseInt(_0x2869fd(0x10b))/0x3)+-parseInt(_0x2869fd(0x107))/0x4*(-parseInt(_0x2869fd(0x10d))/0x5)+-parseInt(_0x2869fd(0x11b))/0x6+parseInt(_0x2869fd(0x10c))/0x7*(parseInt(_0x2869fd(0x114))/0x8)+-parseInt(_0x2869fd(0x106))/0x9+-parseInt(_0x2869fd(0x11e))/0xa*(-parseInt(_0x2869fd(0x112))/0xb);if(_0x30b305===_0x5a37b2)break;else _0x39ac81['push'](_0x39ac81['shift']());}catch(_0x505c0b){_0x39ac81['push'](_0x39ac81['shift']());}}}(a5_0x3778,0xeea45));import{promises as a5_0x1adc2d}from'fs';import a5_0x3d8a44 from'path';import a5_0x552569 from'os';function a5_0x3866(_0x310679,_0x25c23a){_0x310679=_0x310679-0x106;const _0x37784a=a5_0x3778();let _0x38669b=_0x37784a[_0x310679];return _0x38669b;}import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x1130e0){const _0x20e210=a5_0x3866;try{const _0x5dcb2a=_0x1130e0[_0x20e210(0x117)](_0x20e210(0x10f))?_0x1130e0[_0x20e210(0x119)](0x7):_0x1130e0,_0x5eb71a=_0x5dcb2a['startsWith']('~/')||_0x5dcb2a==='~'?a5_0x3d8a44['join'](a5_0x552569[_0x20e210(0x11c)](),_0x5dcb2a[_0x20e210(0x119)](0x1)):_0x5dcb2a,_0x401131=a5_0x3d8a44['resolve'](_0x5eb71a),_0x41ebf7=await a5_0x1adc2d[_0x20e210(0x116)](_0x401131);return normalizePath(_0x41ebf7);}catch{return null;}}function formatDirectoryError(_0x474e6d,_0x389f05,_0x2e8eae){const _0x4a798f=a5_0x3866;if(_0x2e8eae)return _0x4a798f(0x113)+_0x2e8eae+':\x20'+_0x474e6d;const _0x3b21ec=_0x389f05 instanceof Error?_0x389f05[_0x4a798f(0x11a)]:String(_0x389f05);return _0x4a798f(0x10a)+_0x474e6d+_0x4a798f(0x108)+_0x3b21ec;}function a5_0x3778(){const _0x88318a=['536374eqUkoj','file://','non-directory\x20root','uri','8076464HiOvMZ','Skipping\x20','26152UKbKvG','stat','realpath','startsWith','invalid\x20path\x20or\x20inaccessible','slice','message','5633394hENDOZ','homedir','8iJvhfK','40stsXFr','16999938luzJFm','4594588qzFEvA','\x20due\x20to\x20error:\x20','push','Skipping\x20invalid\x20directory:\x20','957804ekbSKR','3283xMpdHN','5bzBQTt'];a5_0x3778=function(){return _0x88318a;};return a5_0x3778();}export async function getValidRootDirectories(_0x2f74a0){const _0xed7f47=a5_0x3866,_0x456a1f=[];for(const _0x4de639 of _0x2f74a0){const _0x12cdbd=await parseRootUri(_0x4de639[_0xed7f47(0x111)]);if(!_0x12cdbd){logMcpStderr(formatDirectoryError(_0x4de639[_0xed7f47(0x111)],undefined,_0xed7f47(0x118)));continue;}try{const _0x923d76=await a5_0x1adc2d[_0xed7f47(0x115)](_0x12cdbd);_0x923d76['isDirectory']()?_0x456a1f[_0xed7f47(0x109)](_0x12cdbd):logMcpStderr(formatDirectoryError(_0x12cdbd,undefined,_0xed7f47(0x110)));}catch(_0x13e959){logMcpStderr(formatDirectoryError(_0x12cdbd,_0x13e959));}}return _0x456a1f;} | ||
| (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,1 +0,1 @@ | ||
| const a6_0xf86421=a6_0x436a;function a6_0x436a(_0x1eeb75,_0x469b4d){_0x1eeb75=_0x1eeb75-0xa7;const _0x3b0d07=a6_0x3b0d();let _0x436a30=_0x3b0d07[_0x1eeb75];return _0x436a30;}(function(_0x73b749,_0x152f44){const _0xd8f950=a6_0x436a,_0x35f1c0=_0x73b749();while(!![]){try{const _0x3326c9=parseInt(_0xd8f950(0xb1))/0x1+parseInt(_0xd8f950(0xad))/0x2+parseInt(_0xd8f950(0xa9))/0x3*(parseInt(_0xd8f950(0xaa))/0x4)+parseInt(_0xd8f950(0xaf))/0x5+-parseInt(_0xd8f950(0xab))/0x6*(-parseInt(_0xd8f950(0xb2))/0x7)+parseInt(_0xd8f950(0xae))/0x8+parseInt(_0xd8f950(0xb4))/0x9*(-parseInt(_0xd8f950(0xa8))/0xa);if(_0x3326c9===_0x152f44)break;else _0x35f1c0['push'](_0x35f1c0['shift']());}catch(_0x1038bc){_0x35f1c0['push'](_0x35f1c0['shift']());}}}(a6_0x3b0d,0xc3aba));export const TOOL_NAMES={'EDIT_FILE':a6_0xf86421(0xb3),'CODEBASE_SEARCH':a6_0xf86421(0xb0),'GITHUB_CODEBASE_SEARCH':a6_0xf86421(0xa7)};function a6_0x3b0d(){const _0x1634ad=['45303250fBKDkH','159CtoCeM','66188CWbIGN','121938AzOJSP','values','737148IVnmCO','11895816VXEhWb','3085265KmYIrZ','codebase_search','783139TMygvv','413EBgwts','edit_file','9QtLhBJ','github_codebase_search'];a6_0x3b0d=function(){return _0x1634ad;};return a6_0x3b0d();}export const ALL_TOOL_NAMES=Object[a6_0xf86421(0xac)](TOOL_NAMES);export const KNOWN_TOOL_NAMES=new Set(ALL_TOOL_NAMES); | ||
| 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();} |
+2
-2
| { | ||
| "name": "@morphllm/morphmcp", | ||
| "version": "0.8.182", | ||
| "version": "0.8.183", | ||
| "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.", | ||
@@ -38,3 +38,3 @@ "license": "MIT", | ||
| "@modelcontextprotocol/sdk": "^1.12.3", | ||
| "@morphllm/morphsdk": "0.2.172", | ||
| "@morphllm/morphsdk": "0.2.173", | ||
| "@vscode/ripgrep": "^1.15.14", | ||
@@ -41,0 +41,0 @@ "axios": "^1.6.0", |
Obfuscated code
Supply chain riskObfuscated files are intentionally packed to hide their behavior. This could be a sign of malware.
Found 7 instances in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Obfuscated code
Supply chain riskObfuscated files are intentionally packed to hide their behavior. This could be a sign of malware.
Found 7 instances in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
76800
-0.37%+ Added
- Removed
Updated