@morphllm/morphmcp 0.8.103 → 0.8.104

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_0x3ee359=a0_0xeb4a;(function(_0x4a83ec,_0x53d21f){const _0x4fba2e=a0_0xeb4a,_0x34c425=_0x4a83ec();while(!![]){try{const _0x135456=parseInt(_0x4fba2e(0x230))/0x1*(parseInt(_0x4fba2e(0x1dd))/0x2)+-parseInt(_0x4fba2e(0x20c))/0x3*(-parseInt(_0x4fba2e(0x25f))/0x4)+parseInt(_0x4fba2e(0x18d))/0x5*(-parseInt(_0x4fba2e(0x162))/0x6)+-parseInt(_0x4fba2e(0x16b))/0x7+parseInt(_0x4fba2e(0x1d8))/0x8*(-parseInt(_0x4fba2e(0x192))/0x9)+-parseInt(_0x4fba2e(0x1c0))/0xa+parseInt(_0x4fba2e(0x21b))/0xb;if(_0x135456===_0x53d21f)break;else _0x34c425['push'](_0x34c425['shift']());}catch(_0x1a06a0){_0x34c425['push'](_0x34c425['shift']());}}}(a0_0x37e4,0x683ed));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_0x1b336c from'fs/promises';import a0_0x9405f4 from'path';import a0_0x338282 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import{executeCodebaseSearch}from'@morphllm/morphsdk/tools/codebase-search';import a0_0xdcb45c from'axios';function fixPathRepetition(_0x348615){const _0x35a695=a0_0xeb4a,_0xaf6b18=_0x348615[_0x35a695(0x1fd)](a0_0x9405f4[_0x35a695(0x1dc)])[_0x35a695(0x1a4)](Boolean);if(_0xaf6b18[_0x35a695(0x200)]<0x2)return null;for(let _0x85c0bd=Math[_0x35a695(0x169)](_0xaf6b18['length']/0x2);_0x85c0bd>=0x1;_0x85c0bd--){for(let _0x529e0a=0x0;_0x529e0a<=_0xaf6b18[_0x35a695(0x200)]-0x2*_0x85c0bd;_0x529e0a++){const _0x33586d=_0xaf6b18[_0x35a695(0x1e8)](_0x529e0a,_0x529e0a+_0x85c0bd),_0x5ef7df=_0xaf6b18[_0x35a695(0x1e8)](_0x529e0a+_0x85c0bd,_0x529e0a+0x2*_0x85c0bd);if(_0x33586d[_0x35a695(0x220)]((_0x43bb86,_0x5ede8f)=>_0x43bb86===_0x5ef7df[_0x5ede8f])){const _0x48b45f=[..._0xaf6b18[_0x35a695(0x1e8)](0x0,_0x529e0a),..._0xaf6b18[_0x35a695(0x1e8)](_0x529e0a+_0x85c0bd)];return a0_0x9405f4['sep']+_0x48b45f[_0x35a695(0x233)](a0_0x9405f4[_0x35a695(0x1dc)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x2a8ab4=a0_0xeb4a;try{const _0x20cdc7=require(_0x2a8ab4(0x271));return _0x20cdc7[_0x2a8ab4(0x266)]??'unknown';}catch(_0x18fb7c){return console[_0x2a8ab4(0x1b3)](_0x2a8ab4(0x18a),_0x18fb7c),_0x2a8ab4(0x184);}}function printHelp(){const _0x581c6b=a0_0xeb4a;console['log'](_0x581c6b(0x15c)+getPackageVersion()),console[_0x581c6b(0x190)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0x581c6b(0x190)](_0x581c6b(0x248)),console['log'](_0x581c6b(0x180)),console[_0x581c6b(0x190)](_0x581c6b(0x265)),console[_0x581c6b(0x190)](_0x581c6b(0x1b0)),console['log'](_0x581c6b(0x198)),console[_0x581c6b(0x190)](_0x581c6b(0x242)),console[_0x581c6b(0x190)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0x3ee359(0x1b7)][a0_0x3ee359(0x1e8)](0x2),VERSION_FLAGS=new Set([a0_0x3ee359(0x23b),'-v','-V']),HELP_FLAGS=new Set(['--help','-h']);cliArgs[a0_0x3ee359(0x239)](_0x1b00ae=>VERSION_FLAGS[a0_0x3ee359(0x263)](_0x1b00ae))&&(console[a0_0x3ee359(0x190)](a0_0x3ee359(0x15c)+getPackageVersion()),process[a0_0x3ee359(0x1bc)](0x0));cliArgs['some'](_0x51391c=>HELP_FLAGS['has'](_0x51391c))&&(printHelp(),process[a0_0x3ee359(0x1bc)](0x0));function getCliArg(_0x14eca2){const _0x1d6863=a0_0x3ee359;for(let _0x440aec=0x0;_0x440aec<cliArgs[_0x1d6863(0x200)];_0x440aec++){const _0x2dea04=cliArgs[_0x440aec];if(_0x2dea04[_0x1d6863(0x231)]('--'+_0x14eca2+'='))return _0x2dea04[_0x1d6863(0x1e8)](('--'+_0x14eca2+'=')[_0x1d6863(0x200)]);if(_0x2dea04==='--'+_0x14eca2&&_0x440aec+0x1<cliArgs[_0x1d6863(0x200)])return cliArgs[_0x440aec+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x3ee359(0x200)];i++){const arg=cliArgs[i];if(VERSION_FLAGS['has'](arg)||HELP_FLAGS[a0_0x3ee359(0x263)](arg))continue;if(arg[a0_0x3ee359(0x231)](a0_0x3ee359(0x20e)))continue;if(arg===a0_0x3ee359(0x249)){i++;continue;}args['push'](arg);}const ALL_TOOLS=[a0_0x3ee359(0x163),'warpgrep_codebase_search','warpgrep_github_search','codebase_search'],DEFAULT_TOOLS=[a0_0x3ee359(0x163),a0_0x3ee359(0x218),a0_0x3ee359(0x1be)],ENABLED_TOOLS=process[a0_0x3ee359(0x1a6)][a0_0x3ee359(0x24a)]?process[a0_0x3ee359(0x1a6)]['ENABLED_TOOLS']===a0_0x3ee359(0x16a)?ALL_TOOLS:process[a0_0x3ee359(0x1a6)]['ENABLED_TOOLS']['split'](',')[a0_0x3ee359(0x188)](_0x3bc27b=>_0x3bc27b[a0_0x3ee359(0x1f1)]()):DEFAULT_TOOLS;console[a0_0x3ee359(0x1b3)](a0_0x3ee359(0x158)+ENABLED_TOOLS[a0_0x3ee359(0x233)](',\x20'));const WORKSPACE_ROOT=process['env'][a0_0x3ee359(0x17f)]||process['env'][a0_0x3ee359(0x27a)]||process[a0_0x3ee359(0x224)](),ENABLE_WORKSPACE_MODE=process[a0_0x3ee359(0x1a6)][a0_0x3ee359(0x279)]!==a0_0x3ee359(0x20a),MORPH_API_KEY=getCliArg(a0_0x3ee359(0x203))??process[a0_0x3ee359(0x1a6)][a0_0x3ee359(0x246)],MORPH_API_URL=process[a0_0x3ee359(0x1a6)][a0_0x3ee359(0x247)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x3ee359(0x1a6)][a0_0x3ee359(0x15e)]?parseInt(process[a0_0x3ee359(0x1a6)][a0_0x3ee359(0x15e)],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY[a0_0x3ee359(0x231)](a0_0x3ee359(0x21d))&&!MORPH_API_KEY['startsWith'](a0_0x3ee359(0x209))&&console[a0_0x3ee359(0x1b3)](a0_0x3ee359(0x1ce));async function reportMorphError(_0x4546f0){const _0x4209a0=a0_0x3ee359;try{await a0_0xdcb45c[_0x4209a0(0x197)](_0x4209a0(0x21a),{..._0x4546f0,'timestamp':new Date()['toISOString'](),'source':_0x4546f0[_0x4209a0(0x264)]||'mcp-filesystem'},{'timeout':0x1388,'headers':{'Content-Type':_0x4209a0(0x1b2),'Authorization':_0x4209a0(0x1f9)+MORPH_API_KEY}});}catch{}}args[a0_0x3ee359(0x200)]===0x0&&!ENABLE_WORKSPACE_MODE&&(console['error'](a0_0x3ee359(0x183)),console[a0_0x3ee359(0x1b3)]('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),console[a0_0x3ee359(0x1b3)]('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),console['error'](a0_0x3ee359(0x1ba)),console[a0_0x3ee359(0x1b3)]('\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)'),console[a0_0x3ee359(0x1b3)](a0_0x3ee359(0x217)));function normalizePath(_0x487890){const _0x35bbb3=a0_0x3ee359;return a0_0x9405f4[_0x35bbb3(0x25e)](_0x487890);}function expandHome(_0xf9d0f9){const _0x48e7d6=a0_0x3ee359;if(_0xf9d0f9[_0x48e7d6(0x231)]('~/')||_0xf9d0f9==='~')return a0_0x9405f4[_0x48e7d6(0x233)](a0_0x338282[_0x48e7d6(0x267)](),_0xf9d0f9[_0x48e7d6(0x1e8)](0x1));return _0xf9d0f9;}let allowedDirectories=await Promise[a0_0x3ee359(0x16a)](args[a0_0x3ee359(0x188)](async _0x15afd3=>{const _0x120738=a0_0x3ee359,_0x2622a4=expandHome(_0x15afd3),_0x11615b=a0_0x9405f4[_0x120738(0x210)](_0x2622a4);try{const _0x795e39=await a0_0x1b336c[_0x120738(0x23f)](_0x11615b);return normalizePath(_0x795e39);}catch(_0x3f88ec){return normalizePath(_0x11615b);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x3ee359(0x200)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x3ee359(0x174)](workspaceDir),console[a0_0x3ee359(0x1b3)](a0_0x3ee359(0x1ed)+workspaceDir+a0_0x3ee359(0x1a9)));}catch(a0_0x43beb3){console[a0_0x3ee359(0x1b3)](a0_0x3ee359(0x252)+a0_0x43beb3);}function a0_0xeb4a(_0x3b6662,_0x46b4db){_0x3b6662=_0x3b6662-0x158;const _0x37e44e=a0_0x37e4();let _0xeb4a57=_0x37e44e[_0x3b6662];return _0xeb4a57;}async function detectWorkspaceRoot(_0x58df4c){const _0x3ada66=a0_0x3ee359;let _0x3a44cf=a0_0x9405f4[_0x3ada66(0x210)](_0x58df4c);const _0x130be1=['.git',_0x3ada66(0x1e2),_0x3ada66(0x1c3),'Cargo.toml',_0x3ada66(0x1d6),_0x3ada66(0x19b),'.cursor',_0x3ada66(0x1d1),_0x3ada66(0x20b)];while(_0x3a44cf!==a0_0x9405f4[_0x3ada66(0x1d7)](_0x3a44cf)){for(const _0x47fa5b of _0x130be1){const _0x24c0f0=a0_0x9405f4[_0x3ada66(0x233)](_0x3a44cf,_0x47fa5b);try{return await a0_0x1b336c[_0x3ada66(0x1d3)](_0x24c0f0),normalizePath(_0x3a44cf);}catch{}}_0x3a44cf=a0_0x9405f4[_0x3ada66(0x1d7)](_0x3a44cf);}return normalizePath(_0x58df4c);}function a0_0x37e4(){const _0x48f0dd=['Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','Preview\x20changes\x20without\x20applying\x20them.','realpath','isArray','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','\x20\x20morph-mcp','\x20chars)','list_directory\x20','🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a','MORPH_API_KEY','MORPH_API_URL','\x0aOptions:','--api-key','ENABLED_TOOLS','...','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','toFixed','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','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','ms:\x0a\x0a','timings','Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','targetDirectories','stringify','requiresApiKey','WarpGrepError','terminationReason','match','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','[could\x20not\x20read\x20file:\x20','normalize','32432ddRFsU','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','SymlinkError','BinaryFile','has','source','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','version','homedir','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','Created\x20File','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','basename','morph-warp-grep-v1-1111v0','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','Max\x20results\x20to\x20return','Failed\x20to\x20request\x20roots\x20from\x20client:','SubToolError','../package.json','min','readFile','code_edit','indexOf','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','assistant','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','ENABLE_WORKSPACE_MODE','PWD','-\x20Grepped\x20\x27','Enabled\x20tools:\x20','\x20valid\x20directories','Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','@morphllm/morphmcp\x20','\x22>\x0aError\x20reading\x20file:\x20','MORPH_WARP_GREP_TIMEOUT','safeParse','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','results','6oJFTaq','edit_file','%\x20match)\x0a','toLowerCase','etimedout','connect','getClientCapabilities','floor','all','152740ooubJK','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','Warning:\x20Workspace\x20fallback\x20failed:\x20','<file\x20path=\x22','-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','Search\x20failed:\x20','Natural\x20language\x20query\x20to\x20search\x20for\x20code','0.2.0','push','.\x20Path:\x20','github_url','linesAdded','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.','data','default','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','describe','\x20\x20\x20Lines\x20','PathError','WORKSPACE_ROOT','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','Error:\x20','\x0a</file>','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','unknown','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)','stat','mcp-filesystem','map','Benefits:\x0a','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','content','Here\x20is\x20the\x20content\x20of\x20files:\x0a','770075WLavwM','name','TimeoutError','log','FileNotFound','18WNqArF','morph-v3-fast','.\x20Changes:\x20','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','post','\x0aExamples:','ToolException','files','go.mod','success','metadata','Morph\x20FastApply\x20failed\x20without\x20error\x20message','setRequestHandler','Warning:\x20','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','added\x20','stack','filter','ms.\x20Success:\x20','env','linesModified','Unknown\x20tool:\x20','\x20as\x20allowed\x20directory','completed_with_file_errors','object','Applied','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','catch','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','[warpgrep_github_search]\x20Failed\x20in\x20','application/json','error','role','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','params','argv','\x20results\x20in\x20','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','warn','exit','Morph\x20Edit\x20','warpgrep_github_search','errors','2235380hWQXxQ','dryRun','messages','package.json','codebase_search','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','timeout','ms:','code','search_string','GitHub\x20search\x20failed:\x20','read','branch','commitHash','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','string','Parent\x20directory\x20does\x20not\x20exist:\x20','tsconfig.json','payload','access','\x20-\x20','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','pyproject.toml','dirname','1408312kFkGgh','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','Error\x20accessing\x20directory\x20','WarpGrep\x20sub-tool\x20errors:\x20','sep','1690694cXefEy','stats','grep','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','.vscode','FileReadError','limit','Morph\x20Edit\x20Preview','[warpgrep_github_search]\x20Done\x20in\x20','repo_path','slice','UnknownError','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','repoId','utf-8','Workspace\x20mode\x20enabled:\x20Using\x20','Found\x20','Rules:\x0a','Error\x20running\x20fast\x20context\x20search:\x20','trim','roots','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','Unknown\x20error','grep\x20\x27','\x20(new\x20file)','filepath','array','Bearer\x20','finish','-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a','searchGitHub','split','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20','length','Invalid\x20arguments:\x20','user','api-key','timed\x20out','**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a','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','endLine','text','morph-','false','composer.json','114NHPTkO','number','--api-key=','boolean','resolve','File\x20read\x20error:','startLine','instruction','message','ReadError','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','warpgrep_codebase_search','\x20for:\x20\x22','https://morphllm.com/api/error-report','274879HQFUQG','Fallback:\x20Using\x20workspace\x20root\x20','sk-','path','\x20\x20\x20','every','optional','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20','morph-mcp','cwd','listRoots','substring',',\x20removed\x20','linesRemoved',',\x20modified\x20','completionId','RipgrepNotAvailable','includes','Specific\x20commit\x20hash\x20to\x20search','inputSchema','</file>','1onMOpn','startsWith','constructor','join','now','unknown\x20error','No\x20results\x20found\x20for\x20query:\x20\x22','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','ENOENT','some','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','--version','lines'];a0_0x37e4=function(){return _0x48f0dd;};return a0_0x37e4();}await Promise[a0_0x3ee359(0x16a)](args[a0_0x3ee359(0x188)](async _0x142d21=>{const _0x27d08b=a0_0x3ee359;try{const _0x1d3491=await a0_0x1b336c[_0x27d08b(0x186)](expandHome(_0x142d21));!_0x1d3491['isDirectory']()&&(console['error'](_0x27d08b(0x181)+_0x142d21+'\x20is\x20not\x20a\x20directory'),process[_0x27d08b(0x1bc)](0x1));}catch(_0x1cfb2b){console['error'](_0x27d08b(0x1da)+_0x142d21+':',_0x1cfb2b),process[_0x27d08b(0x1bc)](0x1);}}));async function validatePath(_0x5ecc91){const _0x4c4e3d=a0_0x3ee359,_0x3bae57=expandHome(_0x5ecc91),_0x12402e=a0_0x9405f4[_0x4c4e3d(0x210)](_0x3bae57);try{const _0x27eca3=await a0_0x1b336c[_0x4c4e3d(0x23f)](_0x12402e);return _0x27eca3;}catch(_0x52fdee){if(_0x52fdee[_0x4c4e3d(0x1c8)]===_0x4c4e3d(0x238)){const _0x530822=a0_0x9405f4[_0x4c4e3d(0x1d7)](_0x12402e);try{const _0x34671c=await a0_0x1b336c['realpath'](_0x530822);return a0_0x9405f4[_0x4c4e3d(0x233)](_0x34671c,a0_0x9405f4[_0x4c4e3d(0x26b)](_0x12402e));}catch{throw new Error(_0x4c4e3d(0x1d0)+_0x530822);}}throw _0x52fdee;}}const MorphEditFileArgsSchema=z[a0_0x3ee359(0x1ab)]({'path':z[a0_0x3ee359(0x1cf)](),'code_edit':z[a0_0x3ee359(0x1cf)]()['describe'](a0_0x3ee359(0x1b5)),'instruction':z[a0_0x3ee359(0x1cf)]()['describe']('A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.'),'dryRun':z[a0_0x3ee359(0x20f)]()['default'](![])[a0_0x3ee359(0x17c)](a0_0x3ee359(0x23e))}),WarpGrepArgsSchema=z[a0_0x3ee359(0x1ab)]({'search_string':z[a0_0x3ee359(0x1cf)]()['describe']('Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for'),'repo_path':z[a0_0x3ee359(0x1cf)]()[a0_0x3ee359(0x17c)](a0_0x3ee359(0x1c5))}),WarpGrepGitHubArgsSchema=z[a0_0x3ee359(0x1ab)]({'search_string':z[a0_0x3ee359(0x1cf)]()['describe']('Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for'),'github_url':z['string']()[a0_0x3ee359(0x17c)](a0_0x3ee359(0x185)),'branch':z['string']()[a0_0x3ee359(0x221)]()[a0_0x3ee359(0x17c)](a0_0x3ee359(0x1af))}),CodebaseSearchArgsSchema=z['object']({'query':z[a0_0x3ee359(0x1cf)]()[a0_0x3ee359(0x17c)](a0_0x3ee359(0x172)),'repoId':z[a0_0x3ee359(0x1cf)]()[a0_0x3ee359(0x17c)]('Repository\x20identifier'),'branch':z[a0_0x3ee359(0x1cf)]()[a0_0x3ee359(0x221)]()['describe'](a0_0x3ee359(0x278)),'commitHash':z[a0_0x3ee359(0x1cf)]()[a0_0x3ee359(0x221)]()[a0_0x3ee359(0x17c)](a0_0x3ee359(0x22d)),'targetDirectories':z[a0_0x3ee359(0x1f8)](z[a0_0x3ee359(0x1cf)]())[a0_0x3ee359(0x17a)]([])[a0_0x3ee359(0x17c)](a0_0x3ee359(0x23d)),'limit':z[a0_0x3ee359(0x20d)]()[a0_0x3ee359(0x221)]()[a0_0x3ee359(0x17a)](0xa)[a0_0x3ee359(0x17c)](a0_0x3ee359(0x26e))}),server=new Server({'name':a0_0x3ee359(0x223),'version':'0.2.0'},{'capabilities':{'tools':{}}});server[a0_0x3ee359(0x19f)](ListToolsRequestSchema,async()=>{const _0x216adb=a0_0x3ee359,_0xadceb9=[{'name':_0x216adb(0x163),'description':_0x216adb(0x1e1)+'⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a'+_0x216adb(0x237)+_0x216adb(0x26a)+'Benefits:\x0a'+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x216adb(0x24c)+_0x216adb(0x1a1)+_0x216adb(0x1ea)+_0x216adb(0x1fe)+_0x216adb(0x268)+_0x216adb(0x1d5)+'For\x20deletions:\x0a'+_0x216adb(0x160)+_0x216adb(0x16c)+_0x216adb(0x1ef)+_0x216adb(0x195)+'-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a'+_0x216adb(0x251)+_0x216adb(0x196)+_0x216adb(0x17b)+'-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a'+_0x216adb(0x26d),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x216adb(0x218),'description':_0x216adb(0x260)+_0x216adb(0x206)+_0x216adb(0x250)+_0x216adb(0x222)+_0x216adb(0x178)+_0x216adb(0x1ad)+_0x216adb(0x24d)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]},{'name':_0x216adb(0x1c4),'description':_0x216adb(0x205)+'⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a'+_0x216adb(0x245)+_0x216adb(0x189)+_0x216adb(0x1fb)+'-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a'+'-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a'+_0x216adb(0x16f)+_0x216adb(0x15a)+_0x216adb(0x1ff)+_0x216adb(0x255),'inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x34ca14=_0xadceb9[_0x216adb(0x1a4)](_0x118e36=>{const _0x3fe492=_0x216adb;if(!ENABLED_TOOLS[_0x3fe492(0x22c)](_0x118e36[_0x3fe492(0x18e)]))return![];if(_0x3fe492(0x258)in _0x118e36&&_0x118e36[_0x3fe492(0x258)]&&!MORPH_API_KEY)return console[_0x3fe492(0x1b3)](_0x3fe492(0x1a0)+_0x118e36[_0x3fe492(0x18e)]+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x34ca14[_0x216adb(0x188)](_0x3f39b7=>({'name':_0x3f39b7[_0x216adb(0x18e)],'description':_0x3f39b7['description'],'inputSchema':_0x3f39b7[_0x216adb(0x22e)]}))};}),server['setRequestHandler'](CallToolRequestSchema,async _0x21c784=>{const _0x1b8fcd=a0_0x3ee359;try{const {name:_0x479366,arguments:_0x5b5702}=_0x21c784[_0x1b8fcd(0x1b6)];switch(_0x479366){case'edit_file':{const _0x1e7486=MorphEditFileArgsSchema['safeParse'](_0x5b5702);if(!_0x1e7486[_0x1b8fcd(0x19c)])throw new Error(_0x1b8fcd(0x241)+_0x1e7486[_0x1b8fcd(0x1b3)]);const _0x196129=await validatePath(_0x1e7486[_0x1b8fcd(0x179)][_0x1b8fcd(0x21e)]);let _0x16e5c3=null,_0x53e2ed=!![],_0x1160cb=null;try{_0x16e5c3=await a0_0x1b336c[_0x1b8fcd(0x273)](_0x196129,'utf-8');}catch(_0x327c4f){const _0x1c9c96=_0x327c4f[_0x1b8fcd(0x1c8)];_0x1c9c96===_0x1b8fcd(0x238)?(_0x53e2ed=![],_0x16e5c3=''):(_0x1160cb='Failed\x20to\x20read\x20file:\x20'+(_0x1c9c96||_0x1b8fcd(0x184))+_0x1b8fcd(0x1d4)+(_0x327c4f instanceof Error?_0x327c4f[_0x1b8fcd(0x214)]:String(_0x327c4f)),console[_0x1b8fcd(0x1b3)](_0x1b8fcd(0x1a0)+_0x1160cb));}let _0x44f3c4;try{const _0x502df8=MORPH_API_KEY;if(!_0x502df8)throw new Error(_0x1b8fcd(0x170));const _0x3360ee=a0_0x9405f4[_0x1b8fcd(0x1d7)](_0x196129),_0x2f1e57=a0_0x9405f4[_0x1b8fcd(0x26b)](_0x196129),_0xec718a=await executeEditFile({'target_filepath':_0x2f1e57,'code_edit':_0x1e7486[_0x1b8fcd(0x179)][_0x1b8fcd(0x274)],'instructions':_0x1e7486[_0x1b8fcd(0x179)][_0x1b8fcd(0x213)]},{'morphApiKey':_0x502df8,'morphApiUrl':MORPH_API_URL,'baseDir':_0x3360ee,'autoWrite':!_0x1e7486['data']['dryRun'],'generateUdiff':![],'debug':![]});_0x44f3c4=_0xec718a[_0x1b8fcd(0x22a)];if(!_0xec718a['success'])throw new Error(_0xec718a[_0x1b8fcd(0x1b3)]||_0x1b8fcd(0x19e));const _0x17d29e=_0xec718a['changes'],_0x155b22=_0x1b8fcd(0x1a2)+_0x17d29e[_0x1b8fcd(0x177)]+_0x1b8fcd(0x227)+_0x17d29e[_0x1b8fcd(0x228)]+_0x1b8fcd(0x229)+_0x17d29e[_0x1b8fcd(0x1a7)];if(_0x1e7486[_0x1b8fcd(0x179)]['dryRun'])return{'content':[{'type':_0x1b8fcd(0x208),'text':_0x1b8fcd(0x1e5)+(_0x53e2ed?'':_0x1b8fcd(0x1f6))+':\x20'+_0x1e7486['data'][_0x1b8fcd(0x213)]+'.\x20Changes:\x20'+_0x155b22+_0x1b8fcd(0x175)+_0x1e7486['data']['path']+'.'}]};return{'content':[{'type':'text','text':_0x1b8fcd(0x1bd)+(_0x53e2ed?_0x1b8fcd(0x1ac):_0x1b8fcd(0x269))+':\x20'+_0x1e7486['data']['instruction']+_0x1b8fcd(0x194)+_0x155b22+_0x1b8fcd(0x175)+_0x1e7486[_0x1b8fcd(0x179)][_0x1b8fcd(0x21e)]+'.'}]};}catch(_0xa840ed){const _0x34b216=_0xa840ed instanceof Error?_0xa840ed[_0x1b8fcd(0x214)]:String(_0xa840ed);return reportMorphError({'error_message':_0x34b216,'error_type':_0xa840ed instanceof Error?_0xa840ed[_0x1b8fcd(0x232)]['name']:_0x1b8fcd(0x1e9),'context':{'tool':_0x1b8fcd(0x163),'completion_id':_0x44f3c4,'file_path':_0x1e7486[_0x1b8fcd(0x179)]['path'],'validated_path':_0x196129,'instruction':_0x1e7486[_0x1b8fcd(0x179)][_0x1b8fcd(0x213)],'model':_0x1b8fcd(0x193),'dry_run':_0x1e7486[_0x1b8fcd(0x179)][_0x1b8fcd(0x1c1)],'file_exists':_0x53e2ed,'file_read_error':_0x1160cb,'file_readable':_0x16e5c3!==null,'request_content':{'path':_0x1e7486[_0x1b8fcd(0x179)][_0x1b8fcd(0x21e)],'code_edit':_0x1e7486[_0x1b8fcd(0x179)][_0x1b8fcd(0x274)],'instruction':_0x1e7486['data'][_0x1b8fcd(0x213)],'original_code':_0x16e5c3!==null?_0x16e5c3[_0x1b8fcd(0x200)]>0xc350?_0x16e5c3[_0x1b8fcd(0x226)](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x16e5c3[_0x1b8fcd(0x200)]+_0x1b8fcd(0x243):_0x16e5c3:_0x1b8fcd(0x25d)+(_0x1160cb||_0x1b8fcd(0x235))+']','original_code_length':_0x16e5c3?.['length']??0x0,'model':_0x1b8fcd(0x193),'dry_run':_0x1e7486[_0x1b8fcd(0x179)][_0x1b8fcd(0x1c1)]}},'stack_trace':_0xa840ed instanceof Error?_0xa840ed[_0x1b8fcd(0x1a3)]:undefined,'source':_0x1b8fcd(0x187)})[_0x1b8fcd(0x1ae)](()=>{}),{'content':[{'type':_0x1b8fcd(0x208),'text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x34b216}],'isError':!![]};}}case _0x1b8fcd(0x218):{const _0x47699c=WarpGrepArgsSchema[_0x1b8fcd(0x15f)](_0x5b5702);if(!_0x47699c['success'])return{'content':[{'type':_0x1b8fcd(0x208),'text':'Invalid\x20arguments:\x20'+_0x47699c['error']}],'isError':!![]};const _0x2ac6ac=_0x402cd4=>{const _0x2cda44=_0x1b8fcd,_0x36facf=[];for(const _0x48947b of _0x402cd4||[]){const _0x4d6122=_0x48947b[_0x2cda44(0x1b4)],_0xfe2a29=_0x48947b['content'];if(_0x4d6122==='assistant'&&_0xfe2a29){const _0x28857a=_0xfe2a29[_0x2cda44(0x1fd)]('\x0a')[_0x2cda44(0x1a4)](_0x2dd8a1=>_0x2dd8a1[_0x2cda44(0x1f1)]());for(const _0x20a0e2 of _0x28857a){const _0x58f8d4=_0x20a0e2[_0x2cda44(0x25b)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x58f8d4){_0x36facf[_0x2cda44(0x174)](_0x2cda44(0x1f5)+_0x58f8d4[0x1]+'\x27\x20'+_0x58f8d4[0x2]);continue;}const _0x1f2204=_0x20a0e2[_0x2cda44(0x25b)](/^read\s+(.+)$/);if(_0x1f2204){_0x36facf[_0x2cda44(0x174)]('read\x20'+_0x1f2204[0x1]);continue;}const _0x3474d2=_0x20a0e2['match'](/^list_directory\s+(.+)$/);if(_0x3474d2){_0x36facf['push'](_0x2cda44(0x244)+_0x3474d2[0x1]);continue;}}}}return _0x36facf;},_0x10a067=_0x1a8442=>{const _0x8a41db=_0x1b8fcd,_0x1863a2=[];if(!_0x1a8442||!Array[_0x8a41db(0x240)](_0x1a8442))return _0x1863a2;const _0x27a077=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x8a41db(0x191),'tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':_0x8a41db(0x17e),'tool':_0x8a41db(0x1cb)},{'pattern':/\[READ ERROR\]/,'error_type':_0x8a41db(0x215),'tool':_0x8a41db(0x1cb)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':'BinaryFile','tool':'read'},{'pattern':/\[RIPGREP ERROR\]/,'error_type':'RipgrepError','tool':_0x8a41db(0x1df)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x8a41db(0x22b),'tool':_0x8a41db(0x1df)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x8a41db(0x262),'tool':_0x8a41db(0x1cb)},{'pattern':/\[SYMLINK\]/,'error_type':_0x8a41db(0x261),'tool':_0x8a41db(0x1cb)},{'pattern':/not a text file/,'error_type':'BinaryFile','tool':'read'},{'pattern':/symbolic link/,'error_type':_0x8a41db(0x261),'tool':_0x8a41db(0x1cb)},{'pattern':/Error reading file:/,'error_type':_0x8a41db(0x215),'tool':_0x8a41db(0x1cb)},{'pattern':/status="error"/,'error_type':_0x8a41db(0x199),'tool':_0x8a41db(0x184)}];let _0x43361e=0x0;for(const _0x2a167a of _0x1a8442){if(_0x2a167a[_0x8a41db(0x1b4)]===_0x8a41db(0x202)){_0x43361e++;const _0x5030a4=_0x2a167a[_0x8a41db(0x18b)];if(!_0x5030a4||typeof _0x5030a4!==_0x8a41db(0x1cf))continue;for(const {pattern:_0xaaee8,error_type:_0x511ebf,tool:_0x82633}of _0x27a077){const _0x472d9a=_0x5030a4['match'](new RegExp(_0xaaee8[_0x8a41db(0x264)],'g'));if(_0x472d9a)for(const _0x35d356 of _0x472d9a){const _0x1e760d=_0x5030a4[_0x8a41db(0x275)](_0x35d356),_0x35c644=_0x5030a4[_0x8a41db(0x226)](_0x1e760d,Math[_0x8a41db(0x272)](_0x1e760d+0xc8,_0x5030a4[_0x8a41db(0x200)]));_0x1863a2['push']({'tool':_0x82633,'error_type':_0x511ebf,'error_message':_0x35c644['split']('\x0a')[0x0],'turn':_0x43361e});}}}}return _0x1863a2;};try{const _0x3d7e7a=a0_0x9405f4[_0x1b8fcd(0x210)](_0x47699c[_0x1b8fcd(0x179)][_0x1b8fcd(0x1e7)]),_0x3782b8=new LocalRipgrepProvider(_0x3d7e7a),_0x28fa03=await runWarpGrep({'query':_0x47699c[_0x1b8fcd(0x179)]['search_string'],'repoRoot':_0x3d7e7a,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x3782b8}),_0x657420=_0x10a067(_0x28fa03[_0x1b8fcd(0x1c2)]);_0x657420[_0x1b8fcd(0x200)]>0x0&&reportMorphError({'error_message':_0x1b8fcd(0x1db)+_0x657420[_0x1b8fcd(0x200)]+'\x20error(s)','error_type':_0x1b8fcd(0x270),'level':_0x1b8fcd(0x1bb),'tool':_0x1b8fcd(0x218),'context':{'repo_path':_0x47699c['data'][_0x1b8fcd(0x1e7)],'query':_0x47699c[_0x1b8fcd(0x179)][_0x1b8fcd(0x1c9)],'model':'morph-warp-grep-v1-1111v0','termination_reason':_0x28fa03[_0x1b8fcd(0x25a)],'sub_tool_errors':_0x657420,'timings':_0x28fa03[_0x1b8fcd(0x254)],'tool_calls':_0x2ac6ac(_0x28fa03[_0x1b8fcd(0x1c2)]),'messages':_0x28fa03[_0x1b8fcd(0x1c2)]?.[_0x1b8fcd(0x188)](_0x43f78d=>({'role':_0x43f78d[_0x1b8fcd(0x1b4)],'content':_0x43f78d[_0x1b8fcd(0x18b)]}))},'source':_0x1b8fcd(0x187)})['catch'](()=>{});let _0x3880f1='';if(_0x28fa03[_0x1b8fcd(0x25a)]==='completed'&&_0x28fa03[_0x1b8fcd(0x1fa)]?.[_0x1b8fcd(0x19d)]?.[_0x1b8fcd(0x19a)]){const _0xe261c7=_0x28fa03['finish'][_0x1b8fcd(0x19d)][_0x1b8fcd(0x19a)];if(_0xe261c7[_0x1b8fcd(0x200)]===0x0)return _0x3880f1=_0x28fa03['finish'][_0x1b8fcd(0x1d2)]||_0x1b8fcd(0x216),{'content':[{'type':_0x1b8fcd(0x208),'text':_0x3880f1}]};const _0x2419f2=[],_0x5a9601=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x53c5d6 of _0x28fa03[_0x1b8fcd(0x1c2)]){const _0x2cc82f=_0x53c5d6[_0x1b8fcd(0x1b4)],_0x11e27c=_0x53c5d6['content'];if(_0x2cc82f===_0x1b8fcd(0x277)&&_0x11e27c){const _0x199812=_0x11e27c['split']('\x0a')[_0x1b8fcd(0x1a4)](_0x3b7682=>_0x3b7682[_0x1b8fcd(0x1f1)]());for(const _0x243f1e of _0x199812){const _0x359ec4=_0x243f1e[_0x1b8fcd(0x25b)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x359ec4){_0x5a9601[_0x1b8fcd(0x174)](_0x1b8fcd(0x27b)+_0x359ec4[0x1]+'\x27\x20in\x20`'+_0x359ec4[0x2]+'`');continue;}const _0x430f43=_0x243f1e[_0x1b8fcd(0x25b)](/^read\s+(.+)$/);if(_0x430f43){_0x5a9601[_0x1b8fcd(0x174)]('-\x20Read\x20file\x20`'+_0x430f43[0x1]+'`');continue;}const _0x58a269=_0x243f1e[_0x1b8fcd(0x25b)](/^list_directory\s+(.+)$/);if(_0x58a269){_0x5a9601[_0x1b8fcd(0x174)]('-\x20Listed\x20directory\x20`'+_0x58a269[0x1]+'`');continue;}}}}_0x2419f2[_0x1b8fcd(0x174)](_0x5a9601[_0x1b8fcd(0x233)]('\x0a'));const _0x4de833=['','Relevant\x20context\x20found:'];for(const _0x355e45 of _0xe261c7){if(_0x355e45[_0x1b8fcd(0x23c)]==='*')_0x4de833[_0x1b8fcd(0x174)]('-\x20'+_0x355e45[_0x1b8fcd(0x21e)]+':*');else{if(Array[_0x1b8fcd(0x240)](_0x355e45['lines'])){const _0x10208e=_0x355e45['lines'][_0x1b8fcd(0x188)](([_0x424f86,_0x1495b2])=>{if(_0x424f86===_0x1495b2)return''+_0x424f86;return _0x424f86+'-'+_0x1495b2;});_0x4de833[_0x1b8fcd(0x174)]('-\x20'+_0x355e45[_0x1b8fcd(0x21e)]+':'+_0x10208e['join'](','));}else _0x4de833['push']('-\x20'+_0x355e45[_0x1b8fcd(0x21e)]+':*');}}_0x4de833['push'](''),_0x2419f2[_0x1b8fcd(0x174)](_0x4de833['join']('\x0a')),_0x2419f2['push'](_0x1b8fcd(0x18c));const _0x8ace85=[];for(const _0x10d6de of _0xe261c7){let _0x382b28=a0_0x9405f4[_0x1b8fcd(0x210)](_0x47699c[_0x1b8fcd(0x179)][_0x1b8fcd(0x1e7)],_0x10d6de[_0x1b8fcd(0x21e)]),_0x3ed63d=null,_0x21cbc4=null;try{_0x3ed63d=await a0_0x1b336c[_0x1b8fcd(0x273)](_0x382b28,{'encoding':'utf-8'});}catch(_0xe3ef00){const _0x9ce5c3=fixPathRepetition(_0x382b28);if(_0x9ce5c3)try{_0x3ed63d=await a0_0x1b336c[_0x1b8fcd(0x273)](_0x9ce5c3,{'encoding':_0x1b8fcd(0x1ec)}),_0x382b28=_0x9ce5c3;}catch{_0x21cbc4=_0xe3ef00 instanceof Error?_0xe3ef00:new Error(String(_0xe3ef00));}else _0x21cbc4=_0xe3ef00 instanceof Error?_0xe3ef00:new Error(String(_0xe3ef00));}if(_0x3ed63d!==null){const _0x1f4315=_0x3ed63d[_0x1b8fcd(0x1fd)](/\r?\n/),_0x5e0a13=[_0x1b8fcd(0x16e)+_0x10d6de[_0x1b8fcd(0x21e)]+'\x22>'];if(_0x10d6de[_0x1b8fcd(0x23c)]==='*'||!Array[_0x1b8fcd(0x240)](_0x10d6de[_0x1b8fcd(0x23c)]))for(let _0x1f4100=0x1;_0x1f4100<=_0x1f4315[_0x1b8fcd(0x200)];_0x1f4100++){const _0x509bb7=_0x1f4315[_0x1f4100-0x1];_0x5e0a13[_0x1b8fcd(0x174)](_0x1f4100+'|\x20'+_0x509bb7);}else for(const [_0x31438b,_0x272008]of _0x10d6de['lines']){_0x5e0a13[_0x1b8fcd(0x200)]>0x1&&_0x5e0a13['push']('');for(let _0x16170d=_0x31438b;_0x16170d<=_0x272008&&_0x16170d<=_0x1f4315[_0x1b8fcd(0x200)];_0x16170d++){const _0x2058b4=_0x1f4315[_0x16170d-0x1];_0x5e0a13[_0x1b8fcd(0x174)](_0x16170d+'|\x20'+_0x2058b4);}}_0x5e0a13[_0x1b8fcd(0x174)](_0x1b8fcd(0x22f)),_0x8ace85[_0x1b8fcd(0x174)](_0x5e0a13[_0x1b8fcd(0x233)]('\x0a'));}else _0x8ace85[_0x1b8fcd(0x174)](_0x1b8fcd(0x16e)+_0x10d6de[_0x1b8fcd(0x21e)]+_0x1b8fcd(0x15d)+(_0x21cbc4?.[_0x1b8fcd(0x214)]||_0x1b8fcd(0x1f4))+_0x1b8fcd(0x182));}_0x2419f2[_0x1b8fcd(0x174)](_0x8ace85[_0x1b8fcd(0x233)]('\x0a\x0a')),_0x3880f1=_0x2419f2[_0x1b8fcd(0x233)]('\x0a');const _0x8c96fc=_0x28fa03['errors']?.['filter'](_0x4c42bf=>_0x4c42bf['message']?.[_0x1b8fcd(0x231)](_0x1b8fcd(0x211)))||[];if(_0x8c96fc['length']>0x0){const _0x5a0a28=_0x8c96fc[_0x1b8fcd(0x188)](_0x4dd120=>_0x4dd120[_0x1b8fcd(0x214)])['join'](';\x20');reportMorphError({'error_message':_0x5a0a28,'error_type':_0x1b8fcd(0x1e3),'context':{'tool':_0x1b8fcd(0x218),'repo_path':_0x47699c[_0x1b8fcd(0x179)][_0x1b8fcd(0x1e7)],'query':_0x47699c[_0x1b8fcd(0x179)][_0x1b8fcd(0x1c9)],'model':_0x1b8fcd(0x26c),'termination_reason':_0x1b8fcd(0x1aa),'error_count':_0x8c96fc[_0x1b8fcd(0x200)],'is_timeout':![],'timings':_0x28fa03['timings'],'files_attempted':_0xe261c7[_0x1b8fcd(0x188)](_0xf1096a=>({'path':_0xf1096a[_0x1b8fcd(0x21e)],'lines':_0xf1096a[_0x1b8fcd(0x23c)]})),'tool_calls':_0x2ac6ac(_0x28fa03['messages']),'messages':_0x28fa03[_0x1b8fcd(0x1c2)]?.[_0x1b8fcd(0x188)](_0x5027cf=>({'role':_0x5027cf['role'],'content':_0x5027cf['content']})),'request_content':{'query':_0x47699c[_0x1b8fcd(0x179)][_0x1b8fcd(0x1c9)],'repo_path':_0x47699c['data'][_0x1b8fcd(0x1e7)],'repoRoot':a0_0x9405f4[_0x1b8fcd(0x210)](_0x47699c[_0x1b8fcd(0x179)]['repo_path']),'model':_0x1b8fcd(0x26c)}},'source':_0x1b8fcd(0x187)})[_0x1b8fcd(0x1ae)](()=>{});}}else{if(_0x28fa03[_0x1b8fcd(0x25a)]==='terminated'&&_0x28fa03[_0x1b8fcd(0x1bf)][_0x1b8fcd(0x200)]>0x0){const _0x51757a=_0x28fa03[_0x1b8fcd(0x1bf)]['map'](_0x3c2977=>_0x3c2977[_0x1b8fcd(0x214)])[_0x1b8fcd(0x233)](';\x20');_0x3880f1='Error:\x20'+_0x51757a;const _0x1a1316=_0x51757a[_0x1b8fcd(0x165)]()[_0x1b8fcd(0x22c)](_0x1b8fcd(0x1c6))||_0x51757a[_0x1b8fcd(0x165)]()['includes'](_0x1b8fcd(0x204))||_0x51757a[_0x1b8fcd(0x165)]()[_0x1b8fcd(0x22c)]('etimedout'),_0x56daad=_0x28fa03[_0x1b8fcd(0x1fa)]?.[_0x1b8fcd(0x19d)]?.[_0x1b8fcd(0x19a)],_0x141613=_0x28fa03[_0x1b8fcd(0x1bf)][0x0];reportMorphError({'error_message':_0x51757a,'error_type':_0x1a1316?_0x1b8fcd(0x18f):_0x141613?.[_0x1b8fcd(0x232)]?.[_0x1b8fcd(0x18e)]||_0x1b8fcd(0x259),'context':{'tool':_0x1b8fcd(0x218),'repo_path':_0x47699c['data']['repo_path'],'query':_0x47699c[_0x1b8fcd(0x179)][_0x1b8fcd(0x1c9)],'model':_0x1b8fcd(0x26c),'termination_reason':_0x28fa03[_0x1b8fcd(0x25a)],'error_count':_0x28fa03[_0x1b8fcd(0x1bf)][_0x1b8fcd(0x200)],'is_timeout':_0x1a1316,'timings':_0x28fa03[_0x1b8fcd(0x254)],'files_attempted':_0x56daad?.['map'](_0xdbf6b9=>({'path':_0xdbf6b9[_0x1b8fcd(0x21e)],'lines':_0xdbf6b9[_0x1b8fcd(0x23c)]})),'tool_calls':_0x2ac6ac(_0x28fa03[_0x1b8fcd(0x1c2)]),'messages':_0x28fa03['messages']?.['map'](_0x168a60=>({'role':_0x168a60[_0x1b8fcd(0x1b4)],'content':_0x168a60[_0x1b8fcd(0x18b)]})),'request_content':{'query':_0x47699c[_0x1b8fcd(0x179)][_0x1b8fcd(0x1c9)],'repo_path':_0x47699c['data'][_0x1b8fcd(0x1e7)],'repoRoot':a0_0x9405f4[_0x1b8fcd(0x210)](_0x47699c[_0x1b8fcd(0x179)]['repo_path']),'model':_0x1b8fcd(0x26c)}},'stack_trace':_0x141613?.[_0x1b8fcd(0x1a3)]||undefined,'source':'mcp-filesystem'})[_0x1b8fcd(0x1ae)](()=>{});}else _0x3880f1=_0x1b8fcd(0x23a);}return{'content':[{'type':_0x1b8fcd(0x208),'text':_0x3880f1}]};}catch(_0x2a0cc7){const _0x2fe41e=_0x2a0cc7 instanceof Error?_0x2a0cc7[_0x1b8fcd(0x214)]:String(_0x2a0cc7),_0x4221e6=_0x2fe41e[_0x1b8fcd(0x165)]()[_0x1b8fcd(0x22c)]('timeout')||_0x2fe41e[_0x1b8fcd(0x165)]()['includes'](_0x1b8fcd(0x204))||_0x2fe41e['toLowerCase']()[_0x1b8fcd(0x22c)](_0x1b8fcd(0x166))||_0x2a0cc7 instanceof Error&&_0x2a0cc7[_0x1b8fcd(0x18e)]===_0x1b8fcd(0x18f);return reportMorphError({'error_message':_0x2fe41e,'error_type':_0x4221e6?'TimeoutError':_0x2a0cc7 instanceof Error?_0x2a0cc7['constructor'][_0x1b8fcd(0x18e)]:_0x1b8fcd(0x1e9),'context':{'tool':_0x1b8fcd(0x218),'repo_path':_0x47699c[_0x1b8fcd(0x179)]['repo_path'],'query':_0x47699c[_0x1b8fcd(0x179)][_0x1b8fcd(0x1c9)],'model':_0x1b8fcd(0x26c),'is_timeout':_0x4221e6,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x47699c[_0x1b8fcd(0x179)][_0x1b8fcd(0x1c9)],'repo_path':_0x47699c['data']['repo_path'],'repoRoot':a0_0x9405f4[_0x1b8fcd(0x210)](_0x47699c[_0x1b8fcd(0x179)][_0x1b8fcd(0x1e7)]),'model':_0x1b8fcd(0x26c)}},'stack_trace':_0x2a0cc7 instanceof Error?_0x2a0cc7[_0x1b8fcd(0x1a3)]:undefined,'source':_0x1b8fcd(0x187)})[_0x1b8fcd(0x1ae)](()=>{}),{'content':[{'type':_0x1b8fcd(0x208),'text':_0x1b8fcd(0x1f0)+_0x2fe41e}],'isError':![]};}}case _0x1b8fcd(0x1be):{const _0x27b4ed=WarpGrepGitHubArgsSchema[_0x1b8fcd(0x15f)](_0x5b5702);if(!_0x27b4ed[_0x1b8fcd(0x19c)])return{'content':[{'type':_0x1b8fcd(0x208),'text':_0x1b8fcd(0x201)+_0x27b4ed[_0x1b8fcd(0x1b3)]}],'isError':!![]};const _0x2d77d2=MORPH_API_KEY;if(!_0x2d77d2)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x51dec3=Date[_0x1b8fcd(0x234)]();console[_0x1b8fcd(0x1b3)]('[warpgrep_github_search]\x20Searching\x20'+_0x27b4ed[_0x1b8fcd(0x179)][_0x1b8fcd(0x176)]+_0x1b8fcd(0x219)+_0x27b4ed['data'][_0x1b8fcd(0x1c9)]+'\x22');try{const _0x55423f=new WarpGrepClient({'morphApiKey':_0x2d77d2,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x3986b3=await _0x55423f[_0x1b8fcd(0x1fc)]({'query':_0x27b4ed[_0x1b8fcd(0x179)][_0x1b8fcd(0x1c9)],'github':_0x27b4ed[_0x1b8fcd(0x179)][_0x1b8fcd(0x176)],'branch':_0x27b4ed['data'][_0x1b8fcd(0x1cc)]}),_0x3cbc07=Date[_0x1b8fcd(0x234)]()-_0x51dec3;console[_0x1b8fcd(0x1b3)](_0x1b8fcd(0x1e6)+_0x3cbc07+_0x1b8fcd(0x1a5)+_0x3986b3[_0x1b8fcd(0x19c)]);const _0x29300b=formatResult(_0x3986b3);return{'content':[{'type':_0x1b8fcd(0x208),'text':_0x29300b}]};}catch(_0x5c9509){const _0x1007a3=Date[_0x1b8fcd(0x234)]()-_0x51dec3,_0x4d8e67=_0x5c9509 instanceof Error?_0x5c9509[_0x1b8fcd(0x214)]:String(_0x5c9509);return console[_0x1b8fcd(0x1b3)](_0x1b8fcd(0x1b1)+_0x1007a3+_0x1b8fcd(0x1c7),_0x4d8e67),reportMorphError({'error_message':_0x4d8e67,'error_type':_0x5c9509 instanceof Error?_0x5c9509['constructor']['name']:_0x1b8fcd(0x1e9),'context':{'tool':_0x1b8fcd(0x1be),'github_url':_0x27b4ed[_0x1b8fcd(0x179)]['github_url'],'search_string':_0x27b4ed['data'][_0x1b8fcd(0x1c9)],'branch':_0x27b4ed[_0x1b8fcd(0x179)]['branch']},'stack_trace':_0x5c9509 instanceof Error?_0x5c9509[_0x1b8fcd(0x1a3)]:undefined,'source':'mcp-filesystem','tool':_0x1b8fcd(0x1be),'latency_ms':_0x1007a3})[_0x1b8fcd(0x1ae)](()=>{}),{'content':[{'type':_0x1b8fcd(0x208),'text':_0x1b8fcd(0x1ca)+_0x4d8e67}],'isError':![]};}}case'codebase_search':{const _0x2663a9=CodebaseSearchArgsSchema['safeParse'](_0x5b5702);if(!_0x2663a9[_0x1b8fcd(0x19c)])return{'content':[{'type':_0x1b8fcd(0x208),'text':_0x1b8fcd(0x201)+_0x2663a9[_0x1b8fcd(0x1b3)]}],'isError':!![]};try{const _0x816c0a=MORPH_API_KEY;if(!_0x816c0a)throw new Error(_0x1b8fcd(0x1b9));const _0x58b88e=_0x2663a9[_0x1b8fcd(0x179)][_0x1b8fcd(0x256)],_0x468503=await executeCodebaseSearch({'query':_0x2663a9['data']['query'],'target_directories':_0x58b88e,'limit':_0x2663a9[_0x1b8fcd(0x179)][_0x1b8fcd(0x1e4)]},{'apiKey':_0x816c0a,'repoId':_0x2663a9['data'][_0x1b8fcd(0x1eb)],'branch':_0x2663a9['data']['branch'],'commitHash':_0x2663a9[_0x1b8fcd(0x179)][_0x1b8fcd(0x1cd)],'debug':![]});if(!_0x468503[_0x1b8fcd(0x19c)])return{'content':[{'type':_0x1b8fcd(0x208),'text':_0x1b8fcd(0x171)+_0x468503[_0x1b8fcd(0x1b3)]}],'isError':!![]};const _0x5292ad=_0x468503[_0x1b8fcd(0x161)][_0x1b8fcd(0x200)]===0x0?_0x1b8fcd(0x236)+_0x2663a9[_0x1b8fcd(0x179)]['query']+'\x22':_0x1b8fcd(0x1ee)+_0x468503[_0x1b8fcd(0x161)][_0x1b8fcd(0x200)]+_0x1b8fcd(0x1b8)+_0x468503[_0x1b8fcd(0x1de)]['searchTimeMs']+_0x1b8fcd(0x253)+_0x468503[_0x1b8fcd(0x161)]['map']((_0x4a734f,_0x253a25)=>_0x253a25+0x1+'.\x20'+_0x4a734f[_0x1b8fcd(0x1f7)]+'\x20('+(_0x4a734f['rerankScore']*0x64)[_0x1b8fcd(0x24f)](0x1)+_0x1b8fcd(0x164)+(_0x1b8fcd(0x17d)+_0x4a734f[_0x1b8fcd(0x212)]+'-'+_0x4a734f[_0x1b8fcd(0x207)]+'\x0a')+(_0x1b8fcd(0x21f)+_0x4a734f[_0x1b8fcd(0x18b)][_0x1b8fcd(0x226)](0x0,0xc8)+(_0x4a734f[_0x1b8fcd(0x18b)]['length']>0xc8?_0x1b8fcd(0x24b):'')+'\x0a'))[_0x1b8fcd(0x233)]('\x0a');return{'content':[{'type':_0x1b8fcd(0x208),'text':_0x5292ad}]};}catch(_0x19ad56){const _0x4a7794=_0x19ad56 instanceof Error?_0x19ad56[_0x1b8fcd(0x214)]:String(_0x19ad56);return reportMorphError({'error_message':_0x4a7794,'error_type':_0x19ad56 instanceof Error?_0x19ad56[_0x1b8fcd(0x232)][_0x1b8fcd(0x18e)]:_0x1b8fcd(0x1e9),'context':{'tool':_0x1b8fcd(0x1c4),'query':_0x2663a9[_0x1b8fcd(0x179)]['query'],'repo_id':_0x2663a9[_0x1b8fcd(0x179)][_0x1b8fcd(0x1eb)],'target_directories':_0x2663a9[_0x1b8fcd(0x179)][_0x1b8fcd(0x256)]},'stack_trace':_0x19ad56 instanceof Error?_0x19ad56['stack']:undefined,'source':_0x1b8fcd(0x187)})[_0x1b8fcd(0x1ae)](()=>{}),{'content':[{'type':_0x1b8fcd(0x208),'text':_0x1b8fcd(0x181)+_0x4a7794}],'isError':!![]};}}default:throw new Error(_0x1b8fcd(0x1a8)+_0x479366);}}catch(_0x47c6ca){const _0x4c834d=_0x47c6ca instanceof Error?_0x47c6ca[_0x1b8fcd(0x214)]:String(_0x47c6ca);return reportMorphError({'error_message':_0x4c834d,'error_type':_0x47c6ca instanceof Error?_0x47c6ca[_0x1b8fcd(0x232)][_0x1b8fcd(0x18e)]:_0x1b8fcd(0x1e9),'context':{'tool':name,'arguments':args?JSON[_0x1b8fcd(0x257)](args)[_0x1b8fcd(0x226)](0x0,0x1f4):undefined,'mcp_server_version':_0x1b8fcd(0x173)},'stack_trace':_0x47c6ca instanceof Error?_0x47c6ca[_0x1b8fcd(0x1a3)]:undefined,'source':_0x1b8fcd(0x187)})[_0x1b8fcd(0x1ae)](()=>{}),{'content':[{'type':_0x1b8fcd(0x208),'text':'Error:\x20'+_0x4c834d}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x21e6f1){const _0x13f14e=a0_0x3ee359,_0x4f1aca=await getValidRootDirectories(_0x21e6f1);if(_0x4f1aca[_0x13f14e(0x200)]>0x0)allowedDirectories=[..._0x4f1aca],console['error'](_0x13f14e(0x24e)+_0x4f1aca[_0x13f14e(0x200)]+_0x13f14e(0x159));else{console[_0x13f14e(0x1b3)]('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x1aaabc=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x1aaabc&&(allowedDirectories=[_0x1aaabc],console[_0x13f14e(0x1b3)](_0x13f14e(0x21c)+_0x1aaabc));}catch(_0x187601){console[_0x13f14e(0x1b3)](_0x13f14e(0x16d)+_0x187601);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0x316435=a0_0x3ee359;try{const _0x4837d6=await server[_0x316435(0x225)]();_0x4837d6&&_0x316435(0x1f2)in _0x4837d6&&await updateAllowedDirectoriesFromRoots(_0x4837d6[_0x316435(0x1f2)]);}catch(_0x1adc8b){console[_0x316435(0x1b3)](_0x316435(0x26f),_0x1adc8b instanceof Error?_0x1adc8b['message']:String(_0x1adc8b));}}),server['oninitialized']=async()=>{const _0x81091f=a0_0x3ee359,_0x1f9328=server[_0x81091f(0x168)]();if(_0x1f9328?.['roots'])try{const _0x52037e=await server[_0x81091f(0x225)]();_0x52037e&&_0x81091f(0x1f2)in _0x52037e?await updateAllowedDirectoriesFromRoots(_0x52037e[_0x81091f(0x1f2)]):console[_0x81091f(0x1b3)](_0x81091f(0x1d9));}catch(_0x1e8e8c){console['error'](_0x81091f(0x276),_0x1e8e8c instanceof Error?_0x1e8e8c[_0x81091f(0x214)]:String(_0x1e8e8c));}else{if(allowedDirectories[_0x81091f(0x200)]>0x0)console[_0x81091f(0x1b3)](_0x81091f(0x15b),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console['error'](_0x81091f(0x1f3));else throw new Error('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.');}}};async function runServer(){const _0x328d05=a0_0x3ee359,_0x39a043=new StdioServerTransport();await server[_0x328d05(0x167)](_0x39a043),console[_0x328d05(0x1b3)](_0x328d05(0x25c)),allowedDirectories[_0x328d05(0x200)]===0x0&&console['error'](_0x328d05(0x1e0));}runServer()[a0_0x3ee359(0x1ae)](_0x3d4012=>{const _0x49d85a=a0_0x3ee359;console[_0x49d85a(0x1b3)]('Fatal\x20error\x20running\x20server:',_0x3d4012),process[_0x49d85a(0x1bc)](0x1);});
2
+ const a0_0x21c775=a0_0x1611;(function(_0xd1b6b5,_0x50ad89){const _0x5ad49e=a0_0x1611,_0x1eb165=_0xd1b6b5();while(!![]){try{const _0x219ae8=parseInt(_0x5ad49e(0x1ac))/0x1*(parseInt(_0x5ad49e(0x288))/0x2)+parseInt(_0x5ad49e(0x267))/0x3*(parseInt(_0x5ad49e(0x279))/0x4)+parseInt(_0x5ad49e(0x1b9))/0x5*(-parseInt(_0x5ad49e(0x1d4))/0x6)+parseInt(_0x5ad49e(0x1ab))/0x7+-parseInt(_0x5ad49e(0x1e0))/0x8+parseInt(_0x5ad49e(0x1b8))/0x9+-parseInt(_0x5ad49e(0x1ca))/0xa;if(_0x219ae8===_0x50ad89)break;else _0x1eb165['push'](_0x1eb165['shift']());}catch(_0x345741){_0x1eb165['push'](_0x1eb165['shift']());}}}(a0_0x5054,0x664c6));function a0_0x1611(_0x3f445b,_0x3e6968){_0x3f445b=_0x3f445b-0x18e;const _0x505417=a0_0x5054();let _0x161198=_0x505417[_0x3f445b];return _0x161198;}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_0x493513 from'fs/promises';import a0_0x2adf11 from'path';import a0_0x23e769 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{executeEditFile}from'@morphllm/morphsdk/tools/fastapply';import{runWarpGrep,LocalRipgrepProvider,GITHUB_SEARCH_TOOL_NAME,GITHUB_SEARCH_DESCRIPTION}from'@morphllm/morphsdk/tools/warp-grep';import{WarpGrepClient,formatResult}from'@morphllm/morphsdk/tools/warp-grep/client';import{executeCodebaseSearch}from'@morphllm/morphsdk/tools/codebase-search';import a0_0x20031a from'axios';function fixPathRepetition(_0x5927c6){const _0x401a99=a0_0x1611,_0x312bbb=_0x5927c6[_0x401a99(0x198)](a0_0x2adf11[_0x401a99(0x2ad)])['filter'](Boolean);if(_0x312bbb['length']<0x2)return null;for(let _0x4eb661=Math[_0x401a99(0x297)](_0x312bbb[_0x401a99(0x290)]/0x2);_0x4eb661>=0x1;_0x4eb661--){for(let _0x49897e=0x0;_0x49897e<=_0x312bbb[_0x401a99(0x290)]-0x2*_0x4eb661;_0x49897e++){const _0x5acf8a=_0x312bbb[_0x401a99(0x254)](_0x49897e,_0x49897e+_0x4eb661),_0x1d349f=_0x312bbb['slice'](_0x49897e+_0x4eb661,_0x49897e+0x2*_0x4eb661);if(_0x5acf8a[_0x401a99(0x240)]((_0x5c9c17,_0x2ae49d)=>_0x5c9c17===_0x1d349f[_0x2ae49d])){const _0x1c613b=[..._0x312bbb[_0x401a99(0x254)](0x0,_0x49897e),..._0x312bbb[_0x401a99(0x254)](_0x49897e+_0x4eb661)];return a0_0x2adf11[_0x401a99(0x2ad)]+_0x1c613b[_0x401a99(0x2ae)](a0_0x2adf11['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x3449a2=a0_0x1611;try{const _0x1f658e=require(_0x3449a2(0x1d9));return _0x1f658e[_0x3449a2(0x2a9)]??'unknown';}catch(_0x485b90){return console[_0x3449a2(0x1d7)](_0x3449a2(0x280),_0x485b90),_0x3449a2(0x28a);}}function printHelp(){const _0x5c6b3e=a0_0x1611;console[_0x5c6b3e(0x237)](_0x5c6b3e(0x29f)+getPackageVersion()),console[_0x5c6b3e(0x237)](_0x5c6b3e(0x1c5)),console[_0x5c6b3e(0x237)]('\x0aOptions:'),console[_0x5c6b3e(0x237)](_0x5c6b3e(0x28d)),console['log']('\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit'),console[_0x5c6b3e(0x237)](_0x5c6b3e(0x25b)),console[_0x5c6b3e(0x237)](_0x5c6b3e(0x1b0)),console[_0x5c6b3e(0x237)](_0x5c6b3e(0x212)),console[_0x5c6b3e(0x237)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0x21c775(0x2a6)][a0_0x21c775(0x254)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set([a0_0x21c775(0x1f4),'-h']);cliArgs[a0_0x21c775(0x256)](_0x2ffd7c=>VERSION_FLAGS[a0_0x21c775(0x299)](_0x2ffd7c))&&(console[a0_0x21c775(0x237)](a0_0x21c775(0x29f)+getPackageVersion()),process[a0_0x21c775(0x292)](0x0));cliArgs['some'](_0xe82aa6=>HELP_FLAGS['has'](_0xe82aa6))&&(printHelp(),process[a0_0x21c775(0x292)](0x0));function getCliArg(_0x33d03f){const _0xd6343c=a0_0x21c775;for(let _0x413fcb=0x0;_0x413fcb<cliArgs['length'];_0x413fcb++){const _0x31f30f=cliArgs[_0x413fcb];if(_0x31f30f[_0xd6343c(0x27c)]('--'+_0x33d03f+'='))return _0x31f30f[_0xd6343c(0x254)](('--'+_0x33d03f+'=')[_0xd6343c(0x290)]);if(_0x31f30f==='--'+_0x33d03f&&_0x413fcb+0x1<cliArgs[_0xd6343c(0x290)])return cliArgs[_0x413fcb+0x1];}return undefined;}const args=[];function a0_0x5054(){const _0x3ce855=['\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','.\x20Path:\x20','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','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.','https://morphllm.com/api/error-report','5331050Ypgdro','source','success','Returns\x20ranked\x20code\x20chunks\x20with\x20relevance\x20scores,\x20file\x20paths,\x20and\x20line\x20numbers.\x20','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','stat','warpgrep_codebase_search','Fallback:\x20Using\x20workspace\x20root\x20','morph-','MORPH_API_URL','24cWIJwD','WarpGrep\x20sub-tool\x20errors:\x20','path','error','string','../package.json','finish','ms:\x0a\x0a','describe','getClientCapabilities','read','access','1660824vYFWTm','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','messages','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','trim','\x20error(s)','params','A\x20search\x20subagent\x20the\x20user\x20refers\x20to\x20as\x20\x27WarpGrep\x27\x20that\x20is\x20ideal\x20for\x20exploring\x20the\x20codebase\x20based\x20on\x20a\x20request.\x20','requiresApiKey','resolve','setRequestHandler','grep\x20\x27','Parent\x20directory\x20does\x20not\x20exist:\x20','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','match','Here\x20is\x20the\x20content\x20of\x20files:\x0a','indexOf','timings','PathError','RipgrepNotAvailable','--help','terminationReason','sk-','%\x20match)\x0a','content','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','Search\x20your\x20codebase\x20using\x20natural\x20language\x20queries.\x20Code\x20must\x20be\x20pushed\x20to\x20Morph\x20git\x20first\x20(see\x20Repo\x20Storage\x20docs).\x20','File\x20read\x20error:','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','ENOENT','WarpGrepError','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','errors','[warpgrep_github_search]\x20Done\x20in\x20','⚡\x20INTELLIGENT:\x20Natural\x20language\x20search\x20across\x20your\x20entire\x20codebase\x20using\x20AI\x20embeddings.\x0a','ms:','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','toFixed','substring','repo_path','grep','[warpgrep_github_search]\x20Failed\x20in\x20','FileReadError','Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for','.vscode','MORPH_API_KEY','homedir','push','\x20valid\x20directories','Error\x20running\x20fast\x20context\x20search:\x20','\x20\x20morph-mcp','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','toLowerCase','morph-v3-fast','\x20\x20\x20','Warning:\x20','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','commitHash','morph-mcp','searchGitHub','all','completionId','safeParse','connect','description','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','query','Error:\x20','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.','user','Morph\x20FastApply\x20failed\x20without\x20error\x20message','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','timeout','github_url','warpgrep_github_search','filepath','[could\x20not\x20read\x20file:\x20','list_directory\x20','isDirectory','ENABLED_TOOLS','dirname','dryRun','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','default','limit','log','Error\x20accessing\x20directory\x20','timed\x20out','-\x20Works\x20across\x20all\x20files\x20and\x20languages\x0a\x0a','warn','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','FileNotFound','targetDirectories','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','every','-\x20Grepped\x20\x27','files','BinaryFile','Fatal\x20error\x20running\x20server:','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','Invalid\x20arguments:\x20','rerankScore','read\x20','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','ms.\x20Success:\x20','0.2.0','Max\x20results\x20to\x20return','Search\x20failed:\x20','application/json','payload','assistant','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','Unknown\x20tool:\x20','slice','listRoots','some','normalize','metadata','Failed\x20to\x20read\x20file:\x20','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20subagent\x20in\x20its\x20search.\x20','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','filter','boolean','Applied','GitHub\x20search\x20failed:\x20','\x20\x20\x20Lines\x20','\x22>\x0aError\x20reading\x20file:\x20','stack','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','endLine','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','role','636024nLuYag','catch','Natural\x20language\x20query\x20to\x20search\x20for\x20code','SymlinkError','.cursor','For\x20deletions:\x0a','\x20results\x20in\x20','--api-key=','repoId','code_edit','data','results','-\x20Searches\x20by\x20semantic\x20meaning,\x20not\x20just\x20keywords\x0a','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','search_string','Rules:\x0a','\x0a</file>','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','4QmGNTH','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','completed_with_file_errors','startsWith',',\x20removed\x20','linesModified',',\x20modified\x20','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','utf-8','code','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','constructor','Repository\x20identifier','post','Unknown\x20error','2TLokxA','.\x20Changes:\x20','unknown','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','pyproject.toml','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','Morph\x20Edit\x20','You\x20should\x20consider\x20using\x20classical\x20search\x20tools\x20afterwards\x20to\x20locate\x20the\x20rest,\x20but\x20only\x20if\x20necessary.\x20','length','ReadError','exit','\x20for:\x20\x22','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','stringify','[warpgrep_github_search]\x20Searching\x20','floor','name','has','\x20-\x20','added\x20','Workspace\x20mode\x20enabled:\x20Using\x20','isArray','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','@morphllm/morphmcp\x20','min','lines','Created\x20File','etimedout','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','Enabled\x20tools:\x20','argv','Example\x20queries:\x20\x27Where\x20is\x20JWT\x20validation?\x27,\x20\x27How\x20does\x20auth\x20work?\x27,\x20\x27Find\x20database\x20connection\x20logic\x27.','<file\x20path=\x22','version','MORPH_WARP_GREP_TIMEOUT','terminated','map','sep','join','Warning:\x20Workspace\x20fallback\x20failed:\x20','instruction','changes','text','edit_file','go.mod','PWD','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','ToolException','includes','ENABLE_WORKSPACE_MODE','split','false','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','Specific\x20commit\x20hash\x20to\x20search','...','TimeoutError','branch','completed','morph-warp-grep-v1-1111v0','now','setNotificationHandler','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','stats','No\x20results\x20found\x20for\x20query:\x20\x22','Bearer\x20','codebase_search','optional','unknown\x20error','Benefits:\x0a','4456214MABnZY','85351EaXhqH','\x20as\x20allowed\x20directory','mcp-filesystem','Found\x20','\x0aExamples:','-\x20Two-stage\x20retrieval:\x20vector\x20search\x20(~240ms)\x20+\x20GPU\x20reranking\x20(~630ms)\x0a','\x20chars)','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','object','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','env','roots','5434893EoLZQV','472645oPEjSb','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','UnknownError','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)','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','Preview\x20changes\x20without\x20applying\x20them.','message','-\x20Listed\x20directory\x20`','basename','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','realpath','**SEMANTIC\x20CODE\x20SEARCH\x20-\x20USE\x20FOR\x20FINDING\x20CODE**\x0a\x0a'];a0_0x5054=function(){return _0x3ce855;};return a0_0x5054();}for(let i=0x0;i<cliArgs[a0_0x21c775(0x290)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x21c775(0x299)](arg)||HELP_FLAGS[a0_0x21c775(0x299)](arg))continue;if(arg[a0_0x21c775(0x27c)](a0_0x21c775(0x26e)))continue;if(arg==='--api-key'){i++;continue;}args[a0_0x21c775(0x20f)](arg);}const ALL_TOOLS=[a0_0x21c775(0x191),a0_0x21c775(0x1d0),a0_0x21c775(0x22c),'codebase_search'],DEFAULT_TOOLS=[a0_0x21c775(0x191),a0_0x21c775(0x1d0),a0_0x21c775(0x22c)],ENABLED_TOOLS=process[a0_0x21c775(0x1b6)][a0_0x21c775(0x231)]?process[a0_0x21c775(0x1b6)][a0_0x21c775(0x231)]==='all'?ALL_TOOLS:process[a0_0x21c775(0x1b6)][a0_0x21c775(0x231)][a0_0x21c775(0x198)](',')[a0_0x21c775(0x2ac)](_0x1c142a=>_0x1c142a[a0_0x21c775(0x1e4)]()):DEFAULT_TOOLS;console[a0_0x21c775(0x1d7)](a0_0x21c775(0x2a5)+ENABLED_TOOLS[a0_0x21c775(0x2ae)](',\x20'));const WORKSPACE_ROOT=process['env']['WORKSPACE_ROOT']||process[a0_0x21c775(0x1b6)][a0_0x21c775(0x193)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0x21c775(0x1b6)][a0_0x21c775(0x197)]!==a0_0x21c775(0x199),MORPH_API_KEY=getCliArg('api-key')??process[a0_0x21c775(0x1b6)][a0_0x21c775(0x20d)],MORPH_API_URL=process[a0_0x21c775(0x1b6)][a0_0x21c775(0x1d3)],MORPH_WARP_GREP_TIMEOUT=process[a0_0x21c775(0x1b6)][a0_0x21c775(0x2aa)]?parseInt(process[a0_0x21c775(0x1b6)][a0_0x21c775(0x2aa)],0xa):undefined;MORPH_API_KEY&&!MORPH_API_KEY[a0_0x21c775(0x27c)](a0_0x21c775(0x1f6))&&!MORPH_API_KEY[a0_0x21c775(0x27c)](a0_0x21c775(0x1d2))&&console[a0_0x21c775(0x1d7)](a0_0x21c775(0x1ed));async function reportMorphError(_0x241571){const _0x5e2b47=a0_0x21c775;try{await a0_0x20031a[_0x5e2b47(0x286)](_0x5e2b47(0x1c9),{..._0x241571,'timestamp':new Date()['toISOString'](),'source':_0x241571[_0x5e2b47(0x1cb)]||_0x5e2b47(0x1ae)},{'timeout':0x1388,'headers':{'Content-Type':_0x5e2b47(0x24f),'Authorization':_0x5e2b47(0x1a6)+MORPH_API_KEY}});}catch{}}args[a0_0x21c775(0x290)]===0x0&&!ENABLE_WORKSPACE_MODE&&(console[a0_0x21c775(0x1d7)](a0_0x21c775(0x204)),console['error']('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),console[a0_0x21c775(0x1d7)]('\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)'),console[a0_0x21c775(0x1d7)]('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),console[a0_0x21c775(0x1d7)](a0_0x21c775(0x1ce)),console[a0_0x21c775(0x1d7)](a0_0x21c775(0x234)));function normalizePath(_0x2d28d1){const _0x15da96=a0_0x21c775;return a0_0x2adf11[_0x15da96(0x257)](_0x2d28d1);}function expandHome(_0x25dd10){const _0x1b311a=a0_0x21c775;if(_0x25dd10['startsWith']('~/')||_0x25dd10==='~')return a0_0x2adf11[_0x1b311a(0x2ae)](a0_0x23e769[_0x1b311a(0x20e)](),_0x25dd10[_0x1b311a(0x254)](0x1));return _0x25dd10;}let allowedDirectories=await Promise[a0_0x21c775(0x21c)](args[a0_0x21c775(0x2ac)](async _0x34fe5e=>{const _0x1f85a3=a0_0x21c775,_0x140c0a=expandHome(_0x34fe5e),_0x576445=a0_0x2adf11['resolve'](_0x140c0a);try{const _0x112f30=await a0_0x493513[_0x1f85a3(0x1c3)](_0x576445);return normalizePath(_0x112f30);}catch(_0x3bec3b){return normalizePath(_0x576445);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x21c775(0x290)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x21c775(0x20f)](workspaceDir),console[a0_0x21c775(0x1d7)](a0_0x21c775(0x29c)+workspaceDir+a0_0x21c775(0x1ad)));}catch(a0_0x3a61e7){console['error']('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x3a61e7);}async function detectWorkspaceRoot(_0x53caa8){const _0x22539d=a0_0x21c775;let _0x3b3b1b=a0_0x2adf11[_0x22539d(0x1e9)](_0x53caa8);const _0x5259ae=['.git',_0x22539d(0x20c),'package.json','Cargo.toml',_0x22539d(0x28c),_0x22539d(0x192),_0x22539d(0x26b),'tsconfig.json','composer.json'];while(_0x3b3b1b!==a0_0x2adf11[_0x22539d(0x232)](_0x3b3b1b)){for(const _0x4f4a74 of _0x5259ae){const _0x5d13e1=a0_0x2adf11['join'](_0x3b3b1b,_0x4f4a74);try{return await a0_0x493513[_0x22539d(0x1df)](_0x5d13e1),normalizePath(_0x3b3b1b);}catch{}}_0x3b3b1b=a0_0x2adf11[_0x22539d(0x232)](_0x3b3b1b);}return normalizePath(_0x53caa8);}await Promise[a0_0x21c775(0x21c)](args[a0_0x21c775(0x2ac)](async _0x44afa2=>{const _0x5abbd2=a0_0x21c775;try{const _0x188180=await a0_0x493513[_0x5abbd2(0x1cf)](expandHome(_0x44afa2));!_0x188180[_0x5abbd2(0x230)]()&&(console[_0x5abbd2(0x1d7)]('Error:\x20'+_0x44afa2+'\x20is\x20not\x20a\x20directory'),process[_0x5abbd2(0x292)](0x1));}catch(_0x1916b6){console[_0x5abbd2(0x1d7)](_0x5abbd2(0x238)+_0x44afa2+':',_0x1916b6),process[_0x5abbd2(0x292)](0x1);}}));async function validatePath(_0x4b5fe7){const _0x5b4c34=a0_0x21c775,_0x3952b7=expandHome(_0x4b5fe7),_0x560e83=a0_0x2adf11[_0x5b4c34(0x1e9)](_0x3952b7);try{const _0x45ebde=await a0_0x493513[_0x5b4c34(0x1c3)](_0x560e83);return _0x45ebde;}catch(_0x584d59){if(_0x584d59[_0x5b4c34(0x282)]===_0x5b4c34(0x1fd)){const _0x5b6cde=a0_0x2adf11['dirname'](_0x560e83);try{const _0x5c4541=await a0_0x493513['realpath'](_0x5b6cde);return a0_0x2adf11[_0x5b4c34(0x2ae)](_0x5c4541,a0_0x2adf11['basename'](_0x560e83));}catch{throw new Error(_0x5b4c34(0x1ec)+_0x5b6cde);}}throw _0x584d59;}}const MorphEditFileArgsSchema=z[a0_0x21c775(0x1b4)]({'path':z[a0_0x21c775(0x1d8)](),'code_edit':z[a0_0x21c775(0x1d8)]()[a0_0x21c775(0x1dc)](a0_0x21c775(0x1f9)),'instruction':z[a0_0x21c775(0x1d8)]()[a0_0x21c775(0x1dc)](a0_0x21c775(0x1a3)),'dryRun':z[a0_0x21c775(0x25d)]()['default'](![])[a0_0x21c775(0x1dc)](a0_0x21c775(0x1be))}),WarpGrepArgsSchema=z['object']({'search_string':z[a0_0x21c775(0x1d8)]()[a0_0x21c775(0x1dc)](a0_0x21c775(0x20b)),'repo_path':z[a0_0x21c775(0x1d8)]()[a0_0x21c775(0x1dc)](a0_0x21c775(0x283))}),WarpGrepGitHubArgsSchema=z[a0_0x21c775(0x1b4)]({'search_string':z[a0_0x21c775(0x1d8)]()['describe']('Search\x20problem\x20statement\x20that\x20this\x20subagent\x20is\x20supposed\x20to\x20research\x20for'),'github_url':z[a0_0x21c775(0x1d8)]()[a0_0x21c775(0x1dc)](a0_0x21c775(0x1bc)),'branch':z['string']()[a0_0x21c775(0x1a8)]()[a0_0x21c775(0x1dc)](a0_0x21c775(0x252))}),CodebaseSearchArgsSchema=z[a0_0x21c775(0x1b4)]({'query':z[a0_0x21c775(0x1d8)]()[a0_0x21c775(0x1dc)](a0_0x21c775(0x269)),'repoId':z[a0_0x21c775(0x1d8)]()['describe'](a0_0x21c775(0x285)),'branch':z[a0_0x21c775(0x1d8)]()[a0_0x21c775(0x1a8)]()[a0_0x21c775(0x1dc)](a0_0x21c775(0x29e)),'commitHash':z[a0_0x21c775(0x1d8)]()[a0_0x21c775(0x1a8)]()['describe'](a0_0x21c775(0x19b)),'targetDirectories':z['array'](z[a0_0x21c775(0x1d8)]())['default']([])['describe'](a0_0x21c775(0x24a)),'limit':z['number']()[a0_0x21c775(0x1a8)]()[a0_0x21c775(0x235)](0xa)['describe'](a0_0x21c775(0x24d))}),server=new Server({'name':a0_0x21c775(0x21a),'version':a0_0x21c775(0x24c)},{'capabilities':{'tools':{}}});server[a0_0x21c775(0x1ea)](ListToolsRequestSchema,async()=>{const _0x10a071=a0_0x21c775,_0x6c53ee=[{'name':_0x10a071(0x191),'description':_0x10a071(0x246)+_0x10a071(0x23c)+_0x10a071(0x1fc)+_0x10a071(0x222)+_0x10a071(0x1aa)+'-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a'+_0x10a071(0x213)+_0x10a071(0x19a)+_0x10a071(0x27a)+_0x10a071(0x1c2)+'ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a'+'Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a'+_0x10a071(0x26c)+_0x10a071(0x194)+_0x10a071(0x2a4)+_0x10a071(0x276)+_0x10a071(0x278)+_0x10a071(0x1e1)+_0x10a071(0x263)+_0x10a071(0x1bd)+_0x10a071(0x1ff)+_0x10a071(0x274)+_0x10a071(0x28b),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':_0x10a071(0x1d0),'description':_0x10a071(0x1e7)+'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'+_0x10a071(0x1ba)+_0x10a071(0x25a)+'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'+_0x10a071(0x28f)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]},{'name':_0x10a071(0x1a7),'description':_0x10a071(0x1c4)+_0x10a071(0x202)+'🎯\x20USE\x20THIS\x20TOOL\x20to\x20find\x20code\x20when\x20you\x20need\x20to\x20understand\x20existing\x20implementations.\x0a\x0a'+_0x10a071(0x1aa)+_0x10a071(0x1b1)+'-\x20Returns\x20precise\x20code\x20chunks\x20with\x20relevance\x20scores\x0a'+_0x10a071(0x273)+_0x10a071(0x23a)+_0x10a071(0x1fa)+_0x10a071(0x1cd)+_0x10a071(0x2a7),'inputSchema':zodToJsonSchema(CodebaseSearchArgsSchema),'requiresApiKey':!![]}],_0x3bbaae=_0x6c53ee[_0x10a071(0x25c)](_0x32d40d=>{const _0x3e6bf9=_0x10a071;if(!ENABLED_TOOLS[_0x3e6bf9(0x196)](_0x32d40d['name']))return![];if(_0x3e6bf9(0x1e8)in _0x32d40d&&_0x32d40d[_0x3e6bf9(0x1e8)]&&!MORPH_API_KEY)return console[_0x3e6bf9(0x1d7)](_0x3e6bf9(0x217)+_0x32d40d[_0x3e6bf9(0x298)]+_0x3e6bf9(0x1e3)),![];return!![];});return{'tools':_0x3bbaae[_0x10a071(0x2ac)](_0x3b2794=>({'name':_0x3b2794[_0x10a071(0x298)],'description':_0x3b2794[_0x10a071(0x220)],'inputSchema':_0x3b2794['inputSchema']}))};}),server[a0_0x21c775(0x1ea)](CallToolRequestSchema,async _0x52cb97=>{const _0x608546=a0_0x21c775;try{const {name:_0x57b9ac,arguments:_0x2c38d6}=_0x52cb97[_0x608546(0x1e6)];switch(_0x57b9ac){case _0x608546(0x191):{const _0x537468=MorphEditFileArgsSchema[_0x608546(0x21e)](_0x2c38d6);if(!_0x537468[_0x608546(0x1cc)])throw new Error(_0x608546(0x23f)+_0x537468[_0x608546(0x1d7)]);const _0x198fb5=await validatePath(_0x537468[_0x608546(0x271)]['path']);let _0x4d0dd5=null,_0x14b9dc=!![],_0x4bda13=null;try{_0x4d0dd5=await a0_0x493513['readFile'](_0x198fb5,_0x608546(0x281));}catch(_0x1e946f){const _0x53ab38=_0x1e946f['code'];_0x53ab38==='ENOENT'?(_0x14b9dc=![],_0x4d0dd5=''):(_0x4bda13=_0x608546(0x259)+(_0x53ab38||_0x608546(0x28a))+_0x608546(0x29a)+(_0x1e946f instanceof Error?_0x1e946f[_0x608546(0x1bf)]:String(_0x1e946f)),console['error'](_0x608546(0x217)+_0x4bda13));}let _0x1cc3e0;try{const _0x4629b0=MORPH_API_KEY;if(!_0x4629b0)throw new Error(_0x608546(0x221));const _0x544607=a0_0x2adf11[_0x608546(0x232)](_0x198fb5),_0x2a5152=a0_0x2adf11[_0x608546(0x1c1)](_0x198fb5),_0x288561=await executeEditFile({'target_filepath':_0x2a5152,'code_edit':_0x537468['data']['code_edit'],'instructions':_0x537468[_0x608546(0x271)]['instruction']},{'morphApiKey':_0x4629b0,'morphApiUrl':MORPH_API_URL,'baseDir':_0x544607,'autoWrite':!_0x537468[_0x608546(0x271)][_0x608546(0x233)],'generateUdiff':![],'debug':![]});_0x1cc3e0=_0x288561[_0x608546(0x21d)];if(!_0x288561[_0x608546(0x1cc)])throw new Error(_0x288561[_0x608546(0x1d7)]||_0x608546(0x227));const _0x4b98ab=_0x288561[_0x608546(0x18f)],_0x34e179=_0x608546(0x29b)+_0x4b98ab['linesAdded']+_0x608546(0x27d)+_0x4b98ab['linesRemoved']+_0x608546(0x27f)+_0x4b98ab[_0x608546(0x27e)];if(_0x537468[_0x608546(0x271)][_0x608546(0x233)])return{'content':[{'type':_0x608546(0x190),'text':'Morph\x20Edit\x20Preview'+(_0x14b9dc?'':'\x20(new\x20file)')+':\x20'+_0x537468['data'][_0x608546(0x18e)]+_0x608546(0x289)+_0x34e179+'.\x20Path:\x20'+_0x537468[_0x608546(0x271)][_0x608546(0x1d6)]+'.'}]};return{'content':[{'type':_0x608546(0x190),'text':_0x608546(0x28e)+(_0x14b9dc?_0x608546(0x25e):_0x608546(0x2a2))+':\x20'+_0x537468[_0x608546(0x271)][_0x608546(0x18e)]+_0x608546(0x289)+_0x34e179+_0x608546(0x1c6)+_0x537468[_0x608546(0x271)]['path']+'.'}]};}catch(_0x444d9c){const _0x5e60fe=_0x444d9c instanceof Error?_0x444d9c[_0x608546(0x1bf)]:String(_0x444d9c);return reportMorphError({'error_message':_0x5e60fe,'error_type':_0x444d9c instanceof Error?_0x444d9c[_0x608546(0x284)][_0x608546(0x298)]:_0x608546(0x1bb),'context':{'tool':'edit_file','completion_id':_0x1cc3e0,'file_path':_0x537468[_0x608546(0x271)][_0x608546(0x1d6)],'validated_path':_0x198fb5,'instruction':_0x537468[_0x608546(0x271)]['instruction'],'model':_0x608546(0x215),'dry_run':_0x537468[_0x608546(0x271)][_0x608546(0x233)],'file_exists':_0x14b9dc,'file_read_error':_0x4bda13,'file_readable':_0x4d0dd5!==null,'request_content':{'path':_0x537468['data'][_0x608546(0x1d6)],'code_edit':_0x537468[_0x608546(0x271)][_0x608546(0x270)],'instruction':_0x537468[_0x608546(0x271)][_0x608546(0x18e)],'original_code':_0x4d0dd5!==null?_0x4d0dd5['length']>0xc350?_0x4d0dd5[_0x608546(0x206)](0x0,0xc350)+'\x0a...\x20(truncated,\x20total:\x20'+_0x4d0dd5['length']+_0x608546(0x1b2):_0x4d0dd5:_0x608546(0x22e)+(_0x4bda13||_0x608546(0x1a9))+']','original_code_length':_0x4d0dd5?.[_0x608546(0x290)]??0x0,'model':_0x608546(0x215),'dry_run':_0x537468[_0x608546(0x271)][_0x608546(0x233)]}},'stack_trace':_0x444d9c instanceof Error?_0x444d9c[_0x608546(0x262)]:undefined,'source':'mcp-filesystem'})[_0x608546(0x268)](()=>{}),{'content':[{'type':'text','text':'❌\x20Morph\x20Edit\x20Failed:\x20'+_0x5e60fe}],'isError':!![]};}}case _0x608546(0x1d0):{const _0x519605=WarpGrepArgsSchema[_0x608546(0x21e)](_0x2c38d6);if(!_0x519605['success'])return{'content':[{'type':_0x608546(0x190),'text':_0x608546(0x247)+_0x519605['error']}],'isError':!![]};const _0x335ea1=_0x3fa7e7=>{const _0x124523=_0x608546,_0x3f6ca8=[];for(const _0x343ae7 of _0x3fa7e7||[]){const _0x2d962f=_0x343ae7['role'],_0x4fb113=_0x343ae7[_0x124523(0x1f8)];if(_0x2d962f===_0x124523(0x251)&&_0x4fb113){const _0x4e4d7e=_0x4fb113['split']('\x0a')[_0x124523(0x25c)](_0x4671bf=>_0x4671bf[_0x124523(0x1e4)]());for(const _0x2dbef4 of _0x4e4d7e){const _0x194c9a=_0x2dbef4[_0x124523(0x1ee)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x194c9a){_0x3f6ca8[_0x124523(0x20f)](_0x124523(0x1eb)+_0x194c9a[0x1]+'\x27\x20'+_0x194c9a[0x2]);continue;}const _0x8413ae=_0x2dbef4[_0x124523(0x1ee)](/^read\s+(.+)$/);if(_0x8413ae){_0x3f6ca8[_0x124523(0x20f)](_0x124523(0x249)+_0x8413ae[0x1]);continue;}const _0x1f4557=_0x2dbef4[_0x124523(0x1ee)](/^list_directory\s+(.+)$/);if(_0x1f4557){_0x3f6ca8[_0x124523(0x20f)](_0x124523(0x22f)+_0x1f4557[0x1]);continue;}}}}return _0x3f6ca8;},_0x1b00fc=_0xad6583=>{const _0x249f82=_0x608546,_0x19adf8=[];if(!_0xad6583||!Array[_0x249f82(0x29d)](_0xad6583))return _0x19adf8;const _0x479172=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x249f82(0x23d),'tool':_0x249f82(0x1de)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x249f82(0x1f2),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x249f82(0x291),'tool':_0x249f82(0x1de)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x249f82(0x243),'tool':_0x249f82(0x1de)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':'RipgrepError','tool':_0x249f82(0x208)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x249f82(0x1f3),'tool':_0x249f82(0x208)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x249f82(0x243),'tool':_0x249f82(0x1de)},{'pattern':/\[SYMLINK\]/,'error_type':_0x249f82(0x26a),'tool':_0x249f82(0x1de)},{'pattern':/not a text file/,'error_type':_0x249f82(0x243),'tool':_0x249f82(0x1de)},{'pattern':/symbolic link/,'error_type':_0x249f82(0x26a),'tool':_0x249f82(0x1de)},{'pattern':/Error reading file:/,'error_type':_0x249f82(0x291),'tool':_0x249f82(0x1de)},{'pattern':/status="error"/,'error_type':_0x249f82(0x195),'tool':'unknown'}];let _0x34ad32=0x0;for(const _0x69aa59 of _0xad6583){if(_0x69aa59[_0x249f82(0x266)]===_0x249f82(0x226)){_0x34ad32++;const _0x3002c2=_0x69aa59[_0x249f82(0x1f8)];if(!_0x3002c2||typeof _0x3002c2!=='string')continue;for(const {pattern:_0x24021a,error_type:_0x29b87a,tool:_0xdde9a5}of _0x479172){const _0x24fe76=_0x3002c2[_0x249f82(0x1ee)](new RegExp(_0x24021a[_0x249f82(0x1cb)],'g'));if(_0x24fe76)for(const _0x59c900 of _0x24fe76){const _0x3bd5e7=_0x3002c2[_0x249f82(0x1f0)](_0x59c900),_0x239791=_0x3002c2[_0x249f82(0x206)](_0x3bd5e7,Math[_0x249f82(0x2a0)](_0x3bd5e7+0xc8,_0x3002c2['length']));_0x19adf8[_0x249f82(0x20f)]({'tool':_0xdde9a5,'error_type':_0x29b87a,'error_message':_0x239791[_0x249f82(0x198)]('\x0a')[0x0],'turn':_0x34ad32});}}}}return _0x19adf8;};try{const _0x318ecf=a0_0x2adf11[_0x608546(0x1e9)](_0x519605[_0x608546(0x271)]['repo_path']),_0x4d31fb=new LocalRipgrepProvider(_0x318ecf),_0x2a742d=await runWarpGrep({'query':_0x519605['data']['search_string'],'repoRoot':_0x318ecf,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x4d31fb}),_0x5a9468=_0x1b00fc(_0x2a742d['messages']);_0x5a9468[_0x608546(0x290)]>0x0&&reportMorphError({'error_message':_0x608546(0x1d5)+_0x5a9468[_0x608546(0x290)]+_0x608546(0x1e5),'error_type':'SubToolError','level':_0x608546(0x23b),'tool':'warpgrep_codebase_search','context':{'repo_path':_0x519605[_0x608546(0x271)][_0x608546(0x207)],'query':_0x519605[_0x608546(0x271)][_0x608546(0x275)],'model':_0x608546(0x1a0),'termination_reason':_0x2a742d[_0x608546(0x1f5)],'sub_tool_errors':_0x5a9468,'timings':_0x2a742d[_0x608546(0x1f1)],'tool_calls':_0x335ea1(_0x2a742d[_0x608546(0x1e2)]),'messages':_0x2a742d[_0x608546(0x1e2)]?.[_0x608546(0x2ac)](_0x2696f2=>({'role':_0x2696f2[_0x608546(0x266)],'content':_0x2696f2[_0x608546(0x1f8)]}))},'source':'mcp-filesystem'})[_0x608546(0x268)](()=>{});let _0x1b0b46='';if(_0x2a742d[_0x608546(0x1f5)]===_0x608546(0x19f)&&_0x2a742d[_0x608546(0x1da)]?.[_0x608546(0x258)]?.[_0x608546(0x242)]){const _0xa38fe0=_0x2a742d[_0x608546(0x1da)][_0x608546(0x258)]['files'];if(_0xa38fe0[_0x608546(0x290)]===0x0)return _0x1b0b46=_0x2a742d['finish'][_0x608546(0x250)]||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x608546(0x190),'text':_0x1b0b46}]};const _0x9b0c56=[],_0x50bc0a=[_0x608546(0x1b3)];for(const _0x2d43d1 of _0x2a742d[_0x608546(0x1e2)]){const _0x479a0f=_0x2d43d1[_0x608546(0x266)],_0x353374=_0x2d43d1[_0x608546(0x1f8)];if(_0x479a0f==='assistant'&&_0x353374){const _0x3a248a=_0x353374[_0x608546(0x198)]('\x0a')[_0x608546(0x25c)](_0x4d2001=>_0x4d2001[_0x608546(0x1e4)]());for(const _0x3f291e of _0x3a248a){const _0x4ae19b=_0x3f291e[_0x608546(0x1ee)](/^grep\s+'([^']+)'\s+(.+)$/);if(_0x4ae19b){_0x50bc0a['push'](_0x608546(0x241)+_0x4ae19b[0x1]+'\x27\x20in\x20`'+_0x4ae19b[0x2]+'`');continue;}const _0x126265=_0x3f291e[_0x608546(0x1ee)](/^read\s+(.+)$/);if(_0x126265){_0x50bc0a[_0x608546(0x20f)]('-\x20Read\x20file\x20`'+_0x126265[0x1]+'`');continue;}const _0x20d508=_0x3f291e[_0x608546(0x1ee)](/^list_directory\s+(.+)$/);if(_0x20d508){_0x50bc0a[_0x608546(0x20f)](_0x608546(0x1c0)+_0x20d508[0x1]+'`');continue;}}}}_0x9b0c56['push'](_0x50bc0a[_0x608546(0x2ae)]('\x0a'));const _0x47902a=['','Relevant\x20context\x20found:'];for(const _0x1f8e09 of _0xa38fe0){if(_0x1f8e09[_0x608546(0x2a1)]==='*')_0x47902a['push']('-\x20'+_0x1f8e09[_0x608546(0x1d6)]+':*');else{if(Array[_0x608546(0x29d)](_0x1f8e09[_0x608546(0x2a1)])){const _0x430b7b=_0x1f8e09[_0x608546(0x2a1)][_0x608546(0x2ac)](([_0x3b5a00,_0x2bd47c])=>{if(_0x3b5a00===_0x2bd47c)return''+_0x3b5a00;return _0x3b5a00+'-'+_0x2bd47c;});_0x47902a['push']('-\x20'+_0x1f8e09[_0x608546(0x1d6)]+':'+_0x430b7b[_0x608546(0x2ae)](','));}else _0x47902a[_0x608546(0x20f)]('-\x20'+_0x1f8e09[_0x608546(0x1d6)]+':*');}}_0x47902a['push'](''),_0x9b0c56['push'](_0x47902a['join']('\x0a')),_0x9b0c56[_0x608546(0x20f)](_0x608546(0x1ef));const _0x332a6a=[];for(const _0x9d3f0f of _0xa38fe0){let _0x4ca801=a0_0x2adf11[_0x608546(0x1e9)](_0x519605['data']['repo_path'],_0x9d3f0f[_0x608546(0x1d6)]),_0x336b68=null,_0x352a31=null;try{_0x336b68=await a0_0x493513['readFile'](_0x4ca801,{'encoding':_0x608546(0x281)});}catch(_0x40c7e7){const _0x2ee808=fixPathRepetition(_0x4ca801);if(_0x2ee808)try{_0x336b68=await a0_0x493513['readFile'](_0x2ee808,{'encoding':'utf-8'}),_0x4ca801=_0x2ee808;}catch{_0x352a31=_0x40c7e7 instanceof Error?_0x40c7e7:new Error(String(_0x40c7e7));}else _0x352a31=_0x40c7e7 instanceof Error?_0x40c7e7:new Error(String(_0x40c7e7));}if(_0x336b68!==null){const _0x31be65=_0x336b68[_0x608546(0x198)](/\r?\n/),_0x4ff95e=[_0x608546(0x2a8)+_0x9d3f0f['path']+'\x22>'];if(_0x9d3f0f[_0x608546(0x2a1)]==='*'||!Array['isArray'](_0x9d3f0f[_0x608546(0x2a1)]))for(let _0x5a7f89=0x1;_0x5a7f89<=_0x31be65['length'];_0x5a7f89++){const _0x12e14c=_0x31be65[_0x5a7f89-0x1];_0x4ff95e['push'](_0x5a7f89+'|\x20'+_0x12e14c);}else for(const [_0x234abf,_0x5bd9e3]of _0x9d3f0f[_0x608546(0x2a1)]){_0x4ff95e['length']>0x1&&_0x4ff95e[_0x608546(0x20f)]('');for(let _0x16cfaa=_0x234abf;_0x16cfaa<=_0x5bd9e3&&_0x16cfaa<=_0x31be65[_0x608546(0x290)];_0x16cfaa++){const _0xc05a41=_0x31be65[_0x16cfaa-0x1];_0x4ff95e[_0x608546(0x20f)](_0x16cfaa+'|\x20'+_0xc05a41);}}_0x4ff95e[_0x608546(0x20f)]('</file>'),_0x332a6a[_0x608546(0x20f)](_0x4ff95e['join']('\x0a'));}else _0x332a6a[_0x608546(0x20f)](_0x608546(0x2a8)+_0x9d3f0f[_0x608546(0x1d6)]+_0x608546(0x261)+(_0x352a31?.[_0x608546(0x1bf)]||_0x608546(0x287))+_0x608546(0x277));}_0x9b0c56[_0x608546(0x20f)](_0x332a6a['join']('\x0a\x0a')),_0x1b0b46=_0x9b0c56['join']('\x0a');const _0x5b4180=_0x2a742d['errors']?.['filter'](_0x4677c9=>_0x4677c9[_0x608546(0x1bf)]?.[_0x608546(0x27c)](_0x608546(0x1fb)))||[];if(_0x5b4180[_0x608546(0x290)]>0x0){const _0x26c41f=_0x5b4180[_0x608546(0x2ac)](_0x4606b2=>_0x4606b2[_0x608546(0x1bf)])['join'](';\x20');reportMorphError({'error_message':_0x26c41f,'error_type':_0x608546(0x20a),'context':{'tool':_0x608546(0x1d0),'repo_path':_0x519605[_0x608546(0x271)][_0x608546(0x207)],'query':_0x519605[_0x608546(0x271)][_0x608546(0x275)],'model':_0x608546(0x1a0),'termination_reason':_0x608546(0x27b),'error_count':_0x5b4180[_0x608546(0x290)],'is_timeout':![],'timings':_0x2a742d[_0x608546(0x1f1)],'files_attempted':_0xa38fe0[_0x608546(0x2ac)](_0x5b54e8=>({'path':_0x5b54e8['path'],'lines':_0x5b54e8[_0x608546(0x2a1)]})),'tool_calls':_0x335ea1(_0x2a742d[_0x608546(0x1e2)]),'messages':_0x2a742d[_0x608546(0x1e2)]?.['map'](_0x4219dd=>({'role':_0x4219dd[_0x608546(0x266)],'content':_0x4219dd[_0x608546(0x1f8)]})),'request_content':{'query':_0x519605[_0x608546(0x271)][_0x608546(0x275)],'repo_path':_0x519605[_0x608546(0x271)]['repo_path'],'repoRoot':a0_0x2adf11[_0x608546(0x1e9)](_0x519605[_0x608546(0x271)][_0x608546(0x207)]),'model':_0x608546(0x1a0)}},'source':_0x608546(0x1ae)})['catch'](()=>{});}}else{if(_0x2a742d['terminationReason']===_0x608546(0x2ab)&&_0x2a742d[_0x608546(0x200)][_0x608546(0x290)]>0x0){const _0x1fe5f4=_0x2a742d[_0x608546(0x200)]['map'](_0x14bab1=>_0x14bab1[_0x608546(0x1bf)])[_0x608546(0x2ae)](';\x20');_0x1b0b46=_0x608546(0x224)+_0x1fe5f4;const _0x1a8c41=_0x1fe5f4[_0x608546(0x214)]()[_0x608546(0x196)](_0x608546(0x22a))||_0x1fe5f4[_0x608546(0x214)]()[_0x608546(0x196)](_0x608546(0x239))||_0x1fe5f4[_0x608546(0x214)]()[_0x608546(0x196)](_0x608546(0x2a3)),_0x226c5e=_0x2a742d[_0x608546(0x1da)]?.[_0x608546(0x258)]?.[_0x608546(0x242)],_0xdc0176=_0x2a742d[_0x608546(0x200)][0x0];reportMorphError({'error_message':_0x1fe5f4,'error_type':_0x1a8c41?_0x608546(0x19d):_0xdc0176?.[_0x608546(0x284)]?.[_0x608546(0x298)]||_0x608546(0x1fe),'context':{'tool':'warpgrep_codebase_search','repo_path':_0x519605[_0x608546(0x271)][_0x608546(0x207)],'query':_0x519605[_0x608546(0x271)][_0x608546(0x275)],'model':_0x608546(0x1a0),'termination_reason':_0x2a742d[_0x608546(0x1f5)],'error_count':_0x2a742d[_0x608546(0x200)]['length'],'is_timeout':_0x1a8c41,'timings':_0x2a742d[_0x608546(0x1f1)],'files_attempted':_0x226c5e?.['map'](_0x5d4592=>({'path':_0x5d4592[_0x608546(0x1d6)],'lines':_0x5d4592[_0x608546(0x2a1)]})),'tool_calls':_0x335ea1(_0x2a742d[_0x608546(0x1e2)]),'messages':_0x2a742d['messages']?.[_0x608546(0x2ac)](_0x29933d=>({'role':_0x29933d[_0x608546(0x266)],'content':_0x29933d[_0x608546(0x1f8)]})),'request_content':{'query':_0x519605['data']['search_string'],'repo_path':_0x519605['data']['repo_path'],'repoRoot':a0_0x2adf11[_0x608546(0x1e9)](_0x519605[_0x608546(0x271)][_0x608546(0x207)]),'model':_0x608546(0x1a0)}},'stack_trace':_0xdc0176?.[_0x608546(0x262)]||undefined,'source':_0x608546(0x1ae)})['catch'](()=>{});}else _0x1b0b46=_0x608546(0x229);}return{'content':[{'type':_0x608546(0x190),'text':_0x1b0b46}]};}catch(_0x2c6a8f){const _0x5e19fd=_0x2c6a8f instanceof Error?_0x2c6a8f[_0x608546(0x1bf)]:String(_0x2c6a8f),_0x572656=_0x5e19fd[_0x608546(0x214)]()[_0x608546(0x196)](_0x608546(0x22a))||_0x5e19fd['toLowerCase']()[_0x608546(0x196)](_0x608546(0x239))||_0x5e19fd[_0x608546(0x214)]()[_0x608546(0x196)](_0x608546(0x2a3))||_0x2c6a8f instanceof Error&&_0x2c6a8f[_0x608546(0x298)]===_0x608546(0x19d);return reportMorphError({'error_message':_0x5e19fd,'error_type':_0x572656?_0x608546(0x19d):_0x2c6a8f instanceof Error?_0x2c6a8f['constructor'][_0x608546(0x298)]:'UnknownError','context':{'tool':_0x608546(0x1d0),'repo_path':_0x519605[_0x608546(0x271)][_0x608546(0x207)],'query':_0x519605['data'][_0x608546(0x275)],'model':_0x608546(0x1a0),'is_timeout':_0x572656,'exception_phase':'runWarpGrep_call','request_content':{'query':_0x519605[_0x608546(0x271)]['search_string'],'repo_path':_0x519605[_0x608546(0x271)][_0x608546(0x207)],'repoRoot':a0_0x2adf11[_0x608546(0x1e9)](_0x519605['data'][_0x608546(0x207)]),'model':_0x608546(0x1a0)}},'stack_trace':_0x2c6a8f instanceof Error?_0x2c6a8f[_0x608546(0x262)]:undefined,'source':_0x608546(0x1ae)})[_0x608546(0x268)](()=>{}),{'content':[{'type':'text','text':_0x608546(0x211)+_0x5e19fd}],'isError':![]};}}case _0x608546(0x22c):{const _0x12d2ac=WarpGrepGitHubArgsSchema[_0x608546(0x21e)](_0x2c38d6);if(!_0x12d2ac['success'])return{'content':[{'type':_0x608546(0x190),'text':_0x608546(0x247)+_0x12d2ac['error']}],'isError':!![]};const _0x303246=MORPH_API_KEY;if(!_0x303246)throw new Error(_0x608546(0x221));const _0x2836ea=Date[_0x608546(0x1a1)]();console['error'](_0x608546(0x296)+_0x12d2ac[_0x608546(0x271)][_0x608546(0x22b)]+_0x608546(0x293)+_0x12d2ac[_0x608546(0x271)]['search_string']+'\x22');try{const _0x177ee4=new WarpGrepClient({'morphApiKey':_0x303246,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x25fde1=await _0x177ee4[_0x608546(0x21b)]({'query':_0x12d2ac[_0x608546(0x271)][_0x608546(0x275)],'github':_0x12d2ac[_0x608546(0x271)][_0x608546(0x22b)],'branch':_0x12d2ac[_0x608546(0x271)][_0x608546(0x19e)]}),_0x5010a7=Date[_0x608546(0x1a1)]()-_0x2836ea;console['error'](_0x608546(0x201)+_0x5010a7+_0x608546(0x24b)+_0x25fde1['success']);const _0xa2e65b=formatResult(_0x25fde1);return{'content':[{'type':_0x608546(0x190),'text':_0xa2e65b}]};}catch(_0x2c9b0d){const _0x4e3f9e=Date[_0x608546(0x1a1)]()-_0x2836ea,_0x4cd894=_0x2c9b0d instanceof Error?_0x2c9b0d[_0x608546(0x1bf)]:String(_0x2c9b0d);return console[_0x608546(0x1d7)](_0x608546(0x209)+_0x4e3f9e+_0x608546(0x203),_0x4cd894),reportMorphError({'error_message':_0x4cd894,'error_type':_0x2c9b0d instanceof Error?_0x2c9b0d['constructor'][_0x608546(0x298)]:_0x608546(0x1bb),'context':{'tool':_0x608546(0x22c),'github_url':_0x12d2ac[_0x608546(0x271)][_0x608546(0x22b)],'search_string':_0x12d2ac[_0x608546(0x271)][_0x608546(0x275)],'branch':_0x12d2ac[_0x608546(0x271)][_0x608546(0x19e)]},'stack_trace':_0x2c9b0d instanceof Error?_0x2c9b0d[_0x608546(0x262)]:undefined,'source':_0x608546(0x1ae),'tool':_0x608546(0x22c),'latency_ms':_0x4e3f9e})[_0x608546(0x268)](()=>{}),{'content':[{'type':_0x608546(0x190),'text':_0x608546(0x25f)+_0x4cd894}],'isError':![]};}}case _0x608546(0x1a7):{const _0x370132=CodebaseSearchArgsSchema[_0x608546(0x21e)](_0x2c38d6);if(!_0x370132[_0x608546(0x1cc)])return{'content':[{'type':_0x608546(0x190),'text':_0x608546(0x247)+_0x370132[_0x608546(0x1d7)]}],'isError':!![]};try{const _0x1ffe57=MORPH_API_KEY;if(!_0x1ffe57)throw new Error(_0x608546(0x225));const _0x3d150b=_0x370132[_0x608546(0x271)][_0x608546(0x23e)],_0x36a1bb=await executeCodebaseSearch({'query':_0x370132[_0x608546(0x271)][_0x608546(0x223)],'target_directories':_0x3d150b,'limit':_0x370132[_0x608546(0x271)][_0x608546(0x236)]},{'apiKey':_0x1ffe57,'repoId':_0x370132[_0x608546(0x271)][_0x608546(0x26f)],'branch':_0x370132[_0x608546(0x271)]['branch'],'commitHash':_0x370132[_0x608546(0x271)][_0x608546(0x219)],'debug':![]});if(!_0x36a1bb[_0x608546(0x1cc)])return{'content':[{'type':_0x608546(0x190),'text':_0x608546(0x24e)+_0x36a1bb[_0x608546(0x1d7)]}],'isError':!![]};const _0x150b06=_0x36a1bb['results'][_0x608546(0x290)]===0x0?_0x608546(0x1a5)+_0x370132['data']['query']+'\x22':_0x608546(0x1af)+_0x36a1bb[_0x608546(0x272)]['length']+_0x608546(0x26d)+_0x36a1bb[_0x608546(0x1a4)]['searchTimeMs']+_0x608546(0x1db)+_0x36a1bb[_0x608546(0x272)][_0x608546(0x2ac)]((_0x4ed972,_0xfa3640)=>_0xfa3640+0x1+'.\x20'+_0x4ed972[_0x608546(0x22d)]+'\x20('+(_0x4ed972[_0x608546(0x248)]*0x64)[_0x608546(0x205)](0x1)+_0x608546(0x1f7)+(_0x608546(0x260)+_0x4ed972['startLine']+'-'+_0x4ed972[_0x608546(0x264)]+'\x0a')+(_0x608546(0x216)+_0x4ed972[_0x608546(0x1f8)][_0x608546(0x206)](0x0,0xc8)+(_0x4ed972['content'][_0x608546(0x290)]>0xc8?_0x608546(0x19c):'')+'\x0a'))[_0x608546(0x2ae)]('\x0a');return{'content':[{'type':_0x608546(0x190),'text':_0x150b06}]};}catch(_0x454c09){const _0x5504da=_0x454c09 instanceof Error?_0x454c09[_0x608546(0x1bf)]:String(_0x454c09);return reportMorphError({'error_message':_0x5504da,'error_type':_0x454c09 instanceof Error?_0x454c09['constructor'][_0x608546(0x298)]:_0x608546(0x1bb),'context':{'tool':'codebase_search','query':_0x370132[_0x608546(0x271)]['query'],'repo_id':_0x370132['data'][_0x608546(0x26f)],'target_directories':_0x370132[_0x608546(0x271)][_0x608546(0x23e)]},'stack_trace':_0x454c09 instanceof Error?_0x454c09['stack']:undefined,'source':'mcp-filesystem'})[_0x608546(0x268)](()=>{}),{'content':[{'type':'text','text':_0x608546(0x224)+_0x5504da}],'isError':!![]};}}default:throw new Error(_0x608546(0x253)+_0x57b9ac);}}catch(_0xe3083f){const _0x323a9f=_0xe3083f instanceof Error?_0xe3083f[_0x608546(0x1bf)]:String(_0xe3083f);return reportMorphError({'error_message':_0x323a9f,'error_type':_0xe3083f instanceof Error?_0xe3083f[_0x608546(0x284)]['name']:_0x608546(0x1bb),'context':{'tool':name,'arguments':args?JSON[_0x608546(0x295)](args)[_0x608546(0x206)](0x0,0x1f4):undefined,'mcp_server_version':_0x608546(0x24c)},'stack_trace':_0xe3083f instanceof Error?_0xe3083f[_0x608546(0x262)]:undefined,'source':'mcp-filesystem'})[_0x608546(0x268)](()=>{}),{'content':[{'type':_0x608546(0x190),'text':_0x608546(0x224)+_0x323a9f}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x41e2a2){const _0x3d98a8=a0_0x21c775,_0x3877b8=await getValidRootDirectories(_0x41e2a2);if(_0x3877b8[_0x3d98a8(0x290)]>0x0)allowedDirectories=[..._0x3877b8],console['error'](_0x3d98a8(0x245)+_0x3877b8[_0x3d98a8(0x290)]+_0x3d98a8(0x210));else{console['error'](_0x3d98a8(0x1c7));if(ENABLE_WORKSPACE_MODE)try{const _0x52f07e=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x52f07e&&(allowedDirectories=[_0x52f07e],console[_0x3d98a8(0x1d7)](_0x3d98a8(0x1d1)+_0x52f07e));}catch(_0x325530){console[_0x3d98a8(0x1d7)](_0x3d98a8(0x2af)+_0x325530);}}}server[a0_0x21c775(0x1a2)](RootsListChangedNotificationSchema,async()=>{const _0x20727b=a0_0x21c775;try{const _0x2abf35=await server[_0x20727b(0x255)]();_0x2abf35&&'roots'in _0x2abf35&&await updateAllowedDirectoriesFromRoots(_0x2abf35[_0x20727b(0x1b7)]);}catch(_0x92cfc0){console[_0x20727b(0x1d7)]('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x92cfc0 instanceof Error?_0x92cfc0[_0x20727b(0x1bf)]:String(_0x92cfc0));}}),server['oninitialized']=async()=>{const _0x39d253=a0_0x21c775,_0x434463=server[_0x39d253(0x1dd)]();if(_0x434463?.[_0x39d253(0x1b7)])try{const _0x44b8f2=await server[_0x39d253(0x255)]();_0x44b8f2&&'roots'in _0x44b8f2?await updateAllowedDirectoriesFromRoots(_0x44b8f2['roots']):console[_0x39d253(0x1d7)]('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x66ab3f){console['error'](_0x39d253(0x1b5),_0x66ab3f instanceof Error?_0x66ab3f['message']:String(_0x66ab3f));}else{if(allowedDirectories[_0x39d253(0x290)]>0x0)console[_0x39d253(0x1d7)](_0x39d253(0x218),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)console[_0x39d253(0x1d7)](_0x39d253(0x228));else throw new Error(_0x39d253(0x1c8));}}};async function runServer(){const _0x18854b=a0_0x21c775,_0x132546=new StdioServerTransport();await server[_0x18854b(0x21f)](_0x132546),console['error'](_0x18854b(0x294)),allowedDirectories[_0x18854b(0x290)]===0x0&&console[_0x18854b(0x1d7)](_0x18854b(0x265));}runServer()['catch'](_0x26042c=>{const _0x1fd7ae=a0_0x21c775;console[_0x1fd7ae(0x1d7)](_0x1fd7ae(0x244),_0x26042c),process[_0x1fd7ae(0x292)](0x1);});
@@ -1 +1 @@
1
- (function(_0x5118ae,_0x264cd5){const _0x235d33=a1_0x1e42,_0x1d2275=_0x5118ae();while(!![]){try{const _0x62f874=-parseInt(_0x235d33(0x184))/0x1*(parseInt(_0x235d33(0x18a))/0x2)+-parseInt(_0x235d33(0x191))/0x3*(-parseInt(_0x235d33(0x181))/0x4)+parseInt(_0x235d33(0x17e))/0x5*(-parseInt(_0x235d33(0x194))/0x6)+parseInt(_0x235d33(0x187))/0x7+parseInt(_0x235d33(0x182))/0x8*(parseInt(_0x235d33(0x188))/0x9)+-parseInt(_0x235d33(0x18d))/0xa*(parseInt(_0x235d33(0x183))/0xb)+-parseInt(_0x235d33(0x17f))/0xc;if(_0x62f874===_0x264cd5)break;else _0x1d2275['push'](_0x1d2275['shift']());}catch(_0x2728ee){_0x1d2275['push'](_0x1d2275['shift']());}}}(a1_0x4088,0xd2737));import a1_0x4551b5 from'path';import a1_0x4f0afa from'os';function a1_0x4088(){const _0x38dc02=['normalize','18tNHHZE','1236005AZiBJU','3481596VTHhxg','charAt','5070484orKYfL','16RFCbFR','33FxdEJo','649981qNPvHm','homedir','match','2788506WbXNOA','4423149hNEfRm','trim','2OGdpNN','toUpperCase','replace','350590xVVwEp','startsWith','test','/mnt/','3oEpOem','slice'];a1_0x4088=function(){return _0x38dc02;};return a1_0x4088();}function a1_0x1e42(_0x33a6b7,_0x4e3c86){_0x33a6b7=_0x33a6b7-0x17e;const _0x4088a9=a1_0x4088();let _0x1e4240=_0x4088a9[_0x33a6b7];return _0x1e4240;}export function convertToWindowsPath(_0x3b5780){const _0x65e50=a1_0x1e42;if(_0x3b5780[_0x65e50(0x18e)](_0x65e50(0x190))){const _0xa230a9=_0x3b5780[_0x65e50(0x180)](0x5)[_0x65e50(0x18b)](),_0x56d4bc=_0x3b5780[_0x65e50(0x192)](0x6)[_0x65e50(0x18c)](/\//g,'\x5c');return _0xa230a9+':'+_0x56d4bc;}if(_0x3b5780[_0x65e50(0x186)](/^\/[a-zA-Z]\//)){const _0xcb2ead=_0x3b5780[_0x65e50(0x180)](0x1)[_0x65e50(0x18b)](),_0x2d60c1=_0x3b5780['slice'](0x2)[_0x65e50(0x18c)](/\//g,'\x5c');return _0xcb2ead+':'+_0x2d60c1;}if(_0x3b5780[_0x65e50(0x186)](/^[a-zA-Z]:/))return _0x3b5780[_0x65e50(0x18c)](/\//g,'\x5c');return _0x3b5780;}export function normalizePath(_0x450638){const _0x41f544=a1_0x1e42;_0x450638=_0x450638[_0x41f544(0x189)]()[_0x41f544(0x18c)](/^["']|["']$/g,'');const _0x261ada=_0x450638['startsWith']('/')&&!_0x450638[_0x41f544(0x186)](/^\/mnt\/[a-z]\//i)&&!_0x450638[_0x41f544(0x186)](/^\/[a-zA-Z]\//);if(_0x261ada)return _0x450638[_0x41f544(0x18c)](/\/+/g,'/')[_0x41f544(0x18c)](/\/+$/,'');_0x450638=convertToWindowsPath(_0x450638);if(_0x450638['startsWith']('\x5c\x5c')){let _0x5b2f7c=_0x450638;_0x5b2f7c=_0x5b2f7c[_0x41f544(0x18c)](/^\\{2,}/,'\x5c\x5c');const _0x435816=_0x5b2f7c['substring'](0x2)[_0x41f544(0x18c)](/\\\\/g,'\x5c');_0x450638='\x5c\x5c'+_0x435816;}else _0x450638=_0x450638[_0x41f544(0x18c)](/\\\\/g,'\x5c');let _0x57e7a3=a1_0x4551b5[_0x41f544(0x193)](_0x450638);_0x450638[_0x41f544(0x18e)]('\x5c\x5c')&&!_0x57e7a3[_0x41f544(0x18e)]('\x5c\x5c')&&(_0x57e7a3='\x5c'+_0x57e7a3);if(_0x57e7a3[_0x41f544(0x186)](/^[a-zA-Z]:/)){let _0x5e678d=_0x57e7a3['replace'](/\//g,'\x5c');return/^[a-z]:/[_0x41f544(0x18f)](_0x5e678d)&&(_0x5e678d=_0x5e678d[_0x41f544(0x180)](0x0)[_0x41f544(0x18b)]()+_0x5e678d[_0x41f544(0x192)](0x1)),_0x5e678d;}return _0x57e7a3['replace'](/\//g,'\x5c');}export function expandHome(_0x347b3d){const _0xdebaca=a1_0x1e42;if(_0x347b3d[_0xdebaca(0x18e)]('~/')||_0x347b3d==='~')return a1_0x4551b5['join'](a1_0x4f0afa[_0xdebaca(0x185)](),_0x347b3d['slice'](0x1));return _0x347b3d;}
1
+ (function(_0x98e44a,_0x274d6d){const _0x3c941f=a1_0x1c95,_0x1ffb25=_0x98e44a();while(!![]){try{const _0x234a01=parseInt(_0x3c941f(0x9e))/0x1*(parseInt(_0x3c941f(0x9a))/0x2)+parseInt(_0x3c941f(0x9d))/0x3+parseInt(_0x3c941f(0x98))/0x4+-parseInt(_0x3c941f(0xa1))/0x5+parseInt(_0x3c941f(0x96))/0x6+parseInt(_0x3c941f(0xa3))/0x7*(parseInt(_0x3c941f(0xa4))/0x8)+-parseInt(_0x3c941f(0x9f))/0x9;if(_0x234a01===_0x274d6d)break;else _0x1ffb25['push'](_0x1ffb25['shift']());}catch(_0x147426){_0x1ffb25['push'](_0x1ffb25['shift']());}}}(a1_0x144e,0xded00));import a1_0x1a0606 from'path';import a1_0x39f454 from'os';export function convertToWindowsPath(_0x39f765){const _0xc08563=a1_0x1c95;if(_0x39f765[_0xc08563(0xa2)](_0xc08563(0x9b))){const _0xd319db=_0x39f765['charAt'](0x5)['toUpperCase'](),_0x41d96d=_0x39f765[_0xc08563(0x9c)](0x6)[_0xc08563(0x99)](/\//g,'\x5c');return _0xd319db+':'+_0x41d96d;}if(_0x39f765['match'](/^\/[a-zA-Z]\//)){const _0x6b5995=_0x39f765[_0xc08563(0xa0)](0x1)[_0xc08563(0xa7)](),_0x11e123=_0x39f765[_0xc08563(0x9c)](0x2)[_0xc08563(0x99)](/\//g,'\x5c');return _0x6b5995+':'+_0x11e123;}if(_0x39f765[_0xc08563(0xa5)](/^[a-zA-Z]:/))return _0x39f765[_0xc08563(0x99)](/\//g,'\x5c');return _0x39f765;}function a1_0x144e(){const _0x2a37d5=['152QcfPqx','match','homedir','toUpperCase','normalize','trim','1648188jnkbTR','substring','467820WYQixT','replace','69614ZtrSsO','/mnt/','slice','3311160gJTiYr','8aMILzi','10822086eDdvIF','charAt','1792145jgFMiR','startsWith','257782TjEwfJ'];a1_0x144e=function(){return _0x2a37d5;};return a1_0x144e();}function a1_0x1c95(_0x1c8aae,_0x176c64){_0x1c8aae=_0x1c8aae-0x96;const _0x144eda=a1_0x144e();let _0x1c9592=_0x144eda[_0x1c8aae];return _0x1c9592;}export function normalizePath(_0x5998e6){const _0x16c980=a1_0x1c95;_0x5998e6=_0x5998e6[_0x16c980(0xa9)]()[_0x16c980(0x99)](/^["']|["']$/g,'');const _0x47ccec=_0x5998e6[_0x16c980(0xa2)]('/')&&!_0x5998e6['match'](/^\/mnt\/[a-z]\//i)&&!_0x5998e6[_0x16c980(0xa5)](/^\/[a-zA-Z]\//);if(_0x47ccec)return _0x5998e6[_0x16c980(0x99)](/\/+/g,'/')[_0x16c980(0x99)](/\/+$/,'');_0x5998e6=convertToWindowsPath(_0x5998e6);if(_0x5998e6['startsWith']('\x5c\x5c')){let _0x36b251=_0x5998e6;_0x36b251=_0x36b251[_0x16c980(0x99)](/^\\{2,}/,'\x5c\x5c');const _0x57d9fc=_0x36b251[_0x16c980(0x97)](0x2)[_0x16c980(0x99)](/\\\\/g,'\x5c');_0x5998e6='\x5c\x5c'+_0x57d9fc;}else _0x5998e6=_0x5998e6['replace'](/\\\\/g,'\x5c');let _0x342d7c=a1_0x1a0606[_0x16c980(0xa8)](_0x5998e6);_0x5998e6[_0x16c980(0xa2)]('\x5c\x5c')&&!_0x342d7c[_0x16c980(0xa2)]('\x5c\x5c')&&(_0x342d7c='\x5c'+_0x342d7c);if(_0x342d7c[_0x16c980(0xa5)](/^[a-zA-Z]:/)){let _0x1fa919=_0x342d7c['replace'](/\//g,'\x5c');return/^[a-z]:/['test'](_0x1fa919)&&(_0x1fa919=_0x1fa919['charAt'](0x0)[_0x16c980(0xa7)]()+_0x1fa919[_0x16c980(0x9c)](0x1)),_0x1fa919;}return _0x342d7c['replace'](/\//g,'\x5c');}export function expandHome(_0x4553bc){const _0x34d7ec=a1_0x1c95;if(_0x4553bc[_0x34d7ec(0xa2)]('~/')||_0x4553bc==='~')return a1_0x1a0606['join'](a1_0x39f454[_0x34d7ec(0xa6)](),_0x4553bc[_0x34d7ec(0x9c)](0x1));return _0x4553bc;}
@@ -1 +1 @@
1
- function a2_0x2ca5(){const _0x4773e1=['764852WQUFcQ','sep','startsWith','string','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','812088aLZghe','6uRxrwR','resolve','includes','isAbsolute','normalize','Path\x20must\x20be\x20absolute\x20after\x20normalization','5346648lwiBTL','some','417523JwNIvV','5QDFtTj','6689490SJTEfa','5486033EveBMX','isArray','8118528lrGraM'];a2_0x2ca5=function(){return _0x4773e1;};return a2_0x2ca5();}(function(_0x534a07,_0x33de06){const _0x35c472=a2_0x4e2a,_0x92367a=_0x534a07();while(!![]){try{const _0x1233f8=parseInt(_0x35c472(0xae))/0x1*(-parseInt(_0x35c472(0xa6))/0x2)+parseInt(_0x35c472(0xa5))/0x3+parseInt(_0x35c472(0xa0))/0x4*(-parseInt(_0x35c472(0xaf))/0x5)+parseInt(_0x35c472(0xb0))/0x6+-parseInt(_0x35c472(0xb1))/0x7+parseInt(_0x35c472(0x9f))/0x8+parseInt(_0x35c472(0xac))/0x9;if(_0x1233f8===_0x33de06)break;else _0x92367a['push'](_0x92367a['shift']());}catch(_0x2a9686){_0x92367a['push'](_0x92367a['shift']());}}}(a2_0x2ca5,0xbb416));function a2_0x4e2a(_0x20aea3,_0x3648d7){_0x20aea3=_0x20aea3-0x9f;const _0x2ca50e=a2_0x2ca5();let _0x4e2aa1=_0x2ca50e[_0x20aea3];return _0x4e2aa1;}import a2_0x5f3f31 from'path';export function isPathWithinAllowedDirectories(_0x304b8a,_0xfe835a){const _0x138ee9=a2_0x4e2a;if(typeof _0x304b8a!==_0x138ee9(0xa3)||!Array[_0x138ee9(0xb2)](_0xfe835a))return![];if(!_0x304b8a||_0xfe835a['length']===0x0)return![];if(_0x304b8a[_0x138ee9(0xa8)]('\x00'))return![];let _0x464197;try{_0x464197=a2_0x5f3f31[_0x138ee9(0xa7)](a2_0x5f3f31[_0x138ee9(0xaa)](_0x304b8a));}catch{return![];}if(!a2_0x5f3f31[_0x138ee9(0xa9)](_0x464197))throw new Error(_0x138ee9(0xab));return _0xfe835a[_0x138ee9(0xad)](_0x192a8d=>{const _0x43866e=_0x138ee9;if(typeof _0x192a8d!==_0x43866e(0xa3)||!_0x192a8d)return![];if(_0x192a8d['includes']('\x00'))return![];let _0x569262;try{_0x569262=a2_0x5f3f31[_0x43866e(0xa7)](a2_0x5f3f31['normalize'](_0x192a8d));}catch{return![];}if(!a2_0x5f3f31[_0x43866e(0xa9)](_0x569262))throw new Error(_0x43866e(0xa4));if(_0x464197===_0x569262)return!![];if(_0x569262===a2_0x5f3f31['sep'])return _0x464197[_0x43866e(0xa2)](a2_0x5f3f31[_0x43866e(0xa1)]);return _0x464197[_0x43866e(0xa2)](_0x569262+a2_0x5f3f31[_0x43866e(0xa1)]);});}
1
+ (function(_0x21c10f,_0x19d943){const _0x5a2668=a2_0x22ee,_0x389d61=_0x21c10f();while(!![]){try{const _0x35331f=-parseInt(_0x5a2668(0x205))/0x1*(-parseInt(_0x5a2668(0x1f8))/0x2)+parseInt(_0x5a2668(0x1f0))/0x3*(-parseInt(_0x5a2668(0x203))/0x4)+-parseInt(_0x5a2668(0x1ff))/0x5+parseInt(_0x5a2668(0x1f3))/0x6+-parseInt(_0x5a2668(0x1fe))/0x7+parseInt(_0x5a2668(0x1f9))/0x8*(-parseInt(_0x5a2668(0x1f4))/0x9)+parseInt(_0x5a2668(0x1fa))/0xa;if(_0x35331f===_0x19d943)break;else _0x389d61['push'](_0x389d61['shift']());}catch(_0x2924e6){_0x389d61['push'](_0x389d61['shift']());}}}(a2_0x1042,0x2b68c));function a2_0x22ee(_0x58a81e,_0x3b8175){_0x58a81e=_0x58a81e-0x1f0;const _0x104225=a2_0x1042();let _0x22ee2e=_0x104225[_0x58a81e];return _0x22ee2e;}import a2_0x51953a from'path';function a2_0x1042(){const _0x3b70ab=['Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','202932iAtgLd','3SrIIAV','resolve','normalize','1930776UxkFGL','2260395kugrwv','isArray','string','startsWith','2FedHIB','8gHbfWb','6426250rMYQHs','length','isAbsolute','Path\x20must\x20be\x20absolute\x20after\x20normalization','2312261UsXbEK','637950WAWqsC','some','includes','sep','1121924hEjNHK'];a2_0x1042=function(){return _0x3b70ab;};return a2_0x1042();}export function isPathWithinAllowedDirectories(_0x1ed703,_0x2b370b){const _0xc74cf4=a2_0x22ee;if(typeof _0x1ed703!==_0xc74cf4(0x1f6)||!Array[_0xc74cf4(0x1f5)](_0x2b370b))return![];if(!_0x1ed703||_0x2b370b[_0xc74cf4(0x1fb)]===0x0)return![];if(_0x1ed703[_0xc74cf4(0x201)]('\x00'))return![];let _0x3b53a2;try{_0x3b53a2=a2_0x51953a[_0xc74cf4(0x1f1)](a2_0x51953a[_0xc74cf4(0x1f2)](_0x1ed703));}catch{return![];}if(!a2_0x51953a[_0xc74cf4(0x1fc)](_0x3b53a2))throw new Error(_0xc74cf4(0x1fd));return _0x2b370b[_0xc74cf4(0x200)](_0x2c4000=>{const _0x4c9d7f=_0xc74cf4;if(typeof _0x2c4000!=='string'||!_0x2c4000)return![];if(_0x2c4000[_0x4c9d7f(0x201)]('\x00'))return![];let _0x333b8f;try{_0x333b8f=a2_0x51953a[_0x4c9d7f(0x1f1)](a2_0x51953a[_0x4c9d7f(0x1f2)](_0x2c4000));}catch{return![];}if(!a2_0x51953a[_0x4c9d7f(0x1fc)](_0x333b8f))throw new Error(_0x4c9d7f(0x204));if(_0x3b53a2===_0x333b8f)return!![];if(_0x333b8f===a2_0x51953a[_0x4c9d7f(0x202)])return _0x3b53a2['startsWith'](a2_0x51953a['sep']);return _0x3b53a2[_0x4c9d7f(0x1f7)](_0x333b8f+a2_0x51953a[_0x4c9d7f(0x202)]);});}
@@ -1 +1 @@
1
- (function(_0xa772e8,_0x1b62cf){const _0x1e94da=a3_0x399d,_0x373d24=_0xa772e8();while(!![]){try{const _0xe128b=parseInt(_0x1e94da(0x136))/0x1+parseInt(_0x1e94da(0x12e))/0x2*(parseInt(_0x1e94da(0x123))/0x3)+parseInt(_0x1e94da(0x12d))/0x4+parseInt(_0x1e94da(0x122))/0x5+parseInt(_0x1e94da(0x12f))/0x6+parseInt(_0x1e94da(0x12a))/0x7+-parseInt(_0x1e94da(0x137))/0x8*(parseInt(_0x1e94da(0x133))/0x9);if(_0xe128b===_0x1b62cf)break;else _0x373d24['push'](_0x373d24['shift']());}catch(_0x1fcbc9){_0x373d24['push'](_0x373d24['shift']());}}}(a3_0x1dde,0x8d9f6));function a3_0x1dde(){const _0x39e45b=['809970DPAAiS','2283xnWbnW','Skipping\x20invalid\x20directory:\x20','uri','error','non-directory\x20root','realpath','resolve','4058481pHfuxc','push','startsWith','2875712YNrqOI','302iggzKa','1020066gPQezq','slice','stat','invalid\x20path\x20or\x20inaccessible','9nqynKr','file://','isDirectory','1140865BOKcXy','18451248UbnWLc'];a3_0x1dde=function(){return _0x39e45b;};return a3_0x1dde();}import{promises as a3_0x572c9f}from'fs';import a3_0x159c4d from'path';import a3_0x5cc0b8 from'os';import{normalizePath}from'./path-utils.js';function a3_0x399d(_0x52ad8b,_0x55309b){_0x52ad8b=_0x52ad8b-0x122;const _0x1ddec0=a3_0x1dde();let _0x399dfd=_0x1ddec0[_0x52ad8b];return _0x399dfd;}async function parseRootUri(_0x539c5e){const _0x505035=a3_0x399d;try{const _0x3670b9=_0x539c5e['startsWith'](_0x505035(0x134))?_0x539c5e[_0x505035(0x130)](0x7):_0x539c5e,_0x4924a7=_0x3670b9[_0x505035(0x12c)]('~/')||_0x3670b9==='~'?a3_0x159c4d['join'](a3_0x5cc0b8['homedir'](),_0x3670b9[_0x505035(0x130)](0x1)):_0x3670b9,_0x294050=a3_0x159c4d[_0x505035(0x129)](_0x4924a7),_0x440293=await a3_0x572c9f[_0x505035(0x128)](_0x294050);return normalizePath(_0x440293);}catch{return null;}}function formatDirectoryError(_0x30ef92,_0xc27246,_0x4ad461){const _0x2cab54=a3_0x399d;if(_0x4ad461)return'Skipping\x20'+_0x4ad461+':\x20'+_0x30ef92;const _0x3b6474=_0xc27246 instanceof Error?_0xc27246['message']:String(_0xc27246);return _0x2cab54(0x124)+_0x30ef92+'\x20due\x20to\x20error:\x20'+_0x3b6474;}export async function getValidRootDirectories(_0x36f12e){const _0x540994=a3_0x399d,_0x2754d3=[];for(const _0x4592c8 of _0x36f12e){const _0x24149b=await parseRootUri(_0x4592c8['uri']);if(!_0x24149b){console[_0x540994(0x126)](formatDirectoryError(_0x4592c8[_0x540994(0x125)],undefined,_0x540994(0x132)));continue;}try{const _0x41199a=await a3_0x572c9f[_0x540994(0x131)](_0x24149b);_0x41199a[_0x540994(0x135)]()?_0x2754d3[_0x540994(0x12b)](_0x24149b):console['error'](formatDirectoryError(_0x24149b,undefined,_0x540994(0x127)));}catch(_0x212590){console[_0x540994(0x126)](formatDirectoryError(_0x24149b,_0x212590));}}return _0x2754d3;}
1
+ (function(_0x42bd49,_0x3d386b){const _0x759b91=a3_0x25bc,_0x1aa4d4=_0x42bd49();while(!![]){try{const _0x11e7b7=-parseInt(_0x759b91(0x194))/0x1+-parseInt(_0x759b91(0x19d))/0x2*(-parseInt(_0x759b91(0x19a))/0x3)+-parseInt(_0x759b91(0x1a0))/0x4*(-parseInt(_0x759b91(0x18a))/0x5)+-parseInt(_0x759b91(0x18b))/0x6+parseInt(_0x759b91(0x192))/0x7*(parseInt(_0x759b91(0x19e))/0x8)+parseInt(_0x759b91(0x19b))/0x9*(-parseInt(_0x759b91(0x18f))/0xa)+-parseInt(_0x759b91(0x19c))/0xb;if(_0x11e7b7===_0x3d386b)break;else _0x1aa4d4['push'](_0x1aa4d4['shift']());}catch(_0x53f89c){_0x1aa4d4['push'](_0x1aa4d4['shift']());}}}(a3_0x9c26,0x228af));import{promises as a3_0x5b515f}from'fs';import a3_0x27ca76 from'path';import a3_0x211456 from'os';import{normalizePath}from'./path-utils.js';async function parseRootUri(_0x46536d){const _0x314aab=a3_0x25bc;try{const _0x1fc066=_0x46536d[_0x314aab(0x189)](_0x314aab(0x198))?_0x46536d['slice'](0x7):_0x46536d,_0x4d0bb9=_0x1fc066[_0x314aab(0x189)]('~/')||_0x1fc066==='~'?a3_0x27ca76[_0x314aab(0x18d)](a3_0x211456[_0x314aab(0x196)](),_0x1fc066[_0x314aab(0x18c)](0x1)):_0x1fc066,_0x43d951=a3_0x27ca76[_0x314aab(0x1a1)](_0x4d0bb9),_0x21c2c7=await a3_0x5b515f[_0x314aab(0x195)](_0x43d951);return normalizePath(_0x21c2c7);}catch{return null;}}function formatDirectoryError(_0x2a43d2,_0x57ecb3,_0x1e9e50){const _0x226466=a3_0x25bc;if(_0x1e9e50)return'Skipping\x20'+_0x1e9e50+':\x20'+_0x2a43d2;const _0x4cfaaa=_0x57ecb3 instanceof Error?_0x57ecb3[_0x226466(0x1a2)]:String(_0x57ecb3);return _0x226466(0x191)+_0x2a43d2+'\x20due\x20to\x20error:\x20'+_0x4cfaaa;}function a3_0x9c26(){const _0x26ca10=['push','Skipping\x20invalid\x20directory:\x20','7ceOXsu','uri','114536hMeBpv','realpath','homedir','stat','file://','error','233394aGNAeM','114336xUAZoV','2276758zWbmfU','6EhVWCy','1560728AuhjRl','invalid\x20path\x20or\x20inaccessible','537880jdvuHx','resolve','message','startsWith','10DQZiKP','110736nOaRny','slice','join','isDirectory','170aXetSS'];a3_0x9c26=function(){return _0x26ca10;};return a3_0x9c26();}function a3_0x25bc(_0x3dbdf8,_0x32af88){_0x3dbdf8=_0x3dbdf8-0x189;const _0x9c26da=a3_0x9c26();let _0x25bce3=_0x9c26da[_0x3dbdf8];return _0x25bce3;}export async function getValidRootDirectories(_0x4c8c2b){const _0x24030b=a3_0x25bc,_0x3f51a9=[];for(const _0x435c46 of _0x4c8c2b){const _0x500014=await parseRootUri(_0x435c46[_0x24030b(0x193)]);if(!_0x500014){console[_0x24030b(0x199)](formatDirectoryError(_0x435c46[_0x24030b(0x193)],undefined,_0x24030b(0x19f)));continue;}try{const _0x4c9c7a=await a3_0x5b515f[_0x24030b(0x197)](_0x500014);_0x4c9c7a[_0x24030b(0x18e)]()?_0x3f51a9[_0x24030b(0x190)](_0x500014):console[_0x24030b(0x199)](formatDirectoryError(_0x500014,undefined,'non-directory\x20root'));}catch(_0x1dc597){console[_0x24030b(0x199)](formatDirectoryError(_0x500014,_0x1dc597));}}return _0x3f51a9;}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morphllm/morphmcp",
3
- "version": "0.8.103",
3
+ "version": "0.8.104",
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.122",
38
+ "@morphllm/morphsdk": "0.2.123",
39
39
  "@vscode/ripgrep": "^1.15.14",
40
40
  "axios": "^1.6.0",
41
41
  "chalk": "^5.3.0",