@morphllm/morphmcp 0.8.105 → 0.8.106
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/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_0xae9690=a0_0x50a9;(function(_0x184982,_0x2fe261){const _0x4023fb=a0_0x50a9,_0xded4a5=_0x184982();while(!![]){try{const _0x744830=-parseInt(_0x4023fb(0xba))/0x1+-parseInt(_0x4023fb(0x137))/0x2*(-parseInt(_0x4023fb(0x151))/0x3)+parseInt(_0x4023fb(0x172))/0x4+-parseInt(_0x4023fb(0x194))/0x5*(parseInt(_0x4023fb(0x111))/0x6)+parseInt(_0x4023fb(0x157))/0x7*(-parseInt(_0x4023fb(0xd5))/0x8)+-parseInt(_0x4023fb(0x16c))/0x9+-parseInt(_0x4023fb(0xbf))/0xa*(-parseInt(_0x4023fb(0xe8))/0xb);if(_0x744830===_0x2fe261)break;else _0xded4a5['push'](_0xded4a5['shift']());}catch(_0x5ad525){_0xded4a5['push'](_0xded4a5['shift']());}}}(a0_0x5020,0x8ef38));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_0xa367a4 from'fs/promises';import a0_0x54c6c3 from'path';import a0_0x4d778e from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';function a0_0x5020(){const _0x57a013=['Created\x20File','Benefits:\x0a','...','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','setRequestHandler','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','array','Preview\x20changes\x20without\x20applying\x20them.','Fallback:\x20Using\x20workspace\x20root\x20','For\x20deletions:\x0a','-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a','indexOf','PWD','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','path','roots','catch','0.2.0','ms:','2swxzKe','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','FileReadError','unknown','timed\x20out','sep','Natural\x20language\x20query\x20to\x20search\x20for\x20code','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','etimedout','isArray','Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','Fatal\x20error\x20running\x20server:','default','Enabled\x20tools:\x20','slice','files','github_url','[warpgrep_github_search]\x20Done\x20in\x20','stats','warpgrep_github_search','log','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','.\x20Path:\x20','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','ms.\x20Success:\x20','607305exdjll','listRoots','\x22>\x0aError\x20reading\x20file:\x20','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','Invalid\x20arguments:\x20','requiresApiKey','7ZpxMkM','env','Specific\x20commit\x20hash\x20to\x20search','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','\x20is\x20not\x20a\x20directory','startsWith','argv','errors','\x20for:\x20\x22','The\x20search\x20term\x20should\x20be\x20a\x20targeted\x20natural\x20language\x20query\x20based\x20on\x20what\x20you\x20are\x20trying\x20to\x20accomplish,\x20like\x20\x27Find\x20where\x20authentication\x20requests\x20are\x20handled\x20in\x20the\x20Express\x20routes\x27\x20or\x20\x27Modify\x20the\x20agentic\x20rollout\x20to\x20use\x20the\x20new\x20tokenizer\x20and\x20chat\x20template\x27\x20or\x20\x27Fix\x20the\x20bug\x20where\x20the\x20user\x20gets\x20redirected\x20from\x20the\x20/feed\x20page\x27.\x20','params','realpath','Warning:\x20','--api-key=','ENOENT','runWarpGrep_call','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','Morph\x20FastApply\x20failed\x20without\x20error\x20message','role','limit','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','7085439aXFjTq','Error\x20running\x20fast\x20context\x20search:\x20','payload','metadata','repoId','linesRemoved','3639284IHkBNO','RipgrepError','MORPH_API_URL','ReadError','boolean','dryRun','toFixed','\x20-\x20','timings','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','UnknownError','Error:\x20','[warpgrep_github_search]\x20Failed\x20in\x20','SubToolError','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a','warpgrep_codebase_search','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','code','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Unknown\x20error','Parent\x20directory\x20does\x20not\x20exist:\x20','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','WarpGrepError','Failed\x20to\x20request\x20roots\x20from\x20client:','split','Cargo.toml','morph-mcp','sk-','No\x20results\x20found\x20for\x20query:\x20\x22','Found\x20','filter','every','results','15nPGXHz','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','toISOString','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','normalize','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','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.','mcp-filesystem','File\x20read\x20error:','readFile','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','Morph\x20Edit\x20Preview','object','grep','filepath','RipgrepNotAvailable','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','%\x20match)\x0a','searchTimeMs','basename','stringify','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','Relevant\x20context\x20found:','\x0aOptions:','stack','Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20','\x20chars)','search_string','text','MORPH_WARP_GREP_TIMEOUT','MORPH_API_KEY','Bearer\x20','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','instruction','ENABLED_TOOLS','access','❌\x20Morph\x20Edit\x20Failed:\x20','exit','post','error','match','map','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','application/json','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','-\x20Grepped\x20\x27','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','stat','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','version',',\x20removed\x20','string','name','toLowerCase','\x20(new\x20file)','578812YDurVK','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','source','added\x20','constructor','784610cELcHs','terminated','\x0a</file>','Applied','includes','ToolException','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','setNotificationHandler','substring','.\x20Changes:\x20','--version','WORKSPACE_ROOT','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','number','lines','tsconfig.json','\x20error(s)','resolve','all','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','Rules:\x0a','\x20\x20\x20Lines\x20','8408152mwJGMz','SymlinkError','data','TimeoutError','[could\x20not\x20read\x20file:\x20','has','morph-v3-fast','branch','completed','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','--api-key','</file>','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','-\x20Read\x20file\x20`','messages','\x20\x20\x20','describe','Repository\x20identifier','content','275VXqIwt','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','Search\x20failed:\x20','join','trim','query','dirname','assistant','safeParse','edit_file','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.','ms:\x0a\x0a','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','now','Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for','--help','success','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','false','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','codebase_search','BinaryFile','targetDirectories','floor','read','morph-warp-grep-v1-1111v0','completionId','unknown\x20error','Here\x20is\x20the\x20content\x20of\x20files:\x0a','pyproject.toml','isDirectory','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','Morph\x20Edit\x20','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','changes','homedir','GitHub\x20search\x20failed:\x20','Warning:\x20Workspace\x20fallback\x20failed:\x20','finish','PathError','inputSchema','142302bBXCYa','<file\x20path=\x22','ENABLE_WORKSPACE_MODE','length','timeout','message','composer.json','min','optional','\x27\x20in\x20`','connect','Note:\x20The\x20files\x20and\x20line\x20ranges\x20returned\x20by\x20this\x20tool\x20may\x20be\x20some\x20of\x20the\x20ones\x20needed\x20to\x20complete\x20the\x20user\x27s\x20request,\x20but\x20you\x20should\x20be\x20careful\x20in\x20evaluating\x20the\x20relevance\x20of\x20the\x20results,\x20since\x20the\x20subagent\x20might\x20make\x20mistakes.\x20','utf-8','FileNotFound','terminationReason','Max\x20results\x20to\x20return','repo_path','push'];a0_0x5020=function(){return _0x57a013;};return a0_0x5020();}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{executeCodebaseSearch}from'@morphllm/morphsdk/tools/codebase-search';import a0_0x29bd7b from'axios';function fixPathRepetition(_0x30b7dc){const _0x2b820d=a0_0x50a9,_0x16059e=_0x30b7dc[_0x2b820d(0x18b)](a0_0x54c6c3['sep'])['filter'](Boolean);if(_0x16059e[_0x2b820d(0x114)]<0x2)return null;for(let _0x25af34=Math[_0x2b820d(0xff)](_0x16059e['length']/0x2);_0x25af34>=0x1;_0x25af34--){for(let _0x3f07ff=0x0;_0x3f07ff<=_0x16059e[_0x2b820d(0x114)]-0x2*_0x25af34;_0x3f07ff++){const _0x45ce75=_0x16059e[_0x2b820d(0x146)](_0x3f07ff,_0x3f07ff+_0x25af34),_0xf3957=_0x16059e['slice'](_0x3f07ff+_0x25af34,_0x3f07ff+0x2*_0x25af34);if(_0x45ce75[_0x2b820d(0x192)]((_0x3d61d6,_0x27996d)=>_0x3d61d6===_0xf3957[_0x27996d])){const _0x5f593e=[..._0x16059e[_0x2b820d(0x146)](0x0,_0x3f07ff),..._0x16059e[_0x2b820d(0x146)](_0x3f07ff+_0x25af34)];return a0_0x54c6c3[_0x2b820d(0x13c)]+_0x5f593e[_0x2b820d(0xeb)](a0_0x54c6c3[_0x2b820d(0x13c)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x1aa434=a0_0x50a9;try{const _0x4dc74e=require('../package.json');return _0x4dc74e[_0x1aa434(0xb4)]??_0x1aa434(0x13a);}catch(_0x515b07){return console[_0x1aa434(0xaa)](_0x1aa434(0xaf),_0x515b07),_0x1aa434(0x13a);}}function printHelp(){const _0x2ead36=a0_0x50a9;console[_0x2ead36(0x14c)]('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x2ead36(0x14c)](_0x2ead36(0xfb)),console['log'](_0x2ead36(0x9a)),console[_0x2ead36(0x14c)](_0x2ead36(0x127)),console[_0x2ead36(0x14c)](_0x2ead36(0x199)),console[_0x2ead36(0x14c)](_0x2ead36(0x109)),console[_0x2ead36(0x14c)]('\x0aExamples:'),console['log']('\x20\x20morph-mcp'),console[_0x2ead36(0x14c)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0xae9690(0x15d)][a0_0xae9690(0x146)](0x2),VERSION_FLAGS=new Set([a0_0xae9690(0xc9),'-v','-V']),HELP_FLAGS=new Set([a0_0xae9690(0xf7),'-h']);cliArgs['some'](_0x3dacdd=>VERSION_FLAGS[a0_0xae9690(0xda)](_0x3dacdd))&&(console[a0_0xae9690(0x14c)]('@morphllm/morphmcp\x20'+getPackageVersion()),process[a0_0xae9690(0xa8)](0x0));cliArgs['some'](_0x4058f2=>HELP_FLAGS[a0_0xae9690(0xda)](_0x4058f2))&&(printHelp(),process[a0_0xae9690(0xa8)](0x0));function getCliArg(_0x2f05b4){const _0x350485=a0_0xae9690;for(let _0x17e2e8=0x0;_0x17e2e8<cliArgs[_0x350485(0x114)];_0x17e2e8++){const _0x1e9662=cliArgs[_0x17e2e8];if(_0x1e9662[_0x350485(0x15c)]('--'+_0x2f05b4+'='))return _0x1e9662['slice'](('--'+_0x2f05b4+'=')[_0x350485(0x114)]);if(_0x1e9662==='--'+_0x2f05b4&&_0x17e2e8+0x1<cliArgs['length'])return cliArgs[_0x17e2e8+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0xae9690(0x114)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0xae9690(0xda)](arg)||HELP_FLAGS['has'](arg))continue;if(arg['startsWith'](a0_0xae9690(0x164)))continue;if(arg===a0_0xae9690(0xdf)){i++;continue;}args[a0_0xae9690(0x122)](arg);}const ALL_TOOLS=['edit_file','warpgrep_codebase_search',a0_0xae9690(0x14b),'codebase_search'],DEFAULT_TOOLS=['edit_file','warpgrep_codebase_search','warpgrep_github_search'],ENABLED_TOOLS=process[a0_0xae9690(0x158)][a0_0xae9690(0xa5)]?process[a0_0xae9690(0x158)][a0_0xae9690(0xa5)]==='all'?ALL_TOOLS:process[a0_0xae9690(0x158)][a0_0xae9690(0xa5)][a0_0xae9690(0x18b)](',')[a0_0xae9690(0xac)](_0x5a5632=>_0x5a5632['trim']()):DEFAULT_TOOLS;console[a0_0xae9690(0xaa)](a0_0xae9690(0x145)+ENABLED_TOOLS['join'](',\x20'));const WORKSPACE_ROOT=process['env'][a0_0xae9690(0xca)]||process['env'][a0_0xae9690(0x130)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process['env'][a0_0xae9690(0x113)]!==a0_0xae9690(0xfa),MORPH_API_KEY=getCliArg('api-key')??process[a0_0xae9690(0x158)][a0_0xae9690(0xa1)],MORPH_API_URL=process[a0_0xae9690(0x158)][a0_0xae9690(0x174)],MORPH_WARP_GREP_TIMEOUT=process[a0_0xae9690(0x158)][a0_0xae9690(0xa0)]?parseInt(process['env'][a0_0xae9690(0xa0)],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY[a0_0xae9690(0x15c)](a0_0xae9690(0x18e))&&!MORPH_API_KEY['startsWith']('morph-')&&console[a0_0xae9690(0xaa)](a0_0xae9690(0x129));async function reportMorphError(_0x4c2044){const _0x504125=a0_0xae9690;try{await a0_0x29bd7b[_0x504125(0xa9)]('https://morphllm.com/api/error-report',{..._0x4c2044,'timestamp':new Date()[_0x504125(0x196)](),'source':_0x4c2044[_0x504125(0xbc)]||'mcp-filesystem'},{'timeout':0x1388,'headers':{'Content-Type':_0x504125(0xae),'Authorization':_0x504125(0xa2)+MORPH_API_KEY}});}catch{}}args[a0_0xae9690(0x114)]===0x0&&!ENABLE_WORKSPACE_MODE&&(console[a0_0xae9690(0xaa)](a0_0xae9690(0x107)),console[a0_0xae9690(0xaa)](a0_0xae9690(0xe1)),console['error'](a0_0xae9690(0x195)),console[a0_0xae9690(0xaa)](a0_0xae9690(0x14f)),console['error'](a0_0xae9690(0x185)),console[a0_0xae9690(0xaa)](a0_0xae9690(0x183)));function normalizePath(_0x4548c4){const _0x142987=a0_0xae9690;return a0_0x54c6c3[_0x142987(0x198)](_0x4548c4);}function expandHome(_0xed3ade){const _0x374ffc=a0_0xae9690;if(_0xed3ade[_0x374ffc(0x15c)]('~/')||_0xed3ade==='~')return a0_0x54c6c3[_0x374ffc(0xeb)](a0_0x4d778e[_0x374ffc(0x10b)](),_0xed3ade[_0x374ffc(0x146)](0x1));return _0xed3ade;}let allowedDirectories=await Promise[a0_0xae9690(0xd1)](args[a0_0xae9690(0xac)](async _0xf69eb4=>{const _0x57ab48=a0_0xae9690,_0x1fb340=expandHome(_0xf69eb4),_0x5ae523=a0_0x54c6c3['resolve'](_0x1fb340);try{const _0x3d61d9=await a0_0xa367a4[_0x57ab48(0x162)](_0x5ae523);return normalizePath(_0x3d61d9);}catch(_0x47790c){return normalizePath(_0x5ae523);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0xae9690(0x114)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0xae9690(0x122)](workspaceDir),console[a0_0xae9690(0xaa)]('Workspace\x20mode\x20enabled:\x20Using\x20'+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0xd0a009){console['error'](a0_0xae9690(0xb1)+a0_0xd0a009);}async function detectWorkspaceRoot(_0x6e8645){const _0x12f7dc=a0_0xae9690;let _0x2f45ca=a0_0x54c6c3[_0x12f7dc(0xd0)](_0x6e8645);const _0x3c683f=['.git','.vscode','package.json',_0x12f7dc(0x18c),_0x12f7dc(0x105),'go.mod','.cursor',_0x12f7dc(0xce),_0x12f7dc(0x117)];while(_0x2f45ca!==a0_0x54c6c3['dirname'](_0x2f45ca)){for(const _0x8fa446 of _0x3c683f){const _0x30f641=a0_0x54c6c3[_0x12f7dc(0xeb)](_0x2f45ca,_0x8fa446);try{return await a0_0xa367a4[_0x12f7dc(0xa6)](_0x30f641),normalizePath(_0x2f45ca);}catch{}}_0x2f45ca=a0_0x54c6c3[_0x12f7dc(0xee)](_0x2f45ca);}return normalizePath(_0x6e8645);}await Promise[a0_0xae9690(0xd1)](args[a0_0xae9690(0xac)](async _0x1f4655=>{const _0x83c97c=a0_0xae9690;try{const _0x508b60=await a0_0xa367a4[_0x83c97c(0xb2)](expandHome(_0x1f4655));!_0x508b60[_0x83c97c(0x106)]()&&(console[_0x83c97c(0xaa)]('Error:\x20'+_0x1f4655+_0x83c97c(0x15b)),process[_0x83c97c(0xa8)](0x1));}catch(_0x1bb565){console[_0x83c97c(0xaa)]('Error\x20accessing\x20directory\x20'+_0x1f4655+':',_0x1bb565),process[_0x83c97c(0xa8)](0x1);}}));async function validatePath(_0x8f6c7a){const _0x2b7355=a0_0xae9690,_0x4415a3=expandHome(_0x8f6c7a),_0x342fa9=a0_0x54c6c3[_0x2b7355(0xd0)](_0x4415a3);try{const _0x5d84d4=await a0_0xa367a4['realpath'](_0x342fa9);return _0x5d84d4;}catch(_0xc30032){if(_0xc30032[_0x2b7355(0x184)]===_0x2b7355(0x165)){const _0x7fd318=a0_0x54c6c3[_0x2b7355(0xee)](_0x342fa9);try{const _0x52737d=await a0_0xa367a4[_0x2b7355(0x162)](_0x7fd318);return a0_0x54c6c3['join'](_0x52737d,a0_0x54c6c3['basename'](_0x342fa9));}catch{throw new Error(_0x2b7355(0x187)+_0x7fd318);}}throw _0xc30032;}}const MorphEditFileArgsSchema=z[a0_0xae9690(0x8f)]({'path':z['string'](),'code_edit':z[a0_0xae9690(0xb6)]()[a0_0xae9690(0xe5)]('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z[a0_0xae9690(0xb6)]()['describe']('A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.'),'dryRun':z[a0_0xae9690(0x176)]()[a0_0xae9690(0x144)](![])['describe'](a0_0xae9690(0x12b))}),WarpGrepArgsSchema=z[a0_0xae9690(0x8f)]({'search_string':z['string']()[a0_0xae9690(0xe5)]('Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for'),'repo_path':z[a0_0xae9690(0xb6)]()['describe'](a0_0xae9690(0xcb))}),WarpGrepGitHubArgsSchema=z[a0_0xae9690(0x8f)]({'search_string':z['string']()['describe'](a0_0xae9690(0xf6)),'github_url':z[a0_0xae9690(0xb6)]()['describe']('GitHub\x20repository\x20URL\x20or\x20\x27owner/repo\x27\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27\x20or\x20\x27https://github.com/vercel/next.js\x27)'),'branch':z[a0_0xae9690(0xb6)]()['optional']()[a0_0xae9690(0xe5)]('Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)')}),CodebaseSearchArgsSchema=z['object']({'query':z[a0_0xae9690(0xb6)]()[a0_0xae9690(0xe5)](a0_0xae9690(0x13d)),'repoId':z['string']()[a0_0xae9690(0xe5)](a0_0xae9690(0xe6)),'branch':z[a0_0xae9690(0xb6)]()[a0_0xae9690(0x119)]()[a0_0xae9690(0xe5)]('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z['string']()[a0_0xae9690(0x119)]()[a0_0xae9690(0xe5)](a0_0xae9690(0x159)),'targetDirectories':z[a0_0xae9690(0x12a)](z[a0_0xae9690(0xb6)]())[a0_0xae9690(0x144)]([])['describe'](a0_0xae9690(0x15a)),'limit':z[a0_0xae9690(0xcc)]()[a0_0xae9690(0x119)]()[a0_0xae9690(0x144)](0xa)[a0_0xae9690(0xe5)](a0_0xae9690(0x120))}),server=new Server({'name':a0_0xae9690(0x18d),'version':a0_0xae9690(0x135)},{'capabilities':{'tools':{}}});server[a0_0xae9690(0x128)](ListToolsRequestSchema,async()=>{const _0x9ab447=a0_0xae9690,_0x496adb=[{'name':_0x9ab447(0xf1),'description':_0x9ab447(0x14d)+'⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a'+_0x9ab447(0x126)+_0x9ab447(0xde)+'Benefits:\x0a'+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x9ab447(0xf9)+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+_0x9ab447(0xe9)+_0x9ab447(0x167)+_0x9ab447(0xf4)+_0x9ab447(0x93)+_0x9ab447(0x12d)+'-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a'+_0x9ab447(0x98)+_0x9ab447(0xd3)+_0x9ab447(0xd2)+_0x9ab447(0x142)+_0x9ab447(0xbb)+'-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a'+_0x9ab447(0x138)+_0x9ab447(0x131)+'IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x9ab447(0x182),'description':_0x9ab447(0x17b)+'This\x20tool\x20invokes\x20a\x20subagent\x20that\x20runs\x20parallel\x20grep\x20and\x20readfile\x20calls\x20over\x20multiple\x20turns\x20to\x20locate\x20line\x20ranges\x20and\x20files\x20which\x20might\x20be\x20relevant\x20to\x20the\x20request.\x20'+_0x9ab447(0x160)+'Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20'+_0x9ab447(0xf2)+_0x9ab447(0x11c)+_0x9ab447(0x188)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]},{'name':_0x9ab447(0xfc),'description':'**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a'+'⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a'+'🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a'+_0x9ab447(0x124)+_0x9ab447(0x12e)+'-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a'+'-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a'+_0x9ab447(0x181)+_0x9ab447(0x141)+_0x9ab447(0x9c)+'Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x10016a=_0x496adb[_0x9ab447(0x191)](_0x1fe8bf=>{const _0x53d8a8=_0x9ab447;if(!ENABLED_TOOLS['includes'](_0x1fe8bf['name']))return![];if(_0x53d8a8(0x156)in _0x1fe8bf&&_0x1fe8bf[_0x53d8a8(0x156)]&&!MORPH_API_KEY)return console[_0x53d8a8(0xaa)](_0x53d8a8(0x163)+_0x1fe8bf[_0x53d8a8(0xb7)]+_0x53d8a8(0x8d)),![];return!![];});return{'tools':_0x10016a[_0x9ab447(0xac)](_0x1aa05f=>({'name':_0x1aa05f['name'],'description':_0x1aa05f['description'],'inputSchema':_0x1aa05f[_0x9ab447(0x110)]}))};}),server['setRequestHandler'](CallToolRequestSchema,async _0x48d520=>{const _0x50c1ec=a0_0xae9690;try{const {name:_0x4a5b85,arguments:_0x433186}=_0x48d520[_0x50c1ec(0x161)];switch(_0x4a5b85){case _0x50c1ec(0xf1):{const _0x1e07c8=MorphEditFileArgsSchema[_0x50c1ec(0xf0)](_0x433186);if(!_0x1e07c8[_0x50c1ec(0xf8)])throw new Error(_0x50c1ec(0x16b)+_0x1e07c8[_0x50c1ec(0xaa)]);const _0x11c688=await validatePath(_0x1e07c8['data'][_0x50c1ec(0x132)]);let _0x5d7010=null,_0x4f8cb2=!![],_0x474d68=null;try{_0x5d7010=await a0_0xa367a4[_0x50c1ec(0x8c)](_0x11c688,_0x50c1ec(0x11d));}catch(_0x31463d){const _0x1485be=_0x31463d[_0x50c1ec(0x184)];_0x1485be==='ENOENT'?(_0x4f8cb2=![],_0x5d7010=''):(_0x474d68='Failed\x20to\x20read\x20file:\x20'+(_0x1485be||'unknown')+_0x50c1ec(0x179)+(_0x31463d instanceof Error?_0x31463d[_0x50c1ec(0x116)]:String(_0x31463d)),console[_0x50c1ec(0xaa)]('Warning:\x20'+_0x474d68));}let _0x3568ca;try{const _0x5185d1=MORPH_API_KEY;if(!_0x5185d1)throw new Error(_0x50c1ec(0x13e));const _0x2374a1=a0_0x54c6c3['dirname'](_0x11c688),_0x46d342=a0_0x54c6c3[_0x50c1ec(0x96)](_0x11c688),_0x546dbe=await executeEditFile({'target_filepath':_0x46d342,'code_edit':_0x1e07c8[_0x50c1ec(0xd7)]['code_edit'],'instructions':_0x1e07c8['data'][_0x50c1ec(0xa4)]},{'morphApiKey':_0x5185d1,'morphApiUrl':MORPH_API_URL,'baseDir':_0x2374a1,'autoWrite':!_0x1e07c8[_0x50c1ec(0xd7)][_0x50c1ec(0x177)],'generateUdiff':![],'debug':![]});_0x3568ca=_0x546dbe[_0x50c1ec(0x102)];if(!_0x546dbe[_0x50c1ec(0xf8)])throw new Error(_0x546dbe['error']||_0x50c1ec(0x168));const _0x288146=_0x546dbe[_0x50c1ec(0x10a)],_0x3c94b4=_0x50c1ec(0xbd)+_0x288146['linesAdded']+_0x50c1ec(0xb5)+_0x288146[_0x50c1ec(0x171)]+',\x20modified\x20'+_0x288146['linesModified'];if(_0x1e07c8[_0x50c1ec(0xd7)][_0x50c1ec(0x177)])return{'content':[{'type':'text','text':_0x50c1ec(0x8e)+(_0x4f8cb2?'':_0x50c1ec(0xb9))+':\x20'+_0x1e07c8[_0x50c1ec(0xd7)][_0x50c1ec(0xa4)]+_0x50c1ec(0xc8)+_0x3c94b4+'.\x20Path:\x20'+_0x1e07c8[_0x50c1ec(0xd7)][_0x50c1ec(0x132)]+'.'}]};return{'content':[{'type':_0x50c1ec(0x9f),'text':_0x50c1ec(0x108)+(_0x4f8cb2?_0x50c1ec(0xc2):_0x50c1ec(0x123))+':\x20'+_0x1e07c8[_0x50c1ec(0xd7)][_0x50c1ec(0xa4)]+_0x50c1ec(0xc8)+_0x3c94b4+_0x50c1ec(0x14e)+_0x1e07c8['data'][_0x50c1ec(0x132)]+'.'}]};}catch(_0x4b6f80){const _0x40004f=_0x4b6f80 instanceof Error?_0x4b6f80['message']:String(_0x4b6f80);return reportMorphError({'error_message':_0x40004f,'error_type':_0x4b6f80 instanceof Error?_0x4b6f80['constructor'][_0x50c1ec(0xb7)]:_0x50c1ec(0x17c),'context':{'tool':_0x50c1ec(0xf1),'completion_id':_0x3568ca,'file_path':_0x1e07c8[_0x50c1ec(0xd7)][_0x50c1ec(0x132)],'validated_path':_0x11c688,'instruction':_0x1e07c8[_0x50c1ec(0xd7)][_0x50c1ec(0xa4)],'model':_0x50c1ec(0xdb),'dry_run':_0x1e07c8[_0x50c1ec(0xd7)][_0x50c1ec(0x177)],'file_exists':_0x4f8cb2,'file_read_error':_0x474d68,'file_readable':_0x5d7010!==null,'request_content':{'path':_0x1e07c8[_0x50c1ec(0xd7)][_0x50c1ec(0x132)],'code_edit':_0x1e07c8[_0x50c1ec(0xd7)]['code_edit'],'instruction':_0x1e07c8[_0x50c1ec(0xd7)][_0x50c1ec(0xa4)],'original_code':_0x5d7010!==null?_0x5d7010['length']>0xc350?_0x5d7010[_0x50c1ec(0xc7)](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x5d7010[_0x50c1ec(0x114)]+_0x50c1ec(0x9d):_0x5d7010:_0x50c1ec(0xd9)+(_0x474d68||_0x50c1ec(0x103))+']','original_code_length':_0x5d7010?.['length']??0x0,'model':'morph-v3-fast','dry_run':_0x1e07c8[_0x50c1ec(0xd7)][_0x50c1ec(0x177)]}},'stack_trace':_0x4b6f80 instanceof Error?_0x4b6f80[_0x50c1ec(0x9b)]:undefined,'source':'mcp-filesystem'})[_0x50c1ec(0x134)](()=>{}),{'content':[{'type':_0x50c1ec(0x9f),'text':_0x50c1ec(0xa7)+_0x40004f}],'isError':!![]};}}case'warpgrep_codebase_search':{const _0x5ecac2=WarpGrepArgsSchema[_0x50c1ec(0xf0)](_0x433186);if(!_0x5ecac2['success'])return{'content':[{'type':'text','text':'Invalid\x20arguments:\x20'+_0x5ecac2[_0x50c1ec(0xaa)]}],'isError':!![]};const _0x241f2c=_0x52f0bb=>{const _0xb9522a=_0x50c1ec,_0x455035=[];for(const _0x25aa22 of _0x52f0bb||[]){const _0x4a03ab=_0x25aa22[_0xb9522a(0x169)],_0x154900=_0x25aa22[_0xb9522a(0xe7)];if(_0x4a03ab===_0xb9522a(0xef)&&_0x154900){const _0x5cc87a=_0x154900[_0xb9522a(0x18b)]('\x0a')['filter'](_0x2a0d56=>_0x2a0d56[_0xb9522a(0xec)]());for(const _0x3be803 of _0x5cc87a){const _0x28a016=_0x3be803['match'](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x28a016){_0x455035['push']('grep\x20\x27'+_0x28a016[0x1]+'\x27\x20'+_0x28a016[0x2]);continue;}const _0x4e6ab1=_0x3be803[_0xb9522a(0xab)](/^read\s+(.+)$/);if(_0x4e6ab1){_0x455035[_0xb9522a(0x122)]('read\x20'+_0x4e6ab1[0x1]);continue;}const _0x4da798=_0x3be803['match'](/^list_directory\s+(.+)$/);if(_0x4da798){_0x455035['push']('list_directory\x20'+_0x4da798[0x1]);continue;}}}}return _0x455035;},_0x510353=_0x4a929e=>{const _0x4cf5e3=_0x50c1ec,_0x217adb=[];if(!_0x4a929e||!Array[_0x4cf5e3(0x140)](_0x4a929e))return _0x217adb;const _0x4e6e54=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x4cf5e3(0x11e),'tool':_0x4cf5e3(0x100)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x4cf5e3(0x10f),'tool':_0x4cf5e3(0x100)},{'pattern':/\[READ ERROR\]/,'error_type':_0x4cf5e3(0x175),'tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x4cf5e3(0xfd),'tool':_0x4cf5e3(0x100)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x4cf5e3(0x173),'tool':_0x4cf5e3(0x90)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x4cf5e3(0x92),'tool':_0x4cf5e3(0x90)},{'pattern':/\[BINARY FILE\]/,'error_type':'BinaryFile','tool':_0x4cf5e3(0x100)},{'pattern':/\[SYMLINK\]/,'error_type':_0x4cf5e3(0xd6),'tool':_0x4cf5e3(0x100)},{'pattern':/not a text file/,'error_type':_0x4cf5e3(0xfd),'tool':_0x4cf5e3(0x100)},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':_0x4cf5e3(0x100)},{'pattern':/Error reading file:/,'error_type':_0x4cf5e3(0x175),'tool':_0x4cf5e3(0x100)},{'pattern':/status="error"/,'error_type':_0x4cf5e3(0xc4),'tool':'unknown'}];let _0x5f219d=0x0;for(const _0x16a228 of _0x4a929e){if(_0x16a228[_0x4cf5e3(0x169)]==='user'){_0x5f219d++;const _0x3d7afe=_0x16a228[_0x4cf5e3(0xe7)];if(!_0x3d7afe||typeof _0x3d7afe!==_0x4cf5e3(0xb6))continue;for(const {pattern:_0xfecb82,error_type:_0x50a300,tool:_0x21b1c3}of _0x4e6e54){const _0x51f60e=_0x3d7afe[_0x4cf5e3(0xab)](new RegExp(_0xfecb82[_0x4cf5e3(0xbc)],'g'));if(_0x51f60e)for(const _0x5d1c71 of _0x51f60e){const _0x263e56=_0x3d7afe[_0x4cf5e3(0x12f)](_0x5d1c71),_0x579f65=_0x3d7afe[_0x4cf5e3(0xc7)](_0x263e56,Math[_0x4cf5e3(0x118)](_0x263e56+0xc8,_0x3d7afe[_0x4cf5e3(0x114)]));_0x217adb[_0x4cf5e3(0x122)]({'tool':_0x21b1c3,'error_type':_0x50a300,'error_message':_0x579f65[_0x4cf5e3(0x18b)]('\x0a')[0x0],'turn':_0x5f219d});}}}}return _0x217adb;};try{const _0x43dec7=a0_0x54c6c3[_0x50c1ec(0xd0)](_0x5ecac2['data']['repo_path']),_0x12cfd0=new LocalRipgrepProvider(_0x43dec7),_0x3f708c=await runWarpGrep({'query':_0x5ecac2[_0x50c1ec(0xd7)][_0x50c1ec(0x9e)],'repoRoot':_0x43dec7,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x12cfd0}),_0x480e3e=_0x510353(_0x3f708c['messages']);_0x480e3e[_0x50c1ec(0x114)]>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x480e3e[_0x50c1ec(0x114)]+_0x50c1ec(0xcf),'error_type':_0x50c1ec(0x17f),'level':'warn','tool':_0x50c1ec(0x182),'context':{'repo_path':_0x5ecac2['data'][_0x50c1ec(0x121)],'query':_0x5ecac2[_0x50c1ec(0xd7)][_0x50c1ec(0x9e)],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x3f708c[_0x50c1ec(0x11f)],'sub_tool_errors':_0x480e3e,'timings':_0x3f708c['timings'],'tool_calls':_0x241f2c(_0x3f708c['messages']),'messages':_0x3f708c[_0x50c1ec(0xe3)]?.[_0x50c1ec(0xac)](_0xa45e3c=>({'role':_0xa45e3c['role'],'content':_0xa45e3c[_0x50c1ec(0xe7)]}))},'source':_0x50c1ec(0x19b)})[_0x50c1ec(0x134)](()=>{});let _0x331d35='';if(_0x3f708c['terminationReason']===_0x50c1ec(0xdd)&&_0x3f708c['finish']?.[_0x50c1ec(0x16f)]?.[_0x50c1ec(0x147)]){const _0x29e582=_0x3f708c[_0x50c1ec(0x10e)][_0x50c1ec(0x16f)][_0x50c1ec(0x147)];if(_0x29e582[_0x50c1ec(0x114)]===0x0)return _0x331d35=_0x3f708c[_0x50c1ec(0x10e)][_0x50c1ec(0x16e)]||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x50c1ec(0x9f),'text':_0x331d35}]};const _0x36c5fa=[],_0x17b119=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x4617f3 of _0x3f708c[_0x50c1ec(0xe3)]){const _0x12665c=_0x4617f3[_0x50c1ec(0x169)],_0x49a192=_0x4617f3[_0x50c1ec(0xe7)];if(_0x12665c===_0x50c1ec(0xef)&&_0x49a192){const _0x576a82=_0x49a192[_0x50c1ec(0x18b)]('\x0a')[_0x50c1ec(0x191)](_0x527f0f=>_0x527f0f[_0x50c1ec(0xec)]());for(const _0x52cf2d of _0x576a82){const _0x36ab41=_0x52cf2d[_0x50c1ec(0xab)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x36ab41){_0x17b119['push'](_0x50c1ec(0xb0)+_0x36ab41[0x1]+_0x50c1ec(0x11a)+_0x36ab41[0x2]+'`');continue;}const _0x1f2726=_0x52cf2d[_0x50c1ec(0xab)](/^read\s+(.+)$/);if(_0x1f2726){_0x17b119[_0x50c1ec(0x122)](_0x50c1ec(0xe2)+_0x1f2726[0x1]+'`');continue;}const _0x568554=_0x52cf2d[_0x50c1ec(0xab)](/^list_directory\s+(.+)$/);if(_0x568554){_0x17b119[_0x50c1ec(0x122)]('-\x20Listed\x20directory\x20`'+_0x568554[0x1]+'`');continue;}}}}_0x36c5fa[_0x50c1ec(0x122)](_0x17b119['join']('\x0a'));const _0x24bef6=['',_0x50c1ec(0x99)];for(const _0x3b0461 of _0x29e582){if(_0x3b0461['lines']==='*')_0x24bef6['push']('-\x20'+_0x3b0461[_0x50c1ec(0x132)]+':*');else{if(Array[_0x50c1ec(0x140)](_0x3b0461['lines'])){const _0xa725fc=_0x3b0461[_0x50c1ec(0xcd)][_0x50c1ec(0xac)](([_0x29d8a9,_0x4e9211])=>{if(_0x29d8a9===_0x4e9211)return''+_0x29d8a9;return _0x29d8a9+'-'+_0x4e9211;});_0x24bef6['push']('-\x20'+_0x3b0461[_0x50c1ec(0x132)]+':'+_0xa725fc[_0x50c1ec(0xeb)](','));}else _0x24bef6[_0x50c1ec(0x122)]('-\x20'+_0x3b0461[_0x50c1ec(0x132)]+':*');}}_0x24bef6[_0x50c1ec(0x122)](''),_0x36c5fa[_0x50c1ec(0x122)](_0x24bef6[_0x50c1ec(0xeb)]('\x0a')),_0x36c5fa['push'](_0x50c1ec(0x104));const _0x23f1f6=[];for(const _0x1b7c48 of _0x29e582){let _0x4bc3c5=a0_0x54c6c3[_0x50c1ec(0xd0)](_0x5ecac2[_0x50c1ec(0xd7)][_0x50c1ec(0x121)],_0x1b7c48['path']),_0xd76f32=null,_0x8f7dda=null;try{_0xd76f32=await a0_0xa367a4[_0x50c1ec(0x8c)](_0x4bc3c5,{'encoding':_0x50c1ec(0x11d)});}catch(_0x3b28cb){const _0x445385=fixPathRepetition(_0x4bc3c5);if(_0x445385)try{_0xd76f32=await a0_0xa367a4[_0x50c1ec(0x8c)](_0x445385,{'encoding':'utf-8'}),_0x4bc3c5=_0x445385;}catch{_0x8f7dda=_0x3b28cb instanceof Error?_0x3b28cb:new Error(String(_0x3b28cb));}else _0x8f7dda=_0x3b28cb instanceof Error?_0x3b28cb:new Error(String(_0x3b28cb));}if(_0xd76f32!==null){const _0x5526be=_0xd76f32[_0x50c1ec(0x18b)](/\r?\n/),_0x43dcc4=['<file\x20path=\x22'+_0x1b7c48[_0x50c1ec(0x132)]+'\x22>'];if(_0x1b7c48['lines']==='*'||!Array[_0x50c1ec(0x140)](_0x1b7c48[_0x50c1ec(0xcd)]))for(let _0x562875=0x1;_0x562875<=_0x5526be[_0x50c1ec(0x114)];_0x562875++){const _0x49821d=_0x5526be[_0x562875-0x1];_0x43dcc4[_0x50c1ec(0x122)](_0x562875+'|\x20'+_0x49821d);}else for(const [_0x2be376,_0x420588]of _0x1b7c48[_0x50c1ec(0xcd)]){_0x43dcc4[_0x50c1ec(0x114)]>0x1&&_0x43dcc4[_0x50c1ec(0x122)]('');for(let _0x8e6736=_0x2be376;_0x8e6736<=_0x420588&&_0x8e6736<=_0x5526be[_0x50c1ec(0x114)];_0x8e6736++){const _0x5e36c3=_0x5526be[_0x8e6736-0x1];_0x43dcc4['push'](_0x8e6736+'|\x20'+_0x5e36c3);}}_0x43dcc4['push'](_0x50c1ec(0xe0)),_0x23f1f6[_0x50c1ec(0x122)](_0x43dcc4[_0x50c1ec(0xeb)]('\x0a'));}else _0x23f1f6[_0x50c1ec(0x122)](_0x50c1ec(0x112)+_0x1b7c48[_0x50c1ec(0x132)]+_0x50c1ec(0x153)+(_0x8f7dda?.[_0x50c1ec(0x116)]||_0x50c1ec(0x186))+_0x50c1ec(0xc1));}_0x36c5fa[_0x50c1ec(0x122)](_0x23f1f6['join']('\x0a\x0a')),_0x331d35=_0x36c5fa[_0x50c1ec(0xeb)]('\x0a');const _0x2ebc9c=_0x3f708c[_0x50c1ec(0x15e)]?.['filter'](_0x516abe=>_0x516abe[_0x50c1ec(0x116)]?.[_0x50c1ec(0x15c)](_0x50c1ec(0x19c)))||[];if(_0x2ebc9c[_0x50c1ec(0x114)]>0x0){const _0x5a5fa6=_0x2ebc9c[_0x50c1ec(0xac)](_0x3d6116=>_0x3d6116[_0x50c1ec(0x116)])['join'](';\x20');reportMorphError({'error_message':_0x5a5fa6,'error_type':_0x50c1ec(0x139),'context':{'tool':_0x50c1ec(0x182),'repo_path':_0x5ecac2[_0x50c1ec(0xd7)][_0x50c1ec(0x121)],'query':_0x5ecac2[_0x50c1ec(0xd7)][_0x50c1ec(0x9e)],'model':_0x50c1ec(0x101),'termination_reason':'completed_with_file_errors','error_count':_0x2ebc9c['length'],'is_timeout':![],'timings':_0x3f708c['timings'],'files_attempted':_0x29e582[_0x50c1ec(0xac)](_0x47e558=>({'path':_0x47e558['path'],'lines':_0x47e558[_0x50c1ec(0xcd)]})),'tool_calls':_0x241f2c(_0x3f708c['messages']),'messages':_0x3f708c['messages']?.['map'](_0x379755=>({'role':_0x379755[_0x50c1ec(0x169)],'content':_0x379755['content']})),'request_content':{'query':_0x5ecac2[_0x50c1ec(0xd7)][_0x50c1ec(0x9e)],'repo_path':_0x5ecac2[_0x50c1ec(0xd7)][_0x50c1ec(0x121)],'repoRoot':a0_0x54c6c3[_0x50c1ec(0xd0)](_0x5ecac2['data'][_0x50c1ec(0x121)]),'model':_0x50c1ec(0x101)}},'source':_0x50c1ec(0x19b)})['catch'](()=>{});}}else{if(_0x3f708c[_0x50c1ec(0x11f)]===_0x50c1ec(0xc0)&&_0x3f708c[_0x50c1ec(0x15e)][_0x50c1ec(0x114)]>0x0){const _0x1a3d71=_0x3f708c[_0x50c1ec(0x15e)][_0x50c1ec(0xac)](_0x399d85=>_0x399d85[_0x50c1ec(0x116)])[_0x50c1ec(0xeb)](';\x20');_0x331d35=_0x50c1ec(0x17d)+_0x1a3d71;const _0x3dbd9c=_0x1a3d71['toLowerCase']()[_0x50c1ec(0xc3)](_0x50c1ec(0x115))||_0x1a3d71['toLowerCase']()[_0x50c1ec(0xc3)](_0x50c1ec(0x13b))||_0x1a3d71[_0x50c1ec(0xb8)]()['includes'](_0x50c1ec(0x13f)),_0x500e4c=_0x3f708c[_0x50c1ec(0x10e)]?.[_0x50c1ec(0x16f)]?.[_0x50c1ec(0x147)],_0x523b7c=_0x3f708c[_0x50c1ec(0x15e)][0x0];reportMorphError({'error_message':_0x1a3d71,'error_type':_0x3dbd9c?_0x50c1ec(0xd8):_0x523b7c?.[_0x50c1ec(0xbe)]?.[_0x50c1ec(0xb7)]||_0x50c1ec(0x189),'context':{'tool':_0x50c1ec(0x182),'repo_path':_0x5ecac2[_0x50c1ec(0xd7)][_0x50c1ec(0x121)],'query':_0x5ecac2['data'][_0x50c1ec(0x9e)],'model':_0x50c1ec(0x101),'termination_reason':_0x3f708c[_0x50c1ec(0x11f)],'error_count':_0x3f708c[_0x50c1ec(0x15e)][_0x50c1ec(0x114)],'is_timeout':_0x3dbd9c,'timings':_0x3f708c[_0x50c1ec(0x17a)],'files_attempted':_0x500e4c?.['map'](_0x3f4b82=>({'path':_0x3f4b82[_0x50c1ec(0x132)],'lines':_0x3f4b82['lines']})),'tool_calls':_0x241f2c(_0x3f708c[_0x50c1ec(0xe3)]),'messages':_0x3f708c['messages']?.['map'](_0x4baeef=>({'role':_0x4baeef['role'],'content':_0x4baeef['content']})),'request_content':{'query':_0x5ecac2[_0x50c1ec(0xd7)]['search_string'],'repo_path':_0x5ecac2[_0x50c1ec(0xd7)][_0x50c1ec(0x121)],'repoRoot':a0_0x54c6c3[_0x50c1ec(0xd0)](_0x5ecac2['data'][_0x50c1ec(0x121)]),'model':_0x50c1ec(0x101)}},'stack_trace':_0x523b7c?.[_0x50c1ec(0x9b)]||undefined,'source':_0x50c1ec(0x19b)})['catch'](()=>{});}else _0x331d35=_0x50c1ec(0x180);}return{'content':[{'type':'text','text':_0x331d35}]};}catch(_0x43fe54){const _0xed39d7=_0x43fe54 instanceof Error?_0x43fe54[_0x50c1ec(0x116)]:String(_0x43fe54),_0x423f47=_0xed39d7[_0x50c1ec(0xb8)]()[_0x50c1ec(0xc3)](_0x50c1ec(0x115))||_0xed39d7[_0x50c1ec(0xb8)]()['includes'](_0x50c1ec(0x13b))||_0xed39d7['toLowerCase']()[_0x50c1ec(0xc3)]('etimedout')||_0x43fe54 instanceof Error&&_0x43fe54['name']===_0x50c1ec(0xd8);return reportMorphError({'error_message':_0xed39d7,'error_type':_0x423f47?_0x50c1ec(0xd8):_0x43fe54 instanceof Error?_0x43fe54[_0x50c1ec(0xbe)][_0x50c1ec(0xb7)]:_0x50c1ec(0x17c),'context':{'tool':'warpgrep_codebase_search','repo_path':_0x5ecac2[_0x50c1ec(0xd7)][_0x50c1ec(0x121)],'query':_0x5ecac2[_0x50c1ec(0xd7)][_0x50c1ec(0x9e)],'model':_0x50c1ec(0x101),'is_timeout':_0x423f47,'exception_phase':_0x50c1ec(0x166),'request_content':{'query':_0x5ecac2[_0x50c1ec(0xd7)]['search_string'],'repo_path':_0x5ecac2['data'][_0x50c1ec(0x121)],'repoRoot':a0_0x54c6c3[_0x50c1ec(0xd0)](_0x5ecac2[_0x50c1ec(0xd7)][_0x50c1ec(0x121)]),'model':_0x50c1ec(0x101)}},'stack_trace':_0x43fe54 instanceof Error?_0x43fe54['stack']:undefined,'source':'mcp-filesystem'})[_0x50c1ec(0x134)](()=>{}),{'content':[{'type':_0x50c1ec(0x9f),'text':_0x50c1ec(0x16d)+_0xed39d7}],'isError':![]};}}case'warpgrep_github_search':{const _0x2eb16a=WarpGrepGitHubArgsSchema['safeParse'](_0x433186);if(!_0x2eb16a[_0x50c1ec(0xf8)])return{'content':[{'type':'text','text':_0x50c1ec(0x155)+_0x2eb16a[_0x50c1ec(0xaa)]}],'isError':!![]};const _0xeec67e=MORPH_API_KEY;if(!_0xeec67e)throw new Error(_0x50c1ec(0x13e));const _0x23abbd=Date[_0x50c1ec(0xf5)]();console[_0x50c1ec(0xaa)]('[warpgrep_github_search]\x20Searching\x20'+_0x2eb16a[_0x50c1ec(0xd7)][_0x50c1ec(0x148)]+_0x50c1ec(0x15f)+_0x2eb16a[_0x50c1ec(0xd7)][_0x50c1ec(0x9e)]+'\x22');try{const _0x2f6257=new WarpGrepClient({'morphApiKey':_0xeec67e,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0xefffa5=await _0x2f6257['searchGitHub']({'query':_0x2eb16a[_0x50c1ec(0xd7)]['search_string'],'github':_0x2eb16a[_0x50c1ec(0xd7)][_0x50c1ec(0x148)],'branch':_0x2eb16a[_0x50c1ec(0xd7)][_0x50c1ec(0xdc)]}),_0xb6c82c=Date[_0x50c1ec(0xf5)]()-_0x23abbd;console['error'](_0x50c1ec(0x149)+_0xb6c82c+_0x50c1ec(0x150)+_0xefffa5[_0x50c1ec(0xf8)]);const _0x12a7a5=formatResult(_0xefffa5);return{'content':[{'type':_0x50c1ec(0x9f),'text':_0x12a7a5}]};}catch(_0x2c4077){const _0xb3ae10=Date['now']()-_0x23abbd,_0x43ae64=_0x2c4077 instanceof Error?_0x2c4077['message']:String(_0x2c4077);return console[_0x50c1ec(0xaa)](_0x50c1ec(0x17e)+_0xb3ae10+_0x50c1ec(0x136),_0x43ae64),reportMorphError({'error_message':_0x43ae64,'error_type':_0x2c4077 instanceof Error?_0x2c4077[_0x50c1ec(0xbe)][_0x50c1ec(0xb7)]:_0x50c1ec(0x17c),'context':{'tool':_0x50c1ec(0x14b),'github_url':_0x2eb16a[_0x50c1ec(0xd7)][_0x50c1ec(0x148)],'search_string':_0x2eb16a[_0x50c1ec(0xd7)][_0x50c1ec(0x9e)],'branch':_0x2eb16a[_0x50c1ec(0xd7)]['branch']},'stack_trace':_0x2c4077 instanceof Error?_0x2c4077[_0x50c1ec(0x9b)]:undefined,'source':_0x50c1ec(0x19b),'tool':'warpgrep_github_search','latency_ms':_0xb3ae10})['catch'](()=>{}),{'content':[{'type':'text','text':_0x50c1ec(0x10c)+_0x43ae64}],'isError':![]};}}case _0x50c1ec(0xfc):{const _0x361451=CodebaseSearchArgsSchema['safeParse'](_0x433186);if(!_0x361451[_0x50c1ec(0xf8)])return{'content':[{'type':_0x50c1ec(0x9f),'text':_0x50c1ec(0x155)+_0x361451[_0x50c1ec(0xaa)]}],'isError':!![]};try{const _0x351bcb=MORPH_API_KEY;if(!_0x351bcb)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.');const _0x5f4980=_0x361451[_0x50c1ec(0xd7)]['targetDirectories'],_0x232951=await executeCodebaseSearch({'query':_0x361451[_0x50c1ec(0xd7)][_0x50c1ec(0xed)],'target_directories':_0x5f4980,'limit':_0x361451[_0x50c1ec(0xd7)][_0x50c1ec(0x16a)]},{'apiKey':_0x351bcb,'repoId':_0x361451[_0x50c1ec(0xd7)][_0x50c1ec(0x170)],'branch':_0x361451[_0x50c1ec(0xd7)][_0x50c1ec(0xdc)],'commitHash':_0x361451[_0x50c1ec(0xd7)]['commitHash'],'debug':![]});if(!_0x232951[_0x50c1ec(0xf8)])return{'content':[{'type':_0x50c1ec(0x9f),'text':_0x50c1ec(0xea)+_0x232951[_0x50c1ec(0xaa)]}],'isError':!![]};const _0x39ad0f=_0x232951['results'][_0x50c1ec(0x114)]===0x0?_0x50c1ec(0x18f)+_0x361451[_0x50c1ec(0xd7)][_0x50c1ec(0xed)]+'\x22':_0x50c1ec(0x190)+_0x232951[_0x50c1ec(0x193)]['length']+'\x20results\x20in\x20'+_0x232951[_0x50c1ec(0x14a)][_0x50c1ec(0x95)]+_0x50c1ec(0xf3)+_0x232951[_0x50c1ec(0x193)]['map']((_0xdac8ee,_0x3e7b3e)=>_0x3e7b3e+0x1+'.\x20'+_0xdac8ee[_0x50c1ec(0x91)]+'\x20('+(_0xdac8ee['rerankScore']*0x64)[_0x50c1ec(0x178)](0x1)+_0x50c1ec(0x94)+(_0x50c1ec(0xd4)+_0xdac8ee['startLine']+'-'+_0xdac8ee['endLine']+'\x0a')+(_0x50c1ec(0xe4)+_0xdac8ee[_0x50c1ec(0xe7)][_0x50c1ec(0xc7)](0x0,0xc8)+(_0xdac8ee[_0x50c1ec(0xe7)]['length']>0xc8?_0x50c1ec(0x125):'')+'\x0a'))[_0x50c1ec(0xeb)]('\x0a');return{'content':[{'type':_0x50c1ec(0x9f),'text':_0x39ad0f}]};}catch(_0x2cf8cb){const _0x1814c5=_0x2cf8cb instanceof Error?_0x2cf8cb[_0x50c1ec(0x116)]:String(_0x2cf8cb);return reportMorphError({'error_message':_0x1814c5,'error_type':_0x2cf8cb instanceof Error?_0x2cf8cb[_0x50c1ec(0xbe)]['name']:_0x50c1ec(0x17c),'context':{'tool':'codebase_search','query':_0x361451[_0x50c1ec(0xd7)][_0x50c1ec(0xed)],'repo_id':_0x361451['data'][_0x50c1ec(0x170)],'target_directories':_0x361451[_0x50c1ec(0xd7)][_0x50c1ec(0xfe)]},'stack_trace':_0x2cf8cb instanceof Error?_0x2cf8cb['stack']:undefined,'source':_0x50c1ec(0x19b)})[_0x50c1ec(0x134)](()=>{}),{'content':[{'type':_0x50c1ec(0x9f),'text':_0x50c1ec(0x17d)+_0x1814c5}],'isError':!![]};}}default:throw new Error('Unknown\x20tool:\x20'+_0x4a5b85);}}catch(_0x57d747){const _0x32685a=_0x57d747 instanceof Error?_0x57d747['message']:String(_0x57d747);return reportMorphError({'error_message':_0x32685a,'error_type':_0x57d747 instanceof Error?_0x57d747[_0x50c1ec(0xbe)][_0x50c1ec(0xb7)]:_0x50c1ec(0x17c),'context':{'tool':name,'arguments':args?JSON[_0x50c1ec(0x97)](args)['substring'](0x0,0x1f4):undefined,'mcp_server_version':_0x50c1ec(0x135)},'stack_trace':_0x57d747 instanceof Error?_0x57d747[_0x50c1ec(0x9b)]:undefined,'source':_0x50c1ec(0x19b)})[_0x50c1ec(0x134)](()=>{}),{'content':[{'type':_0x50c1ec(0x9f),'text':_0x50c1ec(0x17d)+_0x32685a}],'isError':!![]};}});function a0_0x50a9(_0x57900e,_0x2af5e8){_0x57900e=_0x57900e-0x8c;const _0x50200b=a0_0x5020();let _0x50a948=_0x50200b[_0x57900e];return _0x50a948;}async function updateAllowedDirectoriesFromRoots(_0x3ded2b){const _0x418927=a0_0xae9690,_0xfba6fb=await getValidRootDirectories(_0x3ded2b);if(_0xfba6fb[_0x418927(0x114)]>0x0)allowedDirectories=[..._0xfba6fb],console['error'](_0x418927(0xa3)+_0xfba6fb[_0x418927(0x114)]+'\x20valid\x20directories');else{console[_0x418927(0xaa)](_0x418927(0x197));if(ENABLE_WORKSPACE_MODE)try{const _0x545239=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x545239&&(allowedDirectories=[_0x545239],console['error'](_0x418927(0x12c)+_0x545239));}catch(_0x284302){console[_0x418927(0xaa)](_0x418927(0x10d)+_0x284302);}}}server[a0_0xae9690(0xc6)](RootsListChangedNotificationSchema,async()=>{const _0x573ae5=a0_0xae9690;try{const _0x572f21=await server['listRoots']();_0x572f21&&_0x573ae5(0x133)in _0x572f21&&await updateAllowedDirectoriesFromRoots(_0x572f21[_0x573ae5(0x133)]);}catch(_0x25610b){console[_0x573ae5(0xaa)](_0x573ae5(0x18a),_0x25610b instanceof Error?_0x25610b[_0x573ae5(0x116)]:String(_0x25610b));}}),server['oninitialized']=async()=>{const _0x457b14=a0_0xae9690,_0x40a134=server['getClientCapabilities']();if(_0x40a134?.['roots'])try{const _0x21d2fd=await server[_0x457b14(0x152)]();_0x21d2fd&&'roots'in _0x21d2fd?await updateAllowedDirectoriesFromRoots(_0x21d2fd[_0x457b14(0x133)]):console['error']('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x305232){console[_0x457b14(0xaa)](_0x457b14(0xc5),_0x305232 instanceof Error?_0x305232[_0x457b14(0x116)]:String(_0x305232));}else{if(allowedDirectories[_0x457b14(0x114)]>0x0)console[_0x457b14(0xaa)]('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:',allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console[_0x457b14(0xaa)](_0x457b14(0xad));else throw new Error(_0x457b14(0x19a));}}};async function runServer(){const _0x2bc1b5=a0_0xae9690,_0x90737d=new StdioServerTransport();await server[_0x2bc1b5(0x11b)](_0x90737d),console[_0x2bc1b5(0xaa)](_0x2bc1b5(0x154)),allowedDirectories[_0x2bc1b5(0x114)]===0x0&&console[_0x2bc1b5(0xaa)](_0x2bc1b5(0xb3));}runServer()[a0_0xae9690(0x134)](_0xc698d0=>{const _0x3e4d9e=a0_0xae9690;console[_0x3e4d9e(0xaa)](_0x3e4d9e(0x143),_0xc698d0),process[_0x3e4d9e(0xa8)](0x1);});
|
|
2
|
+
const a0_0x2ad189=a0_0x13cb;(function(_0x1a2895,_0x45b3c4){const _0x56f7d5=a0_0x13cb,_0x355f0e=_0x1a2895();while(!![]){try{const _0x587b75=-parseInt(_0x56f7d5(0x293))/0x1*(-parseInt(_0x56f7d5(0x201))/0x2)+parseInt(_0x56f7d5(0x260))/0x3+parseInt(_0x56f7d5(0x2ab))/0x4+parseInt(_0x56f7d5(0x2e5))/0x5+parseInt(_0x56f7d5(0x240))/0x6+-parseInt(_0x56f7d5(0x273))/0x7+-parseInt(_0x56f7d5(0x1fc))/0x8;if(_0x587b75===_0x45b3c4)break;else _0x355f0e['push'](_0x355f0e['shift']());}catch(_0xa2f068){_0x355f0e['push'](_0x355f0e['shift']());}}}(a0_0x29e0,0x8fd42));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_0x27c95d from'fs/promises';import a0_0x192533 from'path';import a0_0x2b9994 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-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{executeCodebaseSearch}from'@morphllm/morphsdk/tools/codebase-search';import a0_0x582a22 from'axios';function fixPathRepetition(_0x181f2f){const _0x1497ef=a0_0x13cb,_0xcdc556=_0x181f2f[_0x1497ef(0x2a6)](a0_0x192533[_0x1497ef(0x263)])[_0x1497ef(0x2f1)](Boolean);if(_0xcdc556[_0x1497ef(0x2cf)]<0x2)return null;for(let _0x3eed8e=Math[_0x1497ef(0x2de)](_0xcdc556[_0x1497ef(0x2cf)]/0x2);_0x3eed8e>=0x1;_0x3eed8e--){for(let _0x3722b3=0x0;_0x3722b3<=_0xcdc556[_0x1497ef(0x2cf)]-0x2*_0x3eed8e;_0x3722b3++){const _0x445783=_0xcdc556['slice'](_0x3722b3,_0x3722b3+_0x3eed8e),_0xed3c7b=_0xcdc556[_0x1497ef(0x26e)](_0x3722b3+_0x3eed8e,_0x3722b3+0x2*_0x3eed8e);if(_0x445783[_0x1497ef(0x304)]((_0x328bc0,_0x53f84a)=>_0x328bc0===_0xed3c7b[_0x53f84a])){const _0x24b306=[..._0xcdc556['slice'](0x0,_0x3722b3),..._0xcdc556['slice'](_0x3722b3+_0x3eed8e)];return a0_0x192533['sep']+_0x24b306[_0x1497ef(0x220)](a0_0x192533[_0x1497ef(0x263)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x4d8d98=a0_0x13cb;try{const _0x5a4839=require(_0x4d8d98(0x218));return _0x5a4839[_0x4d8d98(0x268)]??_0x4d8d98(0x21d);}catch(_0x5dd389){return console[_0x4d8d98(0x1f8)](_0x4d8d98(0x27d),_0x5dd389),_0x4d8d98(0x21d);}}function printHelp(){const _0x1a2126=a0_0x13cb;console[_0x1a2126(0x2ae)](_0x1a2126(0x2bf)+getPackageVersion()),console[_0x1a2126(0x2ae)](_0x1a2126(0x288)),console[_0x1a2126(0x2ae)](_0x1a2126(0x29f)),console['log'](_0x1a2126(0x256)),console[_0x1a2126(0x2ae)](_0x1a2126(0x2f4)),console['log'](_0x1a2126(0x236)),console[_0x1a2126(0x2ae)]('\x0aExamples:'),console[_0x1a2126(0x2ae)](_0x1a2126(0x2ce)),console['log'](_0x1a2126(0x283));}const cliArgs=process[a0_0x2ad189(0x1f9)][a0_0x2ad189(0x26e)](0x2),VERSION_FLAGS=new Set([a0_0x2ad189(0x247),'-v','-V']),HELP_FLAGS=new Set([a0_0x2ad189(0x318),'-h']);cliArgs[a0_0x2ad189(0x25a)](_0x20cd6c=>VERSION_FLAGS[a0_0x2ad189(0x2d2)](_0x20cd6c))&&(console['log']('@morphllm/morphmcp\x20'+getPackageVersion()),process[a0_0x2ad189(0x204)](0x0));cliArgs[a0_0x2ad189(0x25a)](_0x20923e=>HELP_FLAGS[a0_0x2ad189(0x2d2)](_0x20923e))&&(printHelp(),process[a0_0x2ad189(0x204)](0x0));function getCliArg(_0x557649){const _0x1bb3ed=a0_0x2ad189;for(let _0xcc7f5c=0x0;_0xcc7f5c<cliArgs[_0x1bb3ed(0x2cf)];_0xcc7f5c++){const _0x67e365=cliArgs[_0xcc7f5c];if(_0x67e365[_0x1bb3ed(0x21b)]('--'+_0x557649+'='))return _0x67e365[_0x1bb3ed(0x26e)](('--'+_0x557649+'=')[_0x1bb3ed(0x2cf)]);if(_0x67e365==='--'+_0x557649&&_0xcc7f5c+0x1<cliArgs[_0x1bb3ed(0x2cf)])return cliArgs[_0xcc7f5c+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x2ad189(0x2cf)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x2ad189(0x2d2)](arg)||HELP_FLAGS['has'](arg))continue;if(arg[a0_0x2ad189(0x21b)](a0_0x2ad189(0x2f0)))continue;if(arg===a0_0x2ad189(0x2a1)){i++;continue;}args[a0_0x2ad189(0x2c6)](arg);}const ALL_TOOLS=[a0_0x2ad189(0x20c),a0_0x2ad189(0x21a),a0_0x2ad189(0x2ee),'codebase_search'],DEFAULT_TOOLS=['edit_file',a0_0x2ad189(0x21a),a0_0x2ad189(0x2ee)],ENABLED_TOOLS=process[a0_0x2ad189(0x2b5)][a0_0x2ad189(0x29c)]?process[a0_0x2ad189(0x2b5)][a0_0x2ad189(0x29c)]===a0_0x2ad189(0x276)?ALL_TOOLS:process[a0_0x2ad189(0x2b5)]['ENABLED_TOOLS']['split'](',')[a0_0x2ad189(0x239)](_0x552a62=>_0x552a62[a0_0x2ad189(0x2e3)]()):DEFAULT_TOOLS;console[a0_0x2ad189(0x1f8)](a0_0x2ad189(0x233)+ENABLED_TOOLS['join'](',\x20'));function a0_0x29e0(){const _0x28604b=['%\x20match)\x0a','normalize','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','../package.json','min','warpgrep_codebase_search','startsWith','The\x20search\x20term\x20should\x20be\x20a\x20targeted\x20natural\x20language\x20query\x20based\x20on\x20what\x20you\x20are\x20trying\x20to\x20accomplish,\x20like\x20\x27Find\x20where\x20authentication\x20requests\x20are\x20handled\x20in\x20the\x20Express\x20routes\x27\x20or\x20\x27Modify\x20the\x20agentic\x20rollout\x20to\x20use\x20the\x20new\x20tokenizer\x20and\x20chat\x20template\x27\x20or\x20\x27Fix\x20the\x20bug\x20where\x20the\x20user\x20gets\x20redirected\x20from\x20the\x20/feed\x20page\x27.\x20','unknown','Failed\x20to\x20request\x20roots\x20from\x20client:','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','join','list_directory\x20','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','MORPH_API_URL','description','ms.\x20Success:\x20','stats','\x20\x20\x20','code_edit','Invalid\x20arguments:\x20','path','mcp-filesystem','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','WarpGrepError','match','completed_with_file_errors','readFile','source','Enabled\x20tools:\x20','constructor','\x20for:\x20\x22','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','runWarpGrep_call','TimeoutError','map','indexOf','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','isArray','completed','[warpgrep_github_search]\x20Searching\x20','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','6833694DFQKQT','substring','describe','safeParse','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','application/json','--version','Cargo.toml','errors','RipgrepError','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','Rules:\x0a','RipgrepNotAvailable','message','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','Fallback:\x20Using\x20workspace\x20root\x20','homedir','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','\x0a</file>','timings','.git','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','[warpgrep_github_search]\x20Failed\x20in\x20','includes','user','some','</file>','Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','content','GitHub\x20repository\x20URL\x20or\x20\x27owner/repo\x27\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27\x20or\x20\x27https://github.com/vercel/next.js\x27)','repo_path','356931QbVTNS','SymlinkError','Fatal\x20error\x20running\x20server:','sep','inputSchema','utf-8','role','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','version','etimedout','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','0.2.0','<file\x20path=\x22','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','slice','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','repoId','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','pyproject.toml','2408889QIamEF','\x20-\x20','toLowerCase','all','ReadError','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','ENOENT','Bearer\x20','searchGitHub','Created\x20File','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','\x20is\x20not\x20a\x20directory','UnknownError','requiresApiKey','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','Failed\x20to\x20read\x20file:\x20','FileNotFound','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','Error\x20running\x20fast\x20context\x20search:\x20','.\x20Changes:\x20','Repository\x20identifier','stat','array','timed\x20out','Parent\x20directory\x20does\x20not\x20exist:\x20','Natural\x20language\x20query\x20to\x20search\x20for\x20code','resolve','data','181411CrIJgo','toFixed','-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a','Applied','PathError','\x20error(s)','FileReadError','warn','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','ENABLED_TOOLS','now','morph-v3-fast','\x0aOptions:','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','--api-key','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','split','listRoots','targetDirectories','dirname','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','3788640uRTXXp','\x27\x20in\x20`','ENABLE_WORKSPACE_MODE','log','unknown\x20error','assistant','catch','[warpgrep_github_search]\x20Done\x20in\x20','timeout','success','env','instruction','go.mod','.cursor','\x0a...\x20(truncated,\x20total:\x20','added\x20','SubToolError','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','.vscode','messages','@morphllm/morphmcp\x20','Here\x20is\x20the\x20content\x20of\x20files:\x0a','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','lines','startLine','push','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a',',\x20removed\x20','read\x20','Benefits:\x0a','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','default','WORKSPACE_ROOT','\x20\x20morph-mcp','length',',\x20modified\x20','name','has','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a','cwd','branch','No\x20results\x20found\x20for\x20query:\x20\x22','read','setRequestHandler','limit','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','search_string','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','floor','string','Unknown\x20error','filepath','files','trim','post','4722540BaHnlE','stack','commitHash','codebase_search','linesAdded','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','.\x20Path:\x20','setNotificationHandler','Workspace\x20mode\x20enabled:\x20Using\x20','warpgrep_github_search','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.','--api-key=','filter','Error\x20accessing\x20directory\x20','morph-warp-grep-v1-1111v0','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','ms:\x0a\x0a','\x20valid\x20directories','Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for','linesRemoved','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','Error:\x20','MORPH_WARP_GREP_TIMEOUT','terminationReason','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.','roots','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','morph-','finish','🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a','code','every','changes','ms:','\x20\x20\x20Lines\x20','❌\x20Morph\x20Edit\x20Failed:\x20','isDirectory','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','File\x20read\x20error:','github_url','package.json','toISOString','composer.json','false','results','Morph\x20FastApply\x20failed\x20without\x20error\x20message','[could\x20not\x20read\x20file:\x20','dryRun','BinaryFile','params','Warning:\x20','--help','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','terminated','-\x20Listed\x20directory\x20`','metadata','getClientCapabilities','basename','error','argv','query','completionId','23535912PlPrEB','For\x20deletions:\x0a','optional','tsconfig.json','sk-','8kuJkpa','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','Specific\x20commit\x20hash\x20to\x20search','exit','object','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','Unknown\x20tool:\x20','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.','Morph\x20Edit\x20Preview','\x20chars)','edit_file','rerankScore','realpath','grep','-\x20Read\x20file\x20`','text','Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20','api-key','\x20(new\x20file)'];a0_0x29e0=function(){return _0x28604b;};return a0_0x29e0();}function a0_0x13cb(_0x51cdce,_0x4c6c67){_0x51cdce=_0x51cdce-0x1f3;const _0x29e049=a0_0x29e0();let _0x13cb45=_0x29e049[_0x51cdce];return _0x13cb45;}const WORKSPACE_ROOT=process[a0_0x2ad189(0x2b5)][a0_0x2ad189(0x2cd)]||process[a0_0x2ad189(0x2b5)]['PWD']||process[a0_0x2ad189(0x2d5)](),ENABLE_WORKSPACE_MODE=process['env'][a0_0x2ad189(0x2ad)]!==a0_0x2ad189(0x310),MORPH_API_KEY=getCliArg(a0_0x2ad189(0x213))??process['env']['MORPH_API_KEY'],MORPH_API_URL=process[a0_0x2ad189(0x2b5)][a0_0x2ad189(0x223)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x2ad189(0x2b5)][a0_0x2ad189(0x2fb)]?parseInt(process[a0_0x2ad189(0x2b5)][a0_0x2ad189(0x2fb)],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY['startsWith'](a0_0x2ad189(0x200))&&!MORPH_API_KEY[a0_0x2ad189(0x21b)](a0_0x2ad189(0x300))&&console[a0_0x2ad189(0x1f8)](a0_0x2ad189(0x2c2));async function reportMorphError(_0x36f09a){const _0x235c0b=a0_0x2ad189;try{await a0_0x582a22[_0x235c0b(0x2e4)]('https://morphllm.com/api/error-report',{..._0x36f09a,'timestamp':new Date()[_0x235c0b(0x30e)](),'source':_0x36f09a[_0x235c0b(0x232)]||'mcp-filesystem'},{'timeout':0x1388,'headers':{'Content-Type':_0x235c0b(0x246),'Authorization':_0x235c0b(0x27a)+MORPH_API_KEY}});}catch{}}args[a0_0x2ad189(0x2cf)]===0x0&&!ENABLE_WORKSPACE_MODE&&(console[a0_0x2ad189(0x1f8)](a0_0x2ad189(0x23f)),console[a0_0x2ad189(0x1f8)](a0_0x2ad189(0x222)),console[a0_0x2ad189(0x1f8)](a0_0x2ad189(0x252)),console['error'](a0_0x2ad189(0x27e)),console[a0_0x2ad189(0x1f8)](a0_0x2ad189(0x2cb)),console[a0_0x2ad189(0x1f8)]('At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.'));function normalizePath(_0x525eda){const _0x1f157f=a0_0x2ad189;return a0_0x192533[_0x1f157f(0x216)](_0x525eda);}function expandHome(_0x382cae){const _0x2745d5=a0_0x2ad189;if(_0x382cae['startsWith']('~/')||_0x382cae==='~')return a0_0x192533[_0x2745d5(0x220)](a0_0x2b9994[_0x2745d5(0x251)](),_0x382cae[_0x2745d5(0x26e)](0x1));return _0x382cae;}let allowedDirectories=await Promise[a0_0x2ad189(0x276)](args['map'](async _0x16f186=>{const _0xae2ab0=expandHome(_0x16f186),_0x1d3c3c=a0_0x192533['resolve'](_0xae2ab0);try{const _0x158be6=await a0_0x27c95d['realpath'](_0x1d3c3c);return normalizePath(_0x158be6);}catch(_0x59e809){return normalizePath(_0x1d3c3c);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x2ad189(0x2cf)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x2ad189(0x2c6)](workspaceDir),console[a0_0x2ad189(0x1f8)](a0_0x2ad189(0x2ed)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x59cd85){console[a0_0x2ad189(0x1f8)]('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x59cd85);}async function detectWorkspaceRoot(_0x47e669){const _0x24ebef=a0_0x2ad189;let _0xa6a8ff=a0_0x192533[_0x24ebef(0x291)](_0x47e669);const _0x28a7fe=[_0x24ebef(0x255),_0x24ebef(0x2bd),_0x24ebef(0x30d),_0x24ebef(0x248),_0x24ebef(0x272),_0x24ebef(0x2b7),_0x24ebef(0x2b8),_0x24ebef(0x1ff),_0x24ebef(0x30f)];while(_0xa6a8ff!==a0_0x192533[_0x24ebef(0x2a9)](_0xa6a8ff)){for(const _0x46ca35 of _0x28a7fe){const _0x416578=a0_0x192533[_0x24ebef(0x220)](_0xa6a8ff,_0x46ca35);try{return await a0_0x27c95d['access'](_0x416578),normalizePath(_0xa6a8ff);}catch{}}_0xa6a8ff=a0_0x192533['dirname'](_0xa6a8ff);}return normalizePath(_0x47e669);}await Promise[a0_0x2ad189(0x276)](args[a0_0x2ad189(0x239)](async _0x199bf0=>{const _0x371dbb=a0_0x2ad189;try{const _0x30ac74=await a0_0x27c95d[_0x371dbb(0x28c)](expandHome(_0x199bf0));!_0x30ac74[_0x371dbb(0x309)]()&&(console[_0x371dbb(0x1f8)](_0x371dbb(0x2fa)+_0x199bf0+_0x371dbb(0x280)),process[_0x371dbb(0x204)](0x1));}catch(_0x80b6b6){console[_0x371dbb(0x1f8)](_0x371dbb(0x2f2)+_0x199bf0+':',_0x80b6b6),process[_0x371dbb(0x204)](0x1);}}));async function validatePath(_0x5e39e0){const _0x4fb94f=a0_0x2ad189,_0x4b7086=expandHome(_0x5e39e0),_0x505227=a0_0x192533[_0x4fb94f(0x291)](_0x4b7086);try{const _0x39c688=await a0_0x27c95d[_0x4fb94f(0x20e)](_0x505227);return _0x39c688;}catch(_0xe7bed0){if(_0xe7bed0[_0x4fb94f(0x303)]==='ENOENT'){const _0x15278a=a0_0x192533['dirname'](_0x505227);try{const _0x130cd9=await a0_0x27c95d[_0x4fb94f(0x20e)](_0x15278a);return a0_0x192533[_0x4fb94f(0x220)](_0x130cd9,a0_0x192533[_0x4fb94f(0x1f7)](_0x505227));}catch{throw new Error(_0x4fb94f(0x28f)+_0x15278a);}}throw _0xe7bed0;}}const MorphEditFileArgsSchema=z[a0_0x2ad189(0x205)]({'path':z[a0_0x2ad189(0x2df)](),'code_edit':z[a0_0x2ad189(0x2df)]()[a0_0x2ad189(0x242)](a0_0x2ad189(0x202)),'instruction':z[a0_0x2ad189(0x2df)]()['describe'](a0_0x2ad189(0x267)),'dryRun':z['boolean']()[a0_0x2ad189(0x2cc)](![])['describe']('Preview\x20changes\x20without\x20applying\x20them.')}),WarpGrepArgsSchema=z[a0_0x2ad189(0x205)]({'search_string':z['string']()[a0_0x2ad189(0x242)](a0_0x2ad189(0x2f7)),'repo_path':z['string']()[a0_0x2ad189(0x242)](a0_0x2ad189(0x278))}),WarpGrepGitHubArgsSchema=z[a0_0x2ad189(0x205)]({'search_string':z['string']()[a0_0x2ad189(0x242)](a0_0x2ad189(0x2f7)),'github_url':z[a0_0x2ad189(0x2df)]()[a0_0x2ad189(0x242)](a0_0x2ad189(0x25e)),'branch':z[a0_0x2ad189(0x2df)]()[a0_0x2ad189(0x1fe)]()[a0_0x2ad189(0x242)](a0_0x2ad189(0x271))}),CodebaseSearchArgsSchema=z[a0_0x2ad189(0x205)]({'query':z[a0_0x2ad189(0x2df)]()[a0_0x2ad189(0x242)](a0_0x2ad189(0x290)),'repoId':z['string']()[a0_0x2ad189(0x242)](a0_0x2ad189(0x28b)),'branch':z['string']()['optional']()[a0_0x2ad189(0x242)](a0_0x2ad189(0x319)),'commitHash':z[a0_0x2ad189(0x2df)]()[a0_0x2ad189(0x1fe)]()['describe'](a0_0x2ad189(0x203)),'targetDirectories':z[a0_0x2ad189(0x28d)](z['string']())[a0_0x2ad189(0x2cc)]([])[a0_0x2ad189(0x242)](a0_0x2ad189(0x22c)),'limit':z['number']()[a0_0x2ad189(0x1fe)]()[a0_0x2ad189(0x2cc)](0xa)['describe']('Max\x20results\x20to\x20return')}),server=new Server({'name':'morph-mcp','version':a0_0x2ad189(0x26b)},{'capabilities':{'tools':{}}});server[a0_0x2ad189(0x2d9)](ListToolsRequestSchema,async()=>{const _0x33e8fb=a0_0x2ad189,_0x1959dd=[{'name':'edit_file','description':_0x33e8fb(0x2c3)+_0x33e8fb(0x2c1)+_0x33e8fb(0x244)+_0x33e8fb(0x21f)+_0x33e8fb(0x2ca)+_0x33e8fb(0x26f)+_0x33e8fb(0x27f)+_0x33e8fb(0x24f)+_0x33e8fb(0x286)+_0x33e8fb(0x2a3)+_0x33e8fb(0x2a0)+_0x33e8fb(0x23b)+_0x33e8fb(0x1fd)+_0x33e8fb(0x2bc)+_0x33e8fb(0x2ea)+_0x33e8fb(0x24c)+_0x33e8fb(0x26d)+_0x33e8fb(0x2c7)+_0x33e8fb(0x2a5)+_0x33e8fb(0x24b)+_0x33e8fb(0x2ff)+_0x33e8fb(0x29b)+'IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x33e8fb(0x21a),'description':_0x33e8fb(0x217)+'This\x20tool\x20invokes\x20a\x20subagent\x20that\x20runs\x20parallel\x20grep\x20and\x20readfile\x20calls\x20over\x20multiple\x20turns\x20to\x20locate\x20line\x20ranges\x20and\x20files\x20which\x20might\x20be\x20relevant\x20to\x20the\x20request.\x20'+_0x33e8fb(0x21c)+_0x33e8fb(0x2a2)+_0x33e8fb(0x209)+'Note:\x20The\x20files\x20and\x20line\x20ranges\x20returned\x20by\x20this\x20tool\x20may\x20be\x20some\x20of\x20the\x20ones\x20needed\x20to\x20complete\x20the\x20user\x27s\x20request,\x20but\x20you\x20should\x20be\x20careful\x20in\x20evaluating\x20the\x20relevance\x20of\x20the\x20results,\x20since\x20the\x20subagent\x20might\x20make\x20mistakes.\x20'+_0x33e8fb(0x2db)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]},{'name':_0x33e8fb(0x2e8),'description':'**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a'+_0x33e8fb(0x2d4)+_0x33e8fb(0x302)+_0x33e8fb(0x2ca)+'-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a'+'-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a'+_0x33e8fb(0x295)+_0x33e8fb(0x287)+_0x33e8fb(0x212)+'Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20'+_0x33e8fb(0x25c),'inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x32af72=_0x1959dd[_0x33e8fb(0x2f1)](_0x13f284=>{const _0x488f63=_0x33e8fb;if(!ENABLED_TOOLS['includes'](_0x13f284['name']))return![];if(_0x488f63(0x282)in _0x13f284&&_0x13f284[_0x488f63(0x282)]&&!MORPH_API_KEY)return console['error'](_0x488f63(0x317)+_0x13f284[_0x488f63(0x2d1)]+_0x488f63(0x2aa)),![];return!![];});return{'tools':_0x32af72[_0x33e8fb(0x239)](_0x1251b4=>({'name':_0x1251b4[_0x33e8fb(0x2d1)],'description':_0x1251b4[_0x33e8fb(0x224)],'inputSchema':_0x1251b4[_0x33e8fb(0x264)]}))};}),server[a0_0x2ad189(0x2d9)](CallToolRequestSchema,async _0x3ef6e7=>{const _0x513d1d=a0_0x2ad189;try{const {name:_0x1f13bf,arguments:_0x44fa3b}=_0x3ef6e7[_0x513d1d(0x316)];switch(_0x1f13bf){case _0x513d1d(0x20c):{const _0x13288b=MorphEditFileArgsSchema['safeParse'](_0x44fa3b);if(!_0x13288b[_0x513d1d(0x2b4)])throw new Error('Invalid\x20arguments\x20for\x20morph_edit_file:\x20'+_0x13288b[_0x513d1d(0x1f8)]);const _0x4c015d=await validatePath(_0x13288b['data'][_0x513d1d(0x22a)]);let _0x5b3009=null,_0x5d4f28=!![],_0x3e8001=null;try{_0x5b3009=await a0_0x27c95d[_0x513d1d(0x231)](_0x4c015d,_0x513d1d(0x265));}catch(_0x351870){const _0x7b3535=_0x351870['code'];_0x7b3535===_0x513d1d(0x279)?(_0x5d4f28=![],_0x5b3009=''):(_0x3e8001=_0x513d1d(0x284)+(_0x7b3535||_0x513d1d(0x21d))+_0x513d1d(0x274)+(_0x351870 instanceof Error?_0x351870[_0x513d1d(0x24e)]:String(_0x351870)),console[_0x513d1d(0x1f8)](_0x513d1d(0x317)+_0x3e8001));}let _0x5547be;try{const _0x377855=MORPH_API_KEY;if(!_0x377855)throw new Error(_0x513d1d(0x206));const _0x3e4481=a0_0x192533[_0x513d1d(0x2a9)](_0x4c015d),_0x1ef66e=a0_0x192533[_0x513d1d(0x1f7)](_0x4c015d),_0x5468df=await executeEditFile({'target_filepath':_0x1ef66e,'code_edit':_0x13288b[_0x513d1d(0x292)][_0x513d1d(0x228)],'instructions':_0x13288b[_0x513d1d(0x292)][_0x513d1d(0x2b6)]},{'morphApiKey':_0x377855,'morphApiUrl':MORPH_API_URL,'baseDir':_0x3e4481,'autoWrite':!_0x13288b[_0x513d1d(0x292)][_0x513d1d(0x314)],'generateUdiff':![],'debug':![]});_0x5547be=_0x5468df[_0x513d1d(0x1fb)];if(!_0x5468df[_0x513d1d(0x2b4)])throw new Error(_0x5468df[_0x513d1d(0x1f8)]||_0x513d1d(0x312));const _0x468954=_0x5468df[_0x513d1d(0x305)],_0xa894f4=_0x513d1d(0x2ba)+_0x468954[_0x513d1d(0x2e9)]+_0x513d1d(0x2c8)+_0x468954[_0x513d1d(0x2f8)]+_0x513d1d(0x2d0)+_0x468954['linesModified'];if(_0x13288b[_0x513d1d(0x292)][_0x513d1d(0x314)])return{'content':[{'type':'text','text':_0x513d1d(0x20a)+(_0x5d4f28?'':_0x513d1d(0x214))+':\x20'+_0x13288b[_0x513d1d(0x292)][_0x513d1d(0x2b6)]+_0x513d1d(0x28a)+_0xa894f4+_0x513d1d(0x2eb)+_0x13288b['data'][_0x513d1d(0x22a)]+'.'}]};return{'content':[{'type':_0x513d1d(0x211),'text':'Morph\x20Edit\x20'+(_0x5d4f28?_0x513d1d(0x296):_0x513d1d(0x27c))+':\x20'+_0x13288b[_0x513d1d(0x292)][_0x513d1d(0x2b6)]+_0x513d1d(0x28a)+_0xa894f4+_0x513d1d(0x2eb)+_0x13288b[_0x513d1d(0x292)]['path']+'.'}]};}catch(_0x53cfa2){const _0x1a5c1e=_0x53cfa2 instanceof Error?_0x53cfa2['message']:String(_0x53cfa2);return reportMorphError({'error_message':_0x1a5c1e,'error_type':_0x53cfa2 instanceof Error?_0x53cfa2[_0x513d1d(0x234)]['name']:'UnknownError','context':{'tool':_0x513d1d(0x20c),'completion_id':_0x5547be,'file_path':_0x13288b[_0x513d1d(0x292)][_0x513d1d(0x22a)],'validated_path':_0x4c015d,'instruction':_0x13288b['data'][_0x513d1d(0x2b6)],'model':_0x513d1d(0x29e),'dry_run':_0x13288b[_0x513d1d(0x292)][_0x513d1d(0x314)],'file_exists':_0x5d4f28,'file_read_error':_0x3e8001,'file_readable':_0x5b3009!==null,'request_content':{'path':_0x13288b[_0x513d1d(0x292)][_0x513d1d(0x22a)],'code_edit':_0x13288b[_0x513d1d(0x292)][_0x513d1d(0x228)],'instruction':_0x13288b[_0x513d1d(0x292)][_0x513d1d(0x2b6)],'original_code':_0x5b3009!==null?_0x5b3009['length']>0xc350?_0x5b3009[_0x513d1d(0x241)](0x0,0xc350)+_0x513d1d(0x2b9)+_0x5b3009[_0x513d1d(0x2cf)]+_0x513d1d(0x20b):_0x5b3009:_0x513d1d(0x313)+(_0x3e8001||_0x513d1d(0x2af))+']','original_code_length':_0x5b3009?.['length']??0x0,'model':_0x513d1d(0x29e),'dry_run':_0x13288b['data'][_0x513d1d(0x314)]}},'stack_trace':_0x53cfa2 instanceof Error?_0x53cfa2[_0x513d1d(0x2e6)]:undefined,'source':_0x513d1d(0x22b)})[_0x513d1d(0x2b1)](()=>{}),{'content':[{'type':_0x513d1d(0x211),'text':_0x513d1d(0x308)+_0x1a5c1e}],'isError':!![]};}}case _0x513d1d(0x21a):{const _0x630583=WarpGrepArgsSchema[_0x513d1d(0x243)](_0x44fa3b);if(!_0x630583['success'])return{'content':[{'type':_0x513d1d(0x211),'text':'Invalid\x20arguments:\x20'+_0x630583[_0x513d1d(0x1f8)]}],'isError':!![]};const _0x463032=_0x5b5a48=>{const _0xf713c9=_0x513d1d,_0x4879b1=[];for(const _0x20ef7d of _0x5b5a48||[]){const _0x4557a0=_0x20ef7d[_0xf713c9(0x266)],_0x94683f=_0x20ef7d[_0xf713c9(0x25d)];if(_0x4557a0===_0xf713c9(0x2b0)&&_0x94683f){const _0x54a65e=_0x94683f[_0xf713c9(0x2a6)]('\x0a')[_0xf713c9(0x2f1)](_0x541e0d=>_0x541e0d[_0xf713c9(0x2e3)]());for(const _0x35f30a of _0x54a65e){const _0x501fc8=_0x35f30a['match'](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x501fc8){_0x4879b1[_0xf713c9(0x2c6)]('grep\x20\x27'+_0x501fc8[0x1]+'\x27\x20'+_0x501fc8[0x2]);continue;}const _0xc75fd2=_0x35f30a[_0xf713c9(0x22f)](/^read\s+(.+)$/);if(_0xc75fd2){_0x4879b1[_0xf713c9(0x2c6)](_0xf713c9(0x2c9)+_0xc75fd2[0x1]);continue;}const _0x12fcdd=_0x35f30a[_0xf713c9(0x22f)](/^list_directory\s+(.+)$/);if(_0x12fcdd){_0x4879b1['push'](_0xf713c9(0x221)+_0x12fcdd[0x1]);continue;}}}}return _0x4879b1;},_0x277857=_0x42d2fd=>{const _0x1408d6=_0x513d1d,_0xd1d814=[];if(!_0x42d2fd||!Array[_0x1408d6(0x23c)](_0x42d2fd))return _0xd1d814;const _0x1b50a4=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x1408d6(0x285),'tool':_0x1408d6(0x2d8)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x1408d6(0x297),'tool':_0x1408d6(0x2d8)},{'pattern':/\[READ ERROR\]/,'error_type':_0x1408d6(0x277),'tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x1408d6(0x315),'tool':'read'},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x1408d6(0x24a),'tool':'grep'},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x1408d6(0x24d),'tool':_0x1408d6(0x20f)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x1408d6(0x315),'tool':_0x1408d6(0x2d8)},{'pattern':/\[SYMLINK\]/,'error_type':_0x1408d6(0x261),'tool':_0x1408d6(0x2d8)},{'pattern':/not a text file/,'error_type':'BinaryFile','tool':'read'},{'pattern':/symbolic link/,'error_type':_0x1408d6(0x261),'tool':'read'},{'pattern':/Error reading file:/,'error_type':_0x1408d6(0x277),'tool':_0x1408d6(0x2d8)},{'pattern':/status="error"/,'error_type':'ToolException','tool':_0x1408d6(0x21d)}];let _0x419b3c=0x0;for(const _0x4495a3 of _0x42d2fd){if(_0x4495a3[_0x1408d6(0x266)]===_0x1408d6(0x259)){_0x419b3c++;const _0x401167=_0x4495a3['content'];if(!_0x401167||typeof _0x401167!==_0x1408d6(0x2df))continue;for(const {pattern:_0x34b969,error_type:_0x311b92,tool:_0x418385}of _0x1b50a4){const _0x5f4c77=_0x401167[_0x1408d6(0x22f)](new RegExp(_0x34b969[_0x1408d6(0x232)],'g'));if(_0x5f4c77)for(const _0x159bf5 of _0x5f4c77){const _0x39bf62=_0x401167[_0x1408d6(0x23a)](_0x159bf5),_0x9fb32e=_0x401167[_0x1408d6(0x241)](_0x39bf62,Math[_0x1408d6(0x219)](_0x39bf62+0xc8,_0x401167[_0x1408d6(0x2cf)]));_0xd1d814['push']({'tool':_0x418385,'error_type':_0x311b92,'error_message':_0x9fb32e[_0x1408d6(0x2a6)]('\x0a')[0x0],'turn':_0x419b3c});}}}}return _0xd1d814;};try{const _0xf96fff=a0_0x192533[_0x513d1d(0x291)](_0x630583[_0x513d1d(0x292)][_0x513d1d(0x25f)]),_0xd60a1d=new LocalRipgrepProvider(_0xf96fff),_0x4fa222=await runWarpGrep({'query':_0x630583[_0x513d1d(0x292)]['search_string'],'repoRoot':_0xf96fff,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0xd60a1d}),_0x4226d3=_0x277857(_0x4fa222[_0x513d1d(0x2be)]);_0x4226d3['length']>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x4226d3[_0x513d1d(0x2cf)]+_0x513d1d(0x298),'error_type':_0x513d1d(0x2bb),'level':_0x513d1d(0x29a),'tool':'warpgrep_codebase_search','context':{'repo_path':_0x630583['data'][_0x513d1d(0x25f)],'query':_0x630583['data'][_0x513d1d(0x2dc)],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x4fa222[_0x513d1d(0x2fc)],'sub_tool_errors':_0x4226d3,'timings':_0x4fa222[_0x513d1d(0x254)],'tool_calls':_0x463032(_0x4fa222[_0x513d1d(0x2be)]),'messages':_0x4fa222[_0x513d1d(0x2be)]?.[_0x513d1d(0x239)](_0x328935=>({'role':_0x328935['role'],'content':_0x328935[_0x513d1d(0x25d)]}))},'source':_0x513d1d(0x22b)})[_0x513d1d(0x2b1)](()=>{});let _0x2dc521='';if(_0x4fa222['terminationReason']===_0x513d1d(0x23d)&&_0x4fa222[_0x513d1d(0x301)]?.[_0x513d1d(0x1f5)]?.[_0x513d1d(0x2e2)]){const _0x1e917f=_0x4fa222[_0x513d1d(0x301)]['metadata']['files'];if(_0x1e917f[_0x513d1d(0x2cf)]===0x0)return _0x2dc521=_0x4fa222[_0x513d1d(0x301)]['payload']||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':'text','text':_0x2dc521}]};const _0xc76ca7=[],_0x3ee1f8=[_0x513d1d(0x2a4)];for(const _0x4c3ea6 of _0x4fa222[_0x513d1d(0x2be)]){const _0x179004=_0x4c3ea6[_0x513d1d(0x266)],_0x27ef18=_0x4c3ea6[_0x513d1d(0x25d)];if(_0x179004==='assistant'&&_0x27ef18){const _0x53d6ae=_0x27ef18['split']('\x0a')[_0x513d1d(0x2f1)](_0x2e014c=>_0x2e014c['trim']());for(const _0x4385c1 of _0x53d6ae){const _0x370351=_0x4385c1[_0x513d1d(0x22f)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x370351){_0x3ee1f8[_0x513d1d(0x2c6)]('-\x20Grepped\x20\x27'+_0x370351[0x1]+_0x513d1d(0x2ac)+_0x370351[0x2]+'`');continue;}const _0x36a632=_0x4385c1[_0x513d1d(0x22f)](/^read\s+(.+)$/);if(_0x36a632){_0x3ee1f8[_0x513d1d(0x2c6)](_0x513d1d(0x210)+_0x36a632[0x1]+'`');continue;}const _0x420ee4=_0x4385c1[_0x513d1d(0x22f)](/^list_directory\s+(.+)$/);if(_0x420ee4){_0x3ee1f8[_0x513d1d(0x2c6)](_0x513d1d(0x1f4)+_0x420ee4[0x1]+'`');continue;}}}}_0xc76ca7['push'](_0x3ee1f8[_0x513d1d(0x220)]('\x0a'));const _0x203fe8=['','Relevant\x20context\x20found:'];for(const _0x3df37a of _0x1e917f){if(_0x3df37a[_0x513d1d(0x2c4)]==='*')_0x203fe8['push']('-\x20'+_0x3df37a[_0x513d1d(0x22a)]+':*');else{if(Array[_0x513d1d(0x23c)](_0x3df37a[_0x513d1d(0x2c4)])){const _0x427f41=_0x3df37a['lines'][_0x513d1d(0x239)](([_0x3f87b5,_0x576ceb])=>{if(_0x3f87b5===_0x576ceb)return''+_0x3f87b5;return _0x3f87b5+'-'+_0x576ceb;});_0x203fe8[_0x513d1d(0x2c6)]('-\x20'+_0x3df37a[_0x513d1d(0x22a)]+':'+_0x427f41[_0x513d1d(0x220)](','));}else _0x203fe8[_0x513d1d(0x2c6)]('-\x20'+_0x3df37a[_0x513d1d(0x22a)]+':*');}}_0x203fe8[_0x513d1d(0x2c6)](''),_0xc76ca7[_0x513d1d(0x2c6)](_0x203fe8[_0x513d1d(0x220)]('\x0a')),_0xc76ca7['push'](_0x513d1d(0x2c0));const _0x56fc53=[];for(const _0x435c8f of _0x1e917f){let _0x12e4c3=a0_0x192533['resolve'](_0x630583[_0x513d1d(0x292)][_0x513d1d(0x25f)],_0x435c8f[_0x513d1d(0x22a)]),_0x1185e8=null,_0x477af3=null;try{_0x1185e8=await a0_0x27c95d['readFile'](_0x12e4c3,{'encoding':_0x513d1d(0x265)});}catch(_0x7a5d96){const _0x47d6d1=fixPathRepetition(_0x12e4c3);if(_0x47d6d1)try{_0x1185e8=await a0_0x27c95d[_0x513d1d(0x231)](_0x47d6d1,{'encoding':_0x513d1d(0x265)}),_0x12e4c3=_0x47d6d1;}catch{_0x477af3=_0x7a5d96 instanceof Error?_0x7a5d96:new Error(String(_0x7a5d96));}else _0x477af3=_0x7a5d96 instanceof Error?_0x7a5d96:new Error(String(_0x7a5d96));}if(_0x1185e8!==null){const _0x4d7465=_0x1185e8[_0x513d1d(0x2a6)](/\r?\n/),_0xdb12e3=[_0x513d1d(0x26c)+_0x435c8f[_0x513d1d(0x22a)]+'\x22>'];if(_0x435c8f[_0x513d1d(0x2c4)]==='*'||!Array[_0x513d1d(0x23c)](_0x435c8f[_0x513d1d(0x2c4)]))for(let _0x3dd9aa=0x1;_0x3dd9aa<=_0x4d7465[_0x513d1d(0x2cf)];_0x3dd9aa++){const _0x4669c5=_0x4d7465[_0x3dd9aa-0x1];_0xdb12e3['push'](_0x3dd9aa+'|\x20'+_0x4669c5);}else for(const [_0x284032,_0x5bef97]of _0x435c8f[_0x513d1d(0x2c4)]){_0xdb12e3['length']>0x1&&_0xdb12e3[_0x513d1d(0x2c6)]('');for(let _0x2ebf01=_0x284032;_0x2ebf01<=_0x5bef97&&_0x2ebf01<=_0x4d7465['length'];_0x2ebf01++){const _0x1920a7=_0x4d7465[_0x2ebf01-0x1];_0xdb12e3[_0x513d1d(0x2c6)](_0x2ebf01+'|\x20'+_0x1920a7);}}_0xdb12e3[_0x513d1d(0x2c6)](_0x513d1d(0x25b)),_0x56fc53[_0x513d1d(0x2c6)](_0xdb12e3[_0x513d1d(0x220)]('\x0a'));}else _0x56fc53[_0x513d1d(0x2c6)]('<file\x20path=\x22'+_0x435c8f[_0x513d1d(0x22a)]+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x477af3?.['message']||_0x513d1d(0x2e0))+_0x513d1d(0x253));}_0xc76ca7[_0x513d1d(0x2c6)](_0x56fc53['join']('\x0a\x0a')),_0x2dc521=_0xc76ca7['join']('\x0a');const _0x51efc7=_0x4fa222[_0x513d1d(0x249)]?.['filter'](_0x586dbf=>_0x586dbf[_0x513d1d(0x24e)]?.[_0x513d1d(0x21b)](_0x513d1d(0x30b)))||[];if(_0x51efc7[_0x513d1d(0x2cf)]>0x0){const _0x2fe6e2=_0x51efc7[_0x513d1d(0x239)](_0x4c6e47=>_0x4c6e47['message'])[_0x513d1d(0x220)](';\x20');reportMorphError({'error_message':_0x2fe6e2,'error_type':_0x513d1d(0x299),'context':{'tool':_0x513d1d(0x21a),'repo_path':_0x630583['data']['repo_path'],'query':_0x630583[_0x513d1d(0x292)][_0x513d1d(0x2dc)],'model':_0x513d1d(0x2f3),'termination_reason':_0x513d1d(0x230),'error_count':_0x51efc7[_0x513d1d(0x2cf)],'is_timeout':![],'timings':_0x4fa222['timings'],'files_attempted':_0x1e917f[_0x513d1d(0x239)](_0x5a8408=>({'path':_0x5a8408[_0x513d1d(0x22a)],'lines':_0x5a8408[_0x513d1d(0x2c4)]})),'tool_calls':_0x463032(_0x4fa222[_0x513d1d(0x2be)]),'messages':_0x4fa222[_0x513d1d(0x2be)]?.[_0x513d1d(0x239)](_0x7d074a=>({'role':_0x7d074a[_0x513d1d(0x266)],'content':_0x7d074a[_0x513d1d(0x25d)]})),'request_content':{'query':_0x630583[_0x513d1d(0x292)][_0x513d1d(0x2dc)],'repo_path':_0x630583[_0x513d1d(0x292)][_0x513d1d(0x25f)],'repoRoot':a0_0x192533['resolve'](_0x630583[_0x513d1d(0x292)][_0x513d1d(0x25f)]),'model':_0x513d1d(0x2f3)}},'source':_0x513d1d(0x22b)})['catch'](()=>{});}}else{if(_0x4fa222[_0x513d1d(0x2fc)]===_0x513d1d(0x1f3)&&_0x4fa222[_0x513d1d(0x249)]['length']>0x0){const _0x330fde=_0x4fa222[_0x513d1d(0x249)][_0x513d1d(0x239)](_0x59ee5b=>_0x59ee5b[_0x513d1d(0x24e)])[_0x513d1d(0x220)](';\x20');_0x2dc521=_0x513d1d(0x2fa)+_0x330fde;const _0x491ceb=_0x330fde['toLowerCase']()['includes'](_0x513d1d(0x2b3))||_0x330fde[_0x513d1d(0x275)]()[_0x513d1d(0x258)](_0x513d1d(0x28e))||_0x330fde[_0x513d1d(0x275)]()[_0x513d1d(0x258)]('etimedout'),_0x49f15c=_0x4fa222['finish']?.[_0x513d1d(0x1f5)]?.[_0x513d1d(0x2e2)],_0x1f104d=_0x4fa222[_0x513d1d(0x249)][0x0];reportMorphError({'error_message':_0x330fde,'error_type':_0x491ceb?_0x513d1d(0x238):_0x1f104d?.['constructor']?.[_0x513d1d(0x2d1)]||_0x513d1d(0x22e),'context':{'tool':'warpgrep_codebase_search','repo_path':_0x630583['data'][_0x513d1d(0x25f)],'query':_0x630583[_0x513d1d(0x292)][_0x513d1d(0x2dc)],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x4fa222['terminationReason'],'error_count':_0x4fa222[_0x513d1d(0x249)][_0x513d1d(0x2cf)],'is_timeout':_0x491ceb,'timings':_0x4fa222[_0x513d1d(0x254)],'files_attempted':_0x49f15c?.[_0x513d1d(0x239)](_0x5b36dd=>({'path':_0x5b36dd[_0x513d1d(0x22a)],'lines':_0x5b36dd[_0x513d1d(0x2c4)]})),'tool_calls':_0x463032(_0x4fa222[_0x513d1d(0x2be)]),'messages':_0x4fa222[_0x513d1d(0x2be)]?.[_0x513d1d(0x239)](_0x399157=>({'role':_0x399157[_0x513d1d(0x266)],'content':_0x399157[_0x513d1d(0x25d)]})),'request_content':{'query':_0x630583[_0x513d1d(0x292)]['search_string'],'repo_path':_0x630583['data'][_0x513d1d(0x25f)],'repoRoot':a0_0x192533[_0x513d1d(0x291)](_0x630583[_0x513d1d(0x292)]['repo_path']),'model':'morph-warp-grep-v1-1111v0'}},'stack_trace':_0x1f104d?.[_0x513d1d(0x2e6)]||undefined,'source':_0x513d1d(0x22b)})[_0x513d1d(0x2b1)](()=>{});}else _0x2dc521=_0x513d1d(0x26a);}return{'content':[{'type':_0x513d1d(0x211),'text':_0x2dc521}]};}catch(_0x419725){const _0x11e058=_0x419725 instanceof Error?_0x419725[_0x513d1d(0x24e)]:String(_0x419725),_0x33288c=_0x11e058[_0x513d1d(0x275)]()[_0x513d1d(0x258)](_0x513d1d(0x2b3))||_0x11e058[_0x513d1d(0x275)]()[_0x513d1d(0x258)]('timed\x20out')||_0x11e058['toLowerCase']()[_0x513d1d(0x258)](_0x513d1d(0x269))||_0x419725 instanceof Error&&_0x419725[_0x513d1d(0x2d1)]===_0x513d1d(0x238);return reportMorphError({'error_message':_0x11e058,'error_type':_0x33288c?_0x513d1d(0x238):_0x419725 instanceof Error?_0x419725['constructor'][_0x513d1d(0x2d1)]:_0x513d1d(0x281),'context':{'tool':_0x513d1d(0x21a),'repo_path':_0x630583[_0x513d1d(0x292)][_0x513d1d(0x25f)],'query':_0x630583[_0x513d1d(0x292)][_0x513d1d(0x2dc)],'model':_0x513d1d(0x2f3),'is_timeout':_0x33288c,'exception_phase':_0x513d1d(0x237),'request_content':{'query':_0x630583[_0x513d1d(0x292)][_0x513d1d(0x2dc)],'repo_path':_0x630583[_0x513d1d(0x292)][_0x513d1d(0x25f)],'repoRoot':a0_0x192533[_0x513d1d(0x291)](_0x630583[_0x513d1d(0x292)][_0x513d1d(0x25f)]),'model':'morph-warp-grep-v1-1111v0'}},'stack_trace':_0x419725 instanceof Error?_0x419725[_0x513d1d(0x2e6)]:undefined,'source':_0x513d1d(0x22b)})['catch'](()=>{}),{'content':[{'type':_0x513d1d(0x211),'text':_0x513d1d(0x289)+_0x11e058}],'isError':![]};}}case _0x513d1d(0x2ee):{const _0x4d7907=WarpGrepGitHubArgsSchema[_0x513d1d(0x243)](_0x44fa3b);if(!_0x4d7907['success'])return{'content':[{'type':_0x513d1d(0x211),'text':_0x513d1d(0x229)+_0x4d7907[_0x513d1d(0x1f8)]}],'isError':!![]};const _0x3ac3dd=MORPH_API_KEY;if(!_0x3ac3dd)throw new Error(_0x513d1d(0x206));const _0x402a41=Date[_0x513d1d(0x29d)]();console[_0x513d1d(0x1f8)](_0x513d1d(0x23e)+_0x4d7907['data'][_0x513d1d(0x30c)]+_0x513d1d(0x235)+_0x4d7907[_0x513d1d(0x292)][_0x513d1d(0x2dc)]+'\x22');try{const _0xac570b=new WarpGrepClient({'morphApiKey':_0x3ac3dd,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x1d4997=await _0xac570b[_0x513d1d(0x27b)]({'query':_0x4d7907['data'][_0x513d1d(0x2dc)],'github':_0x4d7907[_0x513d1d(0x292)][_0x513d1d(0x30c)],'branch':_0x4d7907['data'][_0x513d1d(0x2d6)]}),_0x405da1=Date['now']()-_0x402a41;console['error'](_0x513d1d(0x2b2)+_0x405da1+_0x513d1d(0x225)+_0x1d4997[_0x513d1d(0x2b4)]);const _0xb96c5=formatResult(_0x1d4997);return{'content':[{'type':_0x513d1d(0x211),'text':_0xb96c5}]};}catch(_0x4a4147){const _0x1c99e8=Date['now']()-_0x402a41,_0x15c4a3=_0x4a4147 instanceof Error?_0x4a4147[_0x513d1d(0x24e)]:String(_0x4a4147);return console['error'](_0x513d1d(0x257)+_0x1c99e8+_0x513d1d(0x306),_0x15c4a3),reportMorphError({'error_message':_0x15c4a3,'error_type':_0x4a4147 instanceof Error?_0x4a4147[_0x513d1d(0x234)][_0x513d1d(0x2d1)]:'UnknownError','context':{'tool':'warpgrep_github_search','github_url':_0x4d7907[_0x513d1d(0x292)][_0x513d1d(0x30c)],'search_string':_0x4d7907[_0x513d1d(0x292)][_0x513d1d(0x2dc)],'branch':_0x4d7907[_0x513d1d(0x292)][_0x513d1d(0x2d6)]},'stack_trace':_0x4a4147 instanceof Error?_0x4a4147[_0x513d1d(0x2e6)]:undefined,'source':_0x513d1d(0x22b),'tool':_0x513d1d(0x2ee),'latency_ms':_0x1c99e8})[_0x513d1d(0x2b1)](()=>{}),{'content':[{'type':_0x513d1d(0x211),'text':'GitHub\x20search\x20failed:\x20'+_0x15c4a3}],'isError':![]};}}case _0x513d1d(0x2e8):{const _0xbf0121=CodebaseSearchArgsSchema[_0x513d1d(0x243)](_0x44fa3b);if(!_0xbf0121[_0x513d1d(0x2b4)])return{'content':[{'type':_0x513d1d(0x211),'text':_0x513d1d(0x229)+_0xbf0121[_0x513d1d(0x1f8)]}],'isError':!![]};try{const _0x72b552=MORPH_API_KEY;if(!_0x72b552)throw new Error(_0x513d1d(0x2ef));const _0x54532b=_0xbf0121[_0x513d1d(0x292)]['targetDirectories'],_0x322baa=await executeCodebaseSearch({'query':_0xbf0121[_0x513d1d(0x292)][_0x513d1d(0x1fa)],'target_directories':_0x54532b,'limit':_0xbf0121['data'][_0x513d1d(0x2da)]},{'apiKey':_0x72b552,'repoId':_0xbf0121['data'][_0x513d1d(0x270)],'branch':_0xbf0121['data'][_0x513d1d(0x2d6)],'commitHash':_0xbf0121['data'][_0x513d1d(0x2e7)],'debug':![]});if(!_0x322baa[_0x513d1d(0x2b4)])return{'content':[{'type':_0x513d1d(0x211),'text':'Search\x20failed:\x20'+_0x322baa['error']}],'isError':!![]};const _0x3f0235=_0x322baa['results'][_0x513d1d(0x2cf)]===0x0?_0x513d1d(0x2d7)+_0xbf0121[_0x513d1d(0x292)]['query']+'\x22':'Found\x20'+_0x322baa[_0x513d1d(0x311)][_0x513d1d(0x2cf)]+'\x20results\x20in\x20'+_0x322baa[_0x513d1d(0x226)]['searchTimeMs']+_0x513d1d(0x2f5)+_0x322baa[_0x513d1d(0x311)][_0x513d1d(0x239)]((_0x121c66,_0x86f0d)=>_0x86f0d+0x1+'.\x20'+_0x121c66[_0x513d1d(0x2e1)]+'\x20('+(_0x121c66[_0x513d1d(0x20d)]*0x64)[_0x513d1d(0x294)](0x1)+_0x513d1d(0x215)+(_0x513d1d(0x307)+_0x121c66[_0x513d1d(0x2c5)]+'-'+_0x121c66['endLine']+'\x0a')+(_0x513d1d(0x227)+_0x121c66['content'][_0x513d1d(0x241)](0x0,0xc8)+(_0x121c66[_0x513d1d(0x25d)][_0x513d1d(0x2cf)]>0xc8?'...':'')+'\x0a'))[_0x513d1d(0x220)]('\x0a');return{'content':[{'type':_0x513d1d(0x211),'text':_0x3f0235}]};}catch(_0x502272){const _0x4f000b=_0x502272 instanceof Error?_0x502272[_0x513d1d(0x24e)]:String(_0x502272);return reportMorphError({'error_message':_0x4f000b,'error_type':_0x502272 instanceof Error?_0x502272[_0x513d1d(0x234)][_0x513d1d(0x2d1)]:_0x513d1d(0x281),'context':{'tool':_0x513d1d(0x2e8),'query':_0xbf0121[_0x513d1d(0x292)][_0x513d1d(0x1fa)],'repo_id':_0xbf0121[_0x513d1d(0x292)][_0x513d1d(0x270)],'target_directories':_0xbf0121[_0x513d1d(0x292)][_0x513d1d(0x2a8)]},'stack_trace':_0x502272 instanceof Error?_0x502272[_0x513d1d(0x2e6)]:undefined,'source':'mcp-filesystem'})[_0x513d1d(0x2b1)](()=>{}),{'content':[{'type':_0x513d1d(0x211),'text':_0x513d1d(0x2fa)+_0x4f000b}],'isError':!![]};}}default:throw new Error(_0x513d1d(0x208)+_0x1f13bf);}}catch(_0x4f05a6){const _0x411ff0=_0x4f05a6 instanceof Error?_0x4f05a6[_0x513d1d(0x24e)]:String(_0x4f05a6);return reportMorphError({'error_message':_0x411ff0,'error_type':_0x4f05a6 instanceof Error?_0x4f05a6[_0x513d1d(0x234)]['name']:_0x513d1d(0x281),'context':{'tool':name,'arguments':args?JSON['stringify'](args)[_0x513d1d(0x241)](0x0,0x1f4):undefined,'mcp_server_version':_0x513d1d(0x26b)},'stack_trace':_0x4f05a6 instanceof Error?_0x4f05a6[_0x513d1d(0x2e6)]:undefined,'source':_0x513d1d(0x22b)})[_0x513d1d(0x2b1)](()=>{}),{'content':[{'type':_0x513d1d(0x211),'text':'Error:\x20'+_0x411ff0}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0xd87000){const _0x19cde9=a0_0x2ad189,_0x34fe86=await getValidRootDirectories(_0xd87000);if(_0x34fe86[_0x19cde9(0x2cf)]>0x0)allowedDirectories=[..._0x34fe86],console[_0x19cde9(0x1f8)](_0x19cde9(0x2dd)+_0x34fe86[_0x19cde9(0x2cf)]+_0x19cde9(0x2f6));else{console[_0x19cde9(0x1f8)](_0x19cde9(0x207));if(ENABLE_WORKSPACE_MODE)try{const _0x324c21=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x324c21&&(allowedDirectories=[_0x324c21],console['error'](_0x19cde9(0x250)+_0x324c21));}catch(_0x2a9297){console[_0x19cde9(0x1f8)]('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x2a9297);}}}server[a0_0x2ad189(0x2ec)](RootsListChangedNotificationSchema,async()=>{const _0x42ff0e=a0_0x2ad189;try{const _0x589f9e=await server['listRoots']();_0x589f9e&&_0x42ff0e(0x2fe)in _0x589f9e&&await updateAllowedDirectoriesFromRoots(_0x589f9e[_0x42ff0e(0x2fe)]);}catch(_0x425fe3){console[_0x42ff0e(0x1f8)](_0x42ff0e(0x21e),_0x425fe3 instanceof Error?_0x425fe3[_0x42ff0e(0x24e)]:String(_0x425fe3));}}),server['oninitialized']=async()=>{const _0x518d99=a0_0x2ad189,_0x4cdb41=server[_0x518d99(0x1f6)]();if(_0x4cdb41?.[_0x518d99(0x2fe)])try{const _0x393179=await server[_0x518d99(0x2a7)]();_0x393179&&'roots'in _0x393179?await updateAllowedDirectoriesFromRoots(_0x393179[_0x518d99(0x2fe)]):console[_0x518d99(0x1f8)](_0x518d99(0x245));}catch(_0x3c39ea){console['error'](_0x518d99(0x2f9),_0x3c39ea instanceof Error?_0x3c39ea['message']:String(_0x3c39ea));}else{if(allowedDirectories[_0x518d99(0x2cf)]>0x0)console['error'](_0x518d99(0x22d),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console[_0x518d99(0x1f8)](_0x518d99(0x30a));else throw new Error(_0x518d99(0x2fd));}}};async function runServer(){const _0x2bf3a5=a0_0x2ad189,_0x1b4998=new StdioServerTransport();await server['connect'](_0x1b4998),console[_0x2bf3a5(0x1f8)]('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories['length']===0x0&&console[_0x2bf3a5(0x1f8)](_0x2bf3a5(0x2d3));}runServer()['catch'](_0x433046=>{const _0x3fdcb3=a0_0x2ad189;console['error'](_0x3fdcb3(0x262),_0x433046),process[_0x3fdcb3(0x204)](0x1);});
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x4b7e42,_0x470857){const _0x109907=a1_0x2d03,_0x52c9c1=_0x4b7e42();while(!![]){try{const _0x34c4d5=-parseInt(_0x109907(0x13a))/0x1*(-parseInt(_0x109907(0x149))/0x2)+parseInt(_0x109907(0x146))/0x3*(-parseInt(_0x109907(0x147))/0x4)+parseInt(_0x109907(0x143))/0x5*(-parseInt(_0x109907(0x142))/0x6)+parseInt(_0x109907(0x139))/0x7*(parseInt(_0x109907(0x132))/0x8)+-parseInt(_0x109907(0x138))/0x9*(parseInt(_0x109907(0x133))/0xa)+parseInt(_0x109907(0x14a))/0xb+parseInt(_0x109907(0x135))/0xc*(-parseInt(_0x109907(0x13e))/0xd);if(_0x34c4d5===_0x470857)break;else _0x52c9c1['push'](_0x52c9c1['shift']());}catch(_0x4a58c4){_0x52c9c1['push'](_0x52c9c1['shift']());}}}(a1_0x2136,0xdfd80));import a1_0x1e4475 from'path';import a1_0x301650 from'os';function a1_0x2d03(_0x193910,_0x1d6f76){_0x193910=_0x193910-0x132;const _0x21364d=a1_0x2136();let _0x2d0350=_0x21364d[_0x193910];return _0x2d0350;}export function convertToWindowsPath(_0x2d1b03){const _0x49be38=a1_0x2d03;if(_0x2d1b03[_0x49be38(0x13c)](_0x49be38(0x13b))){const _0x31fdf7=_0x2d1b03[_0x49be38(0x140)](0x5)['toUpperCase'](),_0x425ab9=_0x2d1b03['slice'](0x6)[_0x49be38(0x13f)](/\//g,'\x5c');return _0x31fdf7+':'+_0x425ab9;}if(_0x2d1b03[_0x49be38(0x141)](/^\/[a-zA-Z]\//)){const _0xb63525=_0x2d1b03[_0x49be38(0x140)](0x1)[_0x49be38(0x134)](),_0x5a308a=_0x2d1b03['slice'](0x2)['replace'](/\//g,'\x5c');return _0xb63525+':'+_0x5a308a;}if(_0x2d1b03['match'](/^[a-zA-Z]:/))return _0x2d1b03[_0x49be38(0x13f)](/\//g,'\x5c');return _0x2d1b03;}function a1_0x2136(){const _0x2fcba5=['24hJHdbn','20EwBcQe','toUpperCase','1069368BVwawo','join','normalize','2287305EXyUHy','4266052vagdky','47QzwMsr','/mnt/','startsWith','trim','39JXOJNN','replace','charAt','match','492pLYuhB','43620eaDQCn','substring','slice','4742625YuFKiZ','4ZUPAvK','homedir','33674exWkfN','15060012VmXcQJ'];a1_0x2136=function(){return _0x2fcba5;};return a1_0x2136();}export function normalizePath(_0x2e3b04){const _0x44939c=a1_0x2d03;_0x2e3b04=_0x2e3b04[_0x44939c(0x13d)]()[_0x44939c(0x13f)](/^["']|["']$/g,'');const _0x1f40e7=_0x2e3b04[_0x44939c(0x13c)]('/')&&!_0x2e3b04[_0x44939c(0x141)](/^\/mnt\/[a-z]\//i)&&!_0x2e3b04[_0x44939c(0x141)](/^\/[a-zA-Z]\//);if(_0x1f40e7)return _0x2e3b04[_0x44939c(0x13f)](/\/+/g,'/')[_0x44939c(0x13f)](/\/+$/,'');_0x2e3b04=convertToWindowsPath(_0x2e3b04);if(_0x2e3b04['startsWith']('\x5c\x5c')){let _0x55be79=_0x2e3b04;_0x55be79=_0x55be79[_0x44939c(0x13f)](/^\\{2,}/,'\x5c\x5c');const _0x39b998=_0x55be79[_0x44939c(0x144)](0x2)[_0x44939c(0x13f)](/\\\\/g,'\x5c');_0x2e3b04='\x5c\x5c'+_0x39b998;}else _0x2e3b04=_0x2e3b04[_0x44939c(0x13f)](/\\\\/g,'\x5c');let _0x1b3f74=a1_0x1e4475[_0x44939c(0x137)](_0x2e3b04);_0x2e3b04[_0x44939c(0x13c)]('\x5c\x5c')&&!_0x1b3f74[_0x44939c(0x13c)]('\x5c\x5c')&&(_0x1b3f74='\x5c'+_0x1b3f74);if(_0x1b3f74[_0x44939c(0x141)](/^[a-zA-Z]:/)){let _0x47802d=_0x1b3f74[_0x44939c(0x13f)](/\//g,'\x5c');return/^[a-z]:/['test'](_0x47802d)&&(_0x47802d=_0x47802d[_0x44939c(0x140)](0x0)[_0x44939c(0x134)]()+_0x47802d[_0x44939c(0x145)](0x1)),_0x47802d;}return _0x1b3f74[_0x44939c(0x13f)](/\//g,'\x5c');}export function expandHome(_0x1d1622){const _0x452c0b=a1_0x2d03;if(_0x1d1622[_0x452c0b(0x13c)]('~/')||_0x1d1622==='~')return a1_0x1e4475[_0x452c0b(0x136)](a1_0x301650[_0x452c0b(0x148)](),_0x1d1622['slice'](0x1));return _0x1d1622;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a2_0x3425(){const _0x5bea74=['includes','resolve','175bLhkDO','isArray','startsWith','433183pFidPs','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','3795520vfolpL','sep','3MzBWvQ','5338684MHqKgK','6695136gSQPMt','isAbsolute','18438BqSnWH','1752976WbrGkU','normalize','2508246uoLWVU'];a2_0x3425=function(){return _0x5bea74;};return a2_0x3425();}(function(_0x5b8e69,_0x2b432a){const _0x313f5e=a2_0x3d2e,_0x2d9785=_0x5b8e69();while(!![]){try{const _0x2cab54=parseInt(_0x313f5e(0x142))/0x1+-parseInt(_0x313f5e(0x13a))/0x2+parseInt(_0x313f5e(0x146))/0x3*(parseInt(_0x313f5e(0x147))/0x4)+-parseInt(_0x313f5e(0x144))/0x5+-parseInt(_0x313f5e(0x139))/0x6*(-parseInt(_0x313f5e(0x13f))/0x7)+parseInt(_0x313f5e(0x148))/0x8+-parseInt(_0x313f5e(0x13c))/0x9;if(_0x2cab54===_0x2b432a)break;else _0x2d9785['push'](_0x2d9785['shift']());}catch(_0x310a33){_0x2d9785['push'](_0x2d9785['shift']());}}}(a2_0x3425,0xbb535));import a2_0x27feaf from'path';function a2_0x3d2e(_0x4d05bd,_0x1d62d0){_0x4d05bd=_0x4d05bd-0x138;const _0x342530=a2_0x3425();let _0x3d2e96=_0x342530[_0x4d05bd];return _0x3d2e96;}export function isPathWithinAllowedDirectories(_0x15911d,_0x177965){const _0x1702aa=a2_0x3d2e;if(typeof _0x15911d!=='string'||!Array[_0x1702aa(0x140)](_0x177965))return![];if(!_0x15911d||_0x177965['length']===0x0)return![];if(_0x15911d[_0x1702aa(0x13d)]('\x00'))return![];let _0xf52278;try{_0xf52278=a2_0x27feaf[_0x1702aa(0x13e)](a2_0x27feaf[_0x1702aa(0x13b)](_0x15911d));}catch{return![];}if(!a2_0x27feaf[_0x1702aa(0x138)](_0xf52278))throw new Error('Path\x20must\x20be\x20absolute\x20after\x20normalization');return _0x177965['some'](_0x2aa806=>{const _0x3cc9f5=_0x1702aa;if(typeof _0x2aa806!=='string'||!_0x2aa806)return![];if(_0x2aa806[_0x3cc9f5(0x13d)]('\x00'))return![];let _0x2c5495;try{_0x2c5495=a2_0x27feaf[_0x3cc9f5(0x13e)](a2_0x27feaf[_0x3cc9f5(0x13b)](_0x2aa806));}catch{return![];}if(!a2_0x27feaf['isAbsolute'](_0x2c5495))throw new Error(_0x3cc9f5(0x143));if(_0xf52278===_0x2c5495)return!![];if(_0x2c5495===a2_0x27feaf['sep'])return _0xf52278[_0x3cc9f5(0x141)](a2_0x27feaf[_0x3cc9f5(0x145)]);return _0xf52278[_0x3cc9f5(0x141)](_0x2c5495+a2_0x27feaf[_0x3cc9f5(0x145)]);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x27ec02,_0x256a22){const _0x541017=a3_0x56ff,_0x405a3b=_0x27ec02();while(!![]){try{const _0x277473=-parseInt(_0x541017(0x1e9))/0x1+parseInt(_0x541017(0x1e2))/0x2+parseInt(_0x541017(0x1eb))/0x3+parseInt(_0x541017(0x1db))/0x4+-parseInt(_0x541017(0x1e8))/0x5+-parseInt(_0x541017(0x1e0))/0x6*(parseInt(_0x541017(0x1df))/0x7)+-parseInt(_0x541017(0x1e6))/0x8*(-parseInt(_0x541017(0x1ef))/0x9);if(_0x277473===_0x256a22)break;else _0x405a3b['push'](_0x405a3b['shift']());}catch(_0x3a9ee5){_0x405a3b['push'](_0x405a3b['shift']());}}}(a3_0x1942,0x61c32));import{promises as a3_0x39b7e8}from'fs';import a3_0x5e3011 from'path';import a3_0x5c7948 from'os';import{normalizePath}from'./path-utils.js';async function parseRootUri(_0x5a6622){const _0x2760dd=a3_0x56ff;try{const _0x4bb7e3=_0x5a6622[_0x2760dd(0x1d9)]('file://')?_0x5a6622[_0x2760dd(0x1da)](0x7):_0x5a6622,_0x14b68f=_0x4bb7e3[_0x2760dd(0x1d9)]('~/')||_0x4bb7e3==='~'?a3_0x5e3011[_0x2760dd(0x1ee)](a3_0x5c7948[_0x2760dd(0x1dd)](),_0x4bb7e3[_0x2760dd(0x1da)](0x1)):_0x4bb7e3,_0x1525c3=a3_0x5e3011[_0x2760dd(0x1ea)](_0x14b68f),_0x236676=await a3_0x39b7e8[_0x2760dd(0x1e5)](_0x1525c3);return normalizePath(_0x236676);}catch{return null;}}function formatDirectoryError(_0x4b5f94,_0x3c03c2,_0x51567a){const _0x15ad44=a3_0x56ff;if(_0x51567a)return _0x15ad44(0x1de)+_0x51567a+':\x20'+_0x4b5f94;const _0x2495ff=_0x3c03c2 instanceof Error?_0x3c03c2[_0x15ad44(0x1e3)]:String(_0x3c03c2);return'Skipping\x20invalid\x20directory:\x20'+_0x4b5f94+_0x15ad44(0x1e4)+_0x2495ff;}function a3_0x56ff(_0x52ca9e,_0x4d971a){_0x52ca9e=_0x52ca9e-0x1d9;const _0x19420c=a3_0x1942();let _0x56ff99=_0x19420c[_0x52ca9e];return _0x56ff99;}function a3_0x1942(){const _0xc04d32=['error','uri','join','9BhLZDJ','startsWith','slice','339968PShxdp','push','homedir','Skipping\x20','53928EtFBlK','390basmEQ','invalid\x20path\x20or\x20inaccessible','1404668tpqgyX','message','\x20due\x20to\x20error:\x20','realpath','4920392XNfqLp','stat','1173660ZQkrOQ','519434KDNqVm','resolve','758955jgnswE'];a3_0x1942=function(){return _0xc04d32;};return a3_0x1942();}export async function getValidRootDirectories(_0x6c5fbb){const _0xc2c847=a3_0x56ff,_0x3d6580=[];for(const _0x192dfd of _0x6c5fbb){const _0x2ef340=await parseRootUri(_0x192dfd['uri']);if(!_0x2ef340){console[_0xc2c847(0x1ec)](formatDirectoryError(_0x192dfd[_0xc2c847(0x1ed)],undefined,_0xc2c847(0x1e1)));continue;}try{const _0x233cad=await a3_0x39b7e8[_0xc2c847(0x1e7)](_0x2ef340);_0x233cad['isDirectory']()?_0x3d6580[_0xc2c847(0x1dc)](_0x2ef340):console[_0xc2c847(0x1ec)](formatDirectoryError(_0x2ef340,undefined,'non-directory\x20root'));}catch(_0x160be4){console[_0xc2c847(0x1ec)](formatDirectoryError(_0x2ef340,_0x160be4));}}return _0x3d6580;}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.106",
|
|
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.125",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|