@morphllm/morphmcp 0.8.101 → 0.8.102

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 CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- const a0_0x4d2c03=a0_0x44b2;(function(_0x15df52,_0xade1ce){const _0x1b1a5f=a0_0x44b2,_0x5f279f=_0x15df52();while(!![]){try{const _0x247547=-parseInt(_0x1b1a5f(0x1f2))/0x1*(-parseInt(_0x1b1a5f(0x12b))/0x2)+-parseInt(_0x1b1a5f(0x140))/0x3+-parseInt(_0x1b1a5f(0x1fb))/0x4+-parseInt(_0x1b1a5f(0x1ac))/0x5*(parseInt(_0x1b1a5f(0x1cc))/0x6)+-parseInt(_0x1b1a5f(0x16d))/0x7*(parseInt(_0x1b1a5f(0x10f))/0x8)+-parseInt(_0x1b1a5f(0x10b))/0x9*(parseInt(_0x1b1a5f(0x1bb))/0xa)+parseInt(_0x1b1a5f(0x111))/0xb;if(_0x247547===_0xade1ce)break;else _0x5f279f['push'](_0x5f279f['shift']());}catch(_0x32b0a5){_0x5f279f['push'](_0x5f279f['shift']());}}}(a0_0x174c,0x86935));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_0x462928 from'fs/promises';import a0_0x409f2d from'path';import a0_0x33db07 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider}from'@morphllm/morphsdk/tools/warp-grep';import{executeCodebaseSearch}from'@morphllm/morphsdk/tools/codebase-search';function a0_0x44b2(_0x396e70,_0xf3c86f){_0x396e70=_0x396e70-0xf1;const _0x174caa=a0_0x174c();let _0x44b20c=_0x174caa[_0x396e70];return _0x44b20c;}import a0_0x349f9c from'axios';function fixPathRepetition(_0x480b14){const _0x5a8d8d=a0_0x44b2,_0x2fdfa0=_0x480b14['split'](a0_0x409f2d[_0x5a8d8d(0x14c)])['filter'](Boolean);if(_0x2fdfa0[_0x5a8d8d(0xf8)]<0x2)return null;for(let _0xd62a2b=Math[_0x5a8d8d(0x1e3)](_0x2fdfa0[_0x5a8d8d(0xf8)]/0x2);_0xd62a2b>=0x1;_0xd62a2b--){for(let _0x1690df=0x0;_0x1690df<=_0x2fdfa0[_0x5a8d8d(0xf8)]-0x2*_0xd62a2b;_0x1690df++){const _0x4ab2ef=_0x2fdfa0['slice'](_0x1690df,_0x1690df+_0xd62a2b),_0x322c5b=_0x2fdfa0[_0x5a8d8d(0xf1)](_0x1690df+_0xd62a2b,_0x1690df+0x2*_0xd62a2b);if(_0x4ab2ef[_0x5a8d8d(0x1c1)]((_0x51631c,_0x18d8cf)=>_0x51631c===_0x322c5b[_0x18d8cf])){const _0x201f30=[..._0x2fdfa0[_0x5a8d8d(0xf1)](0x0,_0x1690df),..._0x2fdfa0['slice'](_0x1690df+_0xd62a2b)];return a0_0x409f2d[_0x5a8d8d(0x14c)]+_0x201f30['join'](a0_0x409f2d[_0x5a8d8d(0x14c)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x58064f=a0_0x44b2;try{const _0x1dce7a=require(_0x58064f(0x1af));return _0x1dce7a[_0x58064f(0x1e4)]??_0x58064f(0x146);}catch(_0x93340a){return console[_0x58064f(0x154)](_0x58064f(0x1a6),_0x93340a),'unknown';}}function printHelp(){const _0x2e3d9a=a0_0x44b2;console[_0x2e3d9a(0x18f)](_0x2e3d9a(0x105)+getPackageVersion()),console['log']('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0x2e3d9a(0x18f)](_0x2e3d9a(0x114)),console[_0x2e3d9a(0x18f)](_0x2e3d9a(0x185)),console[_0x2e3d9a(0x18f)](_0x2e3d9a(0x123)),console['log'](_0x2e3d9a(0x11d)),console[_0x2e3d9a(0x18f)](_0x2e3d9a(0x1b2)),console[_0x2e3d9a(0x18f)](_0x2e3d9a(0x117)),console[_0x2e3d9a(0x18f)](_0x2e3d9a(0x1f6));}const cliArgs=process[a0_0x4d2c03(0x17c)]['slice'](0x2),VERSION_FLAGS=new Set([a0_0x4d2c03(0x1e2),'-v','-V']),HELP_FLAGS=new Set(['--help','-h']);cliArgs[a0_0x4d2c03(0x1fa)](_0x579b9e=>VERSION_FLAGS[a0_0x4d2c03(0x1f8)](_0x579b9e))&&(console['log']('@morphllm/morphmcp\x20'+getPackageVersion()),process[a0_0x4d2c03(0x1ec)](0x0));cliArgs[a0_0x4d2c03(0x1fa)](_0x565840=>HELP_FLAGS['has'](_0x565840))&&(printHelp(),process[a0_0x4d2c03(0x1ec)](0x0));function getCliArg(_0x2ff259){const _0x35422a=a0_0x4d2c03;for(let _0x3f2f57=0x0;_0x3f2f57<cliArgs[_0x35422a(0xf8)];_0x3f2f57++){const _0x1b33ce=cliArgs[_0x3f2f57];if(_0x1b33ce[_0x35422a(0x1a3)]('--'+_0x2ff259+'='))return _0x1b33ce[_0x35422a(0xf1)](('--'+_0x2ff259+'=')[_0x35422a(0xf8)]);if(_0x1b33ce==='--'+_0x2ff259&&_0x3f2f57+0x1<cliArgs['length'])return cliArgs[_0x3f2f57+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs['length'];i++){const arg=cliArgs[i];if(VERSION_FLAGS['has'](arg)||HELP_FLAGS[a0_0x4d2c03(0x1f8)](arg))continue;if(arg[a0_0x4d2c03(0x1a3)](a0_0x4d2c03(0x1ed)))continue;if(arg===a0_0x4d2c03(0x172)){i++;continue;}args[a0_0x4d2c03(0x15c)](arg);}function a0_0x174c(){const _0x170193=['timeout','.git','Applied','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','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','UnknownError','log','query','filepath','role','added\x20','0.2.0','Failed\x20to\x20request\x20roots\x20from\x20client:','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','Error:\x20','commitHash','isDirectory','Fatal\x20error\x20running\x20server:','realpath','Bearer\x20','grep','stack','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','stat','\x20(new\x20file)','startsWith','all','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','Warning:\x20Unable\x20to\x20determine\x20package\x20version:',',\x20removed\x20','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','warpgrep_codebase_search','\x20results\x20in\x20','No\x20results\x20found\x20for\x20query:\x20\x22','90tLlHpm','-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a','\x20is\x20not\x20a\x20directory','../package.json','unknown\x20error','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','\x0aExamples:','success','Workspace\x20mode\x20enabled:\x20Using\x20','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','message','list_directory\x20','describe','indexOf','38540zHXXUW','path','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a','messages','terminated','every','basename','assistant','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','getClientCapabilities','codebase_search','FileNotFound','.\x20Path:\x20','https://morphllm.com/api/error-report','read\x20','requiresApiKey','197520sKThZc','inputSchema','PWD','\x0a...\x20(truncated,\x20total:\x20','For\x20deletions:\x0a','RipgrepError','number','Note:\x20The\x20files\x20and\x20line\x20ranges\x20returned\x20by\x20this\x20tool\x20may\x20be\x20some\x20of\x20the\x20ones\x20needed\x20to\x20complete\x20the\x20user\x27s\x20request,\x20but\x20you\x20should\x20be\x20careful\x20in\x20evaluating\x20the\x20relevance\x20of\x20the\x20results,\x20since\x20the\x20subagent\x20might\x20make\x20mistakes.\x20','Relevant\x20context\x20found:','instruction','changes','filter','**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a','default','Preview\x20changes\x20without\x20applying\x20them.','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Unknown\x20tool:\x20','morph-mcp','❌\x20Morph\x20Edit\x20Failed:\x20','Unknown\x20error','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.','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','--version','floor','version','mcp-filesystem','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','errors','finish','readFile','...','Rules:\x0a','exit','--api-key=','includes','params','Benefits:\x0a','grep\x20\x27','5CLLMdX','-\x20Grepped\x20\x27','match','text','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','optional','has','MORPH_API_KEY','some','3584624thdxQr','SubToolError','[could\x20not\x20read\x20file:\x20','go.mod','oninitialized','post','toLowerCase','composer.json','slice','split','trim','env','substring','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','dirname','length','toFixed','WarpGrepError','ENABLE_WORKSPACE_MODE','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','Morph\x20FastApply\x20failed\x20without\x20error\x20message','morph-warp-grep-v1-1111v0','etimedout','Fallback:\x20Using\x20workspace\x20root\x20','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a','connect','This\x20tool\x20invokes\x20a\x20subagent\x20that\x20runs\x20parallel\x20grep\x20and\x20readfile\x20calls\x20over\x20multiple\x20turns\x20to\x20locate\x20line\x20ranges\x20and\x20files\x20which\x20might\x20be\x20relevant\x20to\x20the\x20request.\x20','@morphllm/morphmcp\x20','</file>','runWarpGrep_call','string','%\x20match)\x0a',',\x20modified\x20','801ijnofQ','targetDirectories','MORPH_WARP_GREP_TIMEOUT','RipgrepNotAvailable','7017448TVBUNe','constructor','35797344PQWdNy','-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a','setRequestHandler','\x0aOptions:','tsconfig.json','Found\x20','\x20\x20morph-mcp','array','\x20valid\x20directories','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','utf-8','Created\x20File','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','-\x20Read\x20file\x20`','\x22>\x0aError\x20reading\x20file:\x20','TimeoutError','timings','map','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','dryRun','object','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','payload','Warning:\x20','\x20\x20\x20','completed_with_file_errors','207040FShiLv','WORKSPACE_ROOT','\x20\x20\x20Lines\x20','limit','normalize','\x0a</file>','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','Specific\x20commit\x20hash\x20to\x20search','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.','read','listRoots','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','package.json','.\x20Changes:\x20','<file\x20path=\x22','Cargo.toml','repoId','.vscode','source','Repository\x20identifier','search_string','1535340FfoxLr','content','Here\x20is\x20the\x20content\x20of\x20files:\x0a','roots','endLine','join','unknown','Invalid\x20arguments:\x20','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20','edit_file','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','homedir','sep','catch','terminationReason','Morph\x20Edit\x20','ms:\x0a\x0a','Enabled\x20tools:\x20','cwd','code','error','boolean','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','resolve','safeParse','user','-\x20Listed\x20directory\x20`','SymlinkError','push','BinaryFile','\x20error(s)','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','isArray','ReadError','api-key','access','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','code_edit','lines','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20','completionId','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','files','7QEJOdC','Search\x20failed:\x20','File\x20read\x20error:','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','Error\x20accessing\x20directory\x20','--api-key','metadata','repo_path','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','\x20chars)','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','name','rerankScore','timed\x20out','argv','data','sk-','startLine','results','Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for','Max\x20results\x20to\x20return','Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','morph-v3-fast','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','ENABLED_TOOLS','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];a0_0x174c=function(){return _0x170193;};return a0_0x174c();}const ALL_TOOLS=[a0_0x4d2c03(0x149),a0_0x4d2c03(0x1a9),'codebase_search'],DEFAULT_TOOLS=[a0_0x4d2c03(0x149),'warpgrep_codebase_search'],ENABLED_TOOLS=process[a0_0x4d2c03(0xf4)][a0_0x4d2c03(0x186)]?process[a0_0x4d2c03(0xf4)]['ENABLED_TOOLS']===a0_0x4d2c03(0x1a4)?ALL_TOOLS:process[a0_0x4d2c03(0xf4)][a0_0x4d2c03(0x186)][a0_0x4d2c03(0xf2)](',')[a0_0x4d2c03(0x122)](_0x486497=>_0x486497['trim']()):DEFAULT_TOOLS;console[a0_0x4d2c03(0x154)](a0_0x4d2c03(0x151)+ENABLED_TOOLS[a0_0x4d2c03(0x145)](',\x20'));const WORKSPACE_ROOT=process[a0_0x4d2c03(0xf4)][a0_0x4d2c03(0x12c)]||process[a0_0x4d2c03(0xf4)][a0_0x4d2c03(0x1ce)]||process[a0_0x4d2c03(0x152)](),ENABLE_WORKSPACE_MODE=process[a0_0x4d2c03(0xf4)][a0_0x4d2c03(0xfb)]!=='false',MORPH_API_KEY=getCliArg(a0_0x4d2c03(0x163))??process[a0_0x4d2c03(0xf4)][a0_0x4d2c03(0x1f9)],MORPH_API_URL=process[a0_0x4d2c03(0xf4)]['MORPH_API_URL'],MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0x4d2c03(0x10d)]?parseInt(process[a0_0x4d2c03(0xf4)][a0_0x4d2c03(0x10d)],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY[a0_0x4d2c03(0x1a3)](a0_0x4d2c03(0x17e))&&!MORPH_API_KEY['startsWith']('morph-')&&console['error']('Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27');async function reportMorphError(_0x2635df){const _0x3dbf76=a0_0x4d2c03;try{await a0_0x349f9c[_0x3dbf76(0x200)](_0x3dbf76(0x1c9),{..._0x2635df,'timestamp':new Date()['toISOString'](),'source':_0x2635df[_0x3dbf76(0x13d)]||_0x3dbf76(0x1e5)},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':_0x3dbf76(0x19c)+MORPH_API_KEY}});}catch{}}args[a0_0x4d2c03(0xf8)]===0x0&&!ENABLE_WORKSPACE_MODE&&(console['error'](a0_0x4d2c03(0x1a8)),console[a0_0x4d2c03(0x154)](a0_0x4d2c03(0x14a)),console[a0_0x4d2c03(0x154)](a0_0x4d2c03(0x1e6)),console[a0_0x4d2c03(0x154)](a0_0x4d2c03(0x18d)),console[a0_0x4d2c03(0x154)](a0_0x4d2c03(0x1db)),console[a0_0x4d2c03(0x154)](a0_0x4d2c03(0x1bd)));function normalizePath(_0x545b10){const _0x3dc123=a0_0x4d2c03;return a0_0x409f2d[_0x3dc123(0x12f)](_0x545b10);}function expandHome(_0x48b78e){const _0x3bbaf9=a0_0x4d2c03;if(_0x48b78e['startsWith']('~/')||_0x48b78e==='~')return a0_0x409f2d[_0x3bbaf9(0x145)](a0_0x33db07[_0x3bbaf9(0x14b)](),_0x48b78e[_0x3bbaf9(0xf1)](0x1));return _0x48b78e;}let allowedDirectories=await Promise['all'](args['map'](async _0x8e461d=>{const _0x49dddd=a0_0x4d2c03,_0x256484=expandHome(_0x8e461d),_0x15aaf0=a0_0x409f2d[_0x49dddd(0x157)](_0x256484);try{const _0x46e951=await a0_0x462928[_0x49dddd(0x19b)](_0x15aaf0);return normalizePath(_0x46e951);}catch(_0x5c2ffb){return normalizePath(_0x15aaf0);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x4d2c03(0xf8)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories['push'](workspaceDir),console[a0_0x4d2c03(0x154)](a0_0x4d2c03(0x1b4)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x24d627){console[a0_0x4d2c03(0x154)]('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x24d627);}async function detectWorkspaceRoot(_0x1c7452){const _0x2f9524=a0_0x4d2c03;let _0x2abb8d=a0_0x409f2d[_0x2f9524(0x157)](_0x1c7452);const _0x360d2c=[_0x2f9524(0x18a),_0x2f9524(0x13c),_0x2f9524(0x137),_0x2f9524(0x13a),'pyproject.toml',_0x2f9524(0x1fe),'.cursor',_0x2f9524(0x115),_0x2f9524(0x202)];while(_0x2abb8d!==a0_0x409f2d['dirname'](_0x2abb8d)){for(const _0x18cb73 of _0x360d2c){const _0x569e38=a0_0x409f2d['join'](_0x2abb8d,_0x18cb73);try{return await a0_0x462928[_0x2f9524(0x164)](_0x569e38),normalizePath(_0x2abb8d);}catch{}}_0x2abb8d=a0_0x409f2d[_0x2f9524(0xf7)](_0x2abb8d);}return normalizePath(_0x1c7452);}await Promise['all'](args[a0_0x4d2c03(0x122)](async _0x15bd8b=>{const _0x4ee5e6=a0_0x4d2c03;try{const _0x1227fb=await a0_0x462928[_0x4ee5e6(0x1a1)](expandHome(_0x15bd8b));!_0x1227fb[_0x4ee5e6(0x199)]()&&(console[_0x4ee5e6(0x154)](_0x4ee5e6(0x197)+_0x15bd8b+_0x4ee5e6(0x1ae)),process[_0x4ee5e6(0x1ec)](0x1));}catch(_0x227fb1){console['error'](_0x4ee5e6(0x171)+_0x15bd8b+':',_0x227fb1),process['exit'](0x1);}}));async function validatePath(_0x55051f){const _0x13b545=a0_0x4d2c03,_0x7ffcbd=expandHome(_0x55051f),_0x57c1f2=a0_0x409f2d[_0x13b545(0x157)](_0x7ffcbd);try{const _0x50ebb8=await a0_0x462928[_0x13b545(0x19b)](_0x57c1f2);return _0x50ebb8;}catch(_0x52b6cb){if(_0x52b6cb[_0x13b545(0x153)]==='ENOENT'){const _0x906a47=a0_0x409f2d['dirname'](_0x57c1f2);try{const _0x3e4fc0=await a0_0x462928[_0x13b545(0x19b)](_0x906a47);return a0_0x409f2d[_0x13b545(0x145)](_0x3e4fc0,a0_0x409f2d['basename'](_0x57c1f2));}catch{throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x906a47);}}throw _0x52b6cb;}}const MorphEditFileArgsSchema=z[a0_0x4d2c03(0x125)]({'path':z[a0_0x4d2c03(0x108)](),'code_edit':z[a0_0x4d2c03(0x108)]()[a0_0x4d2c03(0x1b9)](a0_0x4d2c03(0x178)),'instruction':z[a0_0x4d2c03(0x108)]()[a0_0x4d2c03(0x1b9)](a0_0x4d2c03(0x19f)),'dryRun':z[a0_0x4d2c03(0x155)]()['default'](![])['describe'](a0_0x4d2c03(0x1da))}),WarpGrepArgsSchema=z[a0_0x4d2c03(0x125)]({'search_string':z[a0_0x4d2c03(0x108)]()['describe'](a0_0x4d2c03(0x181)),'repo_path':z[a0_0x4d2c03(0x108)]()['describe'](a0_0x4d2c03(0x18c))}),CodebaseSearchArgsSchema=z['object']({'query':z[a0_0x4d2c03(0x108)]()[a0_0x4d2c03(0x1b9)]('Natural\x20language\x20query\x20to\x20search\x20for\x20code'),'repoId':z[a0_0x4d2c03(0x108)]()[a0_0x4d2c03(0x1b9)](a0_0x4d2c03(0x13e)),'branch':z[a0_0x4d2c03(0x108)]()[a0_0x4d2c03(0x1f7)]()[a0_0x4d2c03(0x1b9)]('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z['string']()[a0_0x4d2c03(0x1f7)]()[a0_0x4d2c03(0x1b9)](a0_0x4d2c03(0x132)),'targetDirectories':z[a0_0x4d2c03(0x118)](z['string']())[a0_0x4d2c03(0x1d9)]([])[a0_0x4d2c03(0x1b9)](a0_0x4d2c03(0x15f)),'limit':z[a0_0x4d2c03(0x1d2)]()[a0_0x4d2c03(0x1f7)]()[a0_0x4d2c03(0x1d9)](0xa)['describe'](a0_0x4d2c03(0x182))}),server=new Server({'name':a0_0x4d2c03(0x1dd),'version':a0_0x4d2c03(0x194)},{'capabilities':{'tools':{}}});server[a0_0x4d2c03(0x113)](ListToolsRequestSchema,async()=>{const _0x399431=a0_0x4d2c03,_0x16abbc=[{'name':_0x399431(0x149),'description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a'+_0x399431(0x101)+'🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a'+_0x399431(0x131)+_0x399431(0x1f0)+_0x399431(0x176)+'-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a'+_0x399431(0x136)+_0x399431(0x1b6)+_0x399431(0x16b)+'ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a'+_0x399431(0xf6)+_0x399431(0x1d0)+_0x399431(0x165)+_0x399431(0x1b1)+_0x399431(0x1eb)+_0x399431(0xfc)+_0x399431(0x1e1)+_0x399431(0x196)+'-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a'+'-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a'+_0x399431(0x168)+_0x399431(0x11a),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x399431(0x1a9),'description':_0x399431(0x1a5)+_0x399431(0x104)+'The\x20search\x20term\x20should\x20be\x20a\x20targeted\x20natural\x20language\x20query\x20based\x20on\x20what\x20you\x20are\x20trying\x20to\x20accomplish,\x20like\x20\x27Find\x20where\x20authentication\x20requests\x20are\x20handled\x20in\x20the\x20Express\x20routes\x27\x20or\x20\x27Modify\x20the\x20agentic\x20rollout\x20to\x20use\x20the\x20new\x20tokenizer\x20and\x20chat\x20template\x27\x20or\x20\x27Fix\x20the\x20bug\x20where\x20the\x20user\x20gets\x20redirected\x20from\x20the\x20/feed\x20page\x27.\x20'+_0x399431(0x148)+'You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.'+_0x399431(0x1d3)+'You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20'+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':'codebase_search','description':_0x399431(0x1d8)+_0x399431(0x102)+'🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a'+_0x399431(0x1f0)+_0x399431(0x1ad)+'-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a'+_0x399431(0x1be)+_0x399431(0x112)+'Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20'+_0x399431(0x169)+_0x399431(0x183),'inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x40e654=_0x16abbc['filter'](_0x7c87a7=>{const _0x470d0c=_0x399431;if(!ENABLED_TOOLS['includes'](_0x7c87a7[_0x470d0c(0x179)]))return![];if(_0x470d0c(0x1cb)in _0x7c87a7&&_0x7c87a7['requiresApiKey']&&!MORPH_API_KEY)return console[_0x470d0c(0x154)](_0x470d0c(0x128)+_0x7c87a7[_0x470d0c(0x179)]+_0x470d0c(0x1a0)),![];return!![];});return{'tools':_0x40e654[_0x399431(0x122)](_0x34c08e=>({'name':_0x34c08e[_0x399431(0x179)],'description':_0x34c08e['description'],'inputSchema':_0x34c08e[_0x399431(0x1cd)]}))};}),server[a0_0x4d2c03(0x113)](CallToolRequestSchema,async _0x4031d0=>{const _0x3f263f=a0_0x4d2c03;try{const {name:_0x1e83d9,arguments:_0x190f16}=_0x4031d0[_0x3f263f(0x1ef)];switch(_0x1e83d9){case _0x3f263f(0x149):{const _0x50d514=MorphEditFileArgsSchema[_0x3f263f(0x158)](_0x190f16);if(!_0x50d514['success'])throw new Error(_0x3f263f(0x170)+_0x50d514[_0x3f263f(0x154)]);const _0x1ab889=await validatePath(_0x50d514[_0x3f263f(0x17d)][_0x3f263f(0x1bc)]);let _0x4bea5f=null,_0x27b87c=!![],_0x7608fd=null;try{_0x4bea5f=await a0_0x462928[_0x3f263f(0x1e9)](_0x1ab889,_0x3f263f(0x11b));}catch(_0x1bcbd8){const _0x3a16e1=_0x1bcbd8[_0x3f263f(0x153)];_0x3a16e1==='ENOENT'?(_0x27b87c=![],_0x4bea5f=''):(_0x7608fd='Failed\x20to\x20read\x20file:\x20'+(_0x3a16e1||_0x3f263f(0x146))+'\x20-\x20'+(_0x1bcbd8 instanceof Error?_0x1bcbd8[_0x3f263f(0x1b7)]:String(_0x1bcbd8)),console[_0x3f263f(0x154)]('Warning:\x20'+_0x7608fd));}let _0x266f06;try{const _0x45fee2=MORPH_API_KEY;if(!_0x45fee2)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x4e8154=a0_0x409f2d[_0x3f263f(0xf7)](_0x1ab889),_0x45d1b1=a0_0x409f2d[_0x3f263f(0x1c2)](_0x1ab889),_0x5e743f=await executeEditFile({'target_filepath':_0x45d1b1,'code_edit':_0x50d514[_0x3f263f(0x17d)][_0x3f263f(0x166)],'instructions':_0x50d514[_0x3f263f(0x17d)]['instruction']},{'morphApiKey':_0x45fee2,'morphApiUrl':MORPH_API_URL,'baseDir':_0x4e8154,'autoWrite':!_0x50d514['data'][_0x3f263f(0x124)],'generateUdiff':![],'debug':![]});_0x266f06=_0x5e743f[_0x3f263f(0x16a)];if(!_0x5e743f['success'])throw new Error(_0x5e743f[_0x3f263f(0x154)]||_0x3f263f(0xfd));const _0x2291be=_0x5e743f[_0x3f263f(0x1d6)],_0x14d86e=_0x3f263f(0x193)+_0x2291be['linesAdded']+_0x3f263f(0x1a7)+_0x2291be['linesRemoved']+_0x3f263f(0x10a)+_0x2291be['linesModified'];if(_0x50d514['data']['dryRun'])return{'content':[{'type':_0x3f263f(0x1f5),'text':'Morph\x20Edit\x20Preview'+(_0x27b87c?'':_0x3f263f(0x1a2))+':\x20'+_0x50d514['data']['instruction']+_0x3f263f(0x138)+_0x14d86e+_0x3f263f(0x1c8)+_0x50d514[_0x3f263f(0x17d)]['path']+'.'}]};return{'content':[{'type':'text','text':_0x3f263f(0x14f)+(_0x27b87c?_0x3f263f(0x18b):_0x3f263f(0x11c))+':\x20'+_0x50d514[_0x3f263f(0x17d)][_0x3f263f(0x1d5)]+_0x3f263f(0x138)+_0x14d86e+_0x3f263f(0x1c8)+_0x50d514[_0x3f263f(0x17d)]['path']+'.'}]};}catch(_0x2ede6f){const _0x1c4468=_0x2ede6f instanceof Error?_0x2ede6f[_0x3f263f(0x1b7)]:String(_0x2ede6f);return reportMorphError({'error_message':_0x1c4468,'error_type':_0x2ede6f instanceof Error?_0x2ede6f['constructor'][_0x3f263f(0x179)]:'UnknownError','context':{'tool':_0x3f263f(0x149),'completion_id':_0x266f06,'file_path':_0x50d514[_0x3f263f(0x17d)][_0x3f263f(0x1bc)],'validated_path':_0x1ab889,'instruction':_0x50d514[_0x3f263f(0x17d)][_0x3f263f(0x1d5)],'model':_0x3f263f(0x184),'dry_run':_0x50d514[_0x3f263f(0x17d)][_0x3f263f(0x124)],'file_exists':_0x27b87c,'file_read_error':_0x7608fd,'file_readable':_0x4bea5f!==null,'request_content':{'path':_0x50d514['data']['path'],'code_edit':_0x50d514[_0x3f263f(0x17d)][_0x3f263f(0x166)],'instruction':_0x50d514[_0x3f263f(0x17d)]['instruction'],'original_code':_0x4bea5f!==null?_0x4bea5f[_0x3f263f(0xf8)]>0xc350?_0x4bea5f['substring'](0x0,0xc350)+_0x3f263f(0x1cf)+_0x4bea5f[_0x3f263f(0xf8)]+_0x3f263f(0x177):_0x4bea5f:_0x3f263f(0x1fd)+(_0x7608fd||_0x3f263f(0x1b0))+']','original_code_length':_0x4bea5f?.['length']??0x0,'model':_0x3f263f(0x184),'dry_run':_0x50d514['data']['dryRun']}},'stack_trace':_0x2ede6f instanceof Error?_0x2ede6f[_0x3f263f(0x19e)]:undefined,'source':_0x3f263f(0x1e5)})[_0x3f263f(0x14d)](()=>{}),{'content':[{'type':'text','text':_0x3f263f(0x1de)+_0x1c4468}],'isError':!![]};}}case _0x3f263f(0x1a9):{const _0x160ee2=WarpGrepArgsSchema['safeParse'](_0x190f16);if(!_0x160ee2[_0x3f263f(0x1b3)])return{'content':[{'type':'text','text':_0x3f263f(0x147)+_0x160ee2[_0x3f263f(0x154)]}],'isError':!![]};const _0x2bcd96=_0x365c7c=>{const _0x4163c7=_0x3f263f,_0x126ac5=[];for(const _0x132481 of _0x365c7c||[]){const _0x444a40=_0x132481['role'],_0x4959c1=_0x132481[_0x4163c7(0x141)];if(_0x444a40===_0x4163c7(0x1c3)&&_0x4959c1){const _0x464f9d=_0x4959c1[_0x4163c7(0xf2)]('\x0a')[_0x4163c7(0x1d7)](_0x51b028=>_0x51b028[_0x4163c7(0xf3)]());for(const _0x470180 of _0x464f9d){const _0xd2b9a=_0x470180[_0x4163c7(0x1f4)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0xd2b9a){_0x126ac5['push'](_0x4163c7(0x1f1)+_0xd2b9a[0x1]+'\x27\x20'+_0xd2b9a[0x2]);continue;}const _0x48a695=_0x470180['match'](/^read\s+(.+)$/);if(_0x48a695){_0x126ac5[_0x4163c7(0x15c)](_0x4163c7(0x1ca)+_0x48a695[0x1]);continue;}const _0x19ca10=_0x470180[_0x4163c7(0x1f4)](/^list_directory\s+(.+)$/);if(_0x19ca10){_0x126ac5[_0x4163c7(0x15c)](_0x4163c7(0x1b8)+_0x19ca10[0x1]);continue;}}}}return _0x126ac5;},_0xf84496=_0x5192a9=>{const _0x2dd2fb=_0x3f263f,_0x7906f4=[];if(!_0x5192a9||!Array[_0x2dd2fb(0x161)](_0x5192a9))return _0x7906f4;const _0x329561=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x2dd2fb(0x1c7),'tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x2dd2fb(0x134)},{'pattern':/\[READ ERROR\]/,'error_type':_0x2dd2fb(0x162),'tool':_0x2dd2fb(0x134)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':'BinaryFile','tool':'read'},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x2dd2fb(0x1d1),'tool':_0x2dd2fb(0x19d)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x2dd2fb(0x10e),'tool':_0x2dd2fb(0x19d)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x2dd2fb(0x15d),'tool':_0x2dd2fb(0x134)},{'pattern':/\[SYMLINK\]/,'error_type':_0x2dd2fb(0x15b),'tool':_0x2dd2fb(0x134)},{'pattern':/not a text file/,'error_type':_0x2dd2fb(0x15d),'tool':_0x2dd2fb(0x134)},{'pattern':/symbolic link/,'error_type':_0x2dd2fb(0x15b),'tool':_0x2dd2fb(0x134)},{'pattern':/Error reading file:/,'error_type':_0x2dd2fb(0x162),'tool':_0x2dd2fb(0x134)},{'pattern':/status="error"/,'error_type':'ToolException','tool':_0x2dd2fb(0x146)}];let _0x45be46=0x0;for(const _0x14e911 of _0x5192a9){if(_0x14e911[_0x2dd2fb(0x192)]===_0x2dd2fb(0x159)){_0x45be46++;const _0x53b901=_0x14e911['content'];if(!_0x53b901||typeof _0x53b901!==_0x2dd2fb(0x108))continue;for(const {pattern:_0x5df968,error_type:_0x17a5aa,tool:_0x13bd69}of _0x329561){const _0x479ce1=_0x53b901[_0x2dd2fb(0x1f4)](new RegExp(_0x5df968[_0x2dd2fb(0x13d)],'g'));if(_0x479ce1)for(const _0x5a50a7 of _0x479ce1){const _0x4f23a6=_0x53b901[_0x2dd2fb(0x1ba)](_0x5a50a7),_0x406ca6=_0x53b901['substring'](_0x4f23a6,Math['min'](_0x4f23a6+0xc8,_0x53b901[_0x2dd2fb(0xf8)]));_0x7906f4[_0x2dd2fb(0x15c)]({'tool':_0x13bd69,'error_type':_0x17a5aa,'error_message':_0x406ca6[_0x2dd2fb(0xf2)]('\x0a')[0x0],'turn':_0x45be46});}}}}return _0x7906f4;};try{const _0x28447f=a0_0x409f2d[_0x3f263f(0x157)](_0x160ee2['data'][_0x3f263f(0x174)]),_0x3a5804=new LocalRipgrepProvider(_0x28447f),_0x83fd01=await runWarpGrep({'query':_0x160ee2['data'][_0x3f263f(0x13f)],'repoRoot':_0x28447f,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x3a5804}),_0x4ef0b2=_0xf84496(_0x83fd01[_0x3f263f(0x1bf)]);_0x4ef0b2[_0x3f263f(0xf8)]>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x4ef0b2[_0x3f263f(0xf8)]+_0x3f263f(0x15e),'error_type':_0x3f263f(0x1fc),'level':'warn','tool':_0x3f263f(0x1a9),'context':{'repo_path':_0x160ee2[_0x3f263f(0x17d)][_0x3f263f(0x174)],'query':_0x160ee2[_0x3f263f(0x17d)][_0x3f263f(0x13f)],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x83fd01[_0x3f263f(0x14e)],'sub_tool_errors':_0x4ef0b2,'timings':_0x83fd01[_0x3f263f(0x121)],'tool_calls':_0x2bcd96(_0x83fd01['messages']),'messages':_0x83fd01[_0x3f263f(0x1bf)]?.[_0x3f263f(0x122)](_0x48cc4c=>({'role':_0x48cc4c[_0x3f263f(0x192)],'content':_0x48cc4c['content']}))},'source':'mcp-filesystem'})[_0x3f263f(0x14d)](()=>{});let _0x8f1cb9='';if(_0x83fd01[_0x3f263f(0x14e)]==='completed'&&_0x83fd01[_0x3f263f(0x1e8)]?.[_0x3f263f(0x173)]?.[_0x3f263f(0x16c)]){const _0x42c075=_0x83fd01[_0x3f263f(0x1e8)][_0x3f263f(0x173)][_0x3f263f(0x16c)];if(_0x42c075[_0x3f263f(0xf8)]===0x0)return _0x8f1cb9=_0x83fd01[_0x3f263f(0x1e8)][_0x3f263f(0x127)]||_0x3f263f(0x156),{'content':[{'type':_0x3f263f(0x1f5),'text':_0x8f1cb9}]};const _0x3e5bdf=[],_0x26165c=[_0x3f263f(0x188)];for(const _0x24fd73 of _0x83fd01[_0x3f263f(0x1bf)]){const _0xe14495=_0x24fd73[_0x3f263f(0x192)],_0x2a5ac7=_0x24fd73[_0x3f263f(0x141)];if(_0xe14495===_0x3f263f(0x1c3)&&_0x2a5ac7){const _0x488967=_0x2a5ac7[_0x3f263f(0xf2)]('\x0a')[_0x3f263f(0x1d7)](_0x2375eb=>_0x2375eb[_0x3f263f(0xf3)]());for(const _0x74b073 of _0x488967){const _0x4b9112=_0x74b073[_0x3f263f(0x1f4)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x4b9112){_0x26165c[_0x3f263f(0x15c)](_0x3f263f(0x1f3)+_0x4b9112[0x1]+'\x27\x20in\x20`'+_0x4b9112[0x2]+'`');continue;}const _0x2c98ee=_0x74b073[_0x3f263f(0x1f4)](/^read\s+(.+)$/);if(_0x2c98ee){_0x26165c[_0x3f263f(0x15c)](_0x3f263f(0x11e)+_0x2c98ee[0x1]+'`');continue;}const _0x1412d1=_0x74b073[_0x3f263f(0x1f4)](/^list_directory\s+(.+)$/);if(_0x1412d1){_0x26165c[_0x3f263f(0x15c)](_0x3f263f(0x15a)+_0x1412d1[0x1]+'`');continue;}}}}_0x3e5bdf[_0x3f263f(0x15c)](_0x26165c[_0x3f263f(0x145)]('\x0a'));const _0x2bbec1=['',_0x3f263f(0x1d4)];for(const _0x351df5 of _0x42c075){if(_0x351df5['lines']==='*')_0x2bbec1[_0x3f263f(0x15c)]('-\x20'+_0x351df5['path']+':*');else{if(Array[_0x3f263f(0x161)](_0x351df5[_0x3f263f(0x167)])){const _0x3a5010=_0x351df5['lines'][_0x3f263f(0x122)](([_0x5a6ce6,_0x428c9c])=>{if(_0x5a6ce6===_0x428c9c)return''+_0x5a6ce6;return _0x5a6ce6+'-'+_0x428c9c;});_0x2bbec1[_0x3f263f(0x15c)]('-\x20'+_0x351df5[_0x3f263f(0x1bc)]+':'+_0x3a5010[_0x3f263f(0x145)](','));}else _0x2bbec1[_0x3f263f(0x15c)]('-\x20'+_0x351df5[_0x3f263f(0x1bc)]+':*');}}_0x2bbec1['push'](''),_0x3e5bdf[_0x3f263f(0x15c)](_0x2bbec1['join']('\x0a')),_0x3e5bdf[_0x3f263f(0x15c)](_0x3f263f(0x142));const _0x49b78a=[];for(const _0x498a99 of _0x42c075){let _0x1b4e32=a0_0x409f2d[_0x3f263f(0x157)](_0x160ee2[_0x3f263f(0x17d)][_0x3f263f(0x174)],_0x498a99[_0x3f263f(0x1bc)]),_0x4336bf=null,_0x4cb9f5=null;try{_0x4336bf=await a0_0x462928['readFile'](_0x1b4e32,{'encoding':_0x3f263f(0x11b)});}catch(_0x2d1684){const _0x37aacf=fixPathRepetition(_0x1b4e32);if(_0x37aacf)try{_0x4336bf=await a0_0x462928['readFile'](_0x37aacf,{'encoding':_0x3f263f(0x11b)}),_0x1b4e32=_0x37aacf;}catch{_0x4cb9f5=_0x2d1684 instanceof Error?_0x2d1684:new Error(String(_0x2d1684));}else _0x4cb9f5=_0x2d1684 instanceof Error?_0x2d1684:new Error(String(_0x2d1684));}if(_0x4336bf!==null){const _0x3fb205=_0x4336bf[_0x3f263f(0xf2)](/\r?\n/),_0x2bf96a=['<file\x20path=\x22'+_0x498a99['path']+'\x22>'];if(_0x498a99['lines']==='*'||!Array['isArray'](_0x498a99['lines']))for(let _0x14aff5=0x1;_0x14aff5<=_0x3fb205[_0x3f263f(0xf8)];_0x14aff5++){const _0x123327=_0x3fb205[_0x14aff5-0x1];_0x2bf96a['push'](_0x14aff5+'|\x20'+_0x123327);}else for(const [_0x11763d,_0x4c9ded]of _0x498a99[_0x3f263f(0x167)]){_0x2bf96a[_0x3f263f(0xf8)]>0x1&&_0x2bf96a[_0x3f263f(0x15c)]('');for(let _0x5942d2=_0x11763d;_0x5942d2<=_0x4c9ded&&_0x5942d2<=_0x3fb205['length'];_0x5942d2++){const _0x46ff35=_0x3fb205[_0x5942d2-0x1];_0x2bf96a[_0x3f263f(0x15c)](_0x5942d2+'|\x20'+_0x46ff35);}}_0x2bf96a[_0x3f263f(0x15c)](_0x3f263f(0x106)),_0x49b78a[_0x3f263f(0x15c)](_0x2bf96a['join']('\x0a'));}else _0x49b78a['push'](_0x3f263f(0x139)+_0x498a99[_0x3f263f(0x1bc)]+_0x3f263f(0x11f)+(_0x4cb9f5?.[_0x3f263f(0x1b7)]||_0x3f263f(0x1df))+_0x3f263f(0x130));}_0x3e5bdf[_0x3f263f(0x15c)](_0x49b78a[_0x3f263f(0x145)]('\x0a\x0a')),_0x8f1cb9=_0x3e5bdf[_0x3f263f(0x145)]('\x0a');const _0x3cd50a=_0x83fd01[_0x3f263f(0x1e7)]?.[_0x3f263f(0x1d7)](_0x45bffb=>_0x45bffb[_0x3f263f(0x1b7)]?.[_0x3f263f(0x1a3)](_0x3f263f(0x16f)))||[];if(_0x3cd50a[_0x3f263f(0xf8)]>0x0){const _0x287cfa=_0x3cd50a['map'](_0x8ecdfb=>_0x8ecdfb[_0x3f263f(0x1b7)])[_0x3f263f(0x145)](';\x20');reportMorphError({'error_message':_0x287cfa,'error_type':'FileReadError','context':{'tool':_0x3f263f(0x1a9),'repo_path':_0x160ee2[_0x3f263f(0x17d)][_0x3f263f(0x174)],'query':_0x160ee2['data']['search_string'],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x3f263f(0x12a),'error_count':_0x3cd50a['length'],'is_timeout':![],'timings':_0x83fd01['timings'],'files_attempted':_0x42c075[_0x3f263f(0x122)](_0x2fba07=>({'path':_0x2fba07['path'],'lines':_0x2fba07['lines']})),'tool_calls':_0x2bcd96(_0x83fd01[_0x3f263f(0x1bf)]),'messages':_0x83fd01['messages']?.[_0x3f263f(0x122)](_0xdf1a99=>({'role':_0xdf1a99[_0x3f263f(0x192)],'content':_0xdf1a99[_0x3f263f(0x141)]})),'request_content':{'query':_0x160ee2['data'][_0x3f263f(0x13f)],'repo_path':_0x160ee2[_0x3f263f(0x17d)]['repo_path'],'repoRoot':a0_0x409f2d['resolve'](_0x160ee2[_0x3f263f(0x17d)][_0x3f263f(0x174)]),'model':_0x3f263f(0xfe)}},'source':_0x3f263f(0x1e5)})[_0x3f263f(0x14d)](()=>{});}}else{if(_0x83fd01[_0x3f263f(0x14e)]===_0x3f263f(0x1c0)&&_0x83fd01['errors'][_0x3f263f(0xf8)]>0x0){const _0x5f0032=_0x83fd01[_0x3f263f(0x1e7)][_0x3f263f(0x122)](_0x8ffa93=>_0x8ffa93['message'])[_0x3f263f(0x145)](';\x20');_0x8f1cb9=_0x3f263f(0x197)+_0x5f0032;const _0x23d70d=_0x5f0032[_0x3f263f(0x201)]()[_0x3f263f(0x1ee)](_0x3f263f(0x189))||_0x5f0032[_0x3f263f(0x201)]()[_0x3f263f(0x1ee)](_0x3f263f(0x17b))||_0x5f0032[_0x3f263f(0x201)]()[_0x3f263f(0x1ee)](_0x3f263f(0xff)),_0x5b920e=_0x83fd01['finish']?.[_0x3f263f(0x173)]?.[_0x3f263f(0x16c)],_0x5812bc=_0x83fd01[_0x3f263f(0x1e7)][0x0];reportMorphError({'error_message':_0x5f0032,'error_type':_0x23d70d?_0x3f263f(0x120):_0x5812bc?.[_0x3f263f(0x110)]?.[_0x3f263f(0x179)]||_0x3f263f(0xfa),'context':{'tool':_0x3f263f(0x1a9),'repo_path':_0x160ee2[_0x3f263f(0x17d)][_0x3f263f(0x174)],'query':_0x160ee2[_0x3f263f(0x17d)][_0x3f263f(0x13f)],'model':_0x3f263f(0xfe),'termination_reason':_0x83fd01[_0x3f263f(0x14e)],'error_count':_0x83fd01[_0x3f263f(0x1e7)][_0x3f263f(0xf8)],'is_timeout':_0x23d70d,'timings':_0x83fd01['timings'],'files_attempted':_0x5b920e?.[_0x3f263f(0x122)](_0x454674=>({'path':_0x454674[_0x3f263f(0x1bc)],'lines':_0x454674[_0x3f263f(0x167)]})),'tool_calls':_0x2bcd96(_0x83fd01[_0x3f263f(0x1bf)]),'messages':_0x83fd01[_0x3f263f(0x1bf)]?.[_0x3f263f(0x122)](_0x1e03aa=>({'role':_0x1e03aa[_0x3f263f(0x192)],'content':_0x1e03aa[_0x3f263f(0x141)]})),'request_content':{'query':_0x160ee2[_0x3f263f(0x17d)][_0x3f263f(0x13f)],'repo_path':_0x160ee2['data'][_0x3f263f(0x174)],'repoRoot':a0_0x409f2d[_0x3f263f(0x157)](_0x160ee2[_0x3f263f(0x17d)][_0x3f263f(0x174)]),'model':_0x3f263f(0xfe)}},'stack_trace':_0x5812bc?.[_0x3f263f(0x19e)]||undefined,'source':'mcp-filesystem'})[_0x3f263f(0x14d)](()=>{});}else _0x8f1cb9='Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.';}return{'content':[{'type':_0x3f263f(0x1f5),'text':_0x8f1cb9}]};}catch(_0xd98d2a){const _0x5a872e=_0xd98d2a instanceof Error?_0xd98d2a['message']:String(_0xd98d2a),_0x5658fb=_0x5a872e[_0x3f263f(0x201)]()[_0x3f263f(0x1ee)](_0x3f263f(0x189))||_0x5a872e[_0x3f263f(0x201)]()[_0x3f263f(0x1ee)](_0x3f263f(0x17b))||_0x5a872e[_0x3f263f(0x201)]()['includes']('etimedout')||_0xd98d2a instanceof Error&&_0xd98d2a[_0x3f263f(0x179)]==='TimeoutError';return reportMorphError({'error_message':_0x5a872e,'error_type':_0x5658fb?_0x3f263f(0x120):_0xd98d2a instanceof Error?_0xd98d2a[_0x3f263f(0x110)][_0x3f263f(0x179)]:_0x3f263f(0x18e),'context':{'tool':_0x3f263f(0x1a9),'repo_path':_0x160ee2[_0x3f263f(0x17d)][_0x3f263f(0x174)],'query':_0x160ee2[_0x3f263f(0x17d)][_0x3f263f(0x13f)],'model':'morph-warp-grep-v1-1111v0','is_timeout':_0x5658fb,'exception_phase':_0x3f263f(0x107),'request_content':{'query':_0x160ee2[_0x3f263f(0x17d)][_0x3f263f(0x13f)],'repo_path':_0x160ee2[_0x3f263f(0x17d)][_0x3f263f(0x174)],'repoRoot':a0_0x409f2d[_0x3f263f(0x157)](_0x160ee2[_0x3f263f(0x17d)]['repo_path']),'model':'morph-warp-grep-v1-1111v0'}},'stack_trace':_0xd98d2a instanceof Error?_0xd98d2a[_0x3f263f(0x19e)]:undefined,'source':_0x3f263f(0x1e5)})[_0x3f263f(0x14d)](()=>{}),{'content':[{'type':_0x3f263f(0x1f5),'text':'Error\x20running\x20fast\x20context\x20search:\x20'+_0x5a872e}],'isError':![]};}}case _0x3f263f(0x1c6):{const _0x1704eb=CodebaseSearchArgsSchema[_0x3f263f(0x158)](_0x190f16);if(!_0x1704eb[_0x3f263f(0x1b3)])return{'content':[{'type':_0x3f263f(0x1f5),'text':_0x3f263f(0x147)+_0x1704eb[_0x3f263f(0x154)]}],'isError':!![]};try{const _0x1b2cd1=MORPH_API_KEY;if(!_0x1b2cd1)throw new Error(_0x3f263f(0x133));const _0x4a13ec=_0x1704eb[_0x3f263f(0x17d)][_0x3f263f(0x10c)],_0x230402=await executeCodebaseSearch({'query':_0x1704eb[_0x3f263f(0x17d)][_0x3f263f(0x190)],'target_directories':_0x4a13ec,'limit':_0x1704eb[_0x3f263f(0x17d)][_0x3f263f(0x12e)]},{'apiKey':_0x1b2cd1,'repoId':_0x1704eb[_0x3f263f(0x17d)][_0x3f263f(0x13b)],'branch':_0x1704eb[_0x3f263f(0x17d)]['branch'],'commitHash':_0x1704eb[_0x3f263f(0x17d)][_0x3f263f(0x198)],'debug':![]});if(!_0x230402[_0x3f263f(0x1b3)])return{'content':[{'type':'text','text':_0x3f263f(0x16e)+_0x230402['error']}],'isError':!![]};const _0x5744a0=_0x230402[_0x3f263f(0x180)][_0x3f263f(0xf8)]===0x0?_0x3f263f(0x1ab)+_0x1704eb[_0x3f263f(0x17d)][_0x3f263f(0x190)]+'\x22':_0x3f263f(0x116)+_0x230402['results'][_0x3f263f(0xf8)]+_0x3f263f(0x1aa)+_0x230402['stats']['searchTimeMs']+_0x3f263f(0x150)+_0x230402[_0x3f263f(0x180)][_0x3f263f(0x122)]((_0x443308,_0x77aecf)=>_0x77aecf+0x1+'.\x20'+_0x443308[_0x3f263f(0x191)]+'\x20('+(_0x443308[_0x3f263f(0x17a)]*0x64)[_0x3f263f(0xf9)](0x1)+_0x3f263f(0x109)+(_0x3f263f(0x12d)+_0x443308[_0x3f263f(0x17f)]+'-'+_0x443308[_0x3f263f(0x144)]+'\x0a')+(_0x3f263f(0x129)+_0x443308[_0x3f263f(0x141)][_0x3f263f(0xf5)](0x0,0xc8)+(_0x443308[_0x3f263f(0x141)][_0x3f263f(0xf8)]>0xc8?_0x3f263f(0x1ea):'')+'\x0a'))[_0x3f263f(0x145)]('\x0a');return{'content':[{'type':_0x3f263f(0x1f5),'text':_0x5744a0}]};}catch(_0x51febd){const _0x1d6390=_0x51febd instanceof Error?_0x51febd[_0x3f263f(0x1b7)]:String(_0x51febd);return reportMorphError({'error_message':_0x1d6390,'error_type':_0x51febd instanceof Error?_0x51febd[_0x3f263f(0x110)]['name']:_0x3f263f(0x18e),'context':{'tool':'codebase_search','query':_0x1704eb[_0x3f263f(0x17d)][_0x3f263f(0x190)],'repo_id':_0x1704eb[_0x3f263f(0x17d)][_0x3f263f(0x13b)],'target_directories':_0x1704eb['data'][_0x3f263f(0x10c)]},'stack_trace':_0x51febd instanceof Error?_0x51febd[_0x3f263f(0x19e)]:undefined,'source':_0x3f263f(0x1e5)})[_0x3f263f(0x14d)](()=>{}),{'content':[{'type':_0x3f263f(0x1f5),'text':'Error:\x20'+_0x1d6390}],'isError':!![]};}}default:throw new Error(_0x3f263f(0x1dc)+_0x1e83d9);}}catch(_0x4f822f){const _0x15745b=_0x4f822f instanceof Error?_0x4f822f[_0x3f263f(0x1b7)]:String(_0x4f822f);return reportMorphError({'error_message':_0x15745b,'error_type':_0x4f822f instanceof Error?_0x4f822f[_0x3f263f(0x110)][_0x3f263f(0x179)]:'UnknownError','context':{'tool':name,'arguments':args?JSON['stringify'](args)[_0x3f263f(0xf5)](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x4f822f instanceof Error?_0x4f822f[_0x3f263f(0x19e)]:undefined,'source':_0x3f263f(0x1e5)})[_0x3f263f(0x14d)](()=>{}),{'content':[{'type':_0x3f263f(0x1f5),'text':_0x3f263f(0x197)+_0x15745b}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x2557a3){const _0xcb272c=a0_0x4d2c03,_0x42fb37=await getValidRootDirectories(_0x2557a3);if(_0x42fb37[_0xcb272c(0xf8)]>0x0)allowedDirectories=[..._0x42fb37],console[_0xcb272c(0x154)](_0xcb272c(0x187)+_0x42fb37[_0xcb272c(0xf8)]+_0xcb272c(0x119));else{console[_0xcb272c(0x154)]('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x2bcf46=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x2bcf46&&(allowedDirectories=[_0x2bcf46],console[_0xcb272c(0x154)](_0xcb272c(0x100)+_0x2bcf46));}catch(_0x561c11){console[_0xcb272c(0x154)]('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x561c11);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x58a416=a0_0x4d2c03;try{const _0x272698=await server['listRoots']();_0x272698&&'roots'in _0x272698&&await updateAllowedDirectoriesFromRoots(_0x272698[_0x58a416(0x143)]);}catch(_0x2f1d7e){console['error'](_0x58a416(0x195),_0x2f1d7e instanceof Error?_0x2f1d7e[_0x58a416(0x1b7)]:String(_0x2f1d7e));}}),server[a0_0x4d2c03(0x1ff)]=async()=>{const _0x1cc742=a0_0x4d2c03,_0x103894=server[_0x1cc742(0x1c5)]();if(_0x103894?.[_0x1cc742(0x143)])try{const _0x26abc0=await server[_0x1cc742(0x135)]();_0x26abc0&&'roots'in _0x26abc0?await updateAllowedDirectoriesFromRoots(_0x26abc0[_0x1cc742(0x143)]):console[_0x1cc742(0x154)](_0x1cc742(0x1c4));}catch(_0x1c0130){console[_0x1cc742(0x154)]('Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:',_0x1c0130 instanceof Error?_0x1c0130[_0x1cc742(0x1b7)]:String(_0x1c0130));}else{if(allowedDirectories[_0x1cc742(0xf8)]>0x0)console[_0x1cc742(0x154)](_0x1cc742(0x126),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console[_0x1cc742(0x154)](_0x1cc742(0x160));else throw new Error(_0x1cc742(0x1e0));}}};async function runServer(){const _0x45512b=a0_0x4d2c03,_0x144c62=new StdioServerTransport();await server[_0x45512b(0x103)](_0x144c62),console['error'](_0x45512b(0x175)),allowedDirectories[_0x45512b(0xf8)]===0x0&&console['error'](_0x45512b(0x1b5));}runServer()[a0_0x4d2c03(0x14d)](_0x15ee38=>{const _0x365374=a0_0x4d2c03;console[_0x365374(0x154)](_0x365374(0x19a),_0x15ee38),process[_0x365374(0x1ec)](0x1);});
2
+ const a0_0x3a1ec5=a0_0x2b2d;(function(_0xbf6812,_0x7c4ab8){const _0xb712ab=a0_0x2b2d,_0xc1e7aa=_0xbf6812();while(!![]){try{const _0x515a67=parseInt(_0xb712ab(0x127))/0x1+parseInt(_0xb712ab(0x132))/0x2*(parseInt(_0xb712ab(0x19c))/0x3)+parseInt(_0xb712ab(0x16c))/0x4*(parseInt(_0xb712ab(0x145))/0x5)+parseInt(_0xb712ab(0x103))/0x6*(parseInt(_0xb712ab(0xb7))/0x7)+parseInt(_0xb712ab(0xc9))/0x8*(-parseInt(_0xb712ab(0x115))/0x9)+parseInt(_0xb712ab(0x14e))/0xa+-parseInt(_0xb712ab(0x90))/0xb;if(_0x515a67===_0x7c4ab8)break;else _0xc1e7aa['push'](_0xc1e7aa['shift']());}catch(_0x4e4ba0){_0xc1e7aa['push'](_0xc1e7aa['shift']());}}}(a0_0x26fd,0x5a929));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_0x1f3199 from'fs/promises';import a0_0x43b453 from'path';import a0_0x234c11 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';function a0_0x26fd(){const _0x53407e=['225279NcOOzk','edit_file','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','mcp-filesystem','-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a','MORPH_WARP_GREP_TIMEOUT','changes','terminationReason','basename','list_directory\x20','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','rerankScore','query','toISOString','Unknown\x20tool:\x20','--api-key=','metadata','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','linesRemoved','11941281oWBnsH','endLine','Max\x20results\x20to\x20return','morph-warp-grep-v1-1111v0','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.','ENOENT','FileReadError','access','morph-v3-fast','toLowerCase','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','error','-\x20Read\x20file\x20`','RipgrepNotAvailable','\x0a</file>','now','--help','default','completed','@morphllm/morphmcp\x20','-\x20Grepped\x20\x27','</file>','-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a','\x0a...\x20(truncated,\x20total:\x20','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','indexOf','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','Parent\x20directory\x20does\x20not\x20exist:\x20','setRequestHandler','.git','resolve','length','object',',\x20modified\x20','source','\x20error(s)','log','Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','terminated','1714188ncMzqD','\x20\x20\x20','TimeoutError','Fatal\x20error\x20running\x20server:','**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','min','UnknownError','code','\x20results\x20in\x20','repo_path','targetDirectories','Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for','-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a','name','BinaryFile','19928LLebko','startLine','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','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','includes','\x20chars)','etimedout','homedir','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','morph-mcp','ENABLED_TOOLS','all','substring','PathError','every','results','grep','connect','GitHub\x20search\x20failed:\x20','roots','[warpgrep_github_search]\x20Done\x20in\x20','argv','stats','branch','Morph\x20Edit\x20Preview','Bearer\x20','https://morphllm.com/api/error-report','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','path','FileNotFound','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','data','text','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','isArray','code_edit','.\x20Path:\x20','github_url','limit','optional','join','finish','cwd','user','oninitialized','payload','[warpgrep_github_search]\x20Failed\x20in\x20','string','ToolException','success','.\x20Changes:\x20','Unknown\x20error','SubToolError','number','RipgrepError','Rules:\x0a','params','12rmEESD','timeout','stack','\x20(new\x20file)','Error\x20running\x20fast\x20context\x20search:\x20','\x20as\x20allowed\x20directory','searchTimeMs','realpath','GitHub\x20repository\x20URL\x20or\x20\x27owner/repo\x27\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27\x20or\x20\x27https://github.com/vercel/next.js\x27)','safeParse','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','added\x20','\x20\x20morph-mcp','inputSchema','slice','tsconfig.json','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','\x27\x20in\x20`','1044zTCSBl','match','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','Enabled\x20tools:\x20','Benefits:\x0a','read','split','This\x20tool\x20invokes\x20a\x20subagent\x20that\x20runs\x20parallel\x20grep\x20and\x20readfile\x20calls\x20over\x20multiple\x20turns\x20to\x20locate\x20line\x20ranges\x20and\x20files\x20which\x20might\x20be\x20relevant\x20to\x20the\x20request.\x20','\x22>\x0aError\x20reading\x20file:\x20','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','ReadError','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','push','boolean','env','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','Invalid\x20arguments:\x20','467455iEFDOv','catch','instruction','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','Failed\x20to\x20request\x20roots\x20from\x20client:','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','Relevant\x20context\x20found:','go.mod','readFile','filepath','2ZtJMQD','errors','startsWith','exit','PWD','message','ms.\x20Success:\x20','dryRun','--version','search_string','0.2.0','constructor','repoId','filter','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','version','Applied','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','linesModified','2544165AgdnOf','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','getClientCapabilities','🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','messages','\x20-\x20','commitHash','\x0aExamples:','2043630cvFttg','describe','timings','toFixed','warpgrep_codebase_search','ENABLE_WORKSPACE_MODE','\x20\x20\x20Lines\x20','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','../package.json','unknown','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','trim','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','For\x20deletions:\x0a','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','files','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','MORPH_API_URL','No\x20results\x20found\x20for\x20query:\x20\x22','\x0aOptions:','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','Found\x20','warpgrep_github_search','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','application/json','\x20for:\x20\x22','WORKSPACE_ROOT','4fLtZHf','pyproject.toml','has',',\x20removed\x20','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','Error:\x20','Search\x20failed:\x20','codebase_search','<file\x20path=\x22','content','-\x20Listed\x20directory\x20`','stat','Fallback:\x20Using\x20workspace\x20root\x20','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','sk-','Preview\x20changes\x20without\x20applying\x20them.','warn','timed\x20out','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','Warning:\x20','lines','%\x20match)\x0a','.vscode','stringify','map','package.json','WarpGrepError','Warning:\x20Workspace\x20fallback\x20failed:\x20','sep','assistant','runWarpGrep_call','ms:','File\x20read\x20error:','grep\x20\x27','Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','Natural\x20language\x20query\x20to\x20search\x20for\x20code','Repository\x20identifier','\x20valid\x20directories','utf-8','Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20','ms:\x0a\x0a','Workspace\x20mode\x20enabled:\x20Using\x20','dirname','role','Error\x20accessing\x20directory\x20'];a0_0x26fd=function(){return _0x53407e;};return a0_0x26fd();}import{getValidRootDirectories}from'./roots-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import{executeCodebaseSearch}from'@morphllm/morphsdk/tools/codebase-search';import a0_0x31caeb from'axios';function fixPathRepetition(_0x1832c4){const _0x5a48c7=a0_0x2b2d,_0x4028fa=_0x1832c4[_0x5a48c7(0x11b)](a0_0x43b453[_0x5a48c7(0x189)])[_0x5a48c7(0x13f)](Boolean);if(_0x4028fa[_0x5a48c7(0xaf)]<0x2)return null;for(let _0x76a232=Math['floor'](_0x4028fa['length']/0x2);_0x76a232>=0x1;_0x76a232--){for(let _0x32c173=0x0;_0x32c173<=_0x4028fa[_0x5a48c7(0xaf)]-0x2*_0x76a232;_0x32c173++){const _0xefe60=_0x4028fa[_0x5a48c7(0x111)](_0x32c173,_0x32c173+_0x76a232),_0x1c3e54=_0x4028fa['slice'](_0x32c173+_0x76a232,_0x32c173+0x2*_0x76a232);if(_0xefe60[_0x5a48c7(0xd8)]((_0x4e4851,_0x3257b8)=>_0x4e4851===_0x1c3e54[_0x3257b8])){const _0x360370=[..._0x4028fa['slice'](0x0,_0x32c173),..._0x4028fa[_0x5a48c7(0x111)](_0x32c173+_0x76a232)];return a0_0x43b453[_0x5a48c7(0x189)]+_0x360370[_0x5a48c7(0xf2)](a0_0x43b453[_0x5a48c7(0x189)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x211718=a0_0x2b2d;try{const _0x418fb6=require(_0x211718(0x158));return _0x418fb6[_0x211718(0x141)]??_0x211718(0x159);}catch(_0x798712){return console['error'](_0x211718(0x15f),_0x798712),_0x211718(0x159);}}function a0_0x2b2d(_0x2d47d6,_0x4521b8){_0x2d47d6=_0x2d47d6-0x85;const _0x26fde2=a0_0x26fd();let _0x2b2dee=_0x26fde2[_0x2d47d6];return _0x2b2dee;}function printHelp(){const _0x71cbdd=a0_0x2b2d;console[_0x71cbdd(0xb4)](_0x71cbdd(0xa3)+getPackageVersion()),console['log'](_0x71cbdd(0x8e)),console[_0x71cbdd(0xb4)](_0x71cbdd(0x164)),console[_0x71cbdd(0xb4)](_0x71cbdd(0xd2)),console[_0x71cbdd(0xb4)](_0x71cbdd(0x9a)),console['log'](_0x71cbdd(0x15a)),console[_0x71cbdd(0xb4)](_0x71cbdd(0x14d)),console[_0x71cbdd(0xb4)](_0x71cbdd(0x10f)),console['log'](_0x71cbdd(0x120));}const cliArgs=process[a0_0x3a1ec5(0xdf)][a0_0x3a1ec5(0x111)](0x2),VERSION_FLAGS=new Set([a0_0x3a1ec5(0x13a),'-v','-V']),HELP_FLAGS=new Set([a0_0x3a1ec5(0xa0),'-h']);cliArgs['some'](_0x13b1ee=>VERSION_FLAGS[a0_0x3a1ec5(0x16e)](_0x13b1ee))&&(console['log'](a0_0x3a1ec5(0xa3)+getPackageVersion()),process[a0_0x3a1ec5(0x135)](0x0));cliArgs['some'](_0x1b62e8=>HELP_FLAGS[a0_0x3a1ec5(0x16e)](_0x1b62e8))&&(printHelp(),process[a0_0x3a1ec5(0x135)](0x0));function getCliArg(_0x4b2b3b){const _0x4152b7=a0_0x3a1ec5;for(let _0x8f1794=0x0;_0x8f1794<cliArgs[_0x4152b7(0xaf)];_0x8f1794++){const _0x350552=cliArgs[_0x8f1794];if(_0x350552['startsWith']('--'+_0x4b2b3b+'='))return _0x350552[_0x4152b7(0x111)](('--'+_0x4b2b3b+'=')[_0x4152b7(0xaf)]);if(_0x350552==='--'+_0x4b2b3b&&_0x8f1794+0x1<cliArgs[_0x4152b7(0xaf)])return cliArgs[_0x8f1794+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x3a1ec5(0xaf)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x3a1ec5(0x16e)](arg)||HELP_FLAGS[a0_0x3a1ec5(0x16e)](arg))continue;if(arg[a0_0x3a1ec5(0x134)](a0_0x3a1ec5(0x8c)))continue;if(arg==='--api-key'){i++;continue;}args[a0_0x3a1ec5(0x121)](arg);}const ALL_TOOLS=[a0_0x3a1ec5(0x19d),a0_0x3a1ec5(0x152),a0_0x3a1ec5(0x167),a0_0x3a1ec5(0x173)],DEFAULT_TOOLS=[a0_0x3a1ec5(0x19d),a0_0x3a1ec5(0x152)],ENABLED_TOOLS=process[a0_0x3a1ec5(0x123)]['ENABLED_TOOLS']?process[a0_0x3a1ec5(0x123)]['ENABLED_TOOLS']===a0_0x3a1ec5(0xd5)?ALL_TOOLS:process[a0_0x3a1ec5(0x123)][a0_0x3a1ec5(0xd4)]['split'](',')[a0_0x3a1ec5(0x185)](_0x3ffc58=>_0x3ffc58[a0_0x3a1ec5(0x15b)]()):DEFAULT_TOOLS;console[a0_0x3a1ec5(0x9b)](a0_0x3a1ec5(0x118)+ENABLED_TOOLS[a0_0x3a1ec5(0xf2)](',\x20'));const WORKSPACE_ROOT=process['env'][a0_0x3a1ec5(0x16b)]||process['env'][a0_0x3a1ec5(0x136)]||process[a0_0x3a1ec5(0xf4)](),ENABLE_WORKSPACE_MODE=process[a0_0x3a1ec5(0x123)][a0_0x3a1ec5(0x153)]!=='false',MORPH_API_KEY=getCliArg('api-key')??process[a0_0x3a1ec5(0x123)]['MORPH_API_KEY'],MORPH_API_URL=process[a0_0x3a1ec5(0x123)][a0_0x3a1ec5(0x162)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x3a1ec5(0x123)][a0_0x3a1ec5(0x1a1)]?parseInt(process[a0_0x3a1ec5(0x123)][a0_0x3a1ec5(0x1a1)],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY[a0_0x3a1ec5(0x134)](a0_0x3a1ec5(0x17b))&&!MORPH_API_KEY['startsWith']('morph-')&&console[a0_0x3a1ec5(0x9b)](a0_0x3a1ec5(0x12b));async function reportMorphError(_0x1031d8){const _0x89900e=a0_0x3a1ec5;try{await a0_0x31caeb['post'](_0x89900e(0xe4),{..._0x1031d8,'timestamp':new Date()[_0x89900e(0x8a)](),'source':_0x1031d8[_0x89900e(0xb2)]||_0x89900e(0x19f)},{'timeout':0x1388,'headers':{'Content-Type':_0x89900e(0x169),'Authorization':_0x89900e(0xe3)+MORPH_API_KEY}});}catch{}}args[a0_0x3a1ec5(0xaf)]===0x0&&!ENABLE_WORKSPACE_MODE&&(console['error'](a0_0x3a1ec5(0x15c)),console[a0_0x3a1ec5(0x9b)]('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),console[a0_0x3a1ec5(0x9b)](a0_0x3a1ec5(0x124)),console[a0_0x3a1ec5(0x9b)](a0_0x3a1ec5(0x17a)),console[a0_0x3a1ec5(0x9b)](a0_0x3a1ec5(0x161)),console[a0_0x3a1ec5(0x9b)](a0_0x3a1ec5(0xc5)));function normalizePath(_0x239590){return a0_0x43b453['normalize'](_0x239590);}function expandHome(_0x28653a){const _0x259bd2=a0_0x3a1ec5;if(_0x28653a[_0x259bd2(0x134)]('~/')||_0x28653a==='~')return a0_0x43b453[_0x259bd2(0xf2)](a0_0x234c11[_0x259bd2(0xd0)](),_0x28653a[_0x259bd2(0x111)](0x1));return _0x28653a;}let allowedDirectories=await Promise['all'](args[a0_0x3a1ec5(0x185)](async _0x3bf6ff=>{const _0x56ddf0=a0_0x3a1ec5,_0x241495=expandHome(_0x3bf6ff),_0x188035=a0_0x43b453['resolve'](_0x241495);try{const _0x117ca8=await a0_0x1f3199[_0x56ddf0(0x10a)](_0x188035);return normalizePath(_0x117ca8);}catch(_0x3f6170){return normalizePath(_0x188035);}}));if(ENABLE_WORKSPACE_MODE&&args['length']===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x3a1ec5(0x121)](workspaceDir),console['error'](a0_0x3a1ec5(0x198)+workspaceDir+a0_0x3a1ec5(0x108)));}catch(a0_0x5a76c8){console[a0_0x3a1ec5(0x9b)]('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x5a76c8);}async function detectWorkspaceRoot(_0x229532){const _0x39bafd=a0_0x3a1ec5;let _0x587b8a=a0_0x43b453['resolve'](_0x229532);const _0x55e145=[_0x39bafd(0xad),_0x39bafd(0x183),_0x39bafd(0x186),'Cargo.toml',_0x39bafd(0x16d),_0x39bafd(0x12f),'.cursor',_0x39bafd(0x112),'composer.json'];while(_0x587b8a!==a0_0x43b453['dirname'](_0x587b8a)){for(const _0x21aaf6 of _0x55e145){const _0x559b26=a0_0x43b453[_0x39bafd(0xf2)](_0x587b8a,_0x21aaf6);try{return await a0_0x1f3199[_0x39bafd(0x97)](_0x559b26),normalizePath(_0x587b8a);}catch{}}_0x587b8a=a0_0x43b453[_0x39bafd(0x199)](_0x587b8a);}return normalizePath(_0x229532);}await Promise[a0_0x3a1ec5(0xd5)](args[a0_0x3a1ec5(0x185)](async _0x239423=>{const _0x29d7ad=a0_0x3a1ec5;try{const _0x46a098=await a0_0x1f3199[_0x29d7ad(0x177)](expandHome(_0x239423));!_0x46a098['isDirectory']()&&(console[_0x29d7ad(0x9b)](_0x29d7ad(0x171)+_0x239423+'\x20is\x20not\x20a\x20directory'),process['exit'](0x1));}catch(_0x3a004d){console[_0x29d7ad(0x9b)](_0x29d7ad(0x19b)+_0x239423+':',_0x3a004d),process[_0x29d7ad(0x135)](0x1);}}));async function validatePath(_0xf11971){const _0x5f10dc=a0_0x3a1ec5,_0x380b58=expandHome(_0xf11971),_0x2fe3b3=a0_0x43b453[_0x5f10dc(0xae)](_0x380b58);try{const _0x34255c=await a0_0x1f3199[_0x5f10dc(0x10a)](_0x2fe3b3);return _0x34255c;}catch(_0x278951){if(_0x278951[_0x5f10dc(0xbf)]===_0x5f10dc(0x95)){const _0x3e0ec4=a0_0x43b453[_0x5f10dc(0x199)](_0x2fe3b3);try{const _0x6c40f3=await a0_0x1f3199[_0x5f10dc(0x10a)](_0x3e0ec4);return a0_0x43b453['join'](_0x6c40f3,a0_0x43b453[_0x5f10dc(0x85)](_0x2fe3b3));}catch{throw new Error(_0x5f10dc(0xab)+_0x3e0ec4);}}throw _0x278951;}}const MorphEditFileArgsSchema=z[a0_0x3a1ec5(0xb0)]({'path':z[a0_0x3a1ec5(0xf9)](),'code_edit':z['string']()[a0_0x3a1ec5(0x14f)](a0_0x3a1ec5(0x113)),'instruction':z[a0_0x3a1ec5(0xf9)]()[a0_0x3a1ec5(0x14f)](a0_0x3a1ec5(0xa8)),'dryRun':z[a0_0x3a1ec5(0x122)]()[a0_0x3a1ec5(0xa1)](![])[a0_0x3a1ec5(0x14f)](a0_0x3a1ec5(0x17c))}),WarpGrepArgsSchema=z['object']({'search_string':z[a0_0x3a1ec5(0xf9)]()['describe'](a0_0x3a1ec5(0xc3)),'repo_path':z['string']()[a0_0x3a1ec5(0x14f)](a0_0x3a1ec5(0xcc))}),WarpGrepGitHubArgsSchema=z[a0_0x3a1ec5(0xb0)]({'search_string':z['string']()['describe']('Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for'),'github_url':z[a0_0x3a1ec5(0xf9)]()[a0_0x3a1ec5(0x14f)](a0_0x3a1ec5(0x10b)),'branch':z[a0_0x3a1ec5(0xf9)]()[a0_0x3a1ec5(0xf1)]()[a0_0x3a1ec5(0x14f)](a0_0x3a1ec5(0x12a))}),CodebaseSearchArgsSchema=z[a0_0x3a1ec5(0xb0)]({'query':z[a0_0x3a1ec5(0xf9)]()['describe'](a0_0x3a1ec5(0x192)),'repoId':z[a0_0x3a1ec5(0xf9)]()[a0_0x3a1ec5(0x14f)](a0_0x3a1ec5(0x193)),'branch':z['string']()[a0_0x3a1ec5(0xf1)]()['describe'](a0_0x3a1ec5(0x168)),'commitHash':z[a0_0x3a1ec5(0xf9)]()[a0_0x3a1ec5(0xf1)]()['describe']('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z['array'](z[a0_0x3a1ec5(0xf9)]())[a0_0x3a1ec5(0xa1)]([])[a0_0x3a1ec5(0x14f)](a0_0x3a1ec5(0x11e)),'limit':z[a0_0x3a1ec5(0xff)]()['optional']()[a0_0x3a1ec5(0xa1)](0xa)[a0_0x3a1ec5(0x14f)](a0_0x3a1ec5(0x92))}),server=new Server({'name':a0_0x3a1ec5(0xd3),'version':a0_0x3a1ec5(0x13c)},{'capabilities':{'tools':{}}});server[a0_0x3a1ec5(0xac)](ListToolsRequestSchema,async()=>{const _0x38a727=a0_0x3a1ec5,_0x571e8a=[{'name':_0x38a727(0x19d),'description':_0x38a727(0x179)+_0x38a727(0x149)+_0x38a727(0x156)+_0x38a727(0x190)+_0x38a727(0x119)+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x38a727(0x140)+_0x38a727(0x191)+_0x38a727(0x143)+_0x38a727(0x170)+_0x38a727(0x125)+_0x38a727(0xe8)+_0x38a727(0x15d)+_0x38a727(0x165)+'-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a'+_0x38a727(0x101)+'-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a'+_0x38a727(0x146)+_0x38a727(0x17f)+'-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a'+'-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a'+_0x38a727(0xbc)+_0x38a727(0x10d),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':'warpgrep_codebase_search','description':_0x38a727(0x155)+_0x38a727(0x11c)+'The\x20search\x20term\x20should\x20be\x20a\x20targeted\x20natural\x20language\x20query\x20based\x20on\x20what\x20you\x20are\x20trying\x20to\x20accomplish,\x20like\x20\x27Find\x20where\x20authentication\x20requests\x20are\x20handled\x20in\x20the\x20Express\x20routes\x27\x20or\x20\x27Modify\x20the\x20agentic\x20rollout\x20to\x20use\x20the\x20new\x20tokenizer\x20and\x20chat\x20template\x27\x20or\x20\x27Fix\x20the\x20bug\x20where\x20the\x20user\x20gets\x20redirected\x20from\x20the\x20/feed\x20page\x27.\x20'+'Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20'+'You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.'+'Note:\x20The\x20files\x20and\x20line\x20ranges\x20returned\x20by\x20this\x20tool\x20may\x20be\x20some\x20of\x20the\x20ones\x20needed\x20to\x20complete\x20the\x20user\x27s\x20request,\x20but\x20you\x20should\x20be\x20careful\x20in\x20evaluating\x20the\x20relevance\x20of\x20the\x20results,\x20since\x20the\x20subagent\x20might\x20make\x20mistakes.\x20'+_0x38a727(0x19e)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]},{'name':_0x38a727(0x173),'description':_0x38a727(0xbb)+'⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a'+_0x38a727(0x148)+_0x38a727(0x119)+_0x38a727(0xc4)+_0x38a727(0x1a0)+_0x38a727(0xa6)+_0x38a727(0xc6)+_0x38a727(0x18f)+_0x38a727(0x196)+_0x38a727(0xb5),'inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x18dfa6=_0x571e8a[_0x38a727(0x13f)](_0x85cc6a=>{const _0x538b1a=_0x38a727;if(!ENABLED_TOOLS[_0x538b1a(0xcd)](_0x85cc6a[_0x538b1a(0xc7)]))return![];if('requiresApiKey'in _0x85cc6a&&_0x85cc6a['requiresApiKey']&&!MORPH_API_KEY)return console[_0x538b1a(0x9b)]('Warning:\x20'+_0x85cc6a['name']+_0x538b1a(0xeb)),![];return!![];});return{'tools':_0x18dfa6[_0x38a727(0x185)](_0x4e75df=>({'name':_0x4e75df['name'],'description':_0x4e75df['description'],'inputSchema':_0x4e75df[_0x38a727(0x110)]}))};}),server[a0_0x3a1ec5(0xac)](CallToolRequestSchema,async _0x5c7384=>{const _0x4e6dd6=a0_0x3a1ec5;try{const {name:_0x24e3c8,arguments:_0x1d4119}=_0x5c7384[_0x4e6dd6(0x102)];switch(_0x24e3c8){case _0x4e6dd6(0x19d):{const _0x6b7472=MorphEditFileArgsSchema[_0x4e6dd6(0x10c)](_0x1d4119);if(!_0x6b7472[_0x4e6dd6(0xfb)])throw new Error(_0x4e6dd6(0xe5)+_0x6b7472[_0x4e6dd6(0x9b)]);const _0x2bd5d3=await validatePath(_0x6b7472[_0x4e6dd6(0xe9)][_0x4e6dd6(0xe6)]);let _0x6b3308=null,_0x443714=!![],_0x311f4b=null;try{_0x6b3308=await a0_0x1f3199[_0x4e6dd6(0x130)](_0x2bd5d3,_0x4e6dd6(0x195));}catch(_0x4f17ea){const _0x23d76a=_0x4f17ea[_0x4e6dd6(0xbf)];_0x23d76a===_0x4e6dd6(0x95)?(_0x443714=![],_0x6b3308=''):(_0x311f4b='Failed\x20to\x20read\x20file:\x20'+(_0x23d76a||_0x4e6dd6(0x159))+_0x4e6dd6(0x14b)+(_0x4f17ea instanceof Error?_0x4f17ea[_0x4e6dd6(0x137)]:String(_0x4f17ea)),console['error'](_0x4e6dd6(0x180)+_0x311f4b));}let _0x29ccda;try{const _0x497cd0=MORPH_API_KEY;if(!_0x497cd0)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x5db368=a0_0x43b453[_0x4e6dd6(0x199)](_0x2bd5d3),_0xd638b1=a0_0x43b453['basename'](_0x2bd5d3),_0x446dc0=await executeEditFile({'target_filepath':_0xd638b1,'code_edit':_0x6b7472[_0x4e6dd6(0xe9)][_0x4e6dd6(0xed)],'instructions':_0x6b7472['data'][_0x4e6dd6(0x129)]},{'morphApiKey':_0x497cd0,'morphApiUrl':MORPH_API_URL,'baseDir':_0x5db368,'autoWrite':!_0x6b7472[_0x4e6dd6(0xe9)][_0x4e6dd6(0x139)],'generateUdiff':![],'debug':![]});_0x29ccda=_0x446dc0['completionId'];if(!_0x446dc0[_0x4e6dd6(0xfb)])throw new Error(_0x446dc0[_0x4e6dd6(0x9b)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x1823ec=_0x446dc0[_0x4e6dd6(0x1a2)],_0x15bad7=_0x4e6dd6(0x10e)+_0x1823ec['linesAdded']+_0x4e6dd6(0x16f)+_0x1823ec[_0x4e6dd6(0x8f)]+_0x4e6dd6(0xb1)+_0x1823ec[_0x4e6dd6(0x144)];if(_0x6b7472[_0x4e6dd6(0xe9)][_0x4e6dd6(0x139)])return{'content':[{'type':_0x4e6dd6(0xea),'text':_0x4e6dd6(0xe2)+(_0x443714?'':_0x4e6dd6(0x106))+':\x20'+_0x6b7472['data'][_0x4e6dd6(0x129)]+'.\x20Changes:\x20'+_0x15bad7+'.\x20Path:\x20'+_0x6b7472[_0x4e6dd6(0xe9)][_0x4e6dd6(0xe6)]+'.'}]};return{'content':[{'type':_0x4e6dd6(0xea),'text':'Morph\x20Edit\x20'+(_0x443714?_0x4e6dd6(0x142):'Created\x20File')+':\x20'+_0x6b7472['data'][_0x4e6dd6(0x129)]+_0x4e6dd6(0xfc)+_0x15bad7+_0x4e6dd6(0xee)+_0x6b7472[_0x4e6dd6(0xe9)][_0x4e6dd6(0xe6)]+'.'}]};}catch(_0x360f30){const _0x207030=_0x360f30 instanceof Error?_0x360f30[_0x4e6dd6(0x137)]:String(_0x360f30);return reportMorphError({'error_message':_0x207030,'error_type':_0x360f30 instanceof Error?_0x360f30['constructor']['name']:_0x4e6dd6(0xbe),'context':{'tool':_0x4e6dd6(0x19d),'completion_id':_0x29ccda,'file_path':_0x6b7472[_0x4e6dd6(0xe9)][_0x4e6dd6(0xe6)],'validated_path':_0x2bd5d3,'instruction':_0x6b7472[_0x4e6dd6(0xe9)][_0x4e6dd6(0x129)],'model':_0x4e6dd6(0x98),'dry_run':_0x6b7472['data'][_0x4e6dd6(0x139)],'file_exists':_0x443714,'file_read_error':_0x311f4b,'file_readable':_0x6b3308!==null,'request_content':{'path':_0x6b7472[_0x4e6dd6(0xe9)][_0x4e6dd6(0xe6)],'code_edit':_0x6b7472[_0x4e6dd6(0xe9)][_0x4e6dd6(0xed)],'instruction':_0x6b7472[_0x4e6dd6(0xe9)][_0x4e6dd6(0x129)],'original_code':_0x6b3308!==null?_0x6b3308[_0x4e6dd6(0xaf)]>0xc350?_0x6b3308['substring'](0x0,0xc350)+_0x4e6dd6(0xa7)+_0x6b3308[_0x4e6dd6(0xaf)]+_0x4e6dd6(0xce):_0x6b3308:'[could\x20not\x20read\x20file:\x20'+(_0x311f4b||'unknown\x20error')+']','original_code_length':_0x6b3308?.['length']??0x0,'model':_0x4e6dd6(0x98),'dry_run':_0x6b7472[_0x4e6dd6(0xe9)][_0x4e6dd6(0x139)]}},'stack_trace':_0x360f30 instanceof Error?_0x360f30[_0x4e6dd6(0x105)]:undefined,'source':_0x4e6dd6(0x19f)})['catch'](()=>{}),{'content':[{'type':_0x4e6dd6(0xea),'text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x207030}],'isError':!![]};}}case _0x4e6dd6(0x152):{const _0x429ab7=WarpGrepArgsSchema[_0x4e6dd6(0x10c)](_0x1d4119);if(!_0x429ab7[_0x4e6dd6(0xfb)])return{'content':[{'type':_0x4e6dd6(0xea),'text':'Invalid\x20arguments:\x20'+_0x429ab7['error']}],'isError':!![]};const _0x488806=_0xa1245d=>{const _0x1c5760=_0x4e6dd6,_0x74cb30=[];for(const _0x1102f7 of _0xa1245d||[]){const _0x15bf1b=_0x1102f7[_0x1c5760(0x19a)],_0x830479=_0x1102f7[_0x1c5760(0x175)];if(_0x15bf1b===_0x1c5760(0x18a)&&_0x830479){const _0x443134=_0x830479['split']('\x0a')['filter'](_0x403d97=>_0x403d97[_0x1c5760(0x15b)]());for(const _0x3f112f of _0x443134){const _0x3fd58f=_0x3f112f[_0x1c5760(0x116)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x3fd58f){_0x74cb30['push'](_0x1c5760(0x18e)+_0x3fd58f[0x1]+'\x27\x20'+_0x3fd58f[0x2]);continue;}const _0x485ce7=_0x3f112f[_0x1c5760(0x116)](/^read\s+(.+)$/);if(_0x485ce7){_0x74cb30[_0x1c5760(0x121)]('read\x20'+_0x485ce7[0x1]);continue;}const _0x579bfe=_0x3f112f['match'](/^list_directory\s+(.+)$/);if(_0x579bfe){_0x74cb30[_0x1c5760(0x121)](_0x1c5760(0x86)+_0x579bfe[0x1]);continue;}}}}return _0x74cb30;},_0x2dfbec=_0x237bc9=>{const _0x23ad93=_0x4e6dd6,_0x37b582=[];if(!_0x237bc9||!Array[_0x23ad93(0xec)](_0x237bc9))return _0x37b582;const _0x1f9d79=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x23ad93(0xe7),'tool':_0x23ad93(0x11a)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x23ad93(0xd7),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x23ad93(0x11f),'tool':_0x23ad93(0x11a)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x23ad93(0xc8),'tool':_0x23ad93(0x11a)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x23ad93(0x100),'tool':_0x23ad93(0xda)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x23ad93(0x9d),'tool':_0x23ad93(0xda)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x23ad93(0xc8),'tool':_0x23ad93(0x11a)},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':_0x23ad93(0x11a)},{'pattern':/not a text file/,'error_type':_0x23ad93(0xc8),'tool':_0x23ad93(0x11a)},{'pattern':/symbolic link/,'error_type':'SymlinkError','tool':_0x23ad93(0x11a)},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':_0x23ad93(0x11a)},{'pattern':/status="error"/,'error_type':_0x23ad93(0xfa),'tool':_0x23ad93(0x159)}];let _0xd61132=0x0;for(const _0x37cc08 of _0x237bc9){if(_0x37cc08[_0x23ad93(0x19a)]===_0x23ad93(0xf5)){_0xd61132++;const _0xc058f0=_0x37cc08[_0x23ad93(0x175)];if(!_0xc058f0||typeof _0xc058f0!=='string')continue;for(const {pattern:_0x39f10d,error_type:_0x1193fd,tool:_0x463f73}of _0x1f9d79){const _0x3637d2=_0xc058f0[_0x23ad93(0x116)](new RegExp(_0x39f10d[_0x23ad93(0xb2)],'g'));if(_0x3637d2)for(const _0x1c801d of _0x3637d2){const _0x3e31a4=_0xc058f0[_0x23ad93(0xa9)](_0x1c801d),_0x1d3595=_0xc058f0[_0x23ad93(0xd6)](_0x3e31a4,Math[_0x23ad93(0xbd)](_0x3e31a4+0xc8,_0xc058f0[_0x23ad93(0xaf)]));_0x37b582[_0x23ad93(0x121)]({'tool':_0x463f73,'error_type':_0x1193fd,'error_message':_0x1d3595['split']('\x0a')[0x0],'turn':_0xd61132});}}}}return _0x37b582;};try{const _0x11d593=a0_0x43b453['resolve'](_0x429ab7[_0x4e6dd6(0xe9)][_0x4e6dd6(0xc1)]),_0x5c705c=new LocalRipgrepProvider(_0x11d593),_0x20f6ab=await runWarpGrep({'query':_0x429ab7['data'][_0x4e6dd6(0x13b)],'repoRoot':_0x11d593,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x5c705c}),_0x11dee1=_0x2dfbec(_0x20f6ab['messages']);_0x11dee1[_0x4e6dd6(0xaf)]>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x11dee1['length']+_0x4e6dd6(0xb3),'error_type':_0x4e6dd6(0xfe),'level':_0x4e6dd6(0x17d),'tool':_0x4e6dd6(0x152),'context':{'repo_path':_0x429ab7[_0x4e6dd6(0xe9)]['repo_path'],'query':_0x429ab7[_0x4e6dd6(0xe9)]['search_string'],'model':_0x4e6dd6(0x93),'termination_reason':_0x20f6ab[_0x4e6dd6(0x1a3)],'sub_tool_errors':_0x11dee1,'timings':_0x20f6ab[_0x4e6dd6(0x150)],'tool_calls':_0x488806(_0x20f6ab['messages']),'messages':_0x20f6ab[_0x4e6dd6(0x14a)]?.[_0x4e6dd6(0x185)](_0x168c8f=>({'role':_0x168c8f[_0x4e6dd6(0x19a)],'content':_0x168c8f[_0x4e6dd6(0x175)]}))},'source':_0x4e6dd6(0x19f)})[_0x4e6dd6(0x128)](()=>{});let _0x54d9e9='';if(_0x20f6ab[_0x4e6dd6(0x1a3)]===_0x4e6dd6(0xa2)&&_0x20f6ab[_0x4e6dd6(0xf3)]?.['metadata']?.[_0x4e6dd6(0x160)]){const _0x2c606d=_0x20f6ab['finish'][_0x4e6dd6(0x8d)][_0x4e6dd6(0x160)];if(_0x2c606d['length']===0x0)return _0x54d9e9=_0x20f6ab['finish'][_0x4e6dd6(0xf7)]||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x4e6dd6(0xea),'text':_0x54d9e9}]};const _0x4024c6=[],_0x2d76e6=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x5309e7 of _0x20f6ab[_0x4e6dd6(0x14a)]){const _0x3b8757=_0x5309e7[_0x4e6dd6(0x19a)],_0x213f9a=_0x5309e7[_0x4e6dd6(0x175)];if(_0x3b8757==='assistant'&&_0x213f9a){const _0x4aa24c=_0x213f9a[_0x4e6dd6(0x11b)]('\x0a')['filter'](_0x56ad4a=>_0x56ad4a['trim']());for(const _0x3f0cd2 of _0x4aa24c){const _0x544ee3=_0x3f0cd2[_0x4e6dd6(0x116)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x544ee3){_0x2d76e6[_0x4e6dd6(0x121)](_0x4e6dd6(0xa4)+_0x544ee3[0x1]+_0x4e6dd6(0x114)+_0x544ee3[0x2]+'`');continue;}const _0x591cc4=_0x3f0cd2[_0x4e6dd6(0x116)](/^read\s+(.+)$/);if(_0x591cc4){_0x2d76e6[_0x4e6dd6(0x121)](_0x4e6dd6(0x9c)+_0x591cc4[0x1]+'`');continue;}const _0x28d383=_0x3f0cd2[_0x4e6dd6(0x116)](/^list_directory\s+(.+)$/);if(_0x28d383){_0x2d76e6[_0x4e6dd6(0x121)](_0x4e6dd6(0x176)+_0x28d383[0x1]+'`');continue;}}}}_0x4024c6[_0x4e6dd6(0x121)](_0x2d76e6[_0x4e6dd6(0xf2)]('\x0a'));const _0x4e2458=['',_0x4e6dd6(0x12e)];for(const _0x5d34f7 of _0x2c606d){if(_0x5d34f7['lines']==='*')_0x4e2458[_0x4e6dd6(0x121)]('-\x20'+_0x5d34f7[_0x4e6dd6(0xe6)]+':*');else{if(Array[_0x4e6dd6(0xec)](_0x5d34f7[_0x4e6dd6(0x181)])){const _0x52179d=_0x5d34f7[_0x4e6dd6(0x181)][_0x4e6dd6(0x185)](([_0xd99b36,_0x169a09])=>{if(_0xd99b36===_0x169a09)return''+_0xd99b36;return _0xd99b36+'-'+_0x169a09;});_0x4e2458[_0x4e6dd6(0x121)]('-\x20'+_0x5d34f7['path']+':'+_0x52179d[_0x4e6dd6(0xf2)](','));}else _0x4e2458[_0x4e6dd6(0x121)]('-\x20'+_0x5d34f7[_0x4e6dd6(0xe6)]+':*');}}_0x4e2458[_0x4e6dd6(0x121)](''),_0x4024c6[_0x4e6dd6(0x121)](_0x4e2458[_0x4e6dd6(0xf2)]('\x0a')),_0x4024c6[_0x4e6dd6(0x121)]('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x1c77e7=[];for(const _0x4634a5 of _0x2c606d){let _0x2a5bf8=a0_0x43b453[_0x4e6dd6(0xae)](_0x429ab7['data']['repo_path'],_0x4634a5[_0x4e6dd6(0xe6)]),_0x1e9aa3=null,_0x3c1772=null;try{_0x1e9aa3=await a0_0x1f3199['readFile'](_0x2a5bf8,{'encoding':'utf-8'});}catch(_0x1b07b7){const _0x1003e1=fixPathRepetition(_0x2a5bf8);if(_0x1003e1)try{_0x1e9aa3=await a0_0x1f3199['readFile'](_0x1003e1,{'encoding':'utf-8'}),_0x2a5bf8=_0x1003e1;}catch{_0x3c1772=_0x1b07b7 instanceof Error?_0x1b07b7:new Error(String(_0x1b07b7));}else _0x3c1772=_0x1b07b7 instanceof Error?_0x1b07b7:new Error(String(_0x1b07b7));}if(_0x1e9aa3!==null){const _0x46cc48=_0x1e9aa3[_0x4e6dd6(0x11b)](/\r?\n/),_0x1a6dbc=['<file\x20path=\x22'+_0x4634a5['path']+'\x22>'];if(_0x4634a5['lines']==='*'||!Array[_0x4e6dd6(0xec)](_0x4634a5['lines']))for(let _0x4865a3=0x1;_0x4865a3<=_0x46cc48[_0x4e6dd6(0xaf)];_0x4865a3++){const _0x28b730=_0x46cc48[_0x4865a3-0x1];_0x1a6dbc[_0x4e6dd6(0x121)](_0x4865a3+'|\x20'+_0x28b730);}else for(const [_0x35dbad,_0x4320ee]of _0x4634a5[_0x4e6dd6(0x181)]){_0x1a6dbc[_0x4e6dd6(0xaf)]>0x1&&_0x1a6dbc[_0x4e6dd6(0x121)]('');for(let _0x229ba9=_0x35dbad;_0x229ba9<=_0x4320ee&&_0x229ba9<=_0x46cc48[_0x4e6dd6(0xaf)];_0x229ba9++){const _0x5831e6=_0x46cc48[_0x229ba9-0x1];_0x1a6dbc[_0x4e6dd6(0x121)](_0x229ba9+'|\x20'+_0x5831e6);}}_0x1a6dbc[_0x4e6dd6(0x121)](_0x4e6dd6(0xa5)),_0x1c77e7[_0x4e6dd6(0x121)](_0x1a6dbc[_0x4e6dd6(0xf2)]('\x0a'));}else _0x1c77e7[_0x4e6dd6(0x121)](_0x4e6dd6(0x174)+_0x4634a5['path']+_0x4e6dd6(0x11d)+(_0x3c1772?.[_0x4e6dd6(0x137)]||_0x4e6dd6(0xfd))+_0x4e6dd6(0x9e));}_0x4024c6[_0x4e6dd6(0x121)](_0x1c77e7[_0x4e6dd6(0xf2)]('\x0a\x0a')),_0x54d9e9=_0x4024c6['join']('\x0a');const _0x5ec156=_0x20f6ab[_0x4e6dd6(0x133)]?.[_0x4e6dd6(0x13f)](_0x2fd5c6=>_0x2fd5c6[_0x4e6dd6(0x137)]?.[_0x4e6dd6(0x134)](_0x4e6dd6(0x18d)))||[];if(_0x5ec156[_0x4e6dd6(0xaf)]>0x0){const _0x57368d=_0x5ec156[_0x4e6dd6(0x185)](_0x44ef28=>_0x44ef28[_0x4e6dd6(0x137)])[_0x4e6dd6(0xf2)](';\x20');reportMorphError({'error_message':_0x57368d,'error_type':_0x4e6dd6(0x96),'context':{'tool':_0x4e6dd6(0x152),'repo_path':_0x429ab7[_0x4e6dd6(0xe9)][_0x4e6dd6(0xc1)],'query':_0x429ab7[_0x4e6dd6(0xe9)][_0x4e6dd6(0x13b)],'model':_0x4e6dd6(0x93),'termination_reason':'completed_with_file_errors','error_count':_0x5ec156[_0x4e6dd6(0xaf)],'is_timeout':![],'timings':_0x20f6ab[_0x4e6dd6(0x150)],'files_attempted':_0x2c606d[_0x4e6dd6(0x185)](_0x35f3ed=>({'path':_0x35f3ed[_0x4e6dd6(0xe6)],'lines':_0x35f3ed[_0x4e6dd6(0x181)]})),'tool_calls':_0x488806(_0x20f6ab['messages']),'messages':_0x20f6ab[_0x4e6dd6(0x14a)]?.[_0x4e6dd6(0x185)](_0x2696f1=>({'role':_0x2696f1[_0x4e6dd6(0x19a)],'content':_0x2696f1[_0x4e6dd6(0x175)]})),'request_content':{'query':_0x429ab7[_0x4e6dd6(0xe9)][_0x4e6dd6(0x13b)],'repo_path':_0x429ab7[_0x4e6dd6(0xe9)][_0x4e6dd6(0xc1)],'repoRoot':a0_0x43b453['resolve'](_0x429ab7['data'][_0x4e6dd6(0xc1)]),'model':'morph-warp-grep-v1-1111v0'}},'source':_0x4e6dd6(0x19f)})[_0x4e6dd6(0x128)](()=>{});}}else{if(_0x20f6ab['terminationReason']===_0x4e6dd6(0xb6)&&_0x20f6ab[_0x4e6dd6(0x133)][_0x4e6dd6(0xaf)]>0x0){const _0x222d6a=_0x20f6ab[_0x4e6dd6(0x133)][_0x4e6dd6(0x185)](_0x5b8bf0=>_0x5b8bf0['message'])[_0x4e6dd6(0xf2)](';\x20');_0x54d9e9=_0x4e6dd6(0x171)+_0x222d6a;const _0x1f19dd=_0x222d6a[_0x4e6dd6(0x99)]()[_0x4e6dd6(0xcd)](_0x4e6dd6(0x104))||_0x222d6a[_0x4e6dd6(0x99)]()[_0x4e6dd6(0xcd)](_0x4e6dd6(0x17e))||_0x222d6a[_0x4e6dd6(0x99)]()[_0x4e6dd6(0xcd)](_0x4e6dd6(0xcf)),_0x42e161=_0x20f6ab[_0x4e6dd6(0xf3)]?.[_0x4e6dd6(0x8d)]?.['files'],_0x9c03f9=_0x20f6ab['errors'][0x0];reportMorphError({'error_message':_0x222d6a,'error_type':_0x1f19dd?_0x4e6dd6(0xb9):_0x9c03f9?.['constructor']?.[_0x4e6dd6(0xc7)]||_0x4e6dd6(0x187),'context':{'tool':_0x4e6dd6(0x152),'repo_path':_0x429ab7[_0x4e6dd6(0xe9)][_0x4e6dd6(0xc1)],'query':_0x429ab7[_0x4e6dd6(0xe9)][_0x4e6dd6(0x13b)],'model':_0x4e6dd6(0x93),'termination_reason':_0x20f6ab['terminationReason'],'error_count':_0x20f6ab[_0x4e6dd6(0x133)]['length'],'is_timeout':_0x1f19dd,'timings':_0x20f6ab[_0x4e6dd6(0x150)],'files_attempted':_0x42e161?.[_0x4e6dd6(0x185)](_0x476c5a=>({'path':_0x476c5a['path'],'lines':_0x476c5a[_0x4e6dd6(0x181)]})),'tool_calls':_0x488806(_0x20f6ab[_0x4e6dd6(0x14a)]),'messages':_0x20f6ab[_0x4e6dd6(0x14a)]?.[_0x4e6dd6(0x185)](_0x248596=>({'role':_0x248596[_0x4e6dd6(0x19a)],'content':_0x248596[_0x4e6dd6(0x175)]})),'request_content':{'query':_0x429ab7[_0x4e6dd6(0xe9)][_0x4e6dd6(0x13b)],'repo_path':_0x429ab7['data'][_0x4e6dd6(0xc1)],'repoRoot':a0_0x43b453['resolve'](_0x429ab7['data'][_0x4e6dd6(0xc1)]),'model':_0x4e6dd6(0x93)}},'stack_trace':_0x9c03f9?.[_0x4e6dd6(0x105)]||undefined,'source':_0x4e6dd6(0x19f)})[_0x4e6dd6(0x128)](()=>{});}else _0x54d9e9=_0x4e6dd6(0xcb);}return{'content':[{'type':_0x4e6dd6(0xea),'text':_0x54d9e9}]};}catch(_0x468569){const _0x390948=_0x468569 instanceof Error?_0x468569['message']:String(_0x468569),_0x22dc29=_0x390948['toLowerCase']()[_0x4e6dd6(0xcd)](_0x4e6dd6(0x104))||_0x390948[_0x4e6dd6(0x99)]()['includes'](_0x4e6dd6(0x17e))||_0x390948['toLowerCase']()[_0x4e6dd6(0xcd)](_0x4e6dd6(0xcf))||_0x468569 instanceof Error&&_0x468569[_0x4e6dd6(0xc7)]===_0x4e6dd6(0xb9);return reportMorphError({'error_message':_0x390948,'error_type':_0x22dc29?_0x4e6dd6(0xb9):_0x468569 instanceof Error?_0x468569['constructor']['name']:_0x4e6dd6(0xbe),'context':{'tool':'warpgrep_codebase_search','repo_path':_0x429ab7['data'][_0x4e6dd6(0xc1)],'query':_0x429ab7[_0x4e6dd6(0xe9)]['search_string'],'model':_0x4e6dd6(0x93),'is_timeout':_0x22dc29,'exception_phase':_0x4e6dd6(0x18b),'request_content':{'query':_0x429ab7[_0x4e6dd6(0xe9)]['search_string'],'repo_path':_0x429ab7['data']['repo_path'],'repoRoot':a0_0x43b453[_0x4e6dd6(0xae)](_0x429ab7['data'][_0x4e6dd6(0xc1)]),'model':_0x4e6dd6(0x93)}},'stack_trace':_0x468569 instanceof Error?_0x468569[_0x4e6dd6(0x105)]:undefined,'source':_0x4e6dd6(0x19f)})['catch'](()=>{}),{'content':[{'type':_0x4e6dd6(0xea),'text':_0x4e6dd6(0x107)+_0x390948}],'isError':![]};}}case _0x4e6dd6(0x167):{const _0x2f3f73=WarpGrepGitHubArgsSchema[_0x4e6dd6(0x10c)](_0x1d4119);if(!_0x2f3f73[_0x4e6dd6(0xfb)])return{'content':[{'type':'text','text':_0x4e6dd6(0x126)+_0x2f3f73[_0x4e6dd6(0x9b)]}],'isError':!![]};const _0x2ec53c=MORPH_API_KEY;if(!_0x2ec53c)throw new Error(_0x4e6dd6(0x12d));const _0x5efe6e=Date[_0x4e6dd6(0x9f)]();console['error']('[warpgrep_github_search]\x20Searching\x20'+_0x2f3f73[_0x4e6dd6(0xe9)][_0x4e6dd6(0xef)]+_0x4e6dd6(0x16a)+_0x2f3f73[_0x4e6dd6(0xe9)][_0x4e6dd6(0x13b)]+'\x22');try{const _0x41164b=new WarpGrepClient({'morphApiKey':_0x2ec53c,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x3b3c43=await _0x41164b['searchGitHub']({'query':_0x2f3f73[_0x4e6dd6(0xe9)][_0x4e6dd6(0x13b)],'github':_0x2f3f73['data'][_0x4e6dd6(0xef)],'branch':_0x2f3f73[_0x4e6dd6(0xe9)][_0x4e6dd6(0xe1)]}),_0x23d3d6=Date[_0x4e6dd6(0x9f)]()-_0x5efe6e;console[_0x4e6dd6(0x9b)](_0x4e6dd6(0xde)+_0x23d3d6+_0x4e6dd6(0x138)+_0x3b3c43[_0x4e6dd6(0xfb)]);const _0x53a99d=formatResult(_0x3b3c43);return{'content':[{'type':'text','text':_0x53a99d}]};}catch(_0x4b58c2){const _0x55d222=Date[_0x4e6dd6(0x9f)]()-_0x5efe6e,_0x234974=_0x4b58c2 instanceof Error?_0x4b58c2[_0x4e6dd6(0x137)]:String(_0x4b58c2);return console[_0x4e6dd6(0x9b)](_0x4e6dd6(0xf8)+_0x55d222+_0x4e6dd6(0x18c),_0x234974),reportMorphError({'error_message':_0x234974,'error_type':_0x4b58c2 instanceof Error?_0x4b58c2[_0x4e6dd6(0x13d)][_0x4e6dd6(0xc7)]:'UnknownError','context':{'tool':'warpgrep_github_search','github_url':_0x2f3f73[_0x4e6dd6(0xe9)][_0x4e6dd6(0xef)],'search_string':_0x2f3f73[_0x4e6dd6(0xe9)][_0x4e6dd6(0x13b)],'branch':_0x2f3f73[_0x4e6dd6(0xe9)][_0x4e6dd6(0xe1)]},'stack_trace':_0x4b58c2 instanceof Error?_0x4b58c2[_0x4e6dd6(0x105)]:undefined,'source':_0x4e6dd6(0x19f),'tool':_0x4e6dd6(0x167),'latency_ms':_0x55d222})[_0x4e6dd6(0x128)](()=>{}),{'content':[{'type':'text','text':_0x4e6dd6(0xdc)+_0x234974}],'isError':![]};}}case'codebase_search':{const _0x36d8fd=CodebaseSearchArgsSchema[_0x4e6dd6(0x10c)](_0x1d4119);if(!_0x36d8fd[_0x4e6dd6(0xfb)])return{'content':[{'type':_0x4e6dd6(0xea),'text':_0x4e6dd6(0x126)+_0x36d8fd['error']}],'isError':!![]};try{const _0x30d4f0=MORPH_API_KEY;if(!_0x30d4f0)throw new Error(_0x4e6dd6(0x15e));const _0x18d7d9=_0x36d8fd[_0x4e6dd6(0xe9)][_0x4e6dd6(0xc2)],_0x34c030=await executeCodebaseSearch({'query':_0x36d8fd['data']['query'],'target_directories':_0x18d7d9,'limit':_0x36d8fd[_0x4e6dd6(0xe9)][_0x4e6dd6(0xf0)]},{'apiKey':_0x30d4f0,'repoId':_0x36d8fd[_0x4e6dd6(0xe9)][_0x4e6dd6(0x13e)],'branch':_0x36d8fd[_0x4e6dd6(0xe9)][_0x4e6dd6(0xe1)],'commitHash':_0x36d8fd[_0x4e6dd6(0xe9)][_0x4e6dd6(0x14c)],'debug':![]});if(!_0x34c030[_0x4e6dd6(0xfb)])return{'content':[{'type':_0x4e6dd6(0xea),'text':_0x4e6dd6(0x172)+_0x34c030['error']}],'isError':!![]};const _0x1ed2fe=_0x34c030['results']['length']===0x0?_0x4e6dd6(0x163)+_0x36d8fd['data'][_0x4e6dd6(0x89)]+'\x22':_0x4e6dd6(0x166)+_0x34c030[_0x4e6dd6(0xd9)]['length']+_0x4e6dd6(0xc0)+_0x34c030[_0x4e6dd6(0xe0)][_0x4e6dd6(0x109)]+_0x4e6dd6(0x197)+_0x34c030['results'][_0x4e6dd6(0x185)]((_0x257e69,_0x4ccf27)=>_0x4ccf27+0x1+'.\x20'+_0x257e69[_0x4e6dd6(0x131)]+'\x20('+(_0x257e69[_0x4e6dd6(0x88)]*0x64)[_0x4e6dd6(0x151)](0x1)+_0x4e6dd6(0x182)+(_0x4e6dd6(0x154)+_0x257e69[_0x4e6dd6(0xca)]+'-'+_0x257e69[_0x4e6dd6(0x91)]+'\x0a')+(_0x4e6dd6(0xb8)+_0x257e69['content'][_0x4e6dd6(0xd6)](0x0,0xc8)+(_0x257e69['content'][_0x4e6dd6(0xaf)]>0xc8?'...':'')+'\x0a'))[_0x4e6dd6(0xf2)]('\x0a');return{'content':[{'type':'text','text':_0x1ed2fe}]};}catch(_0x18a9f7){const _0x4d4861=_0x18a9f7 instanceof Error?_0x18a9f7['message']:String(_0x18a9f7);return reportMorphError({'error_message':_0x4d4861,'error_type':_0x18a9f7 instanceof Error?_0x18a9f7[_0x4e6dd6(0x13d)]['name']:_0x4e6dd6(0xbe),'context':{'tool':_0x4e6dd6(0x173),'query':_0x36d8fd[_0x4e6dd6(0xe9)][_0x4e6dd6(0x89)],'repo_id':_0x36d8fd[_0x4e6dd6(0xe9)]['repoId'],'target_directories':_0x36d8fd['data'][_0x4e6dd6(0xc2)]},'stack_trace':_0x18a9f7 instanceof Error?_0x18a9f7[_0x4e6dd6(0x105)]:undefined,'source':'mcp-filesystem'})[_0x4e6dd6(0x128)](()=>{}),{'content':[{'type':_0x4e6dd6(0xea),'text':_0x4e6dd6(0x171)+_0x4d4861}],'isError':!![]};}}default:throw new Error(_0x4e6dd6(0x8b)+_0x24e3c8);}}catch(_0xfe1a4e){const _0x34c6ed=_0xfe1a4e instanceof Error?_0xfe1a4e[_0x4e6dd6(0x137)]:String(_0xfe1a4e);return reportMorphError({'error_message':_0x34c6ed,'error_type':_0xfe1a4e instanceof Error?_0xfe1a4e['constructor'][_0x4e6dd6(0xc7)]:_0x4e6dd6(0xbe),'context':{'tool':name,'arguments':args?JSON[_0x4e6dd6(0x184)](args)[_0x4e6dd6(0xd6)](0x0,0x1f4):undefined,'mcp_server_version':_0x4e6dd6(0x13c)},'stack_trace':_0xfe1a4e instanceof Error?_0xfe1a4e[_0x4e6dd6(0x105)]:undefined,'source':_0x4e6dd6(0x19f)})[_0x4e6dd6(0x128)](()=>{}),{'content':[{'type':_0x4e6dd6(0xea),'text':_0x4e6dd6(0x171)+_0x34c6ed}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x1a5761){const _0x2c1b23=a0_0x3a1ec5,_0x108602=await getValidRootDirectories(_0x1a5761);if(_0x108602[_0x2c1b23(0xaf)]>0x0)allowedDirectories=[..._0x108602],console['error']('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0x108602[_0x2c1b23(0xaf)]+_0x2c1b23(0x194));else{console[_0x2c1b23(0x9b)](_0x2c1b23(0x157));if(ENABLE_WORKSPACE_MODE)try{const _0x3d5e64=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x3d5e64&&(allowedDirectories=[_0x3d5e64],console[_0x2c1b23(0x9b)](_0x2c1b23(0x178)+_0x3d5e64));}catch(_0x74036){console[_0x2c1b23(0x9b)](_0x2c1b23(0x188)+_0x74036);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x472c71=a0_0x3a1ec5;try{const _0x5d53c3=await server['listRoots']();_0x5d53c3&&_0x472c71(0xdd)in _0x5d53c3&&await updateAllowedDirectoriesFromRoots(_0x5d53c3[_0x472c71(0xdd)]);}catch(_0x3db2ad){console[_0x472c71(0x9b)](_0x472c71(0x12c),_0x3db2ad instanceof Error?_0x3db2ad['message']:String(_0x3db2ad));}}),server[a0_0x3a1ec5(0xf6)]=async()=>{const _0x1dd6cf=a0_0x3a1ec5,_0x7cb429=server[_0x1dd6cf(0x147)]();if(_0x7cb429?.[_0x1dd6cf(0xdd)])try{const _0x2d900b=await server['listRoots']();_0x2d900b&&_0x1dd6cf(0xdd)in _0x2d900b?await updateAllowedDirectoriesFromRoots(_0x2d900b[_0x1dd6cf(0xdd)]):console[_0x1dd6cf(0x9b)](_0x1dd6cf(0x117));}catch(_0x595dda){console[_0x1dd6cf(0x9b)](_0x1dd6cf(0xaa),_0x595dda instanceof Error?_0x595dda[_0x1dd6cf(0x137)]:String(_0x595dda));}else{if(allowedDirectories[_0x1dd6cf(0xaf)]>0x0)console[_0x1dd6cf(0x9b)](_0x1dd6cf(0x87),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console[_0x1dd6cf(0x9b)]('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode');else throw new Error(_0x1dd6cf(0x94));}}};async function runServer(){const _0x5cb16a=a0_0x3a1ec5,_0x5a495e=new StdioServerTransport();await server[_0x5cb16a(0xdb)](_0x5a495e),console[_0x5cb16a(0x9b)](_0x5cb16a(0xd1)),allowedDirectories['length']===0x0&&console[_0x5cb16a(0x9b)]('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()[a0_0x3a1ec5(0x128)](_0x105d8b=>{const _0x45c81b=a0_0x3a1ec5;console[_0x45c81b(0x9b)](_0x45c81b(0xba),_0x105d8b),process[_0x45c81b(0x135)](0x1);});
@@ -1 +1 @@
1
- function a1_0x2475(){const _0x36e7ee=['6OgsmJB','1792088xNrpYT','slice','4300TAUDkR','substring','207ZpvLpJ','2803865TkBfmn','3807741ZPlAlC','trim','startsWith','match','charAt','replace','toUpperCase','/mnt/','join','homedir','7554rlSFhg','13441148lnaPlk','108oeQxel','7090460huiUoU','normalize','test'];a1_0x2475=function(){return _0x36e7ee;};return a1_0x2475();}(function(_0xda0953,_0x5a21b7){const _0x429d66=a1_0x5dc0,_0xe9142f=_0xda0953();while(!![]){try{const _0x146602=parseInt(_0x429d66(0xdb))/0x1*(-parseInt(_0x429d66(0xd0))/0x2)+parseInt(_0x429d66(0xc6))/0x3+-parseInt(_0x429d66(0xd3))/0x4+parseInt(_0x429d66(0xdc))/0x5*(parseInt(_0x429d66(0xd6))/0x6)+parseInt(_0x429d66(0xd1))/0x7+-parseInt(_0x429d66(0xd7))/0x8+-parseInt(_0x429d66(0xd2))/0x9*(parseInt(_0x429d66(0xd9))/0xa);if(_0x146602===_0x5a21b7)break;else _0xe9142f['push'](_0xe9142f['shift']());}catch(_0x499816){_0xe9142f['push'](_0xe9142f['shift']());}}}(a1_0x2475,0xebf9f));import a1_0x20c052 from'path';import a1_0x580ecd from'os';export function convertToWindowsPath(_0x25e9b8){const _0x50b446=a1_0x5dc0;if(_0x25e9b8[_0x50b446(0xc8)](_0x50b446(0xcd))){const _0x2b2a38=_0x25e9b8[_0x50b446(0xca)](0x5)['toUpperCase'](),_0xa66865=_0x25e9b8[_0x50b446(0xd8)](0x6)['replace'](/\//g,'\x5c');return _0x2b2a38+':'+_0xa66865;}if(_0x25e9b8[_0x50b446(0xc9)](/^\/[a-zA-Z]\//)){const _0x5a9f84=_0x25e9b8[_0x50b446(0xca)](0x1)[_0x50b446(0xcc)](),_0x2431dd=_0x25e9b8[_0x50b446(0xd8)](0x2)['replace'](/\//g,'\x5c');return _0x5a9f84+':'+_0x2431dd;}if(_0x25e9b8[_0x50b446(0xc9)](/^[a-zA-Z]:/))return _0x25e9b8['replace'](/\//g,'\x5c');return _0x25e9b8;}export function normalizePath(_0x48a79c){const _0x2294a5=a1_0x5dc0;_0x48a79c=_0x48a79c[_0x2294a5(0xc7)]()[_0x2294a5(0xcb)](/^["']|["']$/g,'');const _0x348668=_0x48a79c['startsWith']('/')&&!_0x48a79c[_0x2294a5(0xc9)](/^\/mnt\/[a-z]\//i)&&!_0x48a79c[_0x2294a5(0xc9)](/^\/[a-zA-Z]\//);if(_0x348668)return _0x48a79c['replace'](/\/+/g,'/')[_0x2294a5(0xcb)](/\/+$/,'');_0x48a79c=convertToWindowsPath(_0x48a79c);if(_0x48a79c[_0x2294a5(0xc8)]('\x5c\x5c')){let _0x5ce703=_0x48a79c;_0x5ce703=_0x5ce703[_0x2294a5(0xcb)](/^\\{2,}/,'\x5c\x5c');const _0x25be5e=_0x5ce703[_0x2294a5(0xda)](0x2)[_0x2294a5(0xcb)](/\\\\/g,'\x5c');_0x48a79c='\x5c\x5c'+_0x25be5e;}else _0x48a79c=_0x48a79c['replace'](/\\\\/g,'\x5c');let _0x4240ff=a1_0x20c052[_0x2294a5(0xd4)](_0x48a79c);_0x48a79c['startsWith']('\x5c\x5c')&&!_0x4240ff[_0x2294a5(0xc8)]('\x5c\x5c')&&(_0x4240ff='\x5c'+_0x4240ff);if(_0x4240ff['match'](/^[a-zA-Z]:/)){let _0x930791=_0x4240ff[_0x2294a5(0xcb)](/\//g,'\x5c');return/^[a-z]:/[_0x2294a5(0xd5)](_0x930791)&&(_0x930791=_0x930791[_0x2294a5(0xca)](0x0)[_0x2294a5(0xcc)]()+_0x930791[_0x2294a5(0xd8)](0x1)),_0x930791;}return _0x4240ff[_0x2294a5(0xcb)](/\//g,'\x5c');}function a1_0x5dc0(_0x3322d4,_0x5ced4e){_0x3322d4=_0x3322d4-0xc6;const _0x247589=a1_0x2475();let _0x5dc0ad=_0x247589[_0x3322d4];return _0x5dc0ad;}export function expandHome(_0x503dad){const _0x2b3497=a1_0x5dc0;if(_0x503dad[_0x2b3497(0xc8)]('~/')||_0x503dad==='~')return a1_0x20c052[_0x2b3497(0xce)](a1_0x580ecd[_0x2b3497(0xcf)](),_0x503dad[_0x2b3497(0xd8)](0x1));return _0x503dad;}
1
+ (function(_0x299d05,_0x9e93d9){const _0x5b72e3=a1_0x388d,_0x3f3709=_0x299d05();while(!![]){try{const _0x5f5189=parseInt(_0x5b72e3(0x125))/0x1+-parseInt(_0x5b72e3(0x11f))/0x2*(parseInt(_0x5b72e3(0x133))/0x3)+parseInt(_0x5b72e3(0x12e))/0x4*(parseInt(_0x5b72e3(0x11e))/0x5)+parseInt(_0x5b72e3(0x131))/0x6+-parseInt(_0x5b72e3(0x123))/0x7+-parseInt(_0x5b72e3(0x126))/0x8+-parseInt(_0x5b72e3(0x122))/0x9*(-parseInt(_0x5b72e3(0x127))/0xa);if(_0x5f5189===_0x9e93d9)break;else _0x3f3709['push'](_0x3f3709['shift']());}catch(_0x5c84e2){_0x3f3709['push'](_0x3f3709['shift']());}}}(a1_0x2671,0x97b81));import a1_0x6316d9 from'path';import a1_0x42adc4 from'os';function a1_0x388d(_0x33552d,_0x4dccf8){_0x33552d=_0x33552d-0x11d;const _0x26715f=a1_0x2671();let _0x388dad=_0x26715f[_0x33552d];return _0x388dad;}export function convertToWindowsPath(_0x1be0af){const _0x1b01b9=a1_0x388d;if(_0x1be0af[_0x1b01b9(0x12a)](_0x1b01b9(0x128))){const _0x2fb398=_0x1be0af[_0x1b01b9(0x130)](0x5)[_0x1b01b9(0x12c)](),_0x12e876=_0x1be0af['slice'](0x6)[_0x1b01b9(0x11d)](/\//g,'\x5c');return _0x2fb398+':'+_0x12e876;}if(_0x1be0af[_0x1b01b9(0x12d)](/^\/[a-zA-Z]\//)){const _0x20296f=_0x1be0af[_0x1b01b9(0x130)](0x1)[_0x1b01b9(0x12c)](),_0x5a3efe=_0x1be0af[_0x1b01b9(0x12f)](0x2)[_0x1b01b9(0x11d)](/\//g,'\x5c');return _0x20296f+':'+_0x5a3efe;}if(_0x1be0af[_0x1b01b9(0x12d)](/^[a-zA-Z]:/))return _0x1be0af['replace'](/\//g,'\x5c');return _0x1be0af;}export function normalizePath(_0xc38ff1){const _0x38e130=a1_0x388d;_0xc38ff1=_0xc38ff1[_0x38e130(0x121)]()[_0x38e130(0x11d)](/^["']|["']$/g,'');const _0x161c4f=_0xc38ff1[_0x38e130(0x12a)]('/')&&!_0xc38ff1[_0x38e130(0x12d)](/^\/mnt\/[a-z]\//i)&&!_0xc38ff1['match'](/^\/[a-zA-Z]\//);if(_0x161c4f)return _0xc38ff1[_0x38e130(0x11d)](/\/+/g,'/')[_0x38e130(0x11d)](/\/+$/,'');_0xc38ff1=convertToWindowsPath(_0xc38ff1);if(_0xc38ff1[_0x38e130(0x12a)]('\x5c\x5c')){let _0x50edd4=_0xc38ff1;_0x50edd4=_0x50edd4[_0x38e130(0x11d)](/^\\{2,}/,'\x5c\x5c');const _0x3cde1c=_0x50edd4[_0x38e130(0x129)](0x2)[_0x38e130(0x11d)](/\\\\/g,'\x5c');_0xc38ff1='\x5c\x5c'+_0x3cde1c;}else _0xc38ff1=_0xc38ff1[_0x38e130(0x11d)](/\\\\/g,'\x5c');let _0x3e0558=a1_0x6316d9[_0x38e130(0x120)](_0xc38ff1);_0xc38ff1[_0x38e130(0x12a)]('\x5c\x5c')&&!_0x3e0558['startsWith']('\x5c\x5c')&&(_0x3e0558='\x5c'+_0x3e0558);if(_0x3e0558[_0x38e130(0x12d)](/^[a-zA-Z]:/)){let _0x348ac5=_0x3e0558[_0x38e130(0x11d)](/\//g,'\x5c');return/^[a-z]:/[_0x38e130(0x12b)](_0x348ac5)&&(_0x348ac5=_0x348ac5['charAt'](0x0)[_0x38e130(0x12c)]()+_0x348ac5[_0x38e130(0x12f)](0x1)),_0x348ac5;}return _0x3e0558[_0x38e130(0x11d)](/\//g,'\x5c');}export function expandHome(_0x527885){const _0x156acd=a1_0x388d;if(_0x527885[_0x156acd(0x12a)]('~/')||_0x527885==='~')return a1_0x6316d9[_0x156acd(0x124)](a1_0x42adc4[_0x156acd(0x132)](),_0x527885[_0x156acd(0x12f)](0x1));return _0x527885;}function a1_0x2671(){const _0x14c6eb=['50qRVpUz','/mnt/','substring','startsWith','test','toUpperCase','match','4ckIYIN','slice','charAt','3061152NOBxZh','homedir','2914683HVOCcZ','replace','1420890PmMndE','2NVWWmQ','normalize','trim','1165131uVkpkf','1345225ouKeKR','join','1222115bbHKdT','7028824FBxAnZ'];a1_0x2671=function(){return _0x14c6eb;};return a1_0x2671();}
@@ -1 +1 @@
1
- function a2_0x2ed0(_0x1598d2,_0x3e7e75){_0x1598d2=_0x1598d2-0x80;const _0xabe571=a2_0xabe5();let _0x2ed06e=_0xabe571[_0x1598d2];return _0x2ed06e;}function a2_0xabe5(){const _0x1dd00f=['normalize','1494aVgLmz','294217LLyVeB','2080668tdnYFm','Path\x20must\x20be\x20absolute\x20after\x20normalization','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','sep','28353LdJrzZ','3876295PAdNSP','150lCjvPN','string','startsWith','includes','2321840ZFSpyN','resolve','8210MCJGJY','isArray','944hEejqU','isAbsolute','71624BfEiBt'];a2_0xabe5=function(){return _0x1dd00f;};return a2_0xabe5();}(function(_0x30721c,_0x9e710){const _0x38e6ef=a2_0x2ed0,_0xc78724=_0x30721c();while(!![]){try{const _0x24dfa9=parseInt(_0x38e6ef(0x91))/0x1+parseInt(_0x38e6ef(0x84))/0x2*(parseInt(_0x38e6ef(0x82))/0x3)+-parseInt(_0x38e6ef(0x88))/0x4+-parseInt(_0x38e6ef(0x83))/0x5+-parseInt(_0x38e6ef(0x92))/0x6+-parseInt(_0x38e6ef(0x8e))/0x7*(-parseInt(_0x38e6ef(0x8c))/0x8)+-parseInt(_0x38e6ef(0x90))/0x9*(-parseInt(_0x38e6ef(0x8a))/0xa);if(_0x24dfa9===_0x9e710)break;else _0xc78724['push'](_0xc78724['shift']());}catch(_0x13fa17){_0xc78724['push'](_0xc78724['shift']());}}}(a2_0xabe5,0x9d46f));import a2_0x13313f from'path';export function isPathWithinAllowedDirectories(_0x36968d,_0x42849a){const _0x47c83e=a2_0x2ed0;if(typeof _0x36968d!==_0x47c83e(0x85)||!Array[_0x47c83e(0x8b)](_0x42849a))return![];if(!_0x36968d||_0x42849a['length']===0x0)return![];if(_0x36968d[_0x47c83e(0x87)]('\x00'))return![];let _0x1f37c3;try{_0x1f37c3=a2_0x13313f[_0x47c83e(0x89)](a2_0x13313f[_0x47c83e(0x8f)](_0x36968d));}catch{return![];}if(!a2_0x13313f[_0x47c83e(0x8d)](_0x1f37c3))throw new Error(_0x47c83e(0x93));return _0x42849a['some'](_0x56def3=>{const _0x5648e4=_0x47c83e;if(typeof _0x56def3!==_0x5648e4(0x85)||!_0x56def3)return![];if(_0x56def3[_0x5648e4(0x87)]('\x00'))return![];let _0x5e968f;try{_0x5e968f=a2_0x13313f['resolve'](a2_0x13313f[_0x5648e4(0x8f)](_0x56def3));}catch{return![];}if(!a2_0x13313f[_0x5648e4(0x8d)](_0x5e968f))throw new Error(_0x5648e4(0x80));if(_0x1f37c3===_0x5e968f)return!![];if(_0x5e968f===a2_0x13313f[_0x5648e4(0x81)])return _0x1f37c3[_0x5648e4(0x86)](a2_0x13313f[_0x5648e4(0x81)]);return _0x1f37c3[_0x5648e4(0x86)](_0x5e968f+a2_0x13313f[_0x5648e4(0x81)]);});}
1
+ function a2_0x1c6f(_0x475e15,_0x44b31d){_0x475e15=_0x475e15-0x1a5;const _0x4985b8=a2_0x4985();let _0x1c6f11=_0x4985b8[_0x475e15];return _0x1c6f11;}(function(_0x3d750e,_0x3679f7){const _0x14bdba=a2_0x1c6f,_0x1a5629=_0x3d750e();while(!![]){try{const _0x282e18=-parseInt(_0x14bdba(0x1bb))/0x1*(parseInt(_0x14bdba(0x1af))/0x2)+parseInt(_0x14bdba(0x1ba))/0x3+parseInt(_0x14bdba(0x1aa))/0x4+-parseInt(_0x14bdba(0x1b7))/0x5*(parseInt(_0x14bdba(0x1ac))/0x6)+parseInt(_0x14bdba(0x1a6))/0x7+-parseInt(_0x14bdba(0x1ad))/0x8*(parseInt(_0x14bdba(0x1b1))/0x9)+parseInt(_0x14bdba(0x1ab))/0xa*(-parseInt(_0x14bdba(0x1b4))/0xb);if(_0x282e18===_0x3679f7)break;else _0x1a5629['push'](_0x1a5629['shift']());}catch(_0x20e49b){_0x1a5629['push'](_0x1a5629['shift']());}}}(a2_0x4985,0xafe44));import a2_0x3f69ac from'path';function a2_0x4985(){const _0xaed62e=['263LItrod','some','9767296bGKyEU','isArray','startsWith','length','3031820qrqyAH','30yqIOyn','17454BPrsHq','61672AvnbpD','resolve','5896oidXCV','string','378JJzXMJ','includes','Path\x20must\x20be\x20absolute\x20after\x20normalization','1715043fTFeyo','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','isAbsolute','1655Ypcynu','normalize','sep','3290667mIqrXb'];a2_0x4985=function(){return _0xaed62e;};return a2_0x4985();}export function isPathWithinAllowedDirectories(_0x2192ad,_0x5bb7d8){const _0xf2bc4=a2_0x1c6f;if(typeof _0x2192ad!=='string'||!Array[_0xf2bc4(0x1a7)](_0x5bb7d8))return![];if(!_0x2192ad||_0x5bb7d8[_0xf2bc4(0x1a9)]===0x0)return![];if(_0x2192ad[_0xf2bc4(0x1b2)]('\x00'))return![];let _0x1c492c;try{_0x1c492c=a2_0x3f69ac['resolve'](a2_0x3f69ac[_0xf2bc4(0x1b8)](_0x2192ad));}catch{return![];}if(!a2_0x3f69ac['isAbsolute'](_0x1c492c))throw new Error(_0xf2bc4(0x1b3));return _0x5bb7d8[_0xf2bc4(0x1a5)](_0x10ecae=>{const _0x887802=_0xf2bc4;if(typeof _0x10ecae!==_0x887802(0x1b0)||!_0x10ecae)return![];if(_0x10ecae[_0x887802(0x1b2)]('\x00'))return![];let _0x3df24d;try{_0x3df24d=a2_0x3f69ac[_0x887802(0x1ae)](a2_0x3f69ac[_0x887802(0x1b8)](_0x10ecae));}catch{return![];}if(!a2_0x3f69ac[_0x887802(0x1b6)](_0x3df24d))throw new Error(_0x887802(0x1b5));if(_0x1c492c===_0x3df24d)return!![];if(_0x3df24d===a2_0x3f69ac[_0x887802(0x1b9)])return _0x1c492c[_0x887802(0x1a8)](a2_0x3f69ac[_0x887802(0x1b9)]);return _0x1c492c['startsWith'](_0x3df24d+a2_0x3f69ac[_0x887802(0x1b9)]);});}
@@ -1 +1 @@
1
- (function(_0x391db0,_0x58fe17){const _0x4c1a44=a3_0x3525,_0x238ab2=_0x391db0();while(!![]){try{const _0x4c76d1=-parseInt(_0x4c1a44(0xb6))/0x1+-parseInt(_0x4c1a44(0xac))/0x2*(-parseInt(_0x4c1a44(0xb3))/0x3)+-parseInt(_0x4c1a44(0xaa))/0x4*(-parseInt(_0x4c1a44(0xbf))/0x5)+parseInt(_0x4c1a44(0xb5))/0x6*(parseInt(_0x4c1a44(0xbd))/0x7)+-parseInt(_0x4c1a44(0xba))/0x8*(parseInt(_0x4c1a44(0xb2))/0x9)+parseInt(_0x4c1a44(0xae))/0xa+-parseInt(_0x4c1a44(0xbc))/0xb;if(_0x4c76d1===_0x58fe17)break;else _0x238ab2['push'](_0x238ab2['shift']());}catch(_0x2f4178){_0x238ab2['push'](_0x238ab2['shift']());}}}(a3_0x34dc,0x4836d));import{promises as a3_0x50ed70}from'fs';import a3_0x1a932b from'path';import a3_0xd0dfb from'os';function a3_0x34dc(){const _0x31f2c7=['non-directory\x20root','homedir','realpath','\x20due\x20to\x20error:\x20','44FJVQei','resolve','34OXZwHh','stat','606530ItKdyD','Skipping\x20','uri','invalid\x20path\x20or\x20inaccessible','1548CgqFcM','52629kxJVWI','file://','30ftBUQI','142591pzUhNd','Skipping\x20invalid\x20directory:\x20','isDirectory','error','4704GLobau','message','279532qzafmH','180831EJkHDC','join','34945yiZKkB','startsWith','slice'];a3_0x34dc=function(){return _0x31f2c7;};return a3_0x34dc();}import{normalizePath}from'./path-utils.js';async function parseRootUri(_0x3ceb4c){const _0x5189a6=a3_0x3525;try{const _0x416c1a=_0x3ceb4c['startsWith'](_0x5189a6(0xb4))?_0x3ceb4c['slice'](0x7):_0x3ceb4c,_0x352b05=_0x416c1a[_0x5189a6(0xc0)]('~/')||_0x416c1a==='~'?a3_0x1a932b[_0x5189a6(0xbe)](a3_0xd0dfb[_0x5189a6(0xc3)](),_0x416c1a[_0x5189a6(0xc1)](0x1)):_0x416c1a,_0x47fae7=a3_0x1a932b[_0x5189a6(0xab)](_0x352b05),_0xf58b16=await a3_0x50ed70[_0x5189a6(0xc4)](_0x47fae7);return normalizePath(_0xf58b16);}catch{return null;}}function a3_0x3525(_0x10427c,_0x2835da){_0x10427c=_0x10427c-0xa9;const _0x34dc9b=a3_0x34dc();let _0x352527=_0x34dc9b[_0x10427c];return _0x352527;}function formatDirectoryError(_0x273859,_0x4f2cd6,_0xc89d79){const _0x4d350c=a3_0x3525;if(_0xc89d79)return _0x4d350c(0xaf)+_0xc89d79+':\x20'+_0x273859;const _0x51b795=_0x4f2cd6 instanceof Error?_0x4f2cd6[_0x4d350c(0xbb)]:String(_0x4f2cd6);return _0x4d350c(0xb7)+_0x273859+_0x4d350c(0xa9)+_0x51b795;}export async function getValidRootDirectories(_0x4e3a74){const _0x51192a=a3_0x3525,_0x205eb3=[];for(const _0x532313 of _0x4e3a74){const _0x49a863=await parseRootUri(_0x532313[_0x51192a(0xb0)]);if(!_0x49a863){console[_0x51192a(0xb9)](formatDirectoryError(_0x532313[_0x51192a(0xb0)],undefined,_0x51192a(0xb1)));continue;}try{const _0x31b2f6=await a3_0x50ed70[_0x51192a(0xad)](_0x49a863);_0x31b2f6[_0x51192a(0xb8)]()?_0x205eb3['push'](_0x49a863):console['error'](formatDirectoryError(_0x49a863,undefined,_0x51192a(0xc2)));}catch(_0x4e6ef0){console[_0x51192a(0xb9)](formatDirectoryError(_0x49a863,_0x4e6ef0));}}return _0x205eb3;}
1
+ (function(_0x425ed9,_0x8f32ed){const _0x2b9495=a3_0x169e,_0x4dd387=_0x425ed9();while(!![]){try{const _0x4b0d61=-parseInt(_0x2b9495(0x1aa))/0x1*(-parseInt(_0x2b9495(0x1a2))/0x2)+parseInt(_0x2b9495(0x1a1))/0x3+parseInt(_0x2b9495(0x1b1))/0x4+parseInt(_0x2b9495(0x1ac))/0x5+parseInt(_0x2b9495(0x1a0))/0x6*(-parseInt(_0x2b9495(0x1a7))/0x7)+-parseInt(_0x2b9495(0x1a9))/0x8*(-parseInt(_0x2b9495(0x1ab))/0x9)+-parseInt(_0x2b9495(0x1b2))/0xa;if(_0x4b0d61===_0x8f32ed)break;else _0x4dd387['push'](_0x4dd387['shift']());}catch(_0x374318){_0x4dd387['push'](_0x4dd387['shift']());}}}(a3_0x3162,0x87726));import{promises as a3_0x1f2a91}from'fs';function a3_0x3162(){const _0x209567=['uri','homedir','push','resolve','4221052WvcxBT','18546130wyqHDJ','isDirectory','realpath','Skipping\x20invalid\x20directory:\x20','non-directory\x20root','error','85716MeurWy','678129UYKqaG','167880BWoczh','Skipping\x20','file://','stat','startsWith','21HYucOA','slice','3112Mexril','1UUJyrF','5229msuzlO','4305030pvbMet'];a3_0x3162=function(){return _0x209567;};return a3_0x3162();}import a3_0x5df8c9 from'path';import a3_0x14f906 from'os';import{normalizePath}from'./path-utils.js';async function parseRootUri(_0x24c8bb){const _0x491be4=a3_0x169e;try{const _0x2d6d71=_0x24c8bb[_0x491be4(0x1a6)](_0x491be4(0x1a4))?_0x24c8bb[_0x491be4(0x1a8)](0x7):_0x24c8bb,_0x37f03c=_0x2d6d71[_0x491be4(0x1a6)]('~/')||_0x2d6d71==='~'?a3_0x5df8c9['join'](a3_0x14f906[_0x491be4(0x1ae)](),_0x2d6d71[_0x491be4(0x1a8)](0x1)):_0x2d6d71,_0x425c16=a3_0x5df8c9[_0x491be4(0x1b0)](_0x37f03c),_0x1fdeeb=await a3_0x1f2a91[_0x491be4(0x1b4)](_0x425c16);return normalizePath(_0x1fdeeb);}catch{return null;}}function formatDirectoryError(_0x3b8377,_0x20e3cc,_0x226bfc){const _0x4cceef=a3_0x169e;if(_0x226bfc)return _0x4cceef(0x1a3)+_0x226bfc+':\x20'+_0x3b8377;const _0xb9cfa4=_0x20e3cc instanceof Error?_0x20e3cc['message']:String(_0x20e3cc);return _0x4cceef(0x1b5)+_0x3b8377+'\x20due\x20to\x20error:\x20'+_0xb9cfa4;}function a3_0x169e(_0x2b86d6,_0x1c48ce){_0x2b86d6=_0x2b86d6-0x19e;const _0x316221=a3_0x3162();let _0x169e31=_0x316221[_0x2b86d6];return _0x169e31;}export async function getValidRootDirectories(_0x209a87){const _0x6a3b11=a3_0x169e,_0x4406c1=[];for(const _0x56054d of _0x209a87){const _0x1e9710=await parseRootUri(_0x56054d[_0x6a3b11(0x1ad)]);if(!_0x1e9710){console[_0x6a3b11(0x19f)](formatDirectoryError(_0x56054d[_0x6a3b11(0x1ad)],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0x3ba3d1=await a3_0x1f2a91[_0x6a3b11(0x1a5)](_0x1e9710);_0x3ba3d1[_0x6a3b11(0x1b3)]()?_0x4406c1[_0x6a3b11(0x1af)](_0x1e9710):console['error'](formatDirectoryError(_0x1e9710,undefined,_0x6a3b11(0x19e)));}catch(_0x53e185){console[_0x6a3b11(0x19f)](formatDirectoryError(_0x1e9710,_0x53e185));}}return _0x4406c1;}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morphllm/morphmcp",
3
- "version": "0.8.101",
3
+ "version": "0.8.102",
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.121",
38
+ "@morphllm/morphsdk": "0.2.122",
39
39
  "@vscode/ripgrep": "^1.15.14",
40
40
  "axios": "^1.6.0",
41
41
  "chalk": "^5.3.0",