@morphllm/morphmcp 0.8.151 → 0.8.153
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/path-utils.js +1 -1
- package/dist/path-validation.js +1 -1
- package/dist/roots-utils.js +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const a0_0x4156c2=a0_0x4280;(function(_0x3b4c4e,_0x4d93dd){const _0x30c2ee=a0_0x4280,_0x49e3f4=_0x3b4c4e();while(!![]){try{const _0x56cba8=-parseInt(_0x30c2ee(0x158))/0x1*(-parseInt(_0x30c2ee(0x15d))/0x2)+parseInt(_0x30c2ee(0x193))/0x3*(-parseInt(_0x30c2ee(0x175))/0x4)+-parseInt(_0x30c2ee(0x178))/0x5+-parseInt(_0x30c2ee(0x125))/0x6*(parseInt(_0x30c2ee(0x1f7))/0x7)+-parseInt(_0x30c2ee(0x176))/0x8*(-parseInt(_0x30c2ee(0x156))/0x9)+-parseInt(_0x30c2ee(0x11c))/0xa*(parseInt(_0x30c2ee(0x210))/0xb)+parseInt(_0x30c2ee(0x1a4))/0xc;if(_0x56cba8===_0x4d93dd)break;else _0x49e3f4['push'](_0x49e3f4['shift']());}catch(_0x2dddb3){_0x49e3f4['push'](_0x49e3f4['shift']());}}}(a0_0x2052,0xeecb2));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';function a0_0x4280(_0x9c0ce1,_0xe24550){_0x9c0ce1=_0x9c0ce1-0x10f;const _0x205212=a0_0x2052();let _0x4280d6=_0x205212[_0x9c0ce1];return _0x4280d6;}import a0_0x1447fd from'fs/promises';function a0_0x2052(){const _0x59f872=['Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','dryRun','dirname','MORPH_API_KEY','search_string','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','resolve','Warning:\x20','requiresApiKey','MORPH_WARP_GREP_TIMEOUT','description','timed\x20out','File\x20read\x20error:','linesAdded','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','unknown','user','\x20for:\x20\x22','7584010VFCpUu','-\x20Grepped\x20\x27','string','Failed\x20to\x20read\x20file:\x20','pattern','Preview\x20changes\x20without\x20applying\x20them.','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','\x22.\x20Known\x20tools:\x20','completed_with_file_errors','tool_calls','composer.json','\x20error(s)','\x27\x20in\x20`','floor','roots','0.2.0','Error\x20accessing\x20directory\x20','log','repo_path','sep','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','files','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','warn','ENOENT','79354TokSWO','-\x20Listed\x20directory\x20`','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','code','etimedout','Benefits:\x0a','utf-8','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','includes','Error\x20running\x20fast\x20context\x20search:\x20','readFile','@morphllm/morphmcp\x20','boolean','Here\x20is\x20the\x20content\x20of\x20files:\x0a','startsWith','stack','[codebase_search]\x20compaction\x20failed','metadata','[github_codebase_search]\x20Searching\x20','safeParse','WarpGrep\x20sub-tool\x20errors:\x20','code_edit','1630icyAkQ','env','constructor','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','.\x20Changes:\x20','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','stat','substring','6HigHiB','morph-warp-grep-v2.1','role','array','instructions','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','catch','https://morphllm.com/api/error-report','completed','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','Disabled\x20tools:\x20','messages','push','Bearer\x20','describe','Cargo.toml','path','\x0a...\x20(truncated,\x20total:\x20','searchGitHub','listRoots','every','basename','read\x20','function','WORKSPACE_ROOT','join','list_directory\x20','lines','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','grep','pyproject.toml','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','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.','.cursor','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','number','-\x20Read\x20file\x20`','message','errors','arguments','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','default','\x20\x20morph-mcp','has',',\x20modified\x20','setRequestHandler','homedir','262422AXrxUZ','.\x20Path:\x20','40153YRflQD','glob','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.','ms:','some','24dfNnZh','instruction','finish','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','TimeoutError',',\x20removed\x20','timings','unknown\x20error','[could\x20not\x20read\x20file:\x20','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','Specific\x20commit\x20hash\x20to\x20search','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','indexOf','mcp-filesystem','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','optional','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','Unknown\x20error','grep_search','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','\x20disabled\x20via\x20DISABLED_TOOLS','application/json','44rsYhWw','424NtuYZo','codebase_search','433885rFutyS','api-key','Repository\x20identifier','data','all','ReadError','length','\x20-\x20','Tool\x20','success','WarpGrepError','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','UnknownError','--version','\x0a</file>','package.json','\x20(new\x20file)','now','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','exit','access','content','[github_codebase_search]\x20Failed\x20in\x20','FileReadError','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','edit_file','425349aHbdHc','error','Morph\x20Edit\x20Preview','read','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','parse','`\x20in\x20`','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','branch','map','toLowerCase','Error:\x20','list_directory','assistant','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','FileNotFound','min','34279080MUfMPk','source','-\x20Glob\x20search\x20`','tool','slice','\x22>\x0a','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','match','\x20valid\x20directories','Invalid\x20arguments:\x20','object','\x20is\x20not\x20a\x20directory','filter','text','glob\x20\x27','realpath','tool_call_id','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','Applied','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','<file\x20path=\x22','false','../package.json','Relevant\x20context\x20found:','trim','split','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','SubToolError','morph-v3-fast','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','name','Max\x20results\x20to\x20return','node_modules','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','Rules:\x0a','oninitialized','SymlinkError','terminationReason','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','toISOString','.git','version','isArray','BinaryFile','❌\x20Morph\x20Edit\x20Failed:\x20','argv','\x20chars)','[github_codebase_search]\x20Done\x20in\x20','github_codebase_search','Tool\x20\x22','RipgrepError','isDirectory','payload','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','post','context','Fatal\x20error\x20running\x20server:','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','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','runWarpGrep_call','Created\x20File','DISABLED_TOOLS','timeout'];a0_0x2052=function(){return _0x59f872;};return a0_0x2052();}import a0_0x14f3ce from'path';import a0_0x4008c1 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0x3ac5d5 from'axios';function fixPathRepetition(_0x1eb9a6){const _0x24266d=a0_0x4280,_0x2c16c8=_0x1eb9a6[_0x24266d(0x1be)](a0_0x14f3ce[_0x24266d(0x20a)])[_0x24266d(0x1b0)](Boolean);if(_0x2c16c8[_0x24266d(0x17e)]<0x2)return null;for(let _0x357651=Math[_0x24266d(0x204)](_0x2c16c8[_0x24266d(0x17e)]/0x2);_0x357651>=0x1;_0x357651--){for(let _0x33df63=0x0;_0x33df63<=_0x2c16c8[_0x24266d(0x17e)]-0x2*_0x357651;_0x33df63++){const _0x45d5ff=_0x2c16c8[_0x24266d(0x1a8)](_0x33df63,_0x33df63+_0x357651),_0xfe21f1=_0x2c16c8['slice'](_0x33df63+_0x357651,_0x33df63+0x2*_0x357651);if(_0x45d5ff[_0x24266d(0x139)]((_0x17d85b,_0x5298d6)=>_0x17d85b===_0xfe21f1[_0x5298d6])){const _0x21d648=[..._0x2c16c8[_0x24266d(0x1a8)](0x0,_0x33df63),..._0x2c16c8['slice'](_0x33df63+_0x357651)];return a0_0x14f3ce[_0x24266d(0x20a)]+_0x21d648[_0x24266d(0x13e)](a0_0x14f3ce[_0x24266d(0x20a)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0xef69b9=a0_0x4280;try{const _0xe53463=require(_0xef69b9(0x1bb));return _0xe53463[_0xef69b9(0x1ce)]??_0xef69b9(0x1f4);}catch(_0x2eb3bf){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x2eb3bf),_0xef69b9(0x1f4);}}function printHelp(){const _0x5cd305=a0_0x4280;console[_0x5cd305(0x208)]('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x5cd305(0x208)](_0x5cd305(0x1da)),console[_0x5cd305(0x208)]('\x0aOptions:'),console[_0x5cd305(0x208)](_0x5cd305(0x1aa)),console['log'](_0x5cd305(0x172)),console[_0x5cd305(0x208)](_0x5cd305(0x147)),console[_0x5cd305(0x208)]('\x0aExamples:'),console['log'](_0x5cd305(0x151)),console['log'](_0x5cd305(0x1c6));}const cliArgs=process[a0_0x4156c2(0x1d2)]['slice'](0x2),VERSION_FLAGS=new Set([a0_0x4156c2(0x185),'-v','-V']),HELP_FLAGS=new Set(['--help','-h']);cliArgs[a0_0x4156c2(0x15c)](_0x15d50f=>VERSION_FLAGS['has'](_0x15d50f))&&(console[a0_0x4156c2(0x208)](a0_0x4156c2(0x111)+getPackageVersion()),process[a0_0x4156c2(0x18c)](0x0));cliArgs[a0_0x4156c2(0x15c)](_0x526802=>HELP_FLAGS[a0_0x4156c2(0x152)](_0x526802))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x20be01){const _0x278ec0=a0_0x4156c2;for(let _0x4674d2=0x0;_0x4674d2<cliArgs[_0x278ec0(0x17e)];_0x4674d2++){const _0x48b8be=cliArgs[_0x4674d2];if(_0x48b8be[_0x278ec0(0x114)]('--'+_0x20be01+'='))return _0x48b8be[_0x278ec0(0x1a8)](('--'+_0x20be01+'=')[_0x278ec0(0x17e)]);if(_0x48b8be==='--'+_0x20be01&&_0x4674d2+0x1<cliArgs['length'])return cliArgs[_0x4674d2+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x4156c2(0x17e)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x4156c2(0x152)](arg)||HELP_FLAGS[a0_0x4156c2(0x152)](arg))continue;if(arg[a0_0x4156c2(0x114)]('--api-key='))continue;if(arg==='--api-key'){i++;continue;}args['push'](arg);}const WORKSPACE_ROOT=process[a0_0x4156c2(0x11d)][a0_0x4156c2(0x13d)]||process[a0_0x4156c2(0x11d)]['PWD']||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0x4156c2(0x11d)]['ENABLE_WORKSPACE_MODE']!==a0_0x4156c2(0x1ba),MORPH_API_KEY=getCliArg(a0_0x4156c2(0x179))??process[a0_0x4156c2(0x11d)][a0_0x4156c2(0x1e7)],MORPH_API_URL=process['env']['MORPH_API_URL'],MORPH_WARP_GREP_TIMEOUT=process[a0_0x4156c2(0x11d)][a0_0x4156c2(0x1ee)]?parseInt(process[a0_0x4156c2(0x11d)][a0_0x4156c2(0x1ee)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x4156c2(0x192),a0_0x4156c2(0x177),a0_0x4156c2(0x1d5)]),DISABLED_TOOLS=process['env'][a0_0x4156c2(0x1e2)]?new Set(process[a0_0x4156c2(0x11d)][a0_0x4156c2(0x1e2)][a0_0x4156c2(0x1be)](',')['map'](_0x1d83ea=>_0x1d83ea[a0_0x4156c2(0x1bd)]())['filter'](_0x5384bf=>_0x5384bf['length']>0x0)):new Set();if(DISABLED_TOOLS['size']>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x4156c2(0x152)](tool)&&console[a0_0x4156c2(0x194)](a0_0x4156c2(0x1b8)+tool+a0_0x4156c2(0x1fe)+[...KNOWN_TOOL_NAMES][a0_0x4156c2(0x13e)](',\x20'));}console['error'](a0_0x4156c2(0x12f)+[...DISABLED_TOOLS][a0_0x4156c2(0x13e)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x4156c2(0x114)]('sk-')&&!MORPH_API_KEY[a0_0x4156c2(0x114)]('morph-')&&logMcpStderr('Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27');async function reportMorphError(_0x6571a5){const _0x3253a3=a0_0x4156c2;try{await a0_0x3ac5d5[_0x3253a3(0x1db)](_0x3253a3(0x12c),{..._0x6571a5,'timestamp':new Date()[_0x3253a3(0x1cc)](),'source':_0x6571a5[_0x3253a3(0x1a5)]||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x6571a5[_0x3253a3(0x1dc)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x3253a3(0x174),'Authorization':_0x3253a3(0x132)+MORPH_API_KEY}});}catch{}}args[a0_0x4156c2(0x17e)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),logMcpStderr(a0_0x4156c2(0x141)),logMcpStderr(a0_0x4156c2(0x11f)),logMcpStderr(a0_0x4156c2(0x183)),logMcpStderr('\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)'),logMcpStderr(a0_0x4156c2(0x218)));function normalizePath(_0x58e25f){return a0_0x14f3ce['normalize'](_0x58e25f);}function expandHome(_0x31d7a4){const _0x58744f=a0_0x4156c2;if(_0x31d7a4[_0x58744f(0x114)]('~/')||_0x31d7a4==='~')return a0_0x14f3ce[_0x58744f(0x13e)](a0_0x4008c1[_0x58744f(0x155)](),_0x31d7a4[_0x58744f(0x1a8)](0x1));return _0x31d7a4;}let allowedDirectories=await Promise[a0_0x4156c2(0x17c)](args[a0_0x4156c2(0x19c)](async _0x3f6291=>{const _0xdad4dc=a0_0x4156c2,_0x4f912c=expandHome(_0x3f6291),_0x2e501a=a0_0x14f3ce['resolve'](_0x4f912c);try{const _0x2ed0e9=await a0_0x1447fd[_0xdad4dc(0x1b3)](_0x2e501a);return normalizePath(_0x2ed0e9);}catch(_0x4b5601){return normalizePath(_0x2e501a);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x4156c2(0x17e)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x4156c2(0x131)](workspaceDir),logMcpStderr('Workspace\x20mode\x20enabled:\x20Using\x20'+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x5c2791){logMcpStderr('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x5c2791);}async function detectWorkspaceRoot(_0x4bc802){const _0x3e15a1=a0_0x4156c2;let _0xc23afc=a0_0x14f3ce[_0x3e15a1(0x1eb)](_0x4bc802);const _0x1aff2f=[_0x3e15a1(0x1cd),'.vscode',_0x3e15a1(0x187),_0x3e15a1(0x134),_0x3e15a1(0x143),'go.mod',_0x3e15a1(0x146),'tsconfig.json',_0x3e15a1(0x201)];while(_0xc23afc!==a0_0x14f3ce[_0x3e15a1(0x1e6)](_0xc23afc)){for(const _0x232736 of _0x1aff2f){const _0x298411=a0_0x14f3ce[_0x3e15a1(0x13e)](_0xc23afc,_0x232736);try{return await a0_0x1447fd[_0x3e15a1(0x18d)](_0x298411),normalizePath(_0xc23afc);}catch{}}_0xc23afc=a0_0x14f3ce[_0x3e15a1(0x1e6)](_0xc23afc);}return normalizePath(_0x4bc802);}await Promise[a0_0x4156c2(0x17c)](args[a0_0x4156c2(0x19c)](async _0x4a1034=>{const _0x29809d=a0_0x4156c2;try{const _0x2088d7=await a0_0x1447fd[_0x29809d(0x123)](expandHome(_0x4a1034));!_0x2088d7[_0x29809d(0x1d8)]()&&(logMcpStderr(_0x29809d(0x19e)+_0x4a1034+_0x29809d(0x1af)),process[_0x29809d(0x18c)](0x1));}catch(_0x179fce){logMcpStderr(_0x29809d(0x207)+_0x4a1034+':',_0x179fce),process[_0x29809d(0x18c)](0x1);}}));async function validatePath(_0x214321){const _0xa01c0d=a0_0x4156c2,_0x9ade45=expandHome(_0x214321),_0x285745=a0_0x14f3ce[_0xa01c0d(0x1eb)](_0x9ade45);try{const _0x3ff01b=await a0_0x1447fd[_0xa01c0d(0x1b3)](_0x285745);return _0x3ff01b;}catch(_0x18468f){if(_0x18468f[_0xa01c0d(0x213)]===_0xa01c0d(0x20f)){const _0x19c2dd=a0_0x14f3ce['dirname'](_0x285745);try{const _0x1d1bd=await a0_0x1447fd['realpath'](_0x19c2dd);return a0_0x14f3ce['join'](_0x1d1bd,a0_0x14f3ce[_0xa01c0d(0x13a)](_0x285745));}catch{throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x19c2dd);}}throw _0x18468f;}}const MorphEditFileArgsSchema=z[a0_0x4156c2(0x1ae)]({'path':z[a0_0x4156c2(0x1f9)](),'code_edit':z[a0_0x4156c2(0x1f9)]()[a0_0x4156c2(0x133)](a0_0x4156c2(0x1e9)),'instruction':z[a0_0x4156c2(0x1f9)]()[a0_0x4156c2(0x133)](a0_0x4156c2(0x16f)),'dryRun':z[a0_0x4156c2(0x112)]()[a0_0x4156c2(0x150)](![])['describe'](a0_0x4156c2(0x1fc))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x4156c2(0x145),WarpGrepArgsSchema=z['object']({'search_string':z[a0_0x4156c2(0x1f9)]()[a0_0x4156c2(0x133)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x4156c2(0x1f9)]()[a0_0x4156c2(0x133)](a0_0x4156c2(0x1b5)),'search_type':z['enum'](['default','node_modules'])['optional']()[a0_0x4156c2(0x133)](a0_0x4156c2(0x1e4))}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z[a0_0x4156c2(0x1f9)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x4156c2(0x1f9)]()['optional']()[a0_0x4156c2(0x133)]('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_0x4156c2(0x1f9)]()[a0_0x4156c2(0x16e)]()[a0_0x4156c2(0x133)](a0_0x4156c2(0x1de)),'branch':z['string']()['optional']()[a0_0x4156c2(0x133)](a0_0x4156c2(0x12e))}),CodebaseSearchArgsSchema=z[a0_0x4156c2(0x1ae)]({'query':z[a0_0x4156c2(0x1f9)]()[a0_0x4156c2(0x133)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x4156c2(0x1f9)]()[a0_0x4156c2(0x133)](a0_0x4156c2(0x17a)),'branch':z['string']()[a0_0x4156c2(0x16e)]()[a0_0x4156c2(0x133)](a0_0x4156c2(0x1ea)),'commitHash':z[a0_0x4156c2(0x1f9)]()[a0_0x4156c2(0x16e)]()[a0_0x4156c2(0x133)](a0_0x4156c2(0x169)),'targetDirectories':z[a0_0x4156c2(0x128)](z['string']())[a0_0x4156c2(0x150)]([])['describe'](a0_0x4156c2(0x1b7)),'limit':z[a0_0x4156c2(0x149)]()[a0_0x4156c2(0x16e)]()[a0_0x4156c2(0x150)](0xa)[a0_0x4156c2(0x133)](a0_0x4156c2(0x1c4))}),server=new Server({'name':'morph-mcp','version':a0_0x4156c2(0x206)},{'capabilities':{'tools':{}}});server[a0_0x4156c2(0x154)](ListToolsRequestSchema,async()=>{const _0x531cbe=a0_0x4156c2,_0x5105fc=[{'name':_0x531cbe(0x192),'description':_0x531cbe(0x1fd)+_0x531cbe(0x191)+_0x531cbe(0x1cb)+_0x531cbe(0x19a)+_0x531cbe(0x215)+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x531cbe(0x161)+_0x531cbe(0x1bf)+'-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a'+'Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a'+'ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a'+_0x531cbe(0x167)+'For\x20deletions:\x0a'+_0x531cbe(0x120)+_0x531cbe(0x160)+_0x531cbe(0x1c7)+'-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a'+_0x531cbe(0x20d)+_0x531cbe(0x168)+_0x531cbe(0x18b)+'-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a'+_0x531cbe(0x1c2)+_0x531cbe(0x20b),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x531cbe(0x177),'description':_0x531cbe(0x1df)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x531cbe(0x14f)+'You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20'+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x3abcdb=_0x5105fc[_0x531cbe(0x1b0)](_0x53941d=>{const _0x4ea788=_0x531cbe;if(DISABLED_TOOLS[_0x4ea788(0x152)](_0x53941d['name']))return console[_0x4ea788(0x194)](_0x4ea788(0x180)+_0x53941d['name']+_0x4ea788(0x173)),![];if(_0x4ea788(0x1ed)in _0x53941d&&_0x53941d['requiresApiKey']&&!MORPH_API_KEY)return logMcpStderr(_0x4ea788(0x1ec)+_0x53941d['name']+_0x4ea788(0x1a1)),![];return!![];});return{'tools':_0x3abcdb[_0x531cbe(0x19c)](_0x4b1d00=>({'name':_0x4b1d00['name'],'description':_0x4b1d00[_0x531cbe(0x1ef)],'inputSchema':_0x4b1d00['inputSchema']}))};}),server['setRequestHandler'](CallToolRequestSchema,async _0x1cf084=>{const _0x23274c=a0_0x4156c2,{name:_0x275d4e,arguments:_0x33842c}=_0x1cf084['params'];try{if(DISABLED_TOOLS[_0x23274c(0x152)](_0x275d4e))throw new Error(_0x23274c(0x1d6)+_0x275d4e+'\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable');switch(_0x275d4e){case _0x23274c(0x192):{const _0x50c27c=_0x33842c&&typeof _0x33842c==='object'&&_0x23274c(0x129)in _0x33842c&&!(_0x23274c(0x15e)in _0x33842c)?{..._0x33842c,'instruction':_0x33842c[_0x23274c(0x129)],'instructions':undefined}:_0x33842c,_0x2c7a9d=MorphEditFileArgsSchema[_0x23274c(0x119)](_0x50c27c);if(!_0x2c7a9d[_0x23274c(0x181)])throw new Error(_0x23274c(0x148)+_0x2c7a9d[_0x23274c(0x194)]);const _0x38153a=await validatePath(_0x2c7a9d[_0x23274c(0x17b)][_0x23274c(0x135)]);let _0x4adbad=null,_0x421468=!![],_0x30485d=null;try{_0x4adbad=await a0_0x1447fd[_0x23274c(0x110)](_0x38153a,_0x23274c(0x216));}catch(_0x1623cb){const _0x44ebd0=_0x1623cb[_0x23274c(0x213)];_0x44ebd0===_0x23274c(0x20f)?(_0x421468=![],_0x4adbad=''):(_0x30485d=_0x23274c(0x1fa)+(_0x44ebd0||_0x23274c(0x1f4))+_0x23274c(0x17f)+(_0x1623cb instanceof Error?_0x1623cb[_0x23274c(0x14b)]:String(_0x1623cb)),logMcpStderr(_0x23274c(0x1ec)+_0x30485d));}let _0x1c4392;try{const _0x55a3ba=MORPH_API_KEY;if(!_0x55a3ba)throw new Error(_0x23274c(0x212));const _0x3bcb9a=a0_0x14f3ce['dirname'](_0x38153a),_0xa1197b=a0_0x14f3ce['basename'](_0x38153a),_0x39f737=await executeEditFile({'target_filepath':_0xa1197b,'code_edit':_0x2c7a9d[_0x23274c(0x17b)][_0x23274c(0x11b)],'instruction':_0x2c7a9d[_0x23274c(0x17b)][_0x23274c(0x15e)]},{'morphApiKey':_0x55a3ba,'morphApiUrl':MORPH_API_URL,'baseDir':_0x3bcb9a,'autoWrite':!_0x2c7a9d[_0x23274c(0x17b)][_0x23274c(0x1e5)],'generateUdiff':![],'debug':![]});_0x1c4392=_0x39f737['completionId'];if(!_0x39f737[_0x23274c(0x181)])throw new Error(_0x39f737[_0x23274c(0x194)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x43c0e6=_0x39f737['changes'],_0x5ac8be='added\x20'+_0x43c0e6[_0x23274c(0x1f2)]+_0x23274c(0x163)+_0x43c0e6['linesRemoved']+_0x23274c(0x153)+_0x43c0e6['linesModified'];if(_0x2c7a9d[_0x23274c(0x17b)][_0x23274c(0x1e5)])return{'content':[{'type':'text','text':_0x23274c(0x195)+(_0x421468?'':_0x23274c(0x188))+':\x20'+_0x2c7a9d[_0x23274c(0x17b)][_0x23274c(0x15e)]+_0x23274c(0x121)+_0x5ac8be+_0x23274c(0x157)+_0x2c7a9d[_0x23274c(0x17b)][_0x23274c(0x135)]+'.'}]};return{'content':[{'type':_0x23274c(0x1b1),'text':'Morph\x20Edit\x20'+(_0x421468?_0x23274c(0x1b6):_0x23274c(0x1e1))+':\x20'+_0x2c7a9d['data'][_0x23274c(0x15e)]+_0x23274c(0x121)+_0x5ac8be+_0x23274c(0x157)+_0x2c7a9d['data'][_0x23274c(0x135)]+'.'}]};}catch(_0x5e0a4a){const _0x206ef5=_0x5e0a4a instanceof Error?_0x5e0a4a[_0x23274c(0x14b)]:String(_0x5e0a4a);return reportMorphError({'error_message':_0x206ef5,'error_type':_0x5e0a4a instanceof Error?_0x5e0a4a['constructor'][_0x23274c(0x1c3)]:_0x23274c(0x184),'context':{'tool':_0x23274c(0x192),'completion_id':_0x1c4392,'file_path':_0x2c7a9d[_0x23274c(0x17b)][_0x23274c(0x135)],'validated_path':_0x38153a,'instruction':_0x2c7a9d[_0x23274c(0x17b)][_0x23274c(0x15e)],'model':_0x23274c(0x1c1),'dry_run':_0x2c7a9d[_0x23274c(0x17b)][_0x23274c(0x1e5)],'file_exists':_0x421468,'file_read_error':_0x30485d,'file_readable':_0x4adbad!==null,'request_content':{'path':_0x2c7a9d['data']['path'],'code_edit':_0x2c7a9d[_0x23274c(0x17b)][_0x23274c(0x11b)],'instruction':_0x2c7a9d[_0x23274c(0x17b)]['instruction'],'original_code':_0x4adbad!==null?_0x4adbad[_0x23274c(0x17e)]>0xc350?_0x4adbad['substring'](0x0,0xc350)+_0x23274c(0x136)+_0x4adbad['length']+_0x23274c(0x1d3):_0x4adbad:_0x23274c(0x166)+(_0x30485d||_0x23274c(0x165))+']','original_code_length':_0x4adbad?.['length']??0x0,'model':_0x23274c(0x1c1),'dry_run':_0x2c7a9d[_0x23274c(0x17b)][_0x23274c(0x1e5)]}},'stack_trace':_0x5e0a4a instanceof Error?_0x5e0a4a[_0x23274c(0x115)]:undefined,'source':_0x23274c(0x16c)})['catch'](()=>{}),{'content':[{'type':_0x23274c(0x1b1),'text':_0x23274c(0x1d1)+_0x206ef5}],'isError':!![]};}}case _0x23274c(0x177):{const _0x4219d1=WarpGrepArgsSchema[_0x23274c(0x119)](_0x33842c);if(!_0x4219d1['success'])return{'content':[{'type':'text','text':_0x23274c(0x1ad)+_0x4219d1[_0x23274c(0x194)]}],'isError':!![]};const _0x3351a7=_0x47b3de=>{const _0x54e1f0=_0x23274c,_0x10e8d2=[];for(const _0x466869 of _0x47b3de||[]){if(_0x466869[_0x54e1f0(0x127)]===_0x54e1f0(0x1a0)&&Array[_0x54e1f0(0x1cf)](_0x466869[_0x54e1f0(0x200)]))for(const _0x5ae960 of _0x466869[_0x54e1f0(0x200)]){try{const _0x1bd3aa=_0x5ae960[_0x54e1f0(0x13c)]?.[_0x54e1f0(0x1c3)],_0x293402=JSON[_0x54e1f0(0x198)](_0x5ae960['function']?.[_0x54e1f0(0x14d)]||'{}');if(_0x1bd3aa===_0x54e1f0(0x171))_0x10e8d2[_0x54e1f0(0x131)]('grep\x20\x27'+_0x293402[_0x54e1f0(0x1fb)]+'\x27\x20'+(_0x293402[_0x54e1f0(0x135)]||'.'));else{if(_0x1bd3aa===_0x54e1f0(0x196))_0x10e8d2['push'](_0x54e1f0(0x13b)+_0x293402['path']);else{if(_0x1bd3aa===_0x54e1f0(0x19f))_0x10e8d2[_0x54e1f0(0x131)](_0x54e1f0(0x13f)+(_0x293402['command']||'.'));else{if(_0x1bd3aa===_0x54e1f0(0x159))_0x10e8d2[_0x54e1f0(0x131)](_0x54e1f0(0x1b2)+_0x293402[_0x54e1f0(0x1fb)]+'\x27\x20'+(_0x293402[_0x54e1f0(0x135)]||'.'));else _0x1bd3aa===_0x54e1f0(0x15f)&&_0x10e8d2[_0x54e1f0(0x131)](_0x54e1f0(0x15f));}}}}catch{}}}return _0x10e8d2;},_0x58bddd=_0x41d8f2=>{const _0x15d023=_0x23274c,_0x1c6c98=[];if(!_0x41d8f2||!Array[_0x15d023(0x1cf)](_0x41d8f2))return _0x1c6c98;const _0x368f23=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x15d023(0x1a2),'tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x15d023(0x17d),'tool':_0x15d023(0x196)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':'BinaryFile','tool':_0x15d023(0x196)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x15d023(0x1d7),'tool':_0x15d023(0x142)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':'RipgrepNotAvailable','tool':_0x15d023(0x142)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x15d023(0x1d0),'tool':_0x15d023(0x196)},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':_0x15d023(0x196)},{'pattern':/not a text file/,'error_type':_0x15d023(0x1d0),'tool':_0x15d023(0x196)},{'pattern':/symbolic link/,'error_type':_0x15d023(0x1c9),'tool':_0x15d023(0x196)},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':_0x15d023(0x196)},{'pattern':/status="error"/,'error_type':'ToolException','tool':_0x15d023(0x1f4)}];let _0x1b5f78=0x0;for(const _0x54fd2b of _0x41d8f2){_0x54fd2b[_0x15d023(0x127)]===_0x15d023(0x1a0)&&Array[_0x15d023(0x1cf)](_0x54fd2b[_0x15d023(0x200)])&&_0x1b5f78++;const _0x3baf2e=_0x54fd2b[_0x15d023(0x18e)];if((_0x54fd2b[_0x15d023(0x127)]===_0x15d023(0x1a7)||_0x54fd2b[_0x15d023(0x127)]===_0x15d023(0x1f5))&&_0x3baf2e&&typeof _0x3baf2e==='string')for(const {pattern:_0x4e789c,error_type:_0x5482cb,tool:_0x3b6b10}of _0x368f23){const _0x527c87=_0x3baf2e[_0x15d023(0x1ab)](new RegExp(_0x4e789c[_0x15d023(0x1a5)],'g'));if(_0x527c87)for(const _0x2f238e of _0x527c87){const _0x39c2f2=_0x3baf2e[_0x15d023(0x16b)](_0x2f238e),_0x1ed514=_0x3baf2e[_0x15d023(0x124)](_0x39c2f2,Math[_0x15d023(0x1a3)](_0x39c2f2+0xc8,_0x3baf2e[_0x15d023(0x17e)]));_0x1c6c98[_0x15d023(0x131)]({'tool':_0x3b6b10,'error_type':_0x5482cb,'error_message':_0x1ed514[_0x15d023(0x1be)]('\x0a')[0x0],'turn':_0x1b5f78});}}}return _0x1c6c98;};try{const _0x55ae8e=a0_0x14f3ce[_0x23274c(0x1eb)](_0x4219d1[_0x23274c(0x17b)][_0x23274c(0x209)]),_0x279a40=_0x4219d1[_0x23274c(0x17b)]['search_type'],_0x2c7ce0=_0x279a40===_0x23274c(0x1c5)?{'allowNames':[_0x23274c(0x1c5)]}:undefined,_0x13024d=new LocalRipgrepProvider(_0x55ae8e,undefined,_0x2c7ce0),_0x273a1a=await runWarpGrep({'searchTerm':_0x4219d1[_0x23274c(0x17b)][_0x23274c(0x1e8)],'repoRoot':_0x55ae8e,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x13024d,'search_type':_0x279a40}),_0x3a1d00=_0x58bddd(_0x273a1a[_0x23274c(0x130)]);_0x3a1d00['length']>0x0&&reportMorphError({'error_message':_0x23274c(0x11a)+_0x3a1d00[_0x23274c(0x17e)]+_0x23274c(0x202),'error_type':_0x23274c(0x1c0),'level':_0x23274c(0x20e),'tool':_0x23274c(0x177),'context':{'repo_path':_0x4219d1['data'][_0x23274c(0x209)],'query':_0x4219d1[_0x23274c(0x17b)][_0x23274c(0x1e8)],'model':_0x23274c(0x126),'termination_reason':_0x273a1a[_0x23274c(0x1ca)],'sub_tool_errors':_0x3a1d00,'timings':_0x273a1a['timings'],'tool_calls':_0x3351a7(_0x273a1a[_0x23274c(0x130)]),'messages':_0x273a1a[_0x23274c(0x130)]?.[_0x23274c(0x19c)](_0x37c104=>({'role':_0x37c104[_0x23274c(0x127)],'content':_0x37c104[_0x23274c(0x18e)],..._0x37c104['tool_calls']?{'tool_calls':_0x37c104[_0x23274c(0x200)]['length']}:{},..._0x37c104[_0x23274c(0x1b4)]?{'tool_call_id':_0x37c104['tool_call_id']}:{}}))},'source':_0x23274c(0x16c)})[_0x23274c(0x12b)](()=>{});let _0x2d6f05='';if(_0x273a1a[_0x23274c(0x1ca)]===_0x23274c(0x12d)&&_0x273a1a[_0x23274c(0x15f)]?.['metadata']?.[_0x23274c(0x20c)]){const _0x2c7bd8=_0x273a1a['finish'][_0x23274c(0x117)][_0x23274c(0x20c)];if(_0x2c7bd8[_0x23274c(0x17e)]===0x0)return _0x2d6f05=_0x273a1a[_0x23274c(0x15f)][_0x23274c(0x1d9)]||_0x23274c(0x197),{'content':[{'type':'text','text':_0x2d6f05}]};const _0x18cfce=[],_0x4e8493=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x46f683 of _0x273a1a[_0x23274c(0x130)]){if(_0x46f683[_0x23274c(0x127)]===_0x23274c(0x1a0)&&Array[_0x23274c(0x1cf)](_0x46f683[_0x23274c(0x200)]))for(const _0x12c11c of _0x46f683[_0x23274c(0x200)]){try{const _0x24e00d=_0x12c11c['function']?.[_0x23274c(0x1c3)],_0x235b2b=JSON[_0x23274c(0x198)](_0x12c11c[_0x23274c(0x13c)]?.['arguments']||'{}');if(_0x24e00d===_0x23274c(0x171))_0x4e8493[_0x23274c(0x131)](_0x23274c(0x1f8)+_0x235b2b[_0x23274c(0x1fb)]+_0x23274c(0x203)+(_0x235b2b[_0x23274c(0x135)]||'.')+'`');else{if(_0x24e00d==='read')_0x4e8493[_0x23274c(0x131)](_0x23274c(0x14a)+_0x235b2b[_0x23274c(0x135)]+'`');else{if(_0x24e00d==='list_directory')_0x4e8493[_0x23274c(0x131)](_0x23274c(0x211)+(_0x235b2b['command']||'.')+'`');else _0x24e00d===_0x23274c(0x159)&&_0x4e8493[_0x23274c(0x131)](_0x23274c(0x1a6)+_0x235b2b['pattern']+_0x23274c(0x199)+(_0x235b2b['path']||'.')+'`');}}}catch{}}}_0x18cfce[_0x23274c(0x131)](_0x4e8493['join']('\x0a'));const _0x3fe4e6=['',_0x23274c(0x1bc)];for(const _0x5e4248 of _0x2c7bd8){if(_0x5e4248[_0x23274c(0x140)]==='*')_0x3fe4e6[_0x23274c(0x131)]('-\x20'+_0x5e4248[_0x23274c(0x135)]+':*');else{if(Array[_0x23274c(0x1cf)](_0x5e4248['lines'])){const _0x43d4b9=_0x5e4248[_0x23274c(0x140)][_0x23274c(0x19c)](([_0x322744,_0x3b527d])=>{if(_0x322744===_0x3b527d)return''+_0x322744;return _0x322744+'-'+_0x3b527d;});_0x3fe4e6[_0x23274c(0x131)]('-\x20'+_0x5e4248[_0x23274c(0x135)]+':'+_0x43d4b9['join'](','));}else _0x3fe4e6[_0x23274c(0x131)]('-\x20'+_0x5e4248[_0x23274c(0x135)]+':*');}}_0x3fe4e6['push'](''),_0x18cfce['push'](_0x3fe4e6['join']('\x0a')),_0x18cfce['push'](_0x23274c(0x113));const _0x117a52=[],_0x30d0ab=[];for(const _0xcb6027 of _0x2c7bd8){let _0x10a978=a0_0x14f3ce[_0x23274c(0x1eb)](_0x4219d1['data']['repo_path'],_0xcb6027['path']),_0xb87f76=null,_0x1deca9=null;try{_0xb87f76=await a0_0x1447fd[_0x23274c(0x110)](_0x10a978,{'encoding':'utf-8'});}catch(_0x3b90cd){const _0x7ffcbc=fixPathRepetition(_0x10a978);if(_0x7ffcbc)try{_0xb87f76=await a0_0x1447fd[_0x23274c(0x110)](_0x7ffcbc,{'encoding':_0x23274c(0x216)}),_0x10a978=_0x7ffcbc;}catch{_0x1deca9=_0x3b90cd instanceof Error?_0x3b90cd:new Error(String(_0x3b90cd));}else _0x1deca9=_0x3b90cd instanceof Error?_0x3b90cd:new Error(String(_0x3b90cd));}if(_0xb87f76!==null){const _0x5ebe84=_0xb87f76['split'](/\r?\n/),_0x15fca8=[];if(_0xcb6027['lines']==='*'||!Array[_0x23274c(0x1cf)](_0xcb6027['lines']))for(let _0x3cacf4=0x1;_0x3cacf4<=_0x5ebe84[_0x23274c(0x17e)];_0x3cacf4++){const _0x3aa996=_0x5ebe84[_0x3cacf4-0x1];_0x15fca8[_0x23274c(0x131)](_0x3cacf4+'|\x20'+_0x3aa996);}else for(const [_0x5df4c5,_0x507c3b]of _0xcb6027[_0x23274c(0x140)]){_0x15fca8[_0x23274c(0x17e)]>0x0&&_0x15fca8['push']('');for(let _0x41b39a=_0x5df4c5;_0x41b39a<=_0x507c3b&&_0x41b39a<=_0x5ebe84['length'];_0x41b39a++){const _0x28573a=_0x5ebe84[_0x41b39a-0x1];_0x15fca8[_0x23274c(0x131)](_0x41b39a+'|\x20'+_0x28573a);}}_0x30d0ab['push']({'path':_0xcb6027[_0x23274c(0x135)],'content':_0x15fca8[_0x23274c(0x13e)]('\x0a')});}else _0x117a52[_0x23274c(0x131)](_0x23274c(0x1b9)+_0xcb6027[_0x23274c(0x135)]+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x1deca9?.[_0x23274c(0x14b)]||_0x23274c(0x170))+_0x23274c(0x186));}try{const _0x3b3ade=await compactFileContexts(_0x30d0ab,_0x4219d1[_0x23274c(0x17b)][_0x23274c(0x1e8)],MORPH_API_KEY,MORPH_API_URL);for(const _0x178a97 of _0x3b3ade){_0x117a52['push'](_0x23274c(0x1b9)+_0x178a97[_0x23274c(0x135)]+_0x23274c(0x1a9)+_0x178a97[_0x23274c(0x18e)]+'\x0a</file>');}}catch(_0x376666){console['error'](_0x23274c(0x116),_0x376666);for(const _0x413d7a of _0x30d0ab){_0x117a52['push'](_0x23274c(0x1b9)+_0x413d7a[_0x23274c(0x135)]+_0x23274c(0x1a9)+_0x413d7a[_0x23274c(0x18e)]+'\x0a</file>');}}_0x18cfce[_0x23274c(0x131)](_0x117a52[_0x23274c(0x13e)]('\x0a\x0a')),_0x2d6f05=_0x18cfce[_0x23274c(0x13e)]('\x0a');const _0x4023ee=_0x273a1a['errors']?.['filter'](_0x2d93fd=>_0x2d93fd[_0x23274c(0x14b)]?.['startsWith'](_0x23274c(0x1f1)))||[];if(_0x4023ee['length']>0x0){const _0x275c1a=_0x4023ee['map'](_0x1f81fb=>_0x1f81fb['message'])[_0x23274c(0x13e)](';\x20');reportMorphError({'error_message':_0x275c1a,'error_type':_0x23274c(0x190),'context':{'tool':'codebase_search','repo_path':_0x4219d1[_0x23274c(0x17b)][_0x23274c(0x209)],'query':_0x4219d1['data'][_0x23274c(0x1e8)],'model':_0x23274c(0x126),'termination_reason':_0x23274c(0x1ff),'error_count':_0x4023ee[_0x23274c(0x17e)],'is_timeout':![],'timings':_0x273a1a[_0x23274c(0x164)],'files_attempted':_0x2c7bd8[_0x23274c(0x19c)](_0xa153be=>({'path':_0xa153be[_0x23274c(0x135)],'lines':_0xa153be[_0x23274c(0x140)]})),'tool_calls':_0x3351a7(_0x273a1a[_0x23274c(0x130)]),'messages':_0x273a1a[_0x23274c(0x130)]?.[_0x23274c(0x19c)](_0x258a86=>({'role':_0x258a86['role'],'content':_0x258a86[_0x23274c(0x18e)],..._0x258a86[_0x23274c(0x200)]?{'tool_calls':_0x258a86[_0x23274c(0x200)]['length']}:{},..._0x258a86[_0x23274c(0x1b4)]?{'tool_call_id':_0x258a86['tool_call_id']}:{}})),'request_content':{'query':_0x4219d1['data'][_0x23274c(0x1e8)],'repo_path':_0x4219d1[_0x23274c(0x17b)][_0x23274c(0x209)],'repoRoot':a0_0x14f3ce[_0x23274c(0x1eb)](_0x4219d1['data'][_0x23274c(0x209)]),'model':_0x23274c(0x126)}},'source':_0x23274c(0x16c)})['catch'](()=>{});}}else{if(_0x273a1a['terminationReason']==='terminated'&&_0x273a1a[_0x23274c(0x14c)][_0x23274c(0x17e)]>0x0){const _0x5639f4=_0x273a1a[_0x23274c(0x14c)][_0x23274c(0x19c)](_0x119eec=>_0x119eec['message'])[_0x23274c(0x13e)](';\x20');_0x2d6f05=_0x23274c(0x19e)+_0x5639f4;const _0x334203=_0x5639f4[_0x23274c(0x19d)]()[_0x23274c(0x219)](_0x23274c(0x1e3))||_0x5639f4[_0x23274c(0x19d)]()['includes'](_0x23274c(0x1f0))||_0x5639f4['toLowerCase']()['includes'](_0x23274c(0x214)),_0x185edb=_0x273a1a[_0x23274c(0x15f)]?.[_0x23274c(0x117)]?.['files'],_0x2912ac=_0x273a1a[_0x23274c(0x14c)][0x0];reportMorphError({'error_message':_0x5639f4,'error_type':_0x334203?'TimeoutError':_0x2912ac?.['constructor']?.[_0x23274c(0x1c3)]||_0x23274c(0x182),'context':{'tool':_0x23274c(0x177),'repo_path':_0x4219d1[_0x23274c(0x17b)][_0x23274c(0x209)],'query':_0x4219d1[_0x23274c(0x17b)][_0x23274c(0x1e8)],'model':_0x23274c(0x126),'termination_reason':_0x273a1a[_0x23274c(0x1ca)],'error_count':_0x273a1a[_0x23274c(0x14c)][_0x23274c(0x17e)],'is_timeout':_0x334203,'timings':_0x273a1a[_0x23274c(0x164)],'files_attempted':_0x185edb?.[_0x23274c(0x19c)](_0x551fca=>({'path':_0x551fca[_0x23274c(0x135)],'lines':_0x551fca[_0x23274c(0x140)]})),'tool_calls':_0x3351a7(_0x273a1a[_0x23274c(0x130)]),'messages':_0x273a1a[_0x23274c(0x130)]?.[_0x23274c(0x19c)](_0x1c8f15=>({'role':_0x1c8f15[_0x23274c(0x127)],'content':_0x1c8f15[_0x23274c(0x18e)],..._0x1c8f15[_0x23274c(0x200)]?{'tool_calls':_0x1c8f15[_0x23274c(0x200)][_0x23274c(0x17e)]}:{},..._0x1c8f15[_0x23274c(0x1b4)]?{'tool_call_id':_0x1c8f15[_0x23274c(0x1b4)]}:{}})),'request_content':{'query':_0x4219d1['data'][_0x23274c(0x1e8)],'repo_path':_0x4219d1['data']['repo_path'],'repoRoot':a0_0x14f3ce[_0x23274c(0x1eb)](_0x4219d1[_0x23274c(0x17b)][_0x23274c(0x209)]),'model':_0x23274c(0x126)}},'stack_trace':_0x2912ac?.[_0x23274c(0x115)]||undefined,'source':_0x23274c(0x16c)})[_0x23274c(0x12b)](()=>{});}else _0x2d6f05=_0x23274c(0x122);}return{'content':[{'type':'text','text':_0x2d6f05}]};}catch(_0x25ddf4){const _0x133338=_0x25ddf4 instanceof Error?_0x25ddf4[_0x23274c(0x14b)]:String(_0x25ddf4),_0x781a6a=_0x133338[_0x23274c(0x19d)]()[_0x23274c(0x219)](_0x23274c(0x1e3))||_0x133338[_0x23274c(0x19d)]()['includes'](_0x23274c(0x1f0))||_0x133338[_0x23274c(0x19d)]()[_0x23274c(0x219)](_0x23274c(0x214))||_0x25ddf4 instanceof Error&&_0x25ddf4[_0x23274c(0x1c3)]===_0x23274c(0x162);return reportMorphError({'error_message':_0x133338,'error_type':_0x781a6a?'TimeoutError':_0x25ddf4 instanceof Error?_0x25ddf4[_0x23274c(0x11e)]['name']:_0x23274c(0x184),'context':{'tool':_0x23274c(0x177),'repo_path':_0x4219d1[_0x23274c(0x17b)]['repo_path'],'query':_0x4219d1[_0x23274c(0x17b)][_0x23274c(0x1e8)],'model':'morph-warp-grep-v2.1','is_timeout':_0x781a6a,'exception_phase':_0x23274c(0x1e0),'request_content':{'query':_0x4219d1[_0x23274c(0x17b)][_0x23274c(0x1e8)],'repo_path':_0x4219d1[_0x23274c(0x17b)][_0x23274c(0x209)],'repoRoot':a0_0x14f3ce[_0x23274c(0x1eb)](_0x4219d1[_0x23274c(0x17b)][_0x23274c(0x209)]),'model':_0x23274c(0x126)}},'stack_trace':_0x25ddf4 instanceof Error?_0x25ddf4[_0x23274c(0x115)]:undefined,'source':'mcp-filesystem'})[_0x23274c(0x12b)](()=>{}),{'content':[{'type':_0x23274c(0x1b1),'text':_0x23274c(0x10f)+_0x133338}],'isError':![]};}}case _0x23274c(0x1d5):{const _0x1140b1=WarpGrepGitHubArgsSchema[_0x23274c(0x119)](_0x33842c);if(!_0x1140b1[_0x23274c(0x181)])return{'content':[{'type':'text','text':_0x23274c(0x1ad)+_0x1140b1[_0x23274c(0x194)]}],'isError':!![]};const _0x294ced=_0x1140b1[_0x23274c(0x17b)]['github_url']||_0x1140b1[_0x23274c(0x17b)]['owner_repo'];if(!_0x294ced)return{'content':[{'type':_0x23274c(0x1b1),'text':_0x23274c(0x12a)}],'isError':!![]};const _0x1a7df1=MORPH_API_KEY;if(!_0x1a7df1)throw new Error(_0x23274c(0x212));const _0x2ac8f9=Date[_0x23274c(0x189)]();logMcpStderr(_0x23274c(0x118)+_0x294ced+_0x23274c(0x1f6)+_0x1140b1[_0x23274c(0x17b)][_0x23274c(0x1e8)]+'\x22');try{const _0x5d59f4=new WarpGrepClient({'morphApiKey':_0x1a7df1,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x278ecf=await _0x5d59f4[_0x23274c(0x137)]({'searchTerm':_0x1140b1[_0x23274c(0x17b)][_0x23274c(0x1e8)],'github':_0x294ced,'branch':_0x1140b1[_0x23274c(0x17b)][_0x23274c(0x19b)]}),_0x30cde6=Date['now']()-_0x2ac8f9;logMcpStderr(_0x23274c(0x1d4)+_0x30cde6+'ms.\x20Success:\x20'+_0x278ecf[_0x23274c(0x181)]);const _0x1fc184=formatResult(_0x278ecf);return{'content':[{'type':_0x23274c(0x1b1),'text':_0x1fc184}]};}catch(_0x175549){const _0x44e5c1=Date[_0x23274c(0x189)]()-_0x2ac8f9,_0x564a83=_0x175549 instanceof Error?_0x175549[_0x23274c(0x14b)]:String(_0x175549);return logMcpStderr(_0x23274c(0x18f)+_0x44e5c1+_0x23274c(0x15b),_0x564a83),reportMorphError({'error_message':_0x564a83,'error_type':_0x175549 instanceof Error?_0x175549['constructor'][_0x23274c(0x1c3)]:_0x23274c(0x184),'context':{'tool':_0x23274c(0x1d5),'github_url':_0x294ced,'search_string':_0x1140b1[_0x23274c(0x17b)]['search_string'],'branch':_0x1140b1[_0x23274c(0x17b)]['branch']},'stack_trace':_0x175549 instanceof Error?_0x175549[_0x23274c(0x115)]:undefined,'source':'mcp-filesystem','tool':_0x23274c(0x1d5),'latency_ms':_0x44e5c1})[_0x23274c(0x12b)](()=>{}),{'content':[{'type':_0x23274c(0x1b1),'text':'GitHub\x20search\x20failed:\x20'+_0x564a83}],'isError':![]};}}default:throw new Error('Unknown\x20tool:\x20'+_0x275d4e);}}catch(_0x11a753){const _0x27d613=_0x11a753 instanceof Error?_0x11a753['message']:String(_0x11a753);return reportMorphError({'error_message':_0x27d613,'error_type':_0x11a753 instanceof Error?_0x11a753[_0x23274c(0x11e)]['name']:'UnknownError','context':{'tool':_0x275d4e,'arguments':_0x33842c?JSON['stringify'](_0x33842c)[_0x23274c(0x124)](0x0,0x1f4):undefined,'mcp_server_version':_0x23274c(0x206)},'stack_trace':_0x11a753 instanceof Error?_0x11a753[_0x23274c(0x115)]:undefined,'source':'mcp-filesystem'})[_0x23274c(0x12b)](()=>{}),{'content':[{'type':_0x23274c(0x1b1),'text':_0x23274c(0x19e)+_0x27d613}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x540fe8){const _0x5c57ea=a0_0x4156c2,_0x309028=await getValidRootDirectories(_0x540fe8);if(_0x309028['length']>0x0)allowedDirectories=[..._0x309028],logMcpStderr(_0x5c57ea(0x16a)+_0x309028[_0x5c57ea(0x17e)]+_0x5c57ea(0x1ac));else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x15be26=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x15be26&&(allowedDirectories=[_0x15be26],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x15be26));}catch(_0x2b816c){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x2b816c);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x36db49=a0_0x4156c2;try{const _0x34523c=await server[_0x36db49(0x138)]();_0x34523c&&_0x36db49(0x205)in _0x34523c&&await updateAllowedDirectoriesFromRoots(_0x34523c[_0x36db49(0x205)]);}catch(_0x569399){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x569399 instanceof Error?_0x569399[_0x36db49(0x14b)]:String(_0x569399));}}),server[a0_0x4156c2(0x1c8)]=async()=>{const _0x5c7ceb=a0_0x4156c2,_0x39b417=server['getClientCapabilities']();if(_0x39b417?.[_0x5c7ceb(0x205)])try{const _0x28ced7=await server[_0x5c7ceb(0x138)]();_0x28ced7&&_0x5c7ceb(0x205)in _0x28ced7?await updateAllowedDirectoriesFromRoots(_0x28ced7['roots']):logMcpStderr(_0x5c7ceb(0x14e));}catch(_0x22c70e){logMcpStderr(_0x5c7ceb(0x1f3),_0x22c70e instanceof Error?_0x22c70e[_0x5c7ceb(0x14b)]:String(_0x22c70e));}else{if(allowedDirectories[_0x5c7ceb(0x17e)]>0x0)logMcpStderr(_0x5c7ceb(0x16d),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x5c7ceb(0x18a));else throw new Error(_0x5c7ceb(0x15a));}}};async function runServer(){const _0x127d86=a0_0x4156c2,_0x5787e6=new StdioServerTransport();await server['connect'](_0x5787e6),logMcpStderr(_0x127d86(0x217)),allowedDirectories[_0x127d86(0x17e)]===0x0&&logMcpStderr(_0x127d86(0x144));}runServer()[a0_0x4156c2(0x12b)](_0x313bf0=>{const _0x167beb=a0_0x4156c2;logMcpStderr(_0x167beb(0x1dd),_0x313bf0),process[_0x167beb(0x18c)](0x1);});
|
|
2
|
+
const a0_0x517431=a0_0x33a4;(function(_0x202d00,_0x438dab){const _0x408f4c=a0_0x33a4,_0x30d8cf=_0x202d00();while(!![]){try{const _0x46583b=-parseInt(_0x408f4c(0x219))/0x1+parseInt(_0x408f4c(0x28e))/0x2+parseInt(_0x408f4c(0x28c))/0x3*(-parseInt(_0x408f4c(0x1f5))/0x4)+-parseInt(_0x408f4c(0x22b))/0x5*(-parseInt(_0x408f4c(0x1d9))/0x6)+parseInt(_0x408f4c(0x253))/0x7+parseInt(_0x408f4c(0x233))/0x8+-parseInt(_0x408f4c(0x282))/0x9;if(_0x46583b===_0x438dab)break;else _0x30d8cf['push'](_0x30d8cf['shift']());}catch(_0x5cc58e){_0x30d8cf['push'](_0x30d8cf['shift']());}}}(a0_0x4f06,0x71232));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_0x4f58e2 from'fs/promises';import a0_0x1019ba from'path';import a0_0x11aec8 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0xb8966d from'axios';function a0_0x33a4(_0x1462f2,_0x3265cd){_0x1462f2=_0x1462f2-0x1b4;const _0x4f0656=a0_0x4f06();let _0x33a4cf=_0x4f0656[_0x1462f2];return _0x33a4cf;}function fixPathRepetition(_0x57e927){const _0x5056d8=a0_0x33a4,_0x479f34=_0x57e927[_0x5056d8(0x1e1)](a0_0x1019ba[_0x5056d8(0x1d6)])['filter'](Boolean);if(_0x479f34[_0x5056d8(0x26f)]<0x2)return null;for(let _0xa3c03=Math[_0x5056d8(0x273)](_0x479f34[_0x5056d8(0x26f)]/0x2);_0xa3c03>=0x1;_0xa3c03--){for(let _0x54cfb6=0x0;_0x54cfb6<=_0x479f34[_0x5056d8(0x26f)]-0x2*_0xa3c03;_0x54cfb6++){const _0x459ab1=_0x479f34[_0x5056d8(0x204)](_0x54cfb6,_0x54cfb6+_0xa3c03),_0x405039=_0x479f34[_0x5056d8(0x204)](_0x54cfb6+_0xa3c03,_0x54cfb6+0x2*_0xa3c03);if(_0x459ab1['every']((_0x5884ce,_0x4ca6e5)=>_0x5884ce===_0x405039[_0x4ca6e5])){const _0x1c8718=[..._0x479f34[_0x5056d8(0x204)](0x0,_0x54cfb6),..._0x479f34[_0x5056d8(0x204)](_0x54cfb6+_0xa3c03)];return a0_0x1019ba[_0x5056d8(0x1d6)]+_0x1c8718['join'](a0_0x1019ba[_0x5056d8(0x1d6)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x8a8839=a0_0x33a4;try{const _0x331c9f=require('../package.json');return _0x331c9f['version']??'unknown';}catch(_0x3a63cc){return logMcpStderr(_0x8a8839(0x232),_0x3a63cc),_0x8a8839(0x246);}}function printHelp(){const _0x4797de=a0_0x33a4;console[_0x4797de(0x238)](_0x4797de(0x2a9)+getPackageVersion()),console['log'](_0x4797de(0x1bc)),console[_0x4797de(0x238)](_0x4797de(0x2a5)),console[_0x4797de(0x238)](_0x4797de(0x20e)),console[_0x4797de(0x238)](_0x4797de(0x21d)),console[_0x4797de(0x238)](_0x4797de(0x20c)),console[_0x4797de(0x238)](_0x4797de(0x25b)),console[_0x4797de(0x238)]('\x20\x20morph-mcp'),console[_0x4797de(0x238)](_0x4797de(0x1cb));}const cliArgs=process['argv'][a0_0x517431(0x204)](0x2),VERSION_FLAGS=new Set([a0_0x517431(0x29f),'-v','-V']),HELP_FLAGS=new Set([a0_0x517431(0x231),'-h']);cliArgs[a0_0x517431(0x2a1)](_0x1447d1=>VERSION_FLAGS['has'](_0x1447d1))&&(console[a0_0x517431(0x238)](a0_0x517431(0x2a9)+getPackageVersion()),process[a0_0x517431(0x1fb)](0x0));cliArgs[a0_0x517431(0x2a1)](_0xedf5cc=>HELP_FLAGS[a0_0x517431(0x217)](_0xedf5cc))&&(printHelp(),process[a0_0x517431(0x1fb)](0x0));function getCliArg(_0x58c95d){const _0x229696=a0_0x517431;for(let _0x4556e0=0x0;_0x4556e0<cliArgs[_0x229696(0x26f)];_0x4556e0++){const _0x451e9a=cliArgs[_0x4556e0];if(_0x451e9a[_0x229696(0x252)]('--'+_0x58c95d+'='))return _0x451e9a[_0x229696(0x204)](('--'+_0x58c95d+'=')['length']);if(_0x451e9a==='--'+_0x58c95d&&_0x4556e0+0x1<cliArgs[_0x229696(0x26f)])return cliArgs[_0x4556e0+0x1];}return undefined;}function a0_0x4f06(){const _0xdd4995=['-\x20Listed\x20directory\x20`','\x20(new\x20file)','timings','terminated','split','size','role','map','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','repo_path','Here\x20is\x20the\x20content\x20of\x20files:\x0a','list_directory','SubToolError','listRoots','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol',',\x20modified\x20','grep_search','Failed\x20to\x20read\x20file:\x20','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','realpath','error','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','description','12MYTcLF','BinaryFile','all','grep','timeout','\x20as\x20allowed\x20directory','exit','completionId','TimeoutError','[codebase_search]\x20compaction\x20failed','Unknown\x20error','Parent\x20directory\x20does\x20not\x20exist:\x20','params','etimedout','roots','slice','enum','search_type','name','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','tool','-\x20Read\x20file\x20`','glob','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','Warning:\x20','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','morph-v3-fast','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','Morph\x20Edit\x20','Applied','object','morph-mcp','MORPH_API_KEY','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','has','resolve','168557JAddip','PathError','instructions','function','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','Disabled\x20tools:\x20','Fallback:\x20Using\x20workspace\x20root\x20','success','default','connect','.git','node_modules','stringify','.\x20Changes:\x20','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','MORPH_API_URL','\x27\x20in\x20`','[github_codebase_search]\x20Searching\x20','5hZTina','dirname','indexOf','github_codebase_search','<file\x20path=\x22','string','--help','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','801016xWHKvY','basename','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','trim','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','log','owner_repo','RipgrepError','lines','runWarpGrep_call','0.2.0','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','File\x20read\x20error:','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','edit_file','toLowerCase','number','SymlinkError','unknown','Preview\x20changes\x20without\x20applying\x20them.','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.','ReadError','isArray','composer.json','\x22>\x0a','morph-warp-grep-v2.1','files','stack','Specific\x20commit\x20hash\x20to\x20search','\x20for:\x20\x22','startsWith','1824725RWjwCW','metadata','ms:','includes','getClientCapabilities','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','readFile','Morph\x20Edit\x20Preview','\x0aExamples:','code_edit','`\x20in\x20`','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','substring','ms.\x20Success:\x20','optional','Max\x20results\x20to\x20return','\x0a</file>','[github_codebase_search]\x20Done\x20in\x20','data','env','pattern','assistant','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','linesRemoved','Error:\x20','tool_call_id','length','describe','--api-key','.\x20Path:\x20','floor','path','WarpGrepError','MORPH_WARP_GREP_TIMEOUT','.vscode','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','-\x20Grepped\x20\x27','PWD','Morph\x20FastApply\x20failed\x20without\x20error\x20message','ENOENT','package.json','homedir','read','7326342ViOHXp','now','array','requiresApiKey','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','min','RipgrepNotAvailable','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','text','406143pfbYOn','\x0a...\x20(truncated,\x20total:\x20','1747170RfiKCq','parse','-\x20Glob\x20search\x20`','constructor','safeParse','filter','linesAdded','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','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','https://morphllm.com/api/error-report','inputSchema','DISABLED_TOOLS','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','WORKSPACE_ROOT','codebase_search','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','command','--version','tool_calls','some','join','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','application/json','\x0aOptions:','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','@morphllm/morphmcp\x20','errors','api-key','instruction','Error\x20running\x20fast\x20context\x20search:\x20','catch','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','For\x20deletions:\x0a','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','arguments','messages','added\x20','dryRun','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','timed\x20out','GitHub\x20search\x20failed:\x20','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','completed_with_file_errors','normalize','setNotificationHandler','toISOString','completed','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','Created\x20File','\x20-\x20','message','sk-','Repository\x20identifier','push','\x20valid\x20directories','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','mcp-filesystem','oninitialized','user','source','FileNotFound','finish','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','github_url','match','Invalid\x20arguments:\x20','utf-8','terminationReason','search_string','pyproject.toml','content','ENABLE_WORKSPACE_MODE','sep','setRequestHandler','❌\x20Morph\x20Edit\x20Failed:\x20','3706566ADvmbn','branch','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.','UnknownError'];a0_0x4f06=function(){return _0xdd4995;};return a0_0x4f06();}const args=[];for(let i=0x0;i<cliArgs[a0_0x517431(0x26f)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x517431(0x217)](arg)||HELP_FLAGS[a0_0x517431(0x217)](arg))continue;if(arg[a0_0x517431(0x252)]('--api-key='))continue;if(arg===a0_0x517431(0x271)){i++;continue;}args[a0_0x517431(0x1c2)](arg);}const WORKSPACE_ROOT=process['env'][a0_0x517431(0x29b)]||process[a0_0x517431(0x268)][a0_0x517431(0x27c)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0x517431(0x268)][a0_0x517431(0x1d5)]!=='false',MORPH_API_KEY=getCliArg(a0_0x517431(0x2ab))??process[a0_0x517431(0x268)][a0_0x517431(0x215)],MORPH_API_URL=process[a0_0x517431(0x268)][a0_0x517431(0x228)],MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0x517431(0x276)]?parseInt(process[a0_0x517431(0x268)]['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x517431(0x242),a0_0x517431(0x29c),a0_0x517431(0x22e)]),DISABLED_TOOLS=process[a0_0x517431(0x268)][a0_0x517431(0x299)]?new Set(process['env'][a0_0x517431(0x299)][a0_0x517431(0x1e1)](',')[a0_0x517431(0x1e4)](_0x5cfb27=>_0x5cfb27[a0_0x517431(0x236)]())['filter'](_0x4feafe=>_0x4feafe['length']>0x0)):new Set();if(DISABLED_TOOLS[a0_0x517431(0x1e2)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES['has'](tool)&&console[a0_0x517431(0x1f2)](a0_0x517431(0x1cc)+tool+'\x22.\x20Known\x20tools:\x20'+[...KNOWN_TOOL_NAMES][a0_0x517431(0x2a2)](',\x20'));}console[a0_0x517431(0x1f2)](a0_0x517431(0x21e)+[...DISABLED_TOOLS][a0_0x517431(0x2a2)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x517431(0x252)](a0_0x517431(0x1c0))&&!MORPH_API_KEY[a0_0x517431(0x252)]('morph-')&&logMcpStderr(a0_0x517431(0x23e));async function reportMorphError(_0x1634db){const _0x1cb270=a0_0x517431;try{await a0_0xb8966d['post'](_0x1cb270(0x297),{..._0x1634db,'timestamp':new Date()[_0x1cb270(0x1ba)](),'source':_0x1634db[_0x1cb270(0x1c8)]||_0x1cb270(0x1c5),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x1634db['context']}},{'timeout':0x1388,'headers':{'Content-Type':_0x1cb270(0x2a4),'Authorization':'Bearer\x20'+MORPH_API_KEY}});}catch{}}args[a0_0x517431(0x26f)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x517431(0x258)),logMcpStderr(a0_0x517431(0x29a)),logMcpStderr(a0_0x517431(0x29d)),logMcpStderr(a0_0x517431(0x289)),logMcpStderr('\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)'),logMcpStderr('At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.'));function normalizePath(_0x5d6424){const _0x67ea3f=a0_0x517431;return a0_0x1019ba[_0x67ea3f(0x1b8)](_0x5d6424);}function expandHome(_0x40b358){const _0x227e1b=a0_0x517431;if(_0x40b358[_0x227e1b(0x252)]('~/')||_0x40b358==='~')return a0_0x1019ba[_0x227e1b(0x2a2)](a0_0x11aec8[_0x227e1b(0x280)](),_0x40b358[_0x227e1b(0x204)](0x1));return _0x40b358;}let allowedDirectories=await Promise[a0_0x517431(0x1f7)](args[a0_0x517431(0x1e4)](async _0x7631aa=>{const _0x50a23e=a0_0x517431,_0x37b82e=expandHome(_0x7631aa),_0x1a932a=a0_0x1019ba['resolve'](_0x37b82e);try{const _0x78129c=await a0_0x4f58e2[_0x50a23e(0x1f1)](_0x1a932a);return normalizePath(_0x78129c);}catch(_0x267fe4){return normalizePath(_0x1a932a);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x517431(0x26f)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x517431(0x1c2)](workspaceDir),logMcpStderr('Workspace\x20mode\x20enabled:\x20Using\x20'+workspaceDir+a0_0x517431(0x1fa)));}catch(a0_0x4e9400){logMcpStderr(a0_0x517431(0x23f)+a0_0x4e9400);}async function detectWorkspaceRoot(_0x4e88ef){const _0x281040=a0_0x517431;let _0x4ea693=a0_0x1019ba[_0x281040(0x218)](_0x4e88ef);const _0x6be93d=[_0x281040(0x223),_0x281040(0x277),_0x281040(0x27f),'Cargo.toml',_0x281040(0x1d3),'go.mod','.cursor','tsconfig.json',_0x281040(0x24b)];while(_0x4ea693!==a0_0x1019ba[_0x281040(0x22c)](_0x4ea693)){for(const _0x4a7041 of _0x6be93d){const _0x2f82fd=a0_0x1019ba[_0x281040(0x2a2)](_0x4ea693,_0x4a7041);try{return await a0_0x4f58e2['access'](_0x2f82fd),normalizePath(_0x4ea693);}catch{}}_0x4ea693=a0_0x1019ba[_0x281040(0x22c)](_0x4ea693);}return normalizePath(_0x4e88ef);}await Promise[a0_0x517431(0x1f7)](args[a0_0x517431(0x1e4)](async _0x10b2e8=>{const _0x4002f3=a0_0x517431;try{const _0x180010=await a0_0x4f58e2['stat'](expandHome(_0x10b2e8));!_0x180010['isDirectory']()&&(logMcpStderr(_0x4002f3(0x26d)+_0x10b2e8+'\x20is\x20not\x20a\x20directory'),process[_0x4002f3(0x1fb)](0x1));}catch(_0x5db157){logMcpStderr('Error\x20accessing\x20directory\x20'+_0x10b2e8+':',_0x5db157),process[_0x4002f3(0x1fb)](0x1);}}));async function validatePath(_0x4377f5){const _0x11fd15=a0_0x517431,_0x29ad20=expandHome(_0x4377f5),_0xf00789=a0_0x1019ba[_0x11fd15(0x218)](_0x29ad20);try{const _0x2cba5a=await a0_0x4f58e2[_0x11fd15(0x1f1)](_0xf00789);return _0x2cba5a;}catch(_0x4ca9d4){if(_0x4ca9d4['code']==='ENOENT'){const _0x12e76c=a0_0x1019ba[_0x11fd15(0x22c)](_0xf00789);try{const _0x293c87=await a0_0x4f58e2[_0x11fd15(0x1f1)](_0x12e76c);return a0_0x1019ba[_0x11fd15(0x2a2)](_0x293c87,a0_0x1019ba[_0x11fd15(0x234)](_0xf00789));}catch{throw new Error(_0x11fd15(0x200)+_0x12e76c);}}throw _0x4ca9d4;}}const MorphEditFileArgsSchema=z[a0_0x517431(0x213)]({'path':z['string'](),'code_edit':z[a0_0x517431(0x230)]()[a0_0x517431(0x270)](a0_0x517431(0x227)),'instruction':z[a0_0x517431(0x230)]()[a0_0x517431(0x270)](a0_0x517431(0x2b1)),'dryRun':z['boolean']()[a0_0x517431(0x221)](![])[a0_0x517431(0x270)](a0_0x517431(0x247))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x517431(0x1db),WarpGrepArgsSchema=z[a0_0x517431(0x213)]({'search_string':z[a0_0x517431(0x230)]()[a0_0x517431(0x270)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x517431(0x230)]()[a0_0x517431(0x270)](a0_0x517431(0x1e5)),'search_type':z[a0_0x517431(0x205)]([a0_0x517431(0x221),a0_0x517431(0x224)])['optional']()['describe'](a0_0x517431(0x208))}),WarpGrepGitHubArgsSchema=z[a0_0x517431(0x213)]({'search_string':z[a0_0x517431(0x230)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x517431(0x230)]()['optional']()['describe'](a0_0x517431(0x248)),'owner_repo':z['string']()['optional']()[a0_0x517431(0x270)](a0_0x517431(0x2b6)),'branch':z['string']()['optional']()[a0_0x517431(0x270)]('Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)')}),CodebaseSearchArgsSchema=z['object']({'query':z[a0_0x517431(0x230)]()[a0_0x517431(0x270)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x517431(0x230)]()[a0_0x517431(0x270)](a0_0x517431(0x1c1)),'branch':z[a0_0x517431(0x230)]()[a0_0x517431(0x263)]()['describe'](a0_0x517431(0x2a7)),'commitHash':z[a0_0x517431(0x230)]()[a0_0x517431(0x263)]()[a0_0x517431(0x270)](a0_0x517431(0x250)),'targetDirectories':z[a0_0x517431(0x284)](z[a0_0x517431(0x230)]())[a0_0x517431(0x221)]([])['describe'](a0_0x517431(0x2a8)),'limit':z[a0_0x517431(0x244)]()[a0_0x517431(0x263)]()[a0_0x517431(0x221)](0xa)['describe'](a0_0x517431(0x264))}),server=new Server({'name':a0_0x517431(0x214),'version':a0_0x517431(0x23d)},{'capabilities':{'tools':{}}});server[a0_0x517431(0x1d7)](ListToolsRequestSchema,async()=>{const _0x4d0bb3=a0_0x517431,_0x2dfdbf=[{'name':_0x4d0bb3(0x242),'description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a'+'⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a'+_0x4d0bb3(0x1f0)+_0x4d0bb3(0x286)+'Benefits:\x0a'+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x4d0bb3(0x2a6)+_0x4d0bb3(0x25f)+_0x4d0bb3(0x2af)+_0x4d0bb3(0x241)+_0x4d0bb3(0x216)+'Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a'+_0x4d0bb3(0x2b0)+'-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a'+'-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a'+'Rules:\x0a'+_0x4d0bb3(0x278)+_0x4d0bb3(0x2a3)+_0x4d0bb3(0x1c4)+_0x4d0bb3(0x1eb)+_0x4d0bb3(0x28a)+'-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a'+'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','inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x4d0bb3(0x29c),'description':_0x4d0bb3(0x296)+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'+_0x4d0bb3(0x235)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x20fd29=_0x2dfdbf[_0x4d0bb3(0x293)](_0xcfb21f=>{const _0x29f5be=_0x4d0bb3;if(DISABLED_TOOLS[_0x29f5be(0x217)](_0xcfb21f[_0x29f5be(0x207)]))return console[_0x29f5be(0x1f2)]('Tool\x20'+_0xcfb21f[_0x29f5be(0x207)]+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if(_0x29f5be(0x285)in _0xcfb21f&&_0xcfb21f[_0x29f5be(0x285)]&&!MORPH_API_KEY)return logMcpStderr(_0x29f5be(0x20d)+_0xcfb21f[_0x29f5be(0x207)]+_0x29f5be(0x27a)),![];return!![];});return{'tools':_0x20fd29[_0x4d0bb3(0x1e4)](_0x65fae6=>({'name':_0x65fae6[_0x4d0bb3(0x207)],'description':_0x65fae6[_0x4d0bb3(0x1f4)],'inputSchema':_0x65fae6[_0x4d0bb3(0x298)]}))};}),server['setRequestHandler'](CallToolRequestSchema,async _0x16e958=>{const _0x3d3da1=a0_0x517431,{name:_0x13cd10,arguments:_0x14ef62}=_0x16e958[_0x3d3da1(0x201)];try{if(DISABLED_TOOLS[_0x3d3da1(0x217)](_0x13cd10))throw new Error('Tool\x20\x22'+_0x13cd10+'\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable');switch(_0x13cd10){case _0x3d3da1(0x242):{const _0x5ebf17=_0x14ef62&&typeof _0x14ef62===_0x3d3da1(0x213)&&_0x3d3da1(0x21b)in _0x14ef62&&!('instruction'in _0x14ef62)?{..._0x14ef62,'instruction':_0x14ef62['instructions'],'instructions':undefined}:_0x14ef62,_0x5ba07c=MorphEditFileArgsSchema['safeParse'](_0x5ebf17);if(!_0x5ba07c[_0x3d3da1(0x220)])throw new Error(_0x3d3da1(0x1b6)+_0x5ba07c[_0x3d3da1(0x1f2)]);const _0x2cfa04=await validatePath(_0x5ba07c[_0x3d3da1(0x267)]['path']);let _0xaa0e6a=null,_0x8caf6f=!![],_0x31901c=null;try{_0xaa0e6a=await a0_0x4f58e2['readFile'](_0x2cfa04,_0x3d3da1(0x1d0));}catch(_0x8f7090){const _0x371720=_0x8f7090['code'];_0x371720===_0x3d3da1(0x27e)?(_0x8caf6f=![],_0xaa0e6a=''):(_0x31901c=_0x3d3da1(0x1ef)+(_0x371720||_0x3d3da1(0x246))+_0x3d3da1(0x1be)+(_0x8f7090 instanceof Error?_0x8f7090['message']:String(_0x8f7090)),logMcpStderr(_0x3d3da1(0x20d)+_0x31901c));}let _0x205ac6;try{const _0x1a0a3c=MORPH_API_KEY;if(!_0x1a0a3c)throw new Error(_0x3d3da1(0x1f3));const _0xf5078=a0_0x1019ba[_0x3d3da1(0x22c)](_0x2cfa04),_0x345064=a0_0x1019ba[_0x3d3da1(0x234)](_0x2cfa04),_0x1fbb72=await executeEditFile({'target_filepath':_0x345064,'code_edit':_0x5ba07c[_0x3d3da1(0x267)][_0x3d3da1(0x25c)],'instruction':_0x5ba07c['data'][_0x3d3da1(0x2ac)]},{'morphApiKey':_0x1a0a3c,'morphApiUrl':MORPH_API_URL,'baseDir':_0xf5078,'autoWrite':!_0x5ba07c[_0x3d3da1(0x267)][_0x3d3da1(0x2b5)],'generateUdiff':![],'debug':![]});_0x205ac6=_0x1fbb72[_0x3d3da1(0x1fc)];if(!_0x1fbb72[_0x3d3da1(0x220)])throw new Error(_0x1fbb72['error']||_0x3d3da1(0x27d));const _0x45b2e2=_0x1fbb72['changes'],_0x1d76f3=_0x3d3da1(0x2b4)+_0x45b2e2[_0x3d3da1(0x294)]+',\x20removed\x20'+_0x45b2e2[_0x3d3da1(0x26c)]+_0x3d3da1(0x1ed)+_0x45b2e2['linesModified'];if(_0x5ba07c['data'][_0x3d3da1(0x2b5)])return{'content':[{'type':_0x3d3da1(0x28b),'text':_0x3d3da1(0x25a)+(_0x8caf6f?'':_0x3d3da1(0x1de))+':\x20'+_0x5ba07c[_0x3d3da1(0x267)]['instruction']+_0x3d3da1(0x226)+_0x1d76f3+_0x3d3da1(0x272)+_0x5ba07c['data'][_0x3d3da1(0x274)]+'.'}]};return{'content':[{'type':_0x3d3da1(0x28b),'text':_0x3d3da1(0x211)+(_0x8caf6f?_0x3d3da1(0x212):_0x3d3da1(0x1bd))+':\x20'+_0x5ba07c['data']['instruction']+_0x3d3da1(0x226)+_0x1d76f3+_0x3d3da1(0x272)+_0x5ba07c['data']['path']+'.'}]};}catch(_0x2040c6){const _0x173ae2=_0x2040c6 instanceof Error?_0x2040c6[_0x3d3da1(0x1bf)]:String(_0x2040c6);return reportMorphError({'error_message':_0x173ae2,'error_type':_0x2040c6 instanceof Error?_0x2040c6[_0x3d3da1(0x291)][_0x3d3da1(0x207)]:_0x3d3da1(0x1dc),'context':{'tool':'edit_file','completion_id':_0x205ac6,'file_path':_0x5ba07c['data']['path'],'validated_path':_0x2cfa04,'instruction':_0x5ba07c['data'][_0x3d3da1(0x2ac)],'model':'morph-v3-fast','dry_run':_0x5ba07c[_0x3d3da1(0x267)][_0x3d3da1(0x2b5)],'file_exists':_0x8caf6f,'file_read_error':_0x31901c,'file_readable':_0xaa0e6a!==null,'request_content':{'path':_0x5ba07c[_0x3d3da1(0x267)][_0x3d3da1(0x274)],'code_edit':_0x5ba07c[_0x3d3da1(0x267)][_0x3d3da1(0x25c)],'instruction':_0x5ba07c[_0x3d3da1(0x267)][_0x3d3da1(0x2ac)],'original_code':_0xaa0e6a!==null?_0xaa0e6a[_0x3d3da1(0x26f)]>0xc350?_0xaa0e6a[_0x3d3da1(0x261)](0x0,0xc350)+_0x3d3da1(0x28d)+_0xaa0e6a[_0x3d3da1(0x26f)]+'\x20chars)':_0xaa0e6a:'[could\x20not\x20read\x20file:\x20'+(_0x31901c||'unknown\x20error')+']','original_code_length':_0xaa0e6a?.[_0x3d3da1(0x26f)]??0x0,'model':_0x3d3da1(0x20f),'dry_run':_0x5ba07c['data'][_0x3d3da1(0x2b5)]}},'stack_trace':_0x2040c6 instanceof Error?_0x2040c6['stack']:undefined,'source':_0x3d3da1(0x1c5)})[_0x3d3da1(0x2ae)](()=>{}),{'content':[{'type':'text','text':_0x3d3da1(0x1d8)+_0x173ae2}],'isError':!![]};}}case _0x3d3da1(0x29c):{const _0xfdba71=WarpGrepArgsSchema[_0x3d3da1(0x292)](_0x14ef62);if(!_0xfdba71['success'])return{'content':[{'type':_0x3d3da1(0x28b),'text':_0x3d3da1(0x1cf)+_0xfdba71['error']}],'isError':!![]};const _0x21a1b7=_0x122c7c=>{const _0x361312=_0x3d3da1,_0x558337=[];for(const _0x4ed5a1 of _0x122c7c||[]){if(_0x4ed5a1[_0x361312(0x1e3)]===_0x361312(0x26a)&&Array[_0x361312(0x24a)](_0x4ed5a1[_0x361312(0x2a0)]))for(const _0x28b25d of _0x4ed5a1[_0x361312(0x2a0)]){try{const _0x45b31d=_0x28b25d[_0x361312(0x21c)]?.[_0x361312(0x207)],_0x3d54db=JSON[_0x361312(0x28f)](_0x28b25d[_0x361312(0x21c)]?.[_0x361312(0x2b2)]||'{}');if(_0x45b31d===_0x361312(0x1ee))_0x558337['push']('grep\x20\x27'+_0x3d54db[_0x361312(0x269)]+'\x27\x20'+(_0x3d54db['path']||'.'));else{if(_0x45b31d==='read')_0x558337[_0x361312(0x1c2)]('read\x20'+_0x3d54db['path']);else{if(_0x45b31d===_0x361312(0x1e8))_0x558337[_0x361312(0x1c2)]('list_directory\x20'+(_0x3d54db[_0x361312(0x29e)]||'.'));else{if(_0x45b31d===_0x361312(0x20b))_0x558337['push']('glob\x20\x27'+_0x3d54db[_0x361312(0x269)]+'\x27\x20'+(_0x3d54db[_0x361312(0x274)]||'.'));else _0x45b31d===_0x361312(0x1ca)&&_0x558337[_0x361312(0x1c2)](_0x361312(0x1ca));}}}}catch{}}}return _0x558337;},_0x3699af=_0x58e025=>{const _0x6bc0ef=_0x3d3da1,_0x1843bf=[];if(!_0x58e025||!Array[_0x6bc0ef(0x24a)](_0x58e025))return _0x1843bf;const _0x1859a1=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x6bc0ef(0x1c9),'tool':_0x6bc0ef(0x281)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x6bc0ef(0x21a),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x6bc0ef(0x249),'tool':_0x6bc0ef(0x281)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x6bc0ef(0x1f6),'tool':_0x6bc0ef(0x281)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x6bc0ef(0x23a),'tool':'grep'},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x6bc0ef(0x288),'tool':_0x6bc0ef(0x1f8)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x6bc0ef(0x1f6),'tool':_0x6bc0ef(0x281)},{'pattern':/\[SYMLINK\]/,'error_type':_0x6bc0ef(0x245),'tool':_0x6bc0ef(0x281)},{'pattern':/not a text file/,'error_type':_0x6bc0ef(0x1f6),'tool':_0x6bc0ef(0x281)},{'pattern':/symbolic link/,'error_type':_0x6bc0ef(0x245),'tool':'read'},{'pattern':/Error reading file:/,'error_type':_0x6bc0ef(0x249),'tool':_0x6bc0ef(0x281)},{'pattern':/status="error"/,'error_type':'ToolException','tool':_0x6bc0ef(0x246)}];let _0x2573e0=0x0;for(const _0x27a8a8 of _0x58e025){_0x27a8a8['role']==='assistant'&&Array[_0x6bc0ef(0x24a)](_0x27a8a8[_0x6bc0ef(0x2a0)])&&_0x2573e0++;const _0x3d7fc1=_0x27a8a8[_0x6bc0ef(0x1d4)];if((_0x27a8a8[_0x6bc0ef(0x1e3)]===_0x6bc0ef(0x209)||_0x27a8a8[_0x6bc0ef(0x1e3)]===_0x6bc0ef(0x1c7))&&_0x3d7fc1&&typeof _0x3d7fc1==='string')for(const {pattern:_0x25876a,error_type:_0x230a05,tool:_0x1acac6}of _0x1859a1){const _0x5e12ad=_0x3d7fc1[_0x6bc0ef(0x1ce)](new RegExp(_0x25876a[_0x6bc0ef(0x1c8)],'g'));if(_0x5e12ad)for(const _0x1d53c6 of _0x5e12ad){const _0x583b23=_0x3d7fc1[_0x6bc0ef(0x22d)](_0x1d53c6),_0x420bac=_0x3d7fc1['substring'](_0x583b23,Math[_0x6bc0ef(0x287)](_0x583b23+0xc8,_0x3d7fc1[_0x6bc0ef(0x26f)]));_0x1843bf['push']({'tool':_0x1acac6,'error_type':_0x230a05,'error_message':_0x420bac[_0x6bc0ef(0x1e1)]('\x0a')[0x0],'turn':_0x2573e0});}}}return _0x1843bf;};try{const _0x1ed893=a0_0x1019ba['resolve'](_0xfdba71['data']['repo_path']),_0x1ec3f8=_0xfdba71[_0x3d3da1(0x267)][_0x3d3da1(0x206)],_0x588269=_0x1ec3f8===_0x3d3da1(0x224)?{'allowNames':['node_modules']}:undefined,_0x5fb040=new LocalRipgrepProvider(_0x1ed893,undefined,_0x588269),_0x224f6f=await runWarpGrep({'searchTerm':_0xfdba71[_0x3d3da1(0x267)]['search_string'],'repoRoot':_0x1ed893,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x5fb040,'search_type':_0x1ec3f8}),_0x1bb04b=_0x3699af(_0x224f6f[_0x3d3da1(0x2b3)]);_0x1bb04b[_0x3d3da1(0x26f)]>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x1bb04b['length']+'\x20error(s)','error_type':_0x3d3da1(0x1e9),'level':'warn','tool':_0x3d3da1(0x29c),'context':{'repo_path':_0xfdba71[_0x3d3da1(0x267)][_0x3d3da1(0x1e6)],'query':_0xfdba71['data'][_0x3d3da1(0x1d2)],'model':'morph-warp-grep-v2.1','termination_reason':_0x224f6f[_0x3d3da1(0x1d1)],'sub_tool_errors':_0x1bb04b,'timings':_0x224f6f[_0x3d3da1(0x1df)],'tool_calls':_0x21a1b7(_0x224f6f[_0x3d3da1(0x2b3)]),'messages':_0x224f6f['messages']?.['map'](_0x1885e5=>({'role':_0x1885e5[_0x3d3da1(0x1e3)],'content':_0x1885e5['content'],..._0x1885e5['tool_calls']?{'tool_calls':_0x1885e5[_0x3d3da1(0x2a0)][_0x3d3da1(0x26f)]}:{},..._0x1885e5[_0x3d3da1(0x26e)]?{'tool_call_id':_0x1885e5['tool_call_id']}:{}}))},'source':'mcp-filesystem'})[_0x3d3da1(0x2ae)](()=>{});let _0x2e13c8='';if(_0x224f6f[_0x3d3da1(0x1d1)]===_0x3d3da1(0x1bb)&&_0x224f6f[_0x3d3da1(0x1ca)]?.['metadata']?.['files']){const _0x4521ea=_0x224f6f[_0x3d3da1(0x1ca)][_0x3d3da1(0x254)][_0x3d3da1(0x24e)];if(_0x4521ea[_0x3d3da1(0x26f)]===0x0)return _0x2e13c8=_0x224f6f[_0x3d3da1(0x1ca)]['payload']||_0x3d3da1(0x210),{'content':[{'type':'text','text':_0x2e13c8}]};const _0xbc5746=[],_0x3a02aa=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x39876c of _0x224f6f[_0x3d3da1(0x2b3)]){if(_0x39876c[_0x3d3da1(0x1e3)]==='assistant'&&Array['isArray'](_0x39876c[_0x3d3da1(0x2a0)]))for(const _0x76b591 of _0x39876c['tool_calls']){try{const _0x357cf6=_0x76b591[_0x3d3da1(0x21c)]?.[_0x3d3da1(0x207)],_0x3fa033=JSON[_0x3d3da1(0x28f)](_0x76b591[_0x3d3da1(0x21c)]?.[_0x3d3da1(0x2b2)]||'{}');if(_0x357cf6===_0x3d3da1(0x1ee))_0x3a02aa[_0x3d3da1(0x1c2)](_0x3d3da1(0x27b)+_0x3fa033[_0x3d3da1(0x269)]+_0x3d3da1(0x229)+(_0x3fa033[_0x3d3da1(0x274)]||'.')+'`');else{if(_0x357cf6==='read')_0x3a02aa[_0x3d3da1(0x1c2)](_0x3d3da1(0x20a)+_0x3fa033['path']+'`');else{if(_0x357cf6===_0x3d3da1(0x1e8))_0x3a02aa[_0x3d3da1(0x1c2)](_0x3d3da1(0x1dd)+(_0x3fa033[_0x3d3da1(0x29e)]||'.')+'`');else _0x357cf6===_0x3d3da1(0x20b)&&_0x3a02aa[_0x3d3da1(0x1c2)](_0x3d3da1(0x290)+_0x3fa033[_0x3d3da1(0x269)]+_0x3d3da1(0x25d)+(_0x3fa033[_0x3d3da1(0x274)]||'.')+'`');}}}catch{}}}_0xbc5746['push'](_0x3a02aa['join']('\x0a'));const _0x594b88=['','Relevant\x20context\x20found:'];for(const _0x3a7405 of _0x4521ea){if(_0x3a7405[_0x3d3da1(0x23b)]==='*')_0x594b88['push']('-\x20'+_0x3a7405['path']+':*');else{if(Array[_0x3d3da1(0x24a)](_0x3a7405[_0x3d3da1(0x23b)])){const _0xa541a3=_0x3a7405['lines'][_0x3d3da1(0x1e4)](([_0x937a8f,_0x205f3f])=>{if(_0x937a8f===_0x205f3f)return''+_0x937a8f;return _0x937a8f+'-'+_0x205f3f;});_0x594b88[_0x3d3da1(0x1c2)]('-\x20'+_0x3a7405[_0x3d3da1(0x274)]+':'+_0xa541a3[_0x3d3da1(0x2a2)](','));}else _0x594b88[_0x3d3da1(0x1c2)]('-\x20'+_0x3a7405[_0x3d3da1(0x274)]+':*');}}_0x594b88[_0x3d3da1(0x1c2)](''),_0xbc5746[_0x3d3da1(0x1c2)](_0x594b88['join']('\x0a')),_0xbc5746['push'](_0x3d3da1(0x1e7));const _0x1adb7e=[],_0x4dbdaa=[];for(const _0x4a57eb of _0x4521ea){let _0x2242ec=a0_0x1019ba[_0x3d3da1(0x218)](_0xfdba71[_0x3d3da1(0x267)][_0x3d3da1(0x1e6)],_0x4a57eb['path']),_0x3a369a=null,_0x419175=null;try{_0x3a369a=await a0_0x4f58e2[_0x3d3da1(0x259)](_0x2242ec,{'encoding':_0x3d3da1(0x1d0)});}catch(_0x56440f){const _0x6ab03b=fixPathRepetition(_0x2242ec);if(_0x6ab03b)try{_0x3a369a=await a0_0x4f58e2['readFile'](_0x6ab03b,{'encoding':'utf-8'}),_0x2242ec=_0x6ab03b;}catch{_0x419175=_0x56440f instanceof Error?_0x56440f:new Error(String(_0x56440f));}else _0x419175=_0x56440f instanceof Error?_0x56440f:new Error(String(_0x56440f));}if(_0x3a369a!==null){const _0x464143=_0x3a369a['split'](/\r?\n/),_0x4e3159=[];if(_0x4a57eb[_0x3d3da1(0x23b)]==='*'||!Array[_0x3d3da1(0x24a)](_0x4a57eb[_0x3d3da1(0x23b)]))for(let _0x4b66de=0x1;_0x4b66de<=_0x464143[_0x3d3da1(0x26f)];_0x4b66de++){const _0x219d8e=_0x464143[_0x4b66de-0x1];_0x4e3159['push'](_0x4b66de+'|\x20'+_0x219d8e);}else for(const [_0x5883e1,_0x29b82a]of _0x4a57eb[_0x3d3da1(0x23b)]){_0x4e3159[_0x3d3da1(0x26f)]>0x0&&_0x4e3159['push']('');for(let _0x18446f=_0x5883e1;_0x18446f<=_0x29b82a&&_0x18446f<=_0x464143['length'];_0x18446f++){const _0x334a0a=_0x464143[_0x18446f-0x1];_0x4e3159['push'](_0x18446f+'|\x20'+_0x334a0a);}}_0x4dbdaa[_0x3d3da1(0x1c2)]({'path':_0x4a57eb[_0x3d3da1(0x274)],'content':_0x4e3159['join']('\x0a')});}else _0x1adb7e['push'](_0x3d3da1(0x22f)+_0x4a57eb[_0x3d3da1(0x274)]+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x419175?.[_0x3d3da1(0x1bf)]||_0x3d3da1(0x1ff))+_0x3d3da1(0x265));}try{const _0x36713b=await compactFileContexts(_0x4dbdaa,_0xfdba71['data'][_0x3d3da1(0x1d2)],MORPH_API_KEY,MORPH_API_URL);for(const _0x390559 of _0x36713b){_0x1adb7e[_0x3d3da1(0x1c2)](_0x3d3da1(0x22f)+_0x390559[_0x3d3da1(0x274)]+'\x22>\x0a'+_0x390559['content']+_0x3d3da1(0x265));}}catch(_0x54f7bd){console[_0x3d3da1(0x1f2)](_0x3d3da1(0x1fe),_0x54f7bd);for(const _0x4af8ba of _0x4dbdaa){_0x1adb7e[_0x3d3da1(0x1c2)](_0x3d3da1(0x22f)+_0x4af8ba[_0x3d3da1(0x274)]+_0x3d3da1(0x24c)+_0x4af8ba[_0x3d3da1(0x1d4)]+'\x0a</file>');}}_0xbc5746[_0x3d3da1(0x1c2)](_0x1adb7e[_0x3d3da1(0x2a2)]('\x0a\x0a')),_0x2e13c8=_0xbc5746['join']('\x0a');const _0xed6de3=_0x224f6f[_0x3d3da1(0x2aa)]?.[_0x3d3da1(0x293)](_0x51f90c=>_0x51f90c[_0x3d3da1(0x1bf)]?.[_0x3d3da1(0x252)](_0x3d3da1(0x240)))||[];if(_0xed6de3[_0x3d3da1(0x26f)]>0x0){const _0x219d12=_0xed6de3[_0x3d3da1(0x1e4)](_0x319dc7=>_0x319dc7[_0x3d3da1(0x1bf)])[_0x3d3da1(0x2a2)](';\x20');reportMorphError({'error_message':_0x219d12,'error_type':'FileReadError','context':{'tool':_0x3d3da1(0x29c),'repo_path':_0xfdba71[_0x3d3da1(0x267)][_0x3d3da1(0x1e6)],'query':_0xfdba71[_0x3d3da1(0x267)][_0x3d3da1(0x1d2)],'model':_0x3d3da1(0x24d),'termination_reason':_0x3d3da1(0x1b7),'error_count':_0xed6de3['length'],'is_timeout':![],'timings':_0x224f6f[_0x3d3da1(0x1df)],'files_attempted':_0x4521ea['map'](_0x5c96cd=>({'path':_0x5c96cd[_0x3d3da1(0x274)],'lines':_0x5c96cd[_0x3d3da1(0x23b)]})),'tool_calls':_0x21a1b7(_0x224f6f[_0x3d3da1(0x2b3)]),'messages':_0x224f6f[_0x3d3da1(0x2b3)]?.[_0x3d3da1(0x1e4)](_0x3e6dfc=>({'role':_0x3e6dfc[_0x3d3da1(0x1e3)],'content':_0x3e6dfc[_0x3d3da1(0x1d4)],..._0x3e6dfc[_0x3d3da1(0x2a0)]?{'tool_calls':_0x3e6dfc['tool_calls'][_0x3d3da1(0x26f)]}:{},..._0x3e6dfc[_0x3d3da1(0x26e)]?{'tool_call_id':_0x3e6dfc[_0x3d3da1(0x26e)]}:{}})),'request_content':{'query':_0xfdba71[_0x3d3da1(0x267)][_0x3d3da1(0x1d2)],'repo_path':_0xfdba71[_0x3d3da1(0x267)][_0x3d3da1(0x1e6)],'repoRoot':a0_0x1019ba['resolve'](_0xfdba71[_0x3d3da1(0x267)]['repo_path']),'model':_0x3d3da1(0x24d)}},'source':'mcp-filesystem'})[_0x3d3da1(0x2ae)](()=>{});}}else{if(_0x224f6f['terminationReason']===_0x3d3da1(0x1e0)&&_0x224f6f[_0x3d3da1(0x2aa)][_0x3d3da1(0x26f)]>0x0){const _0x3fbe27=_0x224f6f[_0x3d3da1(0x2aa)][_0x3d3da1(0x1e4)](_0x24c4b9=>_0x24c4b9[_0x3d3da1(0x1bf)])[_0x3d3da1(0x2a2)](';\x20');_0x2e13c8=_0x3d3da1(0x26d)+_0x3fbe27;const _0x6ad26d=_0x3fbe27[_0x3d3da1(0x243)]()[_0x3d3da1(0x256)](_0x3d3da1(0x1f9))||_0x3fbe27[_0x3d3da1(0x243)]()[_0x3d3da1(0x256)](_0x3d3da1(0x2b7))||_0x3fbe27[_0x3d3da1(0x243)]()[_0x3d3da1(0x256)]('etimedout'),_0x421acf=_0x224f6f['finish']?.['metadata']?.['files'],_0x9c535e=_0x224f6f[_0x3d3da1(0x2aa)][0x0];reportMorphError({'error_message':_0x3fbe27,'error_type':_0x6ad26d?_0x3d3da1(0x1fd):_0x9c535e?.[_0x3d3da1(0x291)]?.[_0x3d3da1(0x207)]||_0x3d3da1(0x275),'context':{'tool':_0x3d3da1(0x29c),'repo_path':_0xfdba71['data']['repo_path'],'query':_0xfdba71['data'][_0x3d3da1(0x1d2)],'model':_0x3d3da1(0x24d),'termination_reason':_0x224f6f[_0x3d3da1(0x1d1)],'error_count':_0x224f6f[_0x3d3da1(0x2aa)][_0x3d3da1(0x26f)],'is_timeout':_0x6ad26d,'timings':_0x224f6f[_0x3d3da1(0x1df)],'files_attempted':_0x421acf?.[_0x3d3da1(0x1e4)](_0x30144f=>({'path':_0x30144f['path'],'lines':_0x30144f[_0x3d3da1(0x23b)]})),'tool_calls':_0x21a1b7(_0x224f6f[_0x3d3da1(0x2b3)]),'messages':_0x224f6f['messages']?.[_0x3d3da1(0x1e4)](_0x151ba1=>({'role':_0x151ba1[_0x3d3da1(0x1e3)],'content':_0x151ba1['content'],..._0x151ba1['tool_calls']?{'tool_calls':_0x151ba1[_0x3d3da1(0x2a0)][_0x3d3da1(0x26f)]}:{},..._0x151ba1['tool_call_id']?{'tool_call_id':_0x151ba1[_0x3d3da1(0x26e)]}:{}})),'request_content':{'query':_0xfdba71[_0x3d3da1(0x267)]['search_string'],'repo_path':_0xfdba71['data'][_0x3d3da1(0x1e6)],'repoRoot':a0_0x1019ba[_0x3d3da1(0x218)](_0xfdba71[_0x3d3da1(0x267)][_0x3d3da1(0x1e6)]),'model':_0x3d3da1(0x24d)}},'stack_trace':_0x9c535e?.[_0x3d3da1(0x24f)]||undefined,'source':_0x3d3da1(0x1c5)})[_0x3d3da1(0x2ae)](()=>{});}else _0x2e13c8=_0x3d3da1(0x25e);}return{'content':[{'type':_0x3d3da1(0x28b),'text':_0x2e13c8}]};}catch(_0x3cd5e9){const _0x1ad27d=_0x3cd5e9 instanceof Error?_0x3cd5e9[_0x3d3da1(0x1bf)]:String(_0x3cd5e9),_0x49c39a=_0x1ad27d[_0x3d3da1(0x243)]()['includes'](_0x3d3da1(0x1f9))||_0x1ad27d[_0x3d3da1(0x243)]()[_0x3d3da1(0x256)]('timed\x20out')||_0x1ad27d[_0x3d3da1(0x243)]()[_0x3d3da1(0x256)](_0x3d3da1(0x202))||_0x3cd5e9 instanceof Error&&_0x3cd5e9[_0x3d3da1(0x207)]===_0x3d3da1(0x1fd);return reportMorphError({'error_message':_0x1ad27d,'error_type':_0x49c39a?'TimeoutError':_0x3cd5e9 instanceof Error?_0x3cd5e9[_0x3d3da1(0x291)][_0x3d3da1(0x207)]:_0x3d3da1(0x1dc),'context':{'tool':'codebase_search','repo_path':_0xfdba71[_0x3d3da1(0x267)]['repo_path'],'query':_0xfdba71[_0x3d3da1(0x267)][_0x3d3da1(0x1d2)],'model':_0x3d3da1(0x24d),'is_timeout':_0x49c39a,'exception_phase':_0x3d3da1(0x23c),'request_content':{'query':_0xfdba71[_0x3d3da1(0x267)][_0x3d3da1(0x1d2)],'repo_path':_0xfdba71[_0x3d3da1(0x267)][_0x3d3da1(0x1e6)],'repoRoot':a0_0x1019ba[_0x3d3da1(0x218)](_0xfdba71[_0x3d3da1(0x267)][_0x3d3da1(0x1e6)]),'model':_0x3d3da1(0x24d)}},'stack_trace':_0x3cd5e9 instanceof Error?_0x3cd5e9[_0x3d3da1(0x24f)]:undefined,'source':_0x3d3da1(0x1c5)})['catch'](()=>{}),{'content':[{'type':'text','text':_0x3d3da1(0x2ad)+_0x1ad27d}],'isError':![]};}}case _0x3d3da1(0x22e):{const _0x3a4692=WarpGrepGitHubArgsSchema['safeParse'](_0x14ef62);if(!_0x3a4692[_0x3d3da1(0x220)])return{'content':[{'type':_0x3d3da1(0x28b),'text':'Invalid\x20arguments:\x20'+_0x3a4692[_0x3d3da1(0x1f2)]}],'isError':!![]};const _0x46b66c=_0x3a4692[_0x3d3da1(0x267)][_0x3d3da1(0x1cd)]||_0x3a4692['data'][_0x3d3da1(0x239)];if(!_0x46b66c)return{'content':[{'type':_0x3d3da1(0x28b),'text':_0x3d3da1(0x279)}],'isError':!![]};const _0x5fe8b4=MORPH_API_KEY;if(!_0x5fe8b4)throw new Error(_0x3d3da1(0x1f3));const _0x3d494b=Date[_0x3d3da1(0x283)]();logMcpStderr(_0x3d3da1(0x22a)+_0x46b66c+_0x3d3da1(0x251)+_0x3a4692['data']['search_string']+'\x22');try{const _0x4186d7=new WarpGrepClient({'morphApiKey':_0x5fe8b4,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x2c45fe=await _0x4186d7['searchGitHub']({'searchTerm':_0x3a4692[_0x3d3da1(0x267)][_0x3d3da1(0x1d2)],'github':_0x46b66c,'branch':_0x3a4692['data'][_0x3d3da1(0x1da)]}),_0x5ac616=Date[_0x3d3da1(0x283)]()-_0x3d494b;logMcpStderr(_0x3d3da1(0x266)+_0x5ac616+_0x3d3da1(0x262)+_0x2c45fe[_0x3d3da1(0x220)]);const _0x3dba99=formatResult(_0x2c45fe);return{'content':[{'type':_0x3d3da1(0x28b),'text':_0x3dba99}]};}catch(_0x15c44c){const _0x443bb3=Date['now']()-_0x3d494b,_0x1efb14=_0x15c44c instanceof Error?_0x15c44c[_0x3d3da1(0x1bf)]:String(_0x15c44c);return logMcpStderr('[github_codebase_search]\x20Failed\x20in\x20'+_0x443bb3+_0x3d3da1(0x255),_0x1efb14),reportMorphError({'error_message':_0x1efb14,'error_type':_0x15c44c instanceof Error?_0x15c44c[_0x3d3da1(0x291)][_0x3d3da1(0x207)]:_0x3d3da1(0x1dc),'context':{'tool':_0x3d3da1(0x22e),'github_url':_0x46b66c,'search_string':_0x3a4692['data'][_0x3d3da1(0x1d2)],'branch':_0x3a4692[_0x3d3da1(0x267)][_0x3d3da1(0x1da)]},'stack_trace':_0x15c44c instanceof Error?_0x15c44c[_0x3d3da1(0x24f)]:undefined,'source':'mcp-filesystem','tool':_0x3d3da1(0x22e),'latency_ms':_0x443bb3})[_0x3d3da1(0x2ae)](()=>{}),{'content':[{'type':_0x3d3da1(0x28b),'text':_0x3d3da1(0x1b4)+_0x1efb14}],'isError':![]};}}default:throw new Error('Unknown\x20tool:\x20'+_0x13cd10);}}catch(_0x56e06f){const _0x2a1f04=_0x56e06f instanceof Error?_0x56e06f[_0x3d3da1(0x1bf)]:String(_0x56e06f);return reportMorphError({'error_message':_0x2a1f04,'error_type':_0x56e06f instanceof Error?_0x56e06f[_0x3d3da1(0x291)][_0x3d3da1(0x207)]:'UnknownError','context':{'tool':_0x13cd10,'arguments':_0x14ef62?JSON[_0x3d3da1(0x225)](_0x14ef62)[_0x3d3da1(0x261)](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x56e06f instanceof Error?_0x56e06f[_0x3d3da1(0x24f)]:undefined,'source':'mcp-filesystem'})['catch'](()=>{}),{'content':[{'type':_0x3d3da1(0x28b),'text':'Error:\x20'+_0x2a1f04}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x2ad4c0){const _0x3794e5=a0_0x517431,_0x48877f=await getValidRootDirectories(_0x2ad4c0);if(_0x48877f[_0x3794e5(0x26f)]>0x0)allowedDirectories=[..._0x48877f],logMcpStderr(_0x3794e5(0x237)+_0x48877f['length']+_0x3794e5(0x1c3));else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x59f76a=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x59f76a&&(allowedDirectories=[_0x59f76a],logMcpStderr(_0x3794e5(0x21f)+_0x59f76a));}catch(_0x4c87e1){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x4c87e1);}}}server[a0_0x517431(0x1b9)](RootsListChangedNotificationSchema,async()=>{const _0x3106ae=a0_0x517431;try{const _0x6bd4a4=await server[_0x3106ae(0x1ea)]();_0x6bd4a4&&_0x3106ae(0x203)in _0x6bd4a4&&await updateAllowedDirectoriesFromRoots(_0x6bd4a4[_0x3106ae(0x203)]);}catch(_0xaa184b){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0xaa184b instanceof Error?_0xaa184b[_0x3106ae(0x1bf)]:String(_0xaa184b));}}),server[a0_0x517431(0x1c6)]=async()=>{const _0x433a3c=a0_0x517431,_0x404264=server[_0x433a3c(0x257)]();if(_0x404264?.[_0x433a3c(0x203)])try{const _0x504160=await server[_0x433a3c(0x1ea)]();_0x504160&&_0x433a3c(0x203)in _0x504160?await updateAllowedDirectoriesFromRoots(_0x504160['roots']):logMcpStderr(_0x433a3c(0x26b));}catch(_0x2021e6){logMcpStderr(_0x433a3c(0x1b5),_0x2021e6 instanceof Error?_0x2021e6[_0x433a3c(0x1bf)]:String(_0x2021e6));}else{if(allowedDirectories[_0x433a3c(0x26f)]>0x0)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:',allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x433a3c(0x295));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 _0x3e5982=a0_0x517431,_0x3aa490=new StdioServerTransport();await server[_0x3e5982(0x222)](_0x3aa490),logMcpStderr(_0x3e5982(0x260)),allowedDirectories[_0x3e5982(0x26f)]===0x0&&logMcpStderr(_0x3e5982(0x1ec));}runServer()[a0_0x517431(0x2ae)](_0x23518d=>{const _0x2d2fcb=a0_0x517431;logMcpStderr('Fatal\x20error\x20running\x20server:',_0x23518d),process[_0x2d2fcb(0x1fb)](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
var a1_0x39bd60=a1_0x2069;(function(_0x43b83f,_0x55c28e){var _0x41bcfe=a1_0x2069,_0x525c05=_0x43b83f();while(!![]){try{var _0x10fea0=-parseInt(_0x41bcfe(0x1c3))/0x1+parseInt(_0x41bcfe(0x1b8))/0x2+parseInt(_0x41bcfe(0x1bf))/0x3+-parseInt(_0x41bcfe(0x1b6))/0x4*(-parseInt(_0x41bcfe(0x1b4))/0x5)+parseInt(_0x41bcfe(0x1b9))/0x6*(parseInt(_0x41bcfe(0x1c4))/0x7)+-parseInt(_0x41bcfe(0x1c5))/0x8+-parseInt(_0x41bcfe(0x1b7))/0x9*(-parseInt(_0x41bcfe(0x1bd))/0xa);if(_0x10fea0===_0x55c28e)break;else _0x525c05['push'](_0x525c05['shift']());}catch(_0x248e1a){_0x525c05['push'](_0x525c05['shift']());}}}(a1_0x4623,0xcbec2));import a1_0x144e61 from'os';function a1_0x4623(){var _0x32e009=['3298385GngYKh','Windows','4bAeMZh','403209Zkzxfq','1807968BjeGAz','906kfOZNj','[os=','Linux','macOS','50JzQGQj','platform','938634RDGIaY','darwin','linux','win32','895743uQxGFN','25879NRgbMQ','7422256jhtPlG'];a1_0x4623=function(){return _0x32e009;};return a1_0x4623();}export function getOperatingSystemType(_0x250322=a1_0x144e61[a1_0x39bd60(0x1be)]()){var _0x2accd9=a1_0x39bd60;switch(_0x250322){case _0x2accd9(0x1c0):return _0x2accd9(0x1bc);case _0x2accd9(0x1c2):return _0x2accd9(0x1b5);case _0x2accd9(0x1c1):return _0x2accd9(0x1bb);default:return'Unknown';}}function a1_0x2069(_0x19edda,_0xd8023b){_0x19edda=_0x19edda-0x1b4;var _0x4623d7=a1_0x4623();var _0x2069c5=_0x4623d7[_0x19edda];return _0x2069c5;}export function formatMcpLogMessage(_0xf8a175,_0x5c027b=a1_0x144e61[a1_0x39bd60(0x1be)]()){var _0x36bcf8=a1_0x39bd60;return _0x36bcf8(0x1ba)+getOperatingSystemType(_0x5c027b)+']\x20'+_0xf8a175;}export function logMcpStderr(_0x1b1a34,..._0xfda2b9){console['error'](formatMcpLogMessage(_0x1b1a34),..._0xfda2b9);}
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x463d7e,_0x5b3800){const _0x53a037=a2_0x5047,_0x13e8f3=_0x463d7e();while(!![]){try{const _0x16125b=parseInt(_0x53a037(0x1fa))/0x1+parseInt(_0x53a037(0x1f9))/0x2+parseInt(_0x53a037(0x1ed))/0x3+parseInt(_0x53a037(0x1f3))/0x4+-parseInt(_0x53a037(0x1ef))/0x5+parseInt(_0x53a037(0x1f1))/0x6+-parseInt(_0x53a037(0x1f5))/0x7;if(_0x16125b===_0x5b3800)break;else _0x13e8f3['push'](_0x13e8f3['shift']());}catch(_0x55f218){_0x13e8f3['push'](_0x13e8f3['shift']());}}}(a2_0x2880,0x4cc40));import a2_0xf36f25 from'path';function a2_0x5047(_0x3b1e2b,_0x1272ee){_0x3b1e2b=_0x3b1e2b-0x1e9;const _0x288076=a2_0x2880();let _0x50476e=_0x288076[_0x3b1e2b];return _0x50476e;}function a2_0x2880(){const _0x32c340=['test','4313617xjAbcp','charAt','trim','substring','481094pulALC','274396iBZdDY','join','replace','match','normalize','toUpperCase','97119CRzUkT','homedir','2296500WtZZGB','startsWith','1750836vVsBZo','slice','2203364AVFnuY'];a2_0x2880=function(){return _0x32c340;};return a2_0x2880();}import a2_0xd32699 from'os';export function convertToWindowsPath(_0x4828e3){const _0x48334f=a2_0x5047;if(_0x4828e3[_0x48334f(0x1f0)]('/mnt/')){const _0x37b78e=_0x4828e3[_0x48334f(0x1f6)](0x5)[_0x48334f(0x1ec)](),_0x3ede03=_0x4828e3[_0x48334f(0x1f2)](0x6)[_0x48334f(0x1e9)](/\//g,'\x5c');return _0x37b78e+':'+_0x3ede03;}if(_0x4828e3['match'](/^\/[a-zA-Z]\//)){const _0x34abf9=_0x4828e3[_0x48334f(0x1f6)](0x1)[_0x48334f(0x1ec)](),_0x2cb921=_0x4828e3[_0x48334f(0x1f2)](0x2)[_0x48334f(0x1e9)](/\//g,'\x5c');return _0x34abf9+':'+_0x2cb921;}if(_0x4828e3[_0x48334f(0x1ea)](/^[a-zA-Z]:/))return _0x4828e3['replace'](/\//g,'\x5c');return _0x4828e3;}export function normalizePath(_0x199c55){const _0x3aab0a=a2_0x5047;_0x199c55=_0x199c55[_0x3aab0a(0x1f7)]()[_0x3aab0a(0x1e9)](/^["']|["']$/g,'');const _0x5bed24=_0x199c55[_0x3aab0a(0x1f0)]('/')&&!_0x199c55[_0x3aab0a(0x1ea)](/^\/mnt\/[a-z]\//i)&&!_0x199c55[_0x3aab0a(0x1ea)](/^\/[a-zA-Z]\//);if(_0x5bed24)return _0x199c55[_0x3aab0a(0x1e9)](/\/+/g,'/')[_0x3aab0a(0x1e9)](/\/+$/,'');_0x199c55=convertToWindowsPath(_0x199c55);if(_0x199c55['startsWith']('\x5c\x5c')){let _0x585f1f=_0x199c55;_0x585f1f=_0x585f1f['replace'](/^\\{2,}/,'\x5c\x5c');const _0x128ebc=_0x585f1f[_0x3aab0a(0x1f8)](0x2)['replace'](/\\\\/g,'\x5c');_0x199c55='\x5c\x5c'+_0x128ebc;}else _0x199c55=_0x199c55[_0x3aab0a(0x1e9)](/\\\\/g,'\x5c');let _0x382a46=a2_0xf36f25[_0x3aab0a(0x1eb)](_0x199c55);_0x199c55['startsWith']('\x5c\x5c')&&!_0x382a46[_0x3aab0a(0x1f0)]('\x5c\x5c')&&(_0x382a46='\x5c'+_0x382a46);if(_0x382a46[_0x3aab0a(0x1ea)](/^[a-zA-Z]:/)){let _0x427e53=_0x382a46[_0x3aab0a(0x1e9)](/\//g,'\x5c');return/^[a-z]:/[_0x3aab0a(0x1f4)](_0x427e53)&&(_0x427e53=_0x427e53[_0x3aab0a(0x1f6)](0x0)[_0x3aab0a(0x1ec)]()+_0x427e53[_0x3aab0a(0x1f2)](0x1)),_0x427e53;}return _0x382a46['replace'](/\//g,'\x5c');}export function expandHome(_0x1ff81f){const _0x8442d2=a2_0x5047;if(_0x1ff81f['startsWith']('~/')||_0x1ff81f==='~')return a2_0xf36f25[_0x8442d2(0x1fb)](a2_0xd32699[_0x8442d2(0x1ee)](),_0x1ff81f['slice'](0x1));return _0x1ff81f;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x1a6376,_0x211e03){const _0x41d90c=a3_0x1d7d,_0x382db3=_0x1a6376();while(!![]){try{const _0x4b5dc1=parseInt(_0x41d90c(0x10a))/0x1+-parseInt(_0x41d90c(0x10b))/0x2+parseInt(_0x41d90c(0x111))/0x3+parseInt(_0x41d90c(0x10c))/0x4*(-parseInt(_0x41d90c(0x107))/0x5)+parseInt(_0x41d90c(0x101))/0x6*(parseInt(_0x41d90c(0x110))/0x7)+-parseInt(_0x41d90c(0x105))/0x8+-parseInt(_0x41d90c(0x115))/0x9*(parseInt(_0x41d90c(0x112))/0xa);if(_0x4b5dc1===_0x211e03)break;else _0x382db3['push'](_0x382db3['shift']());}catch(_0x28e960){_0x382db3['push'](_0x382db3['shift']());}}}(a3_0x59b3,0x7671d));import a3_0x45a776 from'path';function a3_0x59b3(){const _0x2f5032=['isAbsolute','3222168SbcNHs','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','378230VCwoUQ','includes','isArray','695999yvTZmU','605092djrnDj','20MiwoXB','startsWith','sep','length','1244075FVokTP','2786121wuqtMF','1533820uIrCjq','Path\x20must\x20be\x20absolute\x20after\x20normalization','resolve','45TtJpfz','normalize','24pvqGUs','string','some'];a3_0x59b3=function(){return _0x2f5032;};return a3_0x59b3();}function a3_0x1d7d(_0x2b2ef7,_0x47f9db){_0x2b2ef7=_0x2b2ef7-0x101;const _0x59b3dc=a3_0x59b3();let _0x1d7d4a=_0x59b3dc[_0x2b2ef7];return _0x1d7d4a;}export function isPathWithinAllowedDirectories(_0x1fcd83,_0x59bd9f){const _0x41251e=a3_0x1d7d;if(typeof _0x1fcd83!==_0x41251e(0x102)||!Array[_0x41251e(0x109)](_0x59bd9f))return![];if(!_0x1fcd83||_0x59bd9f[_0x41251e(0x10f)]===0x0)return![];if(_0x1fcd83[_0x41251e(0x108)]('\x00'))return![];let _0x1ae27a;try{_0x1ae27a=a3_0x45a776[_0x41251e(0x114)](a3_0x45a776[_0x41251e(0x116)](_0x1fcd83));}catch{return![];}if(!a3_0x45a776[_0x41251e(0x104)](_0x1ae27a))throw new Error(_0x41251e(0x113));return _0x59bd9f[_0x41251e(0x103)](_0x5a319e=>{const _0x32652a=_0x41251e;if(typeof _0x5a319e!==_0x32652a(0x102)||!_0x5a319e)return![];if(_0x5a319e['includes']('\x00'))return![];let _0x1a6329;try{_0x1a6329=a3_0x45a776[_0x32652a(0x114)](a3_0x45a776[_0x32652a(0x116)](_0x5a319e));}catch{return![];}if(!a3_0x45a776['isAbsolute'](_0x1a6329))throw new Error(_0x32652a(0x106));if(_0x1ae27a===_0x1a6329)return!![];if(_0x1a6329===a3_0x45a776[_0x32652a(0x10e)])return _0x1ae27a[_0x32652a(0x10d)](a3_0x45a776['sep']);return _0x1ae27a[_0x32652a(0x10d)](_0x1a6329+a3_0x45a776[_0x32652a(0x10e)]);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x1aff87,_0xf74c12){const _0x2cb14e=a4_0x2114,_0x13dd52=_0x1aff87();while(!![]){try{const _0x3b0600=-parseInt(_0x2cb14e(0x1b7))/0x1*(-parseInt(_0x2cb14e(0x1b2))/0x2)+parseInt(_0x2cb14e(0x1a2))/0x3+parseInt(_0x2cb14e(0x1ad))/0x4+-parseInt(_0x2cb14e(0x1a8))/0x5*(parseInt(_0x2cb14e(0x1af))/0x6)+parseInt(_0x2cb14e(0x1a6))/0x7*(-parseInt(_0x2cb14e(0x1ab))/0x8)+-parseInt(_0x2cb14e(0x1a9))/0x9*(parseInt(_0x2cb14e(0x1b6))/0xa)+parseInt(_0x2cb14e(0x1ac))/0xb;if(_0x3b0600===_0xf74c12)break;else _0x13dd52['push'](_0x13dd52['shift']());}catch(_0x4783e3){_0x13dd52['push'](_0x13dd52['shift']());}}}(a4_0xa252,0x215ed));import{promises as a4_0x41d402}from'fs';import a4_0x290ea1 from'path';import a4_0x123c5f from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x22bfbc){const _0x593b59=a4_0x2114;try{const _0x445ec2=_0x22bfbc[_0x593b59(0x1b5)](_0x593b59(0x1a5))?_0x22bfbc[_0x593b59(0x1b1)](0x7):_0x22bfbc,_0xf9335a=_0x445ec2[_0x593b59(0x1b5)]('~/')||_0x445ec2==='~'?a4_0x290ea1[_0x593b59(0x1ae)](a4_0x123c5f[_0x593b59(0x1a3)](),_0x445ec2['slice'](0x1)):_0x445ec2,_0x30af46=a4_0x290ea1['resolve'](_0xf9335a),_0x2d78ce=await a4_0x41d402[_0x593b59(0x1a7)](_0x30af46);return normalizePath(_0x2d78ce);}catch{return null;}}function a4_0x2114(_0x3c5c67,_0x13f9ef){_0x3c5c67=_0x3c5c67-0x1a0;const _0xa252c=a4_0xa252();let _0x211483=_0xa252c[_0x3c5c67];return _0x211483;}function a4_0xa252(){const _0x325842=['slice','74350TCZPFa','stat','message','startsWith','110wqZvml','1GRvOMn','invalid\x20path\x20or\x20inaccessible','non-directory\x20root','770742tLgEVH','homedir','push','file://','4319uHOQHQ','realpath','15BBLnNV','195417awYLFA','Skipping\x20invalid\x20directory:\x20','2888JBJgrB','3155559iBLZDV','909324oQQtpJ','join','420048ZMmyAI','uri'];a4_0xa252=function(){return _0x325842;};return a4_0xa252();}function formatDirectoryError(_0x13a263,_0x33afa6,_0x122163){const _0x3c1ab7=a4_0x2114;if(_0x122163)return'Skipping\x20'+_0x122163+':\x20'+_0x13a263;const _0x2845f8=_0x33afa6 instanceof Error?_0x33afa6[_0x3c1ab7(0x1b4)]:String(_0x33afa6);return _0x3c1ab7(0x1aa)+_0x13a263+'\x20due\x20to\x20error:\x20'+_0x2845f8;}export async function getValidRootDirectories(_0x3141ff){const _0x51f207=a4_0x2114,_0x528f04=[];for(const _0x7b55 of _0x3141ff){const _0x2ff2a9=await parseRootUri(_0x7b55[_0x51f207(0x1b0)]);if(!_0x2ff2a9){logMcpStderr(formatDirectoryError(_0x7b55[_0x51f207(0x1b0)],undefined,_0x51f207(0x1a0)));continue;}try{const _0x45e2ff=await a4_0x41d402[_0x51f207(0x1b3)](_0x2ff2a9);_0x45e2ff['isDirectory']()?_0x528f04[_0x51f207(0x1a4)](_0x2ff2a9):logMcpStderr(formatDirectoryError(_0x2ff2a9,undefined,_0x51f207(0x1a1)));}catch(_0x21f98d){logMcpStderr(formatDirectoryError(_0x2ff2a9,_0x21f98d));}}return _0x528f04;}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.153",
|
|
4
4
|
"description": "Fast & accurate MCP server with AI-powered file editing and intelligent code search. Prevents context pollution and saves time for a better user experience.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Morph (https://morphllm.com)",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@google/generative-ai": "^0.21.0",
|
|
37
37
|
"@modelcontextprotocol/sdk": "^1.12.3",
|
|
38
|
-
"@morphllm/morphsdk": "0.2.
|
|
38
|
+
"@morphllm/morphsdk": "0.2.157",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|