@morphllm/morphmcp 0.8.141 → 0.8.142
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/log-utils.js +1 -1
- package/dist/path-utils.js +1 -1
- package/dist/path-validation.js +1 -1
- package/dist/roots-utils.js +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const a0_0x44b10e=a0_0x1d14;(function(_0x401b0f,_0x3c11f5){const _0x1f2285=a0_0x1d14,_0x65d860=_0x401b0f();while(!![]){try{const _0x502852=parseInt(_0x1f2285(0x17b))/0x1*(-parseInt(_0x1f2285(0x18c))/0x2)+parseInt(_0x1f2285(0x244))/0x3+-parseInt(_0x1f2285(0x1d8))/0x4+-parseInt(_0x1f2285(0x1ef))/0x5*(parseInt(_0x1f2285(0x192))/0x6)+-parseInt(_0x1f2285(0x1df))/0x7*(-parseInt(_0x1f2285(0x152))/0x8)+-parseInt(_0x1f2285(0x229))/0x9+-parseInt(_0x1f2285(0x23f))/0xa*(-parseInt(_0x1f2285(0x228))/0xb);if(_0x502852===_0x3c11f5)break;else _0x65d860['push'](_0x65d860['shift']());}catch(_0x2f32ea){_0x65d860['push'](_0x65d860['shift']());}}}(a0_0x10ef,0xed94b));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_0x3ad4a4 from'fs/promises';import a0_0x26b8f4 from'path';import a0_0x4b9a88 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_0x59fae9 from'axios';function fixPathRepetition(_0x25cbe2){const _0x571f76=a0_0x1d14,_0x24b296=_0x25cbe2['split'](a0_0x26b8f4['sep'])[_0x571f76(0x1cc)](Boolean);if(_0x24b296[_0x571f76(0x149)]<0x2)return null;for(let _0x10e533=Math['floor'](_0x24b296[_0x571f76(0x149)]/0x2);_0x10e533>=0x1;_0x10e533--){for(let _0x55cff6=0x0;_0x55cff6<=_0x24b296[_0x571f76(0x149)]-0x2*_0x10e533;_0x55cff6++){const _0x1bca32=_0x24b296[_0x571f76(0x1a9)](_0x55cff6,_0x55cff6+_0x10e533),_0x210d37=_0x24b296[_0x571f76(0x1a9)](_0x55cff6+_0x10e533,_0x55cff6+0x2*_0x10e533);if(_0x1bca32[_0x571f76(0x1dd)]((_0x48b0bd,_0x1b2208)=>_0x48b0bd===_0x210d37[_0x1b2208])){const _0x517bd6=[..._0x24b296[_0x571f76(0x1a9)](0x0,_0x55cff6),..._0x24b296['slice'](_0x55cff6+_0x10e533)];return a0_0x26b8f4[_0x571f76(0x1b0)]+_0x517bd6[_0x571f76(0x22e)](a0_0x26b8f4['sep']);}}}return null;}function a0_0x10ef(){const _0x57df6d=['completionId','morph-warp-grep-v2.1','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','Morph\x20Edit\x20','0.2.0','now','glob','Invalid\x20arguments:\x20','split','requiresApiKey','sk-','File\x20read\x20error:','array','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','.git','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','grep','[github_codebase_search]\x20Searching\x20','finish','-\x20Glob\x20search\x20`','\x0a...\x20(truncated,\x20total:\x20','isArray','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','tool','exit','@morphllm/morphmcp\x20','application/json','.\x20Path:\x20','Unknown\x20tool:\x20','Cargo.toml','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','all','search_type','setRequestHandler','Repository\x20identifier','Bearer\x20','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','code','data','realpath','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.','branch','assistant','post','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','<file\x20path=\x22','44KeArEK','13870656qaRqNc','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','DISABLED_TOOLS','node_modules','WarpGrep\x20sub-tool\x20errors:\x20','join','stringify','\x20error(s)','[github_codebase_search]\x20Done\x20in\x20','\x20is\x20not\x20a\x20directory','normalize','boolean','ToolException','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','PathError','optional','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','name','list_directory','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','tool_call_id','2935020POvfFJ','morph-mcp','Morph\x20FastApply\x20failed\x20without\x20error\x20message','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','push','3374130tvZiHD','list_directory\x20','\x20as\x20allowed\x20directory','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.',',\x20removed\x20','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.','env','roots','description','https://morphllm.com/api/error-report','ENABLE_WORKSPACE_MODE','Error\x20running\x20fast\x20context\x20search:\x20','Parent\x20directory\x20does\x20not\x20exist:\x20','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','resolve','Fatal\x20error\x20running\x20server:','Rules:\x0a','linesRemoved','edit_file','payload','listRoots','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','[could\x20not\x20read\x20file:\x20','Disabled\x20tools:\x20','length','read\x20','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','go.mod','Error\x20accessing\x20directory\x20','grep\x20\x27','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','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','8dIDPuD',',\x20modified\x20','match','string','morph-v3-fast','etimedout','Failed\x20to\x20read\x20file:\x20','repo_path','includes','owner_repo','`\x20in\x20`','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','[github_codebase_search]\x20Failed\x20in\x20','FileNotFound','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','BinaryFile','code_edit','\x20for:\x20\x22','Applied','user','timings','Tool\x20\x22','messages','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','unknown','Warning:\x20','function','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','connect','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','-\x20Read\x20file\x20`','log','access','ReadError','terminated','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','completed_with_file_errors','cwd','MORPH_API_KEY','github_codebase_search','role','1236807TPzXPA','map','constructor','Specific\x20commit\x20hash\x20to\x20search','setNotificationHandler','indexOf','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Created\x20File','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','stack','RipgrepError','SymlinkError','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','content','2mHfDGY','basename','Morph\x20Edit\x20Preview','parse','--api-key=','number','30XRSWPc','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.','toLowerCase','Unknown\x20error','completed','substring','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','</file>','FileReadError','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','lines','mcp-filesystem','MORPH_WARP_GREP_TIMEOUT','Failed\x20to\x20request\x20roots\x20from\x20client:','isDirectory','GitHub\x20search\x20failed:\x20','\x20\x20morph-mcp','WORKSPACE_ROOT','../package.json','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','catch','default','utf-8','slice','\x20(new\x20file)','message','composer.json','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','false','--help','sep','UnknownError','safeParse','tsconfig.json','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','object','params','dryRun','pattern','search_string','errors','.vscode','searchGitHub','github_url','Relevant\x20context\x20found:','tool_calls','\x20chars)','has','read','WarpGrepError','grep_search','\x22>\x0aError\x20reading\x20file:\x20','\x22.\x20Known\x20tools:\x20','command','\x27\x20in\x20`','path','success','filter','error','metadata','source','files','dirname','timeout','argv','\x0aExamples:','glob\x20\x27','some','morph-','1382432BmUlRk','size','ms:','startsWith','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','every','Fallback:\x20Using\x20workspace\x20root\x20','12657939UAYNyc','For\x20deletions:\x0a','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','enum','codebase_search','readFile','api-key','ENOENT','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','min','timed\x20out','RipgrepNotAvailable','--api-key','linesAdded','context','describe','10265lqpaCf','Preview\x20changes\x20without\x20applying\x20them.','terminationReason','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','instruction','Error:\x20','.\x20Changes:\x20','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','text','TimeoutError','warn'];a0_0x10ef=function(){return _0x57df6d;};return a0_0x10ef();}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x23f846=a0_0x1d14;try{const _0x5baedf=require(_0x23f846(0x1a4));return _0x5baedf['version']??_0x23f846(0x16a);}catch(_0x24c3df){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x24c3df),_0x23f846(0x16a);}}function printHelp(){const _0x18513a=a0_0x1d14;console[_0x18513a(0x171)](_0x18513a(0x213)+getPackageVersion()),console['log']('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0x18513a(0x171)]('\x0aOptions:'),console[_0x18513a(0x171)](_0x18513a(0x160)),console[_0x18513a(0x171)](_0x18513a(0x22a)),console[_0x18513a(0x171)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console[_0x18513a(0x171)](_0x18513a(0x1d4)),console[_0x18513a(0x171)](_0x18513a(0x1a2)),console['log'](_0x18513a(0x1ad));}const cliArgs=process[a0_0x44b10e(0x1d3)][a0_0x44b10e(0x1a9)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set([a0_0x44b10e(0x1af),'-h']);cliArgs[a0_0x44b10e(0x1d6)](_0x204e46=>VERSION_FLAGS[a0_0x44b10e(0x1c2)](_0x204e46))&&(console[a0_0x44b10e(0x171)](a0_0x44b10e(0x213)+getPackageVersion()),process[a0_0x44b10e(0x212)](0x0));cliArgs[a0_0x44b10e(0x1d6)](_0x6e51ae=>HELP_FLAGS[a0_0x44b10e(0x1c2)](_0x6e51ae))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x51697b){const _0x100a24=a0_0x44b10e;for(let _0x3a7104=0x0;_0x3a7104<cliArgs['length'];_0x3a7104++){const _0x2419d6=cliArgs[_0x3a7104];if(_0x2419d6[_0x100a24(0x1db)]('--'+_0x51697b+'='))return _0x2419d6['slice'](('--'+_0x51697b+'=')[_0x100a24(0x149)]);if(_0x2419d6==='--'+_0x51697b&&_0x3a7104+0x1<cliArgs[_0x100a24(0x149)])return cliArgs[_0x3a7104+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x44b10e(0x149)];i++){const arg=cliArgs[i];if(VERSION_FLAGS['has'](arg)||HELP_FLAGS['has'](arg))continue;if(arg['startsWith'](a0_0x44b10e(0x190)))continue;if(arg===a0_0x44b10e(0x1eb)){i++;continue;}args[a0_0x44b10e(0x243)](arg);}const WORKSPACE_ROOT=process['env'][a0_0x44b10e(0x1a3)]||process[a0_0x44b10e(0x24a)]['PWD']||process[a0_0x44b10e(0x177)](),ENABLE_WORKSPACE_MODE=process[a0_0x44b10e(0x24a)][a0_0x44b10e(0x24e)]!==a0_0x44b10e(0x1ae),MORPH_API_KEY=getCliArg(a0_0x44b10e(0x1e5))??process['env'][a0_0x44b10e(0x178)],MORPH_API_URL=process['env']['MORPH_API_URL'],MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0x44b10e(0x19e)]?parseInt(process[a0_0x44b10e(0x24a)]['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x44b10e(0x256),'codebase_search',a0_0x44b10e(0x179)]),DISABLED_TOOLS=process[a0_0x44b10e(0x24a)][a0_0x44b10e(0x22b)]?new Set(process[a0_0x44b10e(0x24a)]['DISABLED_TOOLS'][a0_0x44b10e(0x202)](',')['map'](_0x4203ac=>_0x4203ac['trim']())[a0_0x44b10e(0x1cc)](_0x1071f7=>_0x1071f7[a0_0x44b10e(0x149)]>0x0)):new Set();function a0_0x1d14(_0x1b6b92,_0x38caef){_0x1b6b92=_0x1b6b92-0x145;const _0x10ef2c=a0_0x10ef();let _0x1d1404=_0x10ef2c[_0x1b6b92];return _0x1d1404;}if(DISABLED_TOOLS[a0_0x44b10e(0x1d9)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x44b10e(0x1c2)](tool)&&console[a0_0x44b10e(0x1cd)]('Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22'+tool+a0_0x44b10e(0x1c7)+[...KNOWN_TOOL_NAMES][a0_0x44b10e(0x22e)](',\x20'));}console['error'](a0_0x44b10e(0x148)+[...DISABLED_TOOLS]['join'](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x44b10e(0x1db)](a0_0x44b10e(0x204))&&!MORPH_API_KEY[a0_0x44b10e(0x1db)](a0_0x44b10e(0x1d7))&&logMcpStderr(a0_0x44b10e(0x1fc));async function reportMorphError(_0x3f58b8){const _0x234063=a0_0x44b10e;try{await a0_0x59fae9[_0x234063(0x225)](_0x234063(0x24d),{..._0x3f58b8,'timestamp':new Date()['toISOString'](),'source':_0x3f58b8[_0x234063(0x1cf)]||_0x234063(0x19d),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x3f58b8[_0x234063(0x1ed)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x234063(0x214),'Authorization':_0x234063(0x21d)+MORPH_API_KEY}});}catch{}}args[a0_0x44b10e(0x149)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),logMcpStderr('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),logMcpStderr(a0_0x44b10e(0x184)),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr(a0_0x44b10e(0x181)),logMcpStderr(a0_0x44b10e(0x251)));function normalizePath(_0xabbb60){const _0xc0c11e=a0_0x44b10e;return a0_0x26b8f4[_0xc0c11e(0x233)](_0xabbb60);}function expandHome(_0x493855){const _0x11107b=a0_0x44b10e;if(_0x493855[_0x11107b(0x1db)]('~/')||_0x493855==='~')return a0_0x26b8f4[_0x11107b(0x22e)](a0_0x4b9a88['homedir'](),_0x493855[_0x11107b(0x1a9)](0x1));return _0x493855;}let allowedDirectories=await Promise[a0_0x44b10e(0x219)](args[a0_0x44b10e(0x17c)](async _0x1552ed=>{const _0x117a93=a0_0x44b10e,_0xc5ec45=expandHome(_0x1552ed),_0x89d2b7=a0_0x26b8f4[_0x117a93(0x252)](_0xc5ec45);try{const _0x37b673=await a0_0x3ad4a4[_0x117a93(0x221)](_0x89d2b7);return normalizePath(_0x37b673);}catch(_0x4c12a7){return normalizePath(_0x89d2b7);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x44b10e(0x149)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x44b10e(0x243)](workspaceDir),logMcpStderr('Workspace\x20mode\x20enabled:\x20Using\x20'+workspaceDir+a0_0x44b10e(0x246)));}catch(a0_0x3b9fab){logMcpStderr('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x3b9fab);}async function detectWorkspaceRoot(_0xf60772){const _0x55d66d=a0_0x44b10e;let _0x391dbf=a0_0x26b8f4['resolve'](_0xf60772);const _0x1d646d=[_0x55d66d(0x208),_0x55d66d(0x1bc),'package.json',_0x55d66d(0x217),'pyproject.toml',_0x55d66d(0x14d),'.cursor',_0x55d66d(0x1b3),_0x55d66d(0x1ac)];while(_0x391dbf!==a0_0x26b8f4[_0x55d66d(0x1d1)](_0x391dbf)){for(const _0x4fcd1f of _0x1d646d){const _0x3315ff=a0_0x26b8f4[_0x55d66d(0x22e)](_0x391dbf,_0x4fcd1f);try{return await a0_0x3ad4a4[_0x55d66d(0x172)](_0x3315ff),normalizePath(_0x391dbf);}catch{}}_0x391dbf=a0_0x26b8f4[_0x55d66d(0x1d1)](_0x391dbf);}return normalizePath(_0xf60772);}await Promise[a0_0x44b10e(0x219)](args[a0_0x44b10e(0x17c)](async _0x421b50=>{const _0x3ad356=a0_0x44b10e;try{const _0x378bd0=await a0_0x3ad4a4['stat'](expandHome(_0x421b50));!_0x378bd0[_0x3ad356(0x1a0)]()&&(logMcpStderr(_0x3ad356(0x1f4)+_0x421b50+_0x3ad356(0x232)),process[_0x3ad356(0x212)](0x1));}catch(_0x760d5a){logMcpStderr(_0x3ad356(0x14e)+_0x421b50+':',_0x760d5a),process[_0x3ad356(0x212)](0x1);}}));async function validatePath(_0x38df6c){const _0x4acfd7=a0_0x44b10e,_0x2eb799=expandHome(_0x38df6c),_0x190575=a0_0x26b8f4['resolve'](_0x2eb799);try{const _0x44864a=await a0_0x3ad4a4[_0x4acfd7(0x221)](_0x190575);return _0x44864a;}catch(_0x1508f4){if(_0x1508f4[_0x4acfd7(0x21f)]==='ENOENT'){const _0x4340ed=a0_0x26b8f4[_0x4acfd7(0x1d1)](_0x190575);try{const _0x2c5903=await a0_0x3ad4a4[_0x4acfd7(0x221)](_0x4340ed);return a0_0x26b8f4[_0x4acfd7(0x22e)](_0x2c5903,a0_0x26b8f4[_0x4acfd7(0x18d)](_0x190575));}catch{throw new Error(_0x4acfd7(0x250)+_0x4340ed);}}throw _0x1508f4;}}const MorphEditFileArgsSchema=z[a0_0x44b10e(0x1b6)]({'path':z[a0_0x44b10e(0x155)](),'code_edit':z[a0_0x44b10e(0x155)]()['describe'](a0_0x44b10e(0x175)),'instruction':z['string']()[a0_0x44b10e(0x1ee)](a0_0x44b10e(0x247)),'dryRun':z[a0_0x44b10e(0x234)]()[a0_0x44b10e(0x1a7)](![])['describe'](a0_0x44b10e(0x1f0))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x44b10e(0x249),WarpGrepArgsSchema=z[a0_0x44b10e(0x1b6)]({'search_string':z['string']()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x44b10e(0x155)]()[a0_0x44b10e(0x1ee)](a0_0x44b10e(0x151)),'search_type':z[a0_0x44b10e(0x1e2)]([a0_0x44b10e(0x1a7),'node_modules'])[a0_0x44b10e(0x238)]()['describe'](a0_0x44b10e(0x15d))}),WarpGrepGitHubArgsSchema=z[a0_0x44b10e(0x1b6)]({'search_string':z['string']()[a0_0x44b10e(0x1ee)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x44b10e(0x155)]()['optional']()['describe'](a0_0x44b10e(0x193)),'owner_repo':z['string']()['optional']()['describe']('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z[a0_0x44b10e(0x155)]()[a0_0x44b10e(0x238)]()['describe'](a0_0x44b10e(0x146))}),CodebaseSearchArgsSchema=z[a0_0x44b10e(0x1b6)]({'query':z[a0_0x44b10e(0x155)]()[a0_0x44b10e(0x1ee)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x44b10e(0x155)]()[a0_0x44b10e(0x1ee)](a0_0x44b10e(0x21c)),'branch':z[a0_0x44b10e(0x155)]()[a0_0x44b10e(0x238)]()[a0_0x44b10e(0x1ee)]('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x44b10e(0x155)]()[a0_0x44b10e(0x238)]()[a0_0x44b10e(0x1ee)](a0_0x44b10e(0x17e)),'targetDirectories':z[a0_0x44b10e(0x206)](z[a0_0x44b10e(0x155)]())[a0_0x44b10e(0x1a7)]([])['describe'](a0_0x44b10e(0x209)),'limit':z[a0_0x44b10e(0x191)]()[a0_0x44b10e(0x238)]()[a0_0x44b10e(0x1a7)](0xa)['describe']('Max\x20results\x20to\x20return')}),server=new Server({'name':a0_0x44b10e(0x240),'version':a0_0x44b10e(0x1fe)},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x5d1cb=a0_0x44b10e,_0xc9b8b3=[{'name':'edit_file','description':_0x5d1cb(0x150)+'⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a'+_0x5d1cb(0x1dc)+_0x5d1cb(0x186)+'Benefits:\x0a'+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x5d1cb(0x14b)+_0x5d1cb(0x16f)+_0x5d1cb(0x198)+_0x5d1cb(0x23a)+_0x5d1cb(0x1b4)+_0x5d1cb(0x1f2)+_0x5d1cb(0x1e0)+_0x5d1cb(0x21e)+'-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a'+_0x5d1cb(0x254)+_0x5d1cb(0x183)+_0x5d1cb(0x207)+_0x5d1cb(0x23d)+_0x5d1cb(0x210)+'-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a'+_0x5d1cb(0x1e1)+_0x5d1cb(0x218),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x5d1cb(0x1e3),'description':_0x5d1cb(0x242)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x5d1cb(0x16d)+'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':!![]}],_0x18774a=_0xc9b8b3[_0x5d1cb(0x1cc)](_0x141a98=>{const _0x4fd4de=_0x5d1cb;if(DISABLED_TOOLS[_0x4fd4de(0x1c2)](_0x141a98[_0x4fd4de(0x23b)]))return console[_0x4fd4de(0x1cd)]('Tool\x20'+_0x141a98[_0x4fd4de(0x23b)]+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if('requiresApiKey'in _0x141a98&&_0x141a98[_0x4fd4de(0x203)]&&!MORPH_API_KEY)return logMcpStderr(_0x4fd4de(0x16b)+_0x141a98[_0x4fd4de(0x23b)]+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x18774a[_0x5d1cb(0x17c)](_0x419e33=>({'name':_0x419e33[_0x5d1cb(0x23b)],'description':_0x419e33[_0x5d1cb(0x24c)],'inputSchema':_0x419e33['inputSchema']}))};}),server[a0_0x44b10e(0x21b)](CallToolRequestSchema,async _0x12eb5a=>{const _0x55d2cb=a0_0x44b10e,{name:_0x55ad1d,arguments:_0x1d290b}=_0x12eb5a[_0x55d2cb(0x1b7)];try{if(DISABLED_TOOLS[_0x55d2cb(0x1c2)](_0x55ad1d))throw new Error(_0x55d2cb(0x167)+_0x55ad1d+'\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable');switch(_0x55ad1d){case _0x55d2cb(0x256):{const _0x4f9864=MorphEditFileArgsSchema[_0x55d2cb(0x1b2)](_0x1d290b);if(!_0x4f9864[_0x55d2cb(0x1cb)])throw new Error(_0x55d2cb(0x226)+_0x4f9864[_0x55d2cb(0x1cd)]);const _0x438405=await validatePath(_0x4f9864[_0x55d2cb(0x220)]['path']);let _0x2c4b7c=null,_0x504a64=!![],_0x3ef712=null;try{_0x2c4b7c=await a0_0x3ad4a4['readFile'](_0x438405,_0x55d2cb(0x1a8));}catch(_0xa9febc){const _0x2feda3=_0xa9febc[_0x55d2cb(0x21f)];_0x2feda3===_0x55d2cb(0x1e6)?(_0x504a64=![],_0x2c4b7c=''):(_0x3ef712=_0x55d2cb(0x158)+(_0x2feda3||_0x55d2cb(0x16a))+'\x20-\x20'+(_0xa9febc instanceof Error?_0xa9febc['message']:String(_0xa9febc)),logMcpStderr(_0x55d2cb(0x16b)+_0x3ef712));}let _0x75e48;try{const _0x3fa5e3=MORPH_API_KEY;if(!_0x3fa5e3)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x983471=a0_0x26b8f4[_0x55d2cb(0x1d1)](_0x438405),_0x411b2e=a0_0x26b8f4[_0x55d2cb(0x18d)](_0x438405),_0x1cde32=await executeEditFile({'target_filepath':_0x411b2e,'code_edit':_0x4f9864['data']['code_edit'],'instructions':_0x4f9864['data'][_0x55d2cb(0x1f3)]},{'morphApiKey':_0x3fa5e3,'morphApiUrl':MORPH_API_URL,'baseDir':_0x983471,'autoWrite':!_0x4f9864['data'][_0x55d2cb(0x1b8)],'generateUdiff':![],'debug':![]});_0x75e48=_0x1cde32[_0x55d2cb(0x1fa)];if(!_0x1cde32['success'])throw new Error(_0x1cde32[_0x55d2cb(0x1cd)]||_0x55d2cb(0x241));const _0x1050b3=_0x1cde32['changes'],_0x426217='added\x20'+_0x1050b3[_0x55d2cb(0x1ec)]+_0x55d2cb(0x248)+_0x1050b3[_0x55d2cb(0x255)]+_0x55d2cb(0x153)+_0x1050b3['linesModified'];if(_0x4f9864['data'][_0x55d2cb(0x1b8)])return{'content':[{'type':_0x55d2cb(0x1f7),'text':_0x55d2cb(0x18e)+(_0x504a64?'':_0x55d2cb(0x1aa))+':\x20'+_0x4f9864['data'][_0x55d2cb(0x1f3)]+_0x55d2cb(0x1f5)+_0x426217+_0x55d2cb(0x215)+_0x4f9864[_0x55d2cb(0x220)][_0x55d2cb(0x1ca)]+'.'}]};return{'content':[{'type':_0x55d2cb(0x1f7),'text':_0x55d2cb(0x1fd)+(_0x504a64?_0x55d2cb(0x164):_0x55d2cb(0x182))+':\x20'+_0x4f9864[_0x55d2cb(0x220)][_0x55d2cb(0x1f3)]+_0x55d2cb(0x1f5)+_0x426217+_0x55d2cb(0x215)+_0x4f9864[_0x55d2cb(0x220)][_0x55d2cb(0x1ca)]+'.'}]};}catch(_0x14a89e){const _0x7d70e3=_0x14a89e instanceof Error?_0x14a89e[_0x55d2cb(0x1ab)]:String(_0x14a89e);return reportMorphError({'error_message':_0x7d70e3,'error_type':_0x14a89e instanceof Error?_0x14a89e[_0x55d2cb(0x17d)][_0x55d2cb(0x23b)]:'UnknownError','context':{'tool':_0x55d2cb(0x256),'completion_id':_0x75e48,'file_path':_0x4f9864[_0x55d2cb(0x220)][_0x55d2cb(0x1ca)],'validated_path':_0x438405,'instruction':_0x4f9864['data'][_0x55d2cb(0x1f3)],'model':_0x55d2cb(0x156),'dry_run':_0x4f9864['data'][_0x55d2cb(0x1b8)],'file_exists':_0x504a64,'file_read_error':_0x3ef712,'file_readable':_0x2c4b7c!==null,'request_content':{'path':_0x4f9864[_0x55d2cb(0x220)][_0x55d2cb(0x1ca)],'code_edit':_0x4f9864[_0x55d2cb(0x220)][_0x55d2cb(0x162)],'instruction':_0x4f9864[_0x55d2cb(0x220)][_0x55d2cb(0x1f3)],'original_code':_0x2c4b7c!==null?_0x2c4b7c[_0x55d2cb(0x149)]>0xc350?_0x2c4b7c['substring'](0x0,0xc350)+_0x55d2cb(0x20e)+_0x2c4b7c[_0x55d2cb(0x149)]+_0x55d2cb(0x1c1):_0x2c4b7c:_0x55d2cb(0x147)+(_0x3ef712||'unknown\x20error')+']','original_code_length':_0x2c4b7c?.[_0x55d2cb(0x149)]??0x0,'model':_0x55d2cb(0x156),'dry_run':_0x4f9864[_0x55d2cb(0x220)][_0x55d2cb(0x1b8)]}},'stack_trace':_0x14a89e instanceof Error?_0x14a89e[_0x55d2cb(0x187)]:undefined,'source':_0x55d2cb(0x19d)})[_0x55d2cb(0x1a6)](()=>{}),{'content':[{'type':_0x55d2cb(0x1f7),'text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x7d70e3}],'isError':!![]};}}case'codebase_search':{const _0x4ba8e2=WarpGrepArgsSchema[_0x55d2cb(0x1b2)](_0x1d290b);if(!_0x4ba8e2['success'])return{'content':[{'type':_0x55d2cb(0x1f7),'text':'Invalid\x20arguments:\x20'+_0x4ba8e2[_0x55d2cb(0x1cd)]}],'isError':!![]};const _0x1c14a7=_0x211625=>{const _0x10b2ac=_0x55d2cb,_0x4080fc=[];for(const _0x3d1ab5 of _0x211625||[]){if(_0x3d1ab5[_0x10b2ac(0x17a)]===_0x10b2ac(0x224)&&Array[_0x10b2ac(0x20f)](_0x3d1ab5[_0x10b2ac(0x1c0)]))for(const _0x189903 of _0x3d1ab5['tool_calls']){try{const _0x4e58e5=_0x189903['function']?.[_0x10b2ac(0x23b)],_0x2797ab=JSON['parse'](_0x189903[_0x10b2ac(0x16c)]?.['arguments']||'{}');if(_0x4e58e5==='grep_search')_0x4080fc['push'](_0x10b2ac(0x14f)+_0x2797ab['pattern']+'\x27\x20'+(_0x2797ab[_0x10b2ac(0x1ca)]||'.'));else{if(_0x4e58e5===_0x10b2ac(0x1c3))_0x4080fc[_0x10b2ac(0x243)](_0x10b2ac(0x14a)+_0x2797ab['path']);else{if(_0x4e58e5==='list_directory')_0x4080fc[_0x10b2ac(0x243)](_0x10b2ac(0x245)+(_0x2797ab[_0x10b2ac(0x1c8)]||'.'));else{if(_0x4e58e5==='glob')_0x4080fc[_0x10b2ac(0x243)](_0x10b2ac(0x1d5)+_0x2797ab[_0x10b2ac(0x1b9)]+'\x27\x20'+(_0x2797ab['path']||'.'));else _0x4e58e5===_0x10b2ac(0x20c)&&_0x4080fc[_0x10b2ac(0x243)](_0x10b2ac(0x20c));}}}}catch{}}}return _0x4080fc;},_0x5ebbab=_0x6705a9=>{const _0x3069b9=_0x55d2cb,_0x27c436=[];if(!_0x6705a9||!Array[_0x3069b9(0x20f)](_0x6705a9))return _0x27c436;const _0x1d59be=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x3069b9(0x15f),'tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':_0x3069b9(0x237),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x3069b9(0x173),'tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x3069b9(0x161),'tool':_0x3069b9(0x1c3)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x3069b9(0x188),'tool':_0x3069b9(0x20a)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x3069b9(0x1ea),'tool':'grep'},{'pattern':/\[BINARY FILE\]/,'error_type':'BinaryFile','tool':_0x3069b9(0x1c3)},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':'read'},{'pattern':/not a text file/,'error_type':_0x3069b9(0x161),'tool':_0x3069b9(0x1c3)},{'pattern':/symbolic link/,'error_type':_0x3069b9(0x189),'tool':_0x3069b9(0x1c3)},{'pattern':/Error reading file:/,'error_type':_0x3069b9(0x173),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x3069b9(0x235),'tool':_0x3069b9(0x16a)}];let _0x3dc4a4=0x0;for(const _0x4f2e5c of _0x6705a9){_0x4f2e5c[_0x3069b9(0x17a)]===_0x3069b9(0x224)&&Array[_0x3069b9(0x20f)](_0x4f2e5c[_0x3069b9(0x1c0)])&&_0x3dc4a4++;const _0x389e1b=_0x4f2e5c[_0x3069b9(0x18b)];if((_0x4f2e5c[_0x3069b9(0x17a)]===_0x3069b9(0x211)||_0x4f2e5c['role']===_0x3069b9(0x165))&&_0x389e1b&&typeof _0x389e1b===_0x3069b9(0x155))for(const {pattern:_0xc5a763,error_type:_0x4d75fc,tool:_0x46ed21}of _0x1d59be){const _0x3749a1=_0x389e1b[_0x3069b9(0x154)](new RegExp(_0xc5a763['source'],'g'));if(_0x3749a1)for(const _0x4ef0f9 of _0x3749a1){const _0x5e3dde=_0x389e1b[_0x3069b9(0x180)](_0x4ef0f9),_0x1da0d8=_0x389e1b[_0x3069b9(0x197)](_0x5e3dde,Math[_0x3069b9(0x1e8)](_0x5e3dde+0xc8,_0x389e1b[_0x3069b9(0x149)]));_0x27c436[_0x3069b9(0x243)]({'tool':_0x46ed21,'error_type':_0x4d75fc,'error_message':_0x1da0d8[_0x3069b9(0x202)]('\x0a')[0x0],'turn':_0x3dc4a4});}}}return _0x27c436;};try{const _0x3293a9=a0_0x26b8f4[_0x55d2cb(0x252)](_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x159)]),_0x55a9ac=_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x21a)],_0x489b01=_0x55a9ac===_0x55d2cb(0x22c)?{'allowNames':[_0x55d2cb(0x22c)]}:undefined,_0x37ea6c=new LocalRipgrepProvider(_0x3293a9,undefined,_0x489b01),_0x34798b=await runWarpGrep({'searchTerm':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x1ba)],'repoRoot':_0x3293a9,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x37ea6c,'search_type':_0x55a9ac}),_0x2d1ebc=_0x5ebbab(_0x34798b[_0x55d2cb(0x168)]);_0x2d1ebc[_0x55d2cb(0x149)]>0x0&&reportMorphError({'error_message':_0x55d2cb(0x22d)+_0x2d1ebc[_0x55d2cb(0x149)]+_0x55d2cb(0x230),'error_type':'SubToolError','level':_0x55d2cb(0x1f9),'tool':_0x55d2cb(0x1e3),'context':{'repo_path':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x159)],'query':_0x4ba8e2[_0x55d2cb(0x220)]['search_string'],'model':_0x55d2cb(0x1fb),'termination_reason':_0x34798b[_0x55d2cb(0x1f1)],'sub_tool_errors':_0x2d1ebc,'timings':_0x34798b['timings'],'tool_calls':_0x1c14a7(_0x34798b['messages']),'messages':_0x34798b['messages']?.[_0x55d2cb(0x17c)](_0x346abb=>({'role':_0x346abb[_0x55d2cb(0x17a)],'content':_0x346abb['content'],..._0x346abb[_0x55d2cb(0x1c0)]?{'tool_calls':_0x346abb[_0x55d2cb(0x1c0)][_0x55d2cb(0x149)]}:{},..._0x346abb[_0x55d2cb(0x23e)]?{'tool_call_id':_0x346abb[_0x55d2cb(0x23e)]}:{}}))},'source':_0x55d2cb(0x19d)})[_0x55d2cb(0x1a6)](()=>{});let _0x365493='';if(_0x34798b[_0x55d2cb(0x1f1)]===_0x55d2cb(0x196)&&_0x34798b['finish']?.[_0x55d2cb(0x1ce)]?.[_0x55d2cb(0x1d0)]){const _0x59df51=_0x34798b['finish'][_0x55d2cb(0x1ce)][_0x55d2cb(0x1d0)];if(_0x59df51[_0x55d2cb(0x149)]===0x0)return _0x365493=_0x34798b[_0x55d2cb(0x20c)][_0x55d2cb(0x257)]||_0x55d2cb(0x1e7),{'content':[{'type':'text','text':_0x365493}]};const _0x3755e2=[],_0x55e544=[_0x55d2cb(0x239)];for(const _0x4791ee of _0x34798b[_0x55d2cb(0x168)]){if(_0x4791ee['role']===_0x55d2cb(0x224)&&Array[_0x55d2cb(0x20f)](_0x4791ee[_0x55d2cb(0x1c0)]))for(const _0x1e2242 of _0x4791ee[_0x55d2cb(0x1c0)]){try{const _0x22cbb2=_0x1e2242[_0x55d2cb(0x16c)]?.[_0x55d2cb(0x23b)],_0x2fdb40=JSON[_0x55d2cb(0x18f)](_0x1e2242[_0x55d2cb(0x16c)]?.['arguments']||'{}');if(_0x22cbb2===_0x55d2cb(0x1c5))_0x55e544[_0x55d2cb(0x243)]('-\x20Grepped\x20\x27'+_0x2fdb40['pattern']+_0x55d2cb(0x1c9)+(_0x2fdb40[_0x55d2cb(0x1ca)]||'.')+'`');else{if(_0x22cbb2===_0x55d2cb(0x1c3))_0x55e544['push'](_0x55d2cb(0x170)+_0x2fdb40['path']+'`');else{if(_0x22cbb2===_0x55d2cb(0x23c))_0x55e544[_0x55d2cb(0x243)]('-\x20Listed\x20directory\x20`'+(_0x2fdb40[_0x55d2cb(0x1c8)]||'.')+'`');else _0x22cbb2===_0x55d2cb(0x200)&&_0x55e544[_0x55d2cb(0x243)](_0x55d2cb(0x20d)+_0x2fdb40[_0x55d2cb(0x1b9)]+_0x55d2cb(0x15c)+(_0x2fdb40[_0x55d2cb(0x1ca)]||'.')+'`');}}}catch{}}}_0x3755e2['push'](_0x55e544['join']('\x0a'));const _0x189459=['',_0x55d2cb(0x1bf)];for(const _0x16aa30 of _0x59df51){if(_0x16aa30['lines']==='*')_0x189459[_0x55d2cb(0x243)]('-\x20'+_0x16aa30[_0x55d2cb(0x1ca)]+':*');else{if(Array[_0x55d2cb(0x20f)](_0x16aa30[_0x55d2cb(0x19c)])){const _0x5d06b6=_0x16aa30[_0x55d2cb(0x19c)][_0x55d2cb(0x17c)](([_0x32c87e,_0x2d063a])=>{if(_0x32c87e===_0x2d063a)return''+_0x32c87e;return _0x32c87e+'-'+_0x2d063a;});_0x189459[_0x55d2cb(0x243)]('-\x20'+_0x16aa30[_0x55d2cb(0x1ca)]+':'+_0x5d06b6[_0x55d2cb(0x22e)](','));}else _0x189459[_0x55d2cb(0x243)]('-\x20'+_0x16aa30[_0x55d2cb(0x1ca)]+':*');}}_0x189459[_0x55d2cb(0x243)](''),_0x3755e2['push'](_0x189459[_0x55d2cb(0x22e)]('\x0a')),_0x3755e2[_0x55d2cb(0x243)]('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x5bbe0a=[];for(const _0x23adb7 of _0x59df51){let _0x5699d3=a0_0x26b8f4['resolve'](_0x4ba8e2[_0x55d2cb(0x220)]['repo_path'],_0x23adb7['path']),_0x389630=null,_0x318a72=null;try{_0x389630=await a0_0x3ad4a4['readFile'](_0x5699d3,{'encoding':'utf-8'});}catch(_0x1d6c6e){const _0x1bed11=fixPathRepetition(_0x5699d3);if(_0x1bed11)try{_0x389630=await a0_0x3ad4a4[_0x55d2cb(0x1e4)](_0x1bed11,{'encoding':_0x55d2cb(0x1a8)}),_0x5699d3=_0x1bed11;}catch{_0x318a72=_0x1d6c6e instanceof Error?_0x1d6c6e:new Error(String(_0x1d6c6e));}else _0x318a72=_0x1d6c6e instanceof Error?_0x1d6c6e:new Error(String(_0x1d6c6e));}if(_0x389630!==null){const _0x3fcd98=_0x389630[_0x55d2cb(0x202)](/\r?\n/),_0x16e044=[_0x55d2cb(0x227)+_0x23adb7['path']+'\x22>'];if(_0x23adb7['lines']==='*'||!Array[_0x55d2cb(0x20f)](_0x23adb7['lines']))for(let _0x4e9a43=0x1;_0x4e9a43<=_0x3fcd98[_0x55d2cb(0x149)];_0x4e9a43++){const _0x577609=_0x3fcd98[_0x4e9a43-0x1];_0x16e044['push'](_0x4e9a43+'|\x20'+_0x577609);}else for(const [_0x556e1c,_0x58b016]of _0x23adb7[_0x55d2cb(0x19c)]){_0x16e044[_0x55d2cb(0x149)]>0x1&&_0x16e044[_0x55d2cb(0x243)]('');for(let _0x3efc6d=_0x556e1c;_0x3efc6d<=_0x58b016&&_0x3efc6d<=_0x3fcd98[_0x55d2cb(0x149)];_0x3efc6d++){const _0x2d71cf=_0x3fcd98[_0x3efc6d-0x1];_0x16e044[_0x55d2cb(0x243)](_0x3efc6d+'|\x20'+_0x2d71cf);}}_0x16e044[_0x55d2cb(0x243)](_0x55d2cb(0x199)),_0x5bbe0a['push'](_0x16e044[_0x55d2cb(0x22e)]('\x0a'));}else _0x5bbe0a['push'](_0x55d2cb(0x227)+_0x23adb7[_0x55d2cb(0x1ca)]+_0x55d2cb(0x1c6)+(_0x318a72?.[_0x55d2cb(0x1ab)]||_0x55d2cb(0x195))+'\x0a</file>');}_0x3755e2['push'](_0x5bbe0a[_0x55d2cb(0x22e)]('\x0a\x0a')),_0x365493=_0x3755e2[_0x55d2cb(0x22e)]('\x0a');const _0x4d3913=_0x34798b[_0x55d2cb(0x1bb)]?.[_0x55d2cb(0x1cc)](_0xb9bb72=>_0xb9bb72[_0x55d2cb(0x1ab)]?.[_0x55d2cb(0x1db)](_0x55d2cb(0x205)))||[];if(_0x4d3913[_0x55d2cb(0x149)]>0x0){const _0x55f336=_0x4d3913['map'](_0x27c33b=>_0x27c33b[_0x55d2cb(0x1ab)])[_0x55d2cb(0x22e)](';\x20');reportMorphError({'error_message':_0x55f336,'error_type':_0x55d2cb(0x19a),'context':{'tool':_0x55d2cb(0x1e3),'repo_path':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x159)],'query':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x1ba)],'model':_0x55d2cb(0x1fb),'termination_reason':_0x55d2cb(0x176),'error_count':_0x4d3913[_0x55d2cb(0x149)],'is_timeout':![],'timings':_0x34798b[_0x55d2cb(0x166)],'files_attempted':_0x59df51[_0x55d2cb(0x17c)](_0xb22048=>({'path':_0xb22048[_0x55d2cb(0x1ca)],'lines':_0xb22048[_0x55d2cb(0x19c)]})),'tool_calls':_0x1c14a7(_0x34798b[_0x55d2cb(0x168)]),'messages':_0x34798b[_0x55d2cb(0x168)]?.['map'](_0xded576=>({'role':_0xded576[_0x55d2cb(0x17a)],'content':_0xded576[_0x55d2cb(0x18b)],..._0xded576['tool_calls']?{'tool_calls':_0xded576[_0x55d2cb(0x1c0)][_0x55d2cb(0x149)]}:{},..._0xded576['tool_call_id']?{'tool_call_id':_0xded576[_0x55d2cb(0x23e)]}:{}})),'request_content':{'query':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x1ba)],'repo_path':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x159)],'repoRoot':a0_0x26b8f4['resolve'](_0x4ba8e2[_0x55d2cb(0x220)]['repo_path']),'model':_0x55d2cb(0x1fb)}},'source':_0x55d2cb(0x19d)})['catch'](()=>{});}}else{if(_0x34798b[_0x55d2cb(0x1f1)]===_0x55d2cb(0x174)&&_0x34798b[_0x55d2cb(0x1bb)][_0x55d2cb(0x149)]>0x0){const _0x482766=_0x34798b['errors'][_0x55d2cb(0x17c)](_0x10fa6e=>_0x10fa6e['message'])['join'](';\x20');_0x365493=_0x55d2cb(0x1f4)+_0x482766;const _0x2cd088=_0x482766[_0x55d2cb(0x194)]()[_0x55d2cb(0x15a)]('timeout')||_0x482766[_0x55d2cb(0x194)]()[_0x55d2cb(0x15a)](_0x55d2cb(0x1e9))||_0x482766[_0x55d2cb(0x194)]()[_0x55d2cb(0x15a)](_0x55d2cb(0x157)),_0x633bbe=_0x34798b[_0x55d2cb(0x20c)]?.[_0x55d2cb(0x1ce)]?.[_0x55d2cb(0x1d0)],_0xd0d476=_0x34798b[_0x55d2cb(0x1bb)][0x0];reportMorphError({'error_message':_0x482766,'error_type':_0x2cd088?_0x55d2cb(0x1f8):_0xd0d476?.['constructor']?.[_0x55d2cb(0x23b)]||_0x55d2cb(0x1c4),'context':{'tool':_0x55d2cb(0x1e3),'repo_path':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x159)],'query':_0x4ba8e2['data']['search_string'],'model':'morph-warp-grep-v2.1','termination_reason':_0x34798b[_0x55d2cb(0x1f1)],'error_count':_0x34798b['errors']['length'],'is_timeout':_0x2cd088,'timings':_0x34798b['timings'],'files_attempted':_0x633bbe?.[_0x55d2cb(0x17c)](_0x1cb2f0=>({'path':_0x1cb2f0[_0x55d2cb(0x1ca)],'lines':_0x1cb2f0[_0x55d2cb(0x19c)]})),'tool_calls':_0x1c14a7(_0x34798b['messages']),'messages':_0x34798b[_0x55d2cb(0x168)]?.[_0x55d2cb(0x17c)](_0xafd9c8=>({'role':_0xafd9c8['role'],'content':_0xafd9c8[_0x55d2cb(0x18b)],..._0xafd9c8[_0x55d2cb(0x1c0)]?{'tool_calls':_0xafd9c8[_0x55d2cb(0x1c0)][_0x55d2cb(0x149)]}:{},..._0xafd9c8[_0x55d2cb(0x23e)]?{'tool_call_id':_0xafd9c8[_0x55d2cb(0x23e)]}:{}})),'request_content':{'query':_0x4ba8e2[_0x55d2cb(0x220)]['search_string'],'repo_path':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x159)],'repoRoot':a0_0x26b8f4[_0x55d2cb(0x252)](_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x159)]),'model':_0x55d2cb(0x1fb)}},'stack_trace':_0xd0d476?.['stack']||undefined,'source':_0x55d2cb(0x19d)})['catch'](()=>{});}else _0x365493=_0x55d2cb(0x185);}return{'content':[{'type':_0x55d2cb(0x1f7),'text':_0x365493}]};}catch(_0x5812b9){const _0x40a6f6=_0x5812b9 instanceof Error?_0x5812b9[_0x55d2cb(0x1ab)]:String(_0x5812b9),_0x967587=_0x40a6f6[_0x55d2cb(0x194)]()['includes'](_0x55d2cb(0x1d2))||_0x40a6f6[_0x55d2cb(0x194)]()[_0x55d2cb(0x15a)](_0x55d2cb(0x1e9))||_0x40a6f6[_0x55d2cb(0x194)]()[_0x55d2cb(0x15a)](_0x55d2cb(0x157))||_0x5812b9 instanceof Error&&_0x5812b9[_0x55d2cb(0x23b)]===_0x55d2cb(0x1f8);return reportMorphError({'error_message':_0x40a6f6,'error_type':_0x967587?'TimeoutError':_0x5812b9 instanceof Error?_0x5812b9[_0x55d2cb(0x17d)]['name']:_0x55d2cb(0x1b1),'context':{'tool':_0x55d2cb(0x1e3),'repo_path':_0x4ba8e2['data'][_0x55d2cb(0x159)],'query':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x1ba)],'model':_0x55d2cb(0x1fb),'is_timeout':_0x967587,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x1ba)],'repo_path':_0x4ba8e2[_0x55d2cb(0x220)][_0x55d2cb(0x159)],'repoRoot':a0_0x26b8f4[_0x55d2cb(0x252)](_0x4ba8e2[_0x55d2cb(0x220)]['repo_path']),'model':_0x55d2cb(0x1fb)}},'stack_trace':_0x5812b9 instanceof Error?_0x5812b9[_0x55d2cb(0x187)]:undefined,'source':'mcp-filesystem'})['catch'](()=>{}),{'content':[{'type':_0x55d2cb(0x1f7),'text':_0x55d2cb(0x24f)+_0x40a6f6}],'isError':![]};}}case _0x55d2cb(0x179):{const _0x1de931=WarpGrepGitHubArgsSchema[_0x55d2cb(0x1b2)](_0x1d290b);if(!_0x1de931[_0x55d2cb(0x1cb)])return{'content':[{'type':_0x55d2cb(0x1f7),'text':_0x55d2cb(0x201)+_0x1de931[_0x55d2cb(0x1cd)]}],'isError':!![]};const _0xbe92b6=_0x1de931[_0x55d2cb(0x220)][_0x55d2cb(0x1be)]||_0x1de931['data'][_0x55d2cb(0x15b)];if(!_0xbe92b6)return{'content':[{'type':_0x55d2cb(0x1f7),'text':'Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id'}],'isError':!![]};const _0x218e2e=MORPH_API_KEY;if(!_0x218e2e)throw new Error(_0x55d2cb(0x19b));const _0x2e441=Date['now']();logMcpStderr(_0x55d2cb(0x20b)+_0xbe92b6+_0x55d2cb(0x163)+_0x1de931[_0x55d2cb(0x220)][_0x55d2cb(0x1ba)]+'\x22');try{const _0x4339b5=new WarpGrepClient({'morphApiKey':_0x218e2e,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x5a9b50=await _0x4339b5[_0x55d2cb(0x1bd)]({'searchTerm':_0x1de931['data'][_0x55d2cb(0x1ba)],'github':_0xbe92b6,'branch':_0x1de931['data'][_0x55d2cb(0x223)]}),_0x172205=Date['now']()-_0x2e441;logMcpStderr(_0x55d2cb(0x231)+_0x172205+'ms.\x20Success:\x20'+_0x5a9b50[_0x55d2cb(0x1cb)]);const _0x45b36=formatResult(_0x5a9b50);return{'content':[{'type':_0x55d2cb(0x1f7),'text':_0x45b36}]};}catch(_0x1f8ef3){const _0x658641=Date[_0x55d2cb(0x1ff)]()-_0x2e441,_0x3ed941=_0x1f8ef3 instanceof Error?_0x1f8ef3[_0x55d2cb(0x1ab)]:String(_0x1f8ef3);return logMcpStderr(_0x55d2cb(0x15e)+_0x658641+_0x55d2cb(0x1da),_0x3ed941),reportMorphError({'error_message':_0x3ed941,'error_type':_0x1f8ef3 instanceof Error?_0x1f8ef3[_0x55d2cb(0x17d)]['name']:_0x55d2cb(0x1b1),'context':{'tool':_0x55d2cb(0x179),'github_url':_0xbe92b6,'search_string':_0x1de931[_0x55d2cb(0x220)][_0x55d2cb(0x1ba)],'branch':_0x1de931[_0x55d2cb(0x220)][_0x55d2cb(0x223)]},'stack_trace':_0x1f8ef3 instanceof Error?_0x1f8ef3[_0x55d2cb(0x187)]:undefined,'source':_0x55d2cb(0x19d),'tool':_0x55d2cb(0x179),'latency_ms':_0x658641})['catch'](()=>{}),{'content':[{'type':_0x55d2cb(0x1f7),'text':_0x55d2cb(0x1a1)+_0x3ed941}],'isError':![]};}}default:throw new Error(_0x55d2cb(0x216)+_0x55ad1d);}}catch(_0x556a1e){const _0x4668f9=_0x556a1e instanceof Error?_0x556a1e['message']:String(_0x556a1e);return reportMorphError({'error_message':_0x4668f9,'error_type':_0x556a1e instanceof Error?_0x556a1e[_0x55d2cb(0x17d)]['name']:_0x55d2cb(0x1b1),'context':{'tool':_0x55ad1d,'arguments':_0x1d290b?JSON[_0x55d2cb(0x22f)](_0x1d290b)[_0x55d2cb(0x197)](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x556a1e instanceof Error?_0x556a1e[_0x55d2cb(0x187)]:undefined,'source':'mcp-filesystem'})[_0x55d2cb(0x1a6)](()=>{}),{'content':[{'type':_0x55d2cb(0x1f7),'text':'Error:\x20'+_0x4668f9}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x3a6c4b){const _0xa2f036=a0_0x44b10e,_0x5ea7be=await getValidRootDirectories(_0x3a6c4b);if(_0x5ea7be[_0xa2f036(0x149)]>0x0)allowedDirectories=[..._0x5ea7be],logMcpStderr(_0xa2f036(0x169)+_0x5ea7be[_0xa2f036(0x149)]+'\x20valid\x20directories');else{logMcpStderr(_0xa2f036(0x1f6));if(ENABLE_WORKSPACE_MODE)try{const _0x1bab50=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x1bab50&&(allowedDirectories=[_0x1bab50],logMcpStderr(_0xa2f036(0x1de)+_0x1bab50));}catch(_0x14a9bb){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x14a9bb);}}}server[a0_0x44b10e(0x17f)](RootsListChangedNotificationSchema,async()=>{const _0x4550f7=a0_0x44b10e;try{const _0x281019=await server[_0x4550f7(0x145)]();_0x281019&&_0x4550f7(0x24b)in _0x281019&&await updateAllowedDirectoriesFromRoots(_0x281019[_0x4550f7(0x24b)]);}catch(_0x4343f2){logMcpStderr(_0x4550f7(0x19f),_0x4343f2 instanceof Error?_0x4343f2[_0x4550f7(0x1ab)]:String(_0x4343f2));}}),server['oninitialized']=async()=>{const _0x3156ae=a0_0x44b10e,_0x46fa78=server['getClientCapabilities']();if(_0x46fa78?.[_0x3156ae(0x24b)])try{const _0x1703b0=await server[_0x3156ae(0x145)]();_0x1703b0&&_0x3156ae(0x24b)in _0x1703b0?await updateAllowedDirectoriesFromRoots(_0x1703b0[_0x3156ae(0x24b)]):logMcpStderr(_0x3156ae(0x14c));}catch(_0x8dd87f){logMcpStderr(_0x3156ae(0x18a),_0x8dd87f instanceof Error?_0x8dd87f[_0x3156ae(0x1ab)]:String(_0x8dd87f));}else{if(allowedDirectories[_0x3156ae(0x149)]>0x0)logMcpStderr(_0x3156ae(0x236),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x3156ae(0x1a5));else throw new Error(_0x3156ae(0x222));}}};async function runServer(){const _0x345199=a0_0x44b10e,_0x1b9c4e=new StdioServerTransport();await server[_0x345199(0x16e)](_0x1b9c4e),logMcpStderr(_0x345199(0x1b5)),allowedDirectories[_0x345199(0x149)]===0x0&&logMcpStderr('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()['catch'](_0x29011d=>{const _0x3bb42e=a0_0x44b10e;logMcpStderr(_0x3bb42e(0x253),_0x29011d),process['exit'](0x1);});
|
|
2
|
+
const a0_0x99da29=a0_0x2e7f;(function(_0x517ae8,_0x23443b){const _0x5999b0=a0_0x2e7f,_0x1d358e=_0x517ae8();while(!![]){try{const _0xbfd490=-parseInt(_0x5999b0(0x1ab))/0x1*(-parseInt(_0x5999b0(0x12b))/0x2)+-parseInt(_0x5999b0(0x1c6))/0x3+parseInt(_0x5999b0(0x1cb))/0x4+parseInt(_0x5999b0(0x15d))/0x5*(parseInt(_0x5999b0(0x18d))/0x6)+-parseInt(_0x5999b0(0x17f))/0x7*(parseInt(_0x5999b0(0x114))/0x8)+parseInt(_0x5999b0(0x164))/0x9+parseInt(_0x5999b0(0x1bd))/0xa*(-parseInt(_0x5999b0(0x186))/0xb);if(_0xbfd490===_0x23443b)break;else _0x1d358e['push'](_0x1d358e['shift']());}catch(_0x428301){_0x1d358e['push'](_0x1d358e['shift']());}}}(a0_0x28eb,0x36a09));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_0x57fe67 from'fs/promises';import a0_0x2aa0dc from'path';import a0_0x2b6dcd 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';function a0_0x28eb(){const _0x1f898d=['No\x20relevant\x20code\x20found\x20for\x20the\x20query.','ToolException','optional','normalize','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','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','search_type','Failed\x20to\x20request\x20roots\x20from\x20client:','.\x20Path:\x20','completed','messages','\x27\x20in\x20`','unknown','timeout','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','❌\x20Morph\x20Edit\x20Failed:\x20','description','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','Unknown\x20error','Created\x20File','slice','node_modules','exit','boolean','package.json','setRequestHandler','WORKSPACE_ROOT','floor','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','resolve','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','files','branch','all','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.','Repository\x20identifier','completed_with_file_errors','now','.git','basename','text','github_codebase_search','log','homedir','list_directory\x20','Here\x20is\x20the\x20content\x20of\x20files:\x0a','Morph\x20Edit\x20','payload','Fatal\x20error\x20running\x20server:','TimeoutError','--version','join','listRoots','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','Fallback:\x20Using\x20workspace\x20root\x20','params','\x20chars)','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','\x20valid\x20directories','\x20-\x20','1307896zEQlpT','cwd','FileReadError','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','PathError','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','startsWith','push','split','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22',',\x20modified\x20','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','\x0aOptions:','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','api-key','\x0a</file>','dryRun','edit_file','morph-','RipgrepNotAvailable','morph-warp-grep-v2.1','18UWtauK','\x0a...\x20(truncated,\x20total:\x20','false','PWD','code_edit','github_url','enum','map','inputSchema','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','connect','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','Specific\x20commit\x20hash\x20to\x20search','error','pattern','\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable','readFile','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','array','search_string','read','Disabled\x20tools:\x20','0.2.0','Unknown\x20tool:\x20','-\x20Read\x20file\x20`','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','message','indexOf','getClientCapabilities','MORPH_WARP_GREP_TIMEOUT','Error:\x20','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','-\x20Glob\x20search\x20`','min','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','includes','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','repo_path','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','DISABLED_TOOLS','--help','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','\x20disabled\x20via\x20DISABLED_TOOLS','content','ENOENT','@morphllm/morphmcp\x20','env','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.','instruction','filter','661035MUMsmV','list_directory','post','toISOString','ms.\x20Success:\x20','codebase_search','Warning:\x20','3791196Blxsuh','object','MORPH_API_KEY','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','source','path','ENABLE_WORKSPACE_MODE','trim','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','go.mod','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','safeParse','version','utf-8','dirname','[github_codebase_search]\x20Searching\x20','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','command','stack','isArray','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','oninitialized','name','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:',',\x20removed\x20','linesRemoved','Tool\x20\x22','7apUqPa','\x20(new\x20file)','default','[github_codebase_search]\x20Failed\x20in\x20','grep_search','\x20error(s)','\x20for:\x20\x22','6443965ClTFZJ','has','code','ms:','read\x20','UnknownError','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','6NtDZYa','.cursor','grep','Rules:\x0a','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','\x0aExamples:','changes','Benefits:\x0a','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','warn','terminationReason','success','stringify','data','linesAdded','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','Parent\x20directory\x20does\x20not\x20exist:\x20','match','realpath','constructor','searchGitHub','describe','access','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','string','\x22.\x20Known\x20tools:\x20','isDirectory','parse','File\x20read\x20error:','23741Igokch','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.','sep','-\x20Listed\x20directory\x20`','finish','tool_call_id','mcp-filesystem','BinaryFile','catch','role','timings','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','</file>','function','SymlinkError','added\x20','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','composer.json','10ormUzC','setNotificationHandler','toLowerCase','errors','Relevant\x20context\x20found:','Invalid\x20arguments:\x20','`\x20in\x20`','.\x20Changes:\x20','--api-key=','545139VMVfId','arguments','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','Tool\x20','size','1550592xrLjQF','Workspace\x20mode\x20enabled:\x20Using\x20','assistant','Morph\x20Edit\x20Preview','--api-key','<file\x20path=\x22','tool_calls','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','Failed\x20to\x20read\x20file:\x20','substring','sk-','number','tsconfig.json','unknown\x20error','pyproject.toml','RipgrepError','requiresApiKey','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','Error\x20accessing\x20directory\x20','metadata','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','[github_codebase_search]\x20Done\x20in\x20','length','owner_repo','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','lines','\x22>\x0aError\x20reading\x20file:\x20','linesModified','.vscode','roots','morph-mcp'];a0_0x28eb=function(){return _0x1f898d;};return a0_0x28eb();}import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import a0_0x15f0d8 from'axios';function fixPathRepetition(_0x33aa4d){const _0x2f3a82=a0_0x2e7f,_0x3fc5a0=_0x33aa4d['split'](a0_0x2aa0dc[_0x2f3a82(0x1ad)])[_0x2f3a82(0x15c)](Boolean);if(_0x3fc5a0['length']<0x2)return null;for(let _0x3608d9=Math[_0x2f3a82(0x206)](_0x3fc5a0[_0x2f3a82(0x1e2)]/0x2);_0x3608d9>=0x1;_0x3608d9--){for(let _0x2e5ee8=0x0;_0x2e5ee8<=_0x3fc5a0[_0x2f3a82(0x1e2)]-0x2*_0x3608d9;_0x2e5ee8++){const _0x3a50c1=_0x3fc5a0['slice'](_0x2e5ee8,_0x2e5ee8+_0x3608d9),_0x4d15d9=_0x3fc5a0[_0x2f3a82(0x1ff)](_0x2e5ee8+_0x3608d9,_0x2e5ee8+0x2*_0x3608d9);if(_0x3a50c1['every']((_0x4ff923,_0x4941fa)=>_0x4ff923===_0x4d15d9[_0x4941fa])){const _0x453685=[..._0x3fc5a0[_0x2f3a82(0x1ff)](0x0,_0x2e5ee8),..._0x3fc5a0['slice'](_0x2e5ee8+_0x3608d9)];return a0_0x2aa0dc[_0x2f3a82(0x1ad)]+_0x453685[_0x2f3a82(0x10b)](a0_0x2aa0dc[_0x2f3a82(0x1ad)]);}}}return null;}function a0_0x2e7f(_0xb05a37,_0x39d2af){_0xb05a37=_0xb05a37-0x100;const _0x28eb58=a0_0x28eb();let _0x2e7f74=_0x28eb58[_0xb05a37];return _0x2e7f74;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x270c24=a0_0x2e7f;try{const _0x2dbc31=require('../package.json');return _0x2dbc31[_0x270c24(0x170)]??_0x270c24(0x1f7);}catch(_0x2c834f){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x2c834f),_0x270c24(0x1f7);}}function printHelp(){const _0xa2e945=a0_0x2e7f;console[_0xa2e945(0x102)](_0xa2e945(0x158)+getPackageVersion()),console[_0xa2e945(0x102)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0xa2e945(0x102)](_0xa2e945(0x122)),console[_0xa2e945(0x102)](_0xa2e945(0x1d2)),console[_0xa2e945(0x102)](_0xa2e945(0x11f)),console[_0xa2e945(0x102)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console['log'](_0xa2e945(0x192)),console[_0xa2e945(0x102)]('\x20\x20morph-mcp'),console[_0xa2e945(0x102)](_0xa2e945(0x154));}const cliArgs=process['argv'][a0_0x99da29(0x1ff)](0x2),VERSION_FLAGS=new Set([a0_0x99da29(0x10a),'-v','-V']),HELP_FLAGS=new Set([a0_0x99da29(0x153),'-h']);cliArgs['some'](_0x79c892=>VERSION_FLAGS[a0_0x99da29(0x187)](_0x79c892))&&(console['log'](a0_0x99da29(0x158)+getPackageVersion()),process['exit'](0x0));cliArgs['some'](_0x25debb=>HELP_FLAGS[a0_0x99da29(0x187)](_0x25debb))&&(printHelp(),process[a0_0x99da29(0x201)](0x0));function getCliArg(_0x18df4e){const _0x3eb7a0=a0_0x99da29;for(let _0x14bf25=0x0;_0x14bf25<cliArgs[_0x3eb7a0(0x1e2)];_0x14bf25++){const _0x23b975=cliArgs[_0x14bf25];if(_0x23b975[_0x3eb7a0(0x11a)]('--'+_0x18df4e+'='))return _0x23b975[_0x3eb7a0(0x1ff)](('--'+_0x18df4e+'=')[_0x3eb7a0(0x1e2)]);if(_0x23b975==='--'+_0x18df4e&&_0x14bf25+0x1<cliArgs[_0x3eb7a0(0x1e2)])return cliArgs[_0x14bf25+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs['length'];i++){const arg=cliArgs[i];if(VERSION_FLAGS['has'](arg)||HELP_FLAGS[a0_0x99da29(0x187)](arg))continue;if(arg[a0_0x99da29(0x11a)](a0_0x99da29(0x1c5)))continue;if(arg===a0_0x99da29(0x1cf)){i++;continue;}args[a0_0x99da29(0x11b)](arg);}const WORKSPACE_ROOT=process[a0_0x99da29(0x159)][a0_0x99da29(0x205)]||process[a0_0x99da29(0x159)][a0_0x99da29(0x12e)]||process[a0_0x99da29(0x115)](),ENABLE_WORKSPACE_MODE=process[a0_0x99da29(0x159)][a0_0x99da29(0x16a)]!==a0_0x99da29(0x12d),MORPH_API_KEY=getCliArg(a0_0x99da29(0x124))??process[a0_0x99da29(0x159)][a0_0x99da29(0x166)],MORPH_API_URL=process[a0_0x99da29(0x159)]['MORPH_API_URL'],MORPH_WARP_GREP_TIMEOUT=process[a0_0x99da29(0x159)][a0_0x99da29(0x148)]?parseInt(process[a0_0x99da29(0x159)]['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x99da29(0x127),a0_0x99da29(0x162),a0_0x99da29(0x101)]),DISABLED_TOOLS=process[a0_0x99da29(0x159)][a0_0x99da29(0x152)]?new Set(process[a0_0x99da29(0x159)]['DISABLED_TOOLS']['split'](',')['map'](_0x25304d=>_0x25304d[a0_0x99da29(0x16b)]())[a0_0x99da29(0x15c)](_0x430a1a=>_0x430a1a[a0_0x99da29(0x1e2)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0x99da29(0x1ca)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x99da29(0x187)](tool)&&console[a0_0x99da29(0x138)](a0_0x99da29(0x11d)+tool+a0_0x99da29(0x1a7)+[...KNOWN_TOOL_NAMES]['join'](',\x20'));}console['error'](a0_0x99da29(0x140)+[...DISABLED_TOOLS][a0_0x99da29(0x10b)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x99da29(0x11a)](a0_0x99da29(0x1d5))&&!MORPH_API_KEY['startsWith'](a0_0x99da29(0x128))&&logMcpStderr(a0_0x99da29(0x1a5));async function reportMorphError(_0x58ebc5){const _0x3fc101=a0_0x99da29;try{await a0_0x15f0d8[_0x3fc101(0x15f)]('https://morphllm.com/api/error-report',{..._0x58ebc5,'timestamp':new Date()[_0x3fc101(0x160)](),'source':_0x58ebc5[_0x3fc101(0x168)]||_0x3fc101(0x1b1),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x58ebc5['context']}},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':'Bearer\x20'+MORPH_API_KEY}});}catch{}}args[a0_0x99da29(0x1e2)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x99da29(0x1e0)),logMcpStderr('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),logMcpStderr('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),logMcpStderr(a0_0x99da29(0x1f9)),logMcpStderr(a0_0x99da29(0x16c)),logMcpStderr(a0_0x99da29(0x174)));function normalizePath(_0x3e71ca){const _0x6287dd=a0_0x99da29;return a0_0x2aa0dc[_0x6287dd(0x1ee)](_0x3e71ca);}function expandHome(_0x277e1e){const _0x39b451=a0_0x99da29;if(_0x277e1e[_0x39b451(0x11a)]('~/')||_0x277e1e==='~')return a0_0x2aa0dc[_0x39b451(0x10b)](a0_0x2b6dcd[_0x39b451(0x103)](),_0x277e1e[_0x39b451(0x1ff)](0x1));return _0x277e1e;}let allowedDirectories=await Promise[a0_0x99da29(0x20c)](args[a0_0x99da29(0x132)](async _0x3a608a=>{const _0x46ac56=a0_0x99da29,_0x110d79=expandHome(_0x3a608a),_0x3d8897=a0_0x2aa0dc['resolve'](_0x110d79);try{const _0x1b7eba=await a0_0x57fe67[_0x46ac56(0x1a0)](_0x3d8897);return normalizePath(_0x1b7eba);}catch(_0x1e0dfc){return normalizePath(_0x3d8897);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x99da29(0x1e2)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x99da29(0x11b)](workspaceDir),logMcpStderr(a0_0x99da29(0x1cc)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x6b76d9){logMcpStderr(a0_0x99da29(0x117)+a0_0x6b76d9);}async function detectWorkspaceRoot(_0x4a034f){const _0xf22114=a0_0x99da29;let _0x433869=a0_0x2aa0dc[_0xf22114(0x208)](_0x4a034f);const _0x5cf17d=[_0xf22114(0x211),_0xf22114(0x1e8),_0xf22114(0x203),'Cargo.toml',_0xf22114(0x1d9),_0xf22114(0x16d),_0xf22114(0x18e),_0xf22114(0x1d7),_0xf22114(0x1bc)];while(_0x433869!==a0_0x2aa0dc[_0xf22114(0x172)](_0x433869)){for(const _0x25f907 of _0x5cf17d){const _0xc03cdb=a0_0x2aa0dc[_0xf22114(0x10b)](_0x433869,_0x25f907);try{return await a0_0x57fe67[_0xf22114(0x1a4)](_0xc03cdb),normalizePath(_0x433869);}catch{}}_0x433869=a0_0x2aa0dc[_0xf22114(0x172)](_0x433869);}return normalizePath(_0x4a034f);}await Promise[a0_0x99da29(0x20c)](args[a0_0x99da29(0x132)](async _0x422ad9=>{const _0x41dfe1=a0_0x99da29;try{const _0x55f422=await a0_0x57fe67['stat'](expandHome(_0x422ad9));!_0x55f422[_0x41dfe1(0x1a8)]()&&(logMcpStderr('Error:\x20'+_0x422ad9+'\x20is\x20not\x20a\x20directory'),process['exit'](0x1));}catch(_0x2e4c56){logMcpStderr(_0x41dfe1(0x1de)+_0x422ad9+':',_0x2e4c56),process[_0x41dfe1(0x201)](0x1);}}));async function validatePath(_0x238345){const _0x3359fb=a0_0x99da29,_0x23d64a=expandHome(_0x238345),_0x123376=a0_0x2aa0dc[_0x3359fb(0x208)](_0x23d64a);try{const _0x98f110=await a0_0x57fe67['realpath'](_0x123376);return _0x98f110;}catch(_0x3eec2f){if(_0x3eec2f[_0x3359fb(0x188)]===_0x3359fb(0x157)){const _0x31de9b=a0_0x2aa0dc[_0x3359fb(0x172)](_0x123376);try{const _0x4ed94c=await a0_0x57fe67[_0x3359fb(0x1a0)](_0x31de9b);return a0_0x2aa0dc[_0x3359fb(0x10b)](_0x4ed94c,a0_0x2aa0dc[_0x3359fb(0x212)](_0x123376));}catch{throw new Error(_0x3359fb(0x19e)+_0x31de9b);}}throw _0x3eec2f;}}const MorphEditFileArgsSchema=z[a0_0x99da29(0x165)]({'path':z[a0_0x99da29(0x1a6)](),'code_edit':z[a0_0x99da29(0x1a6)]()['describe']('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z[a0_0x99da29(0x1a6)]()[a0_0x99da29(0x1a3)](a0_0x99da29(0x151)),'dryRun':z[a0_0x99da29(0x202)]()['default'](![])['describe']('Preview\x20changes\x20without\x20applying\x20them.')}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x99da29(0x1ac),WarpGrepArgsSchema=z['object']({'search_string':z[a0_0x99da29(0x1a6)]()[a0_0x99da29(0x1a3)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z['string']()[a0_0x99da29(0x1a3)](a0_0x99da29(0x1c8)),'search_type':z[a0_0x99da29(0x131)]([a0_0x99da29(0x181),a0_0x99da29(0x200)])[a0_0x99da29(0x1ed)]()[a0_0x99da29(0x1a3)]('Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.')}),WarpGrepGitHubArgsSchema=z[a0_0x99da29(0x165)]({'search_string':z[a0_0x99da29(0x1a6)]()[a0_0x99da29(0x1a3)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x99da29(0x1a6)]()[a0_0x99da29(0x1ed)]()['describe'](a0_0x99da29(0x15a)),'owner_repo':z[a0_0x99da29(0x1a6)]()[a0_0x99da29(0x1ed)]()[a0_0x99da29(0x1a3)]('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z[a0_0x99da29(0x1a6)]()[a0_0x99da29(0x1ed)]()[a0_0x99da29(0x1a3)](a0_0x99da29(0x178))}),CodebaseSearchArgsSchema=z[a0_0x99da29(0x165)]({'query':z[a0_0x99da29(0x1a6)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z['string']()[a0_0x99da29(0x1a3)](a0_0x99da29(0x20e)),'branch':z[a0_0x99da29(0x1a6)]()[a0_0x99da29(0x1ed)]()[a0_0x99da29(0x1a3)]('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x99da29(0x1a6)]()[a0_0x99da29(0x1ed)]()[a0_0x99da29(0x1a3)](a0_0x99da29(0x137)),'targetDirectories':z[a0_0x99da29(0x13d)](z[a0_0x99da29(0x1a6)]())[a0_0x99da29(0x181)]([])[a0_0x99da29(0x1a3)](a0_0x99da29(0x119)),'limit':z[a0_0x99da29(0x1d6)]()['optional']()[a0_0x99da29(0x181)](0xa)[a0_0x99da29(0x1a3)]('Max\x20results\x20to\x20return')}),server=new Server({'name':a0_0x99da29(0x1ea),'version':a0_0x99da29(0x141)},{'capabilities':{'tools':{}}});server[a0_0x99da29(0x204)](ListToolsRequestSchema,async()=>{const _0x3722ca=a0_0x99da29,_0x2448be=[{'name':_0x3722ca(0x127),'description':_0x3722ca(0x136)+'⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a'+_0x3722ca(0x1dc)+_0x3722ca(0x120)+_0x3722ca(0x194)+_0x3722ca(0x14a)+'-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a'+_0x3722ca(0x14d)+_0x3722ca(0x196)+_0x3722ca(0x144)+_0x3722ca(0x1e4)+_0x3722ca(0x1fc)+'For\x20deletions:\x0a'+_0x3722ca(0x121)+_0x3722ca(0x167)+_0x3722ca(0x190)+_0x3722ca(0x1f0)+_0x3722ca(0x13c)+_0x3722ca(0x1dd)+_0x3722ca(0x191)+_0x3722ca(0x14f)+_0x3722ca(0x134)+_0x3722ca(0x1ef),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x3722ca(0x162),'description':_0x3722ca(0x111)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x3722ca(0x16e)+'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':!![]}],_0x4d6c20=_0x2448be[_0x3722ca(0x15c)](_0x3eaec5=>{const _0x1a8ffc=_0x3722ca;if(DISABLED_TOOLS[_0x1a8ffc(0x187)](_0x3eaec5[_0x1a8ffc(0x17a)]))return console[_0x1a8ffc(0x138)](_0x1a8ffc(0x1c9)+_0x3eaec5[_0x1a8ffc(0x17a)]+_0x1a8ffc(0x155)),![];if(_0x1a8ffc(0x1db)in _0x3eaec5&&_0x3eaec5[_0x1a8ffc(0x1db)]&&!MORPH_API_KEY)return logMcpStderr('Warning:\x20'+_0x3eaec5['name']+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x4d6c20['map'](_0x461160=>({'name':_0x461160['name'],'description':_0x461160[_0x3722ca(0x1fb)],'inputSchema':_0x461160[_0x3722ca(0x133)]}))};}),server[a0_0x99da29(0x204)](CallToolRequestSchema,async _0x4acffd=>{const _0x134e34=a0_0x99da29,{name:_0x1b834b,arguments:_0x52f233}=_0x4acffd[_0x134e34(0x10f)];try{if(DISABLED_TOOLS[_0x134e34(0x187)](_0x1b834b))throw new Error(_0x134e34(0x17e)+_0x1b834b+_0x134e34(0x13a));switch(_0x1b834b){case _0x134e34(0x127):{const _0x33724d=MorphEditFileArgsSchema[_0x134e34(0x16f)](_0x52f233);if(!_0x33724d['success'])throw new Error('Invalid\x20arguments\x20for\x20morph_edit_file:\x20'+_0x33724d[_0x134e34(0x138)]);const _0x150011=await validatePath(_0x33724d[_0x134e34(0x19b)][_0x134e34(0x169)]);let _0x4547b9=null,_0x203203=!![],_0x17e043=null;try{_0x4547b9=await a0_0x57fe67[_0x134e34(0x13b)](_0x150011,'utf-8');}catch(_0x3ef951){const _0x5d961d=_0x3ef951['code'];_0x5d961d==='ENOENT'?(_0x203203=![],_0x4547b9=''):(_0x17e043=_0x134e34(0x1d3)+(_0x5d961d||_0x134e34(0x1f7))+_0x134e34(0x113)+(_0x3ef951 instanceof Error?_0x3ef951[_0x134e34(0x145)]:String(_0x3ef951)),logMcpStderr(_0x134e34(0x163)+_0x17e043));}let _0x198a49;try{const _0x11ac6b=MORPH_API_KEY;if(!_0x11ac6b)throw new Error(_0x134e34(0x19d));const _0xa1fdf7=a0_0x2aa0dc[_0x134e34(0x172)](_0x150011),_0x3698e1=a0_0x2aa0dc[_0x134e34(0x212)](_0x150011),_0x242c51=await executeEditFile({'target_filepath':_0x3698e1,'code_edit':_0x33724d[_0x134e34(0x19b)][_0x134e34(0x12f)],'instructions':_0x33724d[_0x134e34(0x19b)][_0x134e34(0x15b)]},{'morphApiKey':_0x11ac6b,'morphApiUrl':MORPH_API_URL,'baseDir':_0xa1fdf7,'autoWrite':!_0x33724d['data'][_0x134e34(0x126)],'generateUdiff':![],'debug':![]});_0x198a49=_0x242c51['completionId'];if(!_0x242c51[_0x134e34(0x199)])throw new Error(_0x242c51[_0x134e34(0x138)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x161588=_0x242c51[_0x134e34(0x193)],_0x1cbe26=_0x134e34(0x1ba)+_0x161588[_0x134e34(0x19c)]+_0x134e34(0x17c)+_0x161588[_0x134e34(0x17d)]+_0x134e34(0x11e)+_0x161588[_0x134e34(0x1e7)];if(_0x33724d['data']['dryRun'])return{'content':[{'type':_0x134e34(0x100),'text':_0x134e34(0x1ce)+(_0x203203?'':_0x134e34(0x180))+':\x20'+_0x33724d[_0x134e34(0x19b)]['instruction']+_0x134e34(0x1c4)+_0x1cbe26+'.\x20Path:\x20'+_0x33724d['data'][_0x134e34(0x169)]+'.'}]};return{'content':[{'type':_0x134e34(0x100),'text':_0x134e34(0x106)+(_0x203203?'Applied':_0x134e34(0x1fe))+':\x20'+_0x33724d[_0x134e34(0x19b)][_0x134e34(0x15b)]+_0x134e34(0x1c4)+_0x1cbe26+_0x134e34(0x1f3)+_0x33724d['data']['path']+'.'}]};}catch(_0x2576fa){const _0x3d1ef6=_0x2576fa instanceof Error?_0x2576fa[_0x134e34(0x145)]:String(_0x2576fa);return reportMorphError({'error_message':_0x3d1ef6,'error_type':_0x2576fa instanceof Error?_0x2576fa[_0x134e34(0x1a1)]['name']:_0x134e34(0x18b),'context':{'tool':'edit_file','completion_id':_0x198a49,'file_path':_0x33724d['data'][_0x134e34(0x169)],'validated_path':_0x150011,'instruction':_0x33724d[_0x134e34(0x19b)][_0x134e34(0x15b)],'model':'morph-v3-fast','dry_run':_0x33724d['data']['dryRun'],'file_exists':_0x203203,'file_read_error':_0x17e043,'file_readable':_0x4547b9!==null,'request_content':{'path':_0x33724d[_0x134e34(0x19b)]['path'],'code_edit':_0x33724d[_0x134e34(0x19b)][_0x134e34(0x12f)],'instruction':_0x33724d[_0x134e34(0x19b)][_0x134e34(0x15b)],'original_code':_0x4547b9!==null?_0x4547b9['length']>0xc350?_0x4547b9[_0x134e34(0x1d4)](0x0,0xc350)+_0x134e34(0x12c)+_0x4547b9[_0x134e34(0x1e2)]+_0x134e34(0x110):_0x4547b9:'[could\x20not\x20read\x20file:\x20'+(_0x17e043||_0x134e34(0x1d8))+']','original_code_length':_0x4547b9?.[_0x134e34(0x1e2)]??0x0,'model':'morph-v3-fast','dry_run':_0x33724d['data'][_0x134e34(0x126)]}},'stack_trace':_0x2576fa instanceof Error?_0x2576fa[_0x134e34(0x176)]:undefined,'source':_0x134e34(0x1b1)})[_0x134e34(0x1b3)](()=>{}),{'content':[{'type':_0x134e34(0x100),'text':_0x134e34(0x1fa)+_0x3d1ef6}],'isError':!![]};}}case _0x134e34(0x162):{const _0x25a968=WarpGrepArgsSchema['safeParse'](_0x52f233);if(!_0x25a968[_0x134e34(0x199)])return{'content':[{'type':_0x134e34(0x100),'text':_0x134e34(0x1c2)+_0x25a968[_0x134e34(0x138)]}],'isError':!![]};const _0x4e25fb=_0x75df28=>{const _0x3ecb35=_0x134e34,_0x28724c=[];for(const _0x172b84 of _0x75df28||[]){if(_0x172b84[_0x3ecb35(0x1b4)]===_0x3ecb35(0x1cd)&&Array[_0x3ecb35(0x177)](_0x172b84[_0x3ecb35(0x1d1)]))for(const _0x24c8f7 of _0x172b84[_0x3ecb35(0x1d1)]){try{const _0x3ba406=_0x24c8f7[_0x3ecb35(0x1b8)]?.[_0x3ecb35(0x17a)],_0x352142=JSON[_0x3ecb35(0x1a9)](_0x24c8f7['function']?.['arguments']||'{}');if(_0x3ba406===_0x3ecb35(0x183))_0x28724c[_0x3ecb35(0x11b)]('grep\x20\x27'+_0x352142[_0x3ecb35(0x139)]+'\x27\x20'+(_0x352142['path']||'.'));else{if(_0x3ba406===_0x3ecb35(0x13f))_0x28724c[_0x3ecb35(0x11b)](_0x3ecb35(0x18a)+_0x352142['path']);else{if(_0x3ba406===_0x3ecb35(0x15e))_0x28724c[_0x3ecb35(0x11b)](_0x3ecb35(0x104)+(_0x352142['command']||'.'));else{if(_0x3ba406==='glob')_0x28724c[_0x3ecb35(0x11b)]('glob\x20\x27'+_0x352142[_0x3ecb35(0x139)]+'\x27\x20'+(_0x352142[_0x3ecb35(0x169)]||'.'));else _0x3ba406===_0x3ecb35(0x1af)&&_0x28724c['push'](_0x3ecb35(0x1af));}}}}catch{}}}return _0x28724c;},_0x7c491b=_0x43cb37=>{const _0x278b7f=_0x134e34,_0x94faf9=[];if(!_0x43cb37||!Array[_0x278b7f(0x177)](_0x43cb37))return _0x94faf9;const _0x2f94df=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':'FileNotFound','tool':_0x278b7f(0x13f)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x278b7f(0x118),'tool':_0x278b7f(0x13f)},{'pattern':/\[READ ERROR\]/,'error_type':'ReadError','tool':_0x278b7f(0x13f)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x278b7f(0x1b2),'tool':_0x278b7f(0x13f)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x278b7f(0x1da),'tool':_0x278b7f(0x18f)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x278b7f(0x129),'tool':_0x278b7f(0x18f)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x278b7f(0x1b2),'tool':_0x278b7f(0x13f)},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':_0x278b7f(0x13f)},{'pattern':/not a text file/,'error_type':_0x278b7f(0x1b2),'tool':_0x278b7f(0x13f)},{'pattern':/symbolic link/,'error_type':_0x278b7f(0x1b9),'tool':_0x278b7f(0x13f)},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':_0x278b7f(0x13f)},{'pattern':/status="error"/,'error_type':_0x278b7f(0x1ec),'tool':_0x278b7f(0x1f7)}];let _0xe8dcbe=0x0;for(const _0x4f22e3 of _0x43cb37){_0x4f22e3[_0x278b7f(0x1b4)]===_0x278b7f(0x1cd)&&Array[_0x278b7f(0x177)](_0x4f22e3[_0x278b7f(0x1d1)])&&_0xe8dcbe++;const _0x1c74ec=_0x4f22e3['content'];if((_0x4f22e3[_0x278b7f(0x1b4)]==='tool'||_0x4f22e3[_0x278b7f(0x1b4)]==='user')&&_0x1c74ec&&typeof _0x1c74ec===_0x278b7f(0x1a6))for(const {pattern:_0x572d5f,error_type:_0x17cfdf,tool:_0x108ed6}of _0x2f94df){const _0x2009f6=_0x1c74ec[_0x278b7f(0x19f)](new RegExp(_0x572d5f[_0x278b7f(0x168)],'g'));if(_0x2009f6)for(const _0x39182 of _0x2009f6){const _0x26de49=_0x1c74ec[_0x278b7f(0x146)](_0x39182),_0x26225f=_0x1c74ec['substring'](_0x26de49,Math[_0x278b7f(0x14c)](_0x26de49+0xc8,_0x1c74ec[_0x278b7f(0x1e2)]));_0x94faf9[_0x278b7f(0x11b)]({'tool':_0x108ed6,'error_type':_0x17cfdf,'error_message':_0x26225f[_0x278b7f(0x11c)]('\x0a')[0x0],'turn':_0xe8dcbe});}}}return _0x94faf9;};try{const _0x412ff6=a0_0x2aa0dc['resolve'](_0x25a968[_0x134e34(0x19b)]['repo_path']),_0x50267b=_0x25a968[_0x134e34(0x19b)][_0x134e34(0x1f1)],_0x27451f=_0x50267b===_0x134e34(0x200)?{'allowNames':[_0x134e34(0x200)]}:undefined,_0x48df60=new LocalRipgrepProvider(_0x412ff6,undefined,_0x27451f),_0x2d1dec=await runWarpGrep({'searchTerm':_0x25a968[_0x134e34(0x19b)][_0x134e34(0x13e)],'repoRoot':_0x412ff6,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x48df60,'search_type':_0x50267b}),_0x2fd61d=_0x7c491b(_0x2d1dec[_0x134e34(0x1f5)]);_0x2fd61d[_0x134e34(0x1e2)]>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x2fd61d['length']+_0x134e34(0x184),'error_type':'SubToolError','level':_0x134e34(0x197),'tool':_0x134e34(0x162),'context':{'repo_path':_0x25a968[_0x134e34(0x19b)]['repo_path'],'query':_0x25a968['data'][_0x134e34(0x13e)],'model':_0x134e34(0x12a),'termination_reason':_0x2d1dec[_0x134e34(0x198)],'sub_tool_errors':_0x2fd61d,'timings':_0x2d1dec['timings'],'tool_calls':_0x4e25fb(_0x2d1dec[_0x134e34(0x1f5)]),'messages':_0x2d1dec[_0x134e34(0x1f5)]?.[_0x134e34(0x132)](_0x2faddc=>({'role':_0x2faddc['role'],'content':_0x2faddc[_0x134e34(0x156)],..._0x2faddc[_0x134e34(0x1d1)]?{'tool_calls':_0x2faddc['tool_calls']['length']}:{},..._0x2faddc[_0x134e34(0x1b0)]?{'tool_call_id':_0x2faddc['tool_call_id']}:{}}))},'source':'mcp-filesystem'})[_0x134e34(0x1b3)](()=>{});let _0x3b1eed='';if(_0x2d1dec[_0x134e34(0x198)]===_0x134e34(0x1f4)&&_0x2d1dec[_0x134e34(0x1af)]?.[_0x134e34(0x1df)]?.[_0x134e34(0x20a)]){const _0x3ad6b1=_0x2d1dec[_0x134e34(0x1af)][_0x134e34(0x1df)]['files'];if(_0x3ad6b1[_0x134e34(0x1e2)]===0x0)return _0x3b1eed=_0x2d1dec['finish'][_0x134e34(0x107)]||_0x134e34(0x1eb),{'content':[{'type':_0x134e34(0x100),'text':_0x3b1eed}]};const _0x1640ab=[],_0x3dec4d=[_0x134e34(0x10d)];for(const _0x5d1ed2 of _0x2d1dec[_0x134e34(0x1f5)]){if(_0x5d1ed2[_0x134e34(0x1b4)]===_0x134e34(0x1cd)&&Array[_0x134e34(0x177)](_0x5d1ed2[_0x134e34(0x1d1)]))for(const _0x4af30c of _0x5d1ed2[_0x134e34(0x1d1)]){try{const _0x9f715=_0x4af30c[_0x134e34(0x1b8)]?.[_0x134e34(0x17a)],_0x307626=JSON[_0x134e34(0x1a9)](_0x4af30c[_0x134e34(0x1b8)]?.[_0x134e34(0x1c7)]||'{}');if(_0x9f715===_0x134e34(0x183))_0x3dec4d['push']('-\x20Grepped\x20\x27'+_0x307626[_0x134e34(0x139)]+_0x134e34(0x1f6)+(_0x307626['path']||'.')+'`');else{if(_0x9f715==='read')_0x3dec4d[_0x134e34(0x11b)](_0x134e34(0x143)+_0x307626['path']+'`');else{if(_0x9f715===_0x134e34(0x15e))_0x3dec4d[_0x134e34(0x11b)](_0x134e34(0x1ae)+(_0x307626[_0x134e34(0x175)]||'.')+'`');else _0x9f715==='glob'&&_0x3dec4d['push'](_0x134e34(0x14b)+_0x307626[_0x134e34(0x139)]+_0x134e34(0x1c3)+(_0x307626[_0x134e34(0x169)]||'.')+'`');}}}catch{}}}_0x1640ab[_0x134e34(0x11b)](_0x3dec4d[_0x134e34(0x10b)]('\x0a'));const _0x413a5b=['',_0x134e34(0x1c1)];for(const _0x3ec6e2 of _0x3ad6b1){if(_0x3ec6e2[_0x134e34(0x1e5)]==='*')_0x413a5b[_0x134e34(0x11b)]('-\x20'+_0x3ec6e2[_0x134e34(0x169)]+':*');else{if(Array[_0x134e34(0x177)](_0x3ec6e2[_0x134e34(0x1e5)])){const _0x5105ac=_0x3ec6e2['lines']['map'](([_0x4b76d3,_0x4410a6])=>{if(_0x4b76d3===_0x4410a6)return''+_0x4b76d3;return _0x4b76d3+'-'+_0x4410a6;});_0x413a5b[_0x134e34(0x11b)]('-\x20'+_0x3ec6e2[_0x134e34(0x169)]+':'+_0x5105ac[_0x134e34(0x10b)](','));}else _0x413a5b[_0x134e34(0x11b)]('-\x20'+_0x3ec6e2[_0x134e34(0x169)]+':*');}}_0x413a5b[_0x134e34(0x11b)](''),_0x1640ab['push'](_0x413a5b[_0x134e34(0x10b)]('\x0a')),_0x1640ab['push'](_0x134e34(0x105));const _0xcd6b84=[];for(const _0xf08df3 of _0x3ad6b1){let _0x4f646d=a0_0x2aa0dc[_0x134e34(0x208)](_0x25a968['data'][_0x134e34(0x150)],_0xf08df3[_0x134e34(0x169)]),_0x10d22b=null,_0x253ef3=null;try{_0x10d22b=await a0_0x57fe67[_0x134e34(0x13b)](_0x4f646d,{'encoding':_0x134e34(0x171)});}catch(_0x450a66){const _0x4c4c9e=fixPathRepetition(_0x4f646d);if(_0x4c4c9e)try{_0x10d22b=await a0_0x57fe67[_0x134e34(0x13b)](_0x4c4c9e,{'encoding':_0x134e34(0x171)}),_0x4f646d=_0x4c4c9e;}catch{_0x253ef3=_0x450a66 instanceof Error?_0x450a66:new Error(String(_0x450a66));}else _0x253ef3=_0x450a66 instanceof Error?_0x450a66:new Error(String(_0x450a66));}if(_0x10d22b!==null){const _0x257eb4=_0x10d22b[_0x134e34(0x11c)](/\r?\n/),_0x50dca6=[_0x134e34(0x1d0)+_0xf08df3[_0x134e34(0x169)]+'\x22>'];if(_0xf08df3[_0x134e34(0x1e5)]==='*'||!Array[_0x134e34(0x177)](_0xf08df3[_0x134e34(0x1e5)]))for(let _0x201db7=0x1;_0x201db7<=_0x257eb4[_0x134e34(0x1e2)];_0x201db7++){const _0x1b34e0=_0x257eb4[_0x201db7-0x1];_0x50dca6[_0x134e34(0x11b)](_0x201db7+'|\x20'+_0x1b34e0);}else for(const [_0x198805,_0x34ed67]of _0xf08df3['lines']){_0x50dca6[_0x134e34(0x1e2)]>0x1&&_0x50dca6[_0x134e34(0x11b)]('');for(let _0x29d539=_0x198805;_0x29d539<=_0x34ed67&&_0x29d539<=_0x257eb4['length'];_0x29d539++){const _0x27133e=_0x257eb4[_0x29d539-0x1];_0x50dca6[_0x134e34(0x11b)](_0x29d539+'|\x20'+_0x27133e);}}_0x50dca6['push'](_0x134e34(0x1b7)),_0xcd6b84[_0x134e34(0x11b)](_0x50dca6[_0x134e34(0x10b)]('\x0a'));}else _0xcd6b84[_0x134e34(0x11b)](_0x134e34(0x1d0)+_0xf08df3[_0x134e34(0x169)]+_0x134e34(0x1e6)+(_0x253ef3?.[_0x134e34(0x145)]||_0x134e34(0x1fd))+_0x134e34(0x125));}_0x1640ab[_0x134e34(0x11b)](_0xcd6b84['join']('\x0a\x0a')),_0x3b1eed=_0x1640ab['join']('\x0a');const _0x596ace=_0x2d1dec[_0x134e34(0x1c0)]?.[_0x134e34(0x15c)](_0x5a70fb=>_0x5a70fb['message']?.[_0x134e34(0x11a)](_0x134e34(0x1aa)))||[];if(_0x596ace[_0x134e34(0x1e2)]>0x0){const _0x303e3e=_0x596ace[_0x134e34(0x132)](_0x313be1=>_0x313be1[_0x134e34(0x145)])['join'](';\x20');reportMorphError({'error_message':_0x303e3e,'error_type':_0x134e34(0x116),'context':{'tool':_0x134e34(0x162),'repo_path':_0x25a968[_0x134e34(0x19b)]['repo_path'],'query':_0x25a968[_0x134e34(0x19b)]['search_string'],'model':_0x134e34(0x12a),'termination_reason':_0x134e34(0x20f),'error_count':_0x596ace[_0x134e34(0x1e2)],'is_timeout':![],'timings':_0x2d1dec['timings'],'files_attempted':_0x3ad6b1['map'](_0x2e7525=>({'path':_0x2e7525[_0x134e34(0x169)],'lines':_0x2e7525[_0x134e34(0x1e5)]})),'tool_calls':_0x4e25fb(_0x2d1dec[_0x134e34(0x1f5)]),'messages':_0x2d1dec[_0x134e34(0x1f5)]?.['map'](_0xd7030c=>({'role':_0xd7030c[_0x134e34(0x1b4)],'content':_0xd7030c[_0x134e34(0x156)],..._0xd7030c[_0x134e34(0x1d1)]?{'tool_calls':_0xd7030c['tool_calls'][_0x134e34(0x1e2)]}:{},..._0xd7030c[_0x134e34(0x1b0)]?{'tool_call_id':_0xd7030c['tool_call_id']}:{}})),'request_content':{'query':_0x25a968[_0x134e34(0x19b)]['search_string'],'repo_path':_0x25a968['data']['repo_path'],'repoRoot':a0_0x2aa0dc['resolve'](_0x25a968[_0x134e34(0x19b)][_0x134e34(0x150)]),'model':_0x134e34(0x12a)}},'source':'mcp-filesystem'})[_0x134e34(0x1b3)](()=>{});}}else{if(_0x2d1dec[_0x134e34(0x198)]==='terminated'&&_0x2d1dec[_0x134e34(0x1c0)][_0x134e34(0x1e2)]>0x0){const _0x4f1aff=_0x2d1dec['errors']['map'](_0x442802=>_0x442802[_0x134e34(0x145)])[_0x134e34(0x10b)](';\x20');_0x3b1eed=_0x134e34(0x149)+_0x4f1aff;const _0x32ce0f=_0x4f1aff[_0x134e34(0x1bf)]()['includes'](_0x134e34(0x1f8))||_0x4f1aff[_0x134e34(0x1bf)]()[_0x134e34(0x14e)]('timed\x20out')||_0x4f1aff[_0x134e34(0x1bf)]()['includes']('etimedout'),_0xb9acc=_0x2d1dec[_0x134e34(0x1af)]?.['metadata']?.[_0x134e34(0x20a)],_0x303552=_0x2d1dec[_0x134e34(0x1c0)][0x0];reportMorphError({'error_message':_0x4f1aff,'error_type':_0x32ce0f?'TimeoutError':_0x303552?.['constructor']?.['name']||'WarpGrepError','context':{'tool':_0x134e34(0x162),'repo_path':_0x25a968[_0x134e34(0x19b)][_0x134e34(0x150)],'query':_0x25a968['data']['search_string'],'model':_0x134e34(0x12a),'termination_reason':_0x2d1dec[_0x134e34(0x198)],'error_count':_0x2d1dec[_0x134e34(0x1c0)][_0x134e34(0x1e2)],'is_timeout':_0x32ce0f,'timings':_0x2d1dec[_0x134e34(0x1b5)],'files_attempted':_0xb9acc?.[_0x134e34(0x132)](_0x58ecb3=>({'path':_0x58ecb3[_0x134e34(0x169)],'lines':_0x58ecb3[_0x134e34(0x1e5)]})),'tool_calls':_0x4e25fb(_0x2d1dec[_0x134e34(0x1f5)]),'messages':_0x2d1dec[_0x134e34(0x1f5)]?.[_0x134e34(0x132)](_0x24f452=>({'role':_0x24f452[_0x134e34(0x1b4)],'content':_0x24f452[_0x134e34(0x156)],..._0x24f452[_0x134e34(0x1d1)]?{'tool_calls':_0x24f452['tool_calls'][_0x134e34(0x1e2)]}:{},..._0x24f452[_0x134e34(0x1b0)]?{'tool_call_id':_0x24f452['tool_call_id']}:{}})),'request_content':{'query':_0x25a968[_0x134e34(0x19b)][_0x134e34(0x13e)],'repo_path':_0x25a968[_0x134e34(0x19b)][_0x134e34(0x150)],'repoRoot':a0_0x2aa0dc['resolve'](_0x25a968['data'][_0x134e34(0x150)]),'model':_0x134e34(0x12a)}},'stack_trace':_0x303552?.[_0x134e34(0x176)]||undefined,'source':_0x134e34(0x1b1)})[_0x134e34(0x1b3)](()=>{});}else _0x3b1eed='Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.';}return{'content':[{'type':_0x134e34(0x100),'text':_0x3b1eed}]};}catch(_0x5eaeda){const _0x490798=_0x5eaeda instanceof Error?_0x5eaeda[_0x134e34(0x145)]:String(_0x5eaeda),_0x4c3040=_0x490798[_0x134e34(0x1bf)]()[_0x134e34(0x14e)]('timeout')||_0x490798[_0x134e34(0x1bf)]()[_0x134e34(0x14e)]('timed\x20out')||_0x490798['toLowerCase']()[_0x134e34(0x14e)]('etimedout')||_0x5eaeda instanceof Error&&_0x5eaeda[_0x134e34(0x17a)]===_0x134e34(0x109);return reportMorphError({'error_message':_0x490798,'error_type':_0x4c3040?_0x134e34(0x109):_0x5eaeda instanceof Error?_0x5eaeda[_0x134e34(0x1a1)][_0x134e34(0x17a)]:'UnknownError','context':{'tool':_0x134e34(0x162),'repo_path':_0x25a968[_0x134e34(0x19b)][_0x134e34(0x150)],'query':_0x25a968[_0x134e34(0x19b)][_0x134e34(0x13e)],'model':_0x134e34(0x12a),'is_timeout':_0x4c3040,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x25a968['data'][_0x134e34(0x13e)],'repo_path':_0x25a968[_0x134e34(0x19b)][_0x134e34(0x150)],'repoRoot':a0_0x2aa0dc[_0x134e34(0x208)](_0x25a968[_0x134e34(0x19b)][_0x134e34(0x150)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x5eaeda instanceof Error?_0x5eaeda[_0x134e34(0x176)]:undefined,'source':_0x134e34(0x1b1)})[_0x134e34(0x1b3)](()=>{}),{'content':[{'type':_0x134e34(0x100),'text':'Error\x20running\x20fast\x20context\x20search:\x20'+_0x490798}],'isError':![]};}}case _0x134e34(0x101):{const _0x477805=WarpGrepGitHubArgsSchema['safeParse'](_0x52f233);if(!_0x477805[_0x134e34(0x199)])return{'content':[{'type':_0x134e34(0x100),'text':_0x134e34(0x1c2)+_0x477805[_0x134e34(0x138)]}],'isError':!![]};const _0x2ddb70=_0x477805['data'][_0x134e34(0x130)]||_0x477805[_0x134e34(0x19b)][_0x134e34(0x1e3)];if(!_0x2ddb70)return{'content':[{'type':_0x134e34(0x100),'text':_0x134e34(0x195)}],'isError':!![]};const _0x2aaae2=MORPH_API_KEY;if(!_0x2aaae2)throw new Error(_0x134e34(0x19d));const _0x4c0cb7=Date['now']();logMcpStderr(_0x134e34(0x173)+_0x2ddb70+_0x134e34(0x185)+_0x477805['data'][_0x134e34(0x13e)]+'\x22');try{const _0x66cb09=new WarpGrepClient({'morphApiKey':_0x2aaae2,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x1f1949=await _0x66cb09[_0x134e34(0x1a2)]({'searchTerm':_0x477805[_0x134e34(0x19b)][_0x134e34(0x13e)],'github':_0x2ddb70,'branch':_0x477805[_0x134e34(0x19b)][_0x134e34(0x20b)]}),_0x4c3a21=Date[_0x134e34(0x210)]()-_0x4c0cb7;logMcpStderr(_0x134e34(0x1e1)+_0x4c3a21+_0x134e34(0x161)+_0x1f1949[_0x134e34(0x199)]);const _0x322a9c=formatResult(_0x1f1949);return{'content':[{'type':_0x134e34(0x100),'text':_0x322a9c}]};}catch(_0x2d3848){const _0x4d9d05=Date[_0x134e34(0x210)]()-_0x4c0cb7,_0x3233fd=_0x2d3848 instanceof Error?_0x2d3848['message']:String(_0x2d3848);return logMcpStderr(_0x134e34(0x182)+_0x4d9d05+_0x134e34(0x189),_0x3233fd),reportMorphError({'error_message':_0x3233fd,'error_type':_0x2d3848 instanceof Error?_0x2d3848[_0x134e34(0x1a1)][_0x134e34(0x17a)]:'UnknownError','context':{'tool':_0x134e34(0x101),'github_url':_0x2ddb70,'search_string':_0x477805[_0x134e34(0x19b)][_0x134e34(0x13e)],'branch':_0x477805['data'][_0x134e34(0x20b)]},'stack_trace':_0x2d3848 instanceof Error?_0x2d3848[_0x134e34(0x176)]:undefined,'source':_0x134e34(0x1b1),'tool':'github_codebase_search','latency_ms':_0x4d9d05})[_0x134e34(0x1b3)](()=>{}),{'content':[{'type':_0x134e34(0x100),'text':'GitHub\x20search\x20failed:\x20'+_0x3233fd}],'isError':![]};}}default:throw new Error(_0x134e34(0x142)+_0x1b834b);}}catch(_0x207e10){const _0x7b14ec=_0x207e10 instanceof Error?_0x207e10[_0x134e34(0x145)]:String(_0x207e10);return reportMorphError({'error_message':_0x7b14ec,'error_type':_0x207e10 instanceof Error?_0x207e10[_0x134e34(0x1a1)][_0x134e34(0x17a)]:_0x134e34(0x18b),'context':{'tool':_0x1b834b,'arguments':_0x52f233?JSON[_0x134e34(0x19a)](_0x52f233)[_0x134e34(0x1d4)](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x207e10 instanceof Error?_0x207e10[_0x134e34(0x176)]:undefined,'source':_0x134e34(0x1b1)})['catch'](()=>{}),{'content':[{'type':_0x134e34(0x100),'text':_0x134e34(0x149)+_0x7b14ec}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x2725f8){const _0x38a2f3=a0_0x99da29,_0x54ffcd=await getValidRootDirectories(_0x2725f8);if(_0x54ffcd[_0x38a2f3(0x1e2)]>0x0)allowedDirectories=[..._0x54ffcd],logMcpStderr(_0x38a2f3(0x18c)+_0x54ffcd[_0x38a2f3(0x1e2)]+_0x38a2f3(0x112));else{logMcpStderr(_0x38a2f3(0x207));if(ENABLE_WORKSPACE_MODE)try{const _0x125f9a=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x125f9a&&(allowedDirectories=[_0x125f9a],logMcpStderr(_0x38a2f3(0x10e)+_0x125f9a));}catch(_0x13ed21){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x13ed21);}}}server[a0_0x99da29(0x1be)](RootsListChangedNotificationSchema,async()=>{const _0x4439b9=a0_0x99da29;try{const _0x1b30d4=await server[_0x4439b9(0x10c)]();_0x1b30d4&&_0x4439b9(0x1e9)in _0x1b30d4&&await updateAllowedDirectoriesFromRoots(_0x1b30d4['roots']);}catch(_0xa1b2f9){logMcpStderr(_0x4439b9(0x1f2),_0xa1b2f9 instanceof Error?_0xa1b2f9[_0x4439b9(0x145)]:String(_0xa1b2f9));}}),server[a0_0x99da29(0x179)]=async()=>{const _0x475a9c=a0_0x99da29,_0x62e3db=server[_0x475a9c(0x147)]();if(_0x62e3db?.[_0x475a9c(0x1e9)])try{const _0x1678c0=await server[_0x475a9c(0x10c)]();_0x1678c0&&_0x475a9c(0x1e9)in _0x1678c0?await updateAllowedDirectoriesFromRoots(_0x1678c0[_0x475a9c(0x1e9)]):logMcpStderr(_0x475a9c(0x1b6));}catch(_0x1b8615){logMcpStderr(_0x475a9c(0x17b),_0x1b8615 instanceof Error?_0x1b8615[_0x475a9c(0x145)]:String(_0x1b8615));}else{if(allowedDirectories[_0x475a9c(0x1e2)]>0x0)logMcpStderr(_0x475a9c(0x209),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode');else throw new Error(_0x475a9c(0x20d));}}};async function runServer(){const _0x546454=a0_0x99da29,_0x3a267e=new StdioServerTransport();await server[_0x546454(0x135)](_0x3a267e),logMcpStderr(_0x546454(0x123)),allowedDirectories[_0x546454(0x1e2)]===0x0&&logMcpStderr(_0x546454(0x1bb));}runServer()[a0_0x99da29(0x1b3)](_0x1e0b50=>{const _0x19b1a3=a0_0x99da29;logMcpStderr(_0x19b1a3(0x108),_0x1e0b50),process['exit'](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
function a1_0x5517(){var _0x502d31=['6332928tzggOK','linux','7WbdSxz','Linux','1220268VWmitl','win32','901698bQNjCk','39uLFhZX','4103816aoqDlP','Unknown','Windows','372796vxndMJ','1728513ElfkzH','platform','6027555qeywsw'];a1_0x5517=function(){return _0x502d31;};return a1_0x5517();}function a1_0x226f(_0x279f9d,_0x330527){_0x279f9d=_0x279f9d-0x18c;var _0x55172f=a1_0x5517();var _0x226fda=_0x55172f[_0x279f9d];return _0x226fda;}var a1_0x48943b=a1_0x226f;(function(_0x3aef6a,_0x31622c){var _0x1a52dc=a1_0x226f,_0x37a800=_0x3aef6a();while(!![]){try{var _0x4d4805=parseInt(_0x1a52dc(0x194))/0x1+-parseInt(_0x1a52dc(0x192))/0x2+parseInt(_0x1a52dc(0x195))/0x3*(-parseInt(_0x1a52dc(0x199))/0x4)+parseInt(_0x1a52dc(0x18d))/0x5+parseInt(_0x1a52dc(0x18e))/0x6+-parseInt(_0x1a52dc(0x190))/0x7*(parseInt(_0x1a52dc(0x196))/0x8)+-parseInt(_0x1a52dc(0x19a))/0x9;if(_0x4d4805===_0x31622c)break;else _0x37a800['push'](_0x37a800['shift']());}catch(_0x432bb0){_0x37a800['push'](_0x37a800['shift']());}}}(a1_0x5517,0x9b426));import a1_0x385615 from'os';export function getOperatingSystemType(_0x4b725f=a1_0x385615[a1_0x48943b(0x18c)]()){var _0x4b8034=a1_0x48943b;switch(_0x4b725f){case'darwin':return'macOS';case _0x4b8034(0x193):return _0x4b8034(0x198);case _0x4b8034(0x18f):return _0x4b8034(0x191);default:return _0x4b8034(0x197);}}export function formatMcpLogMessage(_0x25f725,_0x146b8f=a1_0x385615[a1_0x48943b(0x18c)]()){return'[os='+getOperatingSystemType(_0x146b8f)+']\x20'+_0x25f725;}export function logMcpStderr(_0x2f8e0c,..._0x44965f){console['error'](formatMcpLogMessage(_0x2f8e0c),..._0x44965f);}
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a2_0x1ec0(_0x3a897c,_0x35602b){_0x3a897c=_0x3a897c-0xc9;const _0x8b3558=a2_0x8b35();let _0x1ec05e=_0x8b3558[_0x3a897c];return _0x1ec05e;}(function(_0x12cbaf,_0x2da8ea){const _0x596924=a2_0x1ec0,_0x35ef8d=_0x12cbaf();while(!![]){try{const _0x158d5d=-parseInt(_0x596924(0xd5))/0x1*(-parseInt(_0x596924(0xcd))/0x2)+-parseInt(_0x596924(0xd0))/0x3*(-parseInt(_0x596924(0xdc))/0x4)+-parseInt(_0x596924(0xd9))/0x5+-parseInt(_0x596924(0xca))/0x6+-parseInt(_0x596924(0xce))/0x7+parseInt(_0x596924(0xcf))/0x8+parseInt(_0x596924(0xda))/0x9;if(_0x158d5d===_0x2da8ea)break;else _0x35ef8d['push'](_0x35ef8d['shift']());}catch(_0x550ef0){_0x35ef8d['push'](_0x35ef8d['shift']());}}}(a2_0x8b35,0x7a9ad));import a2_0x45ff68 from'path';import a2_0x4b1904 from'os';export function convertToWindowsPath(_0x1bb8c4){const _0x4cdc0b=a2_0x1ec0;if(_0x1bb8c4[_0x4cdc0b(0xd4)](_0x4cdc0b(0xcb))){const _0x2d32d5=_0x1bb8c4[_0x4cdc0b(0xd7)](0x5)[_0x4cdc0b(0xdb)](),_0x42b76b=_0x1bb8c4['slice'](0x6)[_0x4cdc0b(0xd3)](/\//g,'\x5c');return _0x2d32d5+':'+_0x42b76b;}if(_0x1bb8c4[_0x4cdc0b(0xd6)](/^\/[a-zA-Z]\//)){const _0x68bcb7=_0x1bb8c4[_0x4cdc0b(0xd7)](0x1)[_0x4cdc0b(0xdb)](),_0x192efd=_0x1bb8c4[_0x4cdc0b(0xc9)](0x2)[_0x4cdc0b(0xd3)](/\//g,'\x5c');return _0x68bcb7+':'+_0x192efd;}if(_0x1bb8c4[_0x4cdc0b(0xd6)](/^[a-zA-Z]:/))return _0x1bb8c4[_0x4cdc0b(0xd3)](/\//g,'\x5c');return _0x1bb8c4;}function a2_0x8b35(){const _0x1987c1=['startsWith','1897ruuGub','match','charAt','homedir','4887655QxhkwU','10100538ajJYnR','toUpperCase','1832252bJiuRr','substring','slice','354330gxymvl','/mnt/','normalize','52VNCIXg','4309634XzYPHm','533656ZMpFdU','6DKidLC','trim','join','replace'];a2_0x8b35=function(){return _0x1987c1;};return a2_0x8b35();}export function normalizePath(_0x41f7f5){const _0x25dc37=a2_0x1ec0;_0x41f7f5=_0x41f7f5[_0x25dc37(0xd1)]()[_0x25dc37(0xd3)](/^["']|["']$/g,'');const _0x45847a=_0x41f7f5[_0x25dc37(0xd4)]('/')&&!_0x41f7f5[_0x25dc37(0xd6)](/^\/mnt\/[a-z]\//i)&&!_0x41f7f5[_0x25dc37(0xd6)](/^\/[a-zA-Z]\//);if(_0x45847a)return _0x41f7f5['replace'](/\/+/g,'/')['replace'](/\/+$/,'');_0x41f7f5=convertToWindowsPath(_0x41f7f5);if(_0x41f7f5[_0x25dc37(0xd4)]('\x5c\x5c')){let _0x432abe=_0x41f7f5;_0x432abe=_0x432abe['replace'](/^\\{2,}/,'\x5c\x5c');const _0x527460=_0x432abe[_0x25dc37(0xdd)](0x2)[_0x25dc37(0xd3)](/\\\\/g,'\x5c');_0x41f7f5='\x5c\x5c'+_0x527460;}else _0x41f7f5=_0x41f7f5[_0x25dc37(0xd3)](/\\\\/g,'\x5c');let _0x10cfed=a2_0x45ff68[_0x25dc37(0xcc)](_0x41f7f5);_0x41f7f5[_0x25dc37(0xd4)]('\x5c\x5c')&&!_0x10cfed['startsWith']('\x5c\x5c')&&(_0x10cfed='\x5c'+_0x10cfed);if(_0x10cfed[_0x25dc37(0xd6)](/^[a-zA-Z]:/)){let _0x39deba=_0x10cfed[_0x25dc37(0xd3)](/\//g,'\x5c');return/^[a-z]:/['test'](_0x39deba)&&(_0x39deba=_0x39deba[_0x25dc37(0xd7)](0x0)[_0x25dc37(0xdb)]()+_0x39deba[_0x25dc37(0xc9)](0x1)),_0x39deba;}return _0x10cfed[_0x25dc37(0xd3)](/\//g,'\x5c');}export function expandHome(_0x1ba84d){const _0x536355=a2_0x1ec0;if(_0x1ba84d[_0x536355(0xd4)]('~/')||_0x1ba84d==='~')return a2_0x45ff68[_0x536355(0xd2)](a2_0x4b1904[_0x536355(0xd8)](),_0x1ba84d[_0x536355(0xc9)](0x1));return _0x1ba84d;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a3_0x5cd0(){const _0x36bd72=['714241nhxXen','12eJySqw','1aSGKgE','196uVlsel','2598665LFWWHG','1424FIQipS','618570kXIeed','normalize','Path\x20must\x20be\x20absolute\x20after\x20normalization','isArray','sep','12EXjeRs','isAbsolute','70008WobFqj','startsWith','resolve','string','25146CYgQZS','some','1496044VgHrXG','includes','11089400yKctDF','length'];a3_0x5cd0=function(){return _0x36bd72;};return a3_0x5cd0();}(function(_0x393613,_0x1a148c){const _0x47b071=a3_0x565b,_0x449e5a=_0x393613();while(!![]){try{const _0x2c6759=parseInt(_0x47b071(0x142))/0x1*(parseInt(_0x47b071(0x13c))/0x2)+-parseInt(_0x47b071(0x136))/0x3*(-parseInt(_0x47b071(0x143))/0x4)+parseInt(_0x47b071(0x144))/0x5*(parseInt(_0x47b071(0x141))/0x6)+-parseInt(_0x47b071(0x13e))/0x7+parseInt(_0x47b071(0x145))/0x8*(-parseInt(_0x47b071(0x13a))/0x9)+parseInt(_0x47b071(0x146))/0xa+parseInt(_0x47b071(0x140))/0xb*(-parseInt(_0x47b071(0x134))/0xc);if(_0x2c6759===_0x1a148c)break;else _0x449e5a['push'](_0x449e5a['shift']());}catch(_0x5257c4){_0x449e5a['push'](_0x449e5a['shift']());}}}(a3_0x5cd0,0xcea0a));import a3_0xe6d053 from'path';function a3_0x565b(_0x207cca,_0x27aca9){_0x207cca=_0x207cca-0x132;const _0x5cd0b5=a3_0x5cd0();let _0x565b52=_0x5cd0b5[_0x207cca];return _0x565b52;}export function isPathWithinAllowedDirectories(_0x355809,_0x2d0d6c){const _0x22b805=a3_0x565b;if(typeof _0x355809!==_0x22b805(0x139)||!Array[_0x22b805(0x132)](_0x2d0d6c))return![];if(!_0x355809||_0x2d0d6c[_0x22b805(0x13f)]===0x0)return![];if(_0x355809[_0x22b805(0x13d)]('\x00'))return![];let _0x565ce9;try{_0x565ce9=a3_0xe6d053[_0x22b805(0x138)](a3_0xe6d053[_0x22b805(0x147)](_0x355809));}catch{return![];}if(!a3_0xe6d053['isAbsolute'](_0x565ce9))throw new Error(_0x22b805(0x148));return _0x2d0d6c[_0x22b805(0x13b)](_0x45aa1c=>{const _0x3b054c=_0x22b805;if(typeof _0x45aa1c!==_0x3b054c(0x139)||!_0x45aa1c)return![];if(_0x45aa1c[_0x3b054c(0x13d)]('\x00'))return![];let _0x28f0bd;try{_0x28f0bd=a3_0xe6d053['resolve'](a3_0xe6d053[_0x3b054c(0x147)](_0x45aa1c));}catch{return![];}if(!a3_0xe6d053[_0x3b054c(0x135)](_0x28f0bd))throw new Error('Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization');if(_0x565ce9===_0x28f0bd)return!![];if(_0x28f0bd===a3_0xe6d053['sep'])return _0x565ce9['startsWith'](a3_0xe6d053[_0x3b054c(0x133)]);return _0x565ce9[_0x3b054c(0x137)](_0x28f0bd+a3_0xe6d053['sep']);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x5ceeb0,_0x40947f){const _0x1f4057=a4_0x17a5,_0x1f4e72=_0x5ceeb0();while(!![]){try{const _0x33d194=parseInt(_0x1f4057(0xb4))/0x1+-parseInt(_0x1f4057(0xc3))/0x2*(-parseInt(_0x1f4057(0xc6))/0x3)+-parseInt(_0x1f4057(0xc2))/0x4+parseInt(_0x1f4057(0xb5))/0x5*(parseInt(_0x1f4057(0xc0))/0x6)+-parseInt(_0x1f4057(0xb8))/0x7*(parseInt(_0x1f4057(0xb1))/0x8)+parseInt(_0x1f4057(0xb3))/0x9*(parseInt(_0x1f4057(0xbe))/0xa)+-parseInt(_0x1f4057(0xc1))/0xb*(parseInt(_0x1f4057(0xb6))/0xc);if(_0x33d194===_0x40947f)break;else _0x1f4e72['push'](_0x1f4e72['shift']());}catch(_0x5a0ad5){_0x1f4e72['push'](_0x1f4e72['shift']());}}}(a4_0x4bea,0x36540));import{promises as a4_0x4af3c6}from'fs';import a4_0xa08cd2 from'path';import a4_0x4d8591 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x271bf8){const _0x583e21=a4_0x17a5;try{const _0x524ae5=_0x271bf8[_0x583e21(0xb9)](_0x583e21(0xbf))?_0x271bf8[_0x583e21(0xbc)](0x7):_0x271bf8,_0x38312a=_0x524ae5[_0x583e21(0xb9)]('~/')||_0x524ae5==='~'?a4_0xa08cd2['join'](a4_0x4d8591[_0x583e21(0xc4)](),_0x524ae5[_0x583e21(0xbc)](0x1)):_0x524ae5,_0x17f318=a4_0xa08cd2['resolve'](_0x38312a),_0x2ab6d6=await a4_0x4af3c6['realpath'](_0x17f318);return normalizePath(_0x2ab6d6);}catch{return null;}}function formatDirectoryError(_0x92175f,_0xb63e20,_0x384709){const _0x2c5793=a4_0x17a5;if(_0x384709)return _0x2c5793(0xc5)+_0x384709+':\x20'+_0x92175f;const _0x44aa52=_0xb63e20 instanceof Error?_0xb63e20['message']:String(_0xb63e20);return'Skipping\x20invalid\x20directory:\x20'+_0x92175f+_0x2c5793(0xbb)+_0x44aa52;}export async function getValidRootDirectories(_0x8c998){const _0x5db709=a4_0x17a5,_0x6eab=[];for(const _0x2dc7fa of _0x8c998){const _0x1239f7=await parseRootUri(_0x2dc7fa[_0x5db709(0xb2)]);if(!_0x1239f7){logMcpStderr(formatDirectoryError(_0x2dc7fa[_0x5db709(0xb2)],undefined,_0x5db709(0xc7)));continue;}try{const _0x59c7a1=await a4_0x4af3c6[_0x5db709(0xba)](_0x1239f7);_0x59c7a1[_0x5db709(0xb7)]()?_0x6eab['push'](_0x1239f7):logMcpStderr(formatDirectoryError(_0x1239f7,undefined,_0x5db709(0xbd)));}catch(_0x5835d6){logMcpStderr(formatDirectoryError(_0x1239f7,_0x5835d6));}}return _0x6eab;}function a4_0x17a5(_0x24a6ee,_0x57e311){_0x24a6ee=_0x24a6ee-0xb1;const _0x4bea52=a4_0x4bea();let _0x17a5cc=_0x4bea52[_0x24a6ee];return _0x17a5cc;}function a4_0x4bea(){const _0x60a63d=['8hNwnEp','uri','561411Tyhwqn','391701sZXQmb','1118410DzUCeR','204wVjwqt','isDirectory','755237BeOSWT','startsWith','stat','\x20due\x20to\x20error:\x20','slice','non-directory\x20root','50aJbZhG','file://','6eEqCmi','580118RTeSGm','295144OiRpID','2qCPrBf','homedir','Skipping\x20','1120419gJgxVR','invalid\x20path\x20or\x20inaccessible'];a4_0x4bea=function(){return _0x60a63d;};return a4_0x4bea();}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.142",
|
|
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.147",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|