@morphllm/morphmcp 0.8.128 → 0.8.130
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
|
-
function a0_0x4e40(){const _0xa75543=['data','roots','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','.\x20Changes:\x20','Tool\x20\x22','Preview\x20changes\x20without\x20applying\x20them.','Morph\x20Edit\x20','split','join','[github_codebase_search]\x20Failed\x20in\x20','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','indexOf','\x20disabled\x20via\x20DISABLED_TOOLS','sk-','timed\x20out','TimeoutError','go.mod','stack','File\x20read\x20error:','slice','❌\x20Morph\x20Edit\x20Failed:\x20','setNotificationHandler','every','constructor','codebase_search','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','owner_repo','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.','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','some','user','Morph\x20Edit\x20Preview','filter','PWD','0.2.0','requiresApiKey','-\x20Read\x20file\x20`','files','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','44EDqUVT','MORPH_WARP_GREP_TIMEOUT','ENOENT','dirname','connect','includes','homedir','assistant','access','Error:\x20','object','context','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','code','morph-mcp','Warning:\x20','name','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','--api-key','dryRun','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','composer.json','added\x20','log','RipgrepError','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','default','resolve','Fallback:\x20Using\x20workspace\x20root\x20','success','\x20valid\x20directories','cwd','message','FileReadError','165036XjDYnX','description','list_directory\x20','match','BinaryFile','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','sep','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','Workspace\x20mode\x20enabled:\x20Using\x20','timings','terminated','\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','instruction','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','searchGitHub','content','api-key','messages','search_type','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','utf-8','129887MjzhrI','safeParse','2840984bupleq','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','catch','linesAdded','Relevant\x20context\x20found:','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]',',\x20modified\x20','[github_codebase_search]\x20Done\x20in\x20','Disabled\x20tools:\x20','ReadError','Specific\x20commit\x20hash\x20to\x20search','read','[could\x20not\x20read\x20file:\x20','morph-warp-grep-v1-1111v0','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','.\x20Path:\x20','exit','\x20(new\x20file)','71667nvPPaQ','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','\x0aExamples:','path','lines','node_modules','github_url','Failed\x20to\x20read\x20file:\x20','</file>','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.','<file\x20path=\x22','has','https://morphllm.com/api/error-report','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','\x0a...\x20(truncated,\x20total:\x20','\x20is\x20not\x20a\x20directory','mcp-filesystem','source','FileNotFound','github_codebase_search','metadata','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','normalize','Created\x20File','isArray','length','.vscode','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','code_edit','read\x20','\x27\x20in\x20`','Cargo.toml','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','role','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','floor','array','--api-key=','terminationReason','WarpGrepError','post','text','SubToolError','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','readFile','completed','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.','branch','params','Morph\x20FastApply\x20failed\x20without\x20error\x20message','toLowerCase','inputSchema','finish','[github_codebase_search]\x20Searching\x20','isDirectory','edit_file','describe','ToolException','payload','boolean','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','\x0aOptions:','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','Bearer\x20','SymlinkError','stat','search_string','--help','startsWith','.cursor','all','Tool\x20','7kDoNPH','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','realpath','Max\x20results\x20to\x20return','2otDzBy','Here\x20is\x20the\x20content\x20of\x20files:\x0a','1980460lpKsCw','\x0a</file>','runWarpGrep_call','\x22.\x20Known\x20tools:\x20','size','getClientCapabilities','Invalid\x20arguments:\x20','Parent\x20directory\x20does\x20not\x20exist:\x20','2213034tTVftj','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','\x20\x20morph-mcp','enum','version','@morphllm/morphmcp\x20','WORKSPACE_ROOT','RipgrepNotAvailable','false','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','ms:','setRequestHandler','morph-v3-fast','listRoots','491425cCGiUF','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','warn','Rules:\x0a','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','toISOString','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','optional','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','trim','UnknownError','push','min','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','DISABLED_TOOLS','WarpGrep\x20sub-tool\x20errors:\x20','-\x20Grepped\x20\x27','map','tsconfig.json','basename','morph-','.git','env','1070GYUSAl','repo_path','string','error','now','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','errors','linesRemoved','unknown','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','-\x20Listed\x20directory\x20`','A\x20code\x20exploration\x20tool,\x20use\x20this\x20tool\x20when\x20exploring\x20an\x20unfamiliar\x20codebase,\x20and\x20you\x27re\x20unsure\x20of\x20the\x20exact\x20file\x20or\x20string\x20to\x20look\x20for.\x20This\x20tool\x20will\x20find\x20all\x20relevant\x20bits\x20of\x20code\x20given\x20a\x20natural\x20lanugage\x20description,\x20or\x20questin\x20of\x20the\x20thing\x20you\x27re\x20looking\x20for.\x20','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','Applied'];a0_0x4e40=function(){return _0xa75543;};return a0_0x4e40();}const a0_0x44994e=a0_0x2846;(function(_0x1197f7,_0x291f66){const _0x9dacef=a0_0x2846,_0x515403=_0x1197f7();while(!![]){try{const _0x4f53f1=-parseInt(_0x9dacef(0x29f))/0x1*(parseInt(_0x9dacef(0x1f9))/0x2)+-parseInt(_0x9dacef(0x288))/0x3*(parseInt(_0x9dacef(0x265))/0x4)+parseInt(_0x9dacef(0x1fb))/0x5+-parseInt(_0x9dacef(0x203))/0x6+-parseInt(_0x9dacef(0x1f5))/0x7*(-parseInt(_0x9dacef(0x2a1))/0x8)+parseInt(_0x9dacef(0x2b3))/0x9*(parseInt(_0x9dacef(0x22c))/0xa)+-parseInt(_0x9dacef(0x213))/0xb;if(_0x4f53f1===_0x291f66)break;else _0x515403['push'](_0x515403['shift']());}catch(_0x398045){_0x515403['push'](_0x515403['shift']());}}}(a0_0x4e40,0x6f043));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_0x3e9020 from'fs/promises';import a0_0x27dcdd from'path';import a0_0x5c48dc 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 a0_0xab6413 from'axios';function fixPathRepetition(_0x2b6b20){const _0x49d8c3=a0_0x2846,_0x24b61f=_0x2b6b20[_0x49d8c3(0x244)](a0_0x27dcdd[_0x49d8c3(0x28e)])[_0x49d8c3(0x25e)](Boolean);if(_0x24b61f[_0x49d8c3(0x1c5)]<0x2)return null;for(let _0x21cb8b=Math[_0x49d8c3(0x1cf)](_0x24b61f['length']/0x2);_0x21cb8b>=0x1;_0x21cb8b--){for(let _0x3881a8=0x0;_0x3881a8<=_0x24b61f[_0x49d8c3(0x1c5)]-0x2*_0x21cb8b;_0x3881a8++){const _0x260902=_0x24b61f[_0x49d8c3(0x251)](_0x3881a8,_0x3881a8+_0x21cb8b),_0x4bbeec=_0x24b61f[_0x49d8c3(0x251)](_0x3881a8+_0x21cb8b,_0x3881a8+0x2*_0x21cb8b);if(_0x260902[_0x49d8c3(0x254)]((_0x2c695b,_0x2f84af)=>_0x2c695b===_0x4bbeec[_0x2f84af])){const _0x231715=[..._0x24b61f[_0x49d8c3(0x251)](0x0,_0x3881a8),..._0x24b61f[_0x49d8c3(0x251)](_0x3881a8+_0x21cb8b)];return a0_0x27dcdd[_0x49d8c3(0x28e)]+_0x231715[_0x49d8c3(0x245)](a0_0x27dcdd[_0x49d8c3(0x28e)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x5e7a16=a0_0x2846;try{const _0x360e76=require('../package.json');return _0x360e76[_0x5e7a16(0x207)]??'unknown';}catch(_0x29febb){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x29febb),'unknown';}}function printHelp(){const _0x4d5a85=a0_0x2846;console['log'](_0x4d5a85(0x208)+getPackageVersion()),console[_0x4d5a85(0x27d)](_0x4d5a85(0x2a6)),console['log'](_0x4d5a85(0x1e9)),console[_0x4d5a85(0x27d)]('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x4d5a85(0x27d)](_0x4d5a85(0x257)),console[_0x4d5a85(0x27d)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console['log'](_0x4d5a85(0x2b5)),console[_0x4d5a85(0x27d)](_0x4d5a85(0x205)),console['log'](_0x4d5a85(0x2c0));}const cliArgs=process['argv'][a0_0x44994e(0x251)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set([a0_0x44994e(0x1f0),'-h']);cliArgs[a0_0x44994e(0x25b)](_0x2ed6ad=>VERSION_FLAGS[a0_0x44994e(0x2be)](_0x2ed6ad))&&(console[a0_0x44994e(0x27d)](a0_0x44994e(0x208)+getPackageVersion()),process[a0_0x44994e(0x2b1)](0x0));cliArgs['some'](_0x5ec49e=>HELP_FLAGS[a0_0x44994e(0x2be)](_0x5ec49e))&&(printHelp(),process[a0_0x44994e(0x2b1)](0x0));function getCliArg(_0x5bbf33){const _0x4bffcc=a0_0x44994e;for(let _0x4e8370=0x0;_0x4e8370<cliArgs['length'];_0x4e8370++){const _0x5e4b02=cliArgs[_0x4e8370];if(_0x5e4b02['startsWith']('--'+_0x5bbf33+'='))return _0x5e4b02['slice'](('--'+_0x5bbf33+'=')[_0x4bffcc(0x1c5)]);if(_0x5e4b02==='--'+_0x5bbf33&&_0x4e8370+0x1<cliArgs[_0x4bffcc(0x1c5)])return cliArgs[_0x4e8370+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x44994e(0x1c5)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x44994e(0x2be)](arg)||HELP_FLAGS[a0_0x44994e(0x2be)](arg))continue;if(arg[a0_0x44994e(0x1f1)](a0_0x44994e(0x1d1)))continue;if(arg===a0_0x44994e(0x278)){i++;continue;}args[a0_0x44994e(0x220)](arg);}const WORKSPACE_ROOT=process[a0_0x44994e(0x22b)][a0_0x44994e(0x209)]||process[a0_0x44994e(0x22b)][a0_0x44994e(0x25f)]||process[a0_0x44994e(0x285)](),ENABLE_WORKSPACE_MODE=process[a0_0x44994e(0x22b)]['ENABLE_WORKSPACE_MODE']!==a0_0x44994e(0x20b),MORPH_API_KEY=getCliArg(a0_0x44994e(0x29a))??process[a0_0x44994e(0x22b)]['MORPH_API_KEY'],MORPH_API_URL=process[a0_0x44994e(0x22b)]['MORPH_API_URL'],MORPH_WARP_GREP_TIMEOUT=process[a0_0x44994e(0x22b)][a0_0x44994e(0x266)]?parseInt(process[a0_0x44994e(0x22b)]['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x44994e(0x1e3),'codebase_search',a0_0x44994e(0x2c7)]),DISABLED_TOOLS=process['env'][a0_0x44994e(0x223)]?new Set(process[a0_0x44994e(0x22b)][a0_0x44994e(0x223)][a0_0x44994e(0x244)](',')[a0_0x44994e(0x226)](_0x731d39=>_0x731d39['trim']())[a0_0x44994e(0x25e)](_0x22e99e=>_0x22e99e[a0_0x44994e(0x1c5)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0x44994e(0x1ff)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x44994e(0x2be)](tool)&&console[a0_0x44994e(0x22f)](a0_0x44994e(0x1e8)+tool+a0_0x44994e(0x1fe)+[...KNOWN_TOOL_NAMES][a0_0x44994e(0x245)](',\x20'));}console['error'](a0_0x44994e(0x2a9)+[...DISABLED_TOOLS][a0_0x44994e(0x245)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY['startsWith'](a0_0x44994e(0x24b))&&!MORPH_API_KEY['startsWith'](a0_0x44994e(0x229))&&logMcpStderr(a0_0x44994e(0x264));async function reportMorphError(_0x22ac5c){const _0x1e132b=a0_0x44994e;try{await a0_0xab6413[_0x1e132b(0x1d4)](_0x1e132b(0x2bf),{..._0x22ac5c,'timestamp':new Date()[_0x1e132b(0x219)](),'source':_0x22ac5c[_0x1e132b(0x2c5)]||_0x1e132b(0x2c4),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x22ac5c[_0x1e132b(0x270)]}},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':_0x1e132b(0x1ec)+MORPH_API_KEY}});}catch{}}args[a0_0x44994e(0x1c5)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x44994e(0x296)),logMcpStderr(a0_0x44994e(0x21c)),logMcpStderr('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),logMcpStderr(a0_0x44994e(0x1c1)),logMcpStderr(a0_0x44994e(0x20c)),logMcpStderr(a0_0x44994e(0x277)));function normalizePath(_0x28bfb3){const _0x4a51a9=a0_0x44994e;return a0_0x27dcdd[_0x4a51a9(0x1c2)](_0x28bfb3);}function expandHome(_0x37d236){const _0x2f595d=a0_0x44994e;if(_0x37d236[_0x2f595d(0x1f1)]('~/')||_0x37d236==='~')return a0_0x27dcdd[_0x2f595d(0x245)](a0_0x5c48dc[_0x2f595d(0x26b)](),_0x37d236[_0x2f595d(0x251)](0x1));return _0x37d236;}let allowedDirectories=await Promise[a0_0x44994e(0x1f3)](args[a0_0x44994e(0x226)](async _0x561151=>{const _0x23c6e4=a0_0x44994e,_0x4d60be=expandHome(_0x561151),_0x1c7831=a0_0x27dcdd[_0x23c6e4(0x281)](_0x4d60be);try{const _0x4b08ac=await a0_0x3e9020[_0x23c6e4(0x1f7)](_0x1c7831);return normalizePath(_0x4b08ac);}catch(_0x3bbf18){return normalizePath(_0x1c7831);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x44994e(0x1c5)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x44994e(0x220)](workspaceDir),logMcpStderr(a0_0x44994e(0x290)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x321cf0){logMcpStderr(a0_0x44994e(0x204)+a0_0x321cf0);}async function detectWorkspaceRoot(_0x105b16){const _0x4cb048=a0_0x44994e;let _0x2e2d29=a0_0x27dcdd[_0x4cb048(0x281)](_0x105b16);const _0x2fbb3a=[_0x4cb048(0x22a),_0x4cb048(0x1c6),'package.json',_0x4cb048(0x1cb),'pyproject.toml',_0x4cb048(0x24e),_0x4cb048(0x1f2),_0x4cb048(0x227),_0x4cb048(0x27b)];while(_0x2e2d29!==a0_0x27dcdd['dirname'](_0x2e2d29)){for(const _0x28cf84 of _0x2fbb3a){const _0x4c6d02=a0_0x27dcdd['join'](_0x2e2d29,_0x28cf84);try{return await a0_0x3e9020[_0x4cb048(0x26d)](_0x4c6d02),normalizePath(_0x2e2d29);}catch{}}_0x2e2d29=a0_0x27dcdd[_0x4cb048(0x268)](_0x2e2d29);}return normalizePath(_0x105b16);}await Promise[a0_0x44994e(0x1f3)](args[a0_0x44994e(0x226)](async _0x3baa37=>{const _0xc2f93=a0_0x44994e;try{const _0x2898e5=await a0_0x3e9020[_0xc2f93(0x1ee)](expandHome(_0x3baa37));!_0x2898e5[_0xc2f93(0x1e2)]()&&(logMcpStderr(_0xc2f93(0x26e)+_0x3baa37+_0xc2f93(0x2c3)),process[_0xc2f93(0x2b1)](0x1));}catch(_0x31f156){logMcpStderr('Error\x20accessing\x20directory\x20'+_0x3baa37+':',_0x31f156),process[_0xc2f93(0x2b1)](0x1);}}));async function validatePath(_0x33b11b){const _0x572ea9=a0_0x44994e,_0x2716c4=expandHome(_0x33b11b),_0x5cfaa1=a0_0x27dcdd[_0x572ea9(0x281)](_0x2716c4);try{const _0x34f5a9=await a0_0x3e9020[_0x572ea9(0x1f7)](_0x5cfaa1);return _0x34f5a9;}catch(_0x58be04){if(_0x58be04[_0x572ea9(0x273)]===_0x572ea9(0x267)){const _0x31c837=a0_0x27dcdd[_0x572ea9(0x268)](_0x5cfaa1);try{const _0x24d100=await a0_0x3e9020[_0x572ea9(0x1f7)](_0x31c837);return a0_0x27dcdd[_0x572ea9(0x245)](_0x24d100,a0_0x27dcdd[_0x572ea9(0x228)](_0x5cfaa1));}catch{throw new Error(_0x572ea9(0x202)+_0x31c837);}}throw _0x58be04;}}const MorphEditFileArgsSchema=z[a0_0x44994e(0x26f)]({'path':z[a0_0x44994e(0x22e)](),'code_edit':z[a0_0x44994e(0x22e)]()[a0_0x44994e(0x1e4)]('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z['string']()[a0_0x44994e(0x1e4)](a0_0x44994e(0x271)),'dryRun':z[a0_0x44994e(0x1e7)]()[a0_0x44994e(0x280)](![])[a0_0x44994e(0x1e4)](a0_0x44994e(0x242))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x44994e(0x1da),WarpGrepArgsSchema=z['object']({'search_string':z[a0_0x44994e(0x22e)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x44994e(0x22e)]()['describe'](a0_0x44994e(0x29d)),'search_type':z[a0_0x44994e(0x206)](['default',a0_0x44994e(0x2b8)])[a0_0x44994e(0x21b)]()[a0_0x44994e(0x1e4)](a0_0x44994e(0x297))}),WarpGrepGitHubArgsSchema=z[a0_0x44994e(0x26f)]({'search_string':z[a0_0x44994e(0x22e)]()[a0_0x44994e(0x1e4)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()['optional']()[a0_0x44994e(0x1e4)](a0_0x44994e(0x259)),'owner_repo':z[a0_0x44994e(0x22e)]()['optional']()[a0_0x44994e(0x1e4)](a0_0x44994e(0x214)),'branch':z[a0_0x44994e(0x22e)]()[a0_0x44994e(0x21b)]()[a0_0x44994e(0x1e4)](a0_0x44994e(0x294))}),CodebaseSearchArgsSchema=z[a0_0x44994e(0x26f)]({'query':z[a0_0x44994e(0x22e)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x44994e(0x22e)]()['describe']('Repository\x20identifier'),'branch':z['string']()[a0_0x44994e(0x21b)]()[a0_0x44994e(0x1e4)]('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x44994e(0x22e)]()[a0_0x44994e(0x21b)]()[a0_0x44994e(0x1e4)](a0_0x44994e(0x2ab)),'targetDirectories':z[a0_0x44994e(0x1d0)](z['string']())[a0_0x44994e(0x280)]([])[a0_0x44994e(0x1e4)](a0_0x44994e(0x248)),'limit':z['number']()[a0_0x44994e(0x21b)]()[a0_0x44994e(0x280)](0xa)[a0_0x44994e(0x1e4)](a0_0x44994e(0x1f8))}),server=new Server({'name':a0_0x44994e(0x274),'version':'0.2.0'},{'capabilities':{'tools':{}}});server[a0_0x44994e(0x210)](ListToolsRequestSchema,async()=>{const _0x53a2ba=a0_0x44994e,_0x4b928d=[{'name':_0x53a2ba(0x1e3),'description':_0x53a2ba(0x23f)+_0x53a2ba(0x27a)+_0x53a2ba(0x236)+_0x53a2ba(0x1d7)+'Benefits:\x0a'+_0x53a2ba(0x20e)+_0x53a2ba(0x215)+_0x53a2ba(0x28f)+_0x53a2ba(0x25a)+_0x53a2ba(0x20d)+_0x53a2ba(0x21a)+_0x53a2ba(0x272)+'For\x20deletions:\x0a'+_0x53a2ba(0x27f)+_0x53a2ba(0x21d)+_0x53a2ba(0x217)+_0x53a2ba(0x1ce)+_0x53a2ba(0x1eb)+_0x53a2ba(0x1cc)+_0x53a2ba(0x1c7)+_0x53a2ba(0x235)+_0x53a2ba(0x23e)+_0x53a2ba(0x222),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x53a2ba(0x256),'description':_0x53a2ba(0x238)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x53a2ba(0x2b4)+'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':!![]}],_0x49756e=_0x4b928d[_0x53a2ba(0x25e)](_0x334afe=>{const _0x4cebdb=_0x53a2ba;if(DISABLED_TOOLS[_0x4cebdb(0x2be)](_0x334afe[_0x4cebdb(0x276)]))return console[_0x4cebdb(0x22f)](_0x4cebdb(0x1f4)+_0x334afe[_0x4cebdb(0x276)]+_0x4cebdb(0x24a)),![];if(_0x4cebdb(0x261)in _0x334afe&&_0x334afe[_0x4cebdb(0x261)]&&!MORPH_API_KEY)return logMcpStderr(_0x4cebdb(0x275)+_0x334afe['name']+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x49756e[_0x53a2ba(0x226)](_0x4f9559=>({'name':_0x4f9559[_0x53a2ba(0x276)],'description':_0x4f9559[_0x53a2ba(0x289)],'inputSchema':_0x4f9559[_0x53a2ba(0x1df)]}))};}),server['setRequestHandler'](CallToolRequestSchema,async _0x25025c=>{const _0x4a704f=a0_0x44994e,{name:_0x38dbbb,arguments:_0x43813e}=_0x25025c[_0x4a704f(0x1dc)];try{if(DISABLED_TOOLS[_0x4a704f(0x2be)](_0x38dbbb))throw new Error(_0x4a704f(0x241)+_0x38dbbb+_0x4a704f(0x293));switch(_0x38dbbb){case _0x4a704f(0x1e3):{const _0xade907=MorphEditFileArgsSchema[_0x4a704f(0x2a0)](_0x43813e);if(!_0xade907[_0x4a704f(0x283)])throw new Error(_0x4a704f(0x2c1)+_0xade907['error']);const _0x2fc471=await validatePath(_0xade907['data'][_0x4a704f(0x2b6)]);let _0x293b96=null,_0x42c824=!![],_0x475f50=null;try{_0x293b96=await a0_0x3e9020[_0x4a704f(0x1d8)](_0x2fc471,_0x4a704f(0x29e));}catch(_0x4f7051){const _0x272f6c=_0x4f7051[_0x4a704f(0x273)];_0x272f6c===_0x4a704f(0x267)?(_0x42c824=![],_0x293b96=''):(_0x475f50=_0x4a704f(0x2ba)+(_0x272f6c||'unknown')+'\x20-\x20'+(_0x4f7051 instanceof Error?_0x4f7051[_0x4a704f(0x286)]:String(_0x4f7051)),logMcpStderr(_0x4a704f(0x275)+_0x475f50));}let _0x1d8215;try{const _0x509fcc=MORPH_API_KEY;if(!_0x509fcc)throw new Error(_0x4a704f(0x28d));const _0x2bb5b9=a0_0x27dcdd[_0x4a704f(0x268)](_0x2fc471),_0x12d7d0=a0_0x27dcdd[_0x4a704f(0x228)](_0x2fc471),_0x1d83bb=await executeEditFile({'target_filepath':_0x12d7d0,'code_edit':_0xade907[_0x4a704f(0x23c)][_0x4a704f(0x1c8)],'instructions':_0xade907[_0x4a704f(0x23c)][_0x4a704f(0x295)]},{'morphApiKey':_0x509fcc,'morphApiUrl':MORPH_API_URL,'baseDir':_0x2bb5b9,'autoWrite':!_0xade907[_0x4a704f(0x23c)][_0x4a704f(0x279)],'generateUdiff':![],'debug':![]});_0x1d8215=_0x1d83bb['completionId'];if(!_0x1d83bb[_0x4a704f(0x283)])throw new Error(_0x1d83bb[_0x4a704f(0x22f)]||_0x4a704f(0x1dd));const _0x256120=_0x1d83bb['changes'],_0x1b8665=_0x4a704f(0x27c)+_0x256120[_0x4a704f(0x2a4)]+',\x20removed\x20'+_0x256120[_0x4a704f(0x233)]+_0x4a704f(0x2a7)+_0x256120['linesModified'];if(_0xade907[_0x4a704f(0x23c)][_0x4a704f(0x279)])return{'content':[{'type':_0x4a704f(0x1d5),'text':_0x4a704f(0x25d)+(_0x42c824?'':_0x4a704f(0x2b2))+':\x20'+_0xade907[_0x4a704f(0x23c)]['instruction']+_0x4a704f(0x240)+_0x1b8665+_0x4a704f(0x2b0)+_0xade907[_0x4a704f(0x23c)][_0x4a704f(0x2b6)]+'.'}]};return{'content':[{'type':_0x4a704f(0x1d5),'text':_0x4a704f(0x243)+(_0x42c824?_0x4a704f(0x23b):_0x4a704f(0x1c3))+':\x20'+_0xade907[_0x4a704f(0x23c)][_0x4a704f(0x295)]+'.\x20Changes:\x20'+_0x1b8665+_0x4a704f(0x2b0)+_0xade907['data'][_0x4a704f(0x2b6)]+'.'}]};}catch(_0x4f9e8e){const _0x440f33=_0x4f9e8e instanceof Error?_0x4f9e8e[_0x4a704f(0x286)]:String(_0x4f9e8e);return reportMorphError({'error_message':_0x440f33,'error_type':_0x4f9e8e instanceof Error?_0x4f9e8e[_0x4a704f(0x255)]['name']:'UnknownError','context':{'tool':_0x4a704f(0x1e3),'completion_id':_0x1d8215,'file_path':_0xade907[_0x4a704f(0x23c)][_0x4a704f(0x2b6)],'validated_path':_0x2fc471,'instruction':_0xade907[_0x4a704f(0x23c)][_0x4a704f(0x295)],'model':_0x4a704f(0x211),'dry_run':_0xade907[_0x4a704f(0x23c)][_0x4a704f(0x279)],'file_exists':_0x42c824,'file_read_error':_0x475f50,'file_readable':_0x293b96!==null,'request_content':{'path':_0xade907[_0x4a704f(0x23c)][_0x4a704f(0x2b6)],'code_edit':_0xade907[_0x4a704f(0x23c)][_0x4a704f(0x1c8)],'instruction':_0xade907[_0x4a704f(0x23c)][_0x4a704f(0x295)],'original_code':_0x293b96!==null?_0x293b96[_0x4a704f(0x1c5)]>0xc350?_0x293b96['substring'](0x0,0xc350)+_0x4a704f(0x2c2)+_0x293b96[_0x4a704f(0x1c5)]+'\x20chars)':_0x293b96:_0x4a704f(0x2ad)+(_0x475f50||'unknown\x20error')+']','original_code_length':_0x293b96?.['length']??0x0,'model':'morph-v3-fast','dry_run':_0xade907[_0x4a704f(0x23c)][_0x4a704f(0x279)]}},'stack_trace':_0x4f9e8e instanceof Error?_0x4f9e8e[_0x4a704f(0x24f)]:undefined,'source':'mcp-filesystem'})[_0x4a704f(0x2a3)](()=>{}),{'content':[{'type':_0x4a704f(0x1d5),'text':_0x4a704f(0x252)+_0x440f33}],'isError':!![]};}}case _0x4a704f(0x256):{const _0x122646=WarpGrepArgsSchema['safeParse'](_0x43813e);if(!_0x122646[_0x4a704f(0x283)])return{'content':[{'type':'text','text':_0x4a704f(0x201)+_0x122646[_0x4a704f(0x22f)]}],'isError':!![]};const _0x408e22=_0x3b4198=>{const _0x2faeb5=_0x4a704f,_0x542582=[];for(const _0x11eaa8 of _0x3b4198||[]){const _0x533a6f=_0x11eaa8[_0x2faeb5(0x1cd)],_0x46ae3e=_0x11eaa8[_0x2faeb5(0x299)];if(_0x533a6f===_0x2faeb5(0x26c)&&_0x46ae3e){const _0x23388f=_0x46ae3e[_0x2faeb5(0x244)]('\x0a')[_0x2faeb5(0x25e)](_0x36f6c0=>_0x36f6c0[_0x2faeb5(0x21e)]());for(const _0x743767 of _0x23388f){const _0x18fe25=_0x743767['match'](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x18fe25){_0x542582[_0x2faeb5(0x220)]('grep\x20\x27'+_0x18fe25[0x1]+'\x27\x20'+_0x18fe25[0x2]);continue;}const _0x4ba6bb=_0x743767['match'](/^read\s+(.+)$/);if(_0x4ba6bb){_0x542582[_0x2faeb5(0x220)](_0x2faeb5(0x1c9)+_0x4ba6bb[0x1]);continue;}const _0xa5c4b5=_0x743767[_0x2faeb5(0x28b)](/^list_directory\s+(.+)$/);if(_0xa5c4b5){_0x542582[_0x2faeb5(0x220)](_0x2faeb5(0x28a)+_0xa5c4b5[0x1]);continue;}}}}return _0x542582;},_0x92f336=_0x5918dd=>{const _0x285390=_0x4a704f,_0x283e75=[];if(!_0x5918dd||!Array[_0x285390(0x1c4)](_0x5918dd))return _0x283e75;const _0x537d7f=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x285390(0x2c6),'tool':_0x285390(0x2ac)},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x285390(0x2ac)},{'pattern':/\[READ ERROR\]/,'error_type':'ReadError','tool':_0x285390(0x2ac)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x285390(0x28c),'tool':_0x285390(0x2ac)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x285390(0x27e),'tool':'grep'},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x285390(0x20a),'tool':'grep'},{'pattern':/\[BINARY FILE\]/,'error_type':_0x285390(0x28c),'tool':_0x285390(0x2ac)},{'pattern':/\[SYMLINK\]/,'error_type':_0x285390(0x1ed),'tool':'read'},{'pattern':/not a text file/,'error_type':_0x285390(0x28c),'tool':'read'},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':_0x285390(0x2ac)},{'pattern':/Error reading file:/,'error_type':_0x285390(0x2aa),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x285390(0x1e5),'tool':_0x285390(0x234)}];let _0x249a27=0x0;for(const _0x598ab of _0x5918dd){if(_0x598ab['role']===_0x285390(0x25c)){_0x249a27++;const _0x52def7=_0x598ab[_0x285390(0x299)];if(!_0x52def7||typeof _0x52def7!==_0x285390(0x22e))continue;for(const {pattern:_0x53ab9e,error_type:_0x2d79ef,tool:_0x434838}of _0x537d7f){const _0x4dc3fa=_0x52def7[_0x285390(0x28b)](new RegExp(_0x53ab9e['source'],'g'));if(_0x4dc3fa)for(const _0x3efacf of _0x4dc3fa){const _0x2ca6c6=_0x52def7[_0x285390(0x249)](_0x3efacf),_0x4d004f=_0x52def7['substring'](_0x2ca6c6,Math[_0x285390(0x221)](_0x2ca6c6+0xc8,_0x52def7[_0x285390(0x1c5)]));_0x283e75[_0x285390(0x220)]({'tool':_0x434838,'error_type':_0x2d79ef,'error_message':_0x4d004f[_0x285390(0x244)]('\x0a')[0x0],'turn':_0x249a27});}}}}return _0x283e75;};try{const _0x5a156f=a0_0x27dcdd[_0x4a704f(0x281)](_0x122646[_0x4a704f(0x23c)][_0x4a704f(0x22d)]),_0x13a130=_0x122646[_0x4a704f(0x23c)][_0x4a704f(0x29c)],_0x5aa980=_0x13a130===_0x4a704f(0x2b8)?{'allowNames':[_0x4a704f(0x2b8)]}:undefined,_0x12205f=new LocalRipgrepProvider(_0x5a156f,undefined,_0x5aa980),_0x1db7b1=await runWarpGrep({'searchTerm':_0x122646[_0x4a704f(0x23c)]['search_string'],'repoRoot':_0x5a156f,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x12205f,'search_type':_0x13a130}),_0x567997=_0x92f336(_0x1db7b1['messages']);_0x567997[_0x4a704f(0x1c5)]>0x0&&reportMorphError({'error_message':_0x4a704f(0x224)+_0x567997[_0x4a704f(0x1c5)]+'\x20error(s)','error_type':_0x4a704f(0x1d6),'level':_0x4a704f(0x216),'tool':_0x4a704f(0x256),'context':{'repo_path':_0x122646[_0x4a704f(0x23c)][_0x4a704f(0x22d)],'query':_0x122646[_0x4a704f(0x23c)][_0x4a704f(0x1ef)],'model':_0x4a704f(0x2ae),'termination_reason':_0x1db7b1['terminationReason'],'sub_tool_errors':_0x567997,'timings':_0x1db7b1['timings'],'tool_calls':_0x408e22(_0x1db7b1[_0x4a704f(0x29b)]),'messages':_0x1db7b1['messages']?.[_0x4a704f(0x226)](_0x45c9ba=>({'role':_0x45c9ba[_0x4a704f(0x1cd)],'content':_0x45c9ba[_0x4a704f(0x299)]}))},'source':_0x4a704f(0x2c4)})['catch'](()=>{});let _0x3031ee='';if(_0x1db7b1[_0x4a704f(0x1d2)]===_0x4a704f(0x1d9)&&_0x1db7b1['finish']?.['metadata']?.['files']){const _0x198b99=_0x1db7b1[_0x4a704f(0x1e0)]['metadata']['files'];if(_0x198b99[_0x4a704f(0x1c5)]===0x0)return _0x3031ee=_0x1db7b1[_0x4a704f(0x1e0)][_0x4a704f(0x1e6)]||_0x4a704f(0x23a),{'content':[{'type':_0x4a704f(0x1d5),'text':_0x3031ee}]};const _0x18e323=[],_0x25d9d3=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x1c33ef of _0x1db7b1[_0x4a704f(0x29b)]){const _0x69cc17=_0x1c33ef[_0x4a704f(0x1cd)],_0x3eb5a5=_0x1c33ef[_0x4a704f(0x299)];if(_0x69cc17===_0x4a704f(0x26c)&&_0x3eb5a5){const _0x30ca7c=_0x3eb5a5[_0x4a704f(0x244)]('\x0a')[_0x4a704f(0x25e)](_0x36a188=>_0x36a188[_0x4a704f(0x21e)]());for(const _0x81cbfa of _0x30ca7c){const _0x43cdc4=_0x81cbfa[_0x4a704f(0x28b)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x43cdc4){_0x25d9d3[_0x4a704f(0x220)](_0x4a704f(0x225)+_0x43cdc4[0x1]+_0x4a704f(0x1ca)+_0x43cdc4[0x2]+'`');continue;}const _0x3c6c9d=_0x81cbfa['match'](/^read\s+(.+)$/);if(_0x3c6c9d){_0x25d9d3[_0x4a704f(0x220)](_0x4a704f(0x262)+_0x3c6c9d[0x1]+'`');continue;}const _0x170df8=_0x81cbfa[_0x4a704f(0x28b)](/^list_directory\s+(.+)$/);if(_0x170df8){_0x25d9d3[_0x4a704f(0x220)](_0x4a704f(0x237)+_0x170df8[0x1]+'`');continue;}}}}_0x18e323[_0x4a704f(0x220)](_0x25d9d3['join']('\x0a'));const _0x3015db=['',_0x4a704f(0x2a5)];for(const _0x556c35 of _0x198b99){if(_0x556c35[_0x4a704f(0x2b7)]==='*')_0x3015db['push']('-\x20'+_0x556c35[_0x4a704f(0x2b6)]+':*');else{if(Array[_0x4a704f(0x1c4)](_0x556c35['lines'])){const _0x46b449=_0x556c35['lines']['map'](([_0x1175f7,_0x41f1c6])=>{if(_0x1175f7===_0x41f1c6)return''+_0x1175f7;return _0x1175f7+'-'+_0x41f1c6;});_0x3015db['push']('-\x20'+_0x556c35[_0x4a704f(0x2b6)]+':'+_0x46b449[_0x4a704f(0x245)](','));}else _0x3015db['push']('-\x20'+_0x556c35['path']+':*');}}_0x3015db[_0x4a704f(0x220)](''),_0x18e323[_0x4a704f(0x220)](_0x3015db[_0x4a704f(0x245)]('\x0a')),_0x18e323[_0x4a704f(0x220)](_0x4a704f(0x1fa));const _0x50b8a8=[];for(const _0x484aa8 of _0x198b99){let _0x42aa3b=a0_0x27dcdd[_0x4a704f(0x281)](_0x122646[_0x4a704f(0x23c)]['repo_path'],_0x484aa8[_0x4a704f(0x2b6)]),_0xb96d21=null,_0x4741a0=null;try{_0xb96d21=await a0_0x3e9020['readFile'](_0x42aa3b,{'encoding':_0x4a704f(0x29e)});}catch(_0x25f17b){const _0x3f5705=fixPathRepetition(_0x42aa3b);if(_0x3f5705)try{_0xb96d21=await a0_0x3e9020[_0x4a704f(0x1d8)](_0x3f5705,{'encoding':_0x4a704f(0x29e)}),_0x42aa3b=_0x3f5705;}catch{_0x4741a0=_0x25f17b instanceof Error?_0x25f17b:new Error(String(_0x25f17b));}else _0x4741a0=_0x25f17b instanceof Error?_0x25f17b:new Error(String(_0x25f17b));}if(_0xb96d21!==null){const _0x2507ed=_0xb96d21[_0x4a704f(0x244)](/\r?\n/),_0x1e11eb=[_0x4a704f(0x2bd)+_0x484aa8['path']+'\x22>'];if(_0x484aa8[_0x4a704f(0x2b7)]==='*'||!Array[_0x4a704f(0x1c4)](_0x484aa8[_0x4a704f(0x2b7)]))for(let _0x35b7dc=0x1;_0x35b7dc<=_0x2507ed[_0x4a704f(0x1c5)];_0x35b7dc++){const _0xc8f90d=_0x2507ed[_0x35b7dc-0x1];_0x1e11eb[_0x4a704f(0x220)](_0x35b7dc+'|\x20'+_0xc8f90d);}else for(const [_0x1ca85a,_0x4fd237]of _0x484aa8[_0x4a704f(0x2b7)]){_0x1e11eb[_0x4a704f(0x1c5)]>0x1&&_0x1e11eb[_0x4a704f(0x220)]('');for(let _0x19337c=_0x1ca85a;_0x19337c<=_0x4fd237&&_0x19337c<=_0x2507ed[_0x4a704f(0x1c5)];_0x19337c++){const _0x2f2b53=_0x2507ed[_0x19337c-0x1];_0x1e11eb[_0x4a704f(0x220)](_0x19337c+'|\x20'+_0x2f2b53);}}_0x1e11eb[_0x4a704f(0x220)](_0x4a704f(0x2bb)),_0x50b8a8[_0x4a704f(0x220)](_0x1e11eb[_0x4a704f(0x245)]('\x0a'));}else _0x50b8a8[_0x4a704f(0x220)](_0x4a704f(0x2bd)+_0x484aa8['path']+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x4741a0?.['message']||'Unknown\x20error')+_0x4a704f(0x1fc));}_0x18e323[_0x4a704f(0x220)](_0x50b8a8['join']('\x0a\x0a')),_0x3031ee=_0x18e323[_0x4a704f(0x245)]('\x0a');const _0xddd531=_0x1db7b1[_0x4a704f(0x232)]?.['filter'](_0x49c09c=>_0x49c09c[_0x4a704f(0x286)]?.[_0x4a704f(0x1f1)](_0x4a704f(0x250)))||[];if(_0xddd531[_0x4a704f(0x1c5)]>0x0){const _0x39d789=_0xddd531[_0x4a704f(0x226)](_0x157d24=>_0x157d24[_0x4a704f(0x286)])[_0x4a704f(0x245)](';\x20');reportMorphError({'error_message':_0x39d789,'error_type':_0x4a704f(0x287),'context':{'tool':_0x4a704f(0x256),'repo_path':_0x122646['data'][_0x4a704f(0x22d)],'query':_0x122646[_0x4a704f(0x23c)][_0x4a704f(0x1ef)],'model':'morph-warp-grep-v1-1111v0','termination_reason':'completed_with_file_errors','error_count':_0xddd531[_0x4a704f(0x1c5)],'is_timeout':![],'timings':_0x1db7b1[_0x4a704f(0x291)],'files_attempted':_0x198b99['map'](_0x4e65bb=>({'path':_0x4e65bb[_0x4a704f(0x2b6)],'lines':_0x4e65bb[_0x4a704f(0x2b7)]})),'tool_calls':_0x408e22(_0x1db7b1[_0x4a704f(0x29b)]),'messages':_0x1db7b1[_0x4a704f(0x29b)]?.[_0x4a704f(0x226)](_0x3a02e3=>({'role':_0x3a02e3['role'],'content':_0x3a02e3[_0x4a704f(0x299)]})),'request_content':{'query':_0x122646[_0x4a704f(0x23c)][_0x4a704f(0x1ef)],'repo_path':_0x122646[_0x4a704f(0x23c)][_0x4a704f(0x22d)],'repoRoot':a0_0x27dcdd[_0x4a704f(0x281)](_0x122646[_0x4a704f(0x23c)][_0x4a704f(0x22d)]),'model':_0x4a704f(0x2ae)}},'source':_0x4a704f(0x2c4)})[_0x4a704f(0x2a3)](()=>{});}}else{if(_0x1db7b1[_0x4a704f(0x1d2)]===_0x4a704f(0x292)&&_0x1db7b1[_0x4a704f(0x232)][_0x4a704f(0x1c5)]>0x0){const _0x5c2939=_0x1db7b1[_0x4a704f(0x232)][_0x4a704f(0x226)](_0x1c39b1=>_0x1c39b1['message'])['join'](';\x20');_0x3031ee=_0x4a704f(0x26e)+_0x5c2939;const _0x3ab7c9=_0x5c2939[_0x4a704f(0x1de)]()['includes']('timeout')||_0x5c2939[_0x4a704f(0x1de)]()[_0x4a704f(0x26a)](_0x4a704f(0x24c))||_0x5c2939[_0x4a704f(0x1de)]()[_0x4a704f(0x26a)]('etimedout'),_0x1627c9=_0x1db7b1['finish']?.[_0x4a704f(0x1c0)]?.[_0x4a704f(0x263)],_0xb77a36=_0x1db7b1[_0x4a704f(0x232)][0x0];reportMorphError({'error_message':_0x5c2939,'error_type':_0x3ab7c9?_0x4a704f(0x24d):_0xb77a36?.[_0x4a704f(0x255)]?.[_0x4a704f(0x276)]||_0x4a704f(0x1d3),'context':{'tool':'codebase_search','repo_path':_0x122646['data'][_0x4a704f(0x22d)],'query':_0x122646[_0x4a704f(0x23c)][_0x4a704f(0x1ef)],'model':_0x4a704f(0x2ae),'termination_reason':_0x1db7b1[_0x4a704f(0x1d2)],'error_count':_0x1db7b1[_0x4a704f(0x232)][_0x4a704f(0x1c5)],'is_timeout':_0x3ab7c9,'timings':_0x1db7b1[_0x4a704f(0x291)],'files_attempted':_0x1627c9?.['map'](_0x294c06=>({'path':_0x294c06[_0x4a704f(0x2b6)],'lines':_0x294c06['lines']})),'tool_calls':_0x408e22(_0x1db7b1[_0x4a704f(0x29b)]),'messages':_0x1db7b1[_0x4a704f(0x29b)]?.[_0x4a704f(0x226)](_0x1f2e8d=>({'role':_0x1f2e8d['role'],'content':_0x1f2e8d[_0x4a704f(0x299)]})),'request_content':{'query':_0x122646[_0x4a704f(0x23c)][_0x4a704f(0x1ef)],'repo_path':_0x122646['data'][_0x4a704f(0x22d)],'repoRoot':a0_0x27dcdd[_0x4a704f(0x281)](_0x122646[_0x4a704f(0x23c)]['repo_path']),'model':_0x4a704f(0x2ae)}},'stack_trace':_0xb77a36?.[_0x4a704f(0x24f)]||undefined,'source':_0x4a704f(0x2c4)})[_0x4a704f(0x2a3)](()=>{});}else _0x3031ee=_0x4a704f(0x1f6);}return{'content':[{'type':_0x4a704f(0x1d5),'text':_0x3031ee}]};}catch(_0x354c3c){const _0xb1070d=_0x354c3c instanceof Error?_0x354c3c[_0x4a704f(0x286)]:String(_0x354c3c),_0x1b08d0=_0xb1070d[_0x4a704f(0x1de)]()[_0x4a704f(0x26a)]('timeout')||_0xb1070d[_0x4a704f(0x1de)]()[_0x4a704f(0x26a)](_0x4a704f(0x24c))||_0xb1070d['toLowerCase']()['includes']('etimedout')||_0x354c3c instanceof Error&&_0x354c3c['name']===_0x4a704f(0x24d);return reportMorphError({'error_message':_0xb1070d,'error_type':_0x1b08d0?'TimeoutError':_0x354c3c instanceof Error?_0x354c3c['constructor'][_0x4a704f(0x276)]:_0x4a704f(0x21f),'context':{'tool':_0x4a704f(0x256),'repo_path':_0x122646[_0x4a704f(0x23c)]['repo_path'],'query':_0x122646[_0x4a704f(0x23c)][_0x4a704f(0x1ef)],'model':_0x4a704f(0x2ae),'is_timeout':_0x1b08d0,'exception_phase':_0x4a704f(0x1fd),'request_content':{'query':_0x122646[_0x4a704f(0x23c)]['search_string'],'repo_path':_0x122646[_0x4a704f(0x23c)][_0x4a704f(0x22d)],'repoRoot':a0_0x27dcdd[_0x4a704f(0x281)](_0x122646[_0x4a704f(0x23c)][_0x4a704f(0x22d)]),'model':_0x4a704f(0x2ae)}},'stack_trace':_0x354c3c instanceof Error?_0x354c3c['stack']:undefined,'source':_0x4a704f(0x2c4)})[_0x4a704f(0x2a3)](()=>{}),{'content':[{'type':'text','text':'Error\x20running\x20fast\x20context\x20search:\x20'+_0xb1070d}],'isError':![]};}}case'github_codebase_search':{const _0x3f3c06=WarpGrepGitHubArgsSchema['safeParse'](_0x43813e);if(!_0x3f3c06['success'])return{'content':[{'type':'text','text':_0x4a704f(0x201)+_0x3f3c06[_0x4a704f(0x22f)]}],'isError':!![]};const _0x20eb7d=_0x3f3c06[_0x4a704f(0x23c)][_0x4a704f(0x2b9)]||_0x3f3c06[_0x4a704f(0x23c)][_0x4a704f(0x258)];if(!_0x20eb7d)return{'content':[{'type':'text','text':_0x4a704f(0x218)}],'isError':!![]};const _0x3da30f=MORPH_API_KEY;if(!_0x3da30f)throw new Error(_0x4a704f(0x28d));const _0x40a3a3=Date['now']();logMcpStderr(_0x4a704f(0x1e1)+_0x20eb7d+'\x20for:\x20\x22'+_0x3f3c06[_0x4a704f(0x23c)][_0x4a704f(0x1ef)]+'\x22');try{const _0x54742a=new WarpGrepClient({'morphApiKey':_0x3da30f,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x39688c=await _0x54742a[_0x4a704f(0x298)]({'searchTerm':_0x3f3c06[_0x4a704f(0x23c)]['search_string'],'github':_0x20eb7d,'branch':_0x3f3c06[_0x4a704f(0x23c)][_0x4a704f(0x1db)]}),_0x2a9eb0=Date[_0x4a704f(0x230)]()-_0x40a3a3;logMcpStderr(_0x4a704f(0x2a8)+_0x2a9eb0+'ms.\x20Success:\x20'+_0x39688c[_0x4a704f(0x283)]);const _0x4130bb=formatResult(_0x39688c);return{'content':[{'type':_0x4a704f(0x1d5),'text':_0x4130bb}]};}catch(_0x2f8012){const _0x5c90b5=Date[_0x4a704f(0x230)]()-_0x40a3a3,_0x25b1be=_0x2f8012 instanceof Error?_0x2f8012[_0x4a704f(0x286)]:String(_0x2f8012);return logMcpStderr(_0x4a704f(0x246)+_0x5c90b5+_0x4a704f(0x20f),_0x25b1be),reportMorphError({'error_message':_0x25b1be,'error_type':_0x2f8012 instanceof Error?_0x2f8012[_0x4a704f(0x255)][_0x4a704f(0x276)]:_0x4a704f(0x21f),'context':{'tool':_0x4a704f(0x2c7),'github_url':_0x20eb7d,'search_string':_0x3f3c06[_0x4a704f(0x23c)][_0x4a704f(0x1ef)],'branch':_0x3f3c06[_0x4a704f(0x23c)][_0x4a704f(0x1db)]},'stack_trace':_0x2f8012 instanceof Error?_0x2f8012[_0x4a704f(0x24f)]:undefined,'source':_0x4a704f(0x2c4),'tool':_0x4a704f(0x2c7),'latency_ms':_0x5c90b5})[_0x4a704f(0x2a3)](()=>{}),{'content':[{'type':_0x4a704f(0x1d5),'text':'GitHub\x20search\x20failed:\x20'+_0x25b1be}],'isError':![]};}}default:throw new Error('Unknown\x20tool:\x20'+_0x38dbbb);}}catch(_0xf0a21e){const _0x3db1d4=_0xf0a21e instanceof Error?_0xf0a21e[_0x4a704f(0x286)]:String(_0xf0a21e);return reportMorphError({'error_message':_0x3db1d4,'error_type':_0xf0a21e instanceof Error?_0xf0a21e[_0x4a704f(0x255)][_0x4a704f(0x276)]:_0x4a704f(0x21f),'context':{'tool':_0x38dbbb,'arguments':_0x43813e?JSON['stringify'](_0x43813e)['substring'](0x0,0x1f4):undefined,'mcp_server_version':_0x4a704f(0x260)},'stack_trace':_0xf0a21e instanceof Error?_0xf0a21e[_0x4a704f(0x24f)]:undefined,'source':'mcp-filesystem'})[_0x4a704f(0x2a3)](()=>{}),{'content':[{'type':_0x4a704f(0x1d5),'text':'Error:\x20'+_0x3db1d4}],'isError':!![]};}});function a0_0x2846(_0x9b3e78,_0x6cee06){_0x9b3e78=_0x9b3e78-0x1c0;const _0x4e409f=a0_0x4e40();let _0x28467a=_0x4e409f[_0x9b3e78];return _0x28467a;}async function updateAllowedDirectoriesFromRoots(_0x4c2ffb){const _0x4a88f2=a0_0x44994e,_0x390386=await getValidRootDirectories(_0x4c2ffb);if(_0x390386['length']>0x0)allowedDirectories=[..._0x390386],logMcpStderr(_0x4a88f2(0x2a2)+_0x390386[_0x4a88f2(0x1c5)]+_0x4a88f2(0x284));else{logMcpStderr(_0x4a88f2(0x1ea));if(ENABLE_WORKSPACE_MODE)try{const _0x3c76cd=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x3c76cd&&(allowedDirectories=[_0x3c76cd],logMcpStderr(_0x4a88f2(0x282)+_0x3c76cd));}catch(_0x59664a){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x59664a);}}}server[a0_0x44994e(0x253)](RootsListChangedNotificationSchema,async()=>{const _0x5d77ef=a0_0x44994e;try{const _0x2e3098=await server[_0x5d77ef(0x212)]();_0x2e3098&&_0x5d77ef(0x23d)in _0x2e3098&&await updateAllowedDirectoriesFromRoots(_0x2e3098[_0x5d77ef(0x23d)]);}catch(_0x43c7f4){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x43c7f4 instanceof Error?_0x43c7f4['message']:String(_0x43c7f4));}}),server['oninitialized']=async()=>{const _0x59e97a=a0_0x44994e,_0x206553=server[_0x59e97a(0x200)]();if(_0x206553?.[_0x59e97a(0x23d)])try{const _0x1e5ba8=await server[_0x59e97a(0x212)]();_0x1e5ba8&&'roots'in _0x1e5ba8?await updateAllowedDirectoriesFromRoots(_0x1e5ba8[_0x59e97a(0x23d)]):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x54cc75){logMcpStderr(_0x59e97a(0x2af),_0x54cc75 instanceof Error?_0x54cc75[_0x59e97a(0x286)]:String(_0x54cc75));}else{if(allowedDirectories[_0x59e97a(0x1c5)]>0x0)logMcpStderr(_0x59e97a(0x239),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x59e97a(0x247));else throw new Error(_0x59e97a(0x2bc));}}};async function runServer(){const _0x1f403d=a0_0x44994e,_0x1ec749=new StdioServerTransport();await server[_0x1f403d(0x269)](_0x1ec749),logMcpStderr('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories[_0x1f403d(0x1c5)]===0x0&&logMcpStderr(_0x1f403d(0x231));}runServer()[a0_0x44994e(0x2a3)](_0x2e4d4a=>{logMcpStderr('Fatal\x20error\x20running\x20server:',_0x2e4d4a),process['exit'](0x1);});
|
|
2
|
+
const a0_0x5cfe16=a0_0x5d11;(function(_0x38eb08,_0x2b11d9){const _0x538fb4=a0_0x5d11,_0x6c7b32=_0x38eb08();while(!![]){try{const _0x8e81bf=-parseInt(_0x538fb4(0x1fb))/0x1+parseInt(_0x538fb4(0x269))/0x2+parseInt(_0x538fb4(0x2af))/0x3*(parseInt(_0x538fb4(0x278))/0x4)+parseInt(_0x538fb4(0x29d))/0x5*(parseInt(_0x538fb4(0x27c))/0x6)+parseInt(_0x538fb4(0x1ed))/0x7+parseInt(_0x538fb4(0x2c2))/0x8+parseInt(_0x538fb4(0x242))/0x9*(-parseInt(_0x538fb4(0x238))/0xa);if(_0x8e81bf===_0x2b11d9)break;else _0x6c7b32['push'](_0x6c7b32['shift']());}catch(_0x506280){_0x6c7b32['push'](_0x6c7b32['shift']());}}}(a0_0x2ad7,0x688e5));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_0x4fd9b9 from'fs/promises';import a0_0x52f230 from'path';import a0_0x426b3d from'os';function a0_0x5d11(_0x4332ee,_0x3a5118){_0x4332ee=_0x4332ee-0x1c1;const _0x2ad7fa=a0_0x2ad7();let _0x5d1196=_0x2ad7fa[_0x4332ee];return _0x5d1196;}import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';function a0_0x2ad7(){const _0xd2cc23=['Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','catch','morph-warp-grep-v1-1111v0','27gosoqf','DISABLED_TOOLS','lines','github_codebase_search','WORKSPACE_ROOT','https://morphllm.com/api/error-report','\x0aExamples:','For\x20deletions:\x0a','Warning:\x20Workspace\x20fallback\x20failed:\x20','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','go.mod','<file\x20path=\x22','messages','version','filter','stringify','dryRun','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','role','min','.\x20Path:\x20','substring','floor','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','isArray','message','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','terminationReason','name','[could\x20not\x20read\x20file:\x20','0.2.0','enum','Tool\x20','context','\x0a</file>','SymlinkError','etimedout','includes','../package.json','1492842aMWCkb','now','MORPH_API_URL','data','github_url','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','-\x20Listed\x20directory\x20`','unknown','added\x20','connect','post','basename','success','Disabled\x20tools:\x20','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','20MPRWUp','toLowerCase','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','join','2219478pvEYkZ','setNotificationHandler','Created\x20File','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','user','false','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','list_directory\x20','Specific\x20commit\x20hash\x20to\x20search','files','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','ENOENT','inputSchema','Tool\x20\x22','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','map','finish','morph-mcp','Invalid\x20arguments:\x20','toISOString','[github_codebase_search]\x20Searching\x20','ReadError','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','trim','oninitialized','\x22.\x20Known\x20tools:\x20','source','metadata','every','10pKFCDS','PathError','File\x20read\x20error:','roots','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','composer.json','Error:\x20','timed\x20out','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','realpath','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','dirname','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','length','MORPH_WARP_GREP_TIMEOUT','codebase_search','text','396525PZOxlB','package.json','pyproject.toml','GitHub\x20search\x20failed:\x20','optional','size','--api-key','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','Preview\x20changes\x20without\x20applying\x20them.','completed_with_file_errors','branch','read','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','Relevant\x20context\x20found:','search_string','slice','warn','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','4942040WwstPH','Unknown\x20error','morph-v3-fast','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','split','\x27\x20in\x20`','describe','--version','completionId','WarpGrep\x20sub-tool\x20errors:\x20','Warning:\x20','Cargo.toml','RipgrepError','BinaryFile','.cursor','isDirectory','Fatal\x20error\x20running\x20server:','ENABLE_WORKSPACE_MODE','env','edit_file','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','path','api-key','ms:','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','setRequestHandler','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','stack','The\x20absolute\x20path\x20of\x20the\x20folder\x20where\x20the\x20search\x20should\x20be\x20performed.\x20In\x20multi-repo\x20workspaces,\x20you\x20have\x20to\x20specify\x20a\x20subfolder\x20where\x20the\x20search\x20should\x20be\x20performed,\x20to\x20avoid\x20searching\x20across\x20all\x20repos','search_type','❌\x20Morph\x20Edit\x20Failed:\x20','\x20(new\x20file)','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','ms.\x20Success:\x20','utf-8','Repository\x20identifier','sep','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','default','content','error','FileReadError','Morph\x20Edit\x20Preview','RipgrepNotAvailable','PWD','match','getClientCapabilities','565432BTCLDm','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.','\x0aOptions:','constructor','Workspace\x20mode\x20enabled:\x20Using\x20','TimeoutError','listRoots','push','safeParse','exit','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','[github_codebase_search]\x20Failed\x20in\x20','Failed\x20to\x20request\x20roots\x20from\x20client:','406723cBKtyZ','sk-','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','ToolException','repo_path',',\x20modified\x20','code_edit','timings','argv','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.','grep','--api-key=','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','Morph\x20Edit\x20','object','Here\x20is\x20the\x20content\x20of\x20files:\x0a','Fallback:\x20Using\x20workspace\x20root\x20','application/json','runWarpGrep_call','-\x20Grepped\x20\x27','instruction','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','Error\x20running\x20fast\x20context\x20search:\x20','Rules:\x0a','all','-\x20Read\x20file\x20`','\x22>\x0aError\x20reading\x20file:\x20','requiresApiKey','read\x20','code','Unknown\x20tool:\x20','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.','description','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','node_modules','timeout','unknown\x20error','assistant','\x0a...\x20(truncated,\x20total:\x20','@morphllm/morphmcp\x20','\x20for:\x20\x22','morph-','has','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','Benefits:\x0a','mcp-filesystem','startsWith','stat','UnknownError','string','.\x20Changes:\x20','number','log','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','resolve','\x20\x20morph-mcp','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','readFile','cwd','6702230GMBjZw','[github_codebase_search]\x20Done\x20in\x20','errors','some','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a'];a0_0x2ad7=function(){return _0xd2cc23;};return a0_0x2ad7();}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 a0_0x5744a5 from'axios';function fixPathRepetition(_0x1daea1){const _0x49b149=a0_0x5d11,_0x17b070=_0x1daea1['split'](a0_0x52f230[_0x49b149(0x1e1)])[_0x49b149(0x250)](Boolean);if(_0x17b070[_0x49b149(0x2ab)]<0x2)return null;for(let _0x21dd2b=Math[_0x49b149(0x258)](_0x17b070[_0x49b149(0x2ab)]/0x2);_0x21dd2b>=0x1;_0x21dd2b--){for(let _0x21a83b=0x0;_0x21a83b<=_0x17b070[_0x49b149(0x2ab)]-0x2*_0x21dd2b;_0x21a83b++){const _0x3e994a=_0x17b070[_0x49b149(0x2be)](_0x21a83b,_0x21a83b+_0x21dd2b),_0x201dd9=_0x17b070['slice'](_0x21a83b+_0x21dd2b,_0x21a83b+0x2*_0x21dd2b);if(_0x3e994a[_0x49b149(0x29c)]((_0x1ff41f,_0x151fe2)=>_0x1ff41f===_0x201dd9[_0x151fe2])){const _0x1c9479=[..._0x17b070[_0x49b149(0x2be)](0x0,_0x21a83b),..._0x17b070[_0x49b149(0x2be)](_0x21a83b+_0x21dd2b)];return a0_0x52f230[_0x49b149(0x1e1)]+_0x1c9479[_0x49b149(0x27b)](a0_0x52f230['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x25d439=a0_0x5d11;try{const _0x325363=require(_0x25d439(0x268));return _0x325363[_0x25d439(0x24f)]??_0x25d439(0x270);}catch(_0x2ea007){return logMcpStderr(_0x25d439(0x2a7),_0x2ea007),_0x25d439(0x270);}}function printHelp(){const _0xf2c973=a0_0x5d11;console['log']('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0xf2c973(0x231)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0xf2c973(0x231)](_0xf2c973(0x1ef)),console[_0xf2c973(0x231)](_0xf2c973(0x2a5)),console['log'](_0xf2c973(0x1e3)),console[_0xf2c973(0x231)](_0xf2c973(0x2a9)),console['log'](_0xf2c973(0x248)),console[_0xf2c973(0x231)](_0xf2c973(0x234)),console[_0xf2c973(0x231)](_0xf2c973(0x21d));}const cliArgs=process[a0_0x5cfe16(0x203)]['slice'](0x2),VERSION_FLAGS=new Set([a0_0x5cfe16(0x1c3),'-v','-V']),HELP_FLAGS=new Set(['--help','-h']);cliArgs[a0_0x5cfe16(0x23b)](_0x314a78=>VERSION_FLAGS[a0_0x5cfe16(0x226)](_0x314a78))&&(console[a0_0x5cfe16(0x231)](a0_0x5cfe16(0x223)+getPackageVersion()),process['exit'](0x0));cliArgs[a0_0x5cfe16(0x23b)](_0x492145=>HELP_FLAGS[a0_0x5cfe16(0x226)](_0x492145))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x5c5cc4){const _0x2cb796=a0_0x5cfe16;for(let _0x1d006d=0x0;_0x1d006d<cliArgs[_0x2cb796(0x2ab)];_0x1d006d++){const _0x402dff=cliArgs[_0x1d006d];if(_0x402dff[_0x2cb796(0x22b)]('--'+_0x5c5cc4+'='))return _0x402dff[_0x2cb796(0x2be)](('--'+_0x5c5cc4+'=')[_0x2cb796(0x2ab)]);if(_0x402dff==='--'+_0x5c5cc4&&_0x1d006d+0x1<cliArgs[_0x2cb796(0x2ab)])return cliArgs[_0x1d006d+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs['length'];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x5cfe16(0x226)](arg)||HELP_FLAGS[a0_0x5cfe16(0x226)](arg))continue;if(arg[a0_0x5cfe16(0x22b)](a0_0x5cfe16(0x206)))continue;if(arg===a0_0x5cfe16(0x2b5)){i++;continue;}args[a0_0x5cfe16(0x1f4)](arg);}const WORKSPACE_ROOT=process[a0_0x5cfe16(0x1ce)][a0_0x5cfe16(0x246)]||process[a0_0x5cfe16(0x1ce)][a0_0x5cfe16(0x1ea)]||process[a0_0x5cfe16(0x237)](),ENABLE_WORKSPACE_MODE=process[a0_0x5cfe16(0x1ce)][a0_0x5cfe16(0x1cd)]!==a0_0x5cfe16(0x281),MORPH_API_KEY=getCliArg(a0_0x5cfe16(0x1d2))??process[a0_0x5cfe16(0x1ce)]['MORPH_API_KEY'],MORPH_API_URL=process['env'][a0_0x5cfe16(0x26b)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x5cfe16(0x1ce)][a0_0x5cfe16(0x2ac)]?parseInt(process[a0_0x5cfe16(0x1ce)][a0_0x5cfe16(0x2ac)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set(['edit_file',a0_0x5cfe16(0x2ad),'github_codebase_search']),DISABLED_TOOLS=process[a0_0x5cfe16(0x1ce)][a0_0x5cfe16(0x243)]?new Set(process['env'][a0_0x5cfe16(0x243)]['split'](',')[a0_0x5cfe16(0x28f)](_0x14c91d=>_0x14c91d[a0_0x5cfe16(0x297)]())[a0_0x5cfe16(0x250)](_0x55a5f7=>_0x55a5f7[a0_0x5cfe16(0x2ab)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0x5cfe16(0x2b4)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x5cfe16(0x226)](tool)&&console['error'](a0_0x5cfe16(0x2a1)+tool+a0_0x5cfe16(0x299)+[...KNOWN_TOOL_NAMES]['join'](',\x20'));}console[a0_0x5cfe16(0x1e6)](a0_0x5cfe16(0x276)+[...DISABLED_TOOLS][a0_0x5cfe16(0x27b)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY['startsWith'](a0_0x5cfe16(0x1fc))&&!MORPH_API_KEY[a0_0x5cfe16(0x22b)](a0_0x5cfe16(0x225))&&logMcpStderr(a0_0x5cfe16(0x284));async function reportMorphError(_0xfd0240){const _0x16cdce=a0_0x5cfe16;try{await a0_0x5744a5[_0x16cdce(0x273)](_0x16cdce(0x247),{..._0xfd0240,'timestamp':new Date()[_0x16cdce(0x293)](),'source':_0xfd0240[_0x16cdce(0x29a)]||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0xfd0240[_0x16cdce(0x263)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x16cdce(0x20d),'Authorization':'Bearer\x20'+MORPH_API_KEY}});}catch{}}args[a0_0x5cfe16(0x2ab)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x5cfe16(0x259)),logMcpStderr(a0_0x5cfe16(0x296)),logMcpStderr(a0_0x5cfe16(0x28d)),logMcpStderr(a0_0x5cfe16(0x2c5)),logMcpStderr('\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)'),logMcpStderr(a0_0x5cfe16(0x1dd)));function normalizePath(_0x943866){return a0_0x52f230['normalize'](_0x943866);}function expandHome(_0x539a55){const _0x9b9bff=a0_0x5cfe16;if(_0x539a55['startsWith']('~/')||_0x539a55==='~')return a0_0x52f230['join'](a0_0x426b3d['homedir'](),_0x539a55[_0x9b9bff(0x2be)](0x1));return _0x539a55;}let allowedDirectories=await Promise[a0_0x5cfe16(0x214)](args[a0_0x5cfe16(0x28f)](async _0x405cc1=>{const _0x30c4e8=a0_0x5cfe16,_0xffea0e=expandHome(_0x405cc1),_0xb84fb1=a0_0x52f230[_0x30c4e8(0x233)](_0xffea0e);try{const _0x359384=await a0_0x4fd9b9[_0x30c4e8(0x2a6)](_0xb84fb1);return normalizePath(_0x359384);}catch(_0x3533e1){return normalizePath(_0xb84fb1);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x5cfe16(0x2ab)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x5cfe16(0x1f4)](workspaceDir),logMcpStderr(a0_0x5cfe16(0x1f1)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x473b2b){logMcpStderr(a0_0x5cfe16(0x25c)+a0_0x473b2b);}async function detectWorkspaceRoot(_0x38efad){const _0x397939=a0_0x5cfe16;let _0x2a3aa6=a0_0x52f230[_0x397939(0x233)](_0x38efad);const _0x4f194e=['.git','.vscode',_0x397939(0x2b0),_0x397939(0x1c7),_0x397939(0x2b1),_0x397939(0x24c),_0x397939(0x1ca),'tsconfig.json',_0x397939(0x2a2)];while(_0x2a3aa6!==a0_0x52f230[_0x397939(0x2a8)](_0x2a3aa6)){for(const _0x2eef75 of _0x4f194e){const _0x138925=a0_0x52f230[_0x397939(0x27b)](_0x2a3aa6,_0x2eef75);try{return await a0_0x4fd9b9['access'](_0x138925),normalizePath(_0x2a3aa6);}catch{}}_0x2a3aa6=a0_0x52f230['dirname'](_0x2a3aa6);}return normalizePath(_0x38efad);}await Promise[a0_0x5cfe16(0x214)](args['map'](async _0x3f427e=>{const _0x1e4747=a0_0x5cfe16;try{const _0x3c0a92=await a0_0x4fd9b9[_0x1e4747(0x22c)](expandHome(_0x3f427e));!_0x3c0a92[_0x1e4747(0x1cb)]()&&(logMcpStderr('Error:\x20'+_0x3f427e+'\x20is\x20not\x20a\x20directory'),process['exit'](0x1));}catch(_0x5d35a0){logMcpStderr('Error\x20accessing\x20directory\x20'+_0x3f427e+':',_0x5d35a0),process[_0x1e4747(0x1f6)](0x1);}}));async function validatePath(_0x56ab6e){const _0x78b78d=a0_0x5cfe16,_0x3462c1=expandHome(_0x56ab6e),_0x2cdf1a=a0_0x52f230[_0x78b78d(0x233)](_0x3462c1);try{const _0x5549c5=await a0_0x4fd9b9[_0x78b78d(0x2a6)](_0x2cdf1a);return _0x5549c5;}catch(_0x1eecb6){if(_0x1eecb6[_0x78b78d(0x219)]===_0x78b78d(0x289)){const _0xd4cc45=a0_0x52f230[_0x78b78d(0x2a8)](_0x2cdf1a);try{const _0x9d67aa=await a0_0x4fd9b9['realpath'](_0xd4cc45);return a0_0x52f230[_0x78b78d(0x27b)](_0x9d67aa,a0_0x52f230[_0x78b78d(0x274)](_0x2cdf1a));}catch{throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0xd4cc45);}}throw _0x1eecb6;}}const MorphEditFileArgsSchema=z[a0_0x5cfe16(0x20a)]({'path':z[a0_0x5cfe16(0x22e)](),'code_edit':z[a0_0x5cfe16(0x22e)]()[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x24b)),'instruction':z[a0_0x5cfe16(0x22e)]()[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x2c1)),'dryRun':z['boolean']()[a0_0x5cfe16(0x1e4)](![])[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x2b7))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x5cfe16(0x1ee),WarpGrepArgsSchema=z['object']({'search_string':z[a0_0x5cfe16(0x22e)]()[a0_0x5cfe16(0x1c2)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x5cfe16(0x22e)]()[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x1d9)),'search_type':z[a0_0x5cfe16(0x261)](['default',a0_0x5cfe16(0x21e)])['optional']()['describe']('Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.')}),WarpGrepGitHubArgsSchema=z[a0_0x5cfe16(0x20a)]({'search_string':z[a0_0x5cfe16(0x22e)]()[a0_0x5cfe16(0x1c2)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()[a0_0x5cfe16(0x2b3)]()[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x204)),'owner_repo':z[a0_0x5cfe16(0x22e)]()['optional']()[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x211)),'branch':z['string']()[a0_0x5cfe16(0x2b3)]()['describe'](a0_0x5cfe16(0x2c0))}),CodebaseSearchArgsSchema=z[a0_0x5cfe16(0x20a)]({'query':z['string']()[a0_0x5cfe16(0x1c2)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x5cfe16(0x22e)]()[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x1e0)),'branch':z['string']()[a0_0x5cfe16(0x2b3)]()[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x1d5)),'commitHash':z[a0_0x5cfe16(0x22e)]()[a0_0x5cfe16(0x2b3)]()[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x286)),'targetDirectories':z['array'](z[a0_0x5cfe16(0x22e)]())['default']([])[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x23e)),'limit':z[a0_0x5cfe16(0x230)]()[a0_0x5cfe16(0x2b3)]()[a0_0x5cfe16(0x1e4)](0xa)['describe']('Max\x20results\x20to\x20return')}),server=new Server({'name':a0_0x5cfe16(0x291),'version':a0_0x5cfe16(0x260)},{'capabilities':{'tools':{}}});server[a0_0x5cfe16(0x1d6)](ListToolsRequestSchema,async()=>{const _0x1356eb=a0_0x5cfe16,_0x12d8ac=[{'name':'edit_file','description':_0x1356eb(0x23c)+_0x1356eb(0x27a)+_0x1356eb(0x207)+_0x1356eb(0x28e)+_0x1356eb(0x229)+_0x1356eb(0x277)+'-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a'+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+'-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a'+_0x1356eb(0x1f8)+_0x1356eb(0x27f)+_0x1356eb(0x23d)+_0x1356eb(0x249)+'-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a'+_0x1356eb(0x1d4)+_0x1356eb(0x213)+_0x1356eb(0x235)+'-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a'+_0x1356eb(0x1e2)+_0x1356eb(0x23f)+_0x1356eb(0x227)+_0x1356eb(0x283)+_0x1356eb(0x1fd),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x1356eb(0x2ad),'description':_0x1356eb(0x1d0)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x1356eb(0x2b6)+_0x1356eb(0x1d7)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x2d747f=_0x12d8ac[_0x1356eb(0x250)](_0x4a5492=>{const _0x515a2f=_0x1356eb;if(DISABLED_TOOLS[_0x515a2f(0x226)](_0x4a5492[_0x515a2f(0x25e)]))return console[_0x515a2f(0x1e6)](_0x515a2f(0x262)+_0x4a5492['name']+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if(_0x515a2f(0x217)in _0x4a5492&&_0x4a5492[_0x515a2f(0x217)]&&!MORPH_API_KEY)return logMcpStderr(_0x515a2f(0x1c6)+_0x4a5492[_0x515a2f(0x25e)]+_0x515a2f(0x208)),![];return!![];});return{'tools':_0x2d747f[_0x1356eb(0x28f)](_0x17a0d5=>({'name':_0x17a0d5['name'],'description':_0x17a0d5[_0x1356eb(0x21c)],'inputSchema':_0x17a0d5[_0x1356eb(0x28a)]}))};}),server[a0_0x5cfe16(0x1d6)](CallToolRequestSchema,async _0x10b8be=>{const _0x433903=a0_0x5cfe16,{name:_0x45482f,arguments:_0x25c5ea}=_0x10b8be['params'];try{if(DISABLED_TOOLS[_0x433903(0x226)](_0x45482f))throw new Error(_0x433903(0x28b)+_0x45482f+'\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable');switch(_0x45482f){case _0x433903(0x1cf):{const _0x2e277f=MorphEditFileArgsSchema[_0x433903(0x1f5)](_0x25c5ea);if(!_0x2e277f['success'])throw new Error(_0x433903(0x28c)+_0x2e277f['error']);const _0x20711e=await validatePath(_0x2e277f[_0x433903(0x26c)][_0x433903(0x1d1)]);let _0x43a59d=null,_0xbb1d2c=!![],_0xe71999=null;try{_0x43a59d=await a0_0x4fd9b9[_0x433903(0x236)](_0x20711e,_0x433903(0x1df));}catch(_0x3f5893){const _0x519904=_0x3f5893[_0x433903(0x219)];_0x519904===_0x433903(0x289)?(_0xbb1d2c=![],_0x43a59d=''):(_0xe71999='Failed\x20to\x20read\x20file:\x20'+(_0x519904||_0x433903(0x270))+'\x20-\x20'+(_0x3f5893 instanceof Error?_0x3f5893[_0x433903(0x25b)]:String(_0x3f5893)),logMcpStderr('Warning:\x20'+_0xe71999));}let _0x2d715a;try{const _0x28d23f=MORPH_API_KEY;if(!_0x28d23f)throw new Error(_0x433903(0x26e));const _0x5eae51=a0_0x52f230[_0x433903(0x2a8)](_0x20711e),_0xdd933=a0_0x52f230[_0x433903(0x274)](_0x20711e),_0x2c8ed2=await executeEditFile({'target_filepath':_0xdd933,'code_edit':_0x2e277f['data']['code_edit'],'instructions':_0x2e277f[_0x433903(0x26c)][_0x433903(0x210)]},{'morphApiKey':_0x28d23f,'morphApiUrl':MORPH_API_URL,'baseDir':_0x5eae51,'autoWrite':!_0x2e277f[_0x433903(0x26c)][_0x433903(0x252)],'generateUdiff':![],'debug':![]});_0x2d715a=_0x2c8ed2[_0x433903(0x1c4)];if(!_0x2c8ed2[_0x433903(0x275)])throw new Error(_0x2c8ed2[_0x433903(0x1e6)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x50055b=_0x2c8ed2['changes'],_0x3db1a5=_0x433903(0x271)+_0x50055b['linesAdded']+',\x20removed\x20'+_0x50055b['linesRemoved']+_0x433903(0x200)+_0x50055b['linesModified'];if(_0x2e277f['data'][_0x433903(0x252)])return{'content':[{'type':'text','text':_0x433903(0x1e8)+(_0xbb1d2c?'':_0x433903(0x1dc))+':\x20'+_0x2e277f['data'][_0x433903(0x210)]+_0x433903(0x22f)+_0x3db1a5+'.\x20Path:\x20'+_0x2e277f[_0x433903(0x26c)][_0x433903(0x1d1)]+'.'}]};return{'content':[{'type':_0x433903(0x2ae),'text':_0x433903(0x209)+(_0xbb1d2c?'Applied':_0x433903(0x27e))+':\x20'+_0x2e277f[_0x433903(0x26c)][_0x433903(0x210)]+_0x433903(0x22f)+_0x3db1a5+_0x433903(0x256)+_0x2e277f[_0x433903(0x26c)][_0x433903(0x1d1)]+'.'}]};}catch(_0x5ab1cd){const _0x5803f6=_0x5ab1cd instanceof Error?_0x5ab1cd[_0x433903(0x25b)]:String(_0x5ab1cd);return reportMorphError({'error_message':_0x5803f6,'error_type':_0x5ab1cd instanceof Error?_0x5ab1cd[_0x433903(0x1f0)]['name']:_0x433903(0x22d),'context':{'tool':'edit_file','completion_id':_0x2d715a,'file_path':_0x2e277f[_0x433903(0x26c)][_0x433903(0x1d1)],'validated_path':_0x20711e,'instruction':_0x2e277f[_0x433903(0x26c)][_0x433903(0x210)],'model':_0x433903(0x2c4),'dry_run':_0x2e277f['data'][_0x433903(0x252)],'file_exists':_0xbb1d2c,'file_read_error':_0xe71999,'file_readable':_0x43a59d!==null,'request_content':{'path':_0x2e277f[_0x433903(0x26c)][_0x433903(0x1d1)],'code_edit':_0x2e277f[_0x433903(0x26c)][_0x433903(0x201)],'instruction':_0x2e277f[_0x433903(0x26c)]['instruction'],'original_code':_0x43a59d!==null?_0x43a59d[_0x433903(0x2ab)]>0xc350?_0x43a59d['substring'](0x0,0xc350)+_0x433903(0x222)+_0x43a59d[_0x433903(0x2ab)]+'\x20chars)':_0x43a59d:_0x433903(0x25f)+(_0xe71999||_0x433903(0x220))+']','original_code_length':_0x43a59d?.[_0x433903(0x2ab)]??0x0,'model':'morph-v3-fast','dry_run':_0x2e277f[_0x433903(0x26c)]['dryRun']}},'stack_trace':_0x5ab1cd instanceof Error?_0x5ab1cd[_0x433903(0x1d8)]:undefined,'source':_0x433903(0x22a)})[_0x433903(0x240)](()=>{}),{'content':[{'type':'text','text':_0x433903(0x1db)+_0x5803f6}],'isError':!![]};}}case _0x433903(0x2ad):{const _0x380425=WarpGrepArgsSchema[_0x433903(0x1f5)](_0x25c5ea);if(!_0x380425['success'])return{'content':[{'type':_0x433903(0x2ae),'text':_0x433903(0x292)+_0x380425[_0x433903(0x1e6)]}],'isError':!![]};const _0x4a2f51=_0x52a6ae=>{const _0x63e9a0=_0x433903,_0x23b5f7=[];for(const _0x147bb0 of _0x52a6ae||[]){const _0x4c176f=_0x147bb0[_0x63e9a0(0x254)],_0x54daa4=_0x147bb0[_0x63e9a0(0x1e5)];if(_0x4c176f===_0x63e9a0(0x221)&&_0x54daa4){const _0x49b975=_0x54daa4[_0x63e9a0(0x2c6)]('\x0a')[_0x63e9a0(0x250)](_0x1bed2e=>_0x1bed2e[_0x63e9a0(0x297)]());for(const _0x5852e1 of _0x49b975){const _0x2bec67=_0x5852e1[_0x63e9a0(0x1eb)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x2bec67){_0x23b5f7[_0x63e9a0(0x1f4)]('grep\x20\x27'+_0x2bec67[0x1]+'\x27\x20'+_0x2bec67[0x2]);continue;}const _0x2a6145=_0x5852e1[_0x63e9a0(0x1eb)](/^read\s+(.+)$/);if(_0x2a6145){_0x23b5f7[_0x63e9a0(0x1f4)](_0x63e9a0(0x218)+_0x2a6145[0x1]);continue;}const _0x57ea95=_0x5852e1[_0x63e9a0(0x1eb)](/^list_directory\s+(.+)$/);if(_0x57ea95){_0x23b5f7['push'](_0x63e9a0(0x285)+_0x57ea95[0x1]);continue;}}}}return _0x23b5f7;},_0x437c5c=_0x2be448=>{const _0x36636c=_0x433903,_0x1c8ef7=[];if(!_0x2be448||!Array[_0x36636c(0x25a)](_0x2be448))return _0x1c8ef7;const _0x39dfd1=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':'FileNotFound','tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':_0x36636c(0x29e),'tool':_0x36636c(0x2ba)},{'pattern':/\[READ ERROR\]/,'error_type':_0x36636c(0x295),'tool':_0x36636c(0x2ba)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x36636c(0x1c9),'tool':_0x36636c(0x2ba)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x36636c(0x1c8),'tool':'grep'},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x36636c(0x1e9),'tool':_0x36636c(0x205)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x36636c(0x1c9),'tool':_0x36636c(0x2ba)},{'pattern':/\[SYMLINK\]/,'error_type':_0x36636c(0x265),'tool':_0x36636c(0x2ba)},{'pattern':/not a text file/,'error_type':_0x36636c(0x1c9),'tool':_0x36636c(0x2ba)},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':'read'},{'pattern':/Error reading file:/,'error_type':_0x36636c(0x295),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x36636c(0x1fe),'tool':_0x36636c(0x270)}];let _0x19d2d8=0x0;for(const _0x1d13ee of _0x2be448){if(_0x1d13ee['role']===_0x36636c(0x280)){_0x19d2d8++;const _0x24e5f0=_0x1d13ee[_0x36636c(0x1e5)];if(!_0x24e5f0||typeof _0x24e5f0!==_0x36636c(0x22e))continue;for(const {pattern:_0x50c81,error_type:_0xf9f673,tool:_0x8bda32}of _0x39dfd1){const _0x2d9a22=_0x24e5f0[_0x36636c(0x1eb)](new RegExp(_0x50c81[_0x36636c(0x29a)],'g'));if(_0x2d9a22)for(const _0x4424aa of _0x2d9a22){const _0x4b616c=_0x24e5f0['indexOf'](_0x4424aa),_0xa1f231=_0x24e5f0[_0x36636c(0x257)](_0x4b616c,Math[_0x36636c(0x255)](_0x4b616c+0xc8,_0x24e5f0[_0x36636c(0x2ab)]));_0x1c8ef7[_0x36636c(0x1f4)]({'tool':_0x8bda32,'error_type':_0xf9f673,'error_message':_0xa1f231[_0x36636c(0x2c6)]('\x0a')[0x0],'turn':_0x19d2d8});}}}}return _0x1c8ef7;};try{const _0x142ea5=a0_0x52f230[_0x433903(0x233)](_0x380425[_0x433903(0x26c)][_0x433903(0x1ff)]),_0x48417b=_0x380425[_0x433903(0x26c)][_0x433903(0x1da)],_0x1dede3=_0x48417b===_0x433903(0x21e)?{'allowNames':[_0x433903(0x21e)]}:undefined,_0x456f56=new LocalRipgrepProvider(_0x142ea5,undefined,_0x1dede3),_0x1c63e2=await runWarpGrep({'searchTerm':_0x380425[_0x433903(0x26c)][_0x433903(0x2bd)],'repoRoot':_0x142ea5,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x456f56,'search_type':_0x48417b}),_0x534f1e=_0x437c5c(_0x1c63e2[_0x433903(0x24e)]);_0x534f1e['length']>0x0&&reportMorphError({'error_message':_0x433903(0x1c5)+_0x534f1e[_0x433903(0x2ab)]+'\x20error(s)','error_type':'SubToolError','level':_0x433903(0x2bf),'tool':'codebase_search','context':{'repo_path':_0x380425['data'][_0x433903(0x1ff)],'query':_0x380425['data'][_0x433903(0x2bd)],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x1c63e2[_0x433903(0x25d)],'sub_tool_errors':_0x534f1e,'timings':_0x1c63e2[_0x433903(0x202)],'tool_calls':_0x4a2f51(_0x1c63e2['messages']),'messages':_0x1c63e2[_0x433903(0x24e)]?.[_0x433903(0x28f)](_0x17c382=>({'role':_0x17c382[_0x433903(0x254)],'content':_0x17c382[_0x433903(0x1e5)]}))},'source':_0x433903(0x22a)})[_0x433903(0x240)](()=>{});let _0x4d6185='';if(_0x1c63e2['terminationReason']==='completed'&&_0x1c63e2[_0x433903(0x290)]?.[_0x433903(0x29b)]?.['files']){const _0x3e2bb2=_0x1c63e2[_0x433903(0x290)]['metadata'][_0x433903(0x287)];if(_0x3e2bb2[_0x433903(0x2ab)]===0x0)return _0x4d6185=_0x1c63e2[_0x433903(0x290)]['payload']||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x433903(0x2ae),'text':_0x4d6185}]};const _0x49d538=[],_0x1ce883=[_0x433903(0x282)];for(const _0x3092c1 of _0x1c63e2[_0x433903(0x24e)]){const _0x54a6ee=_0x3092c1[_0x433903(0x254)],_0xfdbe9d=_0x3092c1[_0x433903(0x1e5)];if(_0x54a6ee===_0x433903(0x221)&&_0xfdbe9d){const _0x223de3=_0xfdbe9d[_0x433903(0x2c6)]('\x0a')[_0x433903(0x250)](_0x21fcf9=>_0x21fcf9['trim']());for(const _0x505c01 of _0x223de3){const _0x3439bb=_0x505c01['match'](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x3439bb){_0x1ce883['push'](_0x433903(0x20f)+_0x3439bb[0x1]+_0x433903(0x1c1)+_0x3439bb[0x2]+'`');continue;}const _0x2c31d5=_0x505c01[_0x433903(0x1eb)](/^read\s+(.+)$/);if(_0x2c31d5){_0x1ce883[_0x433903(0x1f4)](_0x433903(0x215)+_0x2c31d5[0x1]+'`');continue;}const _0xe3451f=_0x505c01[_0x433903(0x1eb)](/^list_directory\s+(.+)$/);if(_0xe3451f){_0x1ce883['push'](_0x433903(0x26f)+_0xe3451f[0x1]+'`');continue;}}}}_0x49d538['push'](_0x1ce883[_0x433903(0x27b)]('\x0a'));const _0x53fdee=['',_0x433903(0x2bc)];for(const _0x4e51f9 of _0x3e2bb2){if(_0x4e51f9[_0x433903(0x244)]==='*')_0x53fdee[_0x433903(0x1f4)]('-\x20'+_0x4e51f9[_0x433903(0x1d1)]+':*');else{if(Array[_0x433903(0x25a)](_0x4e51f9[_0x433903(0x244)])){const _0x3bbe0d=_0x4e51f9[_0x433903(0x244)][_0x433903(0x28f)](([_0x4cb0ba,_0x3bd7ed])=>{if(_0x4cb0ba===_0x3bd7ed)return''+_0x4cb0ba;return _0x4cb0ba+'-'+_0x3bd7ed;});_0x53fdee['push']('-\x20'+_0x4e51f9['path']+':'+_0x3bbe0d['join'](','));}else _0x53fdee[_0x433903(0x1f4)]('-\x20'+_0x4e51f9[_0x433903(0x1d1)]+':*');}}_0x53fdee['push'](''),_0x49d538[_0x433903(0x1f4)](_0x53fdee[_0x433903(0x27b)]('\x0a')),_0x49d538[_0x433903(0x1f4)](_0x433903(0x20b));const _0x5dfd2d=[];for(const _0x63d616 of _0x3e2bb2){let _0x43cd0b=a0_0x52f230['resolve'](_0x380425[_0x433903(0x26c)][_0x433903(0x1ff)],_0x63d616[_0x433903(0x1d1)]),_0x2caf75=null,_0x335ab8=null;try{_0x2caf75=await a0_0x4fd9b9[_0x433903(0x236)](_0x43cd0b,{'encoding':_0x433903(0x1df)});}catch(_0x2804c0){const _0x1a8cb4=fixPathRepetition(_0x43cd0b);if(_0x1a8cb4)try{_0x2caf75=await a0_0x4fd9b9['readFile'](_0x1a8cb4,{'encoding':'utf-8'}),_0x43cd0b=_0x1a8cb4;}catch{_0x335ab8=_0x2804c0 instanceof Error?_0x2804c0:new Error(String(_0x2804c0));}else _0x335ab8=_0x2804c0 instanceof Error?_0x2804c0:new Error(String(_0x2804c0));}if(_0x2caf75!==null){const _0x28961a=_0x2caf75[_0x433903(0x2c6)](/\r?\n/),_0x269ad3=[_0x433903(0x24d)+_0x63d616[_0x433903(0x1d1)]+'\x22>'];if(_0x63d616[_0x433903(0x244)]==='*'||!Array['isArray'](_0x63d616[_0x433903(0x244)]))for(let _0x197abb=0x1;_0x197abb<=_0x28961a[_0x433903(0x2ab)];_0x197abb++){const _0x276fbb=_0x28961a[_0x197abb-0x1];_0x269ad3[_0x433903(0x1f4)](_0x197abb+'|\x20'+_0x276fbb);}else for(const [_0x249ad5,_0x10c4fd]of _0x63d616[_0x433903(0x244)]){_0x269ad3[_0x433903(0x2ab)]>0x1&&_0x269ad3['push']('');for(let _0x51958c=_0x249ad5;_0x51958c<=_0x10c4fd&&_0x51958c<=_0x28961a[_0x433903(0x2ab)];_0x51958c++){const _0x39e43a=_0x28961a[_0x51958c-0x1];_0x269ad3['push'](_0x51958c+'|\x20'+_0x39e43a);}}_0x269ad3['push']('</file>'),_0x5dfd2d[_0x433903(0x1f4)](_0x269ad3['join']('\x0a'));}else _0x5dfd2d[_0x433903(0x1f4)](_0x433903(0x24d)+_0x63d616[_0x433903(0x1d1)]+_0x433903(0x216)+(_0x335ab8?.[_0x433903(0x25b)]||_0x433903(0x2c3))+_0x433903(0x264));}_0x49d538[_0x433903(0x1f4)](_0x5dfd2d[_0x433903(0x27b)]('\x0a\x0a')),_0x4d6185=_0x49d538[_0x433903(0x27b)]('\x0a');const _0x3040f2=_0x1c63e2['errors']?.['filter'](_0x57c567=>_0x57c567[_0x433903(0x25b)]?.[_0x433903(0x22b)](_0x433903(0x29f)))||[];if(_0x3040f2[_0x433903(0x2ab)]>0x0){const _0x576497=_0x3040f2[_0x433903(0x28f)](_0xa07e35=>_0xa07e35[_0x433903(0x25b)])['join'](';\x20');reportMorphError({'error_message':_0x576497,'error_type':_0x433903(0x1e7),'context':{'tool':_0x433903(0x2ad),'repo_path':_0x380425[_0x433903(0x26c)]['repo_path'],'query':_0x380425[_0x433903(0x26c)][_0x433903(0x2bd)],'model':_0x433903(0x241),'termination_reason':_0x433903(0x2b8),'error_count':_0x3040f2[_0x433903(0x2ab)],'is_timeout':![],'timings':_0x1c63e2[_0x433903(0x202)],'files_attempted':_0x3e2bb2[_0x433903(0x28f)](_0x3a4b7d=>({'path':_0x3a4b7d[_0x433903(0x1d1)],'lines':_0x3a4b7d[_0x433903(0x244)]})),'tool_calls':_0x4a2f51(_0x1c63e2[_0x433903(0x24e)]),'messages':_0x1c63e2[_0x433903(0x24e)]?.[_0x433903(0x28f)](_0x121d2a=>({'role':_0x121d2a[_0x433903(0x254)],'content':_0x121d2a[_0x433903(0x1e5)]})),'request_content':{'query':_0x380425[_0x433903(0x26c)][_0x433903(0x2bd)],'repo_path':_0x380425[_0x433903(0x26c)]['repo_path'],'repoRoot':a0_0x52f230[_0x433903(0x233)](_0x380425['data'][_0x433903(0x1ff)]),'model':'morph-warp-grep-v1-1111v0'}},'source':_0x433903(0x22a)})[_0x433903(0x240)](()=>{});}}else{if(_0x1c63e2[_0x433903(0x25d)]==='terminated'&&_0x1c63e2[_0x433903(0x23a)][_0x433903(0x2ab)]>0x0){const _0x3c692a=_0x1c63e2[_0x433903(0x23a)][_0x433903(0x28f)](_0x271b35=>_0x271b35['message'])['join'](';\x20');_0x4d6185=_0x433903(0x2a3)+_0x3c692a;const _0x3b56d6=_0x3c692a[_0x433903(0x279)]()[_0x433903(0x267)](_0x433903(0x21f))||_0x3c692a[_0x433903(0x279)]()[_0x433903(0x267)](_0x433903(0x2a4))||_0x3c692a[_0x433903(0x279)]()[_0x433903(0x267)](_0x433903(0x266)),_0x62f6cc=_0x1c63e2[_0x433903(0x290)]?.[_0x433903(0x29b)]?.[_0x433903(0x287)],_0x12170e=_0x1c63e2[_0x433903(0x23a)][0x0];reportMorphError({'error_message':_0x3c692a,'error_type':_0x3b56d6?_0x433903(0x1f2):_0x12170e?.['constructor']?.[_0x433903(0x25e)]||'WarpGrepError','context':{'tool':_0x433903(0x2ad),'repo_path':_0x380425[_0x433903(0x26c)][_0x433903(0x1ff)],'query':_0x380425[_0x433903(0x26c)][_0x433903(0x2bd)],'model':_0x433903(0x241),'termination_reason':_0x1c63e2['terminationReason'],'error_count':_0x1c63e2[_0x433903(0x23a)][_0x433903(0x2ab)],'is_timeout':_0x3b56d6,'timings':_0x1c63e2['timings'],'files_attempted':_0x62f6cc?.['map'](_0x2f2691=>({'path':_0x2f2691[_0x433903(0x1d1)],'lines':_0x2f2691['lines']})),'tool_calls':_0x4a2f51(_0x1c63e2[_0x433903(0x24e)]),'messages':_0x1c63e2[_0x433903(0x24e)]?.[_0x433903(0x28f)](_0x1fb0d5=>({'role':_0x1fb0d5[_0x433903(0x254)],'content':_0x1fb0d5[_0x433903(0x1e5)]})),'request_content':{'query':_0x380425['data'][_0x433903(0x2bd)],'repo_path':_0x380425[_0x433903(0x26c)][_0x433903(0x1ff)],'repoRoot':a0_0x52f230['resolve'](_0x380425[_0x433903(0x26c)][_0x433903(0x1ff)]),'model':_0x433903(0x241)}},'stack_trace':_0x12170e?.[_0x433903(0x1d8)]||undefined,'source':_0x433903(0x22a)})[_0x433903(0x240)](()=>{});}else _0x4d6185=_0x433903(0x232);}return{'content':[{'type':_0x433903(0x2ae),'text':_0x4d6185}]};}catch(_0x9346bd){const _0x466c30=_0x9346bd instanceof Error?_0x9346bd['message']:String(_0x9346bd),_0x9158f4=_0x466c30['toLowerCase']()['includes'](_0x433903(0x21f))||_0x466c30[_0x433903(0x279)]()[_0x433903(0x267)](_0x433903(0x2a4))||_0x466c30[_0x433903(0x279)]()['includes'](_0x433903(0x266))||_0x9346bd instanceof Error&&_0x9346bd[_0x433903(0x25e)]===_0x433903(0x1f2);return reportMorphError({'error_message':_0x466c30,'error_type':_0x9158f4?_0x433903(0x1f2):_0x9346bd instanceof Error?_0x9346bd['constructor'][_0x433903(0x25e)]:_0x433903(0x22d),'context':{'tool':_0x433903(0x2ad),'repo_path':_0x380425[_0x433903(0x26c)][_0x433903(0x1ff)],'query':_0x380425['data'][_0x433903(0x2bd)],'model':_0x433903(0x241),'is_timeout':_0x9158f4,'exception_phase':_0x433903(0x20e),'request_content':{'query':_0x380425[_0x433903(0x26c)][_0x433903(0x2bd)],'repo_path':_0x380425[_0x433903(0x26c)][_0x433903(0x1ff)],'repoRoot':a0_0x52f230[_0x433903(0x233)](_0x380425['data'][_0x433903(0x1ff)]),'model':'morph-warp-grep-v1-1111v0'}},'stack_trace':_0x9346bd instanceof Error?_0x9346bd[_0x433903(0x1d8)]:undefined,'source':_0x433903(0x22a)})[_0x433903(0x240)](()=>{}),{'content':[{'type':_0x433903(0x2ae),'text':_0x433903(0x212)+_0x466c30}],'isError':![]};}}case _0x433903(0x245):{const _0x53144c=WarpGrepGitHubArgsSchema[_0x433903(0x1f5)](_0x25c5ea);if(!_0x53144c[_0x433903(0x275)])return{'content':[{'type':_0x433903(0x2ae),'text':_0x433903(0x292)+_0x53144c['error']}],'isError':!![]};const _0x40feb5=_0x53144c['data'][_0x433903(0x26d)]||_0x53144c[_0x433903(0x26c)]['owner_repo'];if(!_0x40feb5)return{'content':[{'type':_0x433903(0x2ae),'text':'Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id'}],'isError':!![]};const _0x21c329=MORPH_API_KEY;if(!_0x21c329)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x1a4fae=Date[_0x433903(0x26a)]();logMcpStderr(_0x433903(0x294)+_0x40feb5+_0x433903(0x224)+_0x53144c[_0x433903(0x26c)][_0x433903(0x2bd)]+'\x22');try{const _0x29a417=new WarpGrepClient({'morphApiKey':_0x21c329,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x5b4e31=await _0x29a417['searchGitHub']({'searchTerm':_0x53144c['data'][_0x433903(0x2bd)],'github':_0x40feb5,'branch':_0x53144c[_0x433903(0x26c)][_0x433903(0x2b9)]}),_0x455e88=Date[_0x433903(0x26a)]()-_0x1a4fae;logMcpStderr(_0x433903(0x239)+_0x455e88+_0x433903(0x1de)+_0x5b4e31[_0x433903(0x275)]);const _0x40005a=formatResult(_0x5b4e31);return{'content':[{'type':_0x433903(0x2ae),'text':_0x40005a}]};}catch(_0x11e8a2){const _0x570453=Date['now']()-_0x1a4fae,_0x1f63a9=_0x11e8a2 instanceof Error?_0x11e8a2[_0x433903(0x25b)]:String(_0x11e8a2);return logMcpStderr(_0x433903(0x1f9)+_0x570453+_0x433903(0x1d3),_0x1f63a9),reportMorphError({'error_message':_0x1f63a9,'error_type':_0x11e8a2 instanceof Error?_0x11e8a2[_0x433903(0x1f0)][_0x433903(0x25e)]:_0x433903(0x22d),'context':{'tool':_0x433903(0x245),'github_url':_0x40feb5,'search_string':_0x53144c[_0x433903(0x26c)][_0x433903(0x2bd)],'branch':_0x53144c['data'][_0x433903(0x2b9)]},'stack_trace':_0x11e8a2 instanceof Error?_0x11e8a2[_0x433903(0x1d8)]:undefined,'source':_0x433903(0x22a),'tool':_0x433903(0x245),'latency_ms':_0x570453})[_0x433903(0x240)](()=>{}),{'content':[{'type':_0x433903(0x2ae),'text':_0x433903(0x2b2)+_0x1f63a9}],'isError':![]};}}default:throw new Error(_0x433903(0x21a)+_0x45482f);}}catch(_0x3a9a8c){const _0x325be5=_0x3a9a8c instanceof Error?_0x3a9a8c[_0x433903(0x25b)]:String(_0x3a9a8c);return reportMorphError({'error_message':_0x325be5,'error_type':_0x3a9a8c instanceof Error?_0x3a9a8c[_0x433903(0x1f0)][_0x433903(0x25e)]:'UnknownError','context':{'tool':_0x45482f,'arguments':_0x25c5ea?JSON[_0x433903(0x251)](_0x25c5ea)[_0x433903(0x257)](0x0,0x1f4):undefined,'mcp_server_version':_0x433903(0x260)},'stack_trace':_0x3a9a8c instanceof Error?_0x3a9a8c['stack']:undefined,'source':_0x433903(0x22a)})[_0x433903(0x240)](()=>{}),{'content':[{'type':_0x433903(0x2ae),'text':_0x433903(0x2a3)+_0x325be5}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0xbcfc67){const _0x217380=a0_0x5cfe16,_0xad299e=await getValidRootDirectories(_0xbcfc67);if(_0xad299e['length']>0x0)allowedDirectories=[..._0xad299e],logMcpStderr(_0x217380(0x253)+_0xad299e['length']+'\x20valid\x20directories');else{logMcpStderr(_0x217380(0x2aa));if(ENABLE_WORKSPACE_MODE)try{const _0x8b7c82=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x8b7c82&&(allowedDirectories=[_0x8b7c82],logMcpStderr(_0x217380(0x20c)+_0x8b7c82));}catch(_0x368928){logMcpStderr(_0x217380(0x24a)+_0x368928);}}}server[a0_0x5cfe16(0x27d)](RootsListChangedNotificationSchema,async()=>{const _0x5571d7=a0_0x5cfe16;try{const _0xbd2603=await server[_0x5571d7(0x1f3)]();_0xbd2603&&_0x5571d7(0x2a0)in _0xbd2603&&await updateAllowedDirectoriesFromRoots(_0xbd2603[_0x5571d7(0x2a0)]);}catch(_0x346884){logMcpStderr(_0x5571d7(0x1fa),_0x346884 instanceof Error?_0x346884[_0x5571d7(0x25b)]:String(_0x346884));}}),server[a0_0x5cfe16(0x298)]=async()=>{const _0x54853a=a0_0x5cfe16,_0x3c88d0=server[_0x54853a(0x1ec)]();if(_0x3c88d0?.[_0x54853a(0x2a0)])try{const _0x5cf272=await server[_0x54853a(0x1f3)]();_0x5cf272&&_0x54853a(0x2a0)in _0x5cf272?await updateAllowedDirectoriesFromRoots(_0x5cf272[_0x54853a(0x2a0)]):logMcpStderr(_0x54853a(0x228));}catch(_0xf137d2){logMcpStderr(_0x54853a(0x2bb),_0xf137d2 instanceof Error?_0xf137d2[_0x54853a(0x25b)]:String(_0xf137d2));}else{if(allowedDirectories[_0x54853a(0x2ab)]>0x0)logMcpStderr(_0x54853a(0x1f7),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x54853a(0x288));else throw new Error(_0x54853a(0x21b));}}};async function runServer(){const _0x67cd85=a0_0x5cfe16,_0x160825=new StdioServerTransport();await server[_0x67cd85(0x272)](_0x160825),logMcpStderr('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories['length']===0x0&&logMcpStderr('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()[a0_0x5cfe16(0x240)](_0x4f7e80=>{const _0x439a42=a0_0x5cfe16;logMcpStderr(_0x439a42(0x1cc),_0x4f7e80),process[_0x439a42(0x1f6)](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var a1_0x1d3643=a1_0x402f;function a1_0x402f(_0x5a8d0a,_0x12a616){_0x5a8d0a=_0x5a8d0a-0x14e;var _0x2f84da=a1_0x2f84();var _0x402f6e=_0x2f84da[_0x5a8d0a];return _0x402f6e;}(function(_0x36b8a5,_0xf30907){var _0x1fb5c0=a1_0x402f,_0x14ba46=_0x36b8a5();while(!![]){try{var _0x94d644=parseInt(_0x1fb5c0(0x154))/0x1*(parseInt(_0x1fb5c0(0x150))/0x2)+parseInt(_0x1fb5c0(0x152))/0x3*(-parseInt(_0x1fb5c0(0x155))/0x4)+-parseInt(_0x1fb5c0(0x14e))/0x5+parseInt(_0x1fb5c0(0x15c))/0x6+parseInt(_0x1fb5c0(0x157))/0x7*(parseInt(_0x1fb5c0(0x14f))/0x8)+-parseInt(_0x1fb5c0(0x15f))/0x9+parseInt(_0x1fb5c0(0x153))/0xa*(parseInt(_0x1fb5c0(0x15e))/0xb);if(_0x94d644===_0xf30907)break;else _0x14ba46['push'](_0x14ba46['shift']());}catch(_0x49e3b5){_0x14ba46['push'](_0x14ba46['shift']());}}}(a1_0x2f84,0x40c05));import a1_0x3250dd from'os';export function getOperatingSystemType(_0x1c76cf=a1_0x3250dd[a1_0x1d3643(0x15a)]()){var _0x21cb26=a1_0x1d3643;switch(_0x1c76cf){case _0x21cb26(0x160):return'macOS';case _0x21cb26(0x158):return _0x21cb26(0x156);case'linux':return _0x21cb26(0x15b);default:return _0x21cb26(0x159);}}function a1_0x2f84(){var _0x5ab659=['11LfqZYv','3948399sYOLjx','darwin','1543415CcBiIl','32vsrSbt','2xRCWrL','[os=','32607tuXlBm','7121270hdqHPp','20867UlRVsC','100ysRfdR','Windows','244776VtwHei','win32','Unknown','platform','Linux','2468844TpHEGa','error'];a1_0x2f84=function(){return _0x5ab659;};return a1_0x2f84();}export function formatMcpLogMessage(_0x1f3779,_0x56eb48=a1_0x3250dd[a1_0x1d3643(0x15a)]()){var _0x30558e=a1_0x1d3643;return _0x30558e(0x151)+getOperatingSystemType(_0x56eb48)+']\x20'+_0x1f3779;}export function logMcpStderr(_0x17c564,..._0x30b421){var _0x2e433f=a1_0x1d3643;console[_0x2e433f(0x15d)](formatMcpLogMessage(_0x17c564),..._0x30b421);}
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x35e7c9,_0x1a093a){const _0x33de6f=a2_0x34bb,_0x101de5=_0x35e7c9();while(!![]){try{const _0x558d39=parseInt(_0x33de6f(0x1ea))/0x1*(-parseInt(_0x33de6f(0x1ec))/0x2)+parseInt(_0x33de6f(0x1e8))/0x3*(parseInt(_0x33de6f(0x1e9))/0x4)+-parseInt(_0x33de6f(0x1f1))/0x5+-parseInt(_0x33de6f(0x1e5))/0x6+parseInt(_0x33de6f(0x1eb))/0x7+parseInt(_0x33de6f(0x1e3))/0x8+parseInt(_0x33de6f(0x1e6))/0x9;if(_0x558d39===_0x1a093a)break;else _0x101de5['push'](_0x101de5['shift']());}catch(_0x58f20f){_0x101de5['push'](_0x101de5['shift']());}}}(a2_0x179b,0x58176));function a2_0x179b(){const _0x119ea9=['normalize','toUpperCase','/mnt/','222560IyhiwO','join','3310404uZRvFx','6932214qJGlrC','replace','52203KrloWE','72DvpaZQ','5703evFUkN','28812WlDkbO','68XAKWob','charAt','startsWith','match','homedir','44710hchbTh','test','slice'];a2_0x179b=function(){return _0x119ea9;};return a2_0x179b();}function a2_0x34bb(_0x52312f,_0x19ef99){_0x52312f=_0x52312f-0x1e2;const _0x179b23=a2_0x179b();let _0x34bbfb=_0x179b23[_0x52312f];return _0x34bbfb;}import a2_0x487a79 from'path';import a2_0x38a420 from'os';export function convertToWindowsPath(_0x1351cb){const _0x3ba0e3=a2_0x34bb;if(_0x1351cb[_0x3ba0e3(0x1ee)](_0x3ba0e3(0x1e2))){const _0x180a11=_0x1351cb[_0x3ba0e3(0x1ed)](0x5)['toUpperCase'](),_0x1e9df8=_0x1351cb['slice'](0x6)[_0x3ba0e3(0x1e7)](/\//g,'\x5c');return _0x180a11+':'+_0x1e9df8;}if(_0x1351cb[_0x3ba0e3(0x1ef)](/^\/[a-zA-Z]\//)){const _0x1a17c5=_0x1351cb['charAt'](0x1)[_0x3ba0e3(0x1f5)](),_0x237033=_0x1351cb[_0x3ba0e3(0x1f3)](0x2)[_0x3ba0e3(0x1e7)](/\//g,'\x5c');return _0x1a17c5+':'+_0x237033;}if(_0x1351cb[_0x3ba0e3(0x1ef)](/^[a-zA-Z]:/))return _0x1351cb[_0x3ba0e3(0x1e7)](/\//g,'\x5c');return _0x1351cb;}export function normalizePath(_0x49f3a0){const _0x21bcf5=a2_0x34bb;_0x49f3a0=_0x49f3a0['trim']()[_0x21bcf5(0x1e7)](/^["']|["']$/g,'');const _0x19a36a=_0x49f3a0[_0x21bcf5(0x1ee)]('/')&&!_0x49f3a0[_0x21bcf5(0x1ef)](/^\/mnt\/[a-z]\//i)&&!_0x49f3a0[_0x21bcf5(0x1ef)](/^\/[a-zA-Z]\//);if(_0x19a36a)return _0x49f3a0[_0x21bcf5(0x1e7)](/\/+/g,'/')[_0x21bcf5(0x1e7)](/\/+$/,'');_0x49f3a0=convertToWindowsPath(_0x49f3a0);if(_0x49f3a0[_0x21bcf5(0x1ee)]('\x5c\x5c')){let _0x5d86b2=_0x49f3a0;_0x5d86b2=_0x5d86b2[_0x21bcf5(0x1e7)](/^\\{2,}/,'\x5c\x5c');const _0x46481a=_0x5d86b2['substring'](0x2)[_0x21bcf5(0x1e7)](/\\\\/g,'\x5c');_0x49f3a0='\x5c\x5c'+_0x46481a;}else _0x49f3a0=_0x49f3a0[_0x21bcf5(0x1e7)](/\\\\/g,'\x5c');let _0x48130d=a2_0x487a79[_0x21bcf5(0x1f4)](_0x49f3a0);_0x49f3a0['startsWith']('\x5c\x5c')&&!_0x48130d[_0x21bcf5(0x1ee)]('\x5c\x5c')&&(_0x48130d='\x5c'+_0x48130d);if(_0x48130d[_0x21bcf5(0x1ef)](/^[a-zA-Z]:/)){let _0x3d70bc=_0x48130d[_0x21bcf5(0x1e7)](/\//g,'\x5c');return/^[a-z]:/[_0x21bcf5(0x1f2)](_0x3d70bc)&&(_0x3d70bc=_0x3d70bc[_0x21bcf5(0x1ed)](0x0)[_0x21bcf5(0x1f5)]()+_0x3d70bc[_0x21bcf5(0x1f3)](0x1)),_0x3d70bc;}return _0x48130d[_0x21bcf5(0x1e7)](/\//g,'\x5c');}export function expandHome(_0x18db63){const _0x867956=a2_0x34bb;if(_0x18db63[_0x867956(0x1ee)]('~/')||_0x18db63==='~')return a2_0x487a79[_0x867956(0x1e4)](a2_0x38a420[_0x867956(0x1f0)](),_0x18db63['slice'](0x1));return _0x18db63;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a3_0x589c(_0x23d63f,_0xe1aa4e){_0x23d63f=_0x23d63f-0xea;const _0x4d2593=a3_0x4d25();let _0x589c4d=_0x4d2593[_0x23d63f];return _0x589c4d;}function a3_0x4d25(){const _0x42f6b5=['some','sep','includes','isAbsolute','1662344EIBzHx','444090hvafRt','normalize','string','2851724JxAeLw','length','695243xOtSYb','4123422LVsZiL','829200TKCEPl','12485361IyDckj','resolve','startsWith','Path\x20must\x20be\x20absolute\x20after\x20normalization'];a3_0x4d25=function(){return _0x42f6b5;};return a3_0x4d25();}(function(_0x348285,_0xefa2f9){const _0x2ad437=a3_0x589c,_0x2a1163=_0x348285();while(!![]){try{const _0x3bc4d3=-parseInt(_0x2ad437(0xea))/0x1+-parseInt(_0x2ad437(0xf5))/0x2+parseInt(_0x2ad437(0xec))/0x3+-parseInt(_0x2ad437(0xf9))/0x4+-parseInt(_0x2ad437(0xf6))/0x5+parseInt(_0x2ad437(0xeb))/0x6+parseInt(_0x2ad437(0xed))/0x7;if(_0x3bc4d3===_0xefa2f9)break;else _0x2a1163['push'](_0x2a1163['shift']());}catch(_0x5a62f0){_0x2a1163['push'](_0x2a1163['shift']());}}}(a3_0x4d25,0x66518));import a3_0x2eefed from'path';export function isPathWithinAllowedDirectories(_0x567d6f,_0x335bd6){const _0xd1a0f2=a3_0x589c;if(typeof _0x567d6f!==_0xd1a0f2(0xf8)||!Array['isArray'](_0x335bd6))return![];if(!_0x567d6f||_0x335bd6[_0xd1a0f2(0xfa)]===0x0)return![];if(_0x567d6f[_0xd1a0f2(0xf3)]('\x00'))return![];let _0x242181;try{_0x242181=a3_0x2eefed[_0xd1a0f2(0xee)](a3_0x2eefed[_0xd1a0f2(0xf7)](_0x567d6f));}catch{return![];}if(!a3_0x2eefed[_0xd1a0f2(0xf4)](_0x242181))throw new Error(_0xd1a0f2(0xf0));return _0x335bd6[_0xd1a0f2(0xf1)](_0x307efd=>{const _0x141230=_0xd1a0f2;if(typeof _0x307efd!==_0x141230(0xf8)||!_0x307efd)return![];if(_0x307efd[_0x141230(0xf3)]('\x00'))return![];let _0x261a41;try{_0x261a41=a3_0x2eefed[_0x141230(0xee)](a3_0x2eefed['normalize'](_0x307efd));}catch{return![];}if(!a3_0x2eefed[_0x141230(0xf4)](_0x261a41))throw new Error('Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization');if(_0x242181===_0x261a41)return!![];if(_0x261a41===a3_0x2eefed[_0x141230(0xf2)])return _0x242181['startsWith'](a3_0x2eefed['sep']);return _0x242181[_0x141230(0xef)](_0x261a41+a3_0x2eefed['sep']);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x4c33c6,_0x595898){const _0x3bfcd8=a4_0x27cd,_0x426723=_0x4c33c6();while(!![]){try{const _0x35872=-parseInt(_0x3bfcd8(0x1e3))/0x1+-parseInt(_0x3bfcd8(0x1ec))/0x2*(parseInt(_0x3bfcd8(0x1f0))/0x3)+-parseInt(_0x3bfcd8(0x1f3))/0x4+-parseInt(_0x3bfcd8(0x1e6))/0x5*(parseInt(_0x3bfcd8(0x1f1))/0x6)+-parseInt(_0x3bfcd8(0x1ea))/0x7*(-parseInt(_0x3bfcd8(0x1f2))/0x8)+parseInt(_0x3bfcd8(0x1ed))/0x9*(-parseInt(_0x3bfcd8(0x1e2))/0xa)+parseInt(_0x3bfcd8(0x1e1))/0xb;if(_0x35872===_0x595898)break;else _0x426723['push'](_0x426723['shift']());}catch(_0x207199){_0x426723['push'](_0x426723['shift']());}}}(a4_0x33c7,0xf1991));import{promises as a4_0x2c6267}from'fs';import a4_0x3a4f19 from'path';import a4_0x140ade from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';function a4_0x27cd(_0x3d58ca,_0x5e44fa){_0x3d58ca=_0x3d58ca-0x1dd;const _0x33c733=a4_0x33c7();let _0x27cdd9=_0x33c733[_0x3d58ca];return _0x27cdd9;}async function parseRootUri(_0x1a18f0){const _0x32f4ec=a4_0x27cd;try{const _0x35e738=_0x1a18f0['startsWith'](_0x32f4ec(0x1e5))?_0x1a18f0['slice'](0x7):_0x1a18f0,_0x46dae6=_0x35e738[_0x32f4ec(0x1de)]('~/')||_0x35e738==='~'?a4_0x3a4f19[_0x32f4ec(0x1e0)](a4_0x140ade[_0x32f4ec(0x1dd)](),_0x35e738['slice'](0x1)):_0x35e738,_0x2cbfaf=a4_0x3a4f19[_0x32f4ec(0x1ef)](_0x46dae6),_0x1d9642=await a4_0x2c6267[_0x32f4ec(0x1e4)](_0x2cbfaf);return normalizePath(_0x1d9642);}catch{return null;}}function formatDirectoryError(_0x456b28,_0xac3dfd,_0xeb0347){const _0x53ad44=a4_0x27cd;if(_0xeb0347)return _0x53ad44(0x1e9)+_0xeb0347+':\x20'+_0x456b28;const _0x200d28=_0xac3dfd instanceof Error?_0xac3dfd[_0x53ad44(0x1df)]:String(_0xac3dfd);return _0x53ad44(0x1e8)+_0x456b28+'\x20due\x20to\x20error:\x20'+_0x200d28;}function a4_0x33c7(){const _0x401027=['70683404aCUnvi','10XvstWT','141828PcMFVR','realpath','file://','4233660pJSsLE','isDirectory','Skipping\x20invalid\x20directory:\x20','Skipping\x20','170597QlBmVL','stat','1915036tGiPHz','13902174ajgJQL','uri','resolve','3mhnrOf','12INCALT','136rZcDXr','6051960GkJePz','homedir','startsWith','message','join'];a4_0x33c7=function(){return _0x401027;};return a4_0x33c7();}export async function getValidRootDirectories(_0xcbd6d6){const _0x5172c3=a4_0x27cd,_0x1ab702=[];for(const _0x21a792 of _0xcbd6d6){const _0x10af8a=await parseRootUri(_0x21a792[_0x5172c3(0x1ee)]);if(!_0x10af8a){logMcpStderr(formatDirectoryError(_0x21a792[_0x5172c3(0x1ee)],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0x5b37ae=await a4_0x2c6267[_0x5172c3(0x1eb)](_0x10af8a);_0x5b37ae[_0x5172c3(0x1e7)]()?_0x1ab702['push'](_0x10af8a):logMcpStderr(formatDirectoryError(_0x10af8a,undefined,'non-directory\x20root'));}catch(_0x14777c){logMcpStderr(formatDirectoryError(_0x10af8a,_0x14777c));}}return _0x1ab702;}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.130",
|
|
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.138",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|