@morphllm/morphmcp 0.8.166 → 0.8.168
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/log-utils.js +1 -1
- package/dist/logger.js +1 -1
- package/dist/path-utils.js +1 -1
- package/dist/path-validation.js +1 -1
- package/dist/roots-utils.js +1 -1
- package/dist/tool-definitions.js +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const a0_0x52d368=a0_0x179e;(function(_0x117f1f,_0x1ff137){const _0x1861c2=a0_0x179e,_0xb059c8=_0x117f1f();while(!![]){try{const _0x4bc348=parseInt(_0x1861c2(0x13a))/0x1*(-parseInt(_0x1861c2(0x254))/0x2)+-parseInt(_0x1861c2(0x186))/0x3*(parseInt(_0x1861c2(0x1a2))/0x4)+-parseInt(_0x1861c2(0x21e))/0x5+-parseInt(_0x1861c2(0x244))/0x6+parseInt(_0x1861c2(0x210))/0x7*(parseInt(_0x1861c2(0x256))/0x8)+parseInt(_0x1861c2(0x185))/0x9+parseInt(_0x1861c2(0x14b))/0xa;if(_0x4bc348===_0x1ff137)break;else _0xb059c8['push'](_0xb059c8['shift']());}catch(_0x3d202f){_0xb059c8['push'](_0xb059c8['shift']());}}}(a0_0x227d,0x9e8d1));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_0x114a5e from'fs/promises';import a0_0x1c35ef from'path';import a0_0x5d7550 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_0x42921c from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x5dfdf6){const _0x25ae14=a0_0x179e,_0x3defeb=_0x5dfdf6[_0x25ae14(0x228)](a0_0x1c35ef[_0x25ae14(0x243)])[_0x25ae14(0x14f)](Boolean);if(_0x3defeb[_0x25ae14(0x1a1)]<0x2)return null;for(let _0x16cd23=Math[_0x25ae14(0x1d2)](_0x3defeb['length']/0x2);_0x16cd23>=0x1;_0x16cd23--){for(let _0x12c4b6=0x0;_0x12c4b6<=_0x3defeb[_0x25ae14(0x1a1)]-0x2*_0x16cd23;_0x12c4b6++){const _0x387d33=_0x3defeb[_0x25ae14(0x183)](_0x12c4b6,_0x12c4b6+_0x16cd23),_0x98a22f=_0x3defeb[_0x25ae14(0x183)](_0x12c4b6+_0x16cd23,_0x12c4b6+0x2*_0x16cd23);if(_0x387d33['every']((_0x1140cd,_0x2f5ca1)=>_0x1140cd===_0x98a22f[_0x2f5ca1])){const _0x37be2e=[..._0x3defeb[_0x25ae14(0x183)](0x0,_0x12c4b6),..._0x3defeb[_0x25ae14(0x183)](_0x12c4b6+_0x16cd23)];return a0_0x1c35ef['sep']+_0x37be2e['join'](a0_0x1c35ef['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x36a994=a0_0x179e;try{const _0xb47872=require(_0x36a994(0x192));return _0xb47872[_0x36a994(0x202)]??'unknown';}catch(_0x249e17){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x249e17),_0x36a994(0x139);}}function printHelp(){const _0x24dc3c=a0_0x179e;console[_0x24dc3c(0x157)]('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x24dc3c(0x157)](_0x24dc3c(0x230)),console[_0x24dc3c(0x157)](_0x24dc3c(0x1a7)),console['log'](_0x24dc3c(0x1b0)),console[_0x24dc3c(0x157)](_0x24dc3c(0x18b)),console[_0x24dc3c(0x157)](_0x24dc3c(0x263)),console['log']('\x0aExamples:'),console[_0x24dc3c(0x157)](_0x24dc3c(0x264)),console[_0x24dc3c(0x157)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0x52d368(0x253)][a0_0x52d368(0x183)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set([a0_0x52d368(0x195),'-h']);cliArgs[a0_0x52d368(0x251)](_0x3df83d=>VERSION_FLAGS[a0_0x52d368(0x231)](_0x3df83d))&&(console[a0_0x52d368(0x157)](a0_0x52d368(0x1e6)+getPackageVersion()),process['exit'](0x0));cliArgs[a0_0x52d368(0x251)](_0x416d75=>HELP_FLAGS[a0_0x52d368(0x231)](_0x416d75))&&(printHelp(),process[a0_0x52d368(0x18a)](0x0));function getCliArg(_0x56cb04){const _0x320597=a0_0x52d368;for(let _0x5bc49d=0x0;_0x5bc49d<cliArgs[_0x320597(0x1a1)];_0x5bc49d++){const _0x3f9f64=cliArgs[_0x5bc49d];if(_0x3f9f64[_0x320597(0x242)]('--'+_0x56cb04+'='))return _0x3f9f64['slice'](('--'+_0x56cb04+'=')[_0x320597(0x1a1)]);if(_0x3f9f64==='--'+_0x56cb04&&_0x5bc49d+0x1<cliArgs['length'])return cliArgs[_0x5bc49d+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x52d368(0x1a1)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x52d368(0x231)](arg)||HELP_FLAGS[a0_0x52d368(0x231)](arg))continue;if(arg['startsWith'](a0_0x52d368(0x145)))continue;if(arg===a0_0x52d368(0x16f)){i++;continue;}args[a0_0x52d368(0x224)](arg);}function a0_0x179e(_0xdb5d29,_0x2ec524){_0xdb5d29=_0xdb5d29-0x134;const _0x227da6=a0_0x227d();let _0x179efa=_0x227da6[_0xdb5d29];return _0x179efa;}const WORKSPACE_ROOT=process['env'][a0_0x52d368(0x1d4)]||process[a0_0x52d368(0x229)][a0_0x52d368(0x1a8)]||process[a0_0x52d368(0x234)](),ENABLE_WORKSPACE_MODE=process[a0_0x52d368(0x229)]['ENABLE_WORKSPACE_MODE']!=='false',MORPH_API_KEY=getCliArg(a0_0x52d368(0x143))??process[a0_0x52d368(0x229)][a0_0x52d368(0x1da)],MORPH_API_URL=process[a0_0x52d368(0x229)]['MORPH_API_URL'],MORPH_LARGE_APPLY=process[a0_0x52d368(0x229)][a0_0x52d368(0x21d)]!==a0_0x52d368(0x1e7),MORPH_WARP_GREP_TIMEOUT=process[a0_0x52d368(0x229)][a0_0x52d368(0x250)]?parseInt(process[a0_0x52d368(0x229)][a0_0x52d368(0x250)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x52d368(0x229)]['DISABLED_TOOLS']?new Set(process[a0_0x52d368(0x229)][a0_0x52d368(0x137)]['split'](',')[a0_0x52d368(0x21c)](_0x17d14a=>_0x17d14a[a0_0x52d368(0x259)]())['filter'](_0x19ea9e=>_0x19ea9e['length']>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x52d368(0x220)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x52d368(0x231)](tool)&&console[a0_0x52d368(0x174)](a0_0x52d368(0x17d)+tool+'\x22.\x20Known\x20tools:\x20'+[...KNOWN_TOOL_NAMES][a0_0x52d368(0x1cb)](',\x20'));}console[a0_0x52d368(0x174)](a0_0x52d368(0x13c)+[...DISABLED_TOOLS][a0_0x52d368(0x1cb)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x52d368(0x242)](a0_0x52d368(0x166))&&!MORPH_API_KEY[a0_0x52d368(0x242)](a0_0x52d368(0x198))&&logMcpStderr(a0_0x52d368(0x235));function a0_0x227d(){const _0x5df29d=['push','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','data','split','env','path','\x22>\x0a','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','-\x20Listed\x20directory\x20`','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','Morph\x20Edit\x20','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','has','Morph\x20Edit\x20Preview','source','cwd','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','LocalRipgrepProvider','File\x20read\x20error:','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','readFile','GITHUB_CODEBASE_SEARCH','payload','composer.json','realpath','repo_path','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','arguments','oninitialized','startsWith','sep','6737724SLlDQF','tool','turns','number','morph-mcp','utf-8','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','timeout','content','access','Relevant\x20context\x20found:','dryRun','MORPH_WARP_GREP_TIMEOUT','some','boolean','argv','277188eKeskY','toLowerCase','8uxGuma','[could\x20not\x20read\x20file:\x20','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.','trim','EDIT_FILE','ToolException','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','Repository\x20identifier','Error\x20running\x20fast\x20context\x20search:\x20','catch','list_directory','\x22>\x0aError\x20reading\x20file:\x20','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','\x20\x20morph-mcp','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','path_validation_failed','etimedout','DISABLED_TOOLS','tool_call_id','unknown','7rFRTGf','Warning:\x20','Disabled\x20tools:\x20','tool_call_error','name','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','Cargo.toml','toISOString','read','api-key','provider_created','--api-key=','linesRemoved','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','terminated','Error:\x20','16191060xbcCJG','timed\x20out','inputSchema','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','filter','For\x20deletions:\x0a','path_validation_start','grep','substring','resolve','\x20chars)','instruction','log','<file\x20path=\x22','RipgrepError','ReadError','enum','github_codebase_search','optional','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','Created\x20File','\x20is\x20not\x20a\x20directory','.cursor','normalize','Bearer\x20','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','Tool\x20\x22','sk-','GitHub\x20search\x20failed:\x20','❌\x20Morph\x20Edit\x20Failed:\x20','all','min','path_validation_resolved','string','finish','PathError','--api-key','runWarpGrep_call','search_type','Warning:\x20Workspace\x20fallback\x20failed:\x20','roots','error','tool_calls','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','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.','linesModified','SymlinkError','safeParse','includes','TimeoutError','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','\x20(new\x20file)','node_modules','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','Failed\x20to\x20request\x20roots\x20from\x20client:','morph-v3-fast','slice','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','11605878XRmzLv','24bVvxem','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','errors','exit','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','Tool\x20','description','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','Specific\x20commit\x20hash\x20to\x20search','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','../package.json','stack','completed_with_file_errors','--help','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','file_read_complete','morph-','api_request_start','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','CODEBASE_SEARCH','searchGitHub','post','messages','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.','search_string','length','142904aPnkNL','warp_grep_complete','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','SubToolError','RipgrepNotAvailable','\x0aOptions:','PWD','compaction_failed','stringify','github_url','mcp-filesystem','Workspace\x20mode\x20enabled:\x20Using\x20','completionId','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.','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','success','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','codebase_search','changes','text','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','BinaryFile','IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','glob','constructor','requiresApiKey','listRoots','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a',',\x20modified\x20','morph-v3-large','files','match','package.json','.vscode','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','parse','[github_codebase_search]\x20Done\x20in\x20','Unknown\x20error','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','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','homedir','join','FileReadError','API\x20error\x20(auth/rate-limit)','Failed\x20to\x20read\x20file:\x20','grep_search','glob\x20\x27','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','floor','default','WORKSPACE_ROOT','role','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','.\x20Changes:\x20','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','Here\x20is\x20the\x20content\x20of\x20files:\x0a','MORPH_API_KEY','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','ENOENT','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.',',\x20removed\x20','tsconfig.json','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','\x20error(s)','basename','branch','@morphllm/morphmcp\x20','false','edit_file','instructions','morph-warp-grep-v2.1','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','UnknownError','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','timings','params','terminationReason','\x20-\x20','Invalid\x20arguments:\x20','go.mod','assistant','added\x20','unknown\x20error','owner_repo','now','github_search_start','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','https://morphllm.com/api/error-report','dirname','warn','\x0a</file>','0.2.0','isArray','version','function','debug','user','code_edit','metadata','FileNotFound','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Parent\x20directory\x20does\x20not\x20exist:\x20','warp_grep_start','setRequestHandler','[github_codebase_search]\x20Failed\x20in\x20','MCP','Unknown\x20tool:\x20','7506086rceXST','describe','lines','-\x20Glob\x20search\x20`','object','Preview\x20changes\x20without\x20applying\x20them.','response','.git','pattern','`\x20in\x20`','completed','linesAdded','map','MORPH_LARGE_APPLY','4763005yiCeQl','message','size','WarpGrepError','WarpGrep\x20sub-tool\x20errors:\x20','read\x20'];a0_0x227d=function(){return _0x5df29d;};return a0_0x227d();}async function reportMorphError(_0xd616aa){const _0x3c2ee3=a0_0x52d368;try{await a0_0x42921c[_0x3c2ee3(0x19d)](_0x3c2ee3(0x1fc),{..._0xd616aa,'timestamp':new Date()[_0x3c2ee3(0x141)](),'source':_0xd616aa[_0x3c2ee3(0x233)]||_0x3c2ee3(0x1ac),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0xd616aa['context']}},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':_0x3c2ee3(0x163)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x520b3d,_0x44dc0d){const _0x40ae4b=a0_0x52d368;if(_0x520b3d&&typeof _0x520b3d===_0x40ae4b(0x214)&&'status'in _0x520b3d)return _0x520b3d['status'];if(_0x520b3d&&typeof _0x520b3d===_0x40ae4b(0x214)&&_0x40ae4b(0x216)in _0x520b3d)return _0x520b3d['response']?.['status'];const _0x3579c4=_0x44dc0d['match'](/\b(401|429)\b/);return _0x3579c4?parseInt(_0x3579c4[0x1],0xa):null;}function handleMorphAPIError(_0x5cc86e){const _0x3c26c4=a0_0x52d368,_0x390c8e=_0x5cc86e instanceof Error?_0x5cc86e[_0x3c26c4(0x21f)]:String(_0x5cc86e),_0x536748=extractStatusCode(_0x5cc86e,_0x390c8e);switch(_0x536748){case 0x191:return{'content':[{'type':_0x3c26c4(0x1b5),'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':'text','text':_0x3c26c4(0x1c4)}],'isError':!![]};default:return null;}}args[a0_0x52d368(0x1a1)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),logMcpStderr(a0_0x52d368(0x191)),logMcpStderr(a0_0x52d368(0x1fb)),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr(a0_0x52d368(0x209)),logMcpStderr(a0_0x52d368(0x1db)));function normalizePath(_0x5c6db4){const _0x234f86=a0_0x52d368;return a0_0x1c35ef[_0x234f86(0x162)](_0x5c6db4);}function expandHome(_0x2623c7){const _0x492484=a0_0x52d368;if(_0x2623c7[_0x492484(0x242)]('~/')||_0x2623c7==='~')return a0_0x1c35ef[_0x492484(0x1cb)](a0_0x5d7550[_0x492484(0x1ca)](),_0x2623c7[_0x492484(0x183)](0x1));return _0x2623c7;}let allowedDirectories=await Promise[a0_0x52d368(0x169)](args[a0_0x52d368(0x21c)](async _0x4d240d=>{const _0x5f277d=a0_0x52d368,_0x968db0=expandHome(_0x4d240d),_0x8fdb6=a0_0x1c35ef[_0x5f277d(0x154)](_0x968db0);try{const _0x20dc68=await a0_0x114a5e[_0x5f277d(0x23d)](_0x8fdb6);return normalizePath(_0x20dc68);}catch(_0x427206){return normalizePath(_0x8fdb6);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x52d368(0x1a1)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x52d368(0x224)](workspaceDir),logMcpStderr(a0_0x52d368(0x1ad)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x128b1b){logMcpStderr('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x128b1b);}async function detectWorkspaceRoot(_0x1c7cd0){const _0x8dd621=a0_0x52d368;let _0x535be4=a0_0x1c35ef['resolve'](_0x1c7cd0);const _0x2a1dcc=[_0x8dd621(0x217),_0x8dd621(0x1c3),_0x8dd621(0x1c2),_0x8dd621(0x140),'pyproject.toml',_0x8dd621(0x1f3),_0x8dd621(0x161),_0x8dd621(0x1e1),_0x8dd621(0x23c)];while(_0x535be4!==a0_0x1c35ef[_0x8dd621(0x1fd)](_0x535be4)){for(const _0x308f3a of _0x2a1dcc){const _0x508617=a0_0x1c35ef[_0x8dd621(0x1cb)](_0x535be4,_0x308f3a);try{return await a0_0x114a5e[_0x8dd621(0x24d)](_0x508617),normalizePath(_0x535be4);}catch{}}_0x535be4=a0_0x1c35ef[_0x8dd621(0x1fd)](_0x535be4);}return normalizePath(_0x1c7cd0);}await Promise[a0_0x52d368(0x169)](args['map'](async _0x658c32=>{const _0x39a1a6=a0_0x52d368;try{const _0x5bd8a9=await a0_0x114a5e['stat'](expandHome(_0x658c32));!_0x5bd8a9['isDirectory']()&&(logMcpStderr(_0x39a1a6(0x14a)+_0x658c32+_0x39a1a6(0x160)),process[_0x39a1a6(0x18a)](0x1));}catch(_0xd6a083){logMcpStderr('Error\x20accessing\x20directory\x20'+_0x658c32+':',_0xd6a083),process[_0x39a1a6(0x18a)](0x1);}}));async function validatePath(_0xba31f1){const _0xa7ee44=a0_0x52d368,_0x4ee21e=expandHome(_0xba31f1),_0x7f4624=a0_0x1c35ef[_0xa7ee44(0x154)](_0x4ee21e);logger[_0xa7ee44(0x204)]('MCP',_0xa7ee44(0x151),{'raw_path':_0xba31f1,'absolute':_0x7f4624});try{const _0x30baaa=await a0_0x114a5e['realpath'](_0x7f4624);return logger[_0xa7ee44(0x204)](_0xa7ee44(0x20e),_0xa7ee44(0x16b),{'resolved':_0x30baaa,'symlink':_0x30baaa!==_0x7f4624}),_0x30baaa;}catch(_0x30279d){if(_0x30279d['code']===_0xa7ee44(0x1de)){const _0x53dbc7=a0_0x1c35ef[_0xa7ee44(0x1fd)](_0x7f4624);try{const _0x3abb7e=await a0_0x114a5e[_0xa7ee44(0x23d)](_0x53dbc7),_0x425e6e=a0_0x1c35ef['join'](_0x3abb7e,a0_0x1c35ef[_0xa7ee44(0x1e4)](_0x7f4624));return logger[_0xa7ee44(0x204)](_0xa7ee44(0x20e),'path_validation_resolved',{'resolved':_0x425e6e,'new_file':!![]}),_0x425e6e;}catch{logger[_0xa7ee44(0x174)](_0xa7ee44(0x20e),_0xa7ee44(0x135),{'raw_path':_0xba31f1,'error':_0xa7ee44(0x20a)+_0x53dbc7});throw new Error(_0xa7ee44(0x20a)+_0x53dbc7);}}logger[_0xa7ee44(0x174)]('MCP',_0xa7ee44(0x135),{'raw_path':_0xba31f1,'error':_0x30279d[_0xa7ee44(0x21f)]});throw _0x30279d;}}const MorphEditFileArgsSchema=z['object']({'path':z[a0_0x52d368(0x16c)](),'code_edit':z['string']()[a0_0x52d368(0x211)](a0_0x52d368(0x262)),'instruction':z[a0_0x52d368(0x16c)]()['describe'](a0_0x52d368(0x1df)),'dryRun':z[a0_0x52d368(0x252)]()[a0_0x52d368(0x1d3)](![])[a0_0x52d368(0x211)](a0_0x52d368(0x215))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x52d368(0x1af),WarpGrepArgsSchema=z[a0_0x52d368(0x214)]({'search_string':z[a0_0x52d368(0x16c)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x52d368(0x16c)]()[a0_0x52d368(0x211)]('The\x20absolute\x20path\x20of\x20the\x20folder\x20where\x20the\x20search\x20should\x20be\x20performed.\x20In\x20multi-repo\x20workspaces,\x20you\x20have\x20to\x20specify\x20a\x20subfolder\x20where\x20the\x20search\x20should\x20be\x20performed,\x20to\x20avoid\x20searching\x20across\x20all\x20repos'),'search_type':z[a0_0x52d368(0x15b)]([a0_0x52d368(0x1d3),a0_0x52d368(0x17f)])['optional']()[a0_0x52d368(0x211)](a0_0x52d368(0x1e2))}),WarpGrepGitHubArgsSchema=z[a0_0x52d368(0x214)]({'search_string':z['string']()[a0_0x52d368(0x211)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x52d368(0x16c)]()['optional']()[a0_0x52d368(0x211)](a0_0x52d368(0x258)),'owner_repo':z[a0_0x52d368(0x16c)]()['optional']()[a0_0x52d368(0x211)](a0_0x52d368(0x22c)),'branch':z[a0_0x52d368(0x16c)]()['optional']()[a0_0x52d368(0x211)](a0_0x52d368(0x15e))}),CodebaseSearchArgsSchema=z[a0_0x52d368(0x214)]({'query':z[a0_0x52d368(0x16c)]()[a0_0x52d368(0x211)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x52d368(0x16c)]()[a0_0x52d368(0x211)](a0_0x52d368(0x25d)),'branch':z[a0_0x52d368(0x16c)]()[a0_0x52d368(0x15d)]()[a0_0x52d368(0x211)](a0_0x52d368(0x148)),'commitHash':z[a0_0x52d368(0x16c)]()['optional']()[a0_0x52d368(0x211)](a0_0x52d368(0x18f)),'targetDirectories':z['array'](z[a0_0x52d368(0x16c)]())['default']([])['describe'](a0_0x52d368(0x180)),'limit':z[a0_0x52d368(0x247)]()[a0_0x52d368(0x15d)]()['default'](0xa)[a0_0x52d368(0x211)]('Max\x20results\x20to\x20return')}),server=new Server({'name':a0_0x52d368(0x248),'version':a0_0x52d368(0x200)},{'capabilities':{'tools':{}}});server[a0_0x52d368(0x20c)](ListToolsRequestSchema,async()=>{const _0x255b64=a0_0x52d368,_0x4fd578=[{'name':TOOL_NAMES['EDIT_FILE'],'description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a'+_0x255b64(0x13f)+_0x255b64(0x134)+_0x255b64(0x25c)+'Benefits:\x0a'+_0x255b64(0x1a4)+_0x255b64(0x22e)+_0x255b64(0x176)+_0x255b64(0x1eb)+_0x255b64(0x1c8)+_0x255b64(0x24a)+_0x255b64(0x1dd)+_0x255b64(0x150)+'-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a'+_0x255b64(0x1dc)+'Rules:\x0a'+_0x255b64(0x14e)+_0x255b64(0x190)+'-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a'+_0x255b64(0x23f)+_0x255b64(0x225)+_0x255b64(0x1bd)+_0x255b64(0x1b8),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x255b64(0x19b)],'description':_0x255b64(0x1c9)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x255b64(0x147)+_0x255b64(0x1d6)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x519e3a=_0x4fd578[_0x255b64(0x14f)](_0x6636db=>{const _0x3ad462=_0x255b64;if(DISABLED_TOOLS[_0x3ad462(0x231)](_0x6636db['name']))return console[_0x3ad462(0x174)](_0x3ad462(0x18c)+_0x6636db[_0x3ad462(0x13e)]+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if(_0x3ad462(0x1bb)in _0x6636db&&_0x6636db[_0x3ad462(0x1bb)]&&!MORPH_API_KEY)return logMcpStderr(_0x3ad462(0x13b)+_0x6636db[_0x3ad462(0x13e)]+_0x3ad462(0x196)),![];return!![];});return{'tools':_0x519e3a['map'](_0x1edefd=>({'name':_0x1edefd[_0x255b64(0x13e)],'description':_0x1edefd[_0x255b64(0x18d)],'inputSchema':_0x1edefd[_0x255b64(0x14d)]}))};}),server[a0_0x52d368(0x20c)](CallToolRequestSchema,async _0x214bbf=>{const _0xf4c6c9=a0_0x52d368,{name:_0x22814c,arguments:_0x4e1df1}=_0x214bbf[_0xf4c6c9(0x1ef)],_0xc22f4=Date[_0xf4c6c9(0x1f8)]();logger[_0xf4c6c9(0x204)]('MCP','tool_call_received',{'tool':_0x22814c,'args':_0x22814c==='edit_file'?{'path':_0x4e1df1?.[_0xf4c6c9(0x22a)],'instruction':_0x4e1df1?.[_0xf4c6c9(0x156)]||_0x4e1df1?.[_0xf4c6c9(0x1e9)],'dryRun':_0x4e1df1?.['dryRun']}:_0x4e1df1});try{if(!MORPH_API_KEY)return{'content':[{'type':_0xf4c6c9(0x1b5),'text':_0xf4c6c9(0x1b6)}],'isError':!![]};if(!MORPH_API_KEY[_0xf4c6c9(0x242)](_0xf4c6c9(0x166))&&!MORPH_API_KEY['startsWith'](_0xf4c6c9(0x198)))return{'content':[{'type':_0xf4c6c9(0x1b5),'text':_0xf4c6c9(0x19f)}],'isError':!![]};if(DISABLED_TOOLS[_0xf4c6c9(0x231)](_0x22814c))return{'content':[{'type':_0xf4c6c9(0x1b5),'text':_0xf4c6c9(0x165)+_0x22814c+_0xf4c6c9(0x1ed)}],'isError':![]};switch(_0x22814c){case TOOL_NAMES[_0xf4c6c9(0x25a)]:{const _0x1ab433=_0x4e1df1&&typeof _0x4e1df1===_0xf4c6c9(0x214)&&_0xf4c6c9(0x1e9)in _0x4e1df1&&!(_0xf4c6c9(0x156)in _0x4e1df1)?{..._0x4e1df1,'instruction':_0x4e1df1[_0xf4c6c9(0x1e9)],'instructions':undefined}:_0x4e1df1,_0x378da4=MorphEditFileArgsSchema[_0xf4c6c9(0x17a)](_0x1ab433);if(!_0x378da4[_0xf4c6c9(0x1b1)])throw new Error('Invalid\x20arguments\x20for\x20morph_edit_file:\x20'+_0x378da4[_0xf4c6c9(0x174)]);const _0x16b4a2=await validatePath(_0x378da4[_0xf4c6c9(0x227)][_0xf4c6c9(0x22a)]);let _0x5bd5a3=null,_0x592b02=!![],_0x15dfc3=null;try{_0x5bd5a3=await a0_0x114a5e[_0xf4c6c9(0x239)](_0x16b4a2,_0xf4c6c9(0x249)),logger['debug']('MCP','file_read_complete',{'path':_0x16b4a2,'size_bytes':_0x5bd5a3[_0xf4c6c9(0x1a1)]});}catch(_0xb4d83d){const _0x5b7b07=_0xb4d83d['code'];_0x5b7b07===_0xf4c6c9(0x1de)?(_0x592b02=![],_0x5bd5a3='',logger['debug']('MCP',_0xf4c6c9(0x197),{'path':_0x16b4a2,'exists':![]})):(_0x15dfc3=_0xf4c6c9(0x1ce)+(_0x5b7b07||_0xf4c6c9(0x139))+_0xf4c6c9(0x1f1)+(_0xb4d83d instanceof Error?_0xb4d83d[_0xf4c6c9(0x21f)]:String(_0xb4d83d)),logger['error'](_0xf4c6c9(0x20e),'file_read_failed',{'path':_0x16b4a2,'error':_0x15dfc3}),logMcpStderr(_0xf4c6c9(0x13b)+_0x15dfc3));}let _0x3f01a4;try{const _0x52506c=MORPH_API_KEY;if(!_0x52506c)throw new Error(_0xf4c6c9(0x187));const _0x35a856=a0_0x1c35ef['dirname'](_0x16b4a2),_0x16e292=a0_0x1c35ef[_0xf4c6c9(0x1e4)](_0x16b4a2);logger[_0xf4c6c9(0x204)](_0xf4c6c9(0x20e),_0xf4c6c9(0x199),{'model':_0xf4c6c9(0x182),'path':_0x378da4['data'][_0xf4c6c9(0x22a)],'instruction_len':_0x378da4[_0xf4c6c9(0x227)][_0xf4c6c9(0x156)][_0xf4c6c9(0x1a1)],'code_edit_len':_0x378da4[_0xf4c6c9(0x227)][_0xf4c6c9(0x206)][_0xf4c6c9(0x1a1)],'original_code_len':_0x5bd5a3?.[_0xf4c6c9(0x1a1)]??0x0,'dry_run':_0x378da4[_0xf4c6c9(0x227)]['dryRun']});const _0x24d76d=Date[_0xf4c6c9(0x1f8)](),_0x1ea6a4=await executeEditFile({'target_filepath':_0x16e292,'code_edit':_0x378da4[_0xf4c6c9(0x227)][_0xf4c6c9(0x206)],'instruction':_0x378da4[_0xf4c6c9(0x227)][_0xf4c6c9(0x156)]},{'morphApiKey':_0x52506c,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x35a856,'autoWrite':!_0x378da4['data'][_0xf4c6c9(0x24f)],'generateUdiff':![],'debug':![]}),_0x39a5ff=Date[_0xf4c6c9(0x1f8)]()-_0x24d76d;_0x3f01a4=_0x1ea6a4[_0xf4c6c9(0x1ae)];if(!_0x1ea6a4[_0xf4c6c9(0x1b1)])throw new Error(_0x1ea6a4[_0xf4c6c9(0x174)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x4c30d8=_0x1ea6a4[_0xf4c6c9(0x1b4)],_0x334a80=_0xf4c6c9(0x1f5)+_0x4c30d8[_0xf4c6c9(0x21b)]+_0xf4c6c9(0x1e0)+_0x4c30d8[_0xf4c6c9(0x146)]+_0xf4c6c9(0x1be)+_0x4c30d8[_0xf4c6c9(0x178)];logger[_0xf4c6c9(0x204)](_0xf4c6c9(0x20e),'tool_call_complete',{'tool':_0xf4c6c9(0x1e8),'success':!![],'latency_ms':Date['now']()-_0xc22f4,'edit_latency_ms':_0x39a5ff,'changes':{'added':_0x4c30d8[_0xf4c6c9(0x21b)],'removed':_0x4c30d8[_0xf4c6c9(0x146)],'modified':_0x4c30d8['linesModified']},'completion_id':_0x3f01a4});if(_0x378da4[_0xf4c6c9(0x227)][_0xf4c6c9(0x24f)])return{'content':[{'type':_0xf4c6c9(0x1b5),'text':_0xf4c6c9(0x232)+(_0x592b02?'':_0xf4c6c9(0x17e))+':\x20'+_0x378da4['data'][_0xf4c6c9(0x156)]+_0xf4c6c9(0x1d7)+_0x334a80+'.\x20Path:\x20'+_0x378da4['data'][_0xf4c6c9(0x22a)]+'.'}]};return{'content':[{'type':_0xf4c6c9(0x1b5),'text':_0xf4c6c9(0x22f)+(_0x592b02?'Applied':_0xf4c6c9(0x15f))+':\x20'+_0x378da4[_0xf4c6c9(0x227)][_0xf4c6c9(0x156)]+_0xf4c6c9(0x1d7)+_0x334a80+'.\x20Path:\x20'+_0x378da4[_0xf4c6c9(0x227)][_0xf4c6c9(0x22a)]+'.'}]};}catch(_0x1aeb5a){const _0x446ff3=handleMorphAPIError(_0x1aeb5a);if(_0x446ff3)return logger['error'](_0xf4c6c9(0x20e),_0xf4c6c9(0x13d),{'tool':'edit_file','error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date[_0xf4c6c9(0x1f8)]()-_0xc22f4}),_0x446ff3;const _0x2fdec9=_0x1aeb5a instanceof Error?_0x1aeb5a[_0xf4c6c9(0x21f)]:String(_0x1aeb5a);return logger[_0xf4c6c9(0x174)](_0xf4c6c9(0x20e),'tool_call_error',{'tool':'edit_file','error':_0x2fdec9,'path':_0x378da4[_0xf4c6c9(0x227)][_0xf4c6c9(0x22a)],'validated_path':_0x16b4a2,'latency_ms':Date[_0xf4c6c9(0x1f8)]()-_0xc22f4,'stack':_0x1aeb5a instanceof Error?_0x1aeb5a[_0xf4c6c9(0x193)]:undefined}),reportMorphError({'error_message':_0x2fdec9,'error_type':_0x1aeb5a instanceof Error?_0x1aeb5a[_0xf4c6c9(0x1ba)][_0xf4c6c9(0x13e)]:_0xf4c6c9(0x1ec),'context':{'tool':_0xf4c6c9(0x1e8),'completion_id':_0x3f01a4,'file_path':_0x378da4[_0xf4c6c9(0x227)][_0xf4c6c9(0x22a)],'validated_path':_0x16b4a2,'instruction':_0x378da4[_0xf4c6c9(0x227)]['instruction'],'model':MORPH_LARGE_APPLY?_0xf4c6c9(0x1bf):_0xf4c6c9(0x182),'dry_run':_0x378da4['data']['dryRun'],'file_exists':_0x592b02,'file_read_error':_0x15dfc3,'file_readable':_0x5bd5a3!==null,'request_content':{'path':_0x378da4[_0xf4c6c9(0x227)][_0xf4c6c9(0x22a)],'code_edit':_0x378da4[_0xf4c6c9(0x227)][_0xf4c6c9(0x206)],'instruction':_0x378da4[_0xf4c6c9(0x227)][_0xf4c6c9(0x156)],'original_code':_0x5bd5a3!==null?_0x5bd5a3[_0xf4c6c9(0x1a1)]>0xc350?_0x5bd5a3[_0xf4c6c9(0x153)](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x5bd5a3[_0xf4c6c9(0x1a1)]+_0xf4c6c9(0x155):_0x5bd5a3:_0xf4c6c9(0x257)+(_0x15dfc3||_0xf4c6c9(0x1f6))+']','original_code_length':_0x5bd5a3?.[_0xf4c6c9(0x1a1)]??0x0,'model':MORPH_LARGE_APPLY?_0xf4c6c9(0x1bf):_0xf4c6c9(0x182),'dry_run':_0x378da4['data'][_0xf4c6c9(0x24f)]}},'stack_trace':_0x1aeb5a instanceof Error?_0x1aeb5a['stack']:undefined,'source':'mcp-filesystem'})[_0xf4c6c9(0x25f)](()=>{}),{'content':[{'type':_0xf4c6c9(0x1b5),'text':_0xf4c6c9(0x168)+_0x2fdec9}],'isError':!![]};}}case TOOL_NAMES[_0xf4c6c9(0x19b)]:{const _0x153b53=WarpGrepArgsSchema[_0xf4c6c9(0x17a)](_0x4e1df1);if(!_0x153b53[_0xf4c6c9(0x1b1)])return{'content':[{'type':_0xf4c6c9(0x1b5),'text':_0xf4c6c9(0x1f2)+_0x153b53[_0xf4c6c9(0x174)]}],'isError':!![]};const _0x3faed3=_0x5bf861=>{const _0x54277f=_0xf4c6c9,_0x463a6d=[];for(const _0x3c7452 of _0x5bf861||[]){if(_0x3c7452[_0x54277f(0x1d5)]===_0x54277f(0x1f4)&&Array[_0x54277f(0x201)](_0x3c7452[_0x54277f(0x175)]))for(const _0x53910e of _0x3c7452[_0x54277f(0x175)]){try{const _0x50b93e=_0x53910e[_0x54277f(0x203)]?.[_0x54277f(0x13e)],_0x23c70e=JSON['parse'](_0x53910e[_0x54277f(0x203)]?.[_0x54277f(0x240)]||'{}');if(_0x50b93e===_0x54277f(0x1cf))_0x463a6d[_0x54277f(0x224)]('grep\x20\x27'+_0x23c70e[_0x54277f(0x218)]+'\x27\x20'+(_0x23c70e['path']||'.'));else{if(_0x50b93e==='read')_0x463a6d['push'](_0x54277f(0x223)+_0x23c70e[_0x54277f(0x22a)]);else{if(_0x50b93e===_0x54277f(0x260))_0x463a6d[_0x54277f(0x224)]('list_directory\x20'+(_0x23c70e['command']||'.'));else{if(_0x50b93e===_0x54277f(0x1b9))_0x463a6d[_0x54277f(0x224)](_0x54277f(0x1d0)+_0x23c70e[_0x54277f(0x218)]+'\x27\x20'+(_0x23c70e[_0x54277f(0x22a)]||'.'));else _0x50b93e==='finish'&&_0x463a6d['push']('finish');}}}}catch{}}}return _0x463a6d;},_0x80c17b=_0x1d91c9=>{const _0x275d34=_0xf4c6c9,_0x3a612f=[];if(!_0x1d91c9||!Array[_0x275d34(0x201)](_0x1d91c9))return _0x3a612f;const _0x4d980a=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x275d34(0x208),'tool':_0x275d34(0x142)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x275d34(0x16e),'tool':_0x275d34(0x142)},{'pattern':/\[READ ERROR\]/,'error_type':_0x275d34(0x15a),'tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':'BinaryFile','tool':_0x275d34(0x142)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x275d34(0x159),'tool':_0x275d34(0x152)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x275d34(0x1a6),'tool':_0x275d34(0x152)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x275d34(0x1b7),'tool':_0x275d34(0x142)},{'pattern':/\[SYMLINK\]/,'error_type':_0x275d34(0x179),'tool':_0x275d34(0x142)},{'pattern':/not a text file/,'error_type':_0x275d34(0x1b7),'tool':'read'},{'pattern':/symbolic link/,'error_type':_0x275d34(0x179),'tool':'read'},{'pattern':/Error reading file:/,'error_type':_0x275d34(0x15a),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x275d34(0x25b),'tool':_0x275d34(0x139)}];let _0x377e23=0x0;for(const _0x4fa22a of _0x1d91c9){_0x4fa22a[_0x275d34(0x1d5)]===_0x275d34(0x1f4)&&Array[_0x275d34(0x201)](_0x4fa22a[_0x275d34(0x175)])&&_0x377e23++;const _0x9fa899=_0x4fa22a[_0x275d34(0x24c)];if((_0x4fa22a[_0x275d34(0x1d5)]===_0x275d34(0x245)||_0x4fa22a['role']===_0x275d34(0x205))&&_0x9fa899&&typeof _0x9fa899==='string')for(const {pattern:_0x1c151d,error_type:_0x1d5888,tool:_0x5a59c9}of _0x4d980a){const _0xbd3176=_0x9fa899[_0x275d34(0x1c1)](new RegExp(_0x1c151d[_0x275d34(0x233)],'g'));if(_0xbd3176)for(const _0xee4bf of _0xbd3176){const _0x1cee27=_0x9fa899['indexOf'](_0xee4bf),_0x143259=_0x9fa899[_0x275d34(0x153)](_0x1cee27,Math[_0x275d34(0x16a)](_0x1cee27+0xc8,_0x9fa899[_0x275d34(0x1a1)]));_0x3a612f[_0x275d34(0x224)]({'tool':_0x5a59c9,'error_type':_0x1d5888,'error_message':_0x143259['split']('\x0a')[0x0],'turn':_0x377e23});}}}return _0x3a612f;};try{const _0x399039=a0_0x1c35ef['resolve'](_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x23e)]),_0x4adfbe=_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x171)],_0x205cfe=_0x4adfbe===_0xf4c6c9(0x17f)?{'allowNames':[_0xf4c6c9(0x17f)]}:undefined,_0x11eeec=new LocalRipgrepProvider(_0x399039,undefined,_0x205cfe);logger['debug'](_0xf4c6c9(0x20e),_0xf4c6c9(0x144),{'type':_0xf4c6c9(0x236),'repo_root':_0x399039,'search_type':_0x4adfbe||_0xf4c6c9(0x1d3)}),logger[_0xf4c6c9(0x204)](_0xf4c6c9(0x20e),_0xf4c6c9(0x20b),{'query':_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x1a0)],'repo_root':_0x399039,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x1e03c5=Date[_0xf4c6c9(0x1f8)](),_0x12817c=await runWarpGrep({'searchTerm':_0x153b53[_0xf4c6c9(0x227)]['search_string'],'repoRoot':_0x399039,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x11eeec,'search_type':_0x4adfbe}),_0x171851=Date[_0xf4c6c9(0x1f8)]()-_0x1e03c5,_0x47fbea=_0x12817c[_0xf4c6c9(0x16d)]?.[_0xf4c6c9(0x207)]?.['files']?.[_0xf4c6c9(0x1a1)]??0x0;logger[_0xf4c6c9(0x204)]('MCP',_0xf4c6c9(0x1a3),{'termination':_0x12817c[_0xf4c6c9(0x1f0)],'turns':_0x12817c[_0xf4c6c9(0x1ee)]?.[_0xf4c6c9(0x246)]??0x0,'files_found':_0x47fbea,'latency_ms':_0x171851});const _0x234044=_0x80c17b(_0x12817c[_0xf4c6c9(0x19e)]);_0x234044['length']>0x0&&reportMorphError({'error_message':_0xf4c6c9(0x222)+_0x234044[_0xf4c6c9(0x1a1)]+_0xf4c6c9(0x1e3),'error_type':_0xf4c6c9(0x1a5),'level':'warn','tool':_0xf4c6c9(0x1b3),'context':{'repo_path':_0x153b53[_0xf4c6c9(0x227)]['repo_path'],'query':_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x1a0)],'model':_0xf4c6c9(0x1ea),'termination_reason':_0x12817c[_0xf4c6c9(0x1f0)],'sub_tool_errors':_0x234044,'timings':_0x12817c['timings'],'tool_calls':_0x3faed3(_0x12817c[_0xf4c6c9(0x19e)]),'messages':_0x12817c[_0xf4c6c9(0x19e)]?.[_0xf4c6c9(0x21c)](_0x5002b2=>({'role':_0x5002b2[_0xf4c6c9(0x1d5)],'content':_0x5002b2[_0xf4c6c9(0x24c)],..._0x5002b2[_0xf4c6c9(0x175)]?{'tool_calls':_0x5002b2[_0xf4c6c9(0x175)]['length']}:{},..._0x5002b2[_0xf4c6c9(0x138)]?{'tool_call_id':_0x5002b2['tool_call_id']}:{}}))},'source':_0xf4c6c9(0x1ac)})[_0xf4c6c9(0x25f)](()=>{});let _0x32dc5a='';if(_0x12817c[_0xf4c6c9(0x1f0)]===_0xf4c6c9(0x21a)&&_0x12817c[_0xf4c6c9(0x16d)]?.['metadata']?.[_0xf4c6c9(0x1c0)]){const _0x465fe2=_0x12817c[_0xf4c6c9(0x16d)][_0xf4c6c9(0x207)][_0xf4c6c9(0x1c0)];if(_0x465fe2[_0xf4c6c9(0x1a1)]===0x0)return _0x32dc5a=_0x12817c[_0xf4c6c9(0x16d)][_0xf4c6c9(0x23b)]||_0xf4c6c9(0x1fa),{'content':[{'type':_0xf4c6c9(0x1b5),'text':_0x32dc5a}]};const _0x7e6f3d=[],_0x4cacd7=[_0xf4c6c9(0x1b2)];for(const _0x493fb5 of _0x12817c['messages']){if(_0x493fb5['role']===_0xf4c6c9(0x1f4)&&Array[_0xf4c6c9(0x201)](_0x493fb5['tool_calls']))for(const _0x8cb689 of _0x493fb5['tool_calls']){try{const _0x494fba=_0x8cb689[_0xf4c6c9(0x203)]?.[_0xf4c6c9(0x13e)],_0x13276b=JSON[_0xf4c6c9(0x1c5)](_0x8cb689[_0xf4c6c9(0x203)]?.[_0xf4c6c9(0x240)]||'{}');if(_0x494fba===_0xf4c6c9(0x1cf))_0x4cacd7[_0xf4c6c9(0x224)]('-\x20Grepped\x20\x27'+_0x13276b[_0xf4c6c9(0x218)]+'\x27\x20in\x20`'+(_0x13276b[_0xf4c6c9(0x22a)]||'.')+'`');else{if(_0x494fba===_0xf4c6c9(0x142))_0x4cacd7['push']('-\x20Read\x20file\x20`'+_0x13276b[_0xf4c6c9(0x22a)]+'`');else{if(_0x494fba===_0xf4c6c9(0x260))_0x4cacd7[_0xf4c6c9(0x224)](_0xf4c6c9(0x22d)+(_0x13276b['command']||'.')+'`');else _0x494fba===_0xf4c6c9(0x1b9)&&_0x4cacd7['push'](_0xf4c6c9(0x213)+_0x13276b[_0xf4c6c9(0x218)]+_0xf4c6c9(0x219)+(_0x13276b[_0xf4c6c9(0x22a)]||'.')+'`');}}}catch{}}}_0x7e6f3d[_0xf4c6c9(0x224)](_0x4cacd7[_0xf4c6c9(0x1cb)]('\x0a'));const _0x6598e5=['',_0xf4c6c9(0x24e)];for(const _0x4d896a of _0x465fe2){if(_0x4d896a['lines']==='*')_0x6598e5[_0xf4c6c9(0x224)]('-\x20'+_0x4d896a[_0xf4c6c9(0x22a)]+':*');else{if(Array['isArray'](_0x4d896a[_0xf4c6c9(0x212)])){const _0x176b10=_0x4d896a[_0xf4c6c9(0x212)][_0xf4c6c9(0x21c)](([_0x1bd6e3,_0x461fb8])=>{if(_0x1bd6e3===_0x461fb8)return''+_0x1bd6e3;return _0x1bd6e3+'-'+_0x461fb8;});_0x6598e5[_0xf4c6c9(0x224)]('-\x20'+_0x4d896a['path']+':'+_0x176b10[_0xf4c6c9(0x1cb)](','));}else _0x6598e5['push']('-\x20'+_0x4d896a[_0xf4c6c9(0x22a)]+':*');}}_0x6598e5['push'](''),_0x7e6f3d[_0xf4c6c9(0x224)](_0x6598e5['join']('\x0a')),_0x7e6f3d[_0xf4c6c9(0x224)](_0xf4c6c9(0x1d9));const _0x62be28=[],_0x493957=[];for(const _0x2815e8 of _0x465fe2){let _0x5a0eeb=a0_0x1c35ef['resolve'](_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x23e)],_0x2815e8['path']),_0x29aef4=null,_0x241dd7=null;try{_0x29aef4=await a0_0x114a5e[_0xf4c6c9(0x239)](_0x5a0eeb,{'encoding':_0xf4c6c9(0x249)});}catch(_0x5668f3){const _0x6a6179=fixPathRepetition(_0x5a0eeb);if(_0x6a6179)try{_0x29aef4=await a0_0x114a5e['readFile'](_0x6a6179,{'encoding':_0xf4c6c9(0x249)}),_0x5a0eeb=_0x6a6179;}catch{_0x241dd7=_0x5668f3 instanceof Error?_0x5668f3:new Error(String(_0x5668f3));}else _0x241dd7=_0x5668f3 instanceof Error?_0x5668f3:new Error(String(_0x5668f3));}if(_0x29aef4!==null){const _0x1621dc=_0x29aef4[_0xf4c6c9(0x228)](/\r?\n/),_0x2ecee1=[];if(_0x2815e8[_0xf4c6c9(0x212)]==='*'||!Array['isArray'](_0x2815e8['lines']))for(let _0x23a2c8=0x1;_0x23a2c8<=_0x1621dc[_0xf4c6c9(0x1a1)];_0x23a2c8++){const _0x12790f=_0x1621dc[_0x23a2c8-0x1];_0x2ecee1['push'](_0x23a2c8+'|\x20'+_0x12790f);}else for(const [_0x312e91,_0x18128c]of _0x2815e8['lines']){_0x2ecee1['length']>0x0&&_0x2ecee1[_0xf4c6c9(0x224)]('');for(let _0x2fec74=_0x312e91;_0x2fec74<=_0x18128c&&_0x2fec74<=_0x1621dc['length'];_0x2fec74++){const _0x4b04f2=_0x1621dc[_0x2fec74-0x1];_0x2ecee1['push'](_0x2fec74+'|\x20'+_0x4b04f2);}}_0x493957[_0xf4c6c9(0x224)]({'path':_0x2815e8['path'],'content':_0x2ecee1[_0xf4c6c9(0x1cb)]('\x0a')});}else _0x62be28['push'](_0xf4c6c9(0x158)+_0x2815e8[_0xf4c6c9(0x22a)]+_0xf4c6c9(0x261)+(_0x241dd7?.['message']||_0xf4c6c9(0x1c7))+_0xf4c6c9(0x1ff));}try{const _0x28a3f1=await compactFileContexts(_0x493957,_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x1a0)],MORPH_API_KEY,MORPH_API_URL);for(const _0xa8f2f8 of _0x28a3f1){_0x62be28[_0xf4c6c9(0x224)](_0xf4c6c9(0x158)+_0xa8f2f8[_0xf4c6c9(0x22a)]+_0xf4c6c9(0x22b)+_0xa8f2f8[_0xf4c6c9(0x24c)]+_0xf4c6c9(0x1ff));}}catch(_0x1e70e9){logger[_0xf4c6c9(0x1fe)](_0xf4c6c9(0x20e),_0xf4c6c9(0x1a9),{'error':_0x1e70e9 instanceof Error?_0x1e70e9['message']:String(_0x1e70e9),'files_count':_0x493957['length']});for(const _0x175840 of _0x493957){_0x62be28['push'](_0xf4c6c9(0x158)+_0x175840['path']+_0xf4c6c9(0x22b)+_0x175840[_0xf4c6c9(0x24c)]+_0xf4c6c9(0x1ff));}}_0x7e6f3d[_0xf4c6c9(0x224)](_0x62be28[_0xf4c6c9(0x1cb)]('\x0a\x0a')),_0x32dc5a=_0x7e6f3d[_0xf4c6c9(0x1cb)]('\x0a');const _0x1d7526=_0x12817c[_0xf4c6c9(0x189)]?.[_0xf4c6c9(0x14f)](_0x3f7027=>_0x3f7027[_0xf4c6c9(0x21f)]?.[_0xf4c6c9(0x242)](_0xf4c6c9(0x237)))||[];if(_0x1d7526[_0xf4c6c9(0x1a1)]>0x0){const _0x133e3b=_0x1d7526[_0xf4c6c9(0x21c)](_0x4ae32e=>_0x4ae32e[_0xf4c6c9(0x21f)])[_0xf4c6c9(0x1cb)](';\x20');reportMorphError({'error_message':_0x133e3b,'error_type':_0xf4c6c9(0x1cc),'context':{'tool':_0xf4c6c9(0x1b3),'repo_path':_0x153b53[_0xf4c6c9(0x227)]['repo_path'],'query':_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x1a0)],'model':_0xf4c6c9(0x1ea),'termination_reason':_0xf4c6c9(0x194),'error_count':_0x1d7526[_0xf4c6c9(0x1a1)],'is_timeout':![],'timings':_0x12817c['timings'],'files_attempted':_0x465fe2[_0xf4c6c9(0x21c)](_0xf18267=>({'path':_0xf18267[_0xf4c6c9(0x22a)],'lines':_0xf18267[_0xf4c6c9(0x212)]})),'tool_calls':_0x3faed3(_0x12817c['messages']),'messages':_0x12817c['messages']?.[_0xf4c6c9(0x21c)](_0x2310e2=>({'role':_0x2310e2[_0xf4c6c9(0x1d5)],'content':_0x2310e2[_0xf4c6c9(0x24c)],..._0x2310e2['tool_calls']?{'tool_calls':_0x2310e2[_0xf4c6c9(0x175)][_0xf4c6c9(0x1a1)]}:{},..._0x2310e2[_0xf4c6c9(0x138)]?{'tool_call_id':_0x2310e2[_0xf4c6c9(0x138)]}:{}})),'request_content':{'query':_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x1a0)],'repo_path':_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x23e)],'repoRoot':a0_0x1c35ef[_0xf4c6c9(0x154)](_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x23e)]),'model':'morph-warp-grep-v2.1'}},'source':_0xf4c6c9(0x1ac)})[_0xf4c6c9(0x25f)](()=>{});}}else{if(_0x12817c['terminationReason']===_0xf4c6c9(0x149)&&_0x12817c[_0xf4c6c9(0x189)][_0xf4c6c9(0x1a1)]>0x0){const _0x3640b6=_0x12817c['errors'][_0xf4c6c9(0x21c)](_0x2e4a58=>_0x2e4a58[_0xf4c6c9(0x21f)])[_0xf4c6c9(0x1cb)](';\x20');_0x32dc5a='Error:\x20'+_0x3640b6;const _0x5ea0fb=_0x3640b6[_0xf4c6c9(0x255)]()['includes']('timeout')||_0x3640b6['toLowerCase']()[_0xf4c6c9(0x17b)]('timed\x20out')||_0x3640b6[_0xf4c6c9(0x255)]()[_0xf4c6c9(0x17b)](_0xf4c6c9(0x136)),_0x8ec427=_0x12817c[_0xf4c6c9(0x16d)]?.[_0xf4c6c9(0x207)]?.[_0xf4c6c9(0x1c0)],_0x2913e2=_0x12817c[_0xf4c6c9(0x189)][0x0];reportMorphError({'error_message':_0x3640b6,'error_type':_0x5ea0fb?'TimeoutError':_0x2913e2?.[_0xf4c6c9(0x1ba)]?.[_0xf4c6c9(0x13e)]||_0xf4c6c9(0x221),'context':{'tool':_0xf4c6c9(0x1b3),'repo_path':_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x23e)],'query':_0x153b53['data']['search_string'],'model':_0xf4c6c9(0x1ea),'termination_reason':_0x12817c[_0xf4c6c9(0x1f0)],'error_count':_0x12817c[_0xf4c6c9(0x189)][_0xf4c6c9(0x1a1)],'is_timeout':_0x5ea0fb,'timings':_0x12817c[_0xf4c6c9(0x1ee)],'files_attempted':_0x8ec427?.['map'](_0x24fdf2=>({'path':_0x24fdf2[_0xf4c6c9(0x22a)],'lines':_0x24fdf2[_0xf4c6c9(0x212)]})),'tool_calls':_0x3faed3(_0x12817c[_0xf4c6c9(0x19e)]),'messages':_0x12817c[_0xf4c6c9(0x19e)]?.[_0xf4c6c9(0x21c)](_0x582257=>({'role':_0x582257[_0xf4c6c9(0x1d5)],'content':_0x582257[_0xf4c6c9(0x24c)],..._0x582257[_0xf4c6c9(0x175)]?{'tool_calls':_0x582257[_0xf4c6c9(0x175)][_0xf4c6c9(0x1a1)]}:{},..._0x582257[_0xf4c6c9(0x138)]?{'tool_call_id':_0x582257[_0xf4c6c9(0x138)]}:{}})),'request_content':{'query':_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x1a0)],'repo_path':_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x23e)],'repoRoot':a0_0x1c35ef[_0xf4c6c9(0x154)](_0x153b53[_0xf4c6c9(0x227)]['repo_path']),'model':_0xf4c6c9(0x1ea)}},'stack_trace':_0x2913e2?.['stack']||undefined,'source':_0xf4c6c9(0x1ac)})[_0xf4c6c9(0x25f)](()=>{});}else _0x32dc5a='Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.';}return{'content':[{'type':_0xf4c6c9(0x1b5),'text':_0x32dc5a}]};}catch(_0x351a9d){const _0x5cb839=handleMorphAPIError(_0x351a9d);if(_0x5cb839)return logger[_0xf4c6c9(0x174)](_0xf4c6c9(0x20e),_0xf4c6c9(0x13d),{'tool':_0xf4c6c9(0x1b3),'error':_0xf4c6c9(0x1cd),'latency_ms':Date[_0xf4c6c9(0x1f8)]()-_0xc22f4}),_0x5cb839;const _0x51458b=_0x351a9d instanceof Error?_0x351a9d[_0xf4c6c9(0x21f)]:String(_0x351a9d);logger['error'](_0xf4c6c9(0x20e),'tool_call_error',{'tool':_0xf4c6c9(0x1b3),'error':_0x51458b,'repo_path':_0x153b53['data'][_0xf4c6c9(0x23e)],'query':_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x1a0)],'latency_ms':Date['now']()-_0xc22f4});const _0x196592=_0x51458b[_0xf4c6c9(0x255)]()[_0xf4c6c9(0x17b)](_0xf4c6c9(0x24b))||_0x51458b[_0xf4c6c9(0x255)]()[_0xf4c6c9(0x17b)](_0xf4c6c9(0x14c))||_0x51458b[_0xf4c6c9(0x255)]()[_0xf4c6c9(0x17b)](_0xf4c6c9(0x136))||_0x351a9d instanceof Error&&_0x351a9d[_0xf4c6c9(0x13e)]===_0xf4c6c9(0x17c);return reportMorphError({'error_message':_0x51458b,'error_type':_0x196592?_0xf4c6c9(0x17c):_0x351a9d instanceof Error?_0x351a9d['constructor']['name']:_0xf4c6c9(0x1ec),'context':{'tool':'codebase_search','repo_path':_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x23e)],'query':_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x1a0)],'model':_0xf4c6c9(0x1ea),'is_timeout':_0x196592,'exception_phase':_0xf4c6c9(0x170),'request_content':{'query':_0x153b53['data'][_0xf4c6c9(0x1a0)],'repo_path':_0x153b53[_0xf4c6c9(0x227)]['repo_path'],'repoRoot':a0_0x1c35ef[_0xf4c6c9(0x154)](_0x153b53[_0xf4c6c9(0x227)][_0xf4c6c9(0x23e)]),'model':_0xf4c6c9(0x1ea)}},'stack_trace':_0x351a9d instanceof Error?_0x351a9d[_0xf4c6c9(0x193)]:undefined,'source':'mcp-filesystem'})[_0xf4c6c9(0x25f)](()=>{}),{'content':[{'type':_0xf4c6c9(0x1b5),'text':_0xf4c6c9(0x25e)+_0x51458b}],'isError':![]};}}case TOOL_NAMES[_0xf4c6c9(0x23a)]:{const _0x298a53=WarpGrepGitHubArgsSchema['safeParse'](_0x4e1df1);if(!_0x298a53['success'])return{'content':[{'type':_0xf4c6c9(0x1b5),'text':'Invalid\x20arguments:\x20'+_0x298a53[_0xf4c6c9(0x174)]}],'isError':!![]};const _0x213f01=_0x298a53[_0xf4c6c9(0x227)][_0xf4c6c9(0x1ab)]||_0x298a53['data'][_0xf4c6c9(0x1f7)];if(!_0x213f01)return{'content':[{'type':_0xf4c6c9(0x1b5),'text':_0xf4c6c9(0x188)}],'isError':!![]};const _0x2641f2=MORPH_API_KEY;if(!_0x2641f2)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x4274b7=Date[_0xf4c6c9(0x1f8)]();logger[_0xf4c6c9(0x204)](_0xf4c6c9(0x20e),_0xf4c6c9(0x1f9),{'identifier':_0x213f01,'query':_0x298a53['data']['search_string'],'branch':_0x298a53[_0xf4c6c9(0x227)][_0xf4c6c9(0x1e5)]});try{const _0x190f23=new WarpGrepClient({'morphApiKey':_0x2641f2,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x424e3d=await _0x190f23[_0xf4c6c9(0x19c)]({'searchTerm':_0x298a53[_0xf4c6c9(0x227)][_0xf4c6c9(0x1a0)],'github':_0x213f01,'branch':_0x298a53[_0xf4c6c9(0x227)][_0xf4c6c9(0x1e5)]}),_0x17f540=Date[_0xf4c6c9(0x1f8)]()-_0x4274b7;logMcpStderr(_0xf4c6c9(0x1c6)+_0x17f540+'ms.\x20Success:\x20'+_0x424e3d['success']);const _0x33d137=formatResult(_0x424e3d);return{'content':[{'type':_0xf4c6c9(0x1b5),'text':_0x33d137}]};}catch(_0x28ce3f){const _0x5027f4=handleMorphAPIError(_0x28ce3f);if(_0x5027f4)return _0x5027f4;const _0x13a03a=Date[_0xf4c6c9(0x1f8)]()-_0x4274b7,_0x3d69a6=_0x28ce3f instanceof Error?_0x28ce3f[_0xf4c6c9(0x21f)]:String(_0x28ce3f);return logMcpStderr(_0xf4c6c9(0x20d)+_0x13a03a+'ms:',_0x3d69a6),reportMorphError({'error_message':_0x3d69a6,'error_type':_0x28ce3f instanceof Error?_0x28ce3f[_0xf4c6c9(0x1ba)][_0xf4c6c9(0x13e)]:_0xf4c6c9(0x1ec),'context':{'tool':_0xf4c6c9(0x15c),'github_url':_0x213f01,'search_string':_0x298a53[_0xf4c6c9(0x227)]['search_string'],'branch':_0x298a53['data'][_0xf4c6c9(0x1e5)]},'stack_trace':_0x28ce3f instanceof Error?_0x28ce3f[_0xf4c6c9(0x193)]:undefined,'source':_0xf4c6c9(0x1ac),'tool':_0xf4c6c9(0x15c),'latency_ms':_0x13a03a})['catch'](()=>{}),{'content':[{'type':_0xf4c6c9(0x1b5),'text':_0xf4c6c9(0x167)+_0x3d69a6}],'isError':![]};}}default:throw new Error(_0xf4c6c9(0x20f)+_0x22814c);}}catch(_0x242897){const _0x533c2e=_0x242897 instanceof Error?_0x242897[_0xf4c6c9(0x21f)]:String(_0x242897);return reportMorphError({'error_message':_0x533c2e,'error_type':_0x242897 instanceof Error?_0x242897[_0xf4c6c9(0x1ba)][_0xf4c6c9(0x13e)]:_0xf4c6c9(0x1ec),'context':{'tool':_0x22814c,'arguments':_0x4e1df1?JSON[_0xf4c6c9(0x1aa)](_0x4e1df1)[_0xf4c6c9(0x153)](0x0,0x1f4):undefined,'mcp_server_version':_0xf4c6c9(0x200)},'stack_trace':_0x242897 instanceof Error?_0x242897[_0xf4c6c9(0x193)]:undefined,'source':'mcp-filesystem'})[_0xf4c6c9(0x25f)](()=>{}),{'content':[{'type':'text','text':_0xf4c6c9(0x14a)+_0x533c2e}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x5f484f){const _0x1a3938=a0_0x52d368,_0x3f68e4=await getValidRootDirectories(_0x5f484f);if(_0x3f68e4[_0x1a3938(0x1a1)]>0x0)allowedDirectories=[..._0x3f68e4],logMcpStderr(_0x1a3938(0x1d1)+_0x3f68e4[_0x1a3938(0x1a1)]+'\x20valid\x20directories');else{logMcpStderr(_0x1a3938(0x18e));if(ENABLE_WORKSPACE_MODE)try{const _0x5af0c9=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x5af0c9&&(allowedDirectories=[_0x5af0c9],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x5af0c9));}catch(_0x176c7e){logMcpStderr(_0x1a3938(0x172)+_0x176c7e);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x59a24d=a0_0x52d368;try{const _0x2e4f3d=await server[_0x59a24d(0x1bc)]();_0x2e4f3d&&_0x59a24d(0x173)in _0x2e4f3d&&await updateAllowedDirectoriesFromRoots(_0x2e4f3d[_0x59a24d(0x173)]);}catch(_0x2b3e38){logMcpStderr(_0x59a24d(0x181),_0x2b3e38 instanceof Error?_0x2b3e38[_0x59a24d(0x21f)]:String(_0x2b3e38));}}),server[a0_0x52d368(0x241)]=async()=>{const _0x4eaa63=a0_0x52d368,_0xd73753=server['getClientCapabilities']();if(_0xd73753?.['roots'])try{const _0x42659e=await server[_0x4eaa63(0x1bc)]();_0x42659e&&_0x4eaa63(0x173)in _0x42659e?await updateAllowedDirectoriesFromRoots(_0x42659e[_0x4eaa63(0x173)]):logMcpStderr(_0x4eaa63(0x226));}catch(_0x574e1c){logMcpStderr(_0x4eaa63(0x1d8),_0x574e1c instanceof Error?_0x574e1c[_0x4eaa63(0x21f)]:String(_0x574e1c));}else{if(allowedDirectories[_0x4eaa63(0x1a1)]>0x0)logMcpStderr(_0x4eaa63(0x19a),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x4eaa63(0x184));else throw new Error(_0x4eaa63(0x177));}}};async function runServer(){const _0x1a08aa=a0_0x52d368,_0x578952=new StdioServerTransport();await server['connect'](_0x578952),logMcpStderr(_0x1a08aa(0x164)),allowedDirectories[_0x1a08aa(0x1a1)]===0x0&&logMcpStderr(_0x1a08aa(0x238));}runServer()[a0_0x52d368(0x25f)](_0x846a20=>{const _0x49ce42=a0_0x52d368;logMcpStderr('Fatal\x20error\x20running\x20server:',_0x846a20),process[_0x49ce42(0x18a)](0x1);});
|
|
2
|
+
const a0_0x115185=a0_0x3082;(function(_0x10f859,_0x11e393){const _0x6ed5e6=a0_0x3082,_0x54bf7b=_0x10f859();while(!![]){try{const _0x50df5f=-parseInt(_0x6ed5e6(0x153))/0x1*(parseInt(_0x6ed5e6(0x12f))/0x2)+-parseInt(_0x6ed5e6(0xc2))/0x3+-parseInt(_0x6ed5e6(0x102))/0x4+-parseInt(_0x6ed5e6(0x1d0))/0x5*(-parseInt(_0x6ed5e6(0x16b))/0x6)+parseInt(_0x6ed5e6(0x10e))/0x7+parseInt(_0x6ed5e6(0x134))/0x8+parseInt(_0x6ed5e6(0xe6))/0x9*(parseInt(_0x6ed5e6(0x1bb))/0xa);if(_0x50df5f===_0x11e393)break;else _0x54bf7b['push'](_0x54bf7b['shift']());}catch(_0x3d3c1a){_0x54bf7b['push'](_0x54bf7b['shift']());}}}(a0_0x2017,0xa0867));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_0x1029ad from'fs/promises';import a0_0x34f0b4 from'path';import a0_0x546a09 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_0x412d0e from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x394041){const _0x223439=a0_0x3082,_0x51ecb0=_0x394041['split'](a0_0x34f0b4['sep'])[_0x223439(0x188)](Boolean);if(_0x51ecb0['length']<0x2)return null;for(let _0x1d6736=Math['floor'](_0x51ecb0[_0x223439(0x1b2)]/0x2);_0x1d6736>=0x1;_0x1d6736--){for(let _0x5edb6e=0x0;_0x5edb6e<=_0x51ecb0['length']-0x2*_0x1d6736;_0x5edb6e++){const _0x443125=_0x51ecb0[_0x223439(0x10f)](_0x5edb6e,_0x5edb6e+_0x1d6736),_0x4c25ef=_0x51ecb0[_0x223439(0x10f)](_0x5edb6e+_0x1d6736,_0x5edb6e+0x2*_0x1d6736);if(_0x443125[_0x223439(0x1d3)]((_0x303771,_0x598a21)=>_0x303771===_0x4c25ef[_0x598a21])){const _0x4fb21f=[..._0x51ecb0[_0x223439(0x10f)](0x0,_0x5edb6e),..._0x51ecb0[_0x223439(0x10f)](_0x5edb6e+_0x1d6736)];return a0_0x34f0b4[_0x223439(0xc3)]+_0x4fb21f['join'](a0_0x34f0b4['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0xee61f6=a0_0x3082;try{const _0xf17199=require(_0xee61f6(0xd2));return _0xf17199[_0xee61f6(0x15c)]??_0xee61f6(0x16f);}catch(_0x2f1015){return logMcpStderr(_0xee61f6(0x1ab),_0x2f1015),'unknown';}}function printHelp(){const _0x4f5148=a0_0x3082;console[_0x4f5148(0x141)](_0x4f5148(0x149)+getPackageVersion()),console[_0x4f5148(0x141)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0x4f5148(0x141)]('\x0aOptions:'),console['log'](_0x4f5148(0x117)),console['log'](_0x4f5148(0x148)),console[_0x4f5148(0x141)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console[_0x4f5148(0x141)]('\x0aExamples:'),console[_0x4f5148(0x141)]('\x20\x20morph-mcp'),console[_0x4f5148(0x141)](_0x4f5148(0x194));}const cliArgs=process[a0_0x115185(0x158)][a0_0x115185(0x10f)](0x2),VERSION_FLAGS=new Set([a0_0x115185(0x17c),'-v','-V']),HELP_FLAGS=new Set([a0_0x115185(0x16e),'-h']);cliArgs['some'](_0x297c7e=>VERSION_FLAGS[a0_0x115185(0x12b)](_0x297c7e))&&(console[a0_0x115185(0x141)](a0_0x115185(0x149)+getPackageVersion()),process[a0_0x115185(0x177)](0x0));cliArgs['some'](_0x2c2a26=>HELP_FLAGS[a0_0x115185(0x12b)](_0x2c2a26))&&(printHelp(),process[a0_0x115185(0x177)](0x0));function getCliArg(_0x177ffc){const _0x15eea6=a0_0x115185;for(let _0x217b1f=0x0;_0x217b1f<cliArgs['length'];_0x217b1f++){const _0x31d38f=cliArgs[_0x217b1f];if(_0x31d38f['startsWith']('--'+_0x177ffc+'='))return _0x31d38f[_0x15eea6(0x10f)](('--'+_0x177ffc+'=')[_0x15eea6(0x1b2)]);if(_0x31d38f==='--'+_0x177ffc&&_0x217b1f+0x1<cliArgs[_0x15eea6(0x1b2)])return cliArgs[_0x217b1f+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x115185(0x1b2)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x115185(0x12b)](arg)||HELP_FLAGS[a0_0x115185(0x12b)](arg))continue;if(arg[a0_0x115185(0xf6)](a0_0x115185(0x183)))continue;if(arg===a0_0x115185(0x122)){i++;continue;}args['push'](arg);}const WORKSPACE_ROOT=process[a0_0x115185(0xff)][a0_0x115185(0x11f)]||process[a0_0x115185(0xff)][a0_0x115185(0x11d)]||process[a0_0x115185(0x15a)](),ENABLE_WORKSPACE_MODE=process[a0_0x115185(0xff)]['ENABLE_WORKSPACE_MODE']!==a0_0x115185(0x136),MORPH_API_KEY=getCliArg(a0_0x115185(0x126))??process[a0_0x115185(0xff)]['MORPH_API_KEY'],MORPH_API_URL=process[a0_0x115185(0xff)][a0_0x115185(0x199)],MORPH_LARGE_APPLY=process[a0_0x115185(0xff)][a0_0x115185(0xd6)]!==a0_0x115185(0x136),MORPH_WARP_GREP_TIMEOUT=process[a0_0x115185(0xff)][a0_0x115185(0xf7)]?parseInt(process[a0_0x115185(0xff)]['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x115185(0xff)][a0_0x115185(0x180)]?new Set(process[a0_0x115185(0xff)][a0_0x115185(0x180)][a0_0x115185(0x145)](',')['map'](_0x4e0b09=>_0x4e0b09[a0_0x115185(0x12d)]())[a0_0x115185(0x188)](_0x559ec6=>_0x559ec6[a0_0x115185(0x1b2)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x115185(0xee)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x115185(0x12b)](tool)&&console[a0_0x115185(0xec)]('Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22'+tool+a0_0x115185(0x15f)+[...KNOWN_TOOL_NAMES][a0_0x115185(0xcd)](',\x20'));}console[a0_0x115185(0xec)](a0_0x115185(0x1c2)+[...DISABLED_TOOLS][a0_0x115185(0xcd)](',\x20'));}function a0_0x3082(_0x2e8097,_0x230272){_0x2e8097=_0x2e8097-0xc1;const _0x201726=a0_0x2017();let _0x308218=_0x201726[_0x2e8097];return _0x308218;}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x115185(0xf6)](a0_0x115185(0x1dd))&&!MORPH_API_KEY['startsWith'](a0_0x115185(0x18b))&&logMcpStderr(a0_0x115185(0xc9));async function reportMorphError(_0x56f330){const _0x21d365=a0_0x115185;try{await a0_0x412d0e[_0x21d365(0x19e)](_0x21d365(0x1a1),{..._0x56f330,'timestamp':new Date()[_0x21d365(0xe3)](),'source':_0x56f330['source']||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x56f330[_0x21d365(0x15b)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x21d365(0x1a7),'Authorization':_0x21d365(0x156)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x5e8a9c,_0x101364){const _0x578cb4=a0_0x115185;if(_0x5e8a9c&&typeof _0x5e8a9c===_0x578cb4(0x1ca)&&_0x578cb4(0x16a)in _0x5e8a9c)return _0x5e8a9c[_0x578cb4(0x16a)];if(_0x5e8a9c&&typeof _0x5e8a9c===_0x578cb4(0x1ca)&&'response'in _0x5e8a9c)return _0x5e8a9c['response']?.[_0x578cb4(0x16a)];const _0x106cb2=_0x101364[_0x578cb4(0x178)](/\b(401|429)\b/);return _0x106cb2?parseInt(_0x106cb2[0x1],0xa):null;}function handleMorphAPIError(_0x3faef1){const _0x42aeb0=a0_0x115185,_0x143fd1=_0x3faef1 instanceof Error?_0x3faef1[_0x42aeb0(0x108)]:String(_0x3faef1),_0x57bcca=extractStatusCode(_0x3faef1,_0x143fd1);switch(_0x57bcca){case 0x191:return{'content':[{'type':_0x42aeb0(0x191),'text':_0x42aeb0(0x11e)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x42aeb0(0x191),'text':'Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.'}],'isError':!![]};default:return null;}}args[a0_0x115185(0x1b2)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x115185(0x1c1)),logMcpStderr(a0_0x115185(0x18e)),logMcpStderr(a0_0x115185(0x1e3)),logMcpStderr(a0_0x115185(0xf0)),logMcpStderr(a0_0x115185(0x19a)),logMcpStderr(a0_0x115185(0x14a)));function normalizePath(_0x6107f2){const _0x1eacaa=a0_0x115185;return a0_0x34f0b4[_0x1eacaa(0x1d7)](_0x6107f2);}function expandHome(_0x44af74){const _0x377c40=a0_0x115185;if(_0x44af74[_0x377c40(0xf6)]('~/')||_0x44af74==='~')return a0_0x34f0b4[_0x377c40(0xcd)](a0_0x546a09[_0x377c40(0xe8)](),_0x44af74[_0x377c40(0x10f)](0x1));return _0x44af74;}let allowedDirectories=await Promise['all'](args['map'](async _0x43bc7f=>{const _0x46b35b=a0_0x115185,_0x239629=expandHome(_0x43bc7f),_0x4e2a45=a0_0x34f0b4[_0x46b35b(0x1c4)](_0x239629);try{const _0x36a8db=await a0_0x1029ad[_0x46b35b(0x1bf)](_0x4e2a45);return normalizePath(_0x36a8db);}catch(_0x42d4a8){return normalizePath(_0x4e2a45);}}));if(ENABLE_WORKSPACE_MODE&&args['length']===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x115185(0x110)](workspaceDir),logMcpStderr(a0_0x115185(0xdb)+workspaceDir+a0_0x115185(0x142)));}catch(a0_0x5fd50c){logMcpStderr(a0_0x115185(0x130)+a0_0x5fd50c);}function a0_0x2017(){const _0xd3b0f4=['lines','messages','linesModified','search_type','isDirectory','github_url','GITHUB_CODEBASE_SEARCH','log','\x20as\x20allowed\x20directory','pyproject.toml','[could\x20not\x20read\x20file:\x20','split','0.2.0','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','@morphllm/morphmcp\x20','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','mcp-filesystem','unknown\x20error','getClientCapabilities','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','composer.json','role','all','Warning:\x20','1YYQqvq','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','Bearer\x20','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','argv','list_directory\x20','cwd','context','version','number','searchGitHub','\x22.\x20Known\x20tools:\x20','\x0a...\x20(truncated,\x20total:\x20','branch','assistant','path_validation_failed','Benefits:\x0a','read\x20','Preview\x20changes\x20without\x20applying\x20them.','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','go.mod','linesAdded','status','1185198KhYUey','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','BinaryFile','--help','unknown','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','ENOENT','IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','code_edit','dirname','instructions','exit','match','catch','now','tool_call_id','--version','FileNotFound','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','`\x20in\x20`','DISABLED_TOOLS','path_validation_start','<file\x20path=\x22','--api-key=','SymlinkError','describe','API\x20error\x20(auth/rate-limit)','Failed\x20to\x20request\x20roots\x20from\x20client:','filter','string','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','morph-','timed\x20out','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','GitHub\x20search\x20failed:\x20','linesRemoved','text','setNotificationHandler','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','constructor','WarpGrepError','tsconfig.json','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','MORPH_API_URL','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','morph-warp-grep-v2.1','listRoots','warp_grep_complete','post','indexOf','Tool\x20','https://morphllm.com/api/error-report','array','TimeoutError','command','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','\x20valid\x20directories','application/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.','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','.\x20Changes:\x20','\x20-\x20','Error:\x20','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','optional','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','length','substring','Tool\x20\x22','tool_call_complete','For\x20deletions:\x0a','morph-v3-large','Repository\x20identifier','content','files','22730PwNoob','metadata','[github_codebase_search]\x20Done\x20in\x20','basename','realpath','instruction','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','Disabled\x20tools:\x20','Created\x20File','resolve','Warning:\x20Workspace\x20fallback\x20failed:\x20','ToolException','grep\x20\x27','source','github_search_start','object','repo_path','github_codebase_search','finish','dryRun','Unknown\x20tool:\x20','5CaLMXw','api_request_start',',\x20removed\x20','every','terminationReason','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','timings','normalize','added\x20','.vscode',',\x20modified\x20','grep','success','sk-','readFile','owner_repo','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','ReadError','etimedout','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','[github_codebase_search]\x20Failed\x20in\x20','roots','2694246YAMRPm','sep','Cargo.toml','terminated','tool','boolean','\x0a</file>','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','Rules:\x0a','glob','morph-mcp','join','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','errors','tool_call_received','description','../package.json','map','Failed\x20to\x20read\x20file:\x20','isArray','MORPH_LARGE_APPLY','code','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','default','file_read_complete','Workspace\x20mode\x20enabled:\x20Using\x20','list_directory','CODEBASE_SEARCH','path','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','warn','runWarpGrep_call','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','toISOString','includes','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','4869iKpSDm','debug','homedir','-\x20Glob\x20search\x20`','name','arguments','error','codebase_search','size','turns','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','.\x20Path:\x20','EDIT_FILE','MCP','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','startsWith','MORPH_WARP_GREP_TIMEOUT','\x22>\x0a','enum','path_validation_resolved','Error\x20running\x20fast\x20context\x20search:\x20','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','glob\x20\x27','pattern','env','data','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','4227712bTraBq','utf-8','RipgrepError','function','tool_calls','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','message','Relevant\x20context\x20found:','edit_file','morph-v3-fast','node_modules','Here\x20is\x20the\x20content\x20of\x20files:\x0a','6996444MiJAMa','slice','push','user','search_string','Morph\x20Edit\x20','Applied','Morph\x20Edit\x20Preview','tool_call_error','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','.git','❌\x20Morph\x20Edit\x20Failed:\x20','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','safeParse','PWD','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.','WORKSPACE_ROOT','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','access','--api-key','timeout','toLowerCase','setRequestHandler','api-key','read','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(uses\x20latest\x20commit)','parse','has','Max\x20results\x20to\x20return','trim','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','701328NSSKCW','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','stack','requiresApiKey','UnknownError','4291736DJXSro','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','false','LocalRipgrepProvider','provider_created','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.'];a0_0x2017=function(){return _0xd3b0f4;};return a0_0x2017();}async function detectWorkspaceRoot(_0x2c1c97){const _0x1abef0=a0_0x115185;let _0x5d08c1=a0_0x34f0b4[_0x1abef0(0x1c4)](_0x2c1c97);const _0x3d4263=[_0x1abef0(0x118),_0x1abef0(0x1d9),'package.json',_0x1abef0(0xc4),_0x1abef0(0x143),_0x1abef0(0x168),'.cursor',_0x1abef0(0x197),_0x1abef0(0x14f)];while(_0x5d08c1!==a0_0x34f0b4[_0x1abef0(0x175)](_0x5d08c1)){for(const _0x40528b of _0x3d4263){const _0x248722=a0_0x34f0b4[_0x1abef0(0xcd)](_0x5d08c1,_0x40528b);try{return await a0_0x1029ad[_0x1abef0(0x121)](_0x248722),normalizePath(_0x5d08c1);}catch{}}_0x5d08c1=a0_0x34f0b4[_0x1abef0(0x175)](_0x5d08c1);}return normalizePath(_0x2c1c97);}await Promise[a0_0x115185(0x151)](args['map'](async _0x4aac81=>{const _0xdc52dc=a0_0x115185;try{const _0x55abb5=await a0_0x1029ad['stat'](expandHome(_0x4aac81));!_0x55abb5[_0xdc52dc(0x13e)]()&&(logMcpStderr(_0xdc52dc(0x1ae)+_0x4aac81+'\x20is\x20not\x20a\x20directory'),process['exit'](0x1));}catch(_0x13d23d){logMcpStderr('Error\x20accessing\x20directory\x20'+_0x4aac81+':',_0x13d23d),process[_0xdc52dc(0x177)](0x1);}}));async function validatePath(_0x50b662){const _0x4a8a61=a0_0x115185,_0x38161b=expandHome(_0x50b662),_0x2ff4eb=a0_0x34f0b4['resolve'](_0x38161b);logger['debug']('MCP',_0x4a8a61(0x181),{'raw_path':_0x50b662,'absolute':_0x2ff4eb});try{const _0x1fcd30=await a0_0x1029ad[_0x4a8a61(0x1bf)](_0x2ff4eb);return logger[_0x4a8a61(0xe7)](_0x4a8a61(0xf4),_0x4a8a61(0xfa),{'resolved':_0x1fcd30,'symlink':_0x1fcd30!==_0x2ff4eb}),_0x1fcd30;}catch(_0x2d7af9){if(_0x2d7af9[_0x4a8a61(0xd7)]===_0x4a8a61(0x172)){const _0x1963f4=a0_0x34f0b4[_0x4a8a61(0x175)](_0x2ff4eb);try{const _0x53e90b=await a0_0x1029ad[_0x4a8a61(0x1bf)](_0x1963f4),_0x23e98c=a0_0x34f0b4[_0x4a8a61(0xcd)](_0x53e90b,a0_0x34f0b4[_0x4a8a61(0x1be)](_0x2ff4eb));return logger[_0x4a8a61(0xe7)](_0x4a8a61(0xf4),_0x4a8a61(0xfa),{'resolved':_0x23e98c,'new_file':!![]}),_0x23e98c;}catch{logger[_0x4a8a61(0xec)](_0x4a8a61(0xf4),_0x4a8a61(0x163),{'raw_path':_0x50b662,'error':'Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x1963f4});throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x1963f4);}}logger[_0x4a8a61(0xec)](_0x4a8a61(0xf4),_0x4a8a61(0x163),{'raw_path':_0x50b662,'error':_0x2d7af9[_0x4a8a61(0x108)]});throw _0x2d7af9;}}const MorphEditFileArgsSchema=z[a0_0x115185(0x1ca)]({'path':z[a0_0x115185(0x189)](),'code_edit':z[a0_0x115185(0x189)]()[a0_0x115185(0x185)](a0_0x115185(0x1af)),'instruction':z[a0_0x115185(0x189)]()['describe'](a0_0x115185(0x170)),'dryRun':z[a0_0x115185(0xc7)]()[a0_0x115185(0xd9)](![])[a0_0x115185(0x185)](a0_0x115185(0x166))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x115185(0x1a8),WarpGrepArgsSchema=z[a0_0x115185(0x1ca)]({'search_string':z[a0_0x115185(0x189)]()[a0_0x115185(0x185)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z['string']()[a0_0x115185(0x185)](a0_0x115185(0x1e0)),'search_type':z[a0_0x115185(0xf9)]([a0_0x115185(0xd9),a0_0x115185(0x10c)])[a0_0x115185(0x1b0)]()['describe'](a0_0x115185(0x128))}),WarpGrepGitHubArgsSchema=z[a0_0x115185(0x1ca)]({'search_string':z['string']()[a0_0x115185(0x185)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x115185(0x189)]()[a0_0x115185(0x1b0)]()[a0_0x115185(0x185)]('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.'),'owner_repo':z[a0_0x115185(0x189)]()[a0_0x115185(0x1b0)]()[a0_0x115185(0x185)](a0_0x115185(0xe5)),'branch':z['string']()[a0_0x115185(0x1b0)]()[a0_0x115185(0x185)](a0_0x115185(0x12e))}),CodebaseSearchArgsSchema=z[a0_0x115185(0x1ca)]({'query':z[a0_0x115185(0x189)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z['string']()[a0_0x115185(0x185)](a0_0x115185(0x1b8)),'branch':z[a0_0x115185(0x189)]()[a0_0x115185(0x1b0)]()[a0_0x115185(0x185)](a0_0x115185(0x129)),'commitHash':z[a0_0x115185(0x189)]()[a0_0x115185(0x1b0)]()[a0_0x115185(0x185)]('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z[a0_0x115185(0x1a2)](z[a0_0x115185(0x189)]())[a0_0x115185(0xd9)]([])['describe'](a0_0x115185(0x120)),'limit':z[a0_0x115185(0x15d)]()['optional']()[a0_0x115185(0xd9)](0xa)['describe'](a0_0x115185(0x12c))}),server=new Server({'name':a0_0x115185(0xcc),'version':a0_0x115185(0x146)},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x32ee75=a0_0x115185,_0x250eb0=[{'name':TOOL_NAMES[_0x32ee75(0xf3)],'description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a'+_0x32ee75(0xdf)+_0x32ee75(0x157)+_0x32ee75(0xf1)+_0x32ee75(0x164)+_0x32ee75(0xf5)+'-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a'+_0x32ee75(0x1a5)+_0x32ee75(0x1b1)+'Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a'+_0x32ee75(0x135)+_0x32ee75(0xe2)+_0x32ee75(0x1b6)+'-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a'+_0x32ee75(0x18d)+_0x32ee75(0xca)+'-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a'+_0x32ee75(0x14e)+_0x32ee75(0x198)+_0x32ee75(0x1d5)+_0x32ee75(0x147)+'-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a'+_0x32ee75(0x173),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES['CODEBASE_SEARCH'],'description':_0x32ee75(0xce)+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'+_0x32ee75(0x107)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x555d3b=_0x250eb0[_0x32ee75(0x188)](_0x41c374=>{const _0x5f4cb5=_0x32ee75;if(DISABLED_TOOLS['has'](_0x41c374['name']))return console[_0x5f4cb5(0xec)](_0x5f4cb5(0x1a0)+_0x41c374['name']+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if(_0x5f4cb5(0x132)in _0x41c374&&_0x41c374[_0x5f4cb5(0x132)]&&!MORPH_API_KEY)return logMcpStderr(_0x5f4cb5(0x152)+_0x41c374[_0x5f4cb5(0xea)]+_0x5f4cb5(0x171)),![];return!![];});return{'tools':_0x555d3b[_0x32ee75(0xd3)](_0x54e82f=>({'name':_0x54e82f[_0x32ee75(0xea)],'description':_0x54e82f[_0x32ee75(0xd1)],'inputSchema':_0x54e82f['inputSchema']}))};}),server[a0_0x115185(0x125)](CallToolRequestSchema,async _0x1a76c3=>{const _0x58e175=a0_0x115185,{name:_0x59ce81,arguments:_0x29cdb8}=_0x1a76c3['params'],_0x4cd604=Date[_0x58e175(0x17a)]();logger[_0x58e175(0xe7)](_0x58e175(0xf4),_0x58e175(0xd0),{'tool':_0x59ce81,'args':_0x59ce81===_0x58e175(0x10a)?{'path':_0x29cdb8?.[_0x58e175(0xde)],'instruction':_0x29cdb8?.[_0x58e175(0x1c0)]||_0x29cdb8?.[_0x58e175(0x176)],'dryRun':_0x29cdb8?.[_0x58e175(0x1ce)]}:_0x29cdb8});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x58e175(0x191),'text':_0x58e175(0x1aa)}],'isError':!![]};if(!MORPH_API_KEY['startsWith'](_0x58e175(0x1dd))&&!MORPH_API_KEY[_0x58e175(0xf6)](_0x58e175(0x18b)))return{'content':[{'type':_0x58e175(0x191),'text':_0x58e175(0x139)}],'isError':!![]};if(DISABLED_TOOLS[_0x58e175(0x12b)](_0x59ce81))return{'content':[{'type':'text','text':_0x58e175(0x1b4)+_0x59ce81+_0x58e175(0x193)}],'isError':![]};switch(_0x59ce81){case TOOL_NAMES['EDIT_FILE']:{const _0x288c4c=_0x29cdb8&&typeof _0x29cdb8==='object'&&_0x58e175(0x176)in _0x29cdb8&&!('instruction'in _0x29cdb8)?{..._0x29cdb8,'instruction':_0x29cdb8['instructions'],'instructions':undefined}:_0x29cdb8,_0x3259c1=MorphEditFileArgsSchema[_0x58e175(0x11c)](_0x288c4c);if(!_0x3259c1[_0x58e175(0x1dc)])throw new Error(_0x58e175(0x101)+_0x3259c1['error']);const _0x4633ea=await validatePath(_0x3259c1[_0x58e175(0x100)][_0x58e175(0xde)]);let _0x5e7c2d=null,_0x2242cb=!![],_0x5ec3f6=null;try{_0x5e7c2d=await a0_0x1029ad[_0x58e175(0x1de)](_0x4633ea,_0x58e175(0x103)),logger[_0x58e175(0xe7)](_0x58e175(0xf4),_0x58e175(0xda),{'path':_0x4633ea,'size_bytes':_0x5e7c2d[_0x58e175(0x1b2)]});}catch(_0x3650de){const _0xcee268=_0x3650de[_0x58e175(0xd7)];_0xcee268===_0x58e175(0x172)?(_0x2242cb=![],_0x5e7c2d='',logger[_0x58e175(0xe7)]('MCP','file_read_complete',{'path':_0x4633ea,'exists':![]})):(_0x5ec3f6=_0x58e175(0xd4)+(_0xcee268||_0x58e175(0x16f))+_0x58e175(0x1ad)+(_0x3650de instanceof Error?_0x3650de[_0x58e175(0x108)]:String(_0x3650de)),logger[_0x58e175(0xec)](_0x58e175(0xf4),'file_read_failed',{'path':_0x4633ea,'error':_0x5ec3f6}),logMcpStderr(_0x58e175(0x152)+_0x5ec3f6));}let _0xeb1794;try{const _0x591b7f=MORPH_API_KEY;if(!_0x591b7f)throw new Error(_0x58e175(0x154));const _0x52bfb6=a0_0x34f0b4['dirname'](_0x4633ea),_0x258c85=a0_0x34f0b4[_0x58e175(0x1be)](_0x4633ea);logger[_0x58e175(0xe7)]('MCP',_0x58e175(0x1d1),{'model':_0x58e175(0x10b),'path':_0x3259c1[_0x58e175(0x100)]['path'],'instruction_len':_0x3259c1[_0x58e175(0x100)][_0x58e175(0x1c0)][_0x58e175(0x1b2)],'code_edit_len':_0x3259c1[_0x58e175(0x100)][_0x58e175(0x174)][_0x58e175(0x1b2)],'original_code_len':_0x5e7c2d?.['length']??0x0,'dry_run':_0x3259c1[_0x58e175(0x100)][_0x58e175(0x1ce)]});const _0x5a0715=Date[_0x58e175(0x17a)](),_0x18ddfa=await executeEditFile({'target_filepath':_0x258c85,'code_edit':_0x3259c1[_0x58e175(0x100)][_0x58e175(0x174)],'instruction':_0x3259c1[_0x58e175(0x100)][_0x58e175(0x1c0)]},{'morphApiKey':_0x591b7f,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x52bfb6,'autoWrite':!_0x3259c1[_0x58e175(0x100)][_0x58e175(0x1ce)],'generateUdiff':![],'debug':![]}),_0x5d39ae=Date['now']()-_0x5a0715;_0xeb1794=_0x18ddfa['completionId'];if(!_0x18ddfa[_0x58e175(0x1dc)])throw new Error(_0x18ddfa[_0x58e175(0xec)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x204720=_0x18ddfa['changes'],_0x2f3b87=_0x58e175(0x1d8)+_0x204720['linesAdded']+_0x58e175(0x1d2)+_0x204720[_0x58e175(0x190)]+_0x58e175(0x1da)+_0x204720[_0x58e175(0x13c)];logger[_0x58e175(0xe7)](_0x58e175(0xf4),_0x58e175(0x1b5),{'tool':_0x58e175(0x10a),'success':!![],'latency_ms':Date['now']()-_0x4cd604,'edit_latency_ms':_0x5d39ae,'changes':{'added':_0x204720[_0x58e175(0x169)],'removed':_0x204720[_0x58e175(0x190)],'modified':_0x204720[_0x58e175(0x13c)]},'completion_id':_0xeb1794});if(_0x3259c1['data'][_0x58e175(0x1ce)])return{'content':[{'type':_0x58e175(0x191),'text':_0x58e175(0x115)+(_0x2242cb?'':'\x20(new\x20file)')+':\x20'+_0x3259c1[_0x58e175(0x100)]['instruction']+_0x58e175(0x1ac)+_0x2f3b87+_0x58e175(0xf2)+_0x3259c1[_0x58e175(0x100)][_0x58e175(0xde)]+'.'}]};return{'content':[{'type':_0x58e175(0x191),'text':_0x58e175(0x113)+(_0x2242cb?_0x58e175(0x114):_0x58e175(0x1c3))+':\x20'+_0x3259c1[_0x58e175(0x100)]['instruction']+_0x58e175(0x1ac)+_0x2f3b87+'.\x20Path:\x20'+_0x3259c1[_0x58e175(0x100)][_0x58e175(0xde)]+'.'}]};}catch(_0x323cfe){const _0x31906c=handleMorphAPIError(_0x323cfe);if(_0x31906c)return logger[_0x58e175(0xec)]('MCP',_0x58e175(0x116),{'tool':_0x58e175(0x10a),'error':_0x58e175(0x186),'latency_ms':Date['now']()-_0x4cd604}),_0x31906c;const _0x42211b=_0x323cfe instanceof Error?_0x323cfe['message']:String(_0x323cfe);return logger['error'](_0x58e175(0xf4),_0x58e175(0x116),{'tool':_0x58e175(0x10a),'error':_0x42211b,'path':_0x3259c1[_0x58e175(0x100)][_0x58e175(0xde)],'validated_path':_0x4633ea,'latency_ms':Date[_0x58e175(0x17a)]()-_0x4cd604,'stack':_0x323cfe instanceof Error?_0x323cfe[_0x58e175(0x131)]:undefined}),reportMorphError({'error_message':_0x42211b,'error_type':_0x323cfe instanceof Error?_0x323cfe[_0x58e175(0x195)][_0x58e175(0xea)]:_0x58e175(0x133),'context':{'tool':'edit_file','completion_id':_0xeb1794,'file_path':_0x3259c1['data'][_0x58e175(0xde)],'validated_path':_0x4633ea,'instruction':_0x3259c1[_0x58e175(0x100)][_0x58e175(0x1c0)],'model':MORPH_LARGE_APPLY?_0x58e175(0x1b7):_0x58e175(0x10b),'dry_run':_0x3259c1[_0x58e175(0x100)][_0x58e175(0x1ce)],'file_exists':_0x2242cb,'file_read_error':_0x5ec3f6,'file_readable':_0x5e7c2d!==null,'request_content':{'path':_0x3259c1['data'][_0x58e175(0xde)],'code_edit':_0x3259c1[_0x58e175(0x100)][_0x58e175(0x174)],'instruction':_0x3259c1['data']['instruction'],'original_code':_0x5e7c2d!==null?_0x5e7c2d[_0x58e175(0x1b2)]>0xc350?_0x5e7c2d[_0x58e175(0x1b3)](0x0,0xc350)+_0x58e175(0x160)+_0x5e7c2d[_0x58e175(0x1b2)]+'\x20chars)':_0x5e7c2d:_0x58e175(0x144)+(_0x5ec3f6||_0x58e175(0x14c))+']','original_code_length':_0x5e7c2d?.['length']??0x0,'model':MORPH_LARGE_APPLY?_0x58e175(0x1b7):_0x58e175(0x10b),'dry_run':_0x3259c1[_0x58e175(0x100)]['dryRun']}},'stack_trace':_0x323cfe instanceof Error?_0x323cfe[_0x58e175(0x131)]:undefined,'source':_0x58e175(0x14b)})[_0x58e175(0x179)](()=>{}),{'content':[{'type':_0x58e175(0x191),'text':_0x58e175(0x119)+_0x42211b}],'isError':!![]};}}case TOOL_NAMES[_0x58e175(0xdd)]:{const _0x1562f0=WarpGrepArgsSchema['safeParse'](_0x29cdb8);if(!_0x1562f0[_0x58e175(0x1dc)])return{'content':[{'type':_0x58e175(0x191),'text':'Invalid\x20arguments:\x20'+_0x1562f0[_0x58e175(0xec)]}],'isError':!![]};const _0x1742a0=_0x9762b8=>{const _0xe8e014=_0x58e175,_0x14c48c=[];for(const _0x46e9f2 of _0x9762b8||[]){if(_0x46e9f2['role']===_0xe8e014(0x162)&&Array['isArray'](_0x46e9f2[_0xe8e014(0x106)]))for(const _0xa38ad1 of _0x46e9f2[_0xe8e014(0x106)]){try{const _0x2c47d1=_0xa38ad1['function']?.[_0xe8e014(0xea)],_0x5f2522=JSON[_0xe8e014(0x12a)](_0xa38ad1[_0xe8e014(0x105)]?.[_0xe8e014(0xeb)]||'{}');if(_0x2c47d1==='grep_search')_0x14c48c[_0xe8e014(0x110)](_0xe8e014(0x1c7)+_0x5f2522[_0xe8e014(0xfe)]+'\x27\x20'+(_0x5f2522[_0xe8e014(0xde)]||'.'));else{if(_0x2c47d1===_0xe8e014(0x127))_0x14c48c[_0xe8e014(0x110)](_0xe8e014(0x165)+_0x5f2522[_0xe8e014(0xde)]);else{if(_0x2c47d1===_0xe8e014(0xdc))_0x14c48c['push'](_0xe8e014(0x159)+(_0x5f2522[_0xe8e014(0x1a4)]||'.'));else{if(_0x2c47d1===_0xe8e014(0xcb))_0x14c48c[_0xe8e014(0x110)](_0xe8e014(0xfd)+_0x5f2522[_0xe8e014(0xfe)]+'\x27\x20'+(_0x5f2522[_0xe8e014(0xde)]||'.'));else _0x2c47d1===_0xe8e014(0x1cd)&&_0x14c48c[_0xe8e014(0x110)]('finish');}}}}catch{}}}return _0x14c48c;},_0xcd7833=_0x2b20b6=>{const _0x4a68d0=_0x58e175,_0x3b4e61=[];if(!_0x2b20b6||!Array[_0x4a68d0(0xd5)](_0x2b20b6))return _0x3b4e61;const _0x4c733d=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x4a68d0(0x17d),'tool':_0x4a68d0(0x127)},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x4a68d0(0x127)},{'pattern':/\[READ ERROR\]/,'error_type':_0x4a68d0(0x1e1),'tool':_0x4a68d0(0x127)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x4a68d0(0x16d),'tool':'read'},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x4a68d0(0x104),'tool':_0x4a68d0(0x1db)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':'RipgrepNotAvailable','tool':_0x4a68d0(0x1db)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x4a68d0(0x16d),'tool':_0x4a68d0(0x127)},{'pattern':/\[SYMLINK\]/,'error_type':_0x4a68d0(0x184),'tool':'read'},{'pattern':/not a text file/,'error_type':_0x4a68d0(0x16d),'tool':_0x4a68d0(0x127)},{'pattern':/symbolic link/,'error_type':_0x4a68d0(0x184),'tool':'read'},{'pattern':/Error reading file:/,'error_type':_0x4a68d0(0x1e1),'tool':_0x4a68d0(0x127)},{'pattern':/status="error"/,'error_type':_0x4a68d0(0x1c6),'tool':_0x4a68d0(0x16f)}];let _0x540daf=0x0;for(const _0x5230df of _0x2b20b6){_0x5230df[_0x4a68d0(0x150)]===_0x4a68d0(0x162)&&Array['isArray'](_0x5230df[_0x4a68d0(0x106)])&&_0x540daf++;const _0x5a57c3=_0x5230df[_0x4a68d0(0x1b9)];if((_0x5230df[_0x4a68d0(0x150)]===_0x4a68d0(0xc6)||_0x5230df[_0x4a68d0(0x150)]===_0x4a68d0(0x111))&&_0x5a57c3&&typeof _0x5a57c3===_0x4a68d0(0x189))for(const {pattern:_0x3cf639,error_type:_0x51a4a1,tool:_0x5b47fa}of _0x4c733d){const _0x13906d=_0x5a57c3[_0x4a68d0(0x178)](new RegExp(_0x3cf639[_0x4a68d0(0x1c8)],'g'));if(_0x13906d)for(const _0x34db93 of _0x13906d){const _0x115f2c=_0x5a57c3[_0x4a68d0(0x19f)](_0x34db93),_0x3d8b7c=_0x5a57c3[_0x4a68d0(0x1b3)](_0x115f2c,Math['min'](_0x115f2c+0xc8,_0x5a57c3[_0x4a68d0(0x1b2)]));_0x3b4e61['push']({'tool':_0x5b47fa,'error_type':_0x51a4a1,'error_message':_0x3d8b7c[_0x4a68d0(0x145)]('\x0a')[0x0],'turn':_0x540daf});}}}return _0x3b4e61;};try{const _0x55771b=a0_0x34f0b4[_0x58e175(0x1c4)](_0x1562f0[_0x58e175(0x100)][_0x58e175(0x1cb)]),_0x39280b=_0x1562f0['data'][_0x58e175(0x13d)],_0xf2abf1=_0x39280b===_0x58e175(0x10c)?{'allowNames':[_0x58e175(0x10c)]}:undefined,_0x5bb045=new LocalRipgrepProvider(_0x55771b,undefined,_0xf2abf1);logger['debug'](_0x58e175(0xf4),_0x58e175(0x138),{'type':_0x58e175(0x137),'repo_root':_0x55771b,'search_type':_0x39280b||_0x58e175(0xd9)}),logger['debug'](_0x58e175(0xf4),'warp_grep_start',{'query':_0x1562f0[_0x58e175(0x100)]['search_string'],'repo_root':_0x55771b,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x1de419=Date[_0x58e175(0x17a)](),_0x2a56a6=await runWarpGrep({'searchTerm':_0x1562f0[_0x58e175(0x100)]['search_string'],'repoRoot':_0x55771b,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x5bb045,'search_type':_0x39280b}),_0x358f10=Date[_0x58e175(0x17a)]()-_0x1de419,_0x12d79f=_0x2a56a6[_0x58e175(0x1cd)]?.[_0x58e175(0x1bc)]?.[_0x58e175(0x1ba)]?.['length']??0x0;logger[_0x58e175(0xe7)]('MCP',_0x58e175(0x19d),{'termination':_0x2a56a6[_0x58e175(0x1d4)],'turns':_0x2a56a6[_0x58e175(0x1d6)]?.[_0x58e175(0xef)]??0x0,'files_found':_0x12d79f,'latency_ms':_0x358f10});const _0x5c2440=_0xcd7833(_0x2a56a6[_0x58e175(0x13b)]);_0x5c2440[_0x58e175(0x1b2)]>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x5c2440[_0x58e175(0x1b2)]+'\x20error(s)','error_type':'SubToolError','level':'warn','tool':_0x58e175(0xed),'context':{'repo_path':_0x1562f0[_0x58e175(0x100)][_0x58e175(0x1cb)],'query':_0x1562f0[_0x58e175(0x100)][_0x58e175(0x112)],'model':_0x58e175(0x19b),'termination_reason':_0x2a56a6[_0x58e175(0x1d4)],'sub_tool_errors':_0x5c2440,'timings':_0x2a56a6[_0x58e175(0x1d6)],'tool_calls':_0x1742a0(_0x2a56a6[_0x58e175(0x13b)]),'messages':_0x2a56a6[_0x58e175(0x13b)]?.[_0x58e175(0xd3)](_0x22b9f2=>({'role':_0x22b9f2['role'],'content':_0x22b9f2['content'],..._0x22b9f2[_0x58e175(0x106)]?{'tool_calls':_0x22b9f2[_0x58e175(0x106)][_0x58e175(0x1b2)]}:{},..._0x22b9f2[_0x58e175(0x17b)]?{'tool_call_id':_0x22b9f2[_0x58e175(0x17b)]}:{}}))},'source':'mcp-filesystem'})['catch'](()=>{});let _0x79398='';if(_0x2a56a6[_0x58e175(0x1d4)]==='completed'&&_0x2a56a6[_0x58e175(0x1cd)]?.['metadata']?.[_0x58e175(0x1ba)]){const _0x1b7b0e=_0x2a56a6[_0x58e175(0x1cd)][_0x58e175(0x1bc)][_0x58e175(0x1ba)];if(_0x1b7b0e[_0x58e175(0x1b2)]===0x0)return _0x79398=_0x2a56a6['finish']['payload']||_0x58e175(0x155),{'content':[{'type':_0x58e175(0x191),'text':_0x79398}]};const _0x3927e6=[],_0x387642=[_0x58e175(0x1a9)];for(const _0x2182fc of _0x2a56a6['messages']){if(_0x2182fc[_0x58e175(0x150)]===_0x58e175(0x162)&&Array['isArray'](_0x2182fc['tool_calls']))for(const _0x2a1ab8 of _0x2182fc[_0x58e175(0x106)]){try{const _0x3e9cd0=_0x2a1ab8[_0x58e175(0x105)]?.[_0x58e175(0xea)],_0x179627=JSON[_0x58e175(0x12a)](_0x2a1ab8[_0x58e175(0x105)]?.[_0x58e175(0xeb)]||'{}');if(_0x3e9cd0==='grep_search')_0x387642['push']('-\x20Grepped\x20\x27'+_0x179627[_0x58e175(0xfe)]+'\x27\x20in\x20`'+(_0x179627['path']||'.')+'`');else{if(_0x3e9cd0===_0x58e175(0x127))_0x387642['push']('-\x20Read\x20file\x20`'+_0x179627['path']+'`');else{if(_0x3e9cd0===_0x58e175(0xdc))_0x387642['push']('-\x20Listed\x20directory\x20`'+(_0x179627[_0x58e175(0x1a4)]||'.')+'`');else _0x3e9cd0===_0x58e175(0xcb)&&_0x387642[_0x58e175(0x110)](_0x58e175(0xe9)+_0x179627[_0x58e175(0xfe)]+_0x58e175(0x17f)+(_0x179627[_0x58e175(0xde)]||'.')+'`');}}}catch{}}}_0x3927e6[_0x58e175(0x110)](_0x387642[_0x58e175(0xcd)]('\x0a'));const _0xf22443=['',_0x58e175(0x109)];for(const _0x223b56 of _0x1b7b0e){if(_0x223b56[_0x58e175(0x13a)]==='*')_0xf22443[_0x58e175(0x110)]('-\x20'+_0x223b56[_0x58e175(0xde)]+':*');else{if(Array['isArray'](_0x223b56[_0x58e175(0x13a)])){const _0x5652d1=_0x223b56[_0x58e175(0x13a)][_0x58e175(0xd3)](([_0xeab272,_0x24daf1])=>{if(_0xeab272===_0x24daf1)return''+_0xeab272;return _0xeab272+'-'+_0x24daf1;});_0xf22443['push']('-\x20'+_0x223b56[_0x58e175(0xde)]+':'+_0x5652d1[_0x58e175(0xcd)](','));}else _0xf22443[_0x58e175(0x110)]('-\x20'+_0x223b56['path']+':*');}}_0xf22443[_0x58e175(0x110)](''),_0x3927e6[_0x58e175(0x110)](_0xf22443['join']('\x0a')),_0x3927e6[_0x58e175(0x110)](_0x58e175(0x10d));const _0x560530=[],_0x19c1f9=[];for(const _0xead50 of _0x1b7b0e){let _0x410d14=a0_0x34f0b4[_0x58e175(0x1c4)](_0x1562f0[_0x58e175(0x100)][_0x58e175(0x1cb)],_0xead50[_0x58e175(0xde)]),_0x19784a=null,_0x4f76b0=null;try{_0x19784a=await a0_0x1029ad['readFile'](_0x410d14,{'encoding':'utf-8'});}catch(_0x39fd61){const _0x3c8145=fixPathRepetition(_0x410d14);if(_0x3c8145)try{_0x19784a=await a0_0x1029ad['readFile'](_0x3c8145,{'encoding':_0x58e175(0x103)}),_0x410d14=_0x3c8145;}catch{_0x4f76b0=_0x39fd61 instanceof Error?_0x39fd61:new Error(String(_0x39fd61));}else _0x4f76b0=_0x39fd61 instanceof Error?_0x39fd61:new Error(String(_0x39fd61));}if(_0x19784a!==null){const _0x1daa8c=_0x19784a[_0x58e175(0x145)](/\r?\n/),_0x355824=[];if(_0xead50[_0x58e175(0x13a)]==='*'||!Array['isArray'](_0xead50['lines']))for(let _0x520c3e=0x1;_0x520c3e<=_0x1daa8c['length'];_0x520c3e++){const _0x114b31=_0x1daa8c[_0x520c3e-0x1];_0x355824[_0x58e175(0x110)](_0x520c3e+'|\x20'+_0x114b31);}else for(const [_0x53b435,_0x2f7bcb]of _0xead50[_0x58e175(0x13a)]){_0x355824[_0x58e175(0x1b2)]>0x0&&_0x355824['push']('');for(let _0x56a443=_0x53b435;_0x56a443<=_0x2f7bcb&&_0x56a443<=_0x1daa8c['length'];_0x56a443++){const _0x2ced7c=_0x1daa8c[_0x56a443-0x1];_0x355824[_0x58e175(0x110)](_0x56a443+'|\x20'+_0x2ced7c);}}_0x19c1f9[_0x58e175(0x110)]({'path':_0xead50[_0x58e175(0xde)],'content':_0x355824[_0x58e175(0xcd)]('\x0a')});}else _0x560530[_0x58e175(0x110)](_0x58e175(0x182)+_0xead50['path']+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x4f76b0?.[_0x58e175(0x108)]||'Unknown\x20error')+'\x0a</file>');}try{const _0x59a8bd=await compactFileContexts(_0x19c1f9,_0x1562f0[_0x58e175(0x100)][_0x58e175(0x112)],MORPH_API_KEY,MORPH_API_URL);for(const _0x3a0a94 of _0x59a8bd){_0x560530[_0x58e175(0x110)](_0x58e175(0x182)+_0x3a0a94[_0x58e175(0xde)]+_0x58e175(0xf8)+_0x3a0a94['content']+_0x58e175(0xc8));}}catch(_0x56bc60){logger[_0x58e175(0xe0)]('MCP','compaction_failed',{'error':_0x56bc60 instanceof Error?_0x56bc60[_0x58e175(0x108)]:String(_0x56bc60),'files_count':_0x19c1f9[_0x58e175(0x1b2)]});for(const _0x2534a7 of _0x19c1f9){_0x560530[_0x58e175(0x110)](_0x58e175(0x182)+_0x2534a7[_0x58e175(0xde)]+_0x58e175(0xf8)+_0x2534a7[_0x58e175(0x1b9)]+_0x58e175(0xc8));}}_0x3927e6['push'](_0x560530[_0x58e175(0xcd)]('\x0a\x0a')),_0x79398=_0x3927e6['join']('\x0a');const _0x51f6c4=_0x2a56a6['errors']?.[_0x58e175(0x188)](_0x594507=>_0x594507['message']?.[_0x58e175(0xf6)]('File\x20read\x20error:'))||[];if(_0x51f6c4[_0x58e175(0x1b2)]>0x0){const _0x45c8f5=_0x51f6c4[_0x58e175(0xd3)](_0x42727a=>_0x42727a[_0x58e175(0x108)])['join'](';\x20');reportMorphError({'error_message':_0x45c8f5,'error_type':'FileReadError','context':{'tool':_0x58e175(0xed),'repo_path':_0x1562f0['data'][_0x58e175(0x1cb)],'query':_0x1562f0[_0x58e175(0x100)][_0x58e175(0x112)],'model':_0x58e175(0x19b),'termination_reason':'completed_with_file_errors','error_count':_0x51f6c4[_0x58e175(0x1b2)],'is_timeout':![],'timings':_0x2a56a6[_0x58e175(0x1d6)],'files_attempted':_0x1b7b0e['map'](_0x1fce5c=>({'path':_0x1fce5c['path'],'lines':_0x1fce5c[_0x58e175(0x13a)]})),'tool_calls':_0x1742a0(_0x2a56a6[_0x58e175(0x13b)]),'messages':_0x2a56a6[_0x58e175(0x13b)]?.[_0x58e175(0xd3)](_0x3f3246=>({'role':_0x3f3246[_0x58e175(0x150)],'content':_0x3f3246[_0x58e175(0x1b9)],..._0x3f3246['tool_calls']?{'tool_calls':_0x3f3246[_0x58e175(0x106)]['length']}:{},..._0x3f3246[_0x58e175(0x17b)]?{'tool_call_id':_0x3f3246[_0x58e175(0x17b)]}:{}})),'request_content':{'query':_0x1562f0['data'][_0x58e175(0x112)],'repo_path':_0x1562f0[_0x58e175(0x100)]['repo_path'],'repoRoot':a0_0x34f0b4['resolve'](_0x1562f0[_0x58e175(0x100)][_0x58e175(0x1cb)]),'model':_0x58e175(0x19b)}},'source':'mcp-filesystem'})['catch'](()=>{});}}else{if(_0x2a56a6[_0x58e175(0x1d4)]===_0x58e175(0xc5)&&_0x2a56a6[_0x58e175(0xcf)][_0x58e175(0x1b2)]>0x0){const _0x56e2c3=_0x2a56a6['errors']['map'](_0x20386a=>_0x20386a['message'])[_0x58e175(0xcd)](';\x20');_0x79398=_0x58e175(0x1ae)+_0x56e2c3;const _0x2e550b=_0x56e2c3[_0x58e175(0x124)]()[_0x58e175(0xe4)](_0x58e175(0x123))||_0x56e2c3[_0x58e175(0x124)]()['includes'](_0x58e175(0x18c))||_0x56e2c3[_0x58e175(0x124)]()[_0x58e175(0xe4)](_0x58e175(0x1e2)),_0x343fba=_0x2a56a6[_0x58e175(0x1cd)]?.[_0x58e175(0x1bc)]?.[_0x58e175(0x1ba)],_0x31c4d7=_0x2a56a6[_0x58e175(0xcf)][0x0];reportMorphError({'error_message':_0x56e2c3,'error_type':_0x2e550b?'TimeoutError':_0x31c4d7?.[_0x58e175(0x195)]?.[_0x58e175(0xea)]||_0x58e175(0x196),'context':{'tool':_0x58e175(0xed),'repo_path':_0x1562f0[_0x58e175(0x100)]['repo_path'],'query':_0x1562f0[_0x58e175(0x100)][_0x58e175(0x112)],'model':_0x58e175(0x19b),'termination_reason':_0x2a56a6[_0x58e175(0x1d4)],'error_count':_0x2a56a6[_0x58e175(0xcf)][_0x58e175(0x1b2)],'is_timeout':_0x2e550b,'timings':_0x2a56a6[_0x58e175(0x1d6)],'files_attempted':_0x343fba?.['map'](_0x315895=>({'path':_0x315895['path'],'lines':_0x315895[_0x58e175(0x13a)]})),'tool_calls':_0x1742a0(_0x2a56a6[_0x58e175(0x13b)]),'messages':_0x2a56a6[_0x58e175(0x13b)]?.[_0x58e175(0xd3)](_0x1f87e3=>({'role':_0x1f87e3['role'],'content':_0x1f87e3[_0x58e175(0x1b9)],..._0x1f87e3[_0x58e175(0x106)]?{'tool_calls':_0x1f87e3['tool_calls'][_0x58e175(0x1b2)]}:{},..._0x1f87e3[_0x58e175(0x17b)]?{'tool_call_id':_0x1f87e3['tool_call_id']}:{}})),'request_content':{'query':_0x1562f0[_0x58e175(0x100)][_0x58e175(0x112)],'repo_path':_0x1562f0[_0x58e175(0x100)][_0x58e175(0x1cb)],'repoRoot':a0_0x34f0b4[_0x58e175(0x1c4)](_0x1562f0[_0x58e175(0x100)][_0x58e175(0x1cb)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x31c4d7?.[_0x58e175(0x131)]||undefined,'source':'mcp-filesystem'})[_0x58e175(0x179)](()=>{});}else _0x79398=_0x58e175(0x18a);}return{'content':[{'type':_0x58e175(0x191),'text':_0x79398}]};}catch(_0x2b65e7){const _0x3ce754=handleMorphAPIError(_0x2b65e7);if(_0x3ce754)return logger[_0x58e175(0xec)](_0x58e175(0xf4),_0x58e175(0x116),{'tool':_0x58e175(0xed),'error':_0x58e175(0x186),'latency_ms':Date[_0x58e175(0x17a)]()-_0x4cd604}),_0x3ce754;const _0x29bb31=_0x2b65e7 instanceof Error?_0x2b65e7[_0x58e175(0x108)]:String(_0x2b65e7);logger['error']('MCP','tool_call_error',{'tool':_0x58e175(0xed),'error':_0x29bb31,'repo_path':_0x1562f0[_0x58e175(0x100)][_0x58e175(0x1cb)],'query':_0x1562f0[_0x58e175(0x100)]['search_string'],'latency_ms':Date['now']()-_0x4cd604});const _0x6e1abb=_0x29bb31[_0x58e175(0x124)]()[_0x58e175(0xe4)](_0x58e175(0x123))||_0x29bb31[_0x58e175(0x124)]()[_0x58e175(0xe4)](_0x58e175(0x18c))||_0x29bb31[_0x58e175(0x124)]()[_0x58e175(0xe4)](_0x58e175(0x1e2))||_0x2b65e7 instanceof Error&&_0x2b65e7['name']===_0x58e175(0x1a3);return reportMorphError({'error_message':_0x29bb31,'error_type':_0x6e1abb?_0x58e175(0x1a3):_0x2b65e7 instanceof Error?_0x2b65e7['constructor'][_0x58e175(0xea)]:_0x58e175(0x133),'context':{'tool':_0x58e175(0xed),'repo_path':_0x1562f0[_0x58e175(0x100)][_0x58e175(0x1cb)],'query':_0x1562f0['data'][_0x58e175(0x112)],'model':_0x58e175(0x19b),'is_timeout':_0x6e1abb,'exception_phase':_0x58e175(0xe1),'request_content':{'query':_0x1562f0[_0x58e175(0x100)]['search_string'],'repo_path':_0x1562f0[_0x58e175(0x100)]['repo_path'],'repoRoot':a0_0x34f0b4['resolve'](_0x1562f0['data'][_0x58e175(0x1cb)]),'model':_0x58e175(0x19b)}},'stack_trace':_0x2b65e7 instanceof Error?_0x2b65e7['stack']:undefined,'source':_0x58e175(0x14b)})[_0x58e175(0x179)](()=>{}),{'content':[{'type':_0x58e175(0x191),'text':_0x58e175(0xfb)+_0x29bb31}],'isError':![]};}}case TOOL_NAMES[_0x58e175(0x140)]:{const _0x250c1e=WarpGrepGitHubArgsSchema[_0x58e175(0x11c)](_0x29cdb8);if(!_0x250c1e[_0x58e175(0x1dc)])return{'content':[{'type':_0x58e175(0x191),'text':'Invalid\x20arguments:\x20'+_0x250c1e['error']}],'isError':!![]};const _0x2d0331=_0x250c1e[_0x58e175(0x100)][_0x58e175(0x13f)]||_0x250c1e[_0x58e175(0x100)][_0x58e175(0x1df)];if(!_0x2d0331)return{'content':[{'type':_0x58e175(0x191),'text':_0x58e175(0x11b)}],'isError':!![]};const _0x11dac7=MORPH_API_KEY;if(!_0x11dac7)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x4c9382=Date['now']();logger['debug'](_0x58e175(0xf4),_0x58e175(0x1c9),{'identifier':_0x2d0331,'query':_0x250c1e[_0x58e175(0x100)][_0x58e175(0x112)],'branch':_0x250c1e['data'][_0x58e175(0x161)]});try{const _0x421a7d=new WarpGrepClient({'morphApiKey':_0x11dac7,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x5df4f6=await _0x421a7d[_0x58e175(0x15e)]({'searchTerm':_0x250c1e[_0x58e175(0x100)][_0x58e175(0x112)],'github':_0x2d0331,'branch':_0x250c1e[_0x58e175(0x100)]['branch']}),_0x3f47aa=Date[_0x58e175(0x17a)]()-_0x4c9382;logMcpStderr(_0x58e175(0x1bd)+_0x3f47aa+'ms.\x20Success:\x20'+_0x5df4f6[_0x58e175(0x1dc)]);const _0x2b59e4=formatResult(_0x5df4f6);return{'content':[{'type':_0x58e175(0x191),'text':_0x2b59e4}]};}catch(_0x3bab76){const _0x2b0abb=handleMorphAPIError(_0x3bab76);if(_0x2b0abb)return _0x2b0abb;const _0x54b352=Date['now']()-_0x4c9382,_0x2fbaa2=_0x3bab76 instanceof Error?_0x3bab76[_0x58e175(0x108)]:String(_0x3bab76);return logMcpStderr(_0x58e175(0x1e4)+_0x54b352+'ms:',_0x2fbaa2),reportMorphError({'error_message':_0x2fbaa2,'error_type':_0x3bab76 instanceof Error?_0x3bab76['constructor'][_0x58e175(0xea)]:'UnknownError','context':{'tool':_0x58e175(0x1cc),'github_url':_0x2d0331,'search_string':_0x250c1e['data'][_0x58e175(0x112)],'branch':_0x250c1e[_0x58e175(0x100)][_0x58e175(0x161)]},'stack_trace':_0x3bab76 instanceof Error?_0x3bab76['stack']:undefined,'source':_0x58e175(0x14b),'tool':'github_codebase_search','latency_ms':_0x54b352})[_0x58e175(0x179)](()=>{}),{'content':[{'type':_0x58e175(0x191),'text':_0x58e175(0x18f)+_0x2fbaa2}],'isError':![]};}}default:throw new Error(_0x58e175(0x1cf)+_0x59ce81);}}catch(_0x769e17){const _0x5268f=_0x769e17 instanceof Error?_0x769e17['message']:String(_0x769e17);return reportMorphError({'error_message':_0x5268f,'error_type':_0x769e17 instanceof Error?_0x769e17['constructor'][_0x58e175(0xea)]:_0x58e175(0x133),'context':{'tool':_0x59ce81,'arguments':_0x29cdb8?JSON['stringify'](_0x29cdb8)['substring'](0x0,0x1f4):undefined,'mcp_server_version':_0x58e175(0x146)},'stack_trace':_0x769e17 instanceof Error?_0x769e17[_0x58e175(0x131)]:undefined,'source':_0x58e175(0x14b)})[_0x58e175(0x179)](()=>{}),{'content':[{'type':_0x58e175(0x191),'text':_0x58e175(0x1ae)+_0x5268f}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x45acc0){const _0x69c1b0=a0_0x115185,_0x2fa688=await getValidRootDirectories(_0x45acc0);if(_0x2fa688[_0x69c1b0(0x1b2)]>0x0)allowedDirectories=[..._0x2fa688],logMcpStderr('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0x2fa688[_0x69c1b0(0x1b2)]+_0x69c1b0(0x1a6));else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x841618=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x841618&&(allowedDirectories=[_0x841618],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x841618));}catch(_0x19a56f){logMcpStderr(_0x69c1b0(0x1c5)+_0x19a56f);}}}server[a0_0x115185(0x192)](RootsListChangedNotificationSchema,async()=>{const _0x17f68d=a0_0x115185;try{const _0x431209=await server[_0x17f68d(0x19c)]();_0x431209&&_0x17f68d(0xc1)in _0x431209&&await updateAllowedDirectoriesFromRoots(_0x431209[_0x17f68d(0xc1)]);}catch(_0x4fd403){logMcpStderr(_0x17f68d(0x187),_0x4fd403 instanceof Error?_0x4fd403[_0x17f68d(0x108)]:String(_0x4fd403));}}),server['oninitialized']=async()=>{const _0x467d47=a0_0x115185,_0x3a4b72=server[_0x467d47(0x14d)]();if(_0x3a4b72?.['roots'])try{const _0x58e08e=await server[_0x467d47(0x19c)]();_0x58e08e&&'roots'in _0x58e08e?await updateAllowedDirectoriesFromRoots(_0x58e08e[_0x467d47(0xc1)]):logMcpStderr(_0x467d47(0xfc));}catch(_0x466875){logMcpStderr(_0x467d47(0x167),_0x466875 instanceof Error?_0x466875[_0x467d47(0x108)]:String(_0x466875));}else{if(allowedDirectories[_0x467d47(0x1b2)]>0x0)logMcpStderr(_0x467d47(0x17e),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x467d47(0x11a));else throw new Error('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.');}}};async function runServer(){const _0x163e48=a0_0x115185,_0xfca909=new StdioServerTransport();await server['connect'](_0xfca909),logMcpStderr(_0x163e48(0x16c)),allowedDirectories[_0x163e48(0x1b2)]===0x0&&logMcpStderr(_0x163e48(0xd8));}runServer()[a0_0x115185(0x179)](_0x48cf11=>{const _0x32b355=a0_0x115185;logMcpStderr('Fatal\x20error\x20running\x20server:',_0x48cf11),process[_0x32b355(0x177)](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var a1_0x51b151=a1_0x5f50;(function(_0x28513b,_0x77e937){var _0x43dac2=a1_0x5f50,_0xeec9f9=_0x28513b();while(!![]){try{var _0x508753=parseInt(_0x43dac2(0x6b))/0x1*(parseInt(_0x43dac2(0x7d))/0x2)+parseInt(_0x43dac2(0x71))/0x3+-parseInt(_0x43dac2(0x7a))/0x4*(-parseInt(_0x43dac2(0x76))/0x5)+-parseInt(_0x43dac2(0x7f))/0x6*(parseInt(_0x43dac2(0x6f))/0x7)+parseInt(_0x43dac2(0x70))/0x8*(parseInt(_0x43dac2(0x6d))/0x9)+parseInt(_0x43dac2(0x7c))/0xa+-parseInt(_0x43dac2(0x6c))/0xb;if(_0x508753===_0x77e937)break;else _0xeec9f9['push'](_0xeec9f9['shift']());}catch(_0x468ad4){_0xeec9f9['push'](_0xeec9f9['shift']());}}}(a1_0x4b58,0xd9a7a));import a1_0xd7c63c from'os';import{logger}from'./logger.js';export function getOperatingSystemType(_0x10e622=a1_0xd7c63c[a1_0x51b151(0x75)]()){var _0x36d34d=a1_0x51b151;switch(_0x10e622){case _0x36d34d(0x74):return _0x36d34d(0x77);case _0x36d34d(0x73):return _0x36d34d(0x7b);case _0x36d34d(0x69):return _0x36d34d(0x6e);default:return _0x36d34d(0x78);}}export function formatMcpLogMessage(_0x34a52c,_0x286d45=a1_0xd7c63c[a1_0x51b151(0x75)]()){var _0x532e79=a1_0x51b151;return _0x532e79(0x7e)+getOperatingSystemType(_0x286d45)+']\x20'+_0x34a52c;}export function logMcpStderr(_0xac6e09,..._0x174a80){var _0x32a22f=a1_0x51b151;console[_0x32a22f(0x72)](formatMcpLogMessage(_0xac6e09),..._0x174a80),logger[_0x32a22f(0x6a)]('MCP',_0xac6e09,_0x174a80[_0x32a22f(0x79)]?{'args':_0x174a80['map'](_0x24ad14=>String(_0x24ad14))}:undefined);}function a1_0x5f50(_0x496652,_0x32b1c4){_0x496652=_0x496652-0x69;var _0x4b5841=a1_0x4b58();var _0x5f5087=_0x4b5841[_0x496652];return _0x5f5087;}function a1_0x4b58(){var _0x36eda4=['linux','info','832267hzvNTl','41508137eRWEul','9DbsaUo','Linux','763oqrmBD','3352984ndlBKu','5114826PNbxAQ','error','win32','darwin','platform','13010JmvGYB','macOS','Unknown','length','596ODcxcg','Windows','5485250okXseK','4QdOkMx','[os=','3294xUuhqm'];a1_0x4b58=function(){return _0x36eda4;};return a1_0x4b58();}
|
package/dist/logger.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
function a2_0x5061(){const _0x3f83c9=['debug','48TVGRtW','45sKPvCc','1801940Vxmafd','info','11105ExmgMg','402670WrPDWM','isEnabled','60TNBxqr','_log','80231492yfHnJd','toUpperCase','stringify','fileStream','enable','4729356xDJuyH',']\x20[','799608ygrHjp','warn','148198EseryC','enabled','MORPH_DEBUG','MORPH_LOG_FILE','env','error','3498pnOLdV'];a2_0x5061=function(){return _0x3f83c9;};return a2_0x5061();}const a2_0x3f7829=a2_0x21ab;(function(_0x50fc11,_0x497981){const _0x423f6b=a2_0x21ab,_0x3494d1=_0x50fc11();while(!![]){try{const _0x23775e=-parseInt(_0x423f6b(0x1af))/0x1+-parseInt(_0x423f6b(0x1b1))/0x2*(parseInt(_0x423f6b(0x1a6))/0x3)+-parseInt(_0x423f6b(0x1ad))/0x4+-parseInt(_0x423f6b(0x1bd))/0x5*(parseInt(_0x423f6b(0x1b7))/0x6)+-parseInt(_0x423f6b(0x1bb))/0x7*(parseInt(_0x423f6b(0x1b9))/0x8)+parseInt(_0x423f6b(0x1ba))/0x9*(-parseInt(_0x423f6b(0x1be))/0xa)+parseInt(_0x423f6b(0x1a8))/0xb;if(_0x23775e===_0x497981)break;else _0x3494d1['push'](_0x3494d1['shift']());}catch(_0x2a802c){_0x3494d1['push'](_0x3494d1['shift']());}}}(a2_0x5061,0xc0a9b));import{createWriteStream}from'fs';class MorphLogger{['enabled'];[a2_0x3f7829(0x1ab)];constructor(){const _0x343d73=a2_0x3f7829;this['enabled']=process['env'][_0x343d73(0x1b3)]==='1'||!!process[_0x343d73(0x1b5)][_0x343d73(0x1b4)];const _0x38b15a=process[_0x343d73(0x1b5)]['MORPH_LOG_FILE'];this[_0x343d73(0x1ab)]=_0x38b15a?createWriteStream(_0x38b15a,{'flags':'a'}):null;}[a2_0x3f7829(0x1b8)](_0x47295a,_0x4f4762,_0x23f3f1){const _0x2d0739=a2_0x3f7829;this['_log'](_0x2d0739(0x1b8),_0x47295a,_0x4f4762,_0x23f3f1);}[a2_0x3f7829(0x1bc)](_0x546a4b,_0xa35cae,_0x737d26){const _0x39a8b6=a2_0x3f7829;this[_0x39a8b6(0x1a7)]('info',_0x546a4b,_0xa35cae,_0x737d26);}[a2_0x3f7829(0x1b0)](_0x3444e0,_0x5cc221,_0x1a7614){const _0x204283=a2_0x3f7829;this[_0x204283(0x1a7)](_0x204283(0x1b0),_0x3444e0,_0x5cc221,_0x1a7614);}['error'](_0x30f112,_0x5a8ff6,_0x4ac131){const _0x24c35e=a2_0x3f7829;this[_0x24c35e(0x1a7)](_0x24c35e(0x1b6),_0x30f112,_0x5a8ff6,_0x4ac131);}[a2_0x3f7829(0x1ac)](){const _0x82f5c2=a2_0x3f7829;this[_0x82f5c2(0x1b2)]=!![];}get[a2_0x3f7829(0x1bf)](){const _0x748b06=a2_0x3f7829;return this[_0x748b06(0x1b2)];}[a2_0x3f7829(0x1a7)](_0x4dbf5d,_0xda2285,_0xb19c0e,_0x152d2f){const _0x111179=a2_0x3f7829;if(_0x4dbf5d!==_0x111179(0x1b6)&&!this[_0x111179(0x1b2)])return;const _0x213d6a=new Date()['toISOString'](),_0x381566='['+_0x213d6a+_0x111179(0x1ae)+_0x4dbf5d[_0x111179(0x1a9)]()+_0x111179(0x1ae)+_0xda2285+']';console[_0x111179(0x1b6)](_0x152d2f?_0x381566+'\x20'+_0xb19c0e+'\x20'+JSON[_0x111179(0x1aa)](_0x152d2f):_0x381566+'\x20'+_0xb19c0e),this[_0x111179(0x1ab)]?.['write'](JSON['stringify']({'ts':_0x213d6a,'level':_0x4dbf5d,'component':_0xda2285,'msg':_0xb19c0e,..._0x152d2f&&{'data':_0x152d2f}})+'\x0a');}}function a2_0x21ab(_0x35f3b2,_0xcdd02e){_0x35f3b2=_0x35f3b2-0x1a6;const _0x5061a9=a2_0x5061();let _0x21ab65=_0x5061a9[_0x35f3b2];return _0x21ab65;}export const logger=new MorphLogger();
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x239e25,_0x366dec){const _0x11579f=a3_0x13eb,_0x5d2a9d=_0x239e25();while(!![]){try{const _0x5922a0=parseInt(_0x11579f(0xd4))/0x1+parseInt(_0x11579f(0xd0))/0x2+parseInt(_0x11579f(0xcf))/0x3*(parseInt(_0x11579f(0xca))/0x4)+parseInt(_0x11579f(0xd3))/0x5+-parseInt(_0x11579f(0xcc))/0x6*(-parseInt(_0x11579f(0xd8))/0x7)+parseInt(_0x11579f(0xdc))/0x8+parseInt(_0x11579f(0xd9))/0x9*(-parseInt(_0x11579f(0xd7))/0xa);if(_0x5922a0===_0x366dec)break;else _0x5d2a9d['push'](_0x5d2a9d['shift']());}catch(_0x9dcfd8){_0x5d2a9d['push'](_0x5d2a9d['shift']());}}}(a3_0x3751,0x9ac93));function a3_0x13eb(_0x1a8760,_0xd023fe){_0x1a8760=_0x1a8760-0xc8;const _0x375149=a3_0x3751();let _0x13ebae=_0x375149[_0x1a8760];return _0x13ebae;}import a3_0x3b7509 from'path';import a3_0x10a333 from'os';export function convertToWindowsPath(_0x12bcd1){const _0x5d9a3c=a3_0x13eb;if(_0x12bcd1['startsWith'](_0x5d9a3c(0xd1))){const _0xe0205d=_0x12bcd1[_0x5d9a3c(0xdb)](0x5)['toUpperCase'](),_0xd362e3=_0x12bcd1['slice'](0x6)[_0x5d9a3c(0xc8)](/\//g,'\x5c');return _0xe0205d+':'+_0xd362e3;}if(_0x12bcd1[_0x5d9a3c(0xcd)](/^\/[a-zA-Z]\//)){const _0x3dc39d=_0x12bcd1[_0x5d9a3c(0xdb)](0x1)[_0x5d9a3c(0xd5)](),_0x417c93=_0x12bcd1['slice'](0x2)[_0x5d9a3c(0xc8)](/\//g,'\x5c');return _0x3dc39d+':'+_0x417c93;}if(_0x12bcd1[_0x5d9a3c(0xcd)](/^[a-zA-Z]:/))return _0x12bcd1[_0x5d9a3c(0xc8)](/\//g,'\x5c');return _0x12bcd1;}export function normalizePath(_0x407f20){const _0x3cca37=a3_0x13eb;_0x407f20=_0x407f20[_0x3cca37(0xc9)]()['replace'](/^["']|["']$/g,'');const _0x15e3b7=_0x407f20[_0x3cca37(0xcb)]('/')&&!_0x407f20[_0x3cca37(0xcd)](/^\/mnt\/[a-z]\//i)&&!_0x407f20[_0x3cca37(0xcd)](/^\/[a-zA-Z]\//);if(_0x15e3b7)return _0x407f20[_0x3cca37(0xc8)](/\/+/g,'/')[_0x3cca37(0xc8)](/\/+$/,'');_0x407f20=convertToWindowsPath(_0x407f20);if(_0x407f20['startsWith']('\x5c\x5c')){let _0x1f4756=_0x407f20;_0x1f4756=_0x1f4756[_0x3cca37(0xc8)](/^\\{2,}/,'\x5c\x5c');const _0x54651d=_0x1f4756[_0x3cca37(0xd6)](0x2)[_0x3cca37(0xc8)](/\\\\/g,'\x5c');_0x407f20='\x5c\x5c'+_0x54651d;}else _0x407f20=_0x407f20['replace'](/\\\\/g,'\x5c');let _0x47c972=a3_0x3b7509[_0x3cca37(0xda)](_0x407f20);_0x407f20[_0x3cca37(0xcb)]('\x5c\x5c')&&!_0x47c972['startsWith']('\x5c\x5c')&&(_0x47c972='\x5c'+_0x47c972);if(_0x47c972[_0x3cca37(0xcd)](/^[a-zA-Z]:/)){let _0x440240=_0x47c972[_0x3cca37(0xc8)](/\//g,'\x5c');return/^[a-z]:/[_0x3cca37(0xce)](_0x440240)&&(_0x440240=_0x440240[_0x3cca37(0xdb)](0x0)[_0x3cca37(0xd5)]()+_0x440240['slice'](0x1)),_0x440240;}return _0x47c972[_0x3cca37(0xc8)](/\//g,'\x5c');}export function expandHome(_0x3b85f5){const _0x3cccd5=a3_0x13eb;if(_0x3b85f5[_0x3cccd5(0xcb)]('~/')||_0x3b85f5==='~')return a3_0x3b7509['join'](a3_0x10a333['homedir'](),_0x3b85f5[_0x3cccd5(0xd2)](0x1));return _0x3b85f5;}function a3_0x3751(){const _0x3d40c1=['toUpperCase','substring','6500990WvWHcy','49FQsnAS','45ehQccv','normalize','charAt','9956408MJwUjy','replace','trim','574804nTFwKD','startsWith','703704yuSZmq','match','test','6jPyPTG','274938GjVDqN','/mnt/','slice','3326165ekJMBn','728855iEUuDb'];a3_0x3751=function(){return _0x3d40c1;};return a3_0x3751();}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a4_0x1287(){const _0x311bbb=['includes','63215jysFBr','1866354fORtCc','2964496TJXQvW','normalize','220enUTKD','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','string','286992RRqhMN','114WpIYcK','136322saEAfd','startsWith','sep','isArray','306782wIvNfM','807364YcObWH','some','6GfOBZZ','isAbsolute','resolve'];a4_0x1287=function(){return _0x311bbb;};return a4_0x1287();}(function(_0x6ff614,_0x4a1761){const _0x4313cb=a4_0x2341,_0x1a5274=_0x6ff614();while(!![]){try{const _0x1ada40=-parseInt(_0x4313cb(0x12e))/0x1+parseInt(_0x4313cb(0x132))/0x2*(-parseInt(_0x4313cb(0x121))/0x3)+-parseInt(_0x4313cb(0x11f))/0x4+-parseInt(_0x4313cb(0x125))/0x5*(-parseInt(_0x4313cb(0x12d))/0x6)+parseInt(_0x4313cb(0x126))/0x7+-parseInt(_0x4313cb(0x127))/0x8+parseInt(_0x4313cb(0x12c))/0x9*(parseInt(_0x4313cb(0x129))/0xa);if(_0x1ada40===_0x4a1761)break;else _0x1a5274['push'](_0x1a5274['shift']());}catch(_0x1311fc){_0x1a5274['push'](_0x1a5274['shift']());}}}(a4_0x1287,0x2f164));import a4_0x4f973c from'path';function a4_0x2341(_0x5444c1,_0x274d2f){_0x5444c1=_0x5444c1-0x11f;const _0x12873f=a4_0x1287();let _0x234110=_0x12873f[_0x5444c1];return _0x234110;}export function isPathWithinAllowedDirectories(_0x125e0a,_0x4619ad){const _0x4661d6=a4_0x2341;if(typeof _0x125e0a!==_0x4661d6(0x12b)||!Array[_0x4661d6(0x131)](_0x4619ad))return![];if(!_0x125e0a||_0x4619ad['length']===0x0)return![];if(_0x125e0a[_0x4661d6(0x124)]('\x00'))return![];let _0x2c6a7a;try{_0x2c6a7a=a4_0x4f973c[_0x4661d6(0x123)](a4_0x4f973c[_0x4661d6(0x128)](_0x125e0a));}catch{return![];}if(!a4_0x4f973c['isAbsolute'](_0x2c6a7a))throw new Error('Path\x20must\x20be\x20absolute\x20after\x20normalization');return _0x4619ad[_0x4661d6(0x120)](_0x3ed1e9=>{const _0x4f66b4=_0x4661d6;if(typeof _0x3ed1e9!==_0x4f66b4(0x12b)||!_0x3ed1e9)return![];if(_0x3ed1e9[_0x4f66b4(0x124)]('\x00'))return![];let _0x559b9e;try{_0x559b9e=a4_0x4f973c[_0x4f66b4(0x123)](a4_0x4f973c['normalize'](_0x3ed1e9));}catch{return![];}if(!a4_0x4f973c[_0x4f66b4(0x122)](_0x559b9e))throw new Error(_0x4f66b4(0x12a));if(_0x2c6a7a===_0x559b9e)return!![];if(_0x559b9e===a4_0x4f973c[_0x4f66b4(0x130)])return _0x2c6a7a[_0x4f66b4(0x12f)](a4_0x4f973c['sep']);return _0x2c6a7a[_0x4f66b4(0x12f)](_0x559b9e+a4_0x4f973c[_0x4f66b4(0x130)]);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x684d5f,_0x1c1f0d){const _0x35a883=a5_0x18d6,_0x25ee8c=_0x684d5f();while(!![]){try{const _0x2951e5=-parseInt(_0x35a883(0xb2))/0x1+parseInt(_0x35a883(0xc0))/0x2+parseInt(_0x35a883(0xbf))/0x3*(-parseInt(_0x35a883(0xc7))/0x4)+-parseInt(_0x35a883(0xbc))/0x5*(parseInt(_0x35a883(0xbd))/0x6)+-parseInt(_0x35a883(0xb1))/0x7*(-parseInt(_0x35a883(0xb4))/0x8)+-parseInt(_0x35a883(0xb3))/0x9*(parseInt(_0x35a883(0xc6))/0xa)+-parseInt(_0x35a883(0xc1))/0xb*(-parseInt(_0x35a883(0xc5))/0xc);if(_0x2951e5===_0x1c1f0d)break;else _0x25ee8c['push'](_0x25ee8c['shift']());}catch(_0x190dc2){_0x25ee8c['push'](_0x25ee8c['shift']());}}}(a5_0x1126,0x5b4df));function a5_0x1126(){const _0xe535ef=['resolve','non-directory\x20root','startsWith','isDirectory','realpath','1129165KhxMvG','6tOtJDr','homedir','1295013ybqLKe','380548UVlEFi','759hSWmGt','Skipping\x20invalid\x20directory:\x20','invalid\x20path\x20or\x20inaccessible','slice','173424TOlxNz','30LaGtrP','4gHQveo','message','21zyYdRy','556757vnHhOe','15327VhCPRG','1082376mvBIif','\x20due\x20to\x20error:\x20','uri'];a5_0x1126=function(){return _0xe535ef;};return a5_0x1126();}import{promises as a5_0x3202e4}from'fs';import a5_0x143f2d from'path';import a5_0x51863e from'os';function a5_0x18d6(_0x304c10,_0x19cdbe){_0x304c10=_0x304c10-0xb0;const _0x11267a=a5_0x1126();let _0x18d698=_0x11267a[_0x304c10];return _0x18d698;}import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x2b20fe){const _0x5bd8e8=a5_0x18d6;try{const _0x36fe9d=_0x2b20fe[_0x5bd8e8(0xb9)]('file://')?_0x2b20fe[_0x5bd8e8(0xc4)](0x7):_0x2b20fe,_0x57ae3a=_0x36fe9d['startsWith']('~/')||_0x36fe9d==='~'?a5_0x143f2d['join'](a5_0x51863e[_0x5bd8e8(0xbe)](),_0x36fe9d['slice'](0x1)):_0x36fe9d,_0x4a3e4e=a5_0x143f2d[_0x5bd8e8(0xb7)](_0x57ae3a),_0x2fb209=await a5_0x3202e4[_0x5bd8e8(0xbb)](_0x4a3e4e);return normalizePath(_0x2fb209);}catch{return null;}}function formatDirectoryError(_0x617dff,_0x257c9b,_0x2657e1){const _0x25d373=a5_0x18d6;if(_0x2657e1)return'Skipping\x20'+_0x2657e1+':\x20'+_0x617dff;const _0x26eb81=_0x257c9b instanceof Error?_0x257c9b[_0x25d373(0xb0)]:String(_0x257c9b);return _0x25d373(0xc2)+_0x617dff+_0x25d373(0xb5)+_0x26eb81;}export async function getValidRootDirectories(_0x2f23db){const _0x13f1a5=a5_0x18d6,_0x545ff9=[];for(const _0x48276e of _0x2f23db){const _0x18416c=await parseRootUri(_0x48276e[_0x13f1a5(0xb6)]);if(!_0x18416c){logMcpStderr(formatDirectoryError(_0x48276e[_0x13f1a5(0xb6)],undefined,_0x13f1a5(0xc3)));continue;}try{const _0x7ba04d=await a5_0x3202e4['stat'](_0x18416c);_0x7ba04d[_0x13f1a5(0xba)]()?_0x545ff9['push'](_0x18416c):logMcpStderr(formatDirectoryError(_0x18416c,undefined,_0x13f1a5(0xb8)));}catch(_0x2b3a2a){logMcpStderr(formatDirectoryError(_0x18416c,_0x2b3a2a));}}return _0x545ff9;}
|
package/dist/tool-definitions.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a6_0x327d(){const _0xd15058=['2357940GxfQjM','138540CYRVLP','4796684nazMuZ','133iUAIoW','183390UfjwNn','github_codebase_search','399174MWkzYq','5536128xldUFe','edit_file','1188370SEeSkj','codebase_search'];a6_0x327d=function(){return _0xd15058;};return a6_0x327d();}const a6_0x52f9bf=a6_0x42a5;(function(_0x48f4eb,_0x293593){const _0x582b23=a6_0x42a5,_0x30382f=_0x48f4eb();while(!![]){try{const _0x5a0343=-parseInt(_0x582b23(0x113))/0x1+parseInt(_0x582b23(0x10e))/0x2+parseInt(_0x582b23(0x10d))/0x3+parseInt(_0x582b23(0x10f))/0x4+parseInt(_0x582b23(0x10b))/0x5+-parseInt(_0x582b23(0x111))/0x6*(parseInt(_0x582b23(0x110))/0x7)+-parseInt(_0x582b23(0x114))/0x8;if(_0x5a0343===_0x293593)break;else _0x30382f['push'](_0x30382f['shift']());}catch(_0x311c2e){_0x30382f['push'](_0x30382f['shift']());}}}(a6_0x327d,0x9768a));export const TOOL_NAMES={'EDIT_FILE':a6_0x52f9bf(0x115),'CODEBASE_SEARCH':a6_0x52f9bf(0x10c),'GITHUB_CODEBASE_SEARCH':a6_0x52f9bf(0x112)};function a6_0x42a5(_0x11218b,_0x15e921){_0x11218b=_0x11218b-0x10b;const _0x327d67=a6_0x327d();let _0x42a500=_0x327d67[_0x11218b];return _0x42a500;}export const ALL_TOOL_NAMES=Object['values'](TOOL_NAMES);export const KNOWN_TOOL_NAMES=new Set(ALL_TOOL_NAMES);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.168",
|
|
4
4
|
"description": "Fast & accurate MCP server with AI-powered file editing and intelligent code search. Prevents context pollution and saves time for a better user experience.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Morph (https://morphllm.com)",
|