@morphllm/morphmcp 0.8.129 → 0.8.130
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/log-utils.js +1 -1
- package/dist/path-utils.js +1 -1
- package/dist/path-validation.js +1 -1
- package/dist/roots-utils.js +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const a0_0x5417d0=a0_0x462f;(function(_0x24e0c6,_0x4d228c){const _0x48b43e=a0_0x462f,_0x4d6c68=_0x24e0c6();while(!![]){try{const _0x2dffb9=-parseInt(_0x48b43e(0x1f0))/0x1*(-parseInt(_0x48b43e(0x1da))/0x2)+-parseInt(_0x48b43e(0x16b))/0x3+-parseInt(_0x48b43e(0x181))/0x4*(parseInt(_0x48b43e(0x178))/0x5)+-parseInt(_0x48b43e(0x1f9))/0x6+-parseInt(_0x48b43e(0x1f3))/0x7+-parseInt(_0x48b43e(0x15a))/0x8*(-parseInt(_0x48b43e(0x1d4))/0x9)+parseInt(_0x48b43e(0x1b3))/0xa*(parseInt(_0x48b43e(0x172))/0xb);if(_0x2dffb9===_0x4d228c)break;else _0x4d6c68['push'](_0x4d6c68['shift']());}catch(_0xfc3354){_0x4d6c68['push'](_0x4d6c68['shift']());}}}(a0_0x4d4b,0x86f0e));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_0x8c62a7 from'fs/promises';import a0_0x5e6b08 from'path';import a0_0x4a6458 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import a0_0xb47080 from'axios';function fixPathRepetition(_0x5ac938){const _0x3eb4a4=a0_0x462f,_0xaa0649=_0x5ac938[_0x3eb4a4(0x1f6)](a0_0x5e6b08[_0x3eb4a4(0x177)])['filter'](Boolean);if(_0xaa0649[_0x3eb4a4(0x217)]<0x2)return null;for(let _0x21021f=Math[_0x3eb4a4(0x15b)](_0xaa0649[_0x3eb4a4(0x217)]/0x2);_0x21021f>=0x1;_0x21021f--){for(let _0x25de96=0x0;_0x25de96<=_0xaa0649[_0x3eb4a4(0x217)]-0x2*_0x21021f;_0x25de96++){const _0x112900=_0xaa0649[_0x3eb4a4(0x162)](_0x25de96,_0x25de96+_0x21021f),_0x5d82ee=_0xaa0649[_0x3eb4a4(0x162)](_0x25de96+_0x21021f,_0x25de96+0x2*_0x21021f);if(_0x112900['every']((_0x5d3ff7,_0x55b153)=>_0x5d3ff7===_0x5d82ee[_0x55b153])){const _0x55987f=[..._0xaa0649[_0x3eb4a4(0x162)](0x0,_0x25de96),..._0xaa0649[_0x3eb4a4(0x162)](_0x25de96+_0x21021f)];return a0_0x5e6b08[_0x3eb4a4(0x177)]+_0x55987f['join'](a0_0x5e6b08['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x3653c0=a0_0x462f;try{const _0x2e9a55=require('../package.json');return _0x2e9a55[_0x3653c0(0x159)]??'unknown';}catch(_0x52908c){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x52908c),'unknown';}}function printHelp(){const _0x3e6402=a0_0x462f;console[_0x3e6402(0x1ad)](_0x3e6402(0x1d9)+getPackageVersion()),console[_0x3e6402(0x1ad)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0x3e6402(0x1ad)]('\x0aOptions:'),console['log']('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x3e6402(0x1ad)](_0x3e6402(0x207)),console[_0x3e6402(0x1ad)](_0x3e6402(0x20d)),console['log']('\x0aExamples:'),console['log']('\x20\x20morph-mcp'),console['log'](_0x3e6402(0x237));}const cliArgs=process[a0_0x5417d0(0x23a)]['slice'](0x2),VERSION_FLAGS=new Set([a0_0x5417d0(0x153),'-v','-V']),HELP_FLAGS=new Set([a0_0x5417d0(0x23f),'-h']);cliArgs[a0_0x5417d0(0x15c)](_0x455fe2=>VERSION_FLAGS[a0_0x5417d0(0x17f)](_0x455fe2))&&(console[a0_0x5417d0(0x1ad)](a0_0x5417d0(0x1d9)+getPackageVersion()),process[a0_0x5417d0(0x198)](0x0));cliArgs[a0_0x5417d0(0x15c)](_0xdaa2a2=>HELP_FLAGS[a0_0x5417d0(0x17f)](_0xdaa2a2))&&(printHelp(),process['exit'](0x0));function a0_0x462f(_0x15d807,_0x4f2f2f){_0x15d807=_0x15d807-0x150;const _0x4d4ba5=a0_0x4d4b();let _0x462f7a=_0x4d4ba5[_0x15d807];return _0x462f7a;}function getCliArg(_0xe1d6af){const _0x326c3c=a0_0x5417d0;for(let _0x538de4=0x0;_0x538de4<cliArgs[_0x326c3c(0x217)];_0x538de4++){const _0x36261e=cliArgs[_0x538de4];if(_0x36261e[_0x326c3c(0x239)]('--'+_0xe1d6af+'='))return _0x36261e[_0x326c3c(0x162)](('--'+_0xe1d6af+'=')[_0x326c3c(0x217)]);if(_0x36261e==='--'+_0xe1d6af&&_0x538de4+0x1<cliArgs[_0x326c3c(0x217)])return cliArgs[_0x538de4+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x5417d0(0x217)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x5417d0(0x17f)](arg)||HELP_FLAGS[a0_0x5417d0(0x17f)](arg))continue;if(arg[a0_0x5417d0(0x239)]('--api-key='))continue;if(arg===a0_0x5417d0(0x22a)){i++;continue;}args['push'](arg);}const WORKSPACE_ROOT=process[a0_0x5417d0(0x190)][a0_0x5417d0(0x17d)]||process[a0_0x5417d0(0x190)][a0_0x5417d0(0x1a0)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process['env'][a0_0x5417d0(0x1c4)]!=='false',MORPH_API_KEY=getCliArg(a0_0x5417d0(0x1d6))??process[a0_0x5417d0(0x190)][a0_0x5417d0(0x1d1)],MORPH_API_URL=process[a0_0x5417d0(0x190)][a0_0x5417d0(0x18e)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x5417d0(0x190)][a0_0x5417d0(0x167)]?parseInt(process['env'][a0_0x5417d0(0x167)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set([a0_0x5417d0(0x225),a0_0x5417d0(0x248),a0_0x5417d0(0x1c7)]),DISABLED_TOOLS=process['env'][a0_0x5417d0(0x161)]?new Set(process[a0_0x5417d0(0x190)][a0_0x5417d0(0x161)][a0_0x5417d0(0x1f6)](',')[a0_0x5417d0(0x1e2)](_0x82d812=>_0x82d812[a0_0x5417d0(0x1e4)]())[a0_0x5417d0(0x1bb)](_0x4c948c=>_0x4c948c[a0_0x5417d0(0x217)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0x5417d0(0x1b5)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x5417d0(0x17f)](tool)&&console[a0_0x5417d0(0x246)](a0_0x5417d0(0x1e1)+tool+a0_0x5417d0(0x1c5)+[...KNOWN_TOOL_NAMES][a0_0x5417d0(0x1b0)](',\x20'));}console[a0_0x5417d0(0x246)]('Disabled\x20tools:\x20'+[...DISABLED_TOOLS][a0_0x5417d0(0x1b0)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x5417d0(0x239)](a0_0x5417d0(0x191))&&!MORPH_API_KEY[a0_0x5417d0(0x239)]('morph-')&&logMcpStderr(a0_0x5417d0(0x23c));async function reportMorphError(_0x39194e){const _0x17fe52=a0_0x5417d0;try{await a0_0xb47080[_0x17fe52(0x171)]('https://morphllm.com/api/error-report',{..._0x39194e,'timestamp':new Date()[_0x17fe52(0x1cf)](),'source':_0x39194e['source']||_0x17fe52(0x17b),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x39194e[_0x17fe52(0x1c1)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x17fe52(0x1fe),'Authorization':_0x17fe52(0x19e)+MORPH_API_KEY}});}catch{}}args[a0_0x5417d0(0x217)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),logMcpStderr(a0_0x5417d0(0x1f1)),logMcpStderr(a0_0x5417d0(0x1f7)),logMcpStderr(a0_0x5417d0(0x234)),logMcpStderr(a0_0x5417d0(0x16e)),logMcpStderr(a0_0x5417d0(0x17e)));function normalizePath(_0x104652){return a0_0x5e6b08['normalize'](_0x104652);}function expandHome(_0x5c9abb){const _0x860d6=a0_0x5417d0;if(_0x5c9abb[_0x860d6(0x239)]('~/')||_0x5c9abb==='~')return a0_0x5e6b08['join'](a0_0x4a6458[_0x860d6(0x1fc)](),_0x5c9abb['slice'](0x1));return _0x5c9abb;}let allowedDirectories=await Promise[a0_0x5417d0(0x1f5)](args[a0_0x5417d0(0x1e2)](async _0x942478=>{const _0x52b470=a0_0x5417d0,_0x522dc4=expandHome(_0x942478),_0x2e676b=a0_0x5e6b08[_0x52b470(0x19b)](_0x522dc4);try{const _0x3dd2f1=await a0_0x8c62a7[_0x52b470(0x183)](_0x2e676b);return normalizePath(_0x3dd2f1);}catch(_0x5e9405){return normalizePath(_0x2e676b);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x5417d0(0x217)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x5417d0(0x199)](workspaceDir),logMcpStderr(a0_0x5417d0(0x22c)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x2c221d){logMcpStderr(a0_0x5417d0(0x1e7)+a0_0x2c221d);}function a0_0x4d4b(){const _0x4f756e=['Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','morph-v3-fast','Unknown\x20error','metadata','ENOENT','Cargo.toml','oninitialized','Here\x20is\x20the\x20content\x20of\x20files:\x0a','57481lRCOey','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','3604804CkEvTy','Morph\x20Edit\x20','all','split','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','branch','2999586VZEOfI','default','Benefits:\x0a','homedir','read\x20','application/json','toLowerCase','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','finish','changes','timed\x20out','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','added\x20','Invalid\x20arguments:\x20','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','WarpGrepError','For\x20deletions:\x0a','node_modules','repo_path','Error:\x20','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','timeout','.\x20Changes:\x20','inputSchema','github_url','safeParse','messages','search_string','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','Server\x20cannot\x20operate:\x20No\x20allowed\x20directories\x20available.\x20Server\x20was\x20started\x20without\x20command-line\x20directories\x20and\x20client\x20either\x20does\x20not\x20support\x20MCP\x20roots\x20protocol\x20or\x20provided\x20empty\x20roots.\x20Please\x20either:\x201)\x20Start\x20server\x20with\x20directory\x20arguments,\x202)\x20Use\x20a\x20client\x20that\x20supports\x20MCP\x20roots\x20protocol\x20and\x20provides\x20valid\x20root\x20directories,\x20or\x203)\x20Enable\x20workspace\x20mode\x20with\x20ENABLE_WORKSPACE_MODE=true.','length','lines','name','[github_codebase_search]\x20Searching\x20','basename','object','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','ReadError','morph-warp-grep-v1-1111v0','setNotificationHandler','code_edit','Repository\x20identifier','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','morph-mcp','edit_file','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','isDirectory','terminated','Applied','--api-key','Preview\x20changes\x20without\x20applying\x20them.','Workspace\x20mode\x20enabled:\x20Using\x20','isArray','constructor','owner_repo','files','getClientCapabilities','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','Failed\x20to\x20request\x20roots\x20from\x20client:','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','\x20disabled\x20via\x20DISABLED_TOOLS','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','0.2.0','startsWith','argv','Rules:\x0a','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','terminationReason','enum','--help','\x22>\x0aError\x20reading\x20file:\x20','catch','read','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','WarpGrep\x20sub-tool\x20errors:\x20','[github_codebase_search]\x20Done\x20in\x20','error','Parent\x20directory\x20does\x20not\x20exist:\x20','codebase_search','setRequestHandler','dirname','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','access','--version','data','instruction','PathError','includes','\x20-\x20','version','709408woQWFS','floor','some','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','assistant','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','DISABLED_TOOLS','slice','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','now','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','MORPH_WARP_GREP_TIMEOUT','completionId','indexOf','Tool\x20\x22','2350959nGTscM','\x27\x20in\x20`','.cursor','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','etimedout','success','post','25139323htUBcR','substring','Warning:\x20Workspace\x20fallback\x20failed:\x20','grep','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','sep','5QwWnhS','description','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','mcp-filesystem','Unknown\x20tool:\x20','WORKSPACE_ROOT','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','has','Error\x20accessing\x20directory\x20','905732gFOixl','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','realpath','❌\x20Morph\x20Edit\x20Failed:\x20','code','.\x20Path:\x20','Tool\x20','roots','\x20for:\x20\x22','content','unknown','TimeoutError','describe','MORPH_API_URL','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','env','sk-','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','Natural-language\x20question/description\x20about\x20the\x20code\x20you\x20want\x20to\x20understand.\x20Good\x20example:\x20\x22Where\x20does\x20auth\x20get\x20handled,\x20what\x20are\x20the\x20different\x20oauth\x20methods\x20supported?\x22,\x20\x22Trace\x20all\x20code\x20that\x20relates\x20to\x20how\x20data\x20is\x20injested\x20and\x20processed\x22.\x20Bad\x20example:\x20\x22auth()\x22,\x20\x22auth\x20login\x20dashoard\x20google\x20email\x22.\x20This\x20tool\x20does\x20NOT\x20accept\x20regex,\x20keyword\x20dumps,\x20or\x20symbol-only\x20queries.','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','Error\x20running\x20fast\x20context\x20search:\x20','tsconfig.json','exit','push','\x20is\x20not\x20a\x20directory','resolve','Specific\x20commit\x20hash\x20to\x20search','params','Bearer\x20','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','PWD','Failed\x20to\x20read\x20file:\x20','payload','source','completed_with_file_errors','SymlinkError','path','package.json','BinaryFile','ms.\x20Success:\x20','runWarpGrep_call','\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable','linesAdded','log','min',',\x20removed\x20','join','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','array','10lHwzmq','Fallback:\x20Using\x20workspace\x20root\x20','size','composer.json','requiresApiKey','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','match','GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','filter','ms:','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','FileReadError','message','grep\x20\x27','context','dryRun','role','ENABLE_WORKSPACE_MODE','\x22.\x20Known\x20tools:\x20','timings','github_codebase_search','UnknownError','Morph\x20FastApply\x20failed\x20without\x20error\x20message','optional','completed','list_directory\x20','\x20valid\x20directories','connect','toISOString','RipgrepNotAvailable','MORPH_API_KEY',',\x20modified\x20','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','18nqbwUg','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','api-key','readFile','text','@morphllm/morphmcp\x20','4yNEwKf','number','utf-8','string','\x0a...\x20(truncated,\x20total:\x20','-\x20Read\x20file\x20`','listRoots','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','map','errors','trim','stack','\x20error(s)','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'];a0_0x4d4b=function(){return _0x4f756e;};return a0_0x4d4b();}async function detectWorkspaceRoot(_0x4020a6){const _0x76ea26=a0_0x5417d0;let _0x567059=a0_0x5e6b08[_0x76ea26(0x19b)](_0x4020a6);const _0x3d04e9=['.git','.vscode',_0x76ea26(0x1a7),_0x76ea26(0x1ed),'pyproject.toml','go.mod',_0x76ea26(0x16d),_0x76ea26(0x197),_0x76ea26(0x1b6)];while(_0x567059!==a0_0x5e6b08['dirname'](_0x567059)){for(const _0x2413a6 of _0x3d04e9){const _0x51b6bb=a0_0x5e6b08['join'](_0x567059,_0x2413a6);try{return await a0_0x8c62a7[_0x76ea26(0x152)](_0x51b6bb),normalizePath(_0x567059);}catch{}}_0x567059=a0_0x5e6b08[_0x76ea26(0x150)](_0x567059);}return normalizePath(_0x4020a6);}await Promise[a0_0x5417d0(0x1f5)](args['map'](async _0x1ebb72=>{const _0x5beeff=a0_0x5417d0;try{const _0x3277f4=await a0_0x8c62a7['stat'](expandHome(_0x1ebb72));!_0x3277f4[_0x5beeff(0x227)]()&&(logMcpStderr(_0x5beeff(0x20c)+_0x1ebb72+_0x5beeff(0x19a)),process[_0x5beeff(0x198)](0x1));}catch(_0x173192){logMcpStderr(_0x5beeff(0x180)+_0x1ebb72+':',_0x173192),process[_0x5beeff(0x198)](0x1);}}));async function validatePath(_0x56a20b){const _0x35b9ce=a0_0x5417d0,_0x31ca28=expandHome(_0x56a20b),_0x44e543=a0_0x5e6b08['resolve'](_0x31ca28);try{const _0x534708=await a0_0x8c62a7[_0x35b9ce(0x183)](_0x44e543);return _0x534708;}catch(_0x56a1fc){if(_0x56a1fc[_0x35b9ce(0x185)]===_0x35b9ce(0x1ec)){const _0x1ba3bb=a0_0x5e6b08['dirname'](_0x44e543);try{const _0x33a5c0=await a0_0x8c62a7['realpath'](_0x1ba3bb);return a0_0x5e6b08['join'](_0x33a5c0,a0_0x5e6b08[_0x35b9ce(0x21b)](_0x44e543));}catch{throw new Error(_0x35b9ce(0x247)+_0x1ba3bb);}}throw _0x56a1fc;}}const MorphEditFileArgsSchema=z[a0_0x5417d0(0x21c)]({'path':z[a0_0x5417d0(0x1dd)](),'code_edit':z[a0_0x5417d0(0x1dd)]()['describe'](a0_0x5417d0(0x182)),'instruction':z[a0_0x5417d0(0x1dd)]()[a0_0x5417d0(0x18d)](a0_0x5417d0(0x223)),'dryRun':z['boolean']()[a0_0x5417d0(0x1fa)](![])['describe'](a0_0x5417d0(0x22b))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x5417d0(0x194),WarpGrepArgsSchema=z[a0_0x5417d0(0x21c)]({'search_string':z['string']()[a0_0x5417d0(0x18d)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x5417d0(0x1dd)]()['describe']('The\x20absolute\x20path\x20of\x20the\x20folder\x20where\x20the\x20search\x20should\x20be\x20performed.\x20In\x20multi-repo\x20workspaces,\x20you\x20have\x20to\x20specify\x20a\x20subfolder\x20where\x20the\x20search\x20should\x20be\x20performed,\x20to\x20avoid\x20searching\x20across\x20all\x20repos'),'search_type':z[a0_0x5417d0(0x23e)]([a0_0x5417d0(0x1fa),a0_0x5417d0(0x20a)])[a0_0x5417d0(0x1ca)]()[a0_0x5417d0(0x18d)](a0_0x5417d0(0x226))}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z[a0_0x5417d0(0x1dd)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()[a0_0x5417d0(0x1ca)]()[a0_0x5417d0(0x18d)](a0_0x5417d0(0x1ba)),'owner_repo':z[a0_0x5417d0(0x1dd)]()['optional']()[a0_0x5417d0(0x18d)](a0_0x5417d0(0x204)),'branch':z[a0_0x5417d0(0x1dd)]()[a0_0x5417d0(0x1ca)]()['describe'](a0_0x5417d0(0x18f))}),CodebaseSearchArgsSchema=z[a0_0x5417d0(0x21c)]({'query':z[a0_0x5417d0(0x1dd)]()[a0_0x5417d0(0x18d)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x5417d0(0x1dd)]()[a0_0x5417d0(0x18d)](a0_0x5417d0(0x222)),'branch':z[a0_0x5417d0(0x1dd)]()[a0_0x5417d0(0x1ca)]()['describe'](a0_0x5417d0(0x193)),'commitHash':z[a0_0x5417d0(0x1dd)]()[a0_0x5417d0(0x1ca)]()['describe'](a0_0x5417d0(0x19c)),'targetDirectories':z[a0_0x5417d0(0x1b2)](z['string']())[a0_0x5417d0(0x1fa)]([])[a0_0x5417d0(0x18d)](a0_0x5417d0(0x176)),'limit':z[a0_0x5417d0(0x1db)]()[a0_0x5417d0(0x1ca)]()[a0_0x5417d0(0x1fa)](0xa)[a0_0x5417d0(0x18d)]('Max\x20results\x20to\x20return')}),server=new Server({'name':a0_0x5417d0(0x224),'version':a0_0x5417d0(0x238)},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x778dc1=a0_0x5417d0,_0x17e72b=[{'name':'edit_file','description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a'+_0x778dc1(0x151)+'🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a'+'IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a'+_0x778dc1(0x1fb)+_0x778dc1(0x15f)+_0x778dc1(0x165)+_0x778dc1(0x232)+_0x778dc1(0x163)+_0x778dc1(0x19f)+_0x778dc1(0x243)+_0x778dc1(0x1f2)+_0x778dc1(0x209)+'-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a'+'-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a'+_0x778dc1(0x23b)+'-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a'+_0x778dc1(0x200)+'-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a'+_0x778dc1(0x1b8)+_0x778dc1(0x17a)+_0x778dc1(0x192)+'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':_0x778dc1(0x248),'description':'A\x20code\x20exploration\x20tool,\x20use\x20this\x20tool\x20when\x20exploring\x20an\x20unfamiliar\x20codebase,\x20and\x20you\x27re\x20unsure\x20of\x20the\x20exact\x20file\x20or\x20string\x20to\x20look\x20for.\x20This\x20tool\x20will\x20find\x20all\x20relevant\x20bits\x20of\x20code\x20given\x20a\x20natural\x20lanugage\x20description,\x20or\x20questin\x20of\x20the\x20thing\x20you\x27re\x20looking\x20for.\x20'+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x778dc1(0x215)+'You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20'+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x40b5d9=_0x17e72b['filter'](_0x4b52e3=>{const _0x2dadf0=_0x778dc1;if(DISABLED_TOOLS[_0x2dadf0(0x17f)](_0x4b52e3['name']))return console[_0x2dadf0(0x246)](_0x2dadf0(0x187)+_0x4b52e3[_0x2dadf0(0x219)]+_0x2dadf0(0x236)),![];if(_0x2dadf0(0x1b7)in _0x4b52e3&&_0x4b52e3[_0x2dadf0(0x1b7)]&&!MORPH_API_KEY)return logMcpStderr('Warning:\x20'+_0x4b52e3[_0x2dadf0(0x219)]+_0x2dadf0(0x166)),![];return!![];});return{'tools':_0x40b5d9['map'](_0x4aed2f=>({'name':_0x4aed2f[_0x778dc1(0x219)],'description':_0x4aed2f[_0x778dc1(0x179)],'inputSchema':_0x4aed2f[_0x778dc1(0x210)]}))};}),server[a0_0x5417d0(0x249)](CallToolRequestSchema,async _0x1a873a=>{const _0xd71059=a0_0x5417d0,{name:_0x4959a5,arguments:_0x52ad0a}=_0x1a873a[_0xd71059(0x19d)];try{if(DISABLED_TOOLS[_0xd71059(0x17f)](_0x4959a5))throw new Error(_0xd71059(0x16a)+_0x4959a5+_0xd71059(0x1ab));switch(_0x4959a5){case _0xd71059(0x225):{const _0x52b535=MorphEditFileArgsSchema['safeParse'](_0x52ad0a);if(!_0x52b535[_0xd71059(0x170)])throw new Error(_0xd71059(0x1d5)+_0x52b535[_0xd71059(0x246)]);const _0x339993=await validatePath(_0x52b535[_0xd71059(0x154)][_0xd71059(0x1a6)]);let _0x16b3dc=null,_0x13dea5=!![],_0x2de8f2=null;try{_0x16b3dc=await a0_0x8c62a7[_0xd71059(0x1d7)](_0x339993,_0xd71059(0x1dc));}catch(_0x580b2f){const _0x2ac70c=_0x580b2f[_0xd71059(0x185)];_0x2ac70c===_0xd71059(0x1ec)?(_0x13dea5=![],_0x16b3dc=''):(_0x2de8f2=_0xd71059(0x1a1)+(_0x2ac70c||_0xd71059(0x18b))+_0xd71059(0x158)+(_0x580b2f instanceof Error?_0x580b2f[_0xd71059(0x1bf)]:String(_0x580b2f)),logMcpStderr('Warning:\x20'+_0x2de8f2));}let _0x4f5544;try{const _0x39d501=MORPH_API_KEY;if(!_0x39d501)throw new Error(_0xd71059(0x235));const _0x5374b3=a0_0x5e6b08[_0xd71059(0x150)](_0x339993),_0x5f81cc=a0_0x5e6b08['basename'](_0x339993),_0x1d3fb1=await executeEditFile({'target_filepath':_0x5f81cc,'code_edit':_0x52b535['data'][_0xd71059(0x221)],'instructions':_0x52b535[_0xd71059(0x154)][_0xd71059(0x155)]},{'morphApiKey':_0x39d501,'morphApiUrl':MORPH_API_URL,'baseDir':_0x5374b3,'autoWrite':!_0x52b535[_0xd71059(0x154)][_0xd71059(0x1c2)],'generateUdiff':![],'debug':![]});_0x4f5544=_0x1d3fb1[_0xd71059(0x168)];if(!_0x1d3fb1[_0xd71059(0x170)])throw new Error(_0x1d3fb1[_0xd71059(0x246)]||_0xd71059(0x1c9));const _0x5d2606=_0x1d3fb1[_0xd71059(0x202)],_0x168420=_0xd71059(0x205)+_0x5d2606[_0xd71059(0x1ac)]+_0xd71059(0x1af)+_0x5d2606['linesRemoved']+_0xd71059(0x1d2)+_0x5d2606['linesModified'];if(_0x52b535[_0xd71059(0x154)][_0xd71059(0x1c2)])return{'content':[{'type':_0xd71059(0x1d8),'text':'Morph\x20Edit\x20Preview'+(_0x13dea5?'':'\x20(new\x20file)')+':\x20'+_0x52b535[_0xd71059(0x154)]['instruction']+_0xd71059(0x20f)+_0x168420+_0xd71059(0x186)+_0x52b535[_0xd71059(0x154)]['path']+'.'}]};return{'content':[{'type':'text','text':_0xd71059(0x1f4)+(_0x13dea5?_0xd71059(0x229):'Created\x20File')+':\x20'+_0x52b535[_0xd71059(0x154)][_0xd71059(0x155)]+_0xd71059(0x20f)+_0x168420+_0xd71059(0x186)+_0x52b535[_0xd71059(0x154)][_0xd71059(0x1a6)]+'.'}]};}catch(_0x536c7f){const _0xa9b4d=_0x536c7f instanceof Error?_0x536c7f[_0xd71059(0x1bf)]:String(_0x536c7f);return reportMorphError({'error_message':_0xa9b4d,'error_type':_0x536c7f instanceof Error?_0x536c7f['constructor']['name']:_0xd71059(0x1c8),'context':{'tool':_0xd71059(0x225),'completion_id':_0x4f5544,'file_path':_0x52b535[_0xd71059(0x154)]['path'],'validated_path':_0x339993,'instruction':_0x52b535[_0xd71059(0x154)][_0xd71059(0x155)],'model':'morph-v3-fast','dry_run':_0x52b535[_0xd71059(0x154)][_0xd71059(0x1c2)],'file_exists':_0x13dea5,'file_read_error':_0x2de8f2,'file_readable':_0x16b3dc!==null,'request_content':{'path':_0x52b535[_0xd71059(0x154)]['path'],'code_edit':_0x52b535['data'][_0xd71059(0x221)],'instruction':_0x52b535[_0xd71059(0x154)][_0xd71059(0x155)],'original_code':_0x16b3dc!==null?_0x16b3dc['length']>0xc350?_0x16b3dc['substring'](0x0,0xc350)+_0xd71059(0x1de)+_0x16b3dc[_0xd71059(0x217)]+'\x20chars)':_0x16b3dc:'[could\x20not\x20read\x20file:\x20'+(_0x2de8f2||'unknown\x20error')+']','original_code_length':_0x16b3dc?.[_0xd71059(0x217)]??0x0,'model':_0xd71059(0x1e9),'dry_run':_0x52b535[_0xd71059(0x154)]['dryRun']}},'stack_trace':_0x536c7f instanceof Error?_0x536c7f[_0xd71059(0x1e5)]:undefined,'source':_0xd71059(0x17b)})['catch'](()=>{}),{'content':[{'type':_0xd71059(0x1d8),'text':_0xd71059(0x184)+_0xa9b4d}],'isError':!![]};}}case _0xd71059(0x248):{const _0x18b1b9=WarpGrepArgsSchema[_0xd71059(0x212)](_0x52ad0a);if(!_0x18b1b9[_0xd71059(0x170)])return{'content':[{'type':'text','text':_0xd71059(0x206)+_0x18b1b9['error']}],'isError':!![]};const _0x53437d=_0x246412=>{const _0x451f48=_0xd71059,_0x32ce81=[];for(const _0x23b665 of _0x246412||[]){const _0x5863ca=_0x23b665[_0x451f48(0x1c3)],_0x98d722=_0x23b665[_0x451f48(0x18a)];if(_0x5863ca===_0x451f48(0x15e)&&_0x98d722){const _0x122288=_0x98d722[_0x451f48(0x1f6)]('\x0a')[_0x451f48(0x1bb)](_0x4638d9=>_0x4638d9[_0x451f48(0x1e4)]());for(const _0x223015 of _0x122288){const _0x2fbc6a=_0x223015[_0x451f48(0x1b9)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x2fbc6a){_0x32ce81[_0x451f48(0x199)](_0x451f48(0x1c0)+_0x2fbc6a[0x1]+'\x27\x20'+_0x2fbc6a[0x2]);continue;}const _0x1e4c97=_0x223015[_0x451f48(0x1b9)](/^read\s+(.+)$/);if(_0x1e4c97){_0x32ce81['push'](_0x451f48(0x1fd)+_0x1e4c97[0x1]);continue;}const _0x46f484=_0x223015[_0x451f48(0x1b9)](/^list_directory\s+(.+)$/);if(_0x46f484){_0x32ce81[_0x451f48(0x199)](_0x451f48(0x1cc)+_0x46f484[0x1]);continue;}}}}return _0x32ce81;},_0x4881db=_0x43ca4e=>{const _0x2357ba=_0xd71059,_0x491636=[];if(!_0x43ca4e||!Array[_0x2357ba(0x22d)](_0x43ca4e))return _0x491636;const _0x8ea5b9=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':'FileNotFound','tool':_0x2357ba(0x242)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x2357ba(0x156),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x2357ba(0x21e),'tool':_0x2357ba(0x242)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x2357ba(0x1a8),'tool':_0x2357ba(0x242)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':'RipgrepError','tool':_0x2357ba(0x175)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x2357ba(0x1d0),'tool':_0x2357ba(0x175)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x2357ba(0x1a8),'tool':_0x2357ba(0x242)},{'pattern':/\[SYMLINK\]/,'error_type':_0x2357ba(0x1a5),'tool':'read'},{'pattern':/not a text file/,'error_type':_0x2357ba(0x1a8),'tool':_0x2357ba(0x242)},{'pattern':/symbolic link/,'error_type':_0x2357ba(0x1a5),'tool':_0x2357ba(0x242)},{'pattern':/Error reading file:/,'error_type':_0x2357ba(0x21e),'tool':_0x2357ba(0x242)},{'pattern':/status="error"/,'error_type':'ToolException','tool':'unknown'}];let _0x73b099=0x0;for(const _0x519eb2 of _0x43ca4e){if(_0x519eb2[_0x2357ba(0x1c3)]==='user'){_0x73b099++;const _0x1c8a14=_0x519eb2['content'];if(!_0x1c8a14||typeof _0x1c8a14!==_0x2357ba(0x1dd))continue;for(const {pattern:_0x5f4e08,error_type:_0x5cf777,tool:_0xe1048f}of _0x8ea5b9){const _0x4700ae=_0x1c8a14[_0x2357ba(0x1b9)](new RegExp(_0x5f4e08[_0x2357ba(0x1a3)],'g'));if(_0x4700ae)for(const _0x12005c of _0x4700ae){const _0x2a6ec8=_0x1c8a14[_0x2357ba(0x169)](_0x12005c),_0x1c32e3=_0x1c8a14[_0x2357ba(0x173)](_0x2a6ec8,Math[_0x2357ba(0x1ae)](_0x2a6ec8+0xc8,_0x1c8a14[_0x2357ba(0x217)]));_0x491636['push']({'tool':_0xe1048f,'error_type':_0x5cf777,'error_message':_0x1c32e3['split']('\x0a')[0x0],'turn':_0x73b099});}}}}return _0x491636;};try{const _0x506144=a0_0x5e6b08['resolve'](_0x18b1b9[_0xd71059(0x154)][_0xd71059(0x20b)]),_0x53a198=_0x18b1b9['data']['search_type'],_0x43d155=_0x53a198===_0xd71059(0x20a)?{'allowNames':[_0xd71059(0x20a)]}:undefined,_0x27d961=new LocalRipgrepProvider(_0x506144,undefined,_0x43d155),_0x191f7c=await runWarpGrep({'searchTerm':_0x18b1b9[_0xd71059(0x154)][_0xd71059(0x214)],'repoRoot':_0x506144,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x27d961,'search_type':_0x53a198}),_0x21835b=_0x4881db(_0x191f7c['messages']);_0x21835b[_0xd71059(0x217)]>0x0&&reportMorphError({'error_message':_0xd71059(0x244)+_0x21835b[_0xd71059(0x217)]+_0xd71059(0x1e6),'error_type':'SubToolError','level':'warn','tool':_0xd71059(0x248),'context':{'repo_path':_0x18b1b9[_0xd71059(0x154)]['repo_path'],'query':_0x18b1b9[_0xd71059(0x154)][_0xd71059(0x214)],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x191f7c['terminationReason'],'sub_tool_errors':_0x21835b,'timings':_0x191f7c[_0xd71059(0x1c6)],'tool_calls':_0x53437d(_0x191f7c[_0xd71059(0x213)]),'messages':_0x191f7c[_0xd71059(0x213)]?.[_0xd71059(0x1e2)](_0x28e01b=>({'role':_0x28e01b[_0xd71059(0x1c3)],'content':_0x28e01b[_0xd71059(0x18a)]}))},'source':_0xd71059(0x17b)})[_0xd71059(0x241)](()=>{});let _0x16838a='';if(_0x191f7c[_0xd71059(0x23d)]===_0xd71059(0x1cb)&&_0x191f7c[_0xd71059(0x201)]?.[_0xd71059(0x1eb)]?.[_0xd71059(0x230)]){const _0x5f5488=_0x191f7c['finish'][_0xd71059(0x1eb)][_0xd71059(0x230)];if(_0x5f5488[_0xd71059(0x217)]===0x0)return _0x16838a=_0x191f7c[_0xd71059(0x201)][_0xd71059(0x1a2)]||_0xd71059(0x160),{'content':[{'type':_0xd71059(0x1d8),'text':_0x16838a}]};const _0x32b79e=[],_0x142498=[_0xd71059(0x1bd)];for(const _0xfd73a7 of _0x191f7c['messages']){const _0x46000a=_0xfd73a7[_0xd71059(0x1c3)],_0x172a65=_0xfd73a7['content'];if(_0x46000a==='assistant'&&_0x172a65){const _0x274022=_0x172a65[_0xd71059(0x1f6)]('\x0a')['filter'](_0x2240e6=>_0x2240e6['trim']());for(const _0x4219d9 of _0x274022){const _0x1828a9=_0x4219d9['match'](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x1828a9){_0x142498[_0xd71059(0x199)]('-\x20Grepped\x20\x27'+_0x1828a9[0x1]+_0xd71059(0x16c)+_0x1828a9[0x2]+'`');continue;}const _0x5d2788=_0x4219d9['match'](/^read\s+(.+)$/);if(_0x5d2788){_0x142498[_0xd71059(0x199)](_0xd71059(0x1df)+_0x5d2788[0x1]+'`');continue;}const _0x2edefc=_0x4219d9[_0xd71059(0x1b9)](/^list_directory\s+(.+)$/);if(_0x2edefc){_0x142498[_0xd71059(0x199)]('-\x20Listed\x20directory\x20`'+_0x2edefc[0x1]+'`');continue;}}}}_0x32b79e[_0xd71059(0x199)](_0x142498['join']('\x0a'));const _0x5a7cea=['','Relevant\x20context\x20found:'];for(const _0x472507 of _0x5f5488){if(_0x472507[_0xd71059(0x218)]==='*')_0x5a7cea['push']('-\x20'+_0x472507[_0xd71059(0x1a6)]+':*');else{if(Array[_0xd71059(0x22d)](_0x472507[_0xd71059(0x218)])){const _0x200eb1=_0x472507[_0xd71059(0x218)][_0xd71059(0x1e2)](([_0x2aee88,_0x45e888])=>{if(_0x2aee88===_0x45e888)return''+_0x2aee88;return _0x2aee88+'-'+_0x45e888;});_0x5a7cea[_0xd71059(0x199)]('-\x20'+_0x472507[_0xd71059(0x1a6)]+':'+_0x200eb1[_0xd71059(0x1b0)](','));}else _0x5a7cea[_0xd71059(0x199)]('-\x20'+_0x472507['path']+':*');}}_0x5a7cea['push'](''),_0x32b79e['push'](_0x5a7cea['join']('\x0a')),_0x32b79e[_0xd71059(0x199)](_0xd71059(0x1ef));const _0xe4f0ae=[];for(const _0x4b8601 of _0x5f5488){let _0x113e31=a0_0x5e6b08[_0xd71059(0x19b)](_0x18b1b9['data']['repo_path'],_0x4b8601[_0xd71059(0x1a6)]),_0x20215e=null,_0x641f93=null;try{_0x20215e=await a0_0x8c62a7['readFile'](_0x113e31,{'encoding':_0xd71059(0x1dc)});}catch(_0x37b659){const _0x4ddfbf=fixPathRepetition(_0x113e31);if(_0x4ddfbf)try{_0x20215e=await a0_0x8c62a7['readFile'](_0x4ddfbf,{'encoding':_0xd71059(0x1dc)}),_0x113e31=_0x4ddfbf;}catch{_0x641f93=_0x37b659 instanceof Error?_0x37b659:new Error(String(_0x37b659));}else _0x641f93=_0x37b659 instanceof Error?_0x37b659:new Error(String(_0x37b659));}if(_0x20215e!==null){const _0xe0d44d=_0x20215e[_0xd71059(0x1f6)](/\r?\n/),_0x1c3940=['<file\x20path=\x22'+_0x4b8601[_0xd71059(0x1a6)]+'\x22>'];if(_0x4b8601[_0xd71059(0x218)]==='*'||!Array['isArray'](_0x4b8601[_0xd71059(0x218)]))for(let _0xa53b7c=0x1;_0xa53b7c<=_0xe0d44d['length'];_0xa53b7c++){const _0x9d28a2=_0xe0d44d[_0xa53b7c-0x1];_0x1c3940['push'](_0xa53b7c+'|\x20'+_0x9d28a2);}else for(const [_0x4d54c4,_0x73a4de]of _0x4b8601['lines']){_0x1c3940[_0xd71059(0x217)]>0x1&&_0x1c3940[_0xd71059(0x199)]('');for(let _0x4ed7df=_0x4d54c4;_0x4ed7df<=_0x73a4de&&_0x4ed7df<=_0xe0d44d[_0xd71059(0x217)];_0x4ed7df++){const _0x58d05c=_0xe0d44d[_0x4ed7df-0x1];_0x1c3940[_0xd71059(0x199)](_0x4ed7df+'|\x20'+_0x58d05c);}}_0x1c3940[_0xd71059(0x199)]('</file>'),_0xe4f0ae['push'](_0x1c3940[_0xd71059(0x1b0)]('\x0a'));}else _0xe4f0ae['push']('<file\x20path=\x22'+_0x4b8601['path']+_0xd71059(0x240)+(_0x641f93?.['message']||_0xd71059(0x1ea))+'\x0a</file>');}_0x32b79e[_0xd71059(0x199)](_0xe4f0ae[_0xd71059(0x1b0)]('\x0a\x0a')),_0x16838a=_0x32b79e[_0xd71059(0x1b0)]('\x0a');const _0x497d79=_0x191f7c[_0xd71059(0x1e3)]?.[_0xd71059(0x1bb)](_0x591025=>_0x591025[_0xd71059(0x1bf)]?.[_0xd71059(0x239)]('File\x20read\x20error:'))||[];if(_0x497d79[_0xd71059(0x217)]>0x0){const _0x17b19c=_0x497d79[_0xd71059(0x1e2)](_0x649405=>_0x649405['message'])['join'](';\x20');reportMorphError({'error_message':_0x17b19c,'error_type':_0xd71059(0x1be),'context':{'tool':_0xd71059(0x248),'repo_path':_0x18b1b9['data'][_0xd71059(0x20b)],'query':_0x18b1b9['data']['search_string'],'model':_0xd71059(0x21f),'termination_reason':_0xd71059(0x1a4),'error_count':_0x497d79[_0xd71059(0x217)],'is_timeout':![],'timings':_0x191f7c[_0xd71059(0x1c6)],'files_attempted':_0x5f5488[_0xd71059(0x1e2)](_0x4ee5b5=>({'path':_0x4ee5b5[_0xd71059(0x1a6)],'lines':_0x4ee5b5['lines']})),'tool_calls':_0x53437d(_0x191f7c['messages']),'messages':_0x191f7c[_0xd71059(0x213)]?.['map'](_0x7e8f69=>({'role':_0x7e8f69['role'],'content':_0x7e8f69[_0xd71059(0x18a)]})),'request_content':{'query':_0x18b1b9['data'][_0xd71059(0x214)],'repo_path':_0x18b1b9[_0xd71059(0x154)][_0xd71059(0x20b)],'repoRoot':a0_0x5e6b08[_0xd71059(0x19b)](_0x18b1b9[_0xd71059(0x154)][_0xd71059(0x20b)]),'model':_0xd71059(0x21f)}},'source':_0xd71059(0x17b)})[_0xd71059(0x241)](()=>{});}}else{if(_0x191f7c['terminationReason']===_0xd71059(0x228)&&_0x191f7c[_0xd71059(0x1e3)]['length']>0x0){const _0x2fa8fa=_0x191f7c[_0xd71059(0x1e3)][_0xd71059(0x1e2)](_0x1ddd9c=>_0x1ddd9c[_0xd71059(0x1bf)])[_0xd71059(0x1b0)](';\x20');_0x16838a=_0xd71059(0x20c)+_0x2fa8fa;const _0x3af85=_0x2fa8fa[_0xd71059(0x1ff)]()['includes'](_0xd71059(0x20e))||_0x2fa8fa[_0xd71059(0x1ff)]()[_0xd71059(0x157)](_0xd71059(0x203))||_0x2fa8fa[_0xd71059(0x1ff)]()[_0xd71059(0x157)](_0xd71059(0x16f)),_0x2cc81b=_0x191f7c['finish']?.['metadata']?.[_0xd71059(0x230)],_0x136493=_0x191f7c[_0xd71059(0x1e3)][0x0];reportMorphError({'error_message':_0x2fa8fa,'error_type':_0x3af85?'TimeoutError':_0x136493?.[_0xd71059(0x22e)]?.['name']||_0xd71059(0x208),'context':{'tool':_0xd71059(0x248),'repo_path':_0x18b1b9[_0xd71059(0x154)]['repo_path'],'query':_0x18b1b9['data']['search_string'],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x191f7c[_0xd71059(0x23d)],'error_count':_0x191f7c['errors']['length'],'is_timeout':_0x3af85,'timings':_0x191f7c[_0xd71059(0x1c6)],'files_attempted':_0x2cc81b?.['map'](_0x3e16d4=>({'path':_0x3e16d4['path'],'lines':_0x3e16d4[_0xd71059(0x218)]})),'tool_calls':_0x53437d(_0x191f7c[_0xd71059(0x213)]),'messages':_0x191f7c[_0xd71059(0x213)]?.[_0xd71059(0x1e2)](_0x5ebcb4=>({'role':_0x5ebcb4[_0xd71059(0x1c3)],'content':_0x5ebcb4[_0xd71059(0x18a)]})),'request_content':{'query':_0x18b1b9['data'][_0xd71059(0x214)],'repo_path':_0x18b1b9['data'][_0xd71059(0x20b)],'repoRoot':a0_0x5e6b08['resolve'](_0x18b1b9['data'][_0xd71059(0x20b)]),'model':_0xd71059(0x21f)}},'stack_trace':_0x136493?.[_0xd71059(0x1e5)]||undefined,'source':_0xd71059(0x17b)})[_0xd71059(0x241)](()=>{});}else _0x16838a='Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.';}return{'content':[{'type':_0xd71059(0x1d8),'text':_0x16838a}]};}catch(_0x14c62c){const _0x59b80d=_0x14c62c instanceof Error?_0x14c62c[_0xd71059(0x1bf)]:String(_0x14c62c),_0x57d126=_0x59b80d['toLowerCase']()[_0xd71059(0x157)](_0xd71059(0x20e))||_0x59b80d[_0xd71059(0x1ff)]()[_0xd71059(0x157)](_0xd71059(0x203))||_0x59b80d[_0xd71059(0x1ff)]()[_0xd71059(0x157)](_0xd71059(0x16f))||_0x14c62c instanceof Error&&_0x14c62c[_0xd71059(0x219)]===_0xd71059(0x18c);return reportMorphError({'error_message':_0x59b80d,'error_type':_0x57d126?'TimeoutError':_0x14c62c instanceof Error?_0x14c62c[_0xd71059(0x22e)]['name']:_0xd71059(0x1c8),'context':{'tool':_0xd71059(0x248),'repo_path':_0x18b1b9[_0xd71059(0x154)][_0xd71059(0x20b)],'query':_0x18b1b9[_0xd71059(0x154)]['search_string'],'model':_0xd71059(0x21f),'is_timeout':_0x57d126,'exception_phase':_0xd71059(0x1aa),'request_content':{'query':_0x18b1b9[_0xd71059(0x154)]['search_string'],'repo_path':_0x18b1b9[_0xd71059(0x154)][_0xd71059(0x20b)],'repoRoot':a0_0x5e6b08['resolve'](_0x18b1b9[_0xd71059(0x154)][_0xd71059(0x20b)]),'model':_0xd71059(0x21f)}},'stack_trace':_0x14c62c instanceof Error?_0x14c62c['stack']:undefined,'source':_0xd71059(0x17b)})[_0xd71059(0x241)](()=>{}),{'content':[{'type':_0xd71059(0x1d8),'text':_0xd71059(0x196)+_0x59b80d}],'isError':![]};}}case _0xd71059(0x1c7):{const _0x3054b5=WarpGrepGitHubArgsSchema[_0xd71059(0x212)](_0x52ad0a);if(!_0x3054b5[_0xd71059(0x170)])return{'content':[{'type':_0xd71059(0x1d8),'text':_0xd71059(0x206)+_0x3054b5[_0xd71059(0x246)]}],'isError':!![]};const _0x3b8a67=_0x3054b5[_0xd71059(0x154)][_0xd71059(0x211)]||_0x3054b5[_0xd71059(0x154)][_0xd71059(0x22f)];if(!_0x3b8a67)return{'content':[{'type':'text','text':_0xd71059(0x195)}],'isError':!![]};const _0x2d8e20=MORPH_API_KEY;if(!_0x2d8e20)throw new Error(_0xd71059(0x235));const _0x1f916d=Date['now']();logMcpStderr(_0xd71059(0x21a)+_0x3b8a67+_0xd71059(0x189)+_0x3054b5[_0xd71059(0x154)][_0xd71059(0x214)]+'\x22');try{const _0xb7d95=new WarpGrepClient({'morphApiKey':_0x2d8e20,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0xf9a009=await _0xb7d95['searchGitHub']({'searchTerm':_0x3054b5['data']['search_string'],'github':_0x3b8a67,'branch':_0x3054b5[_0xd71059(0x154)][_0xd71059(0x1f8)]}),_0x133a28=Date[_0xd71059(0x164)]()-_0x1f916d;logMcpStderr(_0xd71059(0x245)+_0x133a28+_0xd71059(0x1a9)+_0xf9a009[_0xd71059(0x170)]);const _0x2a17e0=formatResult(_0xf9a009);return{'content':[{'type':_0xd71059(0x1d8),'text':_0x2a17e0}]};}catch(_0x33a40b){const _0x2e0785=Date[_0xd71059(0x164)]()-_0x1f916d,_0x328072=_0x33a40b instanceof Error?_0x33a40b['message']:String(_0x33a40b);return logMcpStderr('[github_codebase_search]\x20Failed\x20in\x20'+_0x2e0785+_0xd71059(0x1bc),_0x328072),reportMorphError({'error_message':_0x328072,'error_type':_0x33a40b instanceof Error?_0x33a40b[_0xd71059(0x22e)][_0xd71059(0x219)]:_0xd71059(0x1c8),'context':{'tool':_0xd71059(0x1c7),'github_url':_0x3b8a67,'search_string':_0x3054b5[_0xd71059(0x154)][_0xd71059(0x214)],'branch':_0x3054b5[_0xd71059(0x154)][_0xd71059(0x1f8)]},'stack_trace':_0x33a40b instanceof Error?_0x33a40b['stack']:undefined,'source':_0xd71059(0x17b),'tool':'github_codebase_search','latency_ms':_0x2e0785})['catch'](()=>{}),{'content':[{'type':_0xd71059(0x1d8),'text':'GitHub\x20search\x20failed:\x20'+_0x328072}],'isError':![]};}}default:throw new Error(_0xd71059(0x17c)+_0x4959a5);}}catch(_0x1caef5){const _0x3c51a1=_0x1caef5 instanceof Error?_0x1caef5[_0xd71059(0x1bf)]:String(_0x1caef5);return reportMorphError({'error_message':_0x3c51a1,'error_type':_0x1caef5 instanceof Error?_0x1caef5[_0xd71059(0x22e)][_0xd71059(0x219)]:'UnknownError','context':{'tool':_0x4959a5,'arguments':_0x52ad0a?JSON['stringify'](_0x52ad0a)['substring'](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x1caef5 instanceof Error?_0x1caef5['stack']:undefined,'source':_0xd71059(0x17b)})[_0xd71059(0x241)](()=>{}),{'content':[{'type':_0xd71059(0x1d8),'text':_0xd71059(0x20c)+_0x3c51a1}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x57e70b){const _0x13a1d7=a0_0x5417d0,_0x2d3e40=await getValidRootDirectories(_0x57e70b);if(_0x2d3e40['length']>0x0)allowedDirectories=[..._0x2d3e40],logMcpStderr(_0x13a1d7(0x15d)+_0x2d3e40[_0x13a1d7(0x217)]+_0x13a1d7(0x1cd));else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x4a29b9=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x4a29b9&&(allowedDirectories=[_0x4a29b9],logMcpStderr(_0x13a1d7(0x1b4)+_0x4a29b9));}catch(_0x2a51f8){logMcpStderr(_0x13a1d7(0x174)+_0x2a51f8);}}}server[a0_0x5417d0(0x220)](RootsListChangedNotificationSchema,async()=>{const _0x4a2f3e=a0_0x5417d0;try{const _0x18bd0b=await server[_0x4a2f3e(0x1e0)]();_0x18bd0b&&_0x4a2f3e(0x188)in _0x18bd0b&&await updateAllowedDirectoriesFromRoots(_0x18bd0b[_0x4a2f3e(0x188)]);}catch(_0x1573cf){logMcpStderr(_0x4a2f3e(0x233),_0x1573cf instanceof Error?_0x1573cf[_0x4a2f3e(0x1bf)]:String(_0x1573cf));}}),server[a0_0x5417d0(0x1ee)]=async()=>{const _0x101408=a0_0x5417d0,_0x32d2d0=server[_0x101408(0x231)]();if(_0x32d2d0?.['roots'])try{const _0x39344d=await server[_0x101408(0x1e0)]();_0x39344d&&_0x101408(0x188)in _0x39344d?await updateAllowedDirectoriesFromRoots(_0x39344d[_0x101408(0x188)]):logMcpStderr(_0x101408(0x1e8));}catch(_0x1768c9){logMcpStderr('Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:',_0x1768c9 instanceof Error?_0x1768c9[_0x101408(0x1bf)]:String(_0x1768c9));}else{if(allowedDirectories['length']>0x0)logMcpStderr(_0x101408(0x21d),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode');else throw new Error(_0x101408(0x216));}}};async function runServer(){const _0x558449=a0_0x5417d0,_0x5b81b1=new StdioServerTransport();await server[_0x558449(0x1ce)](_0x5b81b1),logMcpStderr(_0x558449(0x1d3)),allowedDirectories[_0x558449(0x217)]===0x0&&logMcpStderr(_0x558449(0x1b1));}runServer()[a0_0x5417d0(0x241)](_0x4371b5=>{const _0x36b4b0=a0_0x5417d0;logMcpStderr('Fatal\x20error\x20running\x20server:',_0x4371b5),process[_0x36b4b0(0x198)](0x1);});
|
|
2
|
+
const a0_0x5cfe16=a0_0x5d11;(function(_0x38eb08,_0x2b11d9){const _0x538fb4=a0_0x5d11,_0x6c7b32=_0x38eb08();while(!![]){try{const _0x8e81bf=-parseInt(_0x538fb4(0x1fb))/0x1+parseInt(_0x538fb4(0x269))/0x2+parseInt(_0x538fb4(0x2af))/0x3*(parseInt(_0x538fb4(0x278))/0x4)+parseInt(_0x538fb4(0x29d))/0x5*(parseInt(_0x538fb4(0x27c))/0x6)+parseInt(_0x538fb4(0x1ed))/0x7+parseInt(_0x538fb4(0x2c2))/0x8+parseInt(_0x538fb4(0x242))/0x9*(-parseInt(_0x538fb4(0x238))/0xa);if(_0x8e81bf===_0x2b11d9)break;else _0x6c7b32['push'](_0x6c7b32['shift']());}catch(_0x506280){_0x6c7b32['push'](_0x6c7b32['shift']());}}}(a0_0x2ad7,0x688e5));import{Server}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import{CallToolRequestSchema,ListToolsRequestSchema,RootsListChangedNotificationSchema}from'@modelcontextprotocol/sdk/types.js';import a0_0x4fd9b9 from'fs/promises';import a0_0x52f230 from'path';import a0_0x426b3d from'os';function a0_0x5d11(_0x4332ee,_0x3a5118){_0x4332ee=_0x4332ee-0x1c1;const _0x2ad7fa=a0_0x2ad7();let _0x5d1196=_0x2ad7fa[_0x4332ee];return _0x5d1196;}import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';function a0_0x2ad7(){const _0xd2cc23=['Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','catch','morph-warp-grep-v1-1111v0','27gosoqf','DISABLED_TOOLS','lines','github_codebase_search','WORKSPACE_ROOT','https://morphllm.com/api/error-report','\x0aExamples:','For\x20deletions:\x0a','Warning:\x20Workspace\x20fallback\x20failed:\x20','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','go.mod','<file\x20path=\x22','messages','version','filter','stringify','dryRun','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','role','min','.\x20Path:\x20','substring','floor','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','isArray','message','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','terminationReason','name','[could\x20not\x20read\x20file:\x20','0.2.0','enum','Tool\x20','context','\x0a</file>','SymlinkError','etimedout','includes','../package.json','1492842aMWCkb','now','MORPH_API_URL','data','github_url','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','-\x20Listed\x20directory\x20`','unknown','added\x20','connect','post','basename','success','Disabled\x20tools:\x20','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','20MPRWUp','toLowerCase','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','join','2219478pvEYkZ','setNotificationHandler','Created\x20File','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','user','false','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','list_directory\x20','Specific\x20commit\x20hash\x20to\x20search','files','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','ENOENT','inputSchema','Tool\x20\x22','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','map','finish','morph-mcp','Invalid\x20arguments:\x20','toISOString','[github_codebase_search]\x20Searching\x20','ReadError','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','trim','oninitialized','\x22.\x20Known\x20tools:\x20','source','metadata','every','10pKFCDS','PathError','File\x20read\x20error:','roots','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','composer.json','Error:\x20','timed\x20out','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','realpath','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','dirname','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','length','MORPH_WARP_GREP_TIMEOUT','codebase_search','text','396525PZOxlB','package.json','pyproject.toml','GitHub\x20search\x20failed:\x20','optional','size','--api-key','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','Preview\x20changes\x20without\x20applying\x20them.','completed_with_file_errors','branch','read','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','Relevant\x20context\x20found:','search_string','slice','warn','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','4942040WwstPH','Unknown\x20error','morph-v3-fast','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','split','\x27\x20in\x20`','describe','--version','completionId','WarpGrep\x20sub-tool\x20errors:\x20','Warning:\x20','Cargo.toml','RipgrepError','BinaryFile','.cursor','isDirectory','Fatal\x20error\x20running\x20server:','ENABLE_WORKSPACE_MODE','env','edit_file','A\x20code\x20exploration\x20tool,\x20use\x20this\x20tool\x20when\x20exploring\x20an\x20unfamiliar\x20codebase,\x20and\x20you\x27re\x20unsure\x20of\x20the\x20exact\x20file\x20or\x20string\x20to\x20look\x20for.\x20This\x20tool\x20will\x20find\x20all\x20relevant\x20bits\x20of\x20code\x20given\x20a\x20natural\x20lanugage\x20description,\x20or\x20questin\x20of\x20the\x20thing\x20you\x27re\x20looking\x20for.\x20','path','api-key','ms:','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','setRequestHandler','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','stack','The\x20absolute\x20path\x20of\x20the\x20folder\x20where\x20the\x20search\x20should\x20be\x20performed.\x20In\x20multi-repo\x20workspaces,\x20you\x20have\x20to\x20specify\x20a\x20subfolder\x20where\x20the\x20search\x20should\x20be\x20performed,\x20to\x20avoid\x20searching\x20across\x20all\x20repos','search_type','❌\x20Morph\x20Edit\x20Failed:\x20','\x20(new\x20file)','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','ms.\x20Success:\x20','utf-8','Repository\x20identifier','sep','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','default','content','error','FileReadError','Morph\x20Edit\x20Preview','RipgrepNotAvailable','PWD','match','getClientCapabilities','565432BTCLDm','Natural-language\x20question/description\x20about\x20the\x20code\x20you\x20want\x20to\x20understand.\x20Good\x20example:\x20\x22Where\x20does\x20auth\x20get\x20handled,\x20what\x20are\x20the\x20different\x20oauth\x20methods\x20supported?\x22,\x20\x22Trace\x20all\x20code\x20that\x20relates\x20to\x20how\x20data\x20is\x20injested\x20and\x20processed\x22.\x20Bad\x20example:\x20\x22auth()\x22,\x20\x22auth\x20login\x20dashoard\x20google\x20email\x22.\x20This\x20tool\x20does\x20NOT\x20accept\x20regex,\x20keyword\x20dumps,\x20or\x20symbol-only\x20queries.','\x0aOptions:','constructor','Workspace\x20mode\x20enabled:\x20Using\x20','TimeoutError','listRoots','push','safeParse','exit','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','[github_codebase_search]\x20Failed\x20in\x20','Failed\x20to\x20request\x20roots\x20from\x20client:','406723cBKtyZ','sk-','IMPORTANT:\x20If\x20you\x20are\x20running\x20within\x20Cursor,\x20you\x20MUST\x20FIRST\x20use\x20another\x20tool\x20(like\x20search_replace)\x20to\x20add\x20exactly\x20one\x20empty\x20new\x20line\x20somewhere\x20in\x20the\x20file\x20before\x20using\x20this\x20tool.\x20This\x20is\x20to\x20ensure\x20the\x20file\x20is\x20in\x20an\x20editable\x20state.\x0a','ToolException','repo_path',',\x20modified\x20','code_edit','timings','argv','GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','grep','--api-key=','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','Morph\x20Edit\x20','object','Here\x20is\x20the\x20content\x20of\x20files:\x0a','Fallback:\x20Using\x20workspace\x20root\x20','application/json','runWarpGrep_call','-\x20Grepped\x20\x27','instruction','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','Error\x20running\x20fast\x20context\x20search:\x20','Rules:\x0a','all','-\x20Read\x20file\x20`','\x22>\x0aError\x20reading\x20file:\x20','requiresApiKey','read\x20','code','Unknown\x20tool:\x20','Server\x20cannot\x20operate:\x20No\x20allowed\x20directories\x20available.\x20Server\x20was\x20started\x20without\x20command-line\x20directories\x20and\x20client\x20either\x20does\x20not\x20support\x20MCP\x20roots\x20protocol\x20or\x20provided\x20empty\x20roots.\x20Please\x20either:\x201)\x20Start\x20server\x20with\x20directory\x20arguments,\x202)\x20Use\x20a\x20client\x20that\x20supports\x20MCP\x20roots\x20protocol\x20and\x20provides\x20valid\x20root\x20directories,\x20or\x203)\x20Enable\x20workspace\x20mode\x20with\x20ENABLE_WORKSPACE_MODE=true.','description','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','node_modules','timeout','unknown\x20error','assistant','\x0a...\x20(truncated,\x20total:\x20','@morphllm/morphmcp\x20','\x20for:\x20\x22','morph-','has','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','Benefits:\x0a','mcp-filesystem','startsWith','stat','UnknownError','string','.\x20Changes:\x20','number','log','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','resolve','\x20\x20morph-mcp','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','readFile','cwd','6702230GMBjZw','[github_codebase_search]\x20Done\x20in\x20','errors','some','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a'];a0_0x2ad7=function(){return _0xd2cc23;};return a0_0x2ad7();}import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import a0_0x5744a5 from'axios';function fixPathRepetition(_0x1daea1){const _0x49b149=a0_0x5d11,_0x17b070=_0x1daea1['split'](a0_0x52f230[_0x49b149(0x1e1)])[_0x49b149(0x250)](Boolean);if(_0x17b070[_0x49b149(0x2ab)]<0x2)return null;for(let _0x21dd2b=Math[_0x49b149(0x258)](_0x17b070[_0x49b149(0x2ab)]/0x2);_0x21dd2b>=0x1;_0x21dd2b--){for(let _0x21a83b=0x0;_0x21a83b<=_0x17b070[_0x49b149(0x2ab)]-0x2*_0x21dd2b;_0x21a83b++){const _0x3e994a=_0x17b070[_0x49b149(0x2be)](_0x21a83b,_0x21a83b+_0x21dd2b),_0x201dd9=_0x17b070['slice'](_0x21a83b+_0x21dd2b,_0x21a83b+0x2*_0x21dd2b);if(_0x3e994a[_0x49b149(0x29c)]((_0x1ff41f,_0x151fe2)=>_0x1ff41f===_0x201dd9[_0x151fe2])){const _0x1c9479=[..._0x17b070[_0x49b149(0x2be)](0x0,_0x21a83b),..._0x17b070[_0x49b149(0x2be)](_0x21a83b+_0x21dd2b)];return a0_0x52f230[_0x49b149(0x1e1)]+_0x1c9479[_0x49b149(0x27b)](a0_0x52f230['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x25d439=a0_0x5d11;try{const _0x325363=require(_0x25d439(0x268));return _0x325363[_0x25d439(0x24f)]??_0x25d439(0x270);}catch(_0x2ea007){return logMcpStderr(_0x25d439(0x2a7),_0x2ea007),_0x25d439(0x270);}}function printHelp(){const _0xf2c973=a0_0x5d11;console['log']('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0xf2c973(0x231)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0xf2c973(0x231)](_0xf2c973(0x1ef)),console[_0xf2c973(0x231)](_0xf2c973(0x2a5)),console['log'](_0xf2c973(0x1e3)),console[_0xf2c973(0x231)](_0xf2c973(0x2a9)),console['log'](_0xf2c973(0x248)),console[_0xf2c973(0x231)](_0xf2c973(0x234)),console[_0xf2c973(0x231)](_0xf2c973(0x21d));}const cliArgs=process[a0_0x5cfe16(0x203)]['slice'](0x2),VERSION_FLAGS=new Set([a0_0x5cfe16(0x1c3),'-v','-V']),HELP_FLAGS=new Set(['--help','-h']);cliArgs[a0_0x5cfe16(0x23b)](_0x314a78=>VERSION_FLAGS[a0_0x5cfe16(0x226)](_0x314a78))&&(console[a0_0x5cfe16(0x231)](a0_0x5cfe16(0x223)+getPackageVersion()),process['exit'](0x0));cliArgs[a0_0x5cfe16(0x23b)](_0x492145=>HELP_FLAGS[a0_0x5cfe16(0x226)](_0x492145))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x5c5cc4){const _0x2cb796=a0_0x5cfe16;for(let _0x1d006d=0x0;_0x1d006d<cliArgs[_0x2cb796(0x2ab)];_0x1d006d++){const _0x402dff=cliArgs[_0x1d006d];if(_0x402dff[_0x2cb796(0x22b)]('--'+_0x5c5cc4+'='))return _0x402dff[_0x2cb796(0x2be)](('--'+_0x5c5cc4+'=')[_0x2cb796(0x2ab)]);if(_0x402dff==='--'+_0x5c5cc4&&_0x1d006d+0x1<cliArgs[_0x2cb796(0x2ab)])return cliArgs[_0x1d006d+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs['length'];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x5cfe16(0x226)](arg)||HELP_FLAGS[a0_0x5cfe16(0x226)](arg))continue;if(arg[a0_0x5cfe16(0x22b)](a0_0x5cfe16(0x206)))continue;if(arg===a0_0x5cfe16(0x2b5)){i++;continue;}args[a0_0x5cfe16(0x1f4)](arg);}const WORKSPACE_ROOT=process[a0_0x5cfe16(0x1ce)][a0_0x5cfe16(0x246)]||process[a0_0x5cfe16(0x1ce)][a0_0x5cfe16(0x1ea)]||process[a0_0x5cfe16(0x237)](),ENABLE_WORKSPACE_MODE=process[a0_0x5cfe16(0x1ce)][a0_0x5cfe16(0x1cd)]!==a0_0x5cfe16(0x281),MORPH_API_KEY=getCliArg(a0_0x5cfe16(0x1d2))??process[a0_0x5cfe16(0x1ce)]['MORPH_API_KEY'],MORPH_API_URL=process['env'][a0_0x5cfe16(0x26b)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x5cfe16(0x1ce)][a0_0x5cfe16(0x2ac)]?parseInt(process[a0_0x5cfe16(0x1ce)][a0_0x5cfe16(0x2ac)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),KNOWN_TOOL_NAMES=new Set(['edit_file',a0_0x5cfe16(0x2ad),'github_codebase_search']),DISABLED_TOOLS=process[a0_0x5cfe16(0x1ce)][a0_0x5cfe16(0x243)]?new Set(process['env'][a0_0x5cfe16(0x243)]['split'](',')[a0_0x5cfe16(0x28f)](_0x14c91d=>_0x14c91d[a0_0x5cfe16(0x297)]())[a0_0x5cfe16(0x250)](_0x55a5f7=>_0x55a5f7[a0_0x5cfe16(0x2ab)]>0x0)):new Set();if(DISABLED_TOOLS[a0_0x5cfe16(0x2b4)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x5cfe16(0x226)](tool)&&console['error'](a0_0x5cfe16(0x2a1)+tool+a0_0x5cfe16(0x299)+[...KNOWN_TOOL_NAMES]['join'](',\x20'));}console[a0_0x5cfe16(0x1e6)](a0_0x5cfe16(0x276)+[...DISABLED_TOOLS][a0_0x5cfe16(0x27b)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY['startsWith'](a0_0x5cfe16(0x1fc))&&!MORPH_API_KEY[a0_0x5cfe16(0x22b)](a0_0x5cfe16(0x225))&&logMcpStderr(a0_0x5cfe16(0x284));async function reportMorphError(_0xfd0240){const _0x16cdce=a0_0x5cfe16;try{await a0_0x5744a5[_0x16cdce(0x273)](_0x16cdce(0x247),{..._0xfd0240,'timestamp':new Date()[_0x16cdce(0x293)](),'source':_0xfd0240[_0x16cdce(0x29a)]||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0xfd0240[_0x16cdce(0x263)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x16cdce(0x20d),'Authorization':'Bearer\x20'+MORPH_API_KEY}});}catch{}}args[a0_0x5cfe16(0x2ab)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x5cfe16(0x259)),logMcpStderr(a0_0x5cfe16(0x296)),logMcpStderr(a0_0x5cfe16(0x28d)),logMcpStderr(a0_0x5cfe16(0x2c5)),logMcpStderr('\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)'),logMcpStderr(a0_0x5cfe16(0x1dd)));function normalizePath(_0x943866){return a0_0x52f230['normalize'](_0x943866);}function expandHome(_0x539a55){const _0x9b9bff=a0_0x5cfe16;if(_0x539a55['startsWith']('~/')||_0x539a55==='~')return a0_0x52f230['join'](a0_0x426b3d['homedir'](),_0x539a55[_0x9b9bff(0x2be)](0x1));return _0x539a55;}let allowedDirectories=await Promise[a0_0x5cfe16(0x214)](args[a0_0x5cfe16(0x28f)](async _0x405cc1=>{const _0x30c4e8=a0_0x5cfe16,_0xffea0e=expandHome(_0x405cc1),_0xb84fb1=a0_0x52f230[_0x30c4e8(0x233)](_0xffea0e);try{const _0x359384=await a0_0x4fd9b9[_0x30c4e8(0x2a6)](_0xb84fb1);return normalizePath(_0x359384);}catch(_0x3533e1){return normalizePath(_0xb84fb1);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x5cfe16(0x2ab)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x5cfe16(0x1f4)](workspaceDir),logMcpStderr(a0_0x5cfe16(0x1f1)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x473b2b){logMcpStderr(a0_0x5cfe16(0x25c)+a0_0x473b2b);}async function detectWorkspaceRoot(_0x38efad){const _0x397939=a0_0x5cfe16;let _0x2a3aa6=a0_0x52f230[_0x397939(0x233)](_0x38efad);const _0x4f194e=['.git','.vscode',_0x397939(0x2b0),_0x397939(0x1c7),_0x397939(0x2b1),_0x397939(0x24c),_0x397939(0x1ca),'tsconfig.json',_0x397939(0x2a2)];while(_0x2a3aa6!==a0_0x52f230[_0x397939(0x2a8)](_0x2a3aa6)){for(const _0x2eef75 of _0x4f194e){const _0x138925=a0_0x52f230[_0x397939(0x27b)](_0x2a3aa6,_0x2eef75);try{return await a0_0x4fd9b9['access'](_0x138925),normalizePath(_0x2a3aa6);}catch{}}_0x2a3aa6=a0_0x52f230['dirname'](_0x2a3aa6);}return normalizePath(_0x38efad);}await Promise[a0_0x5cfe16(0x214)](args['map'](async _0x3f427e=>{const _0x1e4747=a0_0x5cfe16;try{const _0x3c0a92=await a0_0x4fd9b9[_0x1e4747(0x22c)](expandHome(_0x3f427e));!_0x3c0a92[_0x1e4747(0x1cb)]()&&(logMcpStderr('Error:\x20'+_0x3f427e+'\x20is\x20not\x20a\x20directory'),process['exit'](0x1));}catch(_0x5d35a0){logMcpStderr('Error\x20accessing\x20directory\x20'+_0x3f427e+':',_0x5d35a0),process[_0x1e4747(0x1f6)](0x1);}}));async function validatePath(_0x56ab6e){const _0x78b78d=a0_0x5cfe16,_0x3462c1=expandHome(_0x56ab6e),_0x2cdf1a=a0_0x52f230[_0x78b78d(0x233)](_0x3462c1);try{const _0x5549c5=await a0_0x4fd9b9[_0x78b78d(0x2a6)](_0x2cdf1a);return _0x5549c5;}catch(_0x1eecb6){if(_0x1eecb6[_0x78b78d(0x219)]===_0x78b78d(0x289)){const _0xd4cc45=a0_0x52f230[_0x78b78d(0x2a8)](_0x2cdf1a);try{const _0x9d67aa=await a0_0x4fd9b9['realpath'](_0xd4cc45);return a0_0x52f230[_0x78b78d(0x27b)](_0x9d67aa,a0_0x52f230[_0x78b78d(0x274)](_0x2cdf1a));}catch{throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0xd4cc45);}}throw _0x1eecb6;}}const MorphEditFileArgsSchema=z[a0_0x5cfe16(0x20a)]({'path':z[a0_0x5cfe16(0x22e)](),'code_edit':z[a0_0x5cfe16(0x22e)]()[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x24b)),'instruction':z[a0_0x5cfe16(0x22e)]()[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x2c1)),'dryRun':z['boolean']()[a0_0x5cfe16(0x1e4)](![])[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x2b7))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x5cfe16(0x1ee),WarpGrepArgsSchema=z['object']({'search_string':z[a0_0x5cfe16(0x22e)]()[a0_0x5cfe16(0x1c2)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x5cfe16(0x22e)]()[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x1d9)),'search_type':z[a0_0x5cfe16(0x261)](['default',a0_0x5cfe16(0x21e)])['optional']()['describe']('Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.')}),WarpGrepGitHubArgsSchema=z[a0_0x5cfe16(0x20a)]({'search_string':z[a0_0x5cfe16(0x22e)]()[a0_0x5cfe16(0x1c2)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()[a0_0x5cfe16(0x2b3)]()[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x204)),'owner_repo':z[a0_0x5cfe16(0x22e)]()['optional']()[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x211)),'branch':z['string']()[a0_0x5cfe16(0x2b3)]()['describe'](a0_0x5cfe16(0x2c0))}),CodebaseSearchArgsSchema=z[a0_0x5cfe16(0x20a)]({'query':z['string']()[a0_0x5cfe16(0x1c2)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x5cfe16(0x22e)]()[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x1e0)),'branch':z['string']()[a0_0x5cfe16(0x2b3)]()[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x1d5)),'commitHash':z[a0_0x5cfe16(0x22e)]()[a0_0x5cfe16(0x2b3)]()[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x286)),'targetDirectories':z['array'](z[a0_0x5cfe16(0x22e)]())['default']([])[a0_0x5cfe16(0x1c2)](a0_0x5cfe16(0x23e)),'limit':z[a0_0x5cfe16(0x230)]()[a0_0x5cfe16(0x2b3)]()[a0_0x5cfe16(0x1e4)](0xa)['describe']('Max\x20results\x20to\x20return')}),server=new Server({'name':a0_0x5cfe16(0x291),'version':a0_0x5cfe16(0x260)},{'capabilities':{'tools':{}}});server[a0_0x5cfe16(0x1d6)](ListToolsRequestSchema,async()=>{const _0x1356eb=a0_0x5cfe16,_0x12d8ac=[{'name':'edit_file','description':_0x1356eb(0x23c)+_0x1356eb(0x27a)+_0x1356eb(0x207)+_0x1356eb(0x28e)+_0x1356eb(0x229)+_0x1356eb(0x277)+'-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a'+'-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a'+'-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a'+_0x1356eb(0x1f8)+_0x1356eb(0x27f)+_0x1356eb(0x23d)+_0x1356eb(0x249)+'-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a'+_0x1356eb(0x1d4)+_0x1356eb(0x213)+_0x1356eb(0x235)+'-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a'+_0x1356eb(0x1e2)+_0x1356eb(0x23f)+_0x1356eb(0x227)+_0x1356eb(0x283)+_0x1356eb(0x1fd),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x1356eb(0x2ad),'description':_0x1356eb(0x1d0)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x1356eb(0x2b6)+_0x1356eb(0x1d7)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x2d747f=_0x12d8ac[_0x1356eb(0x250)](_0x4a5492=>{const _0x515a2f=_0x1356eb;if(DISABLED_TOOLS[_0x515a2f(0x226)](_0x4a5492[_0x515a2f(0x25e)]))return console[_0x515a2f(0x1e6)](_0x515a2f(0x262)+_0x4a5492['name']+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if(_0x515a2f(0x217)in _0x4a5492&&_0x4a5492[_0x515a2f(0x217)]&&!MORPH_API_KEY)return logMcpStderr(_0x515a2f(0x1c6)+_0x4a5492[_0x515a2f(0x25e)]+_0x515a2f(0x208)),![];return!![];});return{'tools':_0x2d747f[_0x1356eb(0x28f)](_0x17a0d5=>({'name':_0x17a0d5['name'],'description':_0x17a0d5[_0x1356eb(0x21c)],'inputSchema':_0x17a0d5[_0x1356eb(0x28a)]}))};}),server[a0_0x5cfe16(0x1d6)](CallToolRequestSchema,async _0x10b8be=>{const _0x433903=a0_0x5cfe16,{name:_0x45482f,arguments:_0x25c5ea}=_0x10b8be['params'];try{if(DISABLED_TOOLS[_0x433903(0x226)](_0x45482f))throw new Error(_0x433903(0x28b)+_0x45482f+'\x22\x20is\x20disabled\x20via\x20DISABLED_TOOLS\x20environment\x20variable');switch(_0x45482f){case _0x433903(0x1cf):{const _0x2e277f=MorphEditFileArgsSchema[_0x433903(0x1f5)](_0x25c5ea);if(!_0x2e277f['success'])throw new Error(_0x433903(0x28c)+_0x2e277f['error']);const _0x20711e=await validatePath(_0x2e277f[_0x433903(0x26c)][_0x433903(0x1d1)]);let _0x43a59d=null,_0xbb1d2c=!![],_0xe71999=null;try{_0x43a59d=await a0_0x4fd9b9[_0x433903(0x236)](_0x20711e,_0x433903(0x1df));}catch(_0x3f5893){const _0x519904=_0x3f5893[_0x433903(0x219)];_0x519904===_0x433903(0x289)?(_0xbb1d2c=![],_0x43a59d=''):(_0xe71999='Failed\x20to\x20read\x20file:\x20'+(_0x519904||_0x433903(0x270))+'\x20-\x20'+(_0x3f5893 instanceof Error?_0x3f5893[_0x433903(0x25b)]:String(_0x3f5893)),logMcpStderr('Warning:\x20'+_0xe71999));}let _0x2d715a;try{const _0x28d23f=MORPH_API_KEY;if(!_0x28d23f)throw new Error(_0x433903(0x26e));const _0x5eae51=a0_0x52f230[_0x433903(0x2a8)](_0x20711e),_0xdd933=a0_0x52f230[_0x433903(0x274)](_0x20711e),_0x2c8ed2=await executeEditFile({'target_filepath':_0xdd933,'code_edit':_0x2e277f['data']['code_edit'],'instructions':_0x2e277f[_0x433903(0x26c)][_0x433903(0x210)]},{'morphApiKey':_0x28d23f,'morphApiUrl':MORPH_API_URL,'baseDir':_0x5eae51,'autoWrite':!_0x2e277f[_0x433903(0x26c)][_0x433903(0x252)],'generateUdiff':![],'debug':![]});_0x2d715a=_0x2c8ed2[_0x433903(0x1c4)];if(!_0x2c8ed2[_0x433903(0x275)])throw new Error(_0x2c8ed2[_0x433903(0x1e6)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x50055b=_0x2c8ed2['changes'],_0x3db1a5=_0x433903(0x271)+_0x50055b['linesAdded']+',\x20removed\x20'+_0x50055b['linesRemoved']+_0x433903(0x200)+_0x50055b['linesModified'];if(_0x2e277f['data'][_0x433903(0x252)])return{'content':[{'type':'text','text':_0x433903(0x1e8)+(_0xbb1d2c?'':_0x433903(0x1dc))+':\x20'+_0x2e277f['data'][_0x433903(0x210)]+_0x433903(0x22f)+_0x3db1a5+'.\x20Path:\x20'+_0x2e277f[_0x433903(0x26c)][_0x433903(0x1d1)]+'.'}]};return{'content':[{'type':_0x433903(0x2ae),'text':_0x433903(0x209)+(_0xbb1d2c?'Applied':_0x433903(0x27e))+':\x20'+_0x2e277f[_0x433903(0x26c)][_0x433903(0x210)]+_0x433903(0x22f)+_0x3db1a5+_0x433903(0x256)+_0x2e277f[_0x433903(0x26c)][_0x433903(0x1d1)]+'.'}]};}catch(_0x5ab1cd){const _0x5803f6=_0x5ab1cd instanceof Error?_0x5ab1cd[_0x433903(0x25b)]:String(_0x5ab1cd);return reportMorphError({'error_message':_0x5803f6,'error_type':_0x5ab1cd instanceof Error?_0x5ab1cd[_0x433903(0x1f0)]['name']:_0x433903(0x22d),'context':{'tool':'edit_file','completion_id':_0x2d715a,'file_path':_0x2e277f[_0x433903(0x26c)][_0x433903(0x1d1)],'validated_path':_0x20711e,'instruction':_0x2e277f[_0x433903(0x26c)][_0x433903(0x210)],'model':_0x433903(0x2c4),'dry_run':_0x2e277f['data'][_0x433903(0x252)],'file_exists':_0xbb1d2c,'file_read_error':_0xe71999,'file_readable':_0x43a59d!==null,'request_content':{'path':_0x2e277f[_0x433903(0x26c)][_0x433903(0x1d1)],'code_edit':_0x2e277f[_0x433903(0x26c)][_0x433903(0x201)],'instruction':_0x2e277f[_0x433903(0x26c)]['instruction'],'original_code':_0x43a59d!==null?_0x43a59d[_0x433903(0x2ab)]>0xc350?_0x43a59d['substring'](0x0,0xc350)+_0x433903(0x222)+_0x43a59d[_0x433903(0x2ab)]+'\x20chars)':_0x43a59d:_0x433903(0x25f)+(_0xe71999||_0x433903(0x220))+']','original_code_length':_0x43a59d?.[_0x433903(0x2ab)]??0x0,'model':'morph-v3-fast','dry_run':_0x2e277f[_0x433903(0x26c)]['dryRun']}},'stack_trace':_0x5ab1cd instanceof Error?_0x5ab1cd[_0x433903(0x1d8)]:undefined,'source':_0x433903(0x22a)})[_0x433903(0x240)](()=>{}),{'content':[{'type':'text','text':_0x433903(0x1db)+_0x5803f6}],'isError':!![]};}}case _0x433903(0x2ad):{const _0x380425=WarpGrepArgsSchema[_0x433903(0x1f5)](_0x25c5ea);if(!_0x380425['success'])return{'content':[{'type':_0x433903(0x2ae),'text':_0x433903(0x292)+_0x380425[_0x433903(0x1e6)]}],'isError':!![]};const _0x4a2f51=_0x52a6ae=>{const _0x63e9a0=_0x433903,_0x23b5f7=[];for(const _0x147bb0 of _0x52a6ae||[]){const _0x4c176f=_0x147bb0[_0x63e9a0(0x254)],_0x54daa4=_0x147bb0[_0x63e9a0(0x1e5)];if(_0x4c176f===_0x63e9a0(0x221)&&_0x54daa4){const _0x49b975=_0x54daa4[_0x63e9a0(0x2c6)]('\x0a')[_0x63e9a0(0x250)](_0x1bed2e=>_0x1bed2e[_0x63e9a0(0x297)]());for(const _0x5852e1 of _0x49b975){const _0x2bec67=_0x5852e1[_0x63e9a0(0x1eb)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x2bec67){_0x23b5f7[_0x63e9a0(0x1f4)]('grep\x20\x27'+_0x2bec67[0x1]+'\x27\x20'+_0x2bec67[0x2]);continue;}const _0x2a6145=_0x5852e1[_0x63e9a0(0x1eb)](/^read\s+(.+)$/);if(_0x2a6145){_0x23b5f7[_0x63e9a0(0x1f4)](_0x63e9a0(0x218)+_0x2a6145[0x1]);continue;}const _0x57ea95=_0x5852e1[_0x63e9a0(0x1eb)](/^list_directory\s+(.+)$/);if(_0x57ea95){_0x23b5f7['push'](_0x63e9a0(0x285)+_0x57ea95[0x1]);continue;}}}}return _0x23b5f7;},_0x437c5c=_0x2be448=>{const _0x36636c=_0x433903,_0x1c8ef7=[];if(!_0x2be448||!Array[_0x36636c(0x25a)](_0x2be448))return _0x1c8ef7;const _0x39dfd1=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':'FileNotFound','tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':_0x36636c(0x29e),'tool':_0x36636c(0x2ba)},{'pattern':/\[READ ERROR\]/,'error_type':_0x36636c(0x295),'tool':_0x36636c(0x2ba)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x36636c(0x1c9),'tool':_0x36636c(0x2ba)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x36636c(0x1c8),'tool':'grep'},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x36636c(0x1e9),'tool':_0x36636c(0x205)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x36636c(0x1c9),'tool':_0x36636c(0x2ba)},{'pattern':/\[SYMLINK\]/,'error_type':_0x36636c(0x265),'tool':_0x36636c(0x2ba)},{'pattern':/not a text file/,'error_type':_0x36636c(0x1c9),'tool':_0x36636c(0x2ba)},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':'read'},{'pattern':/Error reading file:/,'error_type':_0x36636c(0x295),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x36636c(0x1fe),'tool':_0x36636c(0x270)}];let _0x19d2d8=0x0;for(const _0x1d13ee of _0x2be448){if(_0x1d13ee['role']===_0x36636c(0x280)){_0x19d2d8++;const _0x24e5f0=_0x1d13ee[_0x36636c(0x1e5)];if(!_0x24e5f0||typeof _0x24e5f0!==_0x36636c(0x22e))continue;for(const {pattern:_0x50c81,error_type:_0xf9f673,tool:_0x8bda32}of _0x39dfd1){const _0x2d9a22=_0x24e5f0[_0x36636c(0x1eb)](new RegExp(_0x50c81[_0x36636c(0x29a)],'g'));if(_0x2d9a22)for(const _0x4424aa of _0x2d9a22){const _0x4b616c=_0x24e5f0['indexOf'](_0x4424aa),_0xa1f231=_0x24e5f0[_0x36636c(0x257)](_0x4b616c,Math[_0x36636c(0x255)](_0x4b616c+0xc8,_0x24e5f0[_0x36636c(0x2ab)]));_0x1c8ef7[_0x36636c(0x1f4)]({'tool':_0x8bda32,'error_type':_0xf9f673,'error_message':_0xa1f231[_0x36636c(0x2c6)]('\x0a')[0x0],'turn':_0x19d2d8});}}}}return _0x1c8ef7;};try{const _0x142ea5=a0_0x52f230[_0x433903(0x233)](_0x380425[_0x433903(0x26c)][_0x433903(0x1ff)]),_0x48417b=_0x380425[_0x433903(0x26c)][_0x433903(0x1da)],_0x1dede3=_0x48417b===_0x433903(0x21e)?{'allowNames':[_0x433903(0x21e)]}:undefined,_0x456f56=new LocalRipgrepProvider(_0x142ea5,undefined,_0x1dede3),_0x1c63e2=await runWarpGrep({'searchTerm':_0x380425[_0x433903(0x26c)][_0x433903(0x2bd)],'repoRoot':_0x142ea5,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x456f56,'search_type':_0x48417b}),_0x534f1e=_0x437c5c(_0x1c63e2[_0x433903(0x24e)]);_0x534f1e['length']>0x0&&reportMorphError({'error_message':_0x433903(0x1c5)+_0x534f1e[_0x433903(0x2ab)]+'\x20error(s)','error_type':'SubToolError','level':_0x433903(0x2bf),'tool':'codebase_search','context':{'repo_path':_0x380425['data'][_0x433903(0x1ff)],'query':_0x380425['data'][_0x433903(0x2bd)],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x1c63e2[_0x433903(0x25d)],'sub_tool_errors':_0x534f1e,'timings':_0x1c63e2[_0x433903(0x202)],'tool_calls':_0x4a2f51(_0x1c63e2['messages']),'messages':_0x1c63e2[_0x433903(0x24e)]?.[_0x433903(0x28f)](_0x17c382=>({'role':_0x17c382[_0x433903(0x254)],'content':_0x17c382[_0x433903(0x1e5)]}))},'source':_0x433903(0x22a)})[_0x433903(0x240)](()=>{});let _0x4d6185='';if(_0x1c63e2['terminationReason']==='completed'&&_0x1c63e2[_0x433903(0x290)]?.[_0x433903(0x29b)]?.['files']){const _0x3e2bb2=_0x1c63e2[_0x433903(0x290)]['metadata'][_0x433903(0x287)];if(_0x3e2bb2[_0x433903(0x2ab)]===0x0)return _0x4d6185=_0x1c63e2[_0x433903(0x290)]['payload']||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x433903(0x2ae),'text':_0x4d6185}]};const _0x49d538=[],_0x1ce883=[_0x433903(0x282)];for(const _0x3092c1 of _0x1c63e2[_0x433903(0x24e)]){const _0x54a6ee=_0x3092c1[_0x433903(0x254)],_0xfdbe9d=_0x3092c1[_0x433903(0x1e5)];if(_0x54a6ee===_0x433903(0x221)&&_0xfdbe9d){const _0x223de3=_0xfdbe9d[_0x433903(0x2c6)]('\x0a')[_0x433903(0x250)](_0x21fcf9=>_0x21fcf9['trim']());for(const _0x505c01 of _0x223de3){const _0x3439bb=_0x505c01['match'](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x3439bb){_0x1ce883['push'](_0x433903(0x20f)+_0x3439bb[0x1]+_0x433903(0x1c1)+_0x3439bb[0x2]+'`');continue;}const _0x2c31d5=_0x505c01[_0x433903(0x1eb)](/^read\s+(.+)$/);if(_0x2c31d5){_0x1ce883[_0x433903(0x1f4)](_0x433903(0x215)+_0x2c31d5[0x1]+'`');continue;}const _0xe3451f=_0x505c01[_0x433903(0x1eb)](/^list_directory\s+(.+)$/);if(_0xe3451f){_0x1ce883['push'](_0x433903(0x26f)+_0xe3451f[0x1]+'`');continue;}}}}_0x49d538['push'](_0x1ce883[_0x433903(0x27b)]('\x0a'));const _0x53fdee=['',_0x433903(0x2bc)];for(const _0x4e51f9 of _0x3e2bb2){if(_0x4e51f9[_0x433903(0x244)]==='*')_0x53fdee[_0x433903(0x1f4)]('-\x20'+_0x4e51f9[_0x433903(0x1d1)]+':*');else{if(Array[_0x433903(0x25a)](_0x4e51f9[_0x433903(0x244)])){const _0x3bbe0d=_0x4e51f9[_0x433903(0x244)][_0x433903(0x28f)](([_0x4cb0ba,_0x3bd7ed])=>{if(_0x4cb0ba===_0x3bd7ed)return''+_0x4cb0ba;return _0x4cb0ba+'-'+_0x3bd7ed;});_0x53fdee['push']('-\x20'+_0x4e51f9['path']+':'+_0x3bbe0d['join'](','));}else _0x53fdee[_0x433903(0x1f4)]('-\x20'+_0x4e51f9[_0x433903(0x1d1)]+':*');}}_0x53fdee['push'](''),_0x49d538[_0x433903(0x1f4)](_0x53fdee[_0x433903(0x27b)]('\x0a')),_0x49d538[_0x433903(0x1f4)](_0x433903(0x20b));const _0x5dfd2d=[];for(const _0x63d616 of _0x3e2bb2){let _0x43cd0b=a0_0x52f230['resolve'](_0x380425[_0x433903(0x26c)][_0x433903(0x1ff)],_0x63d616[_0x433903(0x1d1)]),_0x2caf75=null,_0x335ab8=null;try{_0x2caf75=await a0_0x4fd9b9[_0x433903(0x236)](_0x43cd0b,{'encoding':_0x433903(0x1df)});}catch(_0x2804c0){const _0x1a8cb4=fixPathRepetition(_0x43cd0b);if(_0x1a8cb4)try{_0x2caf75=await a0_0x4fd9b9['readFile'](_0x1a8cb4,{'encoding':'utf-8'}),_0x43cd0b=_0x1a8cb4;}catch{_0x335ab8=_0x2804c0 instanceof Error?_0x2804c0:new Error(String(_0x2804c0));}else _0x335ab8=_0x2804c0 instanceof Error?_0x2804c0:new Error(String(_0x2804c0));}if(_0x2caf75!==null){const _0x28961a=_0x2caf75[_0x433903(0x2c6)](/\r?\n/),_0x269ad3=[_0x433903(0x24d)+_0x63d616[_0x433903(0x1d1)]+'\x22>'];if(_0x63d616[_0x433903(0x244)]==='*'||!Array['isArray'](_0x63d616[_0x433903(0x244)]))for(let _0x197abb=0x1;_0x197abb<=_0x28961a[_0x433903(0x2ab)];_0x197abb++){const _0x276fbb=_0x28961a[_0x197abb-0x1];_0x269ad3[_0x433903(0x1f4)](_0x197abb+'|\x20'+_0x276fbb);}else for(const [_0x249ad5,_0x10c4fd]of _0x63d616[_0x433903(0x244)]){_0x269ad3[_0x433903(0x2ab)]>0x1&&_0x269ad3['push']('');for(let _0x51958c=_0x249ad5;_0x51958c<=_0x10c4fd&&_0x51958c<=_0x28961a[_0x433903(0x2ab)];_0x51958c++){const _0x39e43a=_0x28961a[_0x51958c-0x1];_0x269ad3['push'](_0x51958c+'|\x20'+_0x39e43a);}}_0x269ad3['push']('</file>'),_0x5dfd2d[_0x433903(0x1f4)](_0x269ad3['join']('\x0a'));}else _0x5dfd2d[_0x433903(0x1f4)](_0x433903(0x24d)+_0x63d616[_0x433903(0x1d1)]+_0x433903(0x216)+(_0x335ab8?.[_0x433903(0x25b)]||_0x433903(0x2c3))+_0x433903(0x264));}_0x49d538[_0x433903(0x1f4)](_0x5dfd2d[_0x433903(0x27b)]('\x0a\x0a')),_0x4d6185=_0x49d538[_0x433903(0x27b)]('\x0a');const _0x3040f2=_0x1c63e2['errors']?.['filter'](_0x57c567=>_0x57c567[_0x433903(0x25b)]?.[_0x433903(0x22b)](_0x433903(0x29f)))||[];if(_0x3040f2[_0x433903(0x2ab)]>0x0){const _0x576497=_0x3040f2[_0x433903(0x28f)](_0xa07e35=>_0xa07e35[_0x433903(0x25b)])['join'](';\x20');reportMorphError({'error_message':_0x576497,'error_type':_0x433903(0x1e7),'context':{'tool':_0x433903(0x2ad),'repo_path':_0x380425[_0x433903(0x26c)]['repo_path'],'query':_0x380425[_0x433903(0x26c)][_0x433903(0x2bd)],'model':_0x433903(0x241),'termination_reason':_0x433903(0x2b8),'error_count':_0x3040f2[_0x433903(0x2ab)],'is_timeout':![],'timings':_0x1c63e2[_0x433903(0x202)],'files_attempted':_0x3e2bb2[_0x433903(0x28f)](_0x3a4b7d=>({'path':_0x3a4b7d[_0x433903(0x1d1)],'lines':_0x3a4b7d[_0x433903(0x244)]})),'tool_calls':_0x4a2f51(_0x1c63e2[_0x433903(0x24e)]),'messages':_0x1c63e2[_0x433903(0x24e)]?.[_0x433903(0x28f)](_0x121d2a=>({'role':_0x121d2a[_0x433903(0x254)],'content':_0x121d2a[_0x433903(0x1e5)]})),'request_content':{'query':_0x380425[_0x433903(0x26c)][_0x433903(0x2bd)],'repo_path':_0x380425[_0x433903(0x26c)]['repo_path'],'repoRoot':a0_0x52f230[_0x433903(0x233)](_0x380425['data'][_0x433903(0x1ff)]),'model':'morph-warp-grep-v1-1111v0'}},'source':_0x433903(0x22a)})[_0x433903(0x240)](()=>{});}}else{if(_0x1c63e2[_0x433903(0x25d)]==='terminated'&&_0x1c63e2[_0x433903(0x23a)][_0x433903(0x2ab)]>0x0){const _0x3c692a=_0x1c63e2[_0x433903(0x23a)][_0x433903(0x28f)](_0x271b35=>_0x271b35['message'])['join'](';\x20');_0x4d6185=_0x433903(0x2a3)+_0x3c692a;const _0x3b56d6=_0x3c692a[_0x433903(0x279)]()[_0x433903(0x267)](_0x433903(0x21f))||_0x3c692a[_0x433903(0x279)]()[_0x433903(0x267)](_0x433903(0x2a4))||_0x3c692a[_0x433903(0x279)]()[_0x433903(0x267)](_0x433903(0x266)),_0x62f6cc=_0x1c63e2[_0x433903(0x290)]?.[_0x433903(0x29b)]?.[_0x433903(0x287)],_0x12170e=_0x1c63e2[_0x433903(0x23a)][0x0];reportMorphError({'error_message':_0x3c692a,'error_type':_0x3b56d6?_0x433903(0x1f2):_0x12170e?.['constructor']?.[_0x433903(0x25e)]||'WarpGrepError','context':{'tool':_0x433903(0x2ad),'repo_path':_0x380425[_0x433903(0x26c)][_0x433903(0x1ff)],'query':_0x380425[_0x433903(0x26c)][_0x433903(0x2bd)],'model':_0x433903(0x241),'termination_reason':_0x1c63e2['terminationReason'],'error_count':_0x1c63e2[_0x433903(0x23a)][_0x433903(0x2ab)],'is_timeout':_0x3b56d6,'timings':_0x1c63e2['timings'],'files_attempted':_0x62f6cc?.['map'](_0x2f2691=>({'path':_0x2f2691[_0x433903(0x1d1)],'lines':_0x2f2691['lines']})),'tool_calls':_0x4a2f51(_0x1c63e2[_0x433903(0x24e)]),'messages':_0x1c63e2[_0x433903(0x24e)]?.[_0x433903(0x28f)](_0x1fb0d5=>({'role':_0x1fb0d5[_0x433903(0x254)],'content':_0x1fb0d5[_0x433903(0x1e5)]})),'request_content':{'query':_0x380425['data'][_0x433903(0x2bd)],'repo_path':_0x380425[_0x433903(0x26c)][_0x433903(0x1ff)],'repoRoot':a0_0x52f230['resolve'](_0x380425[_0x433903(0x26c)][_0x433903(0x1ff)]),'model':_0x433903(0x241)}},'stack_trace':_0x12170e?.[_0x433903(0x1d8)]||undefined,'source':_0x433903(0x22a)})[_0x433903(0x240)](()=>{});}else _0x4d6185=_0x433903(0x232);}return{'content':[{'type':_0x433903(0x2ae),'text':_0x4d6185}]};}catch(_0x9346bd){const _0x466c30=_0x9346bd instanceof Error?_0x9346bd['message']:String(_0x9346bd),_0x9158f4=_0x466c30['toLowerCase']()['includes'](_0x433903(0x21f))||_0x466c30[_0x433903(0x279)]()[_0x433903(0x267)](_0x433903(0x2a4))||_0x466c30[_0x433903(0x279)]()['includes'](_0x433903(0x266))||_0x9346bd instanceof Error&&_0x9346bd[_0x433903(0x25e)]===_0x433903(0x1f2);return reportMorphError({'error_message':_0x466c30,'error_type':_0x9158f4?_0x433903(0x1f2):_0x9346bd instanceof Error?_0x9346bd['constructor'][_0x433903(0x25e)]:_0x433903(0x22d),'context':{'tool':_0x433903(0x2ad),'repo_path':_0x380425[_0x433903(0x26c)][_0x433903(0x1ff)],'query':_0x380425['data'][_0x433903(0x2bd)],'model':_0x433903(0x241),'is_timeout':_0x9158f4,'exception_phase':_0x433903(0x20e),'request_content':{'query':_0x380425[_0x433903(0x26c)][_0x433903(0x2bd)],'repo_path':_0x380425[_0x433903(0x26c)][_0x433903(0x1ff)],'repoRoot':a0_0x52f230[_0x433903(0x233)](_0x380425['data'][_0x433903(0x1ff)]),'model':'morph-warp-grep-v1-1111v0'}},'stack_trace':_0x9346bd instanceof Error?_0x9346bd[_0x433903(0x1d8)]:undefined,'source':_0x433903(0x22a)})[_0x433903(0x240)](()=>{}),{'content':[{'type':_0x433903(0x2ae),'text':_0x433903(0x212)+_0x466c30}],'isError':![]};}}case _0x433903(0x245):{const _0x53144c=WarpGrepGitHubArgsSchema[_0x433903(0x1f5)](_0x25c5ea);if(!_0x53144c[_0x433903(0x275)])return{'content':[{'type':_0x433903(0x2ae),'text':_0x433903(0x292)+_0x53144c['error']}],'isError':!![]};const _0x40feb5=_0x53144c['data'][_0x433903(0x26d)]||_0x53144c[_0x433903(0x26c)]['owner_repo'];if(!_0x40feb5)return{'content':[{'type':_0x433903(0x2ae),'text':'Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id'}],'isError':!![]};const _0x21c329=MORPH_API_KEY;if(!_0x21c329)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x1a4fae=Date[_0x433903(0x26a)]();logMcpStderr(_0x433903(0x294)+_0x40feb5+_0x433903(0x224)+_0x53144c[_0x433903(0x26c)][_0x433903(0x2bd)]+'\x22');try{const _0x29a417=new WarpGrepClient({'morphApiKey':_0x21c329,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x5b4e31=await _0x29a417['searchGitHub']({'searchTerm':_0x53144c['data'][_0x433903(0x2bd)],'github':_0x40feb5,'branch':_0x53144c[_0x433903(0x26c)][_0x433903(0x2b9)]}),_0x455e88=Date[_0x433903(0x26a)]()-_0x1a4fae;logMcpStderr(_0x433903(0x239)+_0x455e88+_0x433903(0x1de)+_0x5b4e31[_0x433903(0x275)]);const _0x40005a=formatResult(_0x5b4e31);return{'content':[{'type':_0x433903(0x2ae),'text':_0x40005a}]};}catch(_0x11e8a2){const _0x570453=Date['now']()-_0x1a4fae,_0x1f63a9=_0x11e8a2 instanceof Error?_0x11e8a2[_0x433903(0x25b)]:String(_0x11e8a2);return logMcpStderr(_0x433903(0x1f9)+_0x570453+_0x433903(0x1d3),_0x1f63a9),reportMorphError({'error_message':_0x1f63a9,'error_type':_0x11e8a2 instanceof Error?_0x11e8a2[_0x433903(0x1f0)][_0x433903(0x25e)]:_0x433903(0x22d),'context':{'tool':_0x433903(0x245),'github_url':_0x40feb5,'search_string':_0x53144c[_0x433903(0x26c)][_0x433903(0x2bd)],'branch':_0x53144c['data'][_0x433903(0x2b9)]},'stack_trace':_0x11e8a2 instanceof Error?_0x11e8a2[_0x433903(0x1d8)]:undefined,'source':_0x433903(0x22a),'tool':_0x433903(0x245),'latency_ms':_0x570453})[_0x433903(0x240)](()=>{}),{'content':[{'type':_0x433903(0x2ae),'text':_0x433903(0x2b2)+_0x1f63a9}],'isError':![]};}}default:throw new Error(_0x433903(0x21a)+_0x45482f);}}catch(_0x3a9a8c){const _0x325be5=_0x3a9a8c instanceof Error?_0x3a9a8c[_0x433903(0x25b)]:String(_0x3a9a8c);return reportMorphError({'error_message':_0x325be5,'error_type':_0x3a9a8c instanceof Error?_0x3a9a8c[_0x433903(0x1f0)][_0x433903(0x25e)]:'UnknownError','context':{'tool':_0x45482f,'arguments':_0x25c5ea?JSON[_0x433903(0x251)](_0x25c5ea)[_0x433903(0x257)](0x0,0x1f4):undefined,'mcp_server_version':_0x433903(0x260)},'stack_trace':_0x3a9a8c instanceof Error?_0x3a9a8c['stack']:undefined,'source':_0x433903(0x22a)})[_0x433903(0x240)](()=>{}),{'content':[{'type':_0x433903(0x2ae),'text':_0x433903(0x2a3)+_0x325be5}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0xbcfc67){const _0x217380=a0_0x5cfe16,_0xad299e=await getValidRootDirectories(_0xbcfc67);if(_0xad299e['length']>0x0)allowedDirectories=[..._0xad299e],logMcpStderr(_0x217380(0x253)+_0xad299e['length']+'\x20valid\x20directories');else{logMcpStderr(_0x217380(0x2aa));if(ENABLE_WORKSPACE_MODE)try{const _0x8b7c82=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x8b7c82&&(allowedDirectories=[_0x8b7c82],logMcpStderr(_0x217380(0x20c)+_0x8b7c82));}catch(_0x368928){logMcpStderr(_0x217380(0x24a)+_0x368928);}}}server[a0_0x5cfe16(0x27d)](RootsListChangedNotificationSchema,async()=>{const _0x5571d7=a0_0x5cfe16;try{const _0xbd2603=await server[_0x5571d7(0x1f3)]();_0xbd2603&&_0x5571d7(0x2a0)in _0xbd2603&&await updateAllowedDirectoriesFromRoots(_0xbd2603[_0x5571d7(0x2a0)]);}catch(_0x346884){logMcpStderr(_0x5571d7(0x1fa),_0x346884 instanceof Error?_0x346884[_0x5571d7(0x25b)]:String(_0x346884));}}),server[a0_0x5cfe16(0x298)]=async()=>{const _0x54853a=a0_0x5cfe16,_0x3c88d0=server[_0x54853a(0x1ec)]();if(_0x3c88d0?.[_0x54853a(0x2a0)])try{const _0x5cf272=await server[_0x54853a(0x1f3)]();_0x5cf272&&_0x54853a(0x2a0)in _0x5cf272?await updateAllowedDirectoriesFromRoots(_0x5cf272[_0x54853a(0x2a0)]):logMcpStderr(_0x54853a(0x228));}catch(_0xf137d2){logMcpStderr(_0x54853a(0x2bb),_0xf137d2 instanceof Error?_0xf137d2[_0x54853a(0x25b)]:String(_0xf137d2));}else{if(allowedDirectories[_0x54853a(0x2ab)]>0x0)logMcpStderr(_0x54853a(0x1f7),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x54853a(0x288));else throw new Error(_0x54853a(0x21b));}}};async function runServer(){const _0x67cd85=a0_0x5cfe16,_0x160825=new StdioServerTransport();await server[_0x67cd85(0x272)](_0x160825),logMcpStderr('Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio'),allowedDirectories['length']===0x0&&logMcpStderr('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()[a0_0x5cfe16(0x240)](_0x4f7e80=>{const _0x439a42=a0_0x5cfe16;logMcpStderr(_0x439a42(0x1cc),_0x4f7e80),process[_0x439a42(0x1f6)](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
var a1_0x1d3643=a1_0x402f;function a1_0x402f(_0x5a8d0a,_0x12a616){_0x5a8d0a=_0x5a8d0a-0x14e;var _0x2f84da=a1_0x2f84();var _0x402f6e=_0x2f84da[_0x5a8d0a];return _0x402f6e;}(function(_0x36b8a5,_0xf30907){var _0x1fb5c0=a1_0x402f,_0x14ba46=_0x36b8a5();while(!![]){try{var _0x94d644=parseInt(_0x1fb5c0(0x154))/0x1*(parseInt(_0x1fb5c0(0x150))/0x2)+parseInt(_0x1fb5c0(0x152))/0x3*(-parseInt(_0x1fb5c0(0x155))/0x4)+-parseInt(_0x1fb5c0(0x14e))/0x5+parseInt(_0x1fb5c0(0x15c))/0x6+parseInt(_0x1fb5c0(0x157))/0x7*(parseInt(_0x1fb5c0(0x14f))/0x8)+-parseInt(_0x1fb5c0(0x15f))/0x9+parseInt(_0x1fb5c0(0x153))/0xa*(parseInt(_0x1fb5c0(0x15e))/0xb);if(_0x94d644===_0xf30907)break;else _0x14ba46['push'](_0x14ba46['shift']());}catch(_0x49e3b5){_0x14ba46['push'](_0x14ba46['shift']());}}}(a1_0x2f84,0x40c05));import a1_0x3250dd from'os';export function getOperatingSystemType(_0x1c76cf=a1_0x3250dd[a1_0x1d3643(0x15a)]()){var _0x21cb26=a1_0x1d3643;switch(_0x1c76cf){case _0x21cb26(0x160):return'macOS';case _0x21cb26(0x158):return _0x21cb26(0x156);case'linux':return _0x21cb26(0x15b);default:return _0x21cb26(0x159);}}function a1_0x2f84(){var _0x5ab659=['11LfqZYv','3948399sYOLjx','darwin','1543415CcBiIl','32vsrSbt','2xRCWrL','[os=','32607tuXlBm','7121270hdqHPp','20867UlRVsC','100ysRfdR','Windows','244776VtwHei','win32','Unknown','platform','Linux','2468844TpHEGa','error'];a1_0x2f84=function(){return _0x5ab659;};return a1_0x2f84();}export function formatMcpLogMessage(_0x1f3779,_0x56eb48=a1_0x3250dd[a1_0x1d3643(0x15a)]()){var _0x30558e=a1_0x1d3643;return _0x30558e(0x151)+getOperatingSystemType(_0x56eb48)+']\x20'+_0x1f3779;}export function logMcpStderr(_0x17c564,..._0x30b421){var _0x2e433f=a1_0x1d3643;console[_0x2e433f(0x15d)](formatMcpLogMessage(_0x17c564),..._0x30b421);}
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x35e7c9,_0x1a093a){const _0x33de6f=a2_0x34bb,_0x101de5=_0x35e7c9();while(!![]){try{const _0x558d39=parseInt(_0x33de6f(0x1ea))/0x1*(-parseInt(_0x33de6f(0x1ec))/0x2)+parseInt(_0x33de6f(0x1e8))/0x3*(parseInt(_0x33de6f(0x1e9))/0x4)+-parseInt(_0x33de6f(0x1f1))/0x5+-parseInt(_0x33de6f(0x1e5))/0x6+parseInt(_0x33de6f(0x1eb))/0x7+parseInt(_0x33de6f(0x1e3))/0x8+parseInt(_0x33de6f(0x1e6))/0x9;if(_0x558d39===_0x1a093a)break;else _0x101de5['push'](_0x101de5['shift']());}catch(_0x58f20f){_0x101de5['push'](_0x101de5['shift']());}}}(a2_0x179b,0x58176));function a2_0x179b(){const _0x119ea9=['normalize','toUpperCase','/mnt/','222560IyhiwO','join','3310404uZRvFx','6932214qJGlrC','replace','52203KrloWE','72DvpaZQ','5703evFUkN','28812WlDkbO','68XAKWob','charAt','startsWith','match','homedir','44710hchbTh','test','slice'];a2_0x179b=function(){return _0x119ea9;};return a2_0x179b();}function a2_0x34bb(_0x52312f,_0x19ef99){_0x52312f=_0x52312f-0x1e2;const _0x179b23=a2_0x179b();let _0x34bbfb=_0x179b23[_0x52312f];return _0x34bbfb;}import a2_0x487a79 from'path';import a2_0x38a420 from'os';export function convertToWindowsPath(_0x1351cb){const _0x3ba0e3=a2_0x34bb;if(_0x1351cb[_0x3ba0e3(0x1ee)](_0x3ba0e3(0x1e2))){const _0x180a11=_0x1351cb[_0x3ba0e3(0x1ed)](0x5)['toUpperCase'](),_0x1e9df8=_0x1351cb['slice'](0x6)[_0x3ba0e3(0x1e7)](/\//g,'\x5c');return _0x180a11+':'+_0x1e9df8;}if(_0x1351cb[_0x3ba0e3(0x1ef)](/^\/[a-zA-Z]\//)){const _0x1a17c5=_0x1351cb['charAt'](0x1)[_0x3ba0e3(0x1f5)](),_0x237033=_0x1351cb[_0x3ba0e3(0x1f3)](0x2)[_0x3ba0e3(0x1e7)](/\//g,'\x5c');return _0x1a17c5+':'+_0x237033;}if(_0x1351cb[_0x3ba0e3(0x1ef)](/^[a-zA-Z]:/))return _0x1351cb[_0x3ba0e3(0x1e7)](/\//g,'\x5c');return _0x1351cb;}export function normalizePath(_0x49f3a0){const _0x21bcf5=a2_0x34bb;_0x49f3a0=_0x49f3a0['trim']()[_0x21bcf5(0x1e7)](/^["']|["']$/g,'');const _0x19a36a=_0x49f3a0[_0x21bcf5(0x1ee)]('/')&&!_0x49f3a0[_0x21bcf5(0x1ef)](/^\/mnt\/[a-z]\//i)&&!_0x49f3a0[_0x21bcf5(0x1ef)](/^\/[a-zA-Z]\//);if(_0x19a36a)return _0x49f3a0[_0x21bcf5(0x1e7)](/\/+/g,'/')[_0x21bcf5(0x1e7)](/\/+$/,'');_0x49f3a0=convertToWindowsPath(_0x49f3a0);if(_0x49f3a0[_0x21bcf5(0x1ee)]('\x5c\x5c')){let _0x5d86b2=_0x49f3a0;_0x5d86b2=_0x5d86b2[_0x21bcf5(0x1e7)](/^\\{2,}/,'\x5c\x5c');const _0x46481a=_0x5d86b2['substring'](0x2)[_0x21bcf5(0x1e7)](/\\\\/g,'\x5c');_0x49f3a0='\x5c\x5c'+_0x46481a;}else _0x49f3a0=_0x49f3a0[_0x21bcf5(0x1e7)](/\\\\/g,'\x5c');let _0x48130d=a2_0x487a79[_0x21bcf5(0x1f4)](_0x49f3a0);_0x49f3a0['startsWith']('\x5c\x5c')&&!_0x48130d[_0x21bcf5(0x1ee)]('\x5c\x5c')&&(_0x48130d='\x5c'+_0x48130d);if(_0x48130d[_0x21bcf5(0x1ef)](/^[a-zA-Z]:/)){let _0x3d70bc=_0x48130d[_0x21bcf5(0x1e7)](/\//g,'\x5c');return/^[a-z]:/[_0x21bcf5(0x1f2)](_0x3d70bc)&&(_0x3d70bc=_0x3d70bc[_0x21bcf5(0x1ed)](0x0)[_0x21bcf5(0x1f5)]()+_0x3d70bc[_0x21bcf5(0x1f3)](0x1)),_0x3d70bc;}return _0x48130d[_0x21bcf5(0x1e7)](/\//g,'\x5c');}export function expandHome(_0x18db63){const _0x867956=a2_0x34bb;if(_0x18db63[_0x867956(0x1ee)]('~/')||_0x18db63==='~')return a2_0x487a79[_0x867956(0x1e4)](a2_0x38a420[_0x867956(0x1f0)](),_0x18db63['slice'](0x1));return _0x18db63;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
function a3_0x589c(_0x23d63f,_0xe1aa4e){_0x23d63f=_0x23d63f-0xea;const _0x4d2593=a3_0x4d25();let _0x589c4d=_0x4d2593[_0x23d63f];return _0x589c4d;}function a3_0x4d25(){const _0x42f6b5=['some','sep','includes','isAbsolute','1662344EIBzHx','444090hvafRt','normalize','string','2851724JxAeLw','length','695243xOtSYb','4123422LVsZiL','829200TKCEPl','12485361IyDckj','resolve','startsWith','Path\x20must\x20be\x20absolute\x20after\x20normalization'];a3_0x4d25=function(){return _0x42f6b5;};return a3_0x4d25();}(function(_0x348285,_0xefa2f9){const _0x2ad437=a3_0x589c,_0x2a1163=_0x348285();while(!![]){try{const _0x3bc4d3=-parseInt(_0x2ad437(0xea))/0x1+-parseInt(_0x2ad437(0xf5))/0x2+parseInt(_0x2ad437(0xec))/0x3+-parseInt(_0x2ad437(0xf9))/0x4+-parseInt(_0x2ad437(0xf6))/0x5+parseInt(_0x2ad437(0xeb))/0x6+parseInt(_0x2ad437(0xed))/0x7;if(_0x3bc4d3===_0xefa2f9)break;else _0x2a1163['push'](_0x2a1163['shift']());}catch(_0x5a62f0){_0x2a1163['push'](_0x2a1163['shift']());}}}(a3_0x4d25,0x66518));import a3_0x2eefed from'path';export function isPathWithinAllowedDirectories(_0x567d6f,_0x335bd6){const _0xd1a0f2=a3_0x589c;if(typeof _0x567d6f!==_0xd1a0f2(0xf8)||!Array['isArray'](_0x335bd6))return![];if(!_0x567d6f||_0x335bd6[_0xd1a0f2(0xfa)]===0x0)return![];if(_0x567d6f[_0xd1a0f2(0xf3)]('\x00'))return![];let _0x242181;try{_0x242181=a3_0x2eefed[_0xd1a0f2(0xee)](a3_0x2eefed[_0xd1a0f2(0xf7)](_0x567d6f));}catch{return![];}if(!a3_0x2eefed[_0xd1a0f2(0xf4)](_0x242181))throw new Error(_0xd1a0f2(0xf0));return _0x335bd6[_0xd1a0f2(0xf1)](_0x307efd=>{const _0x141230=_0xd1a0f2;if(typeof _0x307efd!==_0x141230(0xf8)||!_0x307efd)return![];if(_0x307efd[_0x141230(0xf3)]('\x00'))return![];let _0x261a41;try{_0x261a41=a3_0x2eefed[_0x141230(0xee)](a3_0x2eefed['normalize'](_0x307efd));}catch{return![];}if(!a3_0x2eefed[_0x141230(0xf4)](_0x261a41))throw new Error('Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization');if(_0x242181===_0x261a41)return!![];if(_0x261a41===a3_0x2eefed[_0x141230(0xf2)])return _0x242181['startsWith'](a3_0x2eefed['sep']);return _0x242181[_0x141230(0xef)](_0x261a41+a3_0x2eefed['sep']);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x4c33c6,_0x595898){const _0x3bfcd8=a4_0x27cd,_0x426723=_0x4c33c6();while(!![]){try{const _0x35872=-parseInt(_0x3bfcd8(0x1e3))/0x1+-parseInt(_0x3bfcd8(0x1ec))/0x2*(parseInt(_0x3bfcd8(0x1f0))/0x3)+-parseInt(_0x3bfcd8(0x1f3))/0x4+-parseInt(_0x3bfcd8(0x1e6))/0x5*(parseInt(_0x3bfcd8(0x1f1))/0x6)+-parseInt(_0x3bfcd8(0x1ea))/0x7*(-parseInt(_0x3bfcd8(0x1f2))/0x8)+parseInt(_0x3bfcd8(0x1ed))/0x9*(-parseInt(_0x3bfcd8(0x1e2))/0xa)+parseInt(_0x3bfcd8(0x1e1))/0xb;if(_0x35872===_0x595898)break;else _0x426723['push'](_0x426723['shift']());}catch(_0x207199){_0x426723['push'](_0x426723['shift']());}}}(a4_0x33c7,0xf1991));import{promises as a4_0x2c6267}from'fs';import a4_0x3a4f19 from'path';import a4_0x140ade from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';function a4_0x27cd(_0x3d58ca,_0x5e44fa){_0x3d58ca=_0x3d58ca-0x1dd;const _0x33c733=a4_0x33c7();let _0x27cdd9=_0x33c733[_0x3d58ca];return _0x27cdd9;}async function parseRootUri(_0x1a18f0){const _0x32f4ec=a4_0x27cd;try{const _0x35e738=_0x1a18f0['startsWith'](_0x32f4ec(0x1e5))?_0x1a18f0['slice'](0x7):_0x1a18f0,_0x46dae6=_0x35e738[_0x32f4ec(0x1de)]('~/')||_0x35e738==='~'?a4_0x3a4f19[_0x32f4ec(0x1e0)](a4_0x140ade[_0x32f4ec(0x1dd)](),_0x35e738['slice'](0x1)):_0x35e738,_0x2cbfaf=a4_0x3a4f19[_0x32f4ec(0x1ef)](_0x46dae6),_0x1d9642=await a4_0x2c6267[_0x32f4ec(0x1e4)](_0x2cbfaf);return normalizePath(_0x1d9642);}catch{return null;}}function formatDirectoryError(_0x456b28,_0xac3dfd,_0xeb0347){const _0x53ad44=a4_0x27cd;if(_0xeb0347)return _0x53ad44(0x1e9)+_0xeb0347+':\x20'+_0x456b28;const _0x200d28=_0xac3dfd instanceof Error?_0xac3dfd[_0x53ad44(0x1df)]:String(_0xac3dfd);return _0x53ad44(0x1e8)+_0x456b28+'\x20due\x20to\x20error:\x20'+_0x200d28;}function a4_0x33c7(){const _0x401027=['70683404aCUnvi','10XvstWT','141828PcMFVR','realpath','file://','4233660pJSsLE','isDirectory','Skipping\x20invalid\x20directory:\x20','Skipping\x20','170597QlBmVL','stat','1915036tGiPHz','13902174ajgJQL','uri','resolve','3mhnrOf','12INCALT','136rZcDXr','6051960GkJePz','homedir','startsWith','message','join'];a4_0x33c7=function(){return _0x401027;};return a4_0x33c7();}export async function getValidRootDirectories(_0xcbd6d6){const _0x5172c3=a4_0x27cd,_0x1ab702=[];for(const _0x21a792 of _0xcbd6d6){const _0x10af8a=await parseRootUri(_0x21a792[_0x5172c3(0x1ee)]);if(!_0x10af8a){logMcpStderr(formatDirectoryError(_0x21a792[_0x5172c3(0x1ee)],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0x5b37ae=await a4_0x2c6267[_0x5172c3(0x1eb)](_0x10af8a);_0x5b37ae[_0x5172c3(0x1e7)]()?_0x1ab702['push'](_0x10af8a):logMcpStderr(formatDirectoryError(_0x10af8a,undefined,'non-directory\x20root'));}catch(_0x14777c){logMcpStderr(formatDirectoryError(_0x10af8a,_0x14777c));}}return _0x1ab702;}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.130",
|
|
4
4
|
"description": "Fast & accurate MCP server with AI-powered file editing and intelligent code search. Prevents context pollution and saves time for a better user experience.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Morph (https://morphllm.com)",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@google/generative-ai": "^0.21.0",
|
|
37
37
|
"@modelcontextprotocol/sdk": "^1.12.3",
|
|
38
|
-
"@morphllm/morphsdk": "0.2.
|
|
38
|
+
"@morphllm/morphsdk": "0.2.138",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|