@morphllm/morphmcp 0.8.168 → 0.8.169
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/log-utils.js +1 -1
- package/dist/logger.js +1 -1
- package/dist/path-utils.js +1 -1
- package/dist/path-validation.js +1 -1
- package/dist/roots-utils.js +1 -1
- package/dist/tool-definitions.js +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
const a0_0x115185=a0_0x3082;(function(_0x10f859,_0x11e393){const _0x6ed5e6=a0_0x3082,_0x54bf7b=_0x10f859();while(!![]){try{const _0x50df5f=-parseInt(_0x6ed5e6(0x153))/0x1*(parseInt(_0x6ed5e6(0x12f))/0x2)+-parseInt(_0x6ed5e6(0xc2))/0x3+-parseInt(_0x6ed5e6(0x102))/0x4+-parseInt(_0x6ed5e6(0x1d0))/0x5*(-parseInt(_0x6ed5e6(0x16b))/0x6)+parseInt(_0x6ed5e6(0x10e))/0x7+parseInt(_0x6ed5e6(0x134))/0x8+parseInt(_0x6ed5e6(0xe6))/0x9*(parseInt(_0x6ed5e6(0x1bb))/0xa);if(_0x50df5f===_0x11e393)break;else _0x54bf7b['push'](_0x54bf7b['shift']());}catch(_0x3d3c1a){_0x54bf7b['push'](_0x54bf7b['shift']());}}}(a0_0x2017,0xa0867));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_0x1029ad from'fs/promises';import a0_0x34f0b4 from'path';import a0_0x546a09 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{logger}from'./logger.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{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0x412d0e from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x394041){const _0x223439=a0_0x3082,_0x51ecb0=_0x394041['split'](a0_0x34f0b4['sep'])[_0x223439(0x188)](Boolean);if(_0x51ecb0['length']<0x2)return null;for(let _0x1d6736=Math['floor'](_0x51ecb0[_0x223439(0x1b2)]/0x2);_0x1d6736>=0x1;_0x1d6736--){for(let _0x5edb6e=0x0;_0x5edb6e<=_0x51ecb0['length']-0x2*_0x1d6736;_0x5edb6e++){const _0x443125=_0x51ecb0[_0x223439(0x10f)](_0x5edb6e,_0x5edb6e+_0x1d6736),_0x4c25ef=_0x51ecb0[_0x223439(0x10f)](_0x5edb6e+_0x1d6736,_0x5edb6e+0x2*_0x1d6736);if(_0x443125[_0x223439(0x1d3)]((_0x303771,_0x598a21)=>_0x303771===_0x4c25ef[_0x598a21])){const _0x4fb21f=[..._0x51ecb0[_0x223439(0x10f)](0x0,_0x5edb6e),..._0x51ecb0[_0x223439(0x10f)](_0x5edb6e+_0x1d6736)];return a0_0x34f0b4[_0x223439(0xc3)]+_0x4fb21f['join'](a0_0x34f0b4['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0xee61f6=a0_0x3082;try{const _0xf17199=require(_0xee61f6(0xd2));return _0xf17199[_0xee61f6(0x15c)]??_0xee61f6(0x16f);}catch(_0x2f1015){return logMcpStderr(_0xee61f6(0x1ab),_0x2f1015),'unknown';}}function printHelp(){const _0x4f5148=a0_0x3082;console[_0x4f5148(0x141)](_0x4f5148(0x149)+getPackageVersion()),console[_0x4f5148(0x141)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0x4f5148(0x141)]('\x0aOptions:'),console['log'](_0x4f5148(0x117)),console['log'](_0x4f5148(0x148)),console[_0x4f5148(0x141)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console[_0x4f5148(0x141)]('\x0aExamples:'),console[_0x4f5148(0x141)]('\x20\x20morph-mcp'),console[_0x4f5148(0x141)](_0x4f5148(0x194));}const cliArgs=process[a0_0x115185(0x158)][a0_0x115185(0x10f)](0x2),VERSION_FLAGS=new Set([a0_0x115185(0x17c),'-v','-V']),HELP_FLAGS=new Set([a0_0x115185(0x16e),'-h']);cliArgs['some'](_0x297c7e=>VERSION_FLAGS[a0_0x115185(0x12b)](_0x297c7e))&&(console[a0_0x115185(0x141)](a0_0x115185(0x149)+getPackageVersion()),process[a0_0x115185(0x177)](0x0));cliArgs['some'](_0x2c2a26=>HELP_FLAGS[a0_0x115185(0x12b)](_0x2c2a26))&&(printHelp(),process[a0_0x115185(0x177)](0x0));function getCliArg(_0x177ffc){const _0x15eea6=a0_0x115185;for(let _0x217b1f=0x0;_0x217b1f<cliArgs['length'];_0x217b1f++){const _0x31d38f=cliArgs[_0x217b1f];if(_0x31d38f['startsWith']('--'+_0x177ffc+'='))return _0x31d38f[_0x15eea6(0x10f)](('--'+_0x177ffc+'=')[_0x15eea6(0x1b2)]);if(_0x31d38f==='--'+_0x177ffc&&_0x217b1f+0x1<cliArgs[_0x15eea6(0x1b2)])return cliArgs[_0x217b1f+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x115185(0x1b2)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x115185(0x12b)](arg)||HELP_FLAGS[a0_0x115185(0x12b)](arg))continue;if(arg[a0_0x115185(0xf6)](a0_0x115185(0x183)))continue;if(arg===a0_0x115185(0x122)){i++;continue;}args['push'](arg);}const WORKSPACE_ROOT=process[a0_0x115185(0xff)][a0_0x115185(0x11f)]||process[a0_0x115185(0xff)][a0_0x115185(0x11d)]||process[a0_0x115185(0x15a)](),ENABLE_WORKSPACE_MODE=process[a0_0x115185(0xff)]['ENABLE_WORKSPACE_MODE']!==a0_0x115185(0x136),MORPH_API_KEY=getCliArg(a0_0x115185(0x126))??process[a0_0x115185(0xff)]['MORPH_API_KEY'],MORPH_API_URL=process[a0_0x115185(0xff)][a0_0x115185(0x199)],MORPH_LARGE_APPLY=process[a0_0x115185(0xff)][a0_0x115185(0xd6)]!==a0_0x115185(0x136),MORPH_WARP_GREP_TIMEOUT=process[a0_0x115185(0xff)][a0_0x115185(0xf7)]?parseInt(process[a0_0x115185(0xff)]['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x115185(0xff)][a0_0x115185(0x180)]?new Set(process[a0_0x115185(0xff)][a0_0x115185(0x180)][a0_0x115185(0x145)](',')['map'](_0x4e0b09=>_0x4e0b09[a0_0x115185(0x12d)]())[a0_0x115185(0x188)](_0x559ec6=>_0x559ec6[a0_0x115185(0x1b2)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x115185(0xee)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x115185(0x12b)](tool)&&console[a0_0x115185(0xec)]('Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22'+tool+a0_0x115185(0x15f)+[...KNOWN_TOOL_NAMES][a0_0x115185(0xcd)](',\x20'));}console[a0_0x115185(0xec)](a0_0x115185(0x1c2)+[...DISABLED_TOOLS][a0_0x115185(0xcd)](',\x20'));}function a0_0x3082(_0x2e8097,_0x230272){_0x2e8097=_0x2e8097-0xc1;const _0x201726=a0_0x2017();let _0x308218=_0x201726[_0x2e8097];return _0x308218;}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x115185(0xf6)](a0_0x115185(0x1dd))&&!MORPH_API_KEY['startsWith'](a0_0x115185(0x18b))&&logMcpStderr(a0_0x115185(0xc9));async function reportMorphError(_0x56f330){const _0x21d365=a0_0x115185;try{await a0_0x412d0e[_0x21d365(0x19e)](_0x21d365(0x1a1),{..._0x56f330,'timestamp':new Date()[_0x21d365(0xe3)](),'source':_0x56f330['source']||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x56f330[_0x21d365(0x15b)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x21d365(0x1a7),'Authorization':_0x21d365(0x156)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x5e8a9c,_0x101364){const _0x578cb4=a0_0x115185;if(_0x5e8a9c&&typeof _0x5e8a9c===_0x578cb4(0x1ca)&&_0x578cb4(0x16a)in _0x5e8a9c)return _0x5e8a9c[_0x578cb4(0x16a)];if(_0x5e8a9c&&typeof _0x5e8a9c===_0x578cb4(0x1ca)&&'response'in _0x5e8a9c)return _0x5e8a9c['response']?.[_0x578cb4(0x16a)];const _0x106cb2=_0x101364[_0x578cb4(0x178)](/\b(401|429)\b/);return _0x106cb2?parseInt(_0x106cb2[0x1],0xa):null;}function handleMorphAPIError(_0x3faef1){const _0x42aeb0=a0_0x115185,_0x143fd1=_0x3faef1 instanceof Error?_0x3faef1[_0x42aeb0(0x108)]:String(_0x3faef1),_0x57bcca=extractStatusCode(_0x3faef1,_0x143fd1);switch(_0x57bcca){case 0x191:return{'content':[{'type':_0x42aeb0(0x191),'text':_0x42aeb0(0x11e)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x42aeb0(0x191),'text':'Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.'}],'isError':!![]};default:return null;}}args[a0_0x115185(0x1b2)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x115185(0x1c1)),logMcpStderr(a0_0x115185(0x18e)),logMcpStderr(a0_0x115185(0x1e3)),logMcpStderr(a0_0x115185(0xf0)),logMcpStderr(a0_0x115185(0x19a)),logMcpStderr(a0_0x115185(0x14a)));function normalizePath(_0x6107f2){const _0x1eacaa=a0_0x115185;return a0_0x34f0b4[_0x1eacaa(0x1d7)](_0x6107f2);}function expandHome(_0x44af74){const _0x377c40=a0_0x115185;if(_0x44af74[_0x377c40(0xf6)]('~/')||_0x44af74==='~')return a0_0x34f0b4[_0x377c40(0xcd)](a0_0x546a09[_0x377c40(0xe8)](),_0x44af74[_0x377c40(0x10f)](0x1));return _0x44af74;}let allowedDirectories=await Promise['all'](args['map'](async _0x43bc7f=>{const _0x46b35b=a0_0x115185,_0x239629=expandHome(_0x43bc7f),_0x4e2a45=a0_0x34f0b4[_0x46b35b(0x1c4)](_0x239629);try{const _0x36a8db=await a0_0x1029ad[_0x46b35b(0x1bf)](_0x4e2a45);return normalizePath(_0x36a8db);}catch(_0x42d4a8){return normalizePath(_0x4e2a45);}}));if(ENABLE_WORKSPACE_MODE&&args['length']===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x115185(0x110)](workspaceDir),logMcpStderr(a0_0x115185(0xdb)+workspaceDir+a0_0x115185(0x142)));}catch(a0_0x5fd50c){logMcpStderr(a0_0x115185(0x130)+a0_0x5fd50c);}function a0_0x2017(){const _0xd3b0f4=['lines','messages','linesModified','search_type','isDirectory','github_url','GITHUB_CODEBASE_SEARCH','log','\x20as\x20allowed\x20directory','pyproject.toml','[could\x20not\x20read\x20file:\x20','split','0.2.0','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','@morphllm/morphmcp\x20','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','mcp-filesystem','unknown\x20error','getClientCapabilities','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','composer.json','role','all','Warning:\x20','1YYQqvq','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','Bearer\x20','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','argv','list_directory\x20','cwd','context','version','number','searchGitHub','\x22.\x20Known\x20tools:\x20','\x0a...\x20(truncated,\x20total:\x20','branch','assistant','path_validation_failed','Benefits:\x0a','read\x20','Preview\x20changes\x20without\x20applying\x20them.','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','go.mod','linesAdded','status','1185198KhYUey','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','BinaryFile','--help','unknown','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','ENOENT','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','code_edit','dirname','instructions','exit','match','catch','now','tool_call_id','--version','FileNotFound','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','`\x20in\x20`','DISABLED_TOOLS','path_validation_start','<file\x20path=\x22','--api-key=','SymlinkError','describe','API\x20error\x20(auth/rate-limit)','Failed\x20to\x20request\x20roots\x20from\x20client:','filter','string','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','morph-','timed\x20out','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','GitHub\x20search\x20failed:\x20','linesRemoved','text','setNotificationHandler','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','constructor','WarpGrepError','tsconfig.json','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a','MORPH_API_URL','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','morph-warp-grep-v2.1','listRoots','warp_grep_complete','post','indexOf','Tool\x20','https://morphllm.com/api/error-report','array','TimeoutError','command','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','\x20valid\x20directories','application/json','Natural-language\x20question/description\x20about\x20the\x20code\x20you\x20want\x20to\x20understand.\x20Good\x20example:\x20\x22Where\x20does\x20auth\x20get\x20handled,\x20what\x20are\x20the\x20different\x20oauth\x20methods\x20supported?\x22,\x20\x22Trace\x20all\x20code\x20that\x20relates\x20to\x20how\x20data\x20is\x20injested\x20and\x20processed\x22.\x20Bad\x20example:\x20\x22auth()\x22,\x20\x22auth\x20login\x20dashoard\x20google\x20email\x22.\x20This\x20tool\x20does\x20NOT\x20accept\x20regex,\x20keyword\x20dumps,\x20or\x20symbol-only\x20queries.','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','.\x20Changes:\x20','\x20-\x20','Error:\x20','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','optional','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','length','substring','Tool\x20\x22','tool_call_complete','For\x20deletions:\x0a','morph-v3-large','Repository\x20identifier','content','files','22730PwNoob','metadata','[github_codebase_search]\x20Done\x20in\x20','basename','realpath','instruction','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','Disabled\x20tools:\x20','Created\x20File','resolve','Warning:\x20Workspace\x20fallback\x20failed:\x20','ToolException','grep\x20\x27','source','github_search_start','object','repo_path','github_codebase_search','finish','dryRun','Unknown\x20tool:\x20','5CaLMXw','api_request_start',',\x20removed\x20','every','terminationReason','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','timings','normalize','added\x20','.vscode',',\x20modified\x20','grep','success','sk-','readFile','owner_repo','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','ReadError','etimedout','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','[github_codebase_search]\x20Failed\x20in\x20','roots','2694246YAMRPm','sep','Cargo.toml','terminated','tool','boolean','\x0a</file>','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','Rules:\x0a','glob','morph-mcp','join','A\x20code\x20exploration\x20tool,\x20use\x20this\x20tool\x20when\x20exploring\x20an\x20unfamiliar\x20codebase,\x20and\x20you\x27re\x20unsure\x20of\x20the\x20exact\x20file\x20or\x20string\x20to\x20look\x20for.\x20This\x20tool\x20will\x20find\x20all\x20relevant\x20bits\x20of\x20code\x20given\x20a\x20natural\x20lanugage\x20description,\x20or\x20questin\x20of\x20the\x20thing\x20you\x27re\x20looking\x20for.\x20','errors','tool_call_received','description','../package.json','map','Failed\x20to\x20read\x20file:\x20','isArray','MORPH_LARGE_APPLY','code','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','default','file_read_complete','Workspace\x20mode\x20enabled:\x20Using\x20','list_directory','CODEBASE_SEARCH','path','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','warn','runWarpGrep_call','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','toISOString','includes','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','4869iKpSDm','debug','homedir','-\x20Glob\x20search\x20`','name','arguments','error','codebase_search','size','turns','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','.\x20Path:\x20','EDIT_FILE','MCP','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','startsWith','MORPH_WARP_GREP_TIMEOUT','\x22>\x0a','enum','path_validation_resolved','Error\x20running\x20fast\x20context\x20search:\x20','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','glob\x20\x27','pattern','env','data','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','4227712bTraBq','utf-8','RipgrepError','function','tool_calls','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','message','Relevant\x20context\x20found:','edit_file','morph-v3-fast','node_modules','Here\x20is\x20the\x20content\x20of\x20files:\x0a','6996444MiJAMa','slice','push','user','search_string','Morph\x20Edit\x20','Applied','Morph\x20Edit\x20Preview','tool_call_error','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','.git','❌\x20Morph\x20Edit\x20Failed:\x20','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','safeParse','PWD','Authentication\x20failed:\x20Your\x20Morph\x20API\x20key\x20is\x20invalid\x20or\x20has\x20been\x20revoked.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key,\x20then\x20update\x20your\x20MCP\x20configuration.','WORKSPACE_ROOT','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','access','--api-key','timeout','toLowerCase','setRequestHandler','api-key','read','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','parse','has','Max\x20results\x20to\x20return','trim','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','701328NSSKCW','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','stack','requiresApiKey','UnknownError','4291736DJXSro','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','false','LocalRipgrepProvider','provider_created','Invalid\x20Morph\x20API\x20key\x20format.\x20API\x20keys\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key.'];a0_0x2017=function(){return _0xd3b0f4;};return a0_0x2017();}async function detectWorkspaceRoot(_0x2c1c97){const _0x1abef0=a0_0x115185;let _0x5d08c1=a0_0x34f0b4[_0x1abef0(0x1c4)](_0x2c1c97);const _0x3d4263=[_0x1abef0(0x118),_0x1abef0(0x1d9),'package.json',_0x1abef0(0xc4),_0x1abef0(0x143),_0x1abef0(0x168),'.cursor',_0x1abef0(0x197),_0x1abef0(0x14f)];while(_0x5d08c1!==a0_0x34f0b4[_0x1abef0(0x175)](_0x5d08c1)){for(const _0x40528b of _0x3d4263){const _0x248722=a0_0x34f0b4[_0x1abef0(0xcd)](_0x5d08c1,_0x40528b);try{return await a0_0x1029ad[_0x1abef0(0x121)](_0x248722),normalizePath(_0x5d08c1);}catch{}}_0x5d08c1=a0_0x34f0b4[_0x1abef0(0x175)](_0x5d08c1);}return normalizePath(_0x2c1c97);}await Promise[a0_0x115185(0x151)](args['map'](async _0x4aac81=>{const _0xdc52dc=a0_0x115185;try{const _0x55abb5=await a0_0x1029ad['stat'](expandHome(_0x4aac81));!_0x55abb5[_0xdc52dc(0x13e)]()&&(logMcpStderr(_0xdc52dc(0x1ae)+_0x4aac81+'\x20is\x20not\x20a\x20directory'),process['exit'](0x1));}catch(_0x13d23d){logMcpStderr('Error\x20accessing\x20directory\x20'+_0x4aac81+':',_0x13d23d),process[_0xdc52dc(0x177)](0x1);}}));async function validatePath(_0x50b662){const _0x4a8a61=a0_0x115185,_0x38161b=expandHome(_0x50b662),_0x2ff4eb=a0_0x34f0b4['resolve'](_0x38161b);logger['debug']('MCP',_0x4a8a61(0x181),{'raw_path':_0x50b662,'absolute':_0x2ff4eb});try{const _0x1fcd30=await a0_0x1029ad[_0x4a8a61(0x1bf)](_0x2ff4eb);return logger[_0x4a8a61(0xe7)](_0x4a8a61(0xf4),_0x4a8a61(0xfa),{'resolved':_0x1fcd30,'symlink':_0x1fcd30!==_0x2ff4eb}),_0x1fcd30;}catch(_0x2d7af9){if(_0x2d7af9[_0x4a8a61(0xd7)]===_0x4a8a61(0x172)){const _0x1963f4=a0_0x34f0b4[_0x4a8a61(0x175)](_0x2ff4eb);try{const _0x53e90b=await a0_0x1029ad[_0x4a8a61(0x1bf)](_0x1963f4),_0x23e98c=a0_0x34f0b4[_0x4a8a61(0xcd)](_0x53e90b,a0_0x34f0b4[_0x4a8a61(0x1be)](_0x2ff4eb));return logger[_0x4a8a61(0xe7)](_0x4a8a61(0xf4),_0x4a8a61(0xfa),{'resolved':_0x23e98c,'new_file':!![]}),_0x23e98c;}catch{logger[_0x4a8a61(0xec)](_0x4a8a61(0xf4),_0x4a8a61(0x163),{'raw_path':_0x50b662,'error':'Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x1963f4});throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x1963f4);}}logger[_0x4a8a61(0xec)](_0x4a8a61(0xf4),_0x4a8a61(0x163),{'raw_path':_0x50b662,'error':_0x2d7af9[_0x4a8a61(0x108)]});throw _0x2d7af9;}}const MorphEditFileArgsSchema=z[a0_0x115185(0x1ca)]({'path':z[a0_0x115185(0x189)](),'code_edit':z[a0_0x115185(0x189)]()[a0_0x115185(0x185)](a0_0x115185(0x1af)),'instruction':z[a0_0x115185(0x189)]()['describe'](a0_0x115185(0x170)),'dryRun':z[a0_0x115185(0xc7)]()[a0_0x115185(0xd9)](![])[a0_0x115185(0x185)](a0_0x115185(0x166))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x115185(0x1a8),WarpGrepArgsSchema=z[a0_0x115185(0x1ca)]({'search_string':z[a0_0x115185(0x189)]()[a0_0x115185(0x185)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z['string']()[a0_0x115185(0x185)](a0_0x115185(0x1e0)),'search_type':z[a0_0x115185(0xf9)]([a0_0x115185(0xd9),a0_0x115185(0x10c)])[a0_0x115185(0x1b0)]()['describe'](a0_0x115185(0x128))}),WarpGrepGitHubArgsSchema=z[a0_0x115185(0x1ca)]({'search_string':z['string']()[a0_0x115185(0x185)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x115185(0x189)]()[a0_0x115185(0x1b0)]()[a0_0x115185(0x185)]('GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'owner_repo':z[a0_0x115185(0x189)]()[a0_0x115185(0x1b0)]()[a0_0x115185(0x185)](a0_0x115185(0xe5)),'branch':z['string']()[a0_0x115185(0x1b0)]()[a0_0x115185(0x185)](a0_0x115185(0x12e))}),CodebaseSearchArgsSchema=z[a0_0x115185(0x1ca)]({'query':z[a0_0x115185(0x189)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z['string']()[a0_0x115185(0x185)](a0_0x115185(0x1b8)),'branch':z[a0_0x115185(0x189)]()[a0_0x115185(0x1b0)]()[a0_0x115185(0x185)](a0_0x115185(0x129)),'commitHash':z[a0_0x115185(0x189)]()[a0_0x115185(0x1b0)]()[a0_0x115185(0x185)]('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z[a0_0x115185(0x1a2)](z[a0_0x115185(0x189)]())[a0_0x115185(0xd9)]([])['describe'](a0_0x115185(0x120)),'limit':z[a0_0x115185(0x15d)]()['optional']()[a0_0x115185(0xd9)](0xa)['describe'](a0_0x115185(0x12c))}),server=new Server({'name':a0_0x115185(0xcc),'version':a0_0x115185(0x146)},{'capabilities':{'tools':{}}});server['setRequestHandler'](ListToolsRequestSchema,async()=>{const _0x32ee75=a0_0x115185,_0x250eb0=[{'name':TOOL_NAMES[_0x32ee75(0xf3)],'description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a'+_0x32ee75(0xdf)+_0x32ee75(0x157)+_0x32ee75(0xf1)+_0x32ee75(0x164)+_0x32ee75(0xf5)+'-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a'+_0x32ee75(0x1a5)+_0x32ee75(0x1b1)+'Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a'+_0x32ee75(0x135)+_0x32ee75(0xe2)+_0x32ee75(0x1b6)+'-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a'+_0x32ee75(0x18d)+_0x32ee75(0xca)+'-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a'+_0x32ee75(0x14e)+_0x32ee75(0x198)+_0x32ee75(0x1d5)+_0x32ee75(0x147)+'-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a'+_0x32ee75(0x173),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES['CODEBASE_SEARCH'],'description':_0x32ee75(0xce)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+'Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20'+_0x32ee75(0x107)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x555d3b=_0x250eb0[_0x32ee75(0x188)](_0x41c374=>{const _0x5f4cb5=_0x32ee75;if(DISABLED_TOOLS['has'](_0x41c374['name']))return console[_0x5f4cb5(0xec)](_0x5f4cb5(0x1a0)+_0x41c374['name']+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if(_0x5f4cb5(0x132)in _0x41c374&&_0x41c374[_0x5f4cb5(0x132)]&&!MORPH_API_KEY)return logMcpStderr(_0x5f4cb5(0x152)+_0x41c374[_0x5f4cb5(0xea)]+_0x5f4cb5(0x171)),![];return!![];});return{'tools':_0x555d3b[_0x32ee75(0xd3)](_0x54e82f=>({'name':_0x54e82f[_0x32ee75(0xea)],'description':_0x54e82f[_0x32ee75(0xd1)],'inputSchema':_0x54e82f['inputSchema']}))};}),server[a0_0x115185(0x125)](CallToolRequestSchema,async _0x1a76c3=>{const _0x58e175=a0_0x115185,{name:_0x59ce81,arguments:_0x29cdb8}=_0x1a76c3['params'],_0x4cd604=Date[_0x58e175(0x17a)]();logger[_0x58e175(0xe7)](_0x58e175(0xf4),_0x58e175(0xd0),{'tool':_0x59ce81,'args':_0x59ce81===_0x58e175(0x10a)?{'path':_0x29cdb8?.[_0x58e175(0xde)],'instruction':_0x29cdb8?.[_0x58e175(0x1c0)]||_0x29cdb8?.[_0x58e175(0x176)],'dryRun':_0x29cdb8?.[_0x58e175(0x1ce)]}:_0x29cdb8});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x58e175(0x191),'text':_0x58e175(0x1aa)}],'isError':!![]};if(!MORPH_API_KEY['startsWith'](_0x58e175(0x1dd))&&!MORPH_API_KEY[_0x58e175(0xf6)](_0x58e175(0x18b)))return{'content':[{'type':_0x58e175(0x191),'text':_0x58e175(0x139)}],'isError':!![]};if(DISABLED_TOOLS[_0x58e175(0x12b)](_0x59ce81))return{'content':[{'type':'text','text':_0x58e175(0x1b4)+_0x59ce81+_0x58e175(0x193)}],'isError':![]};switch(_0x59ce81){case TOOL_NAMES['EDIT_FILE']:{const _0x288c4c=_0x29cdb8&&typeof _0x29cdb8==='object'&&_0x58e175(0x176)in _0x29cdb8&&!('instruction'in _0x29cdb8)?{..._0x29cdb8,'instruction':_0x29cdb8['instructions'],'instructions':undefined}:_0x29cdb8,_0x3259c1=MorphEditFileArgsSchema[_0x58e175(0x11c)](_0x288c4c);if(!_0x3259c1[_0x58e175(0x1dc)])throw new Error(_0x58e175(0x101)+_0x3259c1['error']);const _0x4633ea=await validatePath(_0x3259c1[_0x58e175(0x100)][_0x58e175(0xde)]);let _0x5e7c2d=null,_0x2242cb=!![],_0x5ec3f6=null;try{_0x5e7c2d=await a0_0x1029ad[_0x58e175(0x1de)](_0x4633ea,_0x58e175(0x103)),logger[_0x58e175(0xe7)](_0x58e175(0xf4),_0x58e175(0xda),{'path':_0x4633ea,'size_bytes':_0x5e7c2d[_0x58e175(0x1b2)]});}catch(_0x3650de){const _0xcee268=_0x3650de[_0x58e175(0xd7)];_0xcee268===_0x58e175(0x172)?(_0x2242cb=![],_0x5e7c2d='',logger[_0x58e175(0xe7)]('MCP','file_read_complete',{'path':_0x4633ea,'exists':![]})):(_0x5ec3f6=_0x58e175(0xd4)+(_0xcee268||_0x58e175(0x16f))+_0x58e175(0x1ad)+(_0x3650de instanceof Error?_0x3650de[_0x58e175(0x108)]:String(_0x3650de)),logger[_0x58e175(0xec)](_0x58e175(0xf4),'file_read_failed',{'path':_0x4633ea,'error':_0x5ec3f6}),logMcpStderr(_0x58e175(0x152)+_0x5ec3f6));}let _0xeb1794;try{const _0x591b7f=MORPH_API_KEY;if(!_0x591b7f)throw new Error(_0x58e175(0x154));const _0x52bfb6=a0_0x34f0b4['dirname'](_0x4633ea),_0x258c85=a0_0x34f0b4[_0x58e175(0x1be)](_0x4633ea);logger[_0x58e175(0xe7)]('MCP',_0x58e175(0x1d1),{'model':_0x58e175(0x10b),'path':_0x3259c1[_0x58e175(0x100)]['path'],'instruction_len':_0x3259c1[_0x58e175(0x100)][_0x58e175(0x1c0)][_0x58e175(0x1b2)],'code_edit_len':_0x3259c1[_0x58e175(0x100)][_0x58e175(0x174)][_0x58e175(0x1b2)],'original_code_len':_0x5e7c2d?.['length']??0x0,'dry_run':_0x3259c1[_0x58e175(0x100)][_0x58e175(0x1ce)]});const _0x5a0715=Date[_0x58e175(0x17a)](),_0x18ddfa=await executeEditFile({'target_filepath':_0x258c85,'code_edit':_0x3259c1[_0x58e175(0x100)][_0x58e175(0x174)],'instruction':_0x3259c1[_0x58e175(0x100)][_0x58e175(0x1c0)]},{'morphApiKey':_0x591b7f,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x52bfb6,'autoWrite':!_0x3259c1[_0x58e175(0x100)][_0x58e175(0x1ce)],'generateUdiff':![],'debug':![]}),_0x5d39ae=Date['now']()-_0x5a0715;_0xeb1794=_0x18ddfa['completionId'];if(!_0x18ddfa[_0x58e175(0x1dc)])throw new Error(_0x18ddfa[_0x58e175(0xec)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x204720=_0x18ddfa['changes'],_0x2f3b87=_0x58e175(0x1d8)+_0x204720['linesAdded']+_0x58e175(0x1d2)+_0x204720[_0x58e175(0x190)]+_0x58e175(0x1da)+_0x204720[_0x58e175(0x13c)];logger[_0x58e175(0xe7)](_0x58e175(0xf4),_0x58e175(0x1b5),{'tool':_0x58e175(0x10a),'success':!![],'latency_ms':Date['now']()-_0x4cd604,'edit_latency_ms':_0x5d39ae,'changes':{'added':_0x204720[_0x58e175(0x169)],'removed':_0x204720[_0x58e175(0x190)],'modified':_0x204720[_0x58e175(0x13c)]},'completion_id':_0xeb1794});if(_0x3259c1['data'][_0x58e175(0x1ce)])return{'content':[{'type':_0x58e175(0x191),'text':_0x58e175(0x115)+(_0x2242cb?'':'\x20(new\x20file)')+':\x20'+_0x3259c1[_0x58e175(0x100)]['instruction']+_0x58e175(0x1ac)+_0x2f3b87+_0x58e175(0xf2)+_0x3259c1[_0x58e175(0x100)][_0x58e175(0xde)]+'.'}]};return{'content':[{'type':_0x58e175(0x191),'text':_0x58e175(0x113)+(_0x2242cb?_0x58e175(0x114):_0x58e175(0x1c3))+':\x20'+_0x3259c1[_0x58e175(0x100)]['instruction']+_0x58e175(0x1ac)+_0x2f3b87+'.\x20Path:\x20'+_0x3259c1[_0x58e175(0x100)][_0x58e175(0xde)]+'.'}]};}catch(_0x323cfe){const _0x31906c=handleMorphAPIError(_0x323cfe);if(_0x31906c)return logger[_0x58e175(0xec)]('MCP',_0x58e175(0x116),{'tool':_0x58e175(0x10a),'error':_0x58e175(0x186),'latency_ms':Date['now']()-_0x4cd604}),_0x31906c;const _0x42211b=_0x323cfe instanceof Error?_0x323cfe['message']:String(_0x323cfe);return logger['error'](_0x58e175(0xf4),_0x58e175(0x116),{'tool':_0x58e175(0x10a),'error':_0x42211b,'path':_0x3259c1[_0x58e175(0x100)][_0x58e175(0xde)],'validated_path':_0x4633ea,'latency_ms':Date[_0x58e175(0x17a)]()-_0x4cd604,'stack':_0x323cfe instanceof Error?_0x323cfe[_0x58e175(0x131)]:undefined}),reportMorphError({'error_message':_0x42211b,'error_type':_0x323cfe instanceof Error?_0x323cfe[_0x58e175(0x195)][_0x58e175(0xea)]:_0x58e175(0x133),'context':{'tool':'edit_file','completion_id':_0xeb1794,'file_path':_0x3259c1['data'][_0x58e175(0xde)],'validated_path':_0x4633ea,'instruction':_0x3259c1[_0x58e175(0x100)][_0x58e175(0x1c0)],'model':MORPH_LARGE_APPLY?_0x58e175(0x1b7):_0x58e175(0x10b),'dry_run':_0x3259c1[_0x58e175(0x100)][_0x58e175(0x1ce)],'file_exists':_0x2242cb,'file_read_error':_0x5ec3f6,'file_readable':_0x5e7c2d!==null,'request_content':{'path':_0x3259c1['data'][_0x58e175(0xde)],'code_edit':_0x3259c1[_0x58e175(0x100)][_0x58e175(0x174)],'instruction':_0x3259c1['data']['instruction'],'original_code':_0x5e7c2d!==null?_0x5e7c2d[_0x58e175(0x1b2)]>0xc350?_0x5e7c2d[_0x58e175(0x1b3)](0x0,0xc350)+_0x58e175(0x160)+_0x5e7c2d[_0x58e175(0x1b2)]+'\x20chars)':_0x5e7c2d:_0x58e175(0x144)+(_0x5ec3f6||_0x58e175(0x14c))+']','original_code_length':_0x5e7c2d?.['length']??0x0,'model':MORPH_LARGE_APPLY?_0x58e175(0x1b7):_0x58e175(0x10b),'dry_run':_0x3259c1[_0x58e175(0x100)]['dryRun']}},'stack_trace':_0x323cfe instanceof Error?_0x323cfe[_0x58e175(0x131)]:undefined,'source':_0x58e175(0x14b)})[_0x58e175(0x179)](()=>{}),{'content':[{'type':_0x58e175(0x191),'text':_0x58e175(0x119)+_0x42211b}],'isError':!![]};}}case TOOL_NAMES[_0x58e175(0xdd)]:{const _0x1562f0=WarpGrepArgsSchema['safeParse'](_0x29cdb8);if(!_0x1562f0[_0x58e175(0x1dc)])return{'content':[{'type':_0x58e175(0x191),'text':'Invalid\x20arguments:\x20'+_0x1562f0[_0x58e175(0xec)]}],'isError':!![]};const _0x1742a0=_0x9762b8=>{const _0xe8e014=_0x58e175,_0x14c48c=[];for(const _0x46e9f2 of _0x9762b8||[]){if(_0x46e9f2['role']===_0xe8e014(0x162)&&Array['isArray'](_0x46e9f2[_0xe8e014(0x106)]))for(const _0xa38ad1 of _0x46e9f2[_0xe8e014(0x106)]){try{const _0x2c47d1=_0xa38ad1['function']?.[_0xe8e014(0xea)],_0x5f2522=JSON[_0xe8e014(0x12a)](_0xa38ad1[_0xe8e014(0x105)]?.[_0xe8e014(0xeb)]||'{}');if(_0x2c47d1==='grep_search')_0x14c48c[_0xe8e014(0x110)](_0xe8e014(0x1c7)+_0x5f2522[_0xe8e014(0xfe)]+'\x27\x20'+(_0x5f2522[_0xe8e014(0xde)]||'.'));else{if(_0x2c47d1===_0xe8e014(0x127))_0x14c48c[_0xe8e014(0x110)](_0xe8e014(0x165)+_0x5f2522[_0xe8e014(0xde)]);else{if(_0x2c47d1===_0xe8e014(0xdc))_0x14c48c['push'](_0xe8e014(0x159)+(_0x5f2522[_0xe8e014(0x1a4)]||'.'));else{if(_0x2c47d1===_0xe8e014(0xcb))_0x14c48c[_0xe8e014(0x110)](_0xe8e014(0xfd)+_0x5f2522[_0xe8e014(0xfe)]+'\x27\x20'+(_0x5f2522[_0xe8e014(0xde)]||'.'));else _0x2c47d1===_0xe8e014(0x1cd)&&_0x14c48c[_0xe8e014(0x110)]('finish');}}}}catch{}}}return _0x14c48c;},_0xcd7833=_0x2b20b6=>{const _0x4a68d0=_0x58e175,_0x3b4e61=[];if(!_0x2b20b6||!Array[_0x4a68d0(0xd5)](_0x2b20b6))return _0x3b4e61;const _0x4c733d=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x4a68d0(0x17d),'tool':_0x4a68d0(0x127)},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x4a68d0(0x127)},{'pattern':/\[READ ERROR\]/,'error_type':_0x4a68d0(0x1e1),'tool':_0x4a68d0(0x127)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x4a68d0(0x16d),'tool':'read'},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x4a68d0(0x104),'tool':_0x4a68d0(0x1db)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':'RipgrepNotAvailable','tool':_0x4a68d0(0x1db)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x4a68d0(0x16d),'tool':_0x4a68d0(0x127)},{'pattern':/\[SYMLINK\]/,'error_type':_0x4a68d0(0x184),'tool':'read'},{'pattern':/not a text file/,'error_type':_0x4a68d0(0x16d),'tool':_0x4a68d0(0x127)},{'pattern':/symbolic link/,'error_type':_0x4a68d0(0x184),'tool':'read'},{'pattern':/Error reading file:/,'error_type':_0x4a68d0(0x1e1),'tool':_0x4a68d0(0x127)},{'pattern':/status="error"/,'error_type':_0x4a68d0(0x1c6),'tool':_0x4a68d0(0x16f)}];let _0x540daf=0x0;for(const _0x5230df of _0x2b20b6){_0x5230df[_0x4a68d0(0x150)]===_0x4a68d0(0x162)&&Array['isArray'](_0x5230df[_0x4a68d0(0x106)])&&_0x540daf++;const _0x5a57c3=_0x5230df[_0x4a68d0(0x1b9)];if((_0x5230df[_0x4a68d0(0x150)]===_0x4a68d0(0xc6)||_0x5230df[_0x4a68d0(0x150)]===_0x4a68d0(0x111))&&_0x5a57c3&&typeof _0x5a57c3===_0x4a68d0(0x189))for(const {pattern:_0x3cf639,error_type:_0x51a4a1,tool:_0x5b47fa}of _0x4c733d){const _0x13906d=_0x5a57c3[_0x4a68d0(0x178)](new RegExp(_0x3cf639[_0x4a68d0(0x1c8)],'g'));if(_0x13906d)for(const _0x34db93 of _0x13906d){const _0x115f2c=_0x5a57c3[_0x4a68d0(0x19f)](_0x34db93),_0x3d8b7c=_0x5a57c3[_0x4a68d0(0x1b3)](_0x115f2c,Math['min'](_0x115f2c+0xc8,_0x5a57c3[_0x4a68d0(0x1b2)]));_0x3b4e61['push']({'tool':_0x5b47fa,'error_type':_0x51a4a1,'error_message':_0x3d8b7c[_0x4a68d0(0x145)]('\x0a')[0x0],'turn':_0x540daf});}}}return _0x3b4e61;};try{const _0x55771b=a0_0x34f0b4[_0x58e175(0x1c4)](_0x1562f0[_0x58e175(0x100)][_0x58e175(0x1cb)]),_0x39280b=_0x1562f0['data'][_0x58e175(0x13d)],_0xf2abf1=_0x39280b===_0x58e175(0x10c)?{'allowNames':[_0x58e175(0x10c)]}:undefined,_0x5bb045=new LocalRipgrepProvider(_0x55771b,undefined,_0xf2abf1);logger['debug'](_0x58e175(0xf4),_0x58e175(0x138),{'type':_0x58e175(0x137),'repo_root':_0x55771b,'search_type':_0x39280b||_0x58e175(0xd9)}),logger['debug'](_0x58e175(0xf4),'warp_grep_start',{'query':_0x1562f0[_0x58e175(0x100)]['search_string'],'repo_root':_0x55771b,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x1de419=Date[_0x58e175(0x17a)](),_0x2a56a6=await runWarpGrep({'searchTerm':_0x1562f0[_0x58e175(0x100)]['search_string'],'repoRoot':_0x55771b,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x5bb045,'search_type':_0x39280b}),_0x358f10=Date[_0x58e175(0x17a)]()-_0x1de419,_0x12d79f=_0x2a56a6[_0x58e175(0x1cd)]?.[_0x58e175(0x1bc)]?.[_0x58e175(0x1ba)]?.['length']??0x0;logger[_0x58e175(0xe7)]('MCP',_0x58e175(0x19d),{'termination':_0x2a56a6[_0x58e175(0x1d4)],'turns':_0x2a56a6[_0x58e175(0x1d6)]?.[_0x58e175(0xef)]??0x0,'files_found':_0x12d79f,'latency_ms':_0x358f10});const _0x5c2440=_0xcd7833(_0x2a56a6[_0x58e175(0x13b)]);_0x5c2440[_0x58e175(0x1b2)]>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x5c2440[_0x58e175(0x1b2)]+'\x20error(s)','error_type':'SubToolError','level':'warn','tool':_0x58e175(0xed),'context':{'repo_path':_0x1562f0[_0x58e175(0x100)][_0x58e175(0x1cb)],'query':_0x1562f0[_0x58e175(0x100)][_0x58e175(0x112)],'model':_0x58e175(0x19b),'termination_reason':_0x2a56a6[_0x58e175(0x1d4)],'sub_tool_errors':_0x5c2440,'timings':_0x2a56a6[_0x58e175(0x1d6)],'tool_calls':_0x1742a0(_0x2a56a6[_0x58e175(0x13b)]),'messages':_0x2a56a6[_0x58e175(0x13b)]?.[_0x58e175(0xd3)](_0x22b9f2=>({'role':_0x22b9f2['role'],'content':_0x22b9f2['content'],..._0x22b9f2[_0x58e175(0x106)]?{'tool_calls':_0x22b9f2[_0x58e175(0x106)][_0x58e175(0x1b2)]}:{},..._0x22b9f2[_0x58e175(0x17b)]?{'tool_call_id':_0x22b9f2[_0x58e175(0x17b)]}:{}}))},'source':'mcp-filesystem'})['catch'](()=>{});let _0x79398='';if(_0x2a56a6[_0x58e175(0x1d4)]==='completed'&&_0x2a56a6[_0x58e175(0x1cd)]?.['metadata']?.[_0x58e175(0x1ba)]){const _0x1b7b0e=_0x2a56a6[_0x58e175(0x1cd)][_0x58e175(0x1bc)][_0x58e175(0x1ba)];if(_0x1b7b0e[_0x58e175(0x1b2)]===0x0)return _0x79398=_0x2a56a6['finish']['payload']||_0x58e175(0x155),{'content':[{'type':_0x58e175(0x191),'text':_0x79398}]};const _0x3927e6=[],_0x387642=[_0x58e175(0x1a9)];for(const _0x2182fc of _0x2a56a6['messages']){if(_0x2182fc[_0x58e175(0x150)]===_0x58e175(0x162)&&Array['isArray'](_0x2182fc['tool_calls']))for(const _0x2a1ab8 of _0x2182fc[_0x58e175(0x106)]){try{const _0x3e9cd0=_0x2a1ab8[_0x58e175(0x105)]?.[_0x58e175(0xea)],_0x179627=JSON[_0x58e175(0x12a)](_0x2a1ab8[_0x58e175(0x105)]?.[_0x58e175(0xeb)]||'{}');if(_0x3e9cd0==='grep_search')_0x387642['push']('-\x20Grepped\x20\x27'+_0x179627[_0x58e175(0xfe)]+'\x27\x20in\x20`'+(_0x179627['path']||'.')+'`');else{if(_0x3e9cd0===_0x58e175(0x127))_0x387642['push']('-\x20Read\x20file\x20`'+_0x179627['path']+'`');else{if(_0x3e9cd0===_0x58e175(0xdc))_0x387642['push']('-\x20Listed\x20directory\x20`'+(_0x179627[_0x58e175(0x1a4)]||'.')+'`');else _0x3e9cd0===_0x58e175(0xcb)&&_0x387642[_0x58e175(0x110)](_0x58e175(0xe9)+_0x179627[_0x58e175(0xfe)]+_0x58e175(0x17f)+(_0x179627[_0x58e175(0xde)]||'.')+'`');}}}catch{}}}_0x3927e6[_0x58e175(0x110)](_0x387642[_0x58e175(0xcd)]('\x0a'));const _0xf22443=['',_0x58e175(0x109)];for(const _0x223b56 of _0x1b7b0e){if(_0x223b56[_0x58e175(0x13a)]==='*')_0xf22443[_0x58e175(0x110)]('-\x20'+_0x223b56[_0x58e175(0xde)]+':*');else{if(Array['isArray'](_0x223b56[_0x58e175(0x13a)])){const _0x5652d1=_0x223b56[_0x58e175(0x13a)][_0x58e175(0xd3)](([_0xeab272,_0x24daf1])=>{if(_0xeab272===_0x24daf1)return''+_0xeab272;return _0xeab272+'-'+_0x24daf1;});_0xf22443['push']('-\x20'+_0x223b56[_0x58e175(0xde)]+':'+_0x5652d1[_0x58e175(0xcd)](','));}else _0xf22443[_0x58e175(0x110)]('-\x20'+_0x223b56['path']+':*');}}_0xf22443[_0x58e175(0x110)](''),_0x3927e6[_0x58e175(0x110)](_0xf22443['join']('\x0a')),_0x3927e6[_0x58e175(0x110)](_0x58e175(0x10d));const _0x560530=[],_0x19c1f9=[];for(const _0xead50 of _0x1b7b0e){let _0x410d14=a0_0x34f0b4[_0x58e175(0x1c4)](_0x1562f0[_0x58e175(0x100)][_0x58e175(0x1cb)],_0xead50[_0x58e175(0xde)]),_0x19784a=null,_0x4f76b0=null;try{_0x19784a=await a0_0x1029ad['readFile'](_0x410d14,{'encoding':'utf-8'});}catch(_0x39fd61){const _0x3c8145=fixPathRepetition(_0x410d14);if(_0x3c8145)try{_0x19784a=await a0_0x1029ad['readFile'](_0x3c8145,{'encoding':_0x58e175(0x103)}),_0x410d14=_0x3c8145;}catch{_0x4f76b0=_0x39fd61 instanceof Error?_0x39fd61:new Error(String(_0x39fd61));}else _0x4f76b0=_0x39fd61 instanceof Error?_0x39fd61:new Error(String(_0x39fd61));}if(_0x19784a!==null){const _0x1daa8c=_0x19784a[_0x58e175(0x145)](/\r?\n/),_0x355824=[];if(_0xead50[_0x58e175(0x13a)]==='*'||!Array['isArray'](_0xead50['lines']))for(let _0x520c3e=0x1;_0x520c3e<=_0x1daa8c['length'];_0x520c3e++){const _0x114b31=_0x1daa8c[_0x520c3e-0x1];_0x355824[_0x58e175(0x110)](_0x520c3e+'|\x20'+_0x114b31);}else for(const [_0x53b435,_0x2f7bcb]of _0xead50[_0x58e175(0x13a)]){_0x355824[_0x58e175(0x1b2)]>0x0&&_0x355824['push']('');for(let _0x56a443=_0x53b435;_0x56a443<=_0x2f7bcb&&_0x56a443<=_0x1daa8c['length'];_0x56a443++){const _0x2ced7c=_0x1daa8c[_0x56a443-0x1];_0x355824[_0x58e175(0x110)](_0x56a443+'|\x20'+_0x2ced7c);}}_0x19c1f9[_0x58e175(0x110)]({'path':_0xead50[_0x58e175(0xde)],'content':_0x355824[_0x58e175(0xcd)]('\x0a')});}else _0x560530[_0x58e175(0x110)](_0x58e175(0x182)+_0xead50['path']+'\x22>\x0aError\x20reading\x20file:\x20'+(_0x4f76b0?.[_0x58e175(0x108)]||'Unknown\x20error')+'\x0a</file>');}try{const _0x59a8bd=await compactFileContexts(_0x19c1f9,_0x1562f0[_0x58e175(0x100)][_0x58e175(0x112)],MORPH_API_KEY,MORPH_API_URL);for(const _0x3a0a94 of _0x59a8bd){_0x560530[_0x58e175(0x110)](_0x58e175(0x182)+_0x3a0a94[_0x58e175(0xde)]+_0x58e175(0xf8)+_0x3a0a94['content']+_0x58e175(0xc8));}}catch(_0x56bc60){logger[_0x58e175(0xe0)]('MCP','compaction_failed',{'error':_0x56bc60 instanceof Error?_0x56bc60[_0x58e175(0x108)]:String(_0x56bc60),'files_count':_0x19c1f9[_0x58e175(0x1b2)]});for(const _0x2534a7 of _0x19c1f9){_0x560530[_0x58e175(0x110)](_0x58e175(0x182)+_0x2534a7[_0x58e175(0xde)]+_0x58e175(0xf8)+_0x2534a7[_0x58e175(0x1b9)]+_0x58e175(0xc8));}}_0x3927e6['push'](_0x560530[_0x58e175(0xcd)]('\x0a\x0a')),_0x79398=_0x3927e6['join']('\x0a');const _0x51f6c4=_0x2a56a6['errors']?.[_0x58e175(0x188)](_0x594507=>_0x594507['message']?.[_0x58e175(0xf6)]('File\x20read\x20error:'))||[];if(_0x51f6c4[_0x58e175(0x1b2)]>0x0){const _0x45c8f5=_0x51f6c4[_0x58e175(0xd3)](_0x42727a=>_0x42727a[_0x58e175(0x108)])['join'](';\x20');reportMorphError({'error_message':_0x45c8f5,'error_type':'FileReadError','context':{'tool':_0x58e175(0xed),'repo_path':_0x1562f0['data'][_0x58e175(0x1cb)],'query':_0x1562f0[_0x58e175(0x100)][_0x58e175(0x112)],'model':_0x58e175(0x19b),'termination_reason':'completed_with_file_errors','error_count':_0x51f6c4[_0x58e175(0x1b2)],'is_timeout':![],'timings':_0x2a56a6[_0x58e175(0x1d6)],'files_attempted':_0x1b7b0e['map'](_0x1fce5c=>({'path':_0x1fce5c['path'],'lines':_0x1fce5c[_0x58e175(0x13a)]})),'tool_calls':_0x1742a0(_0x2a56a6[_0x58e175(0x13b)]),'messages':_0x2a56a6[_0x58e175(0x13b)]?.[_0x58e175(0xd3)](_0x3f3246=>({'role':_0x3f3246[_0x58e175(0x150)],'content':_0x3f3246[_0x58e175(0x1b9)],..._0x3f3246['tool_calls']?{'tool_calls':_0x3f3246[_0x58e175(0x106)]['length']}:{},..._0x3f3246[_0x58e175(0x17b)]?{'tool_call_id':_0x3f3246[_0x58e175(0x17b)]}:{}})),'request_content':{'query':_0x1562f0['data'][_0x58e175(0x112)],'repo_path':_0x1562f0[_0x58e175(0x100)]['repo_path'],'repoRoot':a0_0x34f0b4['resolve'](_0x1562f0[_0x58e175(0x100)][_0x58e175(0x1cb)]),'model':_0x58e175(0x19b)}},'source':'mcp-filesystem'})['catch'](()=>{});}}else{if(_0x2a56a6[_0x58e175(0x1d4)]===_0x58e175(0xc5)&&_0x2a56a6[_0x58e175(0xcf)][_0x58e175(0x1b2)]>0x0){const _0x56e2c3=_0x2a56a6['errors']['map'](_0x20386a=>_0x20386a['message'])[_0x58e175(0xcd)](';\x20');_0x79398=_0x58e175(0x1ae)+_0x56e2c3;const _0x2e550b=_0x56e2c3[_0x58e175(0x124)]()[_0x58e175(0xe4)](_0x58e175(0x123))||_0x56e2c3[_0x58e175(0x124)]()['includes'](_0x58e175(0x18c))||_0x56e2c3[_0x58e175(0x124)]()[_0x58e175(0xe4)](_0x58e175(0x1e2)),_0x343fba=_0x2a56a6[_0x58e175(0x1cd)]?.[_0x58e175(0x1bc)]?.[_0x58e175(0x1ba)],_0x31c4d7=_0x2a56a6[_0x58e175(0xcf)][0x0];reportMorphError({'error_message':_0x56e2c3,'error_type':_0x2e550b?'TimeoutError':_0x31c4d7?.[_0x58e175(0x195)]?.[_0x58e175(0xea)]||_0x58e175(0x196),'context':{'tool':_0x58e175(0xed),'repo_path':_0x1562f0[_0x58e175(0x100)]['repo_path'],'query':_0x1562f0[_0x58e175(0x100)][_0x58e175(0x112)],'model':_0x58e175(0x19b),'termination_reason':_0x2a56a6[_0x58e175(0x1d4)],'error_count':_0x2a56a6[_0x58e175(0xcf)][_0x58e175(0x1b2)],'is_timeout':_0x2e550b,'timings':_0x2a56a6[_0x58e175(0x1d6)],'files_attempted':_0x343fba?.['map'](_0x315895=>({'path':_0x315895['path'],'lines':_0x315895[_0x58e175(0x13a)]})),'tool_calls':_0x1742a0(_0x2a56a6[_0x58e175(0x13b)]),'messages':_0x2a56a6[_0x58e175(0x13b)]?.[_0x58e175(0xd3)](_0x1f87e3=>({'role':_0x1f87e3['role'],'content':_0x1f87e3[_0x58e175(0x1b9)],..._0x1f87e3[_0x58e175(0x106)]?{'tool_calls':_0x1f87e3['tool_calls'][_0x58e175(0x1b2)]}:{},..._0x1f87e3[_0x58e175(0x17b)]?{'tool_call_id':_0x1f87e3['tool_call_id']}:{}})),'request_content':{'query':_0x1562f0[_0x58e175(0x100)][_0x58e175(0x112)],'repo_path':_0x1562f0[_0x58e175(0x100)][_0x58e175(0x1cb)],'repoRoot':a0_0x34f0b4[_0x58e175(0x1c4)](_0x1562f0[_0x58e175(0x100)][_0x58e175(0x1cb)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x31c4d7?.[_0x58e175(0x131)]||undefined,'source':'mcp-filesystem'})[_0x58e175(0x179)](()=>{});}else _0x79398=_0x58e175(0x18a);}return{'content':[{'type':_0x58e175(0x191),'text':_0x79398}]};}catch(_0x2b65e7){const _0x3ce754=handleMorphAPIError(_0x2b65e7);if(_0x3ce754)return logger[_0x58e175(0xec)](_0x58e175(0xf4),_0x58e175(0x116),{'tool':_0x58e175(0xed),'error':_0x58e175(0x186),'latency_ms':Date[_0x58e175(0x17a)]()-_0x4cd604}),_0x3ce754;const _0x29bb31=_0x2b65e7 instanceof Error?_0x2b65e7[_0x58e175(0x108)]:String(_0x2b65e7);logger['error']('MCP','tool_call_error',{'tool':_0x58e175(0xed),'error':_0x29bb31,'repo_path':_0x1562f0[_0x58e175(0x100)][_0x58e175(0x1cb)],'query':_0x1562f0[_0x58e175(0x100)]['search_string'],'latency_ms':Date['now']()-_0x4cd604});const _0x6e1abb=_0x29bb31[_0x58e175(0x124)]()[_0x58e175(0xe4)](_0x58e175(0x123))||_0x29bb31[_0x58e175(0x124)]()[_0x58e175(0xe4)](_0x58e175(0x18c))||_0x29bb31[_0x58e175(0x124)]()[_0x58e175(0xe4)](_0x58e175(0x1e2))||_0x2b65e7 instanceof Error&&_0x2b65e7['name']===_0x58e175(0x1a3);return reportMorphError({'error_message':_0x29bb31,'error_type':_0x6e1abb?_0x58e175(0x1a3):_0x2b65e7 instanceof Error?_0x2b65e7['constructor'][_0x58e175(0xea)]:_0x58e175(0x133),'context':{'tool':_0x58e175(0xed),'repo_path':_0x1562f0[_0x58e175(0x100)][_0x58e175(0x1cb)],'query':_0x1562f0['data'][_0x58e175(0x112)],'model':_0x58e175(0x19b),'is_timeout':_0x6e1abb,'exception_phase':_0x58e175(0xe1),'request_content':{'query':_0x1562f0[_0x58e175(0x100)]['search_string'],'repo_path':_0x1562f0[_0x58e175(0x100)]['repo_path'],'repoRoot':a0_0x34f0b4['resolve'](_0x1562f0['data'][_0x58e175(0x1cb)]),'model':_0x58e175(0x19b)}},'stack_trace':_0x2b65e7 instanceof Error?_0x2b65e7['stack']:undefined,'source':_0x58e175(0x14b)})[_0x58e175(0x179)](()=>{}),{'content':[{'type':_0x58e175(0x191),'text':_0x58e175(0xfb)+_0x29bb31}],'isError':![]};}}case TOOL_NAMES[_0x58e175(0x140)]:{const _0x250c1e=WarpGrepGitHubArgsSchema[_0x58e175(0x11c)](_0x29cdb8);if(!_0x250c1e[_0x58e175(0x1dc)])return{'content':[{'type':_0x58e175(0x191),'text':'Invalid\x20arguments:\x20'+_0x250c1e['error']}],'isError':!![]};const _0x2d0331=_0x250c1e[_0x58e175(0x100)][_0x58e175(0x13f)]||_0x250c1e[_0x58e175(0x100)][_0x58e175(0x1df)];if(!_0x2d0331)return{'content':[{'type':_0x58e175(0x191),'text':_0x58e175(0x11b)}],'isError':!![]};const _0x11dac7=MORPH_API_KEY;if(!_0x11dac7)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x4c9382=Date['now']();logger['debug'](_0x58e175(0xf4),_0x58e175(0x1c9),{'identifier':_0x2d0331,'query':_0x250c1e[_0x58e175(0x100)][_0x58e175(0x112)],'branch':_0x250c1e['data'][_0x58e175(0x161)]});try{const _0x421a7d=new WarpGrepClient({'morphApiKey':_0x11dac7,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x5df4f6=await _0x421a7d[_0x58e175(0x15e)]({'searchTerm':_0x250c1e[_0x58e175(0x100)][_0x58e175(0x112)],'github':_0x2d0331,'branch':_0x250c1e[_0x58e175(0x100)]['branch']}),_0x3f47aa=Date[_0x58e175(0x17a)]()-_0x4c9382;logMcpStderr(_0x58e175(0x1bd)+_0x3f47aa+'ms.\x20Success:\x20'+_0x5df4f6[_0x58e175(0x1dc)]);const _0x2b59e4=formatResult(_0x5df4f6);return{'content':[{'type':_0x58e175(0x191),'text':_0x2b59e4}]};}catch(_0x3bab76){const _0x2b0abb=handleMorphAPIError(_0x3bab76);if(_0x2b0abb)return _0x2b0abb;const _0x54b352=Date['now']()-_0x4c9382,_0x2fbaa2=_0x3bab76 instanceof Error?_0x3bab76[_0x58e175(0x108)]:String(_0x3bab76);return logMcpStderr(_0x58e175(0x1e4)+_0x54b352+'ms:',_0x2fbaa2),reportMorphError({'error_message':_0x2fbaa2,'error_type':_0x3bab76 instanceof Error?_0x3bab76['constructor'][_0x58e175(0xea)]:'UnknownError','context':{'tool':_0x58e175(0x1cc),'github_url':_0x2d0331,'search_string':_0x250c1e['data'][_0x58e175(0x112)],'branch':_0x250c1e[_0x58e175(0x100)][_0x58e175(0x161)]},'stack_trace':_0x3bab76 instanceof Error?_0x3bab76['stack']:undefined,'source':_0x58e175(0x14b),'tool':'github_codebase_search','latency_ms':_0x54b352})[_0x58e175(0x179)](()=>{}),{'content':[{'type':_0x58e175(0x191),'text':_0x58e175(0x18f)+_0x2fbaa2}],'isError':![]};}}default:throw new Error(_0x58e175(0x1cf)+_0x59ce81);}}catch(_0x769e17){const _0x5268f=_0x769e17 instanceof Error?_0x769e17['message']:String(_0x769e17);return reportMorphError({'error_message':_0x5268f,'error_type':_0x769e17 instanceof Error?_0x769e17['constructor'][_0x58e175(0xea)]:_0x58e175(0x133),'context':{'tool':_0x59ce81,'arguments':_0x29cdb8?JSON['stringify'](_0x29cdb8)['substring'](0x0,0x1f4):undefined,'mcp_server_version':_0x58e175(0x146)},'stack_trace':_0x769e17 instanceof Error?_0x769e17[_0x58e175(0x131)]:undefined,'source':_0x58e175(0x14b)})[_0x58e175(0x179)](()=>{}),{'content':[{'type':_0x58e175(0x191),'text':_0x58e175(0x1ae)+_0x5268f}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x45acc0){const _0x69c1b0=a0_0x115185,_0x2fa688=await getValidRootDirectories(_0x45acc0);if(_0x2fa688[_0x69c1b0(0x1b2)]>0x0)allowedDirectories=[..._0x2fa688],logMcpStderr('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0x2fa688[_0x69c1b0(0x1b2)]+_0x69c1b0(0x1a6));else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x841618=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x841618&&(allowedDirectories=[_0x841618],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x841618));}catch(_0x19a56f){logMcpStderr(_0x69c1b0(0x1c5)+_0x19a56f);}}}server[a0_0x115185(0x192)](RootsListChangedNotificationSchema,async()=>{const _0x17f68d=a0_0x115185;try{const _0x431209=await server[_0x17f68d(0x19c)]();_0x431209&&_0x17f68d(0xc1)in _0x431209&&await updateAllowedDirectoriesFromRoots(_0x431209[_0x17f68d(0xc1)]);}catch(_0x4fd403){logMcpStderr(_0x17f68d(0x187),_0x4fd403 instanceof Error?_0x4fd403[_0x17f68d(0x108)]:String(_0x4fd403));}}),server['oninitialized']=async()=>{const _0x467d47=a0_0x115185,_0x3a4b72=server[_0x467d47(0x14d)]();if(_0x3a4b72?.['roots'])try{const _0x58e08e=await server[_0x467d47(0x19c)]();_0x58e08e&&'roots'in _0x58e08e?await updateAllowedDirectoriesFromRoots(_0x58e08e[_0x467d47(0xc1)]):logMcpStderr(_0x467d47(0xfc));}catch(_0x466875){logMcpStderr(_0x467d47(0x167),_0x466875 instanceof Error?_0x466875[_0x467d47(0x108)]:String(_0x466875));}else{if(allowedDirectories[_0x467d47(0x1b2)]>0x0)logMcpStderr(_0x467d47(0x17e),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x467d47(0x11a));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 _0x163e48=a0_0x115185,_0xfca909=new StdioServerTransport();await server['connect'](_0xfca909),logMcpStderr(_0x163e48(0x16c)),allowedDirectories[_0x163e48(0x1b2)]===0x0&&logMcpStderr(_0x163e48(0xd8));}runServer()[a0_0x115185(0x179)](_0x48cf11=>{const _0x32b355=a0_0x115185;logMcpStderr('Fatal\x20error\x20running\x20server:',_0x48cf11),process[_0x32b355(0x177)](0x1);});
|
|
2
|
+
function a0_0x5a7c(){const _0x3757f8=['File\x20read\x20error:','number','Error:\x20','requiresApiKey','grep\x20\x27','go.mod','Relevant\x20context\x20found:','array','Disabled\x20tools:\x20','name','Here\x20is\x20the\x20content\x20of\x20files:\x0a','A\x20code\x20exploration\x20tool,\x20use\x20this\x20tool\x20when\x20exploring\x20an\x20unfamiliar\x20codebase,\x20and\x20you\x27re\x20unsure\x20of\x20the\x20exact\x20file\x20or\x20string\x20to\x20look\x20for.\x20This\x20tool\x20will\x20find\x20all\x20relevant\x20bits\x20of\x20code\x20given\x20a\x20natural\x20lanugage\x20description,\x20or\x20questin\x20of\x20the\x20thing\x20you\x27re\x20looking\x20for.\x20','[github_codebase_search]\x20Done\x20in\x20','filter','[could\x20not\x20read\x20file:\x20','path_validation_start','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','composer.json','TimeoutError','<file\x20path=\x22','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','setRequestHandler','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','instruction','morph-warp-grep-v2.1','sep','package.json','all','MORPH_API_URL','SymlinkError','indexOf','glob','tool_call_id','boolean','❌\x20Morph\x20Edit\x20Failed:\x20','10PZOQRF','text','completed','assistant','branch','searchGitHub','Failed\x20to\x20read\x20file:\x20','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','sk-','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','.\x20Path:\x20','errors','status','length','resolve','Invalid\x20arguments:\x20','setNotificationHandler','slice','Morph\x20Edit\x20','Cargo.toml','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','version','list_directory\x20','file_read_failed','ReadError','role','PathError','repo_path','@morphllm/morphmcp\x20','response','WarpGrepError','path_validation_failed','etimedout','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','content','terminated','lines','has','\x20-\x20','readFile','mcp-filesystem','finish','pattern','RipgrepError','path','https://morphllm.com/api/error-report','Parent\x20directory\x20does\x20not\x20exist:\x20','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','16651iWdXbN','file_read_complete','user','payload','\x20is\x20not\x20a\x20directory','exit','size','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','Unknown\x20error','github_url','message','map','634802jduTPQ','morph-mcp','WORKSPACE_ROOT','every','Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','UnknownError','getClientCapabilities','Max\x20results\x20to\x20return','grep_search','runWarpGrep_call','access','grep','ToolException','linesRemoved','error','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','match','\x22>\x0a','describe','Error\x20accessing\x20directory\x20','roots','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','constructor','MCP','object','codebase_search','\x0a...\x20(truncated,\x20total:\x20','GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','metadata','Invalid\x20Morph\x20API\x20key\x20format.\x20API\x20keys\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key.','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','timed\x20out','DISABLED_TOOLS','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.','tool_call_complete','BinaryFile','2096315ZILLrq','\x20disabled\x20via\x20DISABLED_TOOLS','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','Created\x20File','string','Benefits:\x0a','tool_call_error','data','Workspace\x20mode\x20enabled:\x20Using\x20','ENABLE_WORKSPACE_MODE','\x20(new\x20file)','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','8sKZygq','default','toLowerCase','safeParse','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','stack','timeout','Fallback:\x20Using\x20workspace\x20root\x20','\x20chars)','some','tsconfig.json','10260315cOnRtV','184713AEaEgg','PWD','floor','Fatal\x20error\x20running\x20server:','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','trim','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','glob\x20\x27','For\x20deletions:\x0a','Morph\x20Edit\x20Preview','toISOString','compaction_failed','warp_grep_start','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','\x22.\x20Known\x20tools:\x20','join','now','FileReadError','\x0aExamples:','arguments','turns','optional','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','ENOENT','linesAdded','Tool\x20\x22','\x0a</file>','pyproject.toml','node_modules','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','basename','41767902TAwKbj','Natural-language\x20question/description\x20about\x20the\x20code\x20you\x20want\x20to\x20understand.\x20Good\x20example:\x20\x22Where\x20does\x20auth\x20get\x20handled,\x20what\x20are\x20the\x20different\x20oauth\x20methods\x20supported?\x22,\x20\x22Trace\x20all\x20code\x20that\x20relates\x20to\x20how\x20data\x20is\x20injested\x20and\x20processed\x22.\x20Bad\x20example:\x20\x22auth()\x22,\x20\x22auth\x20login\x20dashoard\x20google\x20email\x22.\x20This\x20tool\x20does\x20NOT\x20accept\x20regex,\x20keyword\x20dumps,\x20or\x20symbol-only\x20queries.','timings','listRoots','connect','completionId','false','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','API\x20error\x20(auth/rate-limit)','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','tool','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','owner_repo','stringify','Warning:\x20','-\x20Grepped\x20\x27','params','morph-v3-fast','description','env','EDIT_FILE','warn','api_request_start','changes','morph-v3-large','messages','code_edit','read','debug','instructions','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','unknown','terminationReason','Morph\x20FastApply\x20failed\x20without\x20error\x20message','110IYrWjt','.vscode','dirname','split','GITHUB_CODEBASE_SEARCH','Applied','\x22>\x0aError\x20reading\x20file:\x20','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','ms.\x20Success:\x20','function','Rules:\x0a','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','tool_call_received','startsWith','--api-key=','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','cwd','LocalRipgrepProvider','.\x20Changes:\x20','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','inputSchema',',\x20modified\x20','Bearer\x20','context','log','post','normalize','Failed\x20to\x20request\x20roots\x20from\x20client:','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','4548642NFGbLy','-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','search_type','Tool\x20','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','realpath','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','parse','catch','IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a','application/json','CODEBASE_SEARCH','substring','MORPH_WARP_GREP_TIMEOUT','utf-8','\x0aOptions:','edit_file','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','FileNotFound','\x27\x20in\x20`','GitHub\x20search\x20failed:\x20','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','github_codebase_search','code','isDirectory','homedir','Error\x20running\x20fast\x20context\x20search:\x20','-\x20Glob\x20search\x20`','push','stat','72mMZUbU','path_validation_resolved','files','includes','warp_grep_complete','source','added\x20','dryRun','--version','success','tool_calls','min','isArray','oninitialized','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','--api-key','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','search_string','--help','SubToolError','Unknown\x20tool:\x20'];a0_0x5a7c=function(){return _0x3757f8;};return a0_0x5a7c();}const a0_0x355cc9=a0_0x4f95;(function(_0x3382a7,_0x29b395){const _0x17f702=a0_0x4f95,_0x4d088c=_0x3382a7();while(!![]){try{const _0xbe40f4=-parseInt(_0x17f702(0x283))/0x1*(-parseInt(_0x17f702(0x1dd))/0x2)+-parseInt(_0x17f702(0x19c))/0x3*(-parseInt(_0x17f702(0x21a))/0x4)+parseInt(_0x17f702(0x183))/0x5+parseInt(_0x17f702(0x1fa))/0x6+parseInt(_0x17f702(0x28f))/0x7*(parseInt(_0x17f702(0x190))/0x8)+-parseInt(_0x17f702(0x19b))/0x9*(-parseInt(_0x17f702(0x253))/0xa)+-parseInt(_0x17f702(0x1bb))/0xb;if(_0xbe40f4===_0x29b395)break;else _0x4d088c['push'](_0x4d088c['shift']());}catch(_0xdd462d){_0x4d088c['push'](_0x4d088c['shift']());}}}(a0_0x5a7c,0x9b0d4));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_0xb2718a from'fs/promises';import a0_0x5d6800 from'path';import a0_0x10ca96 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';import{getValidRootDirectories}from'./roots-utils.js';import{getOperatingSystemType,logMcpStderr}from'./log-utils.js';import{logger}from'./logger.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{compactFileContexts}from'@morphllm/morphsdk/tools/compact';import a0_0x2097e4 from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x415f25){const _0x43fc68=a0_0x4f95,_0x265646=_0x415f25[_0x43fc68(0x1e0)](a0_0x5d6800[_0x43fc68(0x249)])['filter'](Boolean);if(_0x265646['length']<0x2)return null;for(let _0x3d6335=Math[_0x43fc68(0x19e)](_0x265646[_0x43fc68(0x260)]/0x2);_0x3d6335>=0x1;_0x3d6335--){for(let _0x3968ff=0x0;_0x3968ff<=_0x265646[_0x43fc68(0x260)]-0x2*_0x3d6335;_0x3968ff++){const _0x408ec6=_0x265646[_0x43fc68(0x264)](_0x3968ff,_0x3968ff+_0x3d6335),_0x3d53a8=_0x265646[_0x43fc68(0x264)](_0x3968ff+_0x3d6335,_0x3968ff+0x2*_0x3d6335);if(_0x408ec6[_0x43fc68(0x292)]((_0x3ee57a,_0x1be45a)=>_0x3ee57a===_0x3d53a8[_0x1be45a])){const _0x1a35b1=[..._0x265646['slice'](0x0,_0x3968ff),..._0x265646[_0x43fc68(0x264)](_0x3968ff+_0x3d6335)];return a0_0x5d6800[_0x43fc68(0x249)]+_0x1a35b1['join'](a0_0x5d6800[_0x43fc68(0x249)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x22d5ae=a0_0x4f95;try{const _0x188ee0=require('../package.json');return _0x188ee0[_0x22d5ae(0x268)]??_0x22d5ae(0x1da);}catch(_0x1b04d2){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x1b04d2),_0x22d5ae(0x1da);}}function printHelp(){const _0xe2af85=a0_0x4f95;console['log'](_0xe2af85(0x26f)+getPackageVersion()),console[_0xe2af85(0x1f5)]('\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]'),console[_0xe2af85(0x1f5)](_0xe2af85(0x20b)),console[_0xe2af85(0x1f5)](_0xe2af85(0x22b)),console[_0xe2af85(0x1f5)](_0xe2af85(0x1d9)),console[_0xe2af85(0x1f5)](_0xe2af85(0x1a0)),console['log'](_0xe2af85(0x1ae)),console['log']('\x20\x20morph-mcp'),console[_0xe2af85(0x1f5)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process['argv'][a0_0x355cc9(0x264)](0x2),VERSION_FLAGS=new Set([a0_0x355cc9(0x222),'-v','-V']),HELP_FLAGS=new Set([a0_0x355cc9(0x22d),'-h']);cliArgs[a0_0x355cc9(0x199)](_0x2ffe21=>VERSION_FLAGS[a0_0x355cc9(0x278)](_0x2ffe21))&&(console[a0_0x355cc9(0x1f5)](a0_0x355cc9(0x26f)+getPackageVersion()),process[a0_0x355cc9(0x288)](0x0));cliArgs[a0_0x355cc9(0x199)](_0x5de7c3=>HELP_FLAGS[a0_0x355cc9(0x278)](_0x5de7c3))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x42d3bd){const _0x252eb3=a0_0x355cc9;for(let _0x22edb1=0x0;_0x22edb1<cliArgs[_0x252eb3(0x260)];_0x22edb1++){const _0x456e96=cliArgs[_0x22edb1];if(_0x456e96[_0x252eb3(0x1ea)]('--'+_0x42d3bd+'='))return _0x456e96['slice'](('--'+_0x42d3bd+'=')[_0x252eb3(0x260)]);if(_0x456e96==='--'+_0x42d3bd&&_0x22edb1+0x1<cliArgs[_0x252eb3(0x260)])return cliArgs[_0x22edb1+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs['length'];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x355cc9(0x278)](arg)||HELP_FLAGS[a0_0x355cc9(0x278)](arg))continue;if(arg['startsWith'](a0_0x355cc9(0x1eb)))continue;if(arg===a0_0x355cc9(0x229)){i++;continue;}args['push'](arg);}const WORKSPACE_ROOT=process[a0_0x355cc9(0x1ce)][a0_0x355cc9(0x291)]||process[a0_0x355cc9(0x1ce)][a0_0x355cc9(0x19d)]||process[a0_0x355cc9(0x1ed)](),ENABLE_WORKSPACE_MODE=process['env'][a0_0x355cc9(0x18c)]!==a0_0x355cc9(0x1c1),MORPH_API_KEY=getCliArg('api-key')??process[a0_0x355cc9(0x1ce)]['MORPH_API_KEY'],MORPH_API_URL=process[a0_0x355cc9(0x1ce)][a0_0x355cc9(0x24c)],MORPH_LARGE_APPLY=process[a0_0x355cc9(0x1ce)]['MORPH_LARGE_APPLY']!==a0_0x355cc9(0x1c1),MORPH_WARP_GREP_TIMEOUT=process[a0_0x355cc9(0x1ce)][a0_0x355cc9(0x209)]?parseInt(process[a0_0x355cc9(0x1ce)][a0_0x355cc9(0x209)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x355cc9(0x1ce)][a0_0x355cc9(0x17f)]?new Set(process[a0_0x355cc9(0x1ce)]['DISABLED_TOOLS']['split'](',')[a0_0x355cc9(0x28e)](_0x5c9d65=>_0x5c9d65[a0_0x355cc9(0x1a1)]())[a0_0x355cc9(0x23d)](_0x46c6c0=>_0x46c6c0[a0_0x355cc9(0x260)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x355cc9(0x289)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES['has'](tool)&&console['error'](a0_0x355cc9(0x274)+tool+a0_0x355cc9(0x1aa)+[...KNOWN_TOOL_NAMES][a0_0x355cc9(0x1ab)](',\x20'));}console[a0_0x355cc9(0x16c)](a0_0x355cc9(0x238)+[...DISABLED_TOOLS][a0_0x355cc9(0x1ab)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x355cc9(0x1ea)]('sk-')&&!MORPH_API_KEY[a0_0x355cc9(0x1ea)]('morph-')&&logMcpStderr('Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27');async function reportMorphError(_0x22daf5){const _0x3a4847=a0_0x355cc9;try{await a0_0x2097e4[_0x3a4847(0x1f6)](_0x3a4847(0x280),{..._0x22daf5,'timestamp':new Date()[_0x3a4847(0x1a6)](),'source':_0x22daf5[_0x3a4847(0x21f)]||'mcp-filesystem','os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x22daf5[_0x3a4847(0x1f4)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x3a4847(0x206),'Authorization':_0x3a4847(0x1f3)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x1fd9a7,_0x5414f3){const _0x4ce305=a0_0x355cc9;if(_0x1fd9a7&&typeof _0x1fd9a7===_0x4ce305(0x176)&&'status'in _0x1fd9a7)return _0x1fd9a7[_0x4ce305(0x25f)];if(_0x1fd9a7&&typeof _0x1fd9a7===_0x4ce305(0x176)&&_0x4ce305(0x270)in _0x1fd9a7)return _0x1fd9a7[_0x4ce305(0x270)]?.['status'];const _0x5998dd=_0x5414f3[_0x4ce305(0x16e)](/\b(401|429)\b/);return _0x5998dd?parseInt(_0x5998dd[0x1],0xa):null;}function handleMorphAPIError(_0x13ddc1){const _0x58518b=a0_0x355cc9,_0x282ed8=_0x13ddc1 instanceof Error?_0x13ddc1[_0x58518b(0x28d)]:String(_0x13ddc1),_0x1b3481=extractStatusCode(_0x13ddc1,_0x282ed8);switch(_0x1b3481){case 0x191:return{'content':[{'type':_0x58518b(0x254),'text':'Authentication\x20failed:\x20Your\x20Morph\x20API\x20key\x20is\x20invalid\x20or\x20has\x20been\x20revoked.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key,\x20then\x20update\x20your\x20MCP\x20configuration.'}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x58518b(0x254),'text':_0x58518b(0x1b2)}],'isError':!![]};default:return null;}}args[a0_0x355cc9(0x260)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x355cc9(0x1ec)),logMcpStderr(a0_0x355cc9(0x211)),logMcpStderr(a0_0x355cc9(0x1a2)),logMcpStderr(a0_0x355cc9(0x194)),logMcpStderr('\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)'),logMcpStderr('At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.'));function normalizePath(_0x43cac0){const _0x5a3b23=a0_0x355cc9;return a0_0x5d6800[_0x5a3b23(0x1f7)](_0x43cac0);}function expandHome(_0x2690d9){const _0x96d711=a0_0x355cc9;if(_0x2690d9['startsWith']('~/')||_0x2690d9==='~')return a0_0x5d6800[_0x96d711(0x1ab)](a0_0x10ca96[_0x96d711(0x215)](),_0x2690d9[_0x96d711(0x264)](0x1));return _0x2690d9;}let allowedDirectories=await Promise[a0_0x355cc9(0x24b)](args[a0_0x355cc9(0x28e)](async _0x252924=>{const _0x45da49=a0_0x355cc9,_0x4192c8=expandHome(_0x252924),_0x4a42c0=a0_0x5d6800[_0x45da49(0x261)](_0x4192c8);try{const _0x26af99=await a0_0xb2718a[_0x45da49(0x201)](_0x4a42c0);return normalizePath(_0x26af99);}catch(_0x3e6ac1){return normalizePath(_0x4a42c0);}}));if(ENABLE_WORKSPACE_MODE&&args['length']===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x355cc9(0x218)](workspaceDir),logMcpStderr(a0_0x355cc9(0x18b)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x32a608){logMcpStderr('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x32a608);}async function detectWorkspaceRoot(_0x32c21d){const _0x23d736=a0_0x355cc9;let _0x36cfd6=a0_0x5d6800[_0x23d736(0x261)](_0x32c21d);const _0x4c0c61=['.git',_0x23d736(0x1de),_0x23d736(0x24a),_0x23d736(0x266),_0x23d736(0x1b7),_0x23d736(0x235),'.cursor',_0x23d736(0x19a),_0x23d736(0x241)];while(_0x36cfd6!==a0_0x5d6800[_0x23d736(0x1df)](_0x36cfd6)){for(const _0x5d545e of _0x4c0c61){const _0x436652=a0_0x5d6800[_0x23d736(0x1ab)](_0x36cfd6,_0x5d545e);try{return await a0_0xb2718a[_0x23d736(0x29a)](_0x436652),normalizePath(_0x36cfd6);}catch{}}_0x36cfd6=a0_0x5d6800[_0x23d736(0x1df)](_0x36cfd6);}return normalizePath(_0x32c21d);}await Promise[a0_0x355cc9(0x24b)](args['map'](async _0x274b2a=>{const _0x10fc96=a0_0x355cc9;try{const _0x56d26f=await a0_0xb2718a[_0x10fc96(0x219)](expandHome(_0x274b2a));!_0x56d26f[_0x10fc96(0x214)]()&&(logMcpStderr(_0x10fc96(0x232)+_0x274b2a+_0x10fc96(0x287)),process[_0x10fc96(0x288)](0x1));}catch(_0x949af9){logMcpStderr(_0x10fc96(0x171)+_0x274b2a+':',_0x949af9),process[_0x10fc96(0x288)](0x1);}}));async function validatePath(_0x29b95b){const _0x10b2d2=a0_0x355cc9,_0x2fdbdf=expandHome(_0x29b95b),_0xa77bc9=a0_0x5d6800[_0x10b2d2(0x261)](_0x2fdbdf);logger[_0x10b2d2(0x1d7)](_0x10b2d2(0x175),_0x10b2d2(0x23f),{'raw_path':_0x29b95b,'absolute':_0xa77bc9});try{const _0x5127a3=await a0_0xb2718a['realpath'](_0xa77bc9);return logger[_0x10b2d2(0x1d7)](_0x10b2d2(0x175),'path_validation_resolved',{'resolved':_0x5127a3,'symlink':_0x5127a3!==_0xa77bc9}),_0x5127a3;}catch(_0xb22d25){if(_0xb22d25['code']===_0x10b2d2(0x1b3)){const _0x54bc35=a0_0x5d6800[_0x10b2d2(0x1df)](_0xa77bc9);try{const _0x2c0883=await a0_0xb2718a['realpath'](_0x54bc35),_0x9157b9=a0_0x5d6800[_0x10b2d2(0x1ab)](_0x2c0883,a0_0x5d6800['basename'](_0xa77bc9));return logger[_0x10b2d2(0x1d7)](_0x10b2d2(0x175),_0x10b2d2(0x21b),{'resolved':_0x9157b9,'new_file':!![]}),_0x9157b9;}catch{logger[_0x10b2d2(0x16c)](_0x10b2d2(0x175),_0x10b2d2(0x272),{'raw_path':_0x29b95b,'error':_0x10b2d2(0x281)+_0x54bc35});throw new Error(_0x10b2d2(0x281)+_0x54bc35);}}logger[_0x10b2d2(0x16c)](_0x10b2d2(0x175),_0x10b2d2(0x272),{'raw_path':_0x29b95b,'error':_0xb22d25['message']});throw _0xb22d25;}}const MorphEditFileArgsSchema=z[a0_0x355cc9(0x176)]({'path':z[a0_0x355cc9(0x187)](),'code_edit':z[a0_0x355cc9(0x187)]()[a0_0x355cc9(0x170)](a0_0x355cc9(0x240)),'instruction':z[a0_0x355cc9(0x187)]()['describe'](a0_0x355cc9(0x25a)),'dryRun':z[a0_0x355cc9(0x251)]()['default'](![])['describe']('Preview\x20changes\x20without\x20applying\x20them.')}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x355cc9(0x1bc),WarpGrepArgsSchema=z[a0_0x355cc9(0x176)]({'search_string':z['string']()[a0_0x355cc9(0x170)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z['string']()['describe'](a0_0x355cc9(0x246)),'search_type':z['enum']([a0_0x355cc9(0x191),a0_0x355cc9(0x1b8)])[a0_0x355cc9(0x1b1)]()[a0_0x355cc9(0x170)]('Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.')}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z[a0_0x355cc9(0x187)]()[a0_0x355cc9(0x170)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z['string']()['optional']()['describe'](a0_0x355cc9(0x179)),'owner_repo':z[a0_0x355cc9(0x187)]()[a0_0x355cc9(0x1b1)]()[a0_0x355cc9(0x170)]('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z[a0_0x355cc9(0x187)]()['optional']()[a0_0x355cc9(0x170)]('Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)')}),CodebaseSearchArgsSchema=z[a0_0x355cc9(0x176)]({'query':z[a0_0x355cc9(0x187)]()[a0_0x355cc9(0x170)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z['string']()[a0_0x355cc9(0x170)]('Repository\x20identifier'),'branch':z[a0_0x355cc9(0x187)]()['optional']()[a0_0x355cc9(0x170)]('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x355cc9(0x187)]()['optional']()[a0_0x355cc9(0x170)]('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z[a0_0x355cc9(0x237)](z['string']())[a0_0x355cc9(0x191)]([])[a0_0x355cc9(0x170)](a0_0x355cc9(0x18e)),'limit':z[a0_0x355cc9(0x231)]()[a0_0x355cc9(0x1b1)]()[a0_0x355cc9(0x191)](0xa)[a0_0x355cc9(0x170)](a0_0x355cc9(0x297))}),server=new Server({'name':a0_0x355cc9(0x290),'version':'0.2.0'},{'capabilities':{'tools':{}}});server[a0_0x355cc9(0x245)](ListToolsRequestSchema,async()=>{const _0x2beb01=a0_0x355cc9,_0x41f653=[{'name':TOOL_NAMES[_0x2beb01(0x1cf)],'description':_0x2beb01(0x267)+_0x2beb01(0x185)+_0x2beb01(0x22a)+_0x2beb01(0x205)+_0x2beb01(0x188)+_0x2beb01(0x1b9)+_0x2beb01(0x1e8)+_0x2beb01(0x18f)+_0x2beb01(0x1fc)+_0x2beb01(0x282)+_0x2beb01(0x1c6)+_0x2beb01(0x293)+_0x2beb01(0x1a4)+_0x2beb01(0x200)+'-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a'+_0x2beb01(0x1e7)+_0x2beb01(0x202)+_0x2beb01(0x244)+'-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\x0a'+'-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a'+_0x2beb01(0x1f0)+_0x2beb01(0x1fb)+_0x2beb01(0x1f9),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x2beb01(0x207)],'description':_0x2beb01(0x23b)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x2beb01(0x1a9)+_0x2beb01(0x25c)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x1f2895=_0x41f653['filter'](_0x4becc3=>{const _0x3d0377=_0x2beb01;if(DISABLED_TOOLS[_0x3d0377(0x278)](_0x4becc3[_0x3d0377(0x239)]))return console['error'](_0x3d0377(0x1fe)+_0x4becc3['name']+_0x3d0377(0x184)),![];if(_0x3d0377(0x233)in _0x4becc3&&_0x4becc3[_0x3d0377(0x233)]&&!MORPH_API_KEY)return logMcpStderr(_0x3d0377(0x1c9)+_0x4becc3['name']+'\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config'),![];return!![];});return{'tools':_0x1f2895[_0x2beb01(0x28e)](_0x52f12c=>({'name':_0x52f12c[_0x2beb01(0x239)],'description':_0x52f12c[_0x2beb01(0x1cd)],'inputSchema':_0x52f12c[_0x2beb01(0x1f1)]}))};}),server['setRequestHandler'](CallToolRequestSchema,async _0xdcd80b=>{const _0x9bc4f=a0_0x355cc9,{name:_0x1ab2bd,arguments:_0x235774}=_0xdcd80b[_0x9bc4f(0x1cb)],_0x35f718=Date[_0x9bc4f(0x1ac)]();logger[_0x9bc4f(0x1d7)](_0x9bc4f(0x175),_0x9bc4f(0x1e9),{'tool':_0x1ab2bd,'args':_0x1ab2bd===_0x9bc4f(0x20c)?{'path':_0x235774?.['path'],'instruction':_0x235774?.[_0x9bc4f(0x247)]||_0x235774?.[_0x9bc4f(0x1d8)],'dryRun':_0x235774?.[_0x9bc4f(0x221)]}:_0x235774});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x9bc4f(0x254),'text':_0x9bc4f(0x228)}],'isError':!![]};if(!MORPH_API_KEY[_0x9bc4f(0x1ea)](_0x9bc4f(0x25b))&&!MORPH_API_KEY[_0x9bc4f(0x1ea)]('morph-'))return{'content':[{'type':_0x9bc4f(0x254),'text':_0x9bc4f(0x17b)}],'isError':!![]};if(DISABLED_TOOLS[_0x9bc4f(0x278)](_0x1ab2bd))return{'content':[{'type':_0x9bc4f(0x254),'text':_0x9bc4f(0x1b5)+_0x1ab2bd+_0x9bc4f(0x17c)}],'isError':![]};switch(_0x1ab2bd){case TOOL_NAMES[_0x9bc4f(0x1cf)]:{const _0x3ee0dd=_0x235774&&typeof _0x235774===_0x9bc4f(0x176)&&'instructions'in _0x235774&&!('instruction'in _0x235774)?{..._0x235774,'instruction':_0x235774[_0x9bc4f(0x1d8)],'instructions':undefined}:_0x235774,_0x4a4d9b=MorphEditFileArgsSchema[_0x9bc4f(0x193)](_0x3ee0dd);if(!_0x4a4d9b[_0x9bc4f(0x223)])throw new Error(_0x9bc4f(0x1c4)+_0x4a4d9b[_0x9bc4f(0x16c)]);const _0x1bc15f=await validatePath(_0x4a4d9b[_0x9bc4f(0x18a)][_0x9bc4f(0x27f)]);let _0x7f6fb1=null,_0x5ac1d5=!![],_0x5a35ad=null;try{_0x7f6fb1=await a0_0xb2718a[_0x9bc4f(0x27a)](_0x1bc15f,'utf-8'),logger[_0x9bc4f(0x1d7)]('MCP',_0x9bc4f(0x284),{'path':_0x1bc15f,'size_bytes':_0x7f6fb1[_0x9bc4f(0x260)]});}catch(_0x48173d){const _0x69ed00=_0x48173d[_0x9bc4f(0x213)];_0x69ed00==='ENOENT'?(_0x5ac1d5=![],_0x7f6fb1='',logger[_0x9bc4f(0x1d7)](_0x9bc4f(0x175),'file_read_complete',{'path':_0x1bc15f,'exists':![]})):(_0x5a35ad=_0x9bc4f(0x259)+(_0x69ed00||_0x9bc4f(0x1da))+_0x9bc4f(0x279)+(_0x48173d instanceof Error?_0x48173d[_0x9bc4f(0x28d)]:String(_0x48173d)),logger[_0x9bc4f(0x16c)](_0x9bc4f(0x175),_0x9bc4f(0x26a),{'path':_0x1bc15f,'error':_0x5a35ad}),logMcpStderr(_0x9bc4f(0x1c9)+_0x5a35ad));}let _0xf9f0d0;try{const _0x2b04ce=MORPH_API_KEY;if(!_0x2b04ce)throw new Error(_0x9bc4f(0x294));const _0x4318de=a0_0x5d6800['dirname'](_0x1bc15f),_0x35dba7=a0_0x5d6800[_0x9bc4f(0x1ba)](_0x1bc15f);logger[_0x9bc4f(0x1d7)](_0x9bc4f(0x175),_0x9bc4f(0x1d1),{'model':_0x9bc4f(0x1cc),'path':_0x4a4d9b[_0x9bc4f(0x18a)][_0x9bc4f(0x27f)],'instruction_len':_0x4a4d9b[_0x9bc4f(0x18a)]['instruction'][_0x9bc4f(0x260)],'code_edit_len':_0x4a4d9b[_0x9bc4f(0x18a)][_0x9bc4f(0x1d5)][_0x9bc4f(0x260)],'original_code_len':_0x7f6fb1?.[_0x9bc4f(0x260)]??0x0,'dry_run':_0x4a4d9b[_0x9bc4f(0x18a)][_0x9bc4f(0x221)]});const _0x124f62=Date[_0x9bc4f(0x1ac)](),_0x29a44f=await executeEditFile({'target_filepath':_0x35dba7,'code_edit':_0x4a4d9b[_0x9bc4f(0x18a)][_0x9bc4f(0x1d5)],'instruction':_0x4a4d9b[_0x9bc4f(0x18a)][_0x9bc4f(0x247)]},{'morphApiKey':_0x2b04ce,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x4318de,'autoWrite':!_0x4a4d9b[_0x9bc4f(0x18a)][_0x9bc4f(0x221)],'generateUdiff':![],'debug':![]}),_0x375559=Date[_0x9bc4f(0x1ac)]()-_0x124f62;_0xf9f0d0=_0x29a44f[_0x9bc4f(0x1c0)];if(!_0x29a44f[_0x9bc4f(0x223)])throw new Error(_0x29a44f[_0x9bc4f(0x16c)]||_0x9bc4f(0x1dc));const _0xee12bb=_0x29a44f[_0x9bc4f(0x1d2)],_0x4784cb=_0x9bc4f(0x220)+_0xee12bb[_0x9bc4f(0x1b4)]+',\x20removed\x20'+_0xee12bb[_0x9bc4f(0x16b)]+_0x9bc4f(0x1f2)+_0xee12bb['linesModified'];logger[_0x9bc4f(0x1d7)](_0x9bc4f(0x175),_0x9bc4f(0x181),{'tool':'edit_file','success':!![],'latency_ms':Date[_0x9bc4f(0x1ac)]()-_0x35f718,'edit_latency_ms':_0x375559,'changes':{'added':_0xee12bb[_0x9bc4f(0x1b4)],'removed':_0xee12bb[_0x9bc4f(0x16b)],'modified':_0xee12bb['linesModified']},'completion_id':_0xf9f0d0});if(_0x4a4d9b[_0x9bc4f(0x18a)][_0x9bc4f(0x221)])return{'content':[{'type':_0x9bc4f(0x254),'text':_0x9bc4f(0x1a5)+(_0x5ac1d5?'':_0x9bc4f(0x18d))+':\x20'+_0x4a4d9b[_0x9bc4f(0x18a)][_0x9bc4f(0x247)]+_0x9bc4f(0x1ef)+_0x4784cb+_0x9bc4f(0x25d)+_0x4a4d9b['data'][_0x9bc4f(0x27f)]+'.'}]};return{'content':[{'type':'text','text':_0x9bc4f(0x265)+(_0x5ac1d5?_0x9bc4f(0x1e2):_0x9bc4f(0x186))+':\x20'+_0x4a4d9b[_0x9bc4f(0x18a)][_0x9bc4f(0x247)]+_0x9bc4f(0x1ef)+_0x4784cb+_0x9bc4f(0x25d)+_0x4a4d9b[_0x9bc4f(0x18a)]['path']+'.'}]};}catch(_0x4eda4f){const _0x4d65b0=handleMorphAPIError(_0x4eda4f);if(_0x4d65b0)return logger[_0x9bc4f(0x16c)](_0x9bc4f(0x175),_0x9bc4f(0x189),{'tool':_0x9bc4f(0x20c),'error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date[_0x9bc4f(0x1ac)]()-_0x35f718}),_0x4d65b0;const _0xa28a5a=_0x4eda4f instanceof Error?_0x4eda4f[_0x9bc4f(0x28d)]:String(_0x4eda4f);return logger[_0x9bc4f(0x16c)](_0x9bc4f(0x175),_0x9bc4f(0x189),{'tool':'edit_file','error':_0xa28a5a,'path':_0x4a4d9b[_0x9bc4f(0x18a)][_0x9bc4f(0x27f)],'validated_path':_0x1bc15f,'latency_ms':Date[_0x9bc4f(0x1ac)]()-_0x35f718,'stack':_0x4eda4f instanceof Error?_0x4eda4f[_0x9bc4f(0x195)]:undefined}),reportMorphError({'error_message':_0xa28a5a,'error_type':_0x4eda4f instanceof Error?_0x4eda4f[_0x9bc4f(0x174)][_0x9bc4f(0x239)]:_0x9bc4f(0x295),'context':{'tool':'edit_file','completion_id':_0xf9f0d0,'file_path':_0x4a4d9b[_0x9bc4f(0x18a)][_0x9bc4f(0x27f)],'validated_path':_0x1bc15f,'instruction':_0x4a4d9b[_0x9bc4f(0x18a)][_0x9bc4f(0x247)],'model':MORPH_LARGE_APPLY?_0x9bc4f(0x1d3):_0x9bc4f(0x1cc),'dry_run':_0x4a4d9b['data'][_0x9bc4f(0x221)],'file_exists':_0x5ac1d5,'file_read_error':_0x5a35ad,'file_readable':_0x7f6fb1!==null,'request_content':{'path':_0x4a4d9b[_0x9bc4f(0x18a)][_0x9bc4f(0x27f)],'code_edit':_0x4a4d9b[_0x9bc4f(0x18a)][_0x9bc4f(0x1d5)],'instruction':_0x4a4d9b['data'][_0x9bc4f(0x247)],'original_code':_0x7f6fb1!==null?_0x7f6fb1[_0x9bc4f(0x260)]>0xc350?_0x7f6fb1['substring'](0x0,0xc350)+_0x9bc4f(0x178)+_0x7f6fb1['length']+_0x9bc4f(0x198):_0x7f6fb1:_0x9bc4f(0x23e)+(_0x5a35ad||'unknown\x20error')+']','original_code_length':_0x7f6fb1?.[_0x9bc4f(0x260)]??0x0,'model':MORPH_LARGE_APPLY?_0x9bc4f(0x1d3):_0x9bc4f(0x1cc),'dry_run':_0x4a4d9b[_0x9bc4f(0x18a)]['dryRun']}},'stack_trace':_0x4eda4f instanceof Error?_0x4eda4f['stack']:undefined,'source':'mcp-filesystem'})[_0x9bc4f(0x204)](()=>{}),{'content':[{'type':_0x9bc4f(0x254),'text':_0x9bc4f(0x252)+_0xa28a5a}],'isError':!![]};}}case TOOL_NAMES[_0x9bc4f(0x207)]:{const _0x173949=WarpGrepArgsSchema[_0x9bc4f(0x193)](_0x235774);if(!_0x173949[_0x9bc4f(0x223)])return{'content':[{'type':_0x9bc4f(0x254),'text':_0x9bc4f(0x262)+_0x173949[_0x9bc4f(0x16c)]}],'isError':!![]};const _0xa554a7=_0x26f0e6=>{const _0x1f64bd=_0x9bc4f,_0x4b03e3=[];for(const _0x418fac of _0x26f0e6||[]){if(_0x418fac['role']===_0x1f64bd(0x256)&&Array[_0x1f64bd(0x226)](_0x418fac['tool_calls']))for(const _0x3059dc of _0x418fac[_0x1f64bd(0x224)]){try{const _0x317b3a=_0x3059dc[_0x1f64bd(0x1e6)]?.[_0x1f64bd(0x239)],_0x342825=JSON[_0x1f64bd(0x203)](_0x3059dc[_0x1f64bd(0x1e6)]?.[_0x1f64bd(0x1af)]||'{}');if(_0x317b3a===_0x1f64bd(0x298))_0x4b03e3['push'](_0x1f64bd(0x234)+_0x342825['pattern']+'\x27\x20'+(_0x342825[_0x1f64bd(0x27f)]||'.'));else{if(_0x317b3a==='read')_0x4b03e3[_0x1f64bd(0x218)]('read\x20'+_0x342825[_0x1f64bd(0x27f)]);else{if(_0x317b3a==='list_directory')_0x4b03e3['push'](_0x1f64bd(0x269)+(_0x342825['command']||'.'));else{if(_0x317b3a===_0x1f64bd(0x24f))_0x4b03e3[_0x1f64bd(0x218)](_0x1f64bd(0x1a3)+_0x342825[_0x1f64bd(0x27d)]+'\x27\x20'+(_0x342825[_0x1f64bd(0x27f)]||'.'));else _0x317b3a===_0x1f64bd(0x27c)&&_0x4b03e3['push'](_0x1f64bd(0x27c));}}}}catch{}}}return _0x4b03e3;},_0x6dccc=_0x459f7c=>{const _0x2f1210=_0x9bc4f,_0x2e28d8=[];if(!_0x459f7c||!Array[_0x2f1210(0x226)](_0x459f7c))return _0x2e28d8;const _0x2a196d=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x2f1210(0x20e),'tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':_0x2f1210(0x26d),'tool':_0x2f1210(0x1d6)},{'pattern':/\[READ ERROR\]/,'error_type':_0x2f1210(0x26b),'tool':_0x2f1210(0x1d6)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x2f1210(0x182),'tool':_0x2f1210(0x1d6)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x2f1210(0x27e),'tool':'grep'},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':'RipgrepNotAvailable','tool':_0x2f1210(0x169)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x2f1210(0x182),'tool':_0x2f1210(0x1d6)},{'pattern':/\[SYMLINK\]/,'error_type':_0x2f1210(0x24d),'tool':_0x2f1210(0x1d6)},{'pattern':/not a text file/,'error_type':_0x2f1210(0x182),'tool':_0x2f1210(0x1d6)},{'pattern':/symbolic link/,'error_type':_0x2f1210(0x24d),'tool':'read'},{'pattern':/Error reading file:/,'error_type':_0x2f1210(0x26b),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x2f1210(0x16a),'tool':_0x2f1210(0x1da)}];let _0x3b0c28=0x0;for(const _0x5e0c96 of _0x459f7c){_0x5e0c96[_0x2f1210(0x26c)]==='assistant'&&Array[_0x2f1210(0x226)](_0x5e0c96[_0x2f1210(0x224)])&&_0x3b0c28++;const _0xeaee01=_0x5e0c96[_0x2f1210(0x275)];if((_0x5e0c96[_0x2f1210(0x26c)]===_0x2f1210(0x1c5)||_0x5e0c96[_0x2f1210(0x26c)]===_0x2f1210(0x285))&&_0xeaee01&&typeof _0xeaee01===_0x2f1210(0x187))for(const {pattern:_0x4e66a7,error_type:_0x462f58,tool:_0x1d35e6}of _0x2a196d){const _0x121a1f=_0xeaee01[_0x2f1210(0x16e)](new RegExp(_0x4e66a7[_0x2f1210(0x21f)],'g'));if(_0x121a1f)for(const _0x599422 of _0x121a1f){const _0x338a22=_0xeaee01[_0x2f1210(0x24e)](_0x599422),_0x56bc77=_0xeaee01[_0x2f1210(0x208)](_0x338a22,Math[_0x2f1210(0x225)](_0x338a22+0xc8,_0xeaee01[_0x2f1210(0x260)]));_0x2e28d8['push']({'tool':_0x1d35e6,'error_type':_0x462f58,'error_message':_0x56bc77['split']('\x0a')[0x0],'turn':_0x3b0c28});}}}return _0x2e28d8;};try{const _0xb85a78=a0_0x5d6800['resolve'](_0x173949[_0x9bc4f(0x18a)][_0x9bc4f(0x26e)]),_0xbd58a3=_0x173949[_0x9bc4f(0x18a)][_0x9bc4f(0x1fd)],_0x43e3fd=_0xbd58a3==='node_modules'?{'allowNames':['node_modules']}:undefined,_0x154ab4=new LocalRipgrepProvider(_0xb85a78,undefined,_0x43e3fd);logger['debug'](_0x9bc4f(0x175),'provider_created',{'type':_0x9bc4f(0x1ee),'repo_root':_0xb85a78,'search_type':_0xbd58a3||'default'}),logger[_0x9bc4f(0x1d7)](_0x9bc4f(0x175),_0x9bc4f(0x1a8),{'query':_0x173949[_0x9bc4f(0x18a)][_0x9bc4f(0x22c)],'repo_root':_0xb85a78,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0xded20f=Date['now'](),_0x5c36ed=await runWarpGrep({'searchTerm':_0x173949[_0x9bc4f(0x18a)][_0x9bc4f(0x22c)],'repoRoot':_0xb85a78,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x154ab4,'search_type':_0xbd58a3}),_0x5eb79e=Date[_0x9bc4f(0x1ac)]()-_0xded20f,_0x327c4f=_0x5c36ed[_0x9bc4f(0x27c)]?.[_0x9bc4f(0x17a)]?.[_0x9bc4f(0x21c)]?.[_0x9bc4f(0x260)]??0x0;logger[_0x9bc4f(0x1d7)]('MCP',_0x9bc4f(0x21e),{'termination':_0x5c36ed['terminationReason'],'turns':_0x5c36ed[_0x9bc4f(0x1bd)]?.[_0x9bc4f(0x1b0)]??0x0,'files_found':_0x327c4f,'latency_ms':_0x5eb79e});const _0x21adf3=_0x6dccc(_0x5c36ed[_0x9bc4f(0x1d4)]);_0x21adf3['length']>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x21adf3[_0x9bc4f(0x260)]+'\x20error(s)','error_type':_0x9bc4f(0x22e),'level':_0x9bc4f(0x1d0),'tool':_0x9bc4f(0x177),'context':{'repo_path':_0x173949[_0x9bc4f(0x18a)][_0x9bc4f(0x26e)],'query':_0x173949['data']['search_string'],'model':_0x9bc4f(0x248),'termination_reason':_0x5c36ed['terminationReason'],'sub_tool_errors':_0x21adf3,'timings':_0x5c36ed[_0x9bc4f(0x1bd)],'tool_calls':_0xa554a7(_0x5c36ed[_0x9bc4f(0x1d4)]),'messages':_0x5c36ed[_0x9bc4f(0x1d4)]?.[_0x9bc4f(0x28e)](_0x33aa26=>({'role':_0x33aa26[_0x9bc4f(0x26c)],'content':_0x33aa26[_0x9bc4f(0x275)],..._0x33aa26[_0x9bc4f(0x224)]?{'tool_calls':_0x33aa26[_0x9bc4f(0x224)][_0x9bc4f(0x260)]}:{},..._0x33aa26[_0x9bc4f(0x250)]?{'tool_call_id':_0x33aa26[_0x9bc4f(0x250)]}:{}}))},'source':'mcp-filesystem'})['catch'](()=>{});let _0x34d829='';if(_0x5c36ed[_0x9bc4f(0x1db)]===_0x9bc4f(0x255)&&_0x5c36ed[_0x9bc4f(0x27c)]?.[_0x9bc4f(0x17a)]?.['files']){const _0x44788a=_0x5c36ed[_0x9bc4f(0x27c)][_0x9bc4f(0x17a)]['files'];if(_0x44788a['length']===0x0)return _0x34d829=_0x5c36ed['finish'][_0x9bc4f(0x286)]||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x9bc4f(0x254),'text':_0x34d829}]};const _0x4b7f10=[],_0x244a5c=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x39059d of _0x5c36ed['messages']){if(_0x39059d[_0x9bc4f(0x26c)]===_0x9bc4f(0x256)&&Array[_0x9bc4f(0x226)](_0x39059d[_0x9bc4f(0x224)]))for(const _0x3159b of _0x39059d[_0x9bc4f(0x224)]){try{const _0x333e86=_0x3159b[_0x9bc4f(0x1e6)]?.['name'],_0x33fd12=JSON[_0x9bc4f(0x203)](_0x3159b['function']?.[_0x9bc4f(0x1af)]||'{}');if(_0x333e86==='grep_search')_0x244a5c[_0x9bc4f(0x218)](_0x9bc4f(0x1ca)+_0x33fd12['pattern']+_0x9bc4f(0x20f)+(_0x33fd12[_0x9bc4f(0x27f)]||'.')+'`');else{if(_0x333e86===_0x9bc4f(0x1d6))_0x244a5c['push']('-\x20Read\x20file\x20`'+_0x33fd12[_0x9bc4f(0x27f)]+'`');else{if(_0x333e86==='list_directory')_0x244a5c[_0x9bc4f(0x218)]('-\x20Listed\x20directory\x20`'+(_0x33fd12['command']||'.')+'`');else _0x333e86===_0x9bc4f(0x24f)&&_0x244a5c[_0x9bc4f(0x218)](_0x9bc4f(0x217)+_0x33fd12['pattern']+'`\x20in\x20`'+(_0x33fd12[_0x9bc4f(0x27f)]||'.')+'`');}}}catch{}}}_0x4b7f10[_0x9bc4f(0x218)](_0x244a5c[_0x9bc4f(0x1ab)]('\x0a'));const _0x268e32=['',_0x9bc4f(0x236)];for(const _0x2820e0 of _0x44788a){if(_0x2820e0[_0x9bc4f(0x277)]==='*')_0x268e32[_0x9bc4f(0x218)]('-\x20'+_0x2820e0[_0x9bc4f(0x27f)]+':*');else{if(Array[_0x9bc4f(0x226)](_0x2820e0[_0x9bc4f(0x277)])){const _0x14c627=_0x2820e0[_0x9bc4f(0x277)][_0x9bc4f(0x28e)](([_0x3f4dd4,_0x585dda])=>{if(_0x3f4dd4===_0x585dda)return''+_0x3f4dd4;return _0x3f4dd4+'-'+_0x585dda;});_0x268e32['push']('-\x20'+_0x2820e0[_0x9bc4f(0x27f)]+':'+_0x14c627[_0x9bc4f(0x1ab)](','));}else _0x268e32[_0x9bc4f(0x218)]('-\x20'+_0x2820e0['path']+':*');}}_0x268e32['push'](''),_0x4b7f10['push'](_0x268e32[_0x9bc4f(0x1ab)]('\x0a')),_0x4b7f10[_0x9bc4f(0x218)](_0x9bc4f(0x23a));const _0x365ebd=[],_0x3b292e=[];for(const _0x40bf80 of _0x44788a){let _0x59e673=a0_0x5d6800[_0x9bc4f(0x261)](_0x173949[_0x9bc4f(0x18a)]['repo_path'],_0x40bf80[_0x9bc4f(0x27f)]),_0x3fa6de=null,_0x1538f8=null;try{_0x3fa6de=await a0_0xb2718a[_0x9bc4f(0x27a)](_0x59e673,{'encoding':_0x9bc4f(0x20a)});}catch(_0x5cc43f){const _0x37f59d=fixPathRepetition(_0x59e673);if(_0x37f59d)try{_0x3fa6de=await a0_0xb2718a['readFile'](_0x37f59d,{'encoding':_0x9bc4f(0x20a)}),_0x59e673=_0x37f59d;}catch{_0x1538f8=_0x5cc43f instanceof Error?_0x5cc43f:new Error(String(_0x5cc43f));}else _0x1538f8=_0x5cc43f instanceof Error?_0x5cc43f:new Error(String(_0x5cc43f));}if(_0x3fa6de!==null){const _0x4ace66=_0x3fa6de['split'](/\r?\n/),_0x20206e=[];if(_0x40bf80[_0x9bc4f(0x277)]==='*'||!Array[_0x9bc4f(0x226)](_0x40bf80[_0x9bc4f(0x277)]))for(let _0x4d7067=0x1;_0x4d7067<=_0x4ace66[_0x9bc4f(0x260)];_0x4d7067++){const _0x1f0514=_0x4ace66[_0x4d7067-0x1];_0x20206e[_0x9bc4f(0x218)](_0x4d7067+'|\x20'+_0x1f0514);}else for(const [_0x3f41c4,_0x4602b8]of _0x40bf80[_0x9bc4f(0x277)]){_0x20206e[_0x9bc4f(0x260)]>0x0&&_0x20206e[_0x9bc4f(0x218)]('');for(let _0x4b87c2=_0x3f41c4;_0x4b87c2<=_0x4602b8&&_0x4b87c2<=_0x4ace66[_0x9bc4f(0x260)];_0x4b87c2++){const _0x5113e7=_0x4ace66[_0x4b87c2-0x1];_0x20206e[_0x9bc4f(0x218)](_0x4b87c2+'|\x20'+_0x5113e7);}}_0x3b292e[_0x9bc4f(0x218)]({'path':_0x40bf80[_0x9bc4f(0x27f)],'content':_0x20206e['join']('\x0a')});}else _0x365ebd[_0x9bc4f(0x218)]('<file\x20path=\x22'+_0x40bf80[_0x9bc4f(0x27f)]+_0x9bc4f(0x1e3)+(_0x1538f8?.[_0x9bc4f(0x28d)]||_0x9bc4f(0x28b))+_0x9bc4f(0x1b6));}try{const _0x132cac=await compactFileContexts(_0x3b292e,_0x173949[_0x9bc4f(0x18a)][_0x9bc4f(0x22c)],MORPH_API_KEY,MORPH_API_URL);for(const _0x44aa86 of _0x132cac){_0x365ebd[_0x9bc4f(0x218)](_0x9bc4f(0x243)+_0x44aa86[_0x9bc4f(0x27f)]+_0x9bc4f(0x16f)+_0x44aa86['content']+'\x0a</file>');}}catch(_0x5ee5f0){logger[_0x9bc4f(0x1d0)](_0x9bc4f(0x175),_0x9bc4f(0x1a7),{'error':_0x5ee5f0 instanceof Error?_0x5ee5f0[_0x9bc4f(0x28d)]:String(_0x5ee5f0),'files_count':_0x3b292e[_0x9bc4f(0x260)]});for(const _0x2eda76 of _0x3b292e){_0x365ebd[_0x9bc4f(0x218)]('<file\x20path=\x22'+_0x2eda76[_0x9bc4f(0x27f)]+_0x9bc4f(0x16f)+_0x2eda76[_0x9bc4f(0x275)]+_0x9bc4f(0x1b6));}}_0x4b7f10[_0x9bc4f(0x218)](_0x365ebd['join']('\x0a\x0a')),_0x34d829=_0x4b7f10[_0x9bc4f(0x1ab)]('\x0a');const _0x4a9d78=_0x5c36ed[_0x9bc4f(0x25e)]?.['filter'](_0xaa1b0e=>_0xaa1b0e[_0x9bc4f(0x28d)]?.[_0x9bc4f(0x1ea)](_0x9bc4f(0x230)))||[];if(_0x4a9d78['length']>0x0){const _0x313600=_0x4a9d78[_0x9bc4f(0x28e)](_0x488c13=>_0x488c13[_0x9bc4f(0x28d)])[_0x9bc4f(0x1ab)](';\x20');reportMorphError({'error_message':_0x313600,'error_type':_0x9bc4f(0x1ad),'context':{'tool':_0x9bc4f(0x177),'repo_path':_0x173949[_0x9bc4f(0x18a)][_0x9bc4f(0x26e)],'query':_0x173949[_0x9bc4f(0x18a)][_0x9bc4f(0x22c)],'model':'morph-warp-grep-v2.1','termination_reason':'completed_with_file_errors','error_count':_0x4a9d78[_0x9bc4f(0x260)],'is_timeout':![],'timings':_0x5c36ed['timings'],'files_attempted':_0x44788a['map'](_0x4c1cc3=>({'path':_0x4c1cc3[_0x9bc4f(0x27f)],'lines':_0x4c1cc3['lines']})),'tool_calls':_0xa554a7(_0x5c36ed[_0x9bc4f(0x1d4)]),'messages':_0x5c36ed[_0x9bc4f(0x1d4)]?.['map'](_0x174bd4=>({'role':_0x174bd4[_0x9bc4f(0x26c)],'content':_0x174bd4[_0x9bc4f(0x275)],..._0x174bd4[_0x9bc4f(0x224)]?{'tool_calls':_0x174bd4[_0x9bc4f(0x224)][_0x9bc4f(0x260)]}:{},..._0x174bd4[_0x9bc4f(0x250)]?{'tool_call_id':_0x174bd4['tool_call_id']}:{}})),'request_content':{'query':_0x173949[_0x9bc4f(0x18a)][_0x9bc4f(0x22c)],'repo_path':_0x173949['data'][_0x9bc4f(0x26e)],'repoRoot':a0_0x5d6800[_0x9bc4f(0x261)](_0x173949['data']['repo_path']),'model':_0x9bc4f(0x248)}},'source':_0x9bc4f(0x27b)})['catch'](()=>{});}}else{if(_0x5c36ed[_0x9bc4f(0x1db)]===_0x9bc4f(0x276)&&_0x5c36ed[_0x9bc4f(0x25e)]['length']>0x0){const _0x512d1e=_0x5c36ed['errors'][_0x9bc4f(0x28e)](_0x5366a6=>_0x5366a6[_0x9bc4f(0x28d)])['join'](';\x20');_0x34d829='Error:\x20'+_0x512d1e;const _0xa99728=_0x512d1e[_0x9bc4f(0x192)]()[_0x9bc4f(0x21d)](_0x9bc4f(0x196))||_0x512d1e['toLowerCase']()[_0x9bc4f(0x21d)](_0x9bc4f(0x17e))||_0x512d1e[_0x9bc4f(0x192)]()[_0x9bc4f(0x21d)](_0x9bc4f(0x273)),_0x1d612b=_0x5c36ed[_0x9bc4f(0x27c)]?.[_0x9bc4f(0x17a)]?.[_0x9bc4f(0x21c)],_0x2a4b70=_0x5c36ed[_0x9bc4f(0x25e)][0x0];reportMorphError({'error_message':_0x512d1e,'error_type':_0xa99728?_0x9bc4f(0x242):_0x2a4b70?.[_0x9bc4f(0x174)]?.['name']||_0x9bc4f(0x271),'context':{'tool':'codebase_search','repo_path':_0x173949['data'][_0x9bc4f(0x26e)],'query':_0x173949[_0x9bc4f(0x18a)]['search_string'],'model':_0x9bc4f(0x248),'termination_reason':_0x5c36ed[_0x9bc4f(0x1db)],'error_count':_0x5c36ed[_0x9bc4f(0x25e)][_0x9bc4f(0x260)],'is_timeout':_0xa99728,'timings':_0x5c36ed['timings'],'files_attempted':_0x1d612b?.[_0x9bc4f(0x28e)](_0x4ea32b=>({'path':_0x4ea32b[_0x9bc4f(0x27f)],'lines':_0x4ea32b['lines']})),'tool_calls':_0xa554a7(_0x5c36ed['messages']),'messages':_0x5c36ed[_0x9bc4f(0x1d4)]?.[_0x9bc4f(0x28e)](_0x47b501=>({'role':_0x47b501['role'],'content':_0x47b501[_0x9bc4f(0x275)],..._0x47b501['tool_calls']?{'tool_calls':_0x47b501[_0x9bc4f(0x224)][_0x9bc4f(0x260)]}:{},..._0x47b501[_0x9bc4f(0x250)]?{'tool_call_id':_0x47b501[_0x9bc4f(0x250)]}:{}})),'request_content':{'query':_0x173949[_0x9bc4f(0x18a)]['search_string'],'repo_path':_0x173949['data'][_0x9bc4f(0x26e)],'repoRoot':a0_0x5d6800['resolve'](_0x173949['data'][_0x9bc4f(0x26e)]),'model':_0x9bc4f(0x248)}},'stack_trace':_0x2a4b70?.[_0x9bc4f(0x195)]||undefined,'source':_0x9bc4f(0x27b)})[_0x9bc4f(0x204)](()=>{});}else _0x34d829=_0x9bc4f(0x17d);}return{'content':[{'type':_0x9bc4f(0x254),'text':_0x34d829}]};}catch(_0x2cd5b3){const _0x4b2f1b=handleMorphAPIError(_0x2cd5b3);if(_0x4b2f1b)return logger['error']('MCP',_0x9bc4f(0x189),{'tool':_0x9bc4f(0x177),'error':_0x9bc4f(0x1c3),'latency_ms':Date[_0x9bc4f(0x1ac)]()-_0x35f718}),_0x4b2f1b;const _0xafb5fc=_0x2cd5b3 instanceof Error?_0x2cd5b3[_0x9bc4f(0x28d)]:String(_0x2cd5b3);logger[_0x9bc4f(0x16c)](_0x9bc4f(0x175),_0x9bc4f(0x189),{'tool':_0x9bc4f(0x177),'error':_0xafb5fc,'repo_path':_0x173949[_0x9bc4f(0x18a)][_0x9bc4f(0x26e)],'query':_0x173949[_0x9bc4f(0x18a)][_0x9bc4f(0x22c)],'latency_ms':Date[_0x9bc4f(0x1ac)]()-_0x35f718});const _0x33b3c4=_0xafb5fc[_0x9bc4f(0x192)]()[_0x9bc4f(0x21d)](_0x9bc4f(0x196))||_0xafb5fc['toLowerCase']()[_0x9bc4f(0x21d)](_0x9bc4f(0x17e))||_0xafb5fc['toLowerCase']()[_0x9bc4f(0x21d)]('etimedout')||_0x2cd5b3 instanceof Error&&_0x2cd5b3[_0x9bc4f(0x239)]===_0x9bc4f(0x242);return reportMorphError({'error_message':_0xafb5fc,'error_type':_0x33b3c4?'TimeoutError':_0x2cd5b3 instanceof Error?_0x2cd5b3['constructor'][_0x9bc4f(0x239)]:_0x9bc4f(0x295),'context':{'tool':_0x9bc4f(0x177),'repo_path':_0x173949[_0x9bc4f(0x18a)]['repo_path'],'query':_0x173949['data']['search_string'],'model':_0x9bc4f(0x248),'is_timeout':_0x33b3c4,'exception_phase':_0x9bc4f(0x299),'request_content':{'query':_0x173949['data'][_0x9bc4f(0x22c)],'repo_path':_0x173949['data'][_0x9bc4f(0x26e)],'repoRoot':a0_0x5d6800[_0x9bc4f(0x261)](_0x173949[_0x9bc4f(0x18a)]['repo_path']),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x2cd5b3 instanceof Error?_0x2cd5b3['stack']:undefined,'source':'mcp-filesystem'})[_0x9bc4f(0x204)](()=>{}),{'content':[{'type':_0x9bc4f(0x254),'text':_0x9bc4f(0x216)+_0xafb5fc}],'isError':![]};}}case TOOL_NAMES[_0x9bc4f(0x1e1)]:{const _0x533773=WarpGrepGitHubArgsSchema['safeParse'](_0x235774);if(!_0x533773[_0x9bc4f(0x223)])return{'content':[{'type':'text','text':'Invalid\x20arguments:\x20'+_0x533773[_0x9bc4f(0x16c)]}],'isError':!![]};const _0x22a5a1=_0x533773[_0x9bc4f(0x18a)][_0x9bc4f(0x28c)]||_0x533773[_0x9bc4f(0x18a)][_0x9bc4f(0x1c7)];if(!_0x22a5a1)return{'content':[{'type':_0x9bc4f(0x254),'text':_0x9bc4f(0x173)}],'isError':!![]};const _0x717c3=MORPH_API_KEY;if(!_0x717c3)throw new Error(_0x9bc4f(0x294));const _0x2ae458=Date[_0x9bc4f(0x1ac)]();logger[_0x9bc4f(0x1d7)](_0x9bc4f(0x175),'github_search_start',{'identifier':_0x22a5a1,'query':_0x533773[_0x9bc4f(0x18a)]['search_string'],'branch':_0x533773['data'][_0x9bc4f(0x257)]});try{const _0x48f091=new WarpGrepClient({'morphApiKey':_0x717c3,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x5813cf=await _0x48f091[_0x9bc4f(0x258)]({'searchTerm':_0x533773[_0x9bc4f(0x18a)][_0x9bc4f(0x22c)],'github':_0x22a5a1,'branch':_0x533773[_0x9bc4f(0x18a)][_0x9bc4f(0x257)]}),_0xe2a8c3=Date[_0x9bc4f(0x1ac)]()-_0x2ae458;logMcpStderr(_0x9bc4f(0x23c)+_0xe2a8c3+_0x9bc4f(0x1e5)+_0x5813cf[_0x9bc4f(0x223)]);const _0x4eabf8=formatResult(_0x5813cf);return{'content':[{'type':_0x9bc4f(0x254),'text':_0x4eabf8}]};}catch(_0x936b6){const _0x5a74ec=handleMorphAPIError(_0x936b6);if(_0x5a74ec)return _0x5a74ec;const _0x4df58c=Date[_0x9bc4f(0x1ac)]()-_0x2ae458,_0x27df98=_0x936b6 instanceof Error?_0x936b6[_0x9bc4f(0x28d)]:String(_0x936b6);return logMcpStderr('[github_codebase_search]\x20Failed\x20in\x20'+_0x4df58c+'ms:',_0x27df98),reportMorphError({'error_message':_0x27df98,'error_type':_0x936b6 instanceof Error?_0x936b6['constructor']['name']:_0x9bc4f(0x295),'context':{'tool':_0x9bc4f(0x212),'github_url':_0x22a5a1,'search_string':_0x533773['data'][_0x9bc4f(0x22c)],'branch':_0x533773[_0x9bc4f(0x18a)][_0x9bc4f(0x257)]},'stack_trace':_0x936b6 instanceof Error?_0x936b6[_0x9bc4f(0x195)]:undefined,'source':_0x9bc4f(0x27b),'tool':'github_codebase_search','latency_ms':_0x4df58c})['catch'](()=>{}),{'content':[{'type':_0x9bc4f(0x254),'text':_0x9bc4f(0x210)+_0x27df98}],'isError':![]};}}default:throw new Error(_0x9bc4f(0x22f)+_0x1ab2bd);}}catch(_0xe8aec6){const _0x2f3ba5=_0xe8aec6 instanceof Error?_0xe8aec6[_0x9bc4f(0x28d)]:String(_0xe8aec6);return reportMorphError({'error_message':_0x2f3ba5,'error_type':_0xe8aec6 instanceof Error?_0xe8aec6[_0x9bc4f(0x174)][_0x9bc4f(0x239)]:_0x9bc4f(0x295),'context':{'tool':_0x1ab2bd,'arguments':_0x235774?JSON[_0x9bc4f(0x1c8)](_0x235774)[_0x9bc4f(0x208)](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0xe8aec6 instanceof Error?_0xe8aec6['stack']:undefined,'source':'mcp-filesystem'})[_0x9bc4f(0x204)](()=>{}),{'content':[{'type':_0x9bc4f(0x254),'text':_0x9bc4f(0x232)+_0x2f3ba5}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x5eb97f){const _0x2b5c4f=a0_0x355cc9,_0x30c8a5=await getValidRootDirectories(_0x5eb97f);if(_0x30c8a5[_0x2b5c4f(0x260)]>0x0)allowedDirectories=[..._0x30c8a5],logMcpStderr('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0x30c8a5[_0x2b5c4f(0x260)]+'\x20valid\x20directories');else{logMcpStderr(_0x2b5c4f(0x1c2));if(ENABLE_WORKSPACE_MODE)try{const _0x1e0fc7=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x1e0fc7&&(allowedDirectories=[_0x1e0fc7],logMcpStderr(_0x2b5c4f(0x197)+_0x1e0fc7));}catch(_0x51a97){logMcpStderr('Warning:\x20Workspace\x20fallback\x20failed:\x20'+_0x51a97);}}}function a0_0x4f95(_0x1ad99b,_0x335894){_0x1ad99b=_0x1ad99b-0x169;const _0x5a7c63=a0_0x5a7c();let _0x4f9552=_0x5a7c63[_0x1ad99b];return _0x4f9552;}server[a0_0x355cc9(0x263)](RootsListChangedNotificationSchema,async()=>{const _0x4d9eb3=a0_0x355cc9;try{const _0x3452c3=await server[_0x4d9eb3(0x1be)]();_0x3452c3&&'roots'in _0x3452c3&&await updateAllowedDirectoriesFromRoots(_0x3452c3[_0x4d9eb3(0x172)]);}catch(_0x43c3a6){logMcpStderr(_0x4d9eb3(0x1f8),_0x43c3a6 instanceof Error?_0x43c3a6['message']:String(_0x43c3a6));}}),server[a0_0x355cc9(0x227)]=async()=>{const _0x321c02=a0_0x355cc9,_0x192e51=server[_0x321c02(0x296)]();if(_0x192e51?.['roots'])try{const _0x2ff6b0=await server[_0x321c02(0x1be)]();_0x2ff6b0&&_0x321c02(0x172)in _0x2ff6b0?await updateAllowedDirectoriesFromRoots(_0x2ff6b0[_0x321c02(0x172)]):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x4d4dbe){logMcpStderr(_0x321c02(0x16d),_0x4d4dbe instanceof Error?_0x4d4dbe[_0x321c02(0x28d)]:String(_0x4d4dbe));}else{if(allowedDirectories['length']>0x0)logMcpStderr(_0x321c02(0x20d),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x321c02(0x1ff));else throw new Error(_0x321c02(0x180));}}};async function runServer(){const _0xc56fdc=a0_0x355cc9,_0x55227a=new StdioServerTransport();await server[_0xc56fdc(0x1bf)](_0x55227a),logMcpStderr(_0xc56fdc(0x1e4)),allowedDirectories[_0xc56fdc(0x260)]===0x0&&logMcpStderr(_0xc56fdc(0x28a));}runServer()[a0_0x355cc9(0x204)](_0x3c1a59=>{const _0x599ce6=a0_0x355cc9;logMcpStderr(_0x599ce6(0x19f),_0x3c1a59),process[_0x599ce6(0x288)](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
function a1_0x3220(_0x5a8a19,_0x59f819){_0x5a8a19=_0x5a8a19-0xcb;var _0x30d6f2=a1_0x30d6();var _0x322082=_0x30d6f2[_0x5a8a19];return _0x322082;}var a1_0x3ee94b=a1_0x3220;(function(_0xb9b13,_0x2d0a7d){var _0x26c6b7=a1_0x3220,_0x2e5fcf=_0xb9b13();while(!![]){try{var _0x4c5696=parseInt(_0x26c6b7(0xda))/0x1*(parseInt(_0x26c6b7(0xcb))/0x2)+-parseInt(_0x26c6b7(0xd8))/0x3*(parseInt(_0x26c6b7(0xdf))/0x4)+-parseInt(_0x26c6b7(0xcc))/0x5+-parseInt(_0x26c6b7(0xd2))/0x6*(-parseInt(_0x26c6b7(0xcf))/0x7)+-parseInt(_0x26c6b7(0xdd))/0x8*(-parseInt(_0x26c6b7(0xd9))/0x9)+-parseInt(_0x26c6b7(0xdb))/0xa*(parseInt(_0x26c6b7(0xd1))/0xb)+parseInt(_0x26c6b7(0xd3))/0xc;if(_0x4c5696===_0x2d0a7d)break;else _0x2e5fcf['push'](_0x2e5fcf['shift']());}catch(_0x7438a3){_0x2e5fcf['push'](_0x2e5fcf['shift']());}}}(a1_0x30d6,0x4087f));import a1_0x2b0a04 from'os';import{logger}from'./logger.js';function a1_0x30d6(){var _0x3f1f88=['length','7wrizvQ','darwin','3374503EPCwqj','1073742OdkFkV','9932448SajPRg','map','error','Windows','Linux','12930cxEMuQ','971037ojXfvt','120187UcBRNb','10wRduTd','win32','16ZTFcMN','Unknown','424rDKcRV','2IifGpK','1573410yrzpgU','platform'];a1_0x30d6=function(){return _0x3f1f88;};return a1_0x30d6();}export function getOperatingSystemType(_0xa947=a1_0x2b0a04['platform']()){var _0x363f82=a1_0x3220;switch(_0xa947){case _0x363f82(0xd0):return'macOS';case _0x363f82(0xdc):return _0x363f82(0xd6);case'linux':return _0x363f82(0xd7);default:return _0x363f82(0xde);}}export function formatMcpLogMessage(_0x481438,_0x1acb9e=a1_0x2b0a04[a1_0x3ee94b(0xcd)]()){return'[os='+getOperatingSystemType(_0x1acb9e)+']\x20'+_0x481438;}export function logMcpStderr(_0x673e91,..._0x40c161){var _0x16a915=a1_0x3ee94b;console[_0x16a915(0xd5)](formatMcpLogMessage(_0x673e91),..._0x40c161),logger['info']('MCP',_0x673e91,_0x40c161[_0x16a915(0xce)]?{'args':_0x40c161[_0x16a915(0xd4)](_0x456c25=>String(_0x456c25))}:undefined);}
|
package/dist/logger.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a2_0x4199(_0x1addbf,_0x1b40d9){_0x1addbf=_0x1addbf-0x1e7;const _0x445acf=a2_0x445a();let _0x4199c0=_0x445acf[_0x1addbf];return _0x4199c0;}const a2_0x529b57=a2_0x4199;(function(_0x421cc5,_0x1d9089){const _0x5b2b6f=a2_0x4199,_0x28c714=_0x421cc5();while(!![]){try{const _0x2c5b35=parseInt(_0x5b2b6f(0x1f2))/0x1*(-parseInt(_0x5b2b6f(0x1e8))/0x2)+parseInt(_0x5b2b6f(0x1ea))/0x3*(-parseInt(_0x5b2b6f(0x200))/0x4)+parseInt(_0x5b2b6f(0x1fb))/0x5*(-parseInt(_0x5b2b6f(0x1f9))/0x6)+parseInt(_0x5b2b6f(0x1fa))/0x7+-parseInt(_0x5b2b6f(0x1ee))/0x8+-parseInt(_0x5b2b6f(0x1f1))/0x9*(-parseInt(_0x5b2b6f(0x1fd))/0xa)+parseInt(_0x5b2b6f(0x1f5))/0xb;if(_0x2c5b35===_0x1d9089)break;else _0x28c714['push'](_0x28c714['shift']());}catch(_0x357dfe){_0x28c714['push'](_0x28c714['shift']());}}}(a2_0x445a,0x7a2b6));import{createWriteStream}from'fs';function a2_0x445a(){const _0x42abfc=['warn','6822ISlITi','13583tGGNPX','debug','env','9624417AMqnej','enabled','info','stringify','21342MgJgiv','6180377Eivurb','605edbeCf','MORPH_LOG_FILE','7780WbnYie','enable','isEnabled','16fOFKXm','error','54STrXwT','fileStream','717321EPSAnn','write','MORPH_DEBUG','_log','748880qwrcJN',']\x20['];a2_0x445a=function(){return _0x42abfc;};return a2_0x445a();}class MorphLogger{[a2_0x529b57(0x1f6)];[a2_0x529b57(0x1e9)];constructor(){const _0x2f1c51=a2_0x529b57;this['enabled']=process['env'][_0x2f1c51(0x1ec)]==='1'||!!process[_0x2f1c51(0x1f4)][_0x2f1c51(0x1fc)];const _0x3e6017=process[_0x2f1c51(0x1f4)][_0x2f1c51(0x1fc)];this[_0x2f1c51(0x1e9)]=_0x3e6017?createWriteStream(_0x3e6017,{'flags':'a'}):null;}[a2_0x529b57(0x1f3)](_0x80af72,_0x39d119,_0x4c924e){const _0x157295=a2_0x529b57;this[_0x157295(0x1ed)](_0x157295(0x1f3),_0x80af72,_0x39d119,_0x4c924e);}['info'](_0x366143,_0x2eb046,_0x6510bb){const _0x19367a=a2_0x529b57;this[_0x19367a(0x1ed)](_0x19367a(0x1f7),_0x366143,_0x2eb046,_0x6510bb);}[a2_0x529b57(0x1f0)](_0xbd46bb,_0x5471be,_0x316f3c){const _0x1479b3=a2_0x529b57;this[_0x1479b3(0x1ed)](_0x1479b3(0x1f0),_0xbd46bb,_0x5471be,_0x316f3c);}[a2_0x529b57(0x1e7)](_0x3b8bfc,_0x31f132,_0x330a08){const _0x368180=a2_0x529b57;this[_0x368180(0x1ed)](_0x368180(0x1e7),_0x3b8bfc,_0x31f132,_0x330a08);}[a2_0x529b57(0x1fe)](){const _0x40d248=a2_0x529b57;this[_0x40d248(0x1f6)]=!![];}get[a2_0x529b57(0x1ff)](){const _0x3bcb11=a2_0x529b57;return this[_0x3bcb11(0x1f6)];}['_log'](_0x35e7ed,_0x57124d,_0x32caef,_0x58c730){const _0x4f2e26=a2_0x529b57;if(_0x35e7ed!==_0x4f2e26(0x1e7)&&!this['enabled'])return;const _0x42667f=new Date()['toISOString'](),_0x18ccdd='['+_0x42667f+']\x20['+_0x35e7ed['toUpperCase']()+_0x4f2e26(0x1ef)+_0x57124d+']';console['error'](_0x58c730?_0x18ccdd+'\x20'+_0x32caef+'\x20'+JSON['stringify'](_0x58c730):_0x18ccdd+'\x20'+_0x32caef),this[_0x4f2e26(0x1e9)]?.[_0x4f2e26(0x1eb)](JSON[_0x4f2e26(0x1f8)]({'ts':_0x42667f,'level':_0x35e7ed,'component':_0x57124d,'msg':_0x32caef,..._0x58c730&&{'data':_0x58c730}})+'\x0a');}}export const logger=new MorphLogger();
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x27a666,_0x228d7e){const _0x40ca60=a3_0x58e2,_0x2f9592=_0x27a666();while(!![]){try{const _0x1fa8a1=-parseInt(_0x40ca60(0x169))/0x1+parseInt(_0x40ca60(0x16e))/0x2*(-parseInt(_0x40ca60(0x178))/0x3)+parseInt(_0x40ca60(0x179))/0x4+parseInt(_0x40ca60(0x173))/0x5*(-parseInt(_0x40ca60(0x17a))/0x6)+-parseInt(_0x40ca60(0x172))/0x7*(-parseInt(_0x40ca60(0x17b))/0x8)+parseInt(_0x40ca60(0x16d))/0x9*(parseInt(_0x40ca60(0x168))/0xa)+parseInt(_0x40ca60(0x170))/0xb;if(_0x1fa8a1===_0x228d7e)break;else _0x2f9592['push'](_0x2f9592['shift']());}catch(_0x223318){_0x2f9592['push'](_0x2f9592['shift']());}}}(a3_0x5824,0x5973a));function a3_0x5824(){const _0x2a9a2f=['2456180CqxcyW','6kaMKBz','420008kTcGiT','toUpperCase','homedir','20gFTxUH','663368MOEpgc','trim','charAt','replace','1935459USFJSk','445868NnkMAS','/mnt/','7487678xSHGyZ','startsWith','7arfQTB','393910qBCDfF','match','slice','substring','join','9VjSelM'];a3_0x5824=function(){return _0x2a9a2f;};return a3_0x5824();}import a3_0x3f6fa7 from'path';import a3_0x12dff7 from'os';export function convertToWindowsPath(_0x389280){const _0x302129=a3_0x58e2;if(_0x389280[_0x302129(0x171)](_0x302129(0x16f))){const _0x270cb2=_0x389280[_0x302129(0x16b)](0x5)[_0x302129(0x17c)](),_0x5c1760=_0x389280[_0x302129(0x175)](0x6)['replace'](/\//g,'\x5c');return _0x270cb2+':'+_0x5c1760;}if(_0x389280[_0x302129(0x174)](/^\/[a-zA-Z]\//)){const _0x328f5d=_0x389280[_0x302129(0x16b)](0x1)[_0x302129(0x17c)](),_0x2a717e=_0x389280['slice'](0x2)[_0x302129(0x16c)](/\//g,'\x5c');return _0x328f5d+':'+_0x2a717e;}if(_0x389280[_0x302129(0x174)](/^[a-zA-Z]:/))return _0x389280[_0x302129(0x16c)](/\//g,'\x5c');return _0x389280;}function a3_0x58e2(_0x176b01,_0x33a666){_0x176b01=_0x176b01-0x168;const _0x5824a2=a3_0x5824();let _0x58e29b=_0x5824a2[_0x176b01];return _0x58e29b;}export function normalizePath(_0x493539){const _0x402616=a3_0x58e2;_0x493539=_0x493539[_0x402616(0x16a)]()[_0x402616(0x16c)](/^["']|["']$/g,'');const _0x1c7bad=_0x493539[_0x402616(0x171)]('/')&&!_0x493539[_0x402616(0x174)](/^\/mnt\/[a-z]\//i)&&!_0x493539['match'](/^\/[a-zA-Z]\//);if(_0x1c7bad)return _0x493539[_0x402616(0x16c)](/\/+/g,'/')[_0x402616(0x16c)](/\/+$/,'');_0x493539=convertToWindowsPath(_0x493539);if(_0x493539[_0x402616(0x171)]('\x5c\x5c')){let _0x47ba1f=_0x493539;_0x47ba1f=_0x47ba1f[_0x402616(0x16c)](/^\\{2,}/,'\x5c\x5c');const _0x1f0c65=_0x47ba1f[_0x402616(0x176)](0x2)[_0x402616(0x16c)](/\\\\/g,'\x5c');_0x493539='\x5c\x5c'+_0x1f0c65;}else _0x493539=_0x493539['replace'](/\\\\/g,'\x5c');let _0xb2fa72=a3_0x3f6fa7['normalize'](_0x493539);_0x493539['startsWith']('\x5c\x5c')&&!_0xb2fa72[_0x402616(0x171)]('\x5c\x5c')&&(_0xb2fa72='\x5c'+_0xb2fa72);if(_0xb2fa72[_0x402616(0x174)](/^[a-zA-Z]:/)){let _0x5098f6=_0xb2fa72[_0x402616(0x16c)](/\//g,'\x5c');return/^[a-z]:/['test'](_0x5098f6)&&(_0x5098f6=_0x5098f6[_0x402616(0x16b)](0x0)[_0x402616(0x17c)]()+_0x5098f6[_0x402616(0x175)](0x1)),_0x5098f6;}return _0xb2fa72['replace'](/\//g,'\x5c');}export function expandHome(_0x5ebbe0){const _0x42cf13=a3_0x58e2;if(_0x5ebbe0['startsWith']('~/')||_0x5ebbe0==='~')return a3_0x3f6fa7[_0x42cf13(0x177)](a3_0x12dff7[_0x42cf13(0x17d)](),_0x5ebbe0[_0x42cf13(0x175)](0x1));return _0x5ebbe0;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0x34dbd7,_0x589eed){const _0x402715=a4_0x12df,_0x5a492f=_0x34dbd7();while(!![]){try{const _0x4cf983=parseInt(_0x402715(0xdd))/0x1+parseInt(_0x402715(0xd5))/0x2*(-parseInt(_0x402715(0xdc))/0x3)+parseInt(_0x402715(0xcc))/0x4*(parseInt(_0x402715(0xcb))/0x5)+parseInt(_0x402715(0xcd))/0x6+-parseInt(_0x402715(0xd1))/0x7+-parseInt(_0x402715(0xd0))/0x8+-parseInt(_0x402715(0xd3))/0x9;if(_0x4cf983===_0x589eed)break;else _0x5a492f['push'](_0x5a492f['shift']());}catch(_0x33efb0){_0x5a492f['push'](_0x5a492f['shift']());}}}(a4_0x560e,0x380d8));import a4_0x413d88 from'path';export function isPathWithinAllowedDirectories(_0x5e5330,_0x536835){const _0x5901e8=a4_0x12df;if(typeof _0x5e5330!==_0x5901e8(0xd9)||!Array['isArray'](_0x536835))return![];if(!_0x5e5330||_0x536835[_0x5901e8(0xcf)]===0x0)return![];if(_0x5e5330[_0x5901e8(0xd7)]('\x00'))return![];let _0x42b75c;try{_0x42b75c=a4_0x413d88[_0x5901e8(0xdb)](a4_0x413d88[_0x5901e8(0xce)](_0x5e5330));}catch{return![];}if(!a4_0x413d88[_0x5901e8(0xda)](_0x42b75c))throw new Error(_0x5901e8(0xd4));return _0x536835[_0x5901e8(0xde)](_0x1bbf19=>{const _0x6a33a3=_0x5901e8;if(typeof _0x1bbf19!==_0x6a33a3(0xd9)||!_0x1bbf19)return![];if(_0x1bbf19[_0x6a33a3(0xd7)]('\x00'))return![];let _0x5bbaf7;try{_0x5bbaf7=a4_0x413d88[_0x6a33a3(0xdb)](a4_0x413d88['normalize'](_0x1bbf19));}catch{return![];}if(!a4_0x413d88[_0x6a33a3(0xda)](_0x5bbaf7))throw new Error(_0x6a33a3(0xd6));if(_0x42b75c===_0x5bbaf7)return!![];if(_0x5bbaf7===a4_0x413d88[_0x6a33a3(0xd8)])return _0x42b75c[_0x6a33a3(0xd2)](a4_0x413d88['sep']);return _0x42b75c[_0x6a33a3(0xd2)](_0x5bbaf7+a4_0x413d88['sep']);});}function a4_0x12df(_0x3a3039,_0x1ee842){_0x3a3039=_0x3a3039-0xcb;const _0x560e1d=a4_0x560e();let _0x12df7f=_0x560e1d[_0x3a3039];return _0x12df7f;}function a4_0x560e(){const _0x64b5cb=['2906337zgaWaz','startsWith','47385SaiFxs','Path\x20must\x20be\x20absolute\x20after\x20normalization','532GjnLiR','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','includes','sep','string','isAbsolute','resolve','972qSwzGr','265269vGbfpn','some','345xopbZP','10492UWLtjH','2707860DSAxgw','normalize','length','1290672xlpFTj'];a4_0x560e=function(){return _0x64b5cb;};return a4_0x560e();}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x34f2b5,_0x4369a0){const _0x220930=a5_0x3db3,_0x3d17a8=_0x34f2b5();while(!![]){try{const _0x59980e=parseInt(_0x220930(0x110))/0x1*(-parseInt(_0x220930(0x11c))/0x2)+-parseInt(_0x220930(0x118))/0x3*(parseInt(_0x220930(0x107))/0x4)+-parseInt(_0x220930(0x114))/0x5*(parseInt(_0x220930(0x10e))/0x6)+parseInt(_0x220930(0x11a))/0x7+parseInt(_0x220930(0x105))/0x8+-parseInt(_0x220930(0x10f))/0x9*(parseInt(_0x220930(0x109))/0xa)+parseInt(_0x220930(0x108))/0xb;if(_0x59980e===_0x4369a0)break;else _0x3d17a8['push'](_0x3d17a8['shift']());}catch(_0x3e8c72){_0x3d17a8['push'](_0x3d17a8['shift']());}}}(a5_0x2317,0xa9c6d));function a5_0x3db3(_0x459d2e,_0x526525){_0x459d2e=_0x459d2e-0x105;const _0x231775=a5_0x2317();let _0x3db375=_0x231775[_0x459d2e];return _0x3db375;}import{promises as a5_0x97da67}from'fs';function a5_0x2317(){const _0x591c82=['\x20due\x20to\x20error:\x20','realpath','362150jVqYNj','startsWith','slice','Skipping\x20invalid\x20directory:\x20','2019057yWlOav','join','738689WTfcWi','invalid\x20path\x20or\x20inaccessible','760uAscqh','774464jkddkE','stat','4BwAzjD','26084795aEtOMu','19340bJdcWL','file://','isDirectory','uri','message','60myERdT','1476igLygc','431ZRimKR','Skipping\x20'];a5_0x2317=function(){return _0x591c82;};return a5_0x2317();}import a5_0x578faf from'path';import a5_0x39e5be from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x399979){const _0x5a1031=a5_0x3db3;try{const _0x1d3fe5=_0x399979[_0x5a1031(0x115)](_0x5a1031(0x10a))?_0x399979['slice'](0x7):_0x399979,_0x46d5ca=_0x1d3fe5[_0x5a1031(0x115)]('~/')||_0x1d3fe5==='~'?a5_0x578faf[_0x5a1031(0x119)](a5_0x39e5be['homedir'](),_0x1d3fe5[_0x5a1031(0x116)](0x1)):_0x1d3fe5,_0x3bb172=a5_0x578faf['resolve'](_0x46d5ca),_0x46bead=await a5_0x97da67[_0x5a1031(0x113)](_0x3bb172);return normalizePath(_0x46bead);}catch{return null;}}function formatDirectoryError(_0x25e63f,_0x52fef1,_0x1ff071){const _0xbc7fff=a5_0x3db3;if(_0x1ff071)return _0xbc7fff(0x111)+_0x1ff071+':\x20'+_0x25e63f;const _0x1861ba=_0x52fef1 instanceof Error?_0x52fef1[_0xbc7fff(0x10d)]:String(_0x52fef1);return _0xbc7fff(0x117)+_0x25e63f+_0xbc7fff(0x112)+_0x1861ba;}export async function getValidRootDirectories(_0x59a2cc){const _0x325a32=a5_0x3db3,_0x509a36=[];for(const _0x4560a2 of _0x59a2cc){const _0x4aa09b=await parseRootUri(_0x4560a2[_0x325a32(0x10c)]);if(!_0x4aa09b){logMcpStderr(formatDirectoryError(_0x4560a2[_0x325a32(0x10c)],undefined,_0x325a32(0x11b)));continue;}try{const _0x2dec91=await a5_0x97da67[_0x325a32(0x106)](_0x4aa09b);_0x2dec91[_0x325a32(0x10b)]()?_0x509a36['push'](_0x4aa09b):logMcpStderr(formatDirectoryError(_0x4aa09b,undefined,'non-directory\x20root'));}catch(_0x7b8af5){logMcpStderr(formatDirectoryError(_0x4aa09b,_0x7b8af5));}}return _0x509a36;}
|
package/dist/tool-definitions.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const a6_0x534819=a6_0x36fd;(function(_0x286685,_0x5d3c17){const _0x197518=a6_0x36fd,_0x1afe3b=_0x286685();while(!![]){try{const _0xd6e2dd=parseInt(_0x197518(0x139))/0x1+parseInt(_0x197518(0x13d))/0x2*(-parseInt(_0x197518(0x135))/0x3)+-parseInt(_0x197518(0x138))/0x4+parseInt(_0x197518(0x137))/0x5+parseInt(_0x197518(0x13b))/0x6*(-parseInt(_0x197518(0x136))/0x7)+-parseInt(_0x197518(0x13c))/0x8+parseInt(_0x197518(0x134))/0x9*(parseInt(_0x197518(0x13a))/0xa);if(_0xd6e2dd===_0x5d3c17)break;else _0x1afe3b['push'](_0x1afe3b['shift']());}catch(_0x3a7aa8){_0x1afe3b['push'](_0x1afe3b['shift']());}}}(a6_0x2414,0x21238));function a6_0x36fd(_0x5cb83e,_0x216364){_0x5cb83e=_0x5cb83e-0x133;const _0x24149e=a6_0x2414();let _0x36fdc9=_0x24149e[_0x5cb83e];return _0x36fdc9;}function a6_0x2414(){const _0x4c6e4f=['129290nFevHe','256900kOlxJI','1042632wLbhgB','103522YjNwmX','10WULaqf','42BtnEmr','2074328HvuGDy','2408tELgcD','github_codebase_search','7631973kZYPIM','543VIaCvq'];a6_0x2414=function(){return _0x4c6e4f;};return a6_0x2414();}export const TOOL_NAMES={'EDIT_FILE':'edit_file','CODEBASE_SEARCH':'codebase_search','GITHUB_CODEBASE_SEARCH':a6_0x534819(0x133)};export const ALL_TOOL_NAMES=Object['values'](TOOL_NAMES);export const KNOWN_TOOL_NAMES=new Set(ALL_TOOL_NAMES);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.169",
|
|
4
4
|
"description": "Fast & accurate MCP server with AI-powered file editing and intelligent code search. Prevents context pollution and saves time for a better user experience.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Morph (https://morphllm.com)",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@google/generative-ai": "^0.21.0",
|
|
37
37
|
"@modelcontextprotocol/sdk": "^1.12.3",
|
|
38
|
-
"@morphllm/morphsdk": "0.2.
|
|
38
|
+
"@morphllm/morphsdk": "0.2.167",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|