@morphllm/morphmcp 0.8.168 → 0.8.170
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
|
+
const a0_0x5c9100=a0_0x8fc5;(function(_0x580653,_0x310127){const _0x3bb34e=a0_0x8fc5,_0x35e849=_0x580653();while(!![]){try{const _0x43b5b7=-parseInt(_0x3bb34e(0x1c2))/0x1+parseInt(_0x3bb34e(0x176))/0x2+-parseInt(_0x3bb34e(0x1ca))/0x3+-parseInt(_0x3bb34e(0x209))/0x4*(parseInt(_0x3bb34e(0x24e))/0x5)+parseInt(_0x3bb34e(0x1fa))/0x6*(parseInt(_0x3bb34e(0x1d6))/0x7)+-parseInt(_0x3bb34e(0x1e3))/0x8+parseInt(_0x3bb34e(0x183))/0x9;if(_0x43b5b7===_0x310127)break;else _0x35e849['push'](_0x35e849['shift']());}catch(_0x1658d4){_0x35e849['push'](_0x35e849['shift']());}}}(a0_0xfb7a,0x9f4a7));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_0x17617d from'fs/promises';import a0_0x1b597d from'path';import a0_0x5e54ab 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_0x559a07 from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x51e861){const _0x2225dd=a0_0x8fc5,_0x4e46da=_0x51e861[_0x2225dd(0x132)](a0_0x1b597d[_0x2225dd(0x150)])['filter'](Boolean);if(_0x4e46da[_0x2225dd(0x22a)]<0x2)return null;for(let _0x1bd55a=Math[_0x2225dd(0x20b)](_0x4e46da['length']/0x2);_0x1bd55a>=0x1;_0x1bd55a--){for(let _0x29a589=0x0;_0x29a589<=_0x4e46da[_0x2225dd(0x22a)]-0x2*_0x1bd55a;_0x29a589++){const _0x4cf758=_0x4e46da[_0x2225dd(0x1be)](_0x29a589,_0x29a589+_0x1bd55a),_0xcb71e2=_0x4e46da[_0x2225dd(0x1be)](_0x29a589+_0x1bd55a,_0x29a589+0x2*_0x1bd55a);if(_0x4cf758[_0x2225dd(0x17c)]((_0x699fb0,_0x51fff4)=>_0x699fb0===_0xcb71e2[_0x51fff4])){const _0x2791c1=[..._0x4e46da['slice'](0x0,_0x29a589),..._0x4e46da['slice'](_0x29a589+_0x1bd55a)];return a0_0x1b597d[_0x2225dd(0x150)]+_0x2791c1[_0x2225dd(0x222)](a0_0x1b597d['sep']);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x2204ea=a0_0x8fc5;try{const _0x1496b9=require('../package.json');return _0x1496b9[_0x2204ea(0x180)]??_0x2204ea(0x1a0);}catch(_0x4e983f){return logMcpStderr(_0x2204ea(0x157),_0x4e983f),_0x2204ea(0x1a0);}}function printHelp(){const _0x1bd803=a0_0x8fc5;console[_0x1bd803(0x1f5)](_0x1bd803(0x244)+getPackageVersion()),console['log'](_0x1bd803(0x1b4)),console[_0x1bd803(0x1f5)](_0x1bd803(0x1bf)),console[_0x1bd803(0x1f5)](_0x1bd803(0x1ef)),console[_0x1bd803(0x1f5)](_0x1bd803(0x1ad)),console[_0x1bd803(0x1f5)](_0x1bd803(0x174)),console[_0x1bd803(0x1f5)](_0x1bd803(0x12a)),console[_0x1bd803(0x1f5)](_0x1bd803(0x1f6)),console[_0x1bd803(0x1f5)](_0x1bd803(0x224));}const cliArgs=process[a0_0x5c9100(0x1df)][a0_0x5c9100(0x1be)](0x2),VERSION_FLAGS=new Set(['--version','-v','-V']),HELP_FLAGS=new Set([a0_0x5c9100(0x1db),'-h']);cliArgs[a0_0x5c9100(0x21f)](_0x3b31bd=>VERSION_FLAGS[a0_0x5c9100(0x178)](_0x3b31bd))&&(console[a0_0x5c9100(0x1f5)](a0_0x5c9100(0x244)+getPackageVersion()),process[a0_0x5c9100(0x149)](0x0));cliArgs[a0_0x5c9100(0x21f)](_0x1a0955=>HELP_FLAGS[a0_0x5c9100(0x178)](_0x1a0955))&&(printHelp(),process[a0_0x5c9100(0x149)](0x0));function getCliArg(_0x17ec8b){const _0x3c8307=a0_0x5c9100;for(let _0x49e029=0x0;_0x49e029<cliArgs['length'];_0x49e029++){const _0x3d8d6f=cliArgs[_0x49e029];if(_0x3d8d6f[_0x3c8307(0x23a)]('--'+_0x17ec8b+'='))return _0x3d8d6f[_0x3c8307(0x1be)](('--'+_0x17ec8b+'=')[_0x3c8307(0x22a)]);if(_0x3d8d6f==='--'+_0x17ec8b&&_0x49e029+0x1<cliArgs[_0x3c8307(0x22a)])return cliArgs[_0x49e029+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x5c9100(0x22a)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x5c9100(0x178)](arg)||HELP_FLAGS[a0_0x5c9100(0x178)](arg))continue;if(arg['startsWith'](a0_0x5c9100(0x21b)))continue;if(arg===a0_0x5c9100(0x186)){i++;continue;}args[a0_0x5c9100(0x1bb)](arg);}const WORKSPACE_ROOT=process['env'][a0_0x5c9100(0x1e8)]||process['env'][a0_0x5c9100(0x1da)]||process['cwd'](),ENABLE_WORKSPACE_MODE=process[a0_0x5c9100(0x1c7)]['ENABLE_WORKSPACE_MODE']!=='false',MORPH_API_KEY=getCliArg('api-key')??process['env']['MORPH_API_KEY'],MORPH_API_URL=process[a0_0x5c9100(0x1c7)][a0_0x5c9100(0x14a)],MORPH_LARGE_APPLY=process[a0_0x5c9100(0x1c7)][a0_0x5c9100(0x1ee)]!==a0_0x5c9100(0x24a),MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0x5c9100(0x1c3)]?parseInt(process['env'][a0_0x5c9100(0x1c3)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x5c9100(0x1c7)][a0_0x5c9100(0x140)]?new Set(process[a0_0x5c9100(0x1c7)][a0_0x5c9100(0x140)]['split'](',')[a0_0x5c9100(0x215)](_0x662758=>_0x662758['trim']())['filter'](_0x40d56c=>_0x40d56c[a0_0x5c9100(0x22a)]>0x0)):DEFAULT_DISABLED_TOOLS;function a0_0xfb7a(){const _0x12082a=['\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','completed_with_file_errors','WarpGrepError','errors','\x20-\x20','metadata','parse','push','grep','Unknown\x20tool:\x20','slice','\x0aOptions:','describe','File\x20read\x20error:','736827EjQPPl','MORPH_WARP_GREP_TIMEOUT','instruction','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES\x20-\x20USE\x20THIS\x20AGGRESSIVELY**\x0a\x0a','finish','env','files','error','2246532ByHolO','message','debug','Disabled\x20tools:\x20','ReadError','morph-',',\x20removed\x20','Fatal\x20error\x20running\x20server:','lines','safeParse','grep_search','Failed\x20to\x20request\x20roots\x20from\x20client:','35LybPtG','Error\x20accessing\x20directory\x20','\x22.\x20Known\x20tools:\x20','CODEBASE_SEARCH','PWD','--help','0.2.0','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','argv','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','FileNotFound','codebase_search','5851408JWaxJy','response','\x20error(s)','-\x20Efficient:\x20Only\x20shows\x20changed\x20lines\x20in\x20output\x0a\x0a','ms.\x20Success:\x20','WORKSPACE_ROOT','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','github_url','description','Warning:\x20','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','MORPH_LARGE_APPLY','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','all','\x22>\x0aError\x20reading\x20file:\x20','linesAdded','tool_calls','\x20chars)','log','\x20\x20morph-mcp','content','Morph\x20Edit\x20','setRequestHandler','223206dCYdiM','SubToolError','toLowerCase','UnknownError','Preview\x20changes\x20without\x20applying\x20them.',',\x20modified\x20','path_validation_failed','grep\x20\x27','setNotificationHandler','MCP','realpath','morph-mcp','LocalRipgrepProvider','-\x20Listed\x20directory\x20`','-\x20Grepped\x20\x27','4CgAftd','path_validation_resolved','floor','Error:\x20','post','list_directory\x20','name','file_read_failed','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','<file\x20path=\x22','completed','Max\x20results\x20to\x20return','map','listRoots','search_string','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.','.git','inputSchema','--api-key=','RipgrepError','file_read_complete','messages','some','dirname','payload','join','warn','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','data','sk-','warp_grep_start','default','github_codebase_search','length','EDIT_FILE','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','enum','GITHUB_CODEBASE_SEARCH','-\x20Prefer\x20this\x20tool\x20over\x20the\x20legacy\x20Edit\x20tool\x0a','path','array','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','package.json','turns','node_modules','getClientCapabilities','tool','\x27\x20in\x20`','Use\x20this\x20tool\x20to\x20efficiently\x20edit\x20existing\x20files,\x20by\x20smartly\x20showing\x20only\x20the\x20changed\x20lines.\x0a\x0a','startsWith','isArray','.\x20Changes:\x20','\x20is\x20not\x20a\x20directory','Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','stack','morph-v3-large','compaction_failed','resolve','@morphllm/morphmcp\x20','read','warp_grep_complete','Morph\x20FastApply\x20failed\x20without\x20error\x20message','Here\x20is\x20the\x20content\x20of\x20files:\x0a','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','false','Tool\x20','-\x20Preserve\x20exact\x20indentation\x20of\x20the\x20final\x20code\x0a','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.','1300495QCNLXw','github_search_start','match','toISOString','TimeoutError','indexOf','oninitialized','code','ms:','timeout','Unknown\x20error','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','\x0aExamples:','tool_call_id','requiresApiKey','provider_created','searchGitHub','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','timed\x20out','includes','split','API\x20error\x20(auth/rate-limit)','composer.json','string','Bearer\x20','glob','list_directory','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','Warning:\x20Workspace\x20fallback\x20failed:\x20','pattern','-\x20Extremely\x20fast:\x2010,500+\x20tokens/sec\x20for\x20edits\x0a','⚡\x20FAST\x20&\x20ACCURATE:\x20This\x20tool\x20prevents\x20context\x20pollution\x20and\x20saves\x20time\x20by\x20editing\x20files\x20efficiently\x20without\x20reading\x20entire\x20files\x20into\x20context.\x0a','Failed\x20to\x20read\x20file:\x20','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.','DISABLED_TOOLS','object','Invalid\x20arguments:\x20','morph-v3-fast','dryRun','constructor','morph-warp-grep-v2.1','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','filter','exit','MORPH_API_URL','-\x20Be\x20as\x20length\x20efficient\x20as\x20possible\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','Parent\x20directory\x20does\x20not\x20exist:\x20','unknown\x20error','Repository\x20identifier','sep','[could\x20not\x20read\x20file:\x20','substring','.vscode','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','runWarpGrep_call','BinaryFile','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','-\x20Prevents\x20context\x20pollution:\x20No\x20need\x20to\x20read\x20entire\x20files\x0a','added\x20','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','path_validation_start','-\x20Option\x201:\x20Show\x201-2\x20context\x20lines\x20above\x20and\x20below,\x20omit\x20deleted\x20code\x0a','tool_call_complete','roots','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','tool_call_error','ENOENT','branch','number','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','PathError','role','now','-\x20High\x20accuracy:\x2098%\x20success\x20rate\x0a','Error\x20running\x20fast\x20context\x20search:\x20','Workspace\x20mode\x20enabled:\x20Using\x20','changes','text','context','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.','application/json','-\x20Batch\x20all\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','-\x20Read\x20file\x20`','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','WarpGrep\x20sub-tool\x20errors:\x20','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','-\x20Glob\x20search\x20`','488270ppQZRC','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','has','status','tool_call_received','command','every','success','utf-8','Rules:\x0a','version','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','\x0a</file>','24295599pVXmBE','timings','Morph\x20Edit\x20Preview','--api-key','ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20blocks\x20of\x20unchanged\x20code.\x0a','linesModified','-\x20Include\x20just\x20enough\x20context\x20to\x20locate\x20each\x20edit\x20precisely\x0a','connect','instructions','-\x20Option\x202:\x20Mark\x20explicitly:\x20//\x20removed\x20BlockName\x0a\x0a','api_request_start','normalize','Cargo.toml','terminationReason','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','edit_file','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.','function','boolean','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','.\x20Path:\x20','repo_path','catch','linesRemoved','code_edit','Created\x20File','\x20valid\x20directories','🎯\x20USE\x20THIS\x20TOOL\x20PROACTIVELY\x20for\x20all\x20file\x20edits\x20to\x20ensure\x20a\x20positive\x20user\x20experience.\x0a\x0a','[github_codebase_search]\x20Failed\x20in\x20','unknown','For\x20deletions:\x0a','❌\x20Morph\x20Edit\x20Failed:\x20','source','optional','ToolException','SymlinkError','\x0a...\x20(truncated,\x20total:\x20','basename','assistant','min','read\x20','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','Relevant\x20context\x20found:','\x22>\x0a','completionId','etimedout','mcp-filesystem','readFile'];a0_0xfb7a=function(){return _0x12082a;};return a0_0xfb7a();}if(DISABLED_TOOLS['size']>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x5c9100(0x178)](tool)&&console[a0_0x5c9100(0x1c9)](a0_0x5c9100(0x147)+tool+a0_0x5c9100(0x1d8)+[...KNOWN_TOOL_NAMES][a0_0x5c9100(0x222)](',\x20'));}console[a0_0x5c9100(0x1c9)](a0_0x5c9100(0x1cd)+[...DISABLED_TOOLS][a0_0x5c9100(0x222)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x5c9100(0x23a)]('sk-')&&!MORPH_API_KEY['startsWith']('morph-')&&logMcpStderr(a0_0x5c9100(0x1de));async function reportMorphError(_0x113893){const _0x1d0b41=a0_0x5c9100;try{await a0_0x559a07[_0x1d0b41(0x20d)]('https://morphllm.com/api/error-report',{..._0x113893,'timestamp':new Date()[_0x1d0b41(0x251)](),'source':_0x113893[_0x1d0b41(0x1a3)]||_0x1d0b41(0x1b2),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x113893[_0x1d0b41(0x16d)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x1d0b41(0x16f),'Authorization':_0x1d0b41(0x136)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x13d8b8,_0xffd708){const _0x3c35fb=a0_0x5c9100;if(_0x13d8b8&&typeof _0x13d8b8==='object'&&_0x3c35fb(0x179)in _0x13d8b8)return _0x13d8b8[_0x3c35fb(0x179)];if(_0x13d8b8&&typeof _0x13d8b8===_0x3c35fb(0x141)&&_0x3c35fb(0x1e4)in _0x13d8b8)return _0x13d8b8[_0x3c35fb(0x1e4)]?.[_0x3c35fb(0x179)];const _0x539cce=_0xffd708['match'](/\b(401|429)\b/);return _0x539cce?parseInt(_0x539cce[0x1],0xa):null;}function handleMorphAPIError(_0x411295){const _0x2de534=a0_0x5c9100,_0x50936c=_0x411295 instanceof Error?_0x411295[_0x2de534(0x1cb)]:String(_0x411295),_0xde2236=extractStatusCode(_0x411295,_0x50936c);switch(_0xde2236){case 0x191:return{'content':[{'type':'text','text':_0x2de534(0x13f)}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x2de534(0x16c),'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['length']===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x5c9100(0x1e9)),logMcpStderr('Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:'),logMcpStderr(a0_0x5c9100(0x232)),logMcpStderr(a0_0x5c9100(0x164)),logMcpStderr('\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)'),logMcpStderr(a0_0x5c9100(0x249)));function a0_0x8fc5(_0x38bc7b,_0x202c6a){_0x38bc7b=_0x38bc7b-0x123;const _0xfb7a4f=a0_0xfb7a();let _0x8fc508=_0xfb7a4f[_0x38bc7b];return _0x8fc508;}function normalizePath(_0x119ba6){const _0x4e6c2c=a0_0x5c9100;return a0_0x1b597d[_0x4e6c2c(0x18e)](_0x119ba6);}function expandHome(_0x3da590){const _0x446b7d=a0_0x5c9100;if(_0x3da590[_0x446b7d(0x23a)]('~/')||_0x3da590==='~')return a0_0x1b597d[_0x446b7d(0x222)](a0_0x5e54ab['homedir'](),_0x3da590['slice'](0x1));return _0x3da590;}let allowedDirectories=await Promise[a0_0x5c9100(0x1f0)](args['map'](async _0x548516=>{const _0x487d2d=a0_0x5c9100,_0x8972d8=expandHome(_0x548516),_0x25877f=a0_0x1b597d[_0x487d2d(0x243)](_0x8972d8);try{const _0x3cb41f=await a0_0x17617d[_0x487d2d(0x204)](_0x25877f);return normalizePath(_0x3cb41f);}catch(_0x4f4c57){return normalizePath(_0x25877f);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x5c9100(0x22a)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x5c9100(0x1bb)](workspaceDir),logMcpStderr(a0_0x5c9100(0x16a)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x5a5cba){logMcpStderr(a0_0x5c9100(0x23f)+a0_0x5a5cba);}async function detectWorkspaceRoot(_0x42aaba){const _0xf2cfdc=a0_0x5c9100;let _0x751e7c=a0_0x1b597d[_0xf2cfdc(0x243)](_0x42aaba);const _0xdec7d4=[_0xf2cfdc(0x219),_0xf2cfdc(0x153),_0xf2cfdc(0x233),_0xf2cfdc(0x18f),'pyproject.toml','go.mod','.cursor','tsconfig.json',_0xf2cfdc(0x134)];while(_0x751e7c!==a0_0x1b597d[_0xf2cfdc(0x220)](_0x751e7c)){for(const _0x234f7e of _0xdec7d4){const _0x2f1ea1=a0_0x1b597d[_0xf2cfdc(0x222)](_0x751e7c,_0x234f7e);try{return await a0_0x17617d['access'](_0x2f1ea1),normalizePath(_0x751e7c);}catch{}}_0x751e7c=a0_0x1b597d[_0xf2cfdc(0x220)](_0x751e7c);}return normalizePath(_0x42aaba);}await Promise[a0_0x5c9100(0x1f0)](args['map'](async _0x43b716=>{const _0x27e7ff=a0_0x5c9100;try{const _0x1e6ad0=await a0_0x17617d['stat'](expandHome(_0x43b716));!_0x1e6ad0['isDirectory']()&&(logMcpStderr(_0x27e7ff(0x20c)+_0x43b716+_0x27e7ff(0x23d)),process[_0x27e7ff(0x149)](0x1));}catch(_0x566c32){logMcpStderr(_0x27e7ff(0x1d7)+_0x43b716+':',_0x566c32),process['exit'](0x1);}}));async function validatePath(_0x30fa8a){const _0x43baba=a0_0x5c9100,_0x3d6367=expandHome(_0x30fa8a),_0x4d85a1=a0_0x1b597d[_0x43baba(0x243)](_0x3d6367);logger[_0x43baba(0x1cc)](_0x43baba(0x203),_0x43baba(0x15b),{'raw_path':_0x30fa8a,'absolute':_0x4d85a1});try{const _0x59d5e9=await a0_0x17617d[_0x43baba(0x204)](_0x4d85a1);return logger[_0x43baba(0x1cc)]('MCP',_0x43baba(0x20a),{'resolved':_0x59d5e9,'symlink':_0x59d5e9!==_0x4d85a1}),_0x59d5e9;}catch(_0x37ab66){if(_0x37ab66[_0x43baba(0x125)]==='ENOENT'){const _0x2fc71d=a0_0x1b597d['dirname'](_0x4d85a1);try{const _0x3375a9=await a0_0x17617d[_0x43baba(0x204)](_0x2fc71d),_0x3091e8=a0_0x1b597d[_0x43baba(0x222)](_0x3375a9,a0_0x1b597d['basename'](_0x4d85a1));return logger[_0x43baba(0x1cc)](_0x43baba(0x203),'path_validation_resolved',{'resolved':_0x3091e8,'new_file':!![]}),_0x3091e8;}catch{logger['error'](_0x43baba(0x203),_0x43baba(0x200),{'raw_path':_0x30fa8a,'error':_0x43baba(0x14d)+_0x2fc71d});throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x2fc71d);}}logger[_0x43baba(0x1c9)](_0x43baba(0x203),'path_validation_failed',{'raw_path':_0x30fa8a,'error':_0x37ab66['message']});throw _0x37ab66;}}const MorphEditFileArgsSchema=z[a0_0x5c9100(0x141)]({'path':z['string'](),'code_edit':z[a0_0x5c9100(0x135)]()[a0_0x5c9100(0x1c0)]('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z[a0_0x5c9100(0x135)]()[a0_0x5c9100(0x1c0)]('A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.'),'dryRun':z[a0_0x5c9100(0x195)]()['default'](![])[a0_0x5c9100(0x1c0)](a0_0x5c9100(0x1fe))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x5c9100(0x193),WarpGrepArgsSchema=z['object']({'search_string':z[a0_0x5c9100(0x135)]()[a0_0x5c9100(0x1c0)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x5c9100(0x135)]()[a0_0x5c9100(0x1c0)](a0_0x5c9100(0x22c)),'search_type':z[a0_0x5c9100(0x22d)](['default','node_modules'])['optional']()[a0_0x5c9100(0x1c0)](a0_0x5c9100(0x191))}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z['string']()[a0_0x5c9100(0x1c0)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x5c9100(0x135)]()[a0_0x5c9100(0x1a4)]()[a0_0x5c9100(0x1c0)](a0_0x5c9100(0x24d)),'owner_repo':z[a0_0x5c9100(0x135)]()[a0_0x5c9100(0x1a4)]()[a0_0x5c9100(0x1c0)](a0_0x5c9100(0x196)),'branch':z[a0_0x5c9100(0x135)]()[a0_0x5c9100(0x1a4)]()[a0_0x5c9100(0x1c0)](a0_0x5c9100(0x1ed))}),CodebaseSearchArgsSchema=z[a0_0x5c9100(0x141)]({'query':z[a0_0x5c9100(0x135)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x5c9100(0x135)]()[a0_0x5c9100(0x1c0)](a0_0x5c9100(0x14f)),'branch':z[a0_0x5c9100(0x135)]()[a0_0x5c9100(0x1a4)]()['describe']('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x5c9100(0x135)]()[a0_0x5c9100(0x1a4)]()[a0_0x5c9100(0x1c0)]('Specific\x20commit\x20hash\x20to\x20search'),'targetDirectories':z[a0_0x5c9100(0x231)](z['string']())['default']([])['describe'](a0_0x5c9100(0x1dd)),'limit':z[a0_0x5c9100(0x163)]()[a0_0x5c9100(0x1a4)]()[a0_0x5c9100(0x228)](0xa)['describe'](a0_0x5c9100(0x214))}),server=new Server({'name':a0_0x5c9100(0x205),'version':a0_0x5c9100(0x1dc)},{'capabilities':{'tools':{}}});server[a0_0x5c9100(0x1f9)](ListToolsRequestSchema,async()=>{const _0x43c298=a0_0x5c9100,_0x2ef1ac=[{'name':TOOL_NAMES[_0x43c298(0x22b)],'description':_0x43c298(0x1c5)+_0x43c298(0x13d)+_0x43c298(0x19e)+'IMPORTANT:\x20The\x20code_edit\x20parameter\x20MUST\x20use\x20\x27//\x20...\x20existing\x20code\x20...\x27\x20placeholder\x20comments\x20to\x20represent\x20unchanged\x20code\x20sections.\x0a\x0a'+'Benefits:\x0a'+_0x43c298(0x13c)+_0x43c298(0x158)+_0x43c298(0x168)+_0x43c298(0x1e6)+_0x43c298(0x239)+_0x43c298(0x187)+'Add\x20descriptive\x20hints\x20when\x20helpful:\x20//\x20...\x20keep\x20auth\x20logic\x20...\x0a\x0a'+_0x43c298(0x1a1)+_0x43c298(0x15c)+_0x43c298(0x18c)+_0x43c298(0x17f)+_0x43c298(0x24c)+_0x43c298(0x189)+_0x43c298(0x14b)+_0x43c298(0x170)+_0x43c298(0x22f)+'-\x20If\x20dealing\x20with\x20a\x20file\x20over\x202000\x20lines,\x20use\x20the\x20legacy\x20search\x20and\x20replace\x20tools.\x0a'+_0x43c298(0x181),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x43c298(0x1d9)],'description':_0x43c298(0x14c)+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x43c298(0x177)+'You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20'+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0xc815f0=_0x2ef1ac[_0x43c298(0x148)](_0x5389d1=>{const _0x3bce9f=_0x43c298;if(DISABLED_TOOLS[_0x3bce9f(0x178)](_0x5389d1[_0x3bce9f(0x20f)]))return console[_0x3bce9f(0x1c9)](_0x3bce9f(0x24b)+_0x5389d1[_0x3bce9f(0x20f)]+'\x20disabled\x20via\x20DISABLED_TOOLS'),![];if(_0x3bce9f(0x12c)in _0x5389d1&&_0x5389d1[_0x3bce9f(0x12c)]&&!MORPH_API_KEY)return logMcpStderr(_0x3bce9f(0x1ec)+_0x5389d1[_0x3bce9f(0x20f)]+_0x3bce9f(0x15a)),![];return!![];});return{'tools':_0xc815f0[_0x43c298(0x215)](_0x357ce9=>({'name':_0x357ce9[_0x43c298(0x20f)],'description':_0x357ce9[_0x43c298(0x1eb)],'inputSchema':_0x357ce9[_0x43c298(0x21a)]}))};}),server[a0_0x5c9100(0x1f9)](CallToolRequestSchema,async _0x1f3433=>{const _0x5dda0c=a0_0x5c9100,{name:_0xde66b7,arguments:_0x51f0de}=_0x1f3433['params'],_0x22e089=Date['now']();logger[_0x5dda0c(0x1cc)](_0x5dda0c(0x203),_0x5dda0c(0x17a),{'tool':_0xde66b7,'args':_0xde66b7==='edit_file'?{'path':_0x51f0de?.[_0x5dda0c(0x230)],'instruction':_0x51f0de?.[_0x5dda0c(0x1c4)]||_0x51f0de?.[_0x5dda0c(0x18b)],'dryRun':_0x51f0de?.[_0x5dda0c(0x144)]}:_0x51f0de});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x5dda0c(0x16c),'text':'No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.'}],'isError':!![]};if(!MORPH_API_KEY[_0x5dda0c(0x23a)](_0x5dda0c(0x226))&&!MORPH_API_KEY['startsWith'](_0x5dda0c(0x1cf)))return{'content':[{'type':'text','text':_0x5dda0c(0x218)}],'isError':!![]};if(DISABLED_TOOLS['has'](_0xde66b7))return{'content':[{'type':_0x5dda0c(0x16c),'text':'Tool\x20\x22'+_0xde66b7+_0x5dda0c(0x1ac)}],'isError':![]};switch(_0xde66b7){case TOOL_NAMES[_0x5dda0c(0x22b)]:{let _0x536a95=_0x51f0de;_0x536a95&&typeof _0x536a95===_0x5dda0c(0x141)&&('target_file'in _0x536a95&&!('path'in _0x536a95)&&(_0x536a95={..._0x536a95,'path':_0x536a95['target_file'],'target_file':undefined}),'instructions'in _0x536a95&&!(_0x5dda0c(0x1c4)in _0x536a95)&&(_0x536a95={..._0x536a95,'instruction':_0x536a95[_0x5dda0c(0x18b)],'instructions':undefined}));const _0x313d99=MorphEditFileArgsSchema[_0x5dda0c(0x1d3)](_0x536a95);if(!_0x313d99['success'])throw new Error(_0x5dda0c(0x15f)+_0x313d99[_0x5dda0c(0x1c9)]);const _0x88513e=await validatePath(_0x313d99[_0x5dda0c(0x225)]['path']);let _0x4404a9=null,_0x4e365c=!![],_0x4740af=null;try{_0x4404a9=await a0_0x17617d['readFile'](_0x88513e,_0x5dda0c(0x17e)),logger[_0x5dda0c(0x1cc)](_0x5dda0c(0x203),_0x5dda0c(0x21d),{'path':_0x88513e,'size_bytes':_0x4404a9['length']});}catch(_0x3884b1){const _0x16f2e6=_0x3884b1['code'];_0x16f2e6===_0x5dda0c(0x161)?(_0x4e365c=![],_0x4404a9='',logger['debug']('MCP','file_read_complete',{'path':_0x88513e,'exists':![]})):(_0x4740af=_0x5dda0c(0x13e)+(_0x16f2e6||'unknown')+_0x5dda0c(0x1b8)+(_0x3884b1 instanceof Error?_0x3884b1[_0x5dda0c(0x1cb)]:String(_0x3884b1)),logger[_0x5dda0c(0x1c9)](_0x5dda0c(0x203),_0x5dda0c(0x210),{'path':_0x88513e,'error':_0x4740af}),logMcpStderr('Warning:\x20'+_0x4740af));}let _0x7d3e6e;try{const _0x3cd08a=MORPH_API_KEY;if(!_0x3cd08a)throw new Error(_0x5dda0c(0x154));const _0x4f71d5=a0_0x1b597d[_0x5dda0c(0x220)](_0x88513e),_0x266a50=a0_0x1b597d[_0x5dda0c(0x1a8)](_0x88513e);logger[_0x5dda0c(0x1cc)]('MCP',_0x5dda0c(0x18d),{'model':_0x5dda0c(0x143),'path':_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x230)],'instruction_len':_0x313d99['data']['instruction']['length'],'code_edit_len':_0x313d99[_0x5dda0c(0x225)]['code_edit']['length'],'original_code_len':_0x4404a9?.['length']??0x0,'dry_run':_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x144)]});const _0x3aadcd=Date[_0x5dda0c(0x167)](),_0x3d00f7=await executeEditFile({'target_filepath':_0x266a50,'code_edit':_0x313d99['data'][_0x5dda0c(0x19b)],'instruction':_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x1c4)]},{'morphApiKey':_0x3cd08a,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x4f71d5,'autoWrite':!_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x144)],'generateUdiff':![],'debug':![]}),_0x3791af=Date[_0x5dda0c(0x167)]()-_0x3aadcd;_0x7d3e6e=_0x3d00f7[_0x5dda0c(0x1b0)];if(!_0x3d00f7[_0x5dda0c(0x17d)])throw new Error(_0x3d00f7[_0x5dda0c(0x1c9)]||_0x5dda0c(0x247));const _0x2cb330=_0x3d00f7[_0x5dda0c(0x16b)],_0x25ce8e=_0x5dda0c(0x159)+_0x2cb330[_0x5dda0c(0x1f2)]+_0x5dda0c(0x1d0)+_0x2cb330[_0x5dda0c(0x19a)]+_0x5dda0c(0x1ff)+_0x2cb330[_0x5dda0c(0x188)];logger['debug'](_0x5dda0c(0x203),_0x5dda0c(0x15d),{'tool':_0x5dda0c(0x192),'success':!![],'latency_ms':Date[_0x5dda0c(0x167)]()-_0x22e089,'edit_latency_ms':_0x3791af,'changes':{'added':_0x2cb330[_0x5dda0c(0x1f2)],'removed':_0x2cb330['linesRemoved'],'modified':_0x2cb330[_0x5dda0c(0x188)]},'completion_id':_0x7d3e6e});if(_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x144)])return{'content':[{'type':_0x5dda0c(0x16c),'text':_0x5dda0c(0x185)+(_0x4e365c?'':'\x20(new\x20file)')+':\x20'+_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x1c4)]+_0x5dda0c(0x23c)+_0x25ce8e+_0x5dda0c(0x197)+_0x313d99[_0x5dda0c(0x225)]['path']+'.'}]};return{'content':[{'type':'text','text':_0x5dda0c(0x1f8)+(_0x4e365c?'Applied':_0x5dda0c(0x19c))+':\x20'+_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x1c4)]+'.\x20Changes:\x20'+_0x25ce8e+_0x5dda0c(0x197)+_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x230)]+'.'}]};}catch(_0x124792){const _0x4f0e86=handleMorphAPIError(_0x124792);if(_0x4f0e86)return logger['error'](_0x5dda0c(0x203),_0x5dda0c(0x160),{'tool':_0x5dda0c(0x192),'error':_0x5dda0c(0x133),'latency_ms':Date[_0x5dda0c(0x167)]()-_0x22e089}),_0x4f0e86;const _0x51d28c=_0x124792 instanceof Error?_0x124792[_0x5dda0c(0x1cb)]:String(_0x124792);return logger[_0x5dda0c(0x1c9)]('MCP',_0x5dda0c(0x160),{'tool':_0x5dda0c(0x192),'error':_0x51d28c,'path':_0x313d99['data'][_0x5dda0c(0x230)],'validated_path':_0x88513e,'latency_ms':Date[_0x5dda0c(0x167)]()-_0x22e089,'stack':_0x124792 instanceof Error?_0x124792[_0x5dda0c(0x240)]:undefined}),reportMorphError({'error_message':_0x51d28c,'error_type':_0x124792 instanceof Error?_0x124792[_0x5dda0c(0x145)][_0x5dda0c(0x20f)]:_0x5dda0c(0x1fd),'context':{'tool':_0x5dda0c(0x192),'completion_id':_0x7d3e6e,'file_path':_0x313d99['data'][_0x5dda0c(0x230)],'validated_path':_0x88513e,'instruction':_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x1c4)],'model':MORPH_LARGE_APPLY?_0x5dda0c(0x241):'morph-v3-fast','dry_run':_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x144)],'file_exists':_0x4e365c,'file_read_error':_0x4740af,'file_readable':_0x4404a9!==null,'request_content':{'path':_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x230)],'code_edit':_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x19b)],'instruction':_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x1c4)],'original_code':_0x4404a9!==null?_0x4404a9[_0x5dda0c(0x22a)]>0xc350?_0x4404a9[_0x5dda0c(0x152)](0x0,0xc350)+_0x5dda0c(0x1a7)+_0x4404a9[_0x5dda0c(0x22a)]+_0x5dda0c(0x1f4):_0x4404a9:_0x5dda0c(0x151)+(_0x4740af||_0x5dda0c(0x14e))+']','original_code_length':_0x4404a9?.[_0x5dda0c(0x22a)]??0x0,'model':MORPH_LARGE_APPLY?_0x5dda0c(0x241):'morph-v3-fast','dry_run':_0x313d99[_0x5dda0c(0x225)][_0x5dda0c(0x144)]}},'stack_trace':_0x124792 instanceof Error?_0x124792[_0x5dda0c(0x240)]:undefined,'source':_0x5dda0c(0x1b2)})['catch'](()=>{}),{'content':[{'type':_0x5dda0c(0x16c),'text':_0x5dda0c(0x1a2)+_0x51d28c}],'isError':!![]};}}case TOOL_NAMES['CODEBASE_SEARCH']:{const _0x547322=WarpGrepArgsSchema[_0x5dda0c(0x1d3)](_0x51f0de);if(!_0x547322[_0x5dda0c(0x17d)])return{'content':[{'type':_0x5dda0c(0x16c),'text':'Invalid\x20arguments:\x20'+_0x547322[_0x5dda0c(0x1c9)]}],'isError':!![]};const _0x1a7867=_0x5b8b7c=>{const _0x50a8e8=_0x5dda0c,_0x396781=[];for(const _0x574042 of _0x5b8b7c||[]){if(_0x574042[_0x50a8e8(0x166)]===_0x50a8e8(0x1a9)&&Array[_0x50a8e8(0x23b)](_0x574042['tool_calls']))for(const _0x2f5e23 of _0x574042[_0x50a8e8(0x1f3)]){try{const _0x10faf4=_0x2f5e23['function']?.[_0x50a8e8(0x20f)],_0x169f86=JSON[_0x50a8e8(0x1ba)](_0x2f5e23['function']?.['arguments']||'{}');if(_0x10faf4===_0x50a8e8(0x1d4))_0x396781['push'](_0x50a8e8(0x201)+_0x169f86[_0x50a8e8(0x13b)]+'\x27\x20'+(_0x169f86[_0x50a8e8(0x230)]||'.'));else{if(_0x10faf4===_0x50a8e8(0x245))_0x396781[_0x50a8e8(0x1bb)](_0x50a8e8(0x1ab)+_0x169f86['path']);else{if(_0x10faf4===_0x50a8e8(0x138))_0x396781[_0x50a8e8(0x1bb)](_0x50a8e8(0x20e)+(_0x169f86['command']||'.'));else{if(_0x10faf4===_0x50a8e8(0x137))_0x396781[_0x50a8e8(0x1bb)]('glob\x20\x27'+_0x169f86[_0x50a8e8(0x13b)]+'\x27\x20'+(_0x169f86[_0x50a8e8(0x230)]||'.'));else _0x10faf4===_0x50a8e8(0x1c6)&&_0x396781[_0x50a8e8(0x1bb)](_0x50a8e8(0x1c6));}}}}catch{}}}return _0x396781;},_0x42bc16=_0x15e544=>{const _0x2a39e4=_0x5dda0c,_0x41f010=[];if(!_0x15e544||!Array[_0x2a39e4(0x23b)](_0x15e544))return _0x41f010;const _0x30beea=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x2a39e4(0x1e1),'tool':_0x2a39e4(0x245)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x2a39e4(0x165),'tool':_0x2a39e4(0x245)},{'pattern':/\[READ ERROR\]/,'error_type':'ReadError','tool':_0x2a39e4(0x245)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x2a39e4(0x156),'tool':_0x2a39e4(0x245)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x2a39e4(0x21c),'tool':'grep'},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':'RipgrepNotAvailable','tool':_0x2a39e4(0x1bc)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x2a39e4(0x156),'tool':_0x2a39e4(0x245)},{'pattern':/\[SYMLINK\]/,'error_type':'SymlinkError','tool':'read'},{'pattern':/not a text file/,'error_type':_0x2a39e4(0x156),'tool':_0x2a39e4(0x245)},{'pattern':/symbolic link/,'error_type':_0x2a39e4(0x1a6),'tool':_0x2a39e4(0x245)},{'pattern':/Error reading file:/,'error_type':_0x2a39e4(0x1ce),'tool':_0x2a39e4(0x245)},{'pattern':/status="error"/,'error_type':_0x2a39e4(0x1a5),'tool':_0x2a39e4(0x1a0)}];let _0x500acf=0x0;for(const _0x2d45b6 of _0x15e544){_0x2d45b6[_0x2a39e4(0x166)]==='assistant'&&Array[_0x2a39e4(0x23b)](_0x2d45b6[_0x2a39e4(0x1f3)])&&_0x500acf++;const _0x413bcc=_0x2d45b6['content'];if((_0x2d45b6[_0x2a39e4(0x166)]===_0x2a39e4(0x237)||_0x2d45b6['role']==='user')&&_0x413bcc&&typeof _0x413bcc===_0x2a39e4(0x135))for(const {pattern:_0x586c67,error_type:_0x24a40d,tool:_0x35effc}of _0x30beea){const _0x7a5653=_0x413bcc[_0x2a39e4(0x250)](new RegExp(_0x586c67[_0x2a39e4(0x1a3)],'g'));if(_0x7a5653)for(const _0xfb113d of _0x7a5653){const _0x5b57ef=_0x413bcc[_0x2a39e4(0x123)](_0xfb113d),_0x161373=_0x413bcc[_0x2a39e4(0x152)](_0x5b57ef,Math[_0x2a39e4(0x1aa)](_0x5b57ef+0xc8,_0x413bcc[_0x2a39e4(0x22a)]));_0x41f010['push']({'tool':_0x35effc,'error_type':_0x24a40d,'error_message':_0x161373[_0x2a39e4(0x132)]('\x0a')[0x0],'turn':_0x500acf});}}}return _0x41f010;};try{const _0x20bba4=a0_0x1b597d[_0x5dda0c(0x243)](_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x198)]),_0x445fa7=_0x547322[_0x5dda0c(0x225)]['search_type'],_0x8d7f4f=_0x445fa7===_0x5dda0c(0x235)?{'allowNames':[_0x5dda0c(0x235)]}:undefined,_0x1c719b=new LocalRipgrepProvider(_0x20bba4,undefined,_0x8d7f4f);logger[_0x5dda0c(0x1cc)](_0x5dda0c(0x203),_0x5dda0c(0x12d),{'type':_0x5dda0c(0x206),'repo_root':_0x20bba4,'search_type':_0x445fa7||_0x5dda0c(0x228)}),logger[_0x5dda0c(0x1cc)]('MCP',_0x5dda0c(0x227),{'query':_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x217)],'repo_root':_0x20bba4,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x5ed3c6=Date[_0x5dda0c(0x167)](),_0x17f073=await runWarpGrep({'searchTerm':_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x217)],'repoRoot':_0x20bba4,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x1c719b,'search_type':_0x445fa7}),_0x3fe47a=Date[_0x5dda0c(0x167)]()-_0x5ed3c6,_0x35cf77=_0x17f073[_0x5dda0c(0x1c6)]?.[_0x5dda0c(0x1b9)]?.[_0x5dda0c(0x1c8)]?.['length']??0x0;logger[_0x5dda0c(0x1cc)]('MCP',_0x5dda0c(0x246),{'termination':_0x17f073['terminationReason'],'turns':_0x17f073[_0x5dda0c(0x184)]?.[_0x5dda0c(0x234)]??0x0,'files_found':_0x35cf77,'latency_ms':_0x3fe47a});const _0x189f34=_0x42bc16(_0x17f073[_0x5dda0c(0x21e)]);_0x189f34[_0x5dda0c(0x22a)]>0x0&&reportMorphError({'error_message':_0x5dda0c(0x173)+_0x189f34['length']+_0x5dda0c(0x1e5),'error_type':_0x5dda0c(0x1fb),'level':_0x5dda0c(0x223),'tool':_0x5dda0c(0x1e2),'context':{'repo_path':_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x198)],'query':_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x217)],'model':_0x5dda0c(0x146),'termination_reason':_0x17f073['terminationReason'],'sub_tool_errors':_0x189f34,'timings':_0x17f073[_0x5dda0c(0x184)],'tool_calls':_0x1a7867(_0x17f073[_0x5dda0c(0x21e)]),'messages':_0x17f073[_0x5dda0c(0x21e)]?.[_0x5dda0c(0x215)](_0x1d568e=>({'role':_0x1d568e[_0x5dda0c(0x166)],'content':_0x1d568e[_0x5dda0c(0x1f7)],..._0x1d568e[_0x5dda0c(0x1f3)]?{'tool_calls':_0x1d568e[_0x5dda0c(0x1f3)][_0x5dda0c(0x22a)]}:{},..._0x1d568e['tool_call_id']?{'tool_call_id':_0x1d568e['tool_call_id']}:{}}))},'source':'mcp-filesystem'})[_0x5dda0c(0x199)](()=>{});let _0x39d96a='';if(_0x17f073[_0x5dda0c(0x190)]===_0x5dda0c(0x213)&&_0x17f073[_0x5dda0c(0x1c6)]?.['metadata']?.[_0x5dda0c(0x1c8)]){const _0x1d43e4=_0x17f073[_0x5dda0c(0x1c6)][_0x5dda0c(0x1b9)]['files'];if(_0x1d43e4['length']===0x0)return _0x39d96a=_0x17f073[_0x5dda0c(0x1c6)][_0x5dda0c(0x221)]||'No\x20relevant\x20code\x20found\x20for\x20the\x20query.',{'content':[{'type':_0x5dda0c(0x16c),'text':_0x39d96a}]};const _0x5b70b0=[],_0x56775b=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x18838f of _0x17f073[_0x5dda0c(0x21e)]){if(_0x18838f['role']==='assistant'&&Array[_0x5dda0c(0x23b)](_0x18838f['tool_calls']))for(const _0x5aaf3f of _0x18838f[_0x5dda0c(0x1f3)]){try{const _0xdede92=_0x5aaf3f[_0x5dda0c(0x194)]?.['name'],_0x3394f4=JSON[_0x5dda0c(0x1ba)](_0x5aaf3f[_0x5dda0c(0x194)]?.['arguments']||'{}');if(_0xdede92===_0x5dda0c(0x1d4))_0x56775b[_0x5dda0c(0x1bb)](_0x5dda0c(0x208)+_0x3394f4[_0x5dda0c(0x13b)]+_0x5dda0c(0x238)+(_0x3394f4[_0x5dda0c(0x230)]||'.')+'`');else{if(_0xdede92===_0x5dda0c(0x245))_0x56775b[_0x5dda0c(0x1bb)](_0x5dda0c(0x171)+_0x3394f4[_0x5dda0c(0x230)]+'`');else{if(_0xdede92===_0x5dda0c(0x138))_0x56775b[_0x5dda0c(0x1bb)](_0x5dda0c(0x207)+(_0x3394f4[_0x5dda0c(0x17b)]||'.')+'`');else _0xdede92==='glob'&&_0x56775b[_0x5dda0c(0x1bb)](_0x5dda0c(0x175)+_0x3394f4[_0x5dda0c(0x13b)]+'`\x20in\x20`'+(_0x3394f4[_0x5dda0c(0x230)]||'.')+'`');}}}catch{}}}_0x5b70b0[_0x5dda0c(0x1bb)](_0x56775b[_0x5dda0c(0x222)]('\x0a'));const _0x5129fc=['',_0x5dda0c(0x1ae)];for(const _0x19dd37 of _0x1d43e4){if(_0x19dd37[_0x5dda0c(0x1d2)]==='*')_0x5129fc[_0x5dda0c(0x1bb)]('-\x20'+_0x19dd37[_0x5dda0c(0x230)]+':*');else{if(Array[_0x5dda0c(0x23b)](_0x19dd37[_0x5dda0c(0x1d2)])){const _0x22ded0=_0x19dd37[_0x5dda0c(0x1d2)][_0x5dda0c(0x215)](([_0x312b38,_0x506d0d])=>{if(_0x312b38===_0x506d0d)return''+_0x312b38;return _0x312b38+'-'+_0x506d0d;});_0x5129fc[_0x5dda0c(0x1bb)]('-\x20'+_0x19dd37['path']+':'+_0x22ded0[_0x5dda0c(0x222)](','));}else _0x5129fc[_0x5dda0c(0x1bb)]('-\x20'+_0x19dd37['path']+':*');}}_0x5129fc[_0x5dda0c(0x1bb)](''),_0x5b70b0['push'](_0x5129fc[_0x5dda0c(0x222)]('\x0a')),_0x5b70b0[_0x5dda0c(0x1bb)](_0x5dda0c(0x248));const _0x21c854=[],_0x25ca8b=[];for(const _0x43ac63 of _0x1d43e4){let _0x12e25f=a0_0x1b597d['resolve'](_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x198)],_0x43ac63[_0x5dda0c(0x230)]),_0x269461=null,_0x4a2b7c=null;try{_0x269461=await a0_0x17617d[_0x5dda0c(0x1b3)](_0x12e25f,{'encoding':_0x5dda0c(0x17e)});}catch(_0x4d7dff){const _0x2ce003=fixPathRepetition(_0x12e25f);if(_0x2ce003)try{_0x269461=await a0_0x17617d[_0x5dda0c(0x1b3)](_0x2ce003,{'encoding':'utf-8'}),_0x12e25f=_0x2ce003;}catch{_0x4a2b7c=_0x4d7dff instanceof Error?_0x4d7dff:new Error(String(_0x4d7dff));}else _0x4a2b7c=_0x4d7dff instanceof Error?_0x4d7dff:new Error(String(_0x4d7dff));}if(_0x269461!==null){const _0x381e92=_0x269461[_0x5dda0c(0x132)](/\r?\n/),_0x35d747=[];if(_0x43ac63[_0x5dda0c(0x1d2)]==='*'||!Array[_0x5dda0c(0x23b)](_0x43ac63[_0x5dda0c(0x1d2)]))for(let _0x5d0104=0x1;_0x5d0104<=_0x381e92[_0x5dda0c(0x22a)];_0x5d0104++){const _0x389cc8=_0x381e92[_0x5d0104-0x1];_0x35d747[_0x5dda0c(0x1bb)](_0x5d0104+'|\x20'+_0x389cc8);}else for(const [_0x11df1b,_0x4bc554]of _0x43ac63[_0x5dda0c(0x1d2)]){_0x35d747[_0x5dda0c(0x22a)]>0x0&&_0x35d747[_0x5dda0c(0x1bb)]('');for(let _0x409a72=_0x11df1b;_0x409a72<=_0x4bc554&&_0x409a72<=_0x381e92[_0x5dda0c(0x22a)];_0x409a72++){const _0x4f54ce=_0x381e92[_0x409a72-0x1];_0x35d747['push'](_0x409a72+'|\x20'+_0x4f54ce);}}_0x25ca8b[_0x5dda0c(0x1bb)]({'path':_0x43ac63[_0x5dda0c(0x230)],'content':_0x35d747[_0x5dda0c(0x222)]('\x0a')});}else _0x21c854['push'](_0x5dda0c(0x212)+_0x43ac63[_0x5dda0c(0x230)]+_0x5dda0c(0x1f1)+(_0x4a2b7c?.[_0x5dda0c(0x1cb)]||_0x5dda0c(0x128))+_0x5dda0c(0x182));}try{const _0x112031=await compactFileContexts(_0x25ca8b,_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x217)],MORPH_API_KEY,MORPH_API_URL);for(const _0x36f7a7 of _0x112031){_0x21c854[_0x5dda0c(0x1bb)]('<file\x20path=\x22'+_0x36f7a7['path']+_0x5dda0c(0x1af)+_0x36f7a7[_0x5dda0c(0x1f7)]+_0x5dda0c(0x182));}}catch(_0x214808){logger[_0x5dda0c(0x223)]('MCP',_0x5dda0c(0x242),{'error':_0x214808 instanceof Error?_0x214808[_0x5dda0c(0x1cb)]:String(_0x214808),'files_count':_0x25ca8b[_0x5dda0c(0x22a)]});for(const _0x27f310 of _0x25ca8b){_0x21c854['push'](_0x5dda0c(0x212)+_0x27f310['path']+'\x22>\x0a'+_0x27f310[_0x5dda0c(0x1f7)]+_0x5dda0c(0x182));}}_0x5b70b0[_0x5dda0c(0x1bb)](_0x21c854[_0x5dda0c(0x222)]('\x0a\x0a')),_0x39d96a=_0x5b70b0[_0x5dda0c(0x222)]('\x0a');const _0x172984=_0x17f073['errors']?.[_0x5dda0c(0x148)](_0xbe28c5=>_0xbe28c5[_0x5dda0c(0x1cb)]?.[_0x5dda0c(0x23a)](_0x5dda0c(0x1c1)))||[];if(_0x172984[_0x5dda0c(0x22a)]>0x0){const _0x36f7b1=_0x172984['map'](_0x2da691=>_0x2da691['message'])[_0x5dda0c(0x222)](';\x20');reportMorphError({'error_message':_0x36f7b1,'error_type':'FileReadError','context':{'tool':'codebase_search','repo_path':_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x198)],'query':_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x217)],'model':'morph-warp-grep-v2.1','termination_reason':_0x5dda0c(0x1b5),'error_count':_0x172984[_0x5dda0c(0x22a)],'is_timeout':![],'timings':_0x17f073['timings'],'files_attempted':_0x1d43e4[_0x5dda0c(0x215)](_0x484432=>({'path':_0x484432[_0x5dda0c(0x230)],'lines':_0x484432[_0x5dda0c(0x1d2)]})),'tool_calls':_0x1a7867(_0x17f073[_0x5dda0c(0x21e)]),'messages':_0x17f073[_0x5dda0c(0x21e)]?.[_0x5dda0c(0x215)](_0x6244db=>({'role':_0x6244db[_0x5dda0c(0x166)],'content':_0x6244db[_0x5dda0c(0x1f7)],..._0x6244db[_0x5dda0c(0x1f3)]?{'tool_calls':_0x6244db['tool_calls']['length']}:{},..._0x6244db[_0x5dda0c(0x12b)]?{'tool_call_id':_0x6244db[_0x5dda0c(0x12b)]}:{}})),'request_content':{'query':_0x547322['data']['search_string'],'repo_path':_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x198)],'repoRoot':a0_0x1b597d['resolve'](_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x198)]),'model':_0x5dda0c(0x146)}},'source':'mcp-filesystem'})[_0x5dda0c(0x199)](()=>{});}}else{if(_0x17f073[_0x5dda0c(0x190)]==='terminated'&&_0x17f073[_0x5dda0c(0x1b7)][_0x5dda0c(0x22a)]>0x0){const _0x5d4223=_0x17f073[_0x5dda0c(0x1b7)]['map'](_0x35e289=>_0x35e289[_0x5dda0c(0x1cb)])[_0x5dda0c(0x222)](';\x20');_0x39d96a=_0x5dda0c(0x20c)+_0x5d4223;const _0x706b9=_0x5d4223[_0x5dda0c(0x1fc)]()['includes']('timeout')||_0x5d4223['toLowerCase']()['includes'](_0x5dda0c(0x130))||_0x5d4223[_0x5dda0c(0x1fc)]()[_0x5dda0c(0x131)]('etimedout'),_0x1ac23a=_0x17f073[_0x5dda0c(0x1c6)]?.[_0x5dda0c(0x1b9)]?.['files'],_0x64998c=_0x17f073[_0x5dda0c(0x1b7)][0x0];reportMorphError({'error_message':_0x5d4223,'error_type':_0x706b9?_0x5dda0c(0x252):_0x64998c?.[_0x5dda0c(0x145)]?.[_0x5dda0c(0x20f)]||_0x5dda0c(0x1b6),'context':{'tool':'codebase_search','repo_path':_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x198)],'query':_0x547322[_0x5dda0c(0x225)]['search_string'],'model':'morph-warp-grep-v2.1','termination_reason':_0x17f073[_0x5dda0c(0x190)],'error_count':_0x17f073[_0x5dda0c(0x1b7)][_0x5dda0c(0x22a)],'is_timeout':_0x706b9,'timings':_0x17f073[_0x5dda0c(0x184)],'files_attempted':_0x1ac23a?.[_0x5dda0c(0x215)](_0x15e877=>({'path':_0x15e877[_0x5dda0c(0x230)],'lines':_0x15e877[_0x5dda0c(0x1d2)]})),'tool_calls':_0x1a7867(_0x17f073['messages']),'messages':_0x17f073[_0x5dda0c(0x21e)]?.[_0x5dda0c(0x215)](_0x5e2af0=>({'role':_0x5e2af0[_0x5dda0c(0x166)],'content':_0x5e2af0['content'],..._0x5e2af0[_0x5dda0c(0x1f3)]?{'tool_calls':_0x5e2af0[_0x5dda0c(0x1f3)][_0x5dda0c(0x22a)]}:{},..._0x5e2af0[_0x5dda0c(0x12b)]?{'tool_call_id':_0x5e2af0[_0x5dda0c(0x12b)]}:{}})),'request_content':{'query':_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x217)],'repo_path':_0x547322['data'][_0x5dda0c(0x198)],'repoRoot':a0_0x1b597d[_0x5dda0c(0x243)](_0x547322[_0x5dda0c(0x225)]['repo_path']),'model':_0x5dda0c(0x146)}},'stack_trace':_0x64998c?.[_0x5dda0c(0x240)]||undefined,'source':_0x5dda0c(0x1b2)})[_0x5dda0c(0x199)](()=>{});}else _0x39d96a=_0x5dda0c(0x1e0);}return{'content':[{'type':'text','text':_0x39d96a}]};}catch(_0x6112bd){const _0x151242=handleMorphAPIError(_0x6112bd);if(_0x151242)return logger[_0x5dda0c(0x1c9)](_0x5dda0c(0x203),_0x5dda0c(0x160),{'tool':_0x5dda0c(0x1e2),'error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date['now']()-_0x22e089}),_0x151242;const _0x5e7b0b=_0x6112bd instanceof Error?_0x6112bd['message']:String(_0x6112bd);logger[_0x5dda0c(0x1c9)](_0x5dda0c(0x203),'tool_call_error',{'tool':'codebase_search','error':_0x5e7b0b,'repo_path':_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x198)],'query':_0x547322['data'][_0x5dda0c(0x217)],'latency_ms':Date[_0x5dda0c(0x167)]()-_0x22e089});const _0x4ad93b=_0x5e7b0b[_0x5dda0c(0x1fc)]()['includes'](_0x5dda0c(0x127))||_0x5e7b0b[_0x5dda0c(0x1fc)]()[_0x5dda0c(0x131)](_0x5dda0c(0x130))||_0x5e7b0b[_0x5dda0c(0x1fc)]()[_0x5dda0c(0x131)](_0x5dda0c(0x1b1))||_0x6112bd instanceof Error&&_0x6112bd[_0x5dda0c(0x20f)]===_0x5dda0c(0x252);return reportMorphError({'error_message':_0x5e7b0b,'error_type':_0x4ad93b?'TimeoutError':_0x6112bd instanceof Error?_0x6112bd['constructor'][_0x5dda0c(0x20f)]:_0x5dda0c(0x1fd),'context':{'tool':_0x5dda0c(0x1e2),'repo_path':_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x198)],'query':_0x547322[_0x5dda0c(0x225)][_0x5dda0c(0x217)],'model':_0x5dda0c(0x146),'is_timeout':_0x4ad93b,'exception_phase':_0x5dda0c(0x155),'request_content':{'query':_0x547322['data'][_0x5dda0c(0x217)],'repo_path':_0x547322['data'][_0x5dda0c(0x198)],'repoRoot':a0_0x1b597d[_0x5dda0c(0x243)](_0x547322[_0x5dda0c(0x225)]['repo_path']),'model':_0x5dda0c(0x146)}},'stack_trace':_0x6112bd instanceof Error?_0x6112bd['stack']:undefined,'source':'mcp-filesystem'})['catch'](()=>{}),{'content':[{'type':'text','text':_0x5dda0c(0x169)+_0x5e7b0b}],'isError':![]};}}case TOOL_NAMES[_0x5dda0c(0x22e)]:{const _0x1d4481=WarpGrepGitHubArgsSchema[_0x5dda0c(0x1d3)](_0x51f0de);if(!_0x1d4481['success'])return{'content':[{'type':_0x5dda0c(0x16c),'text':_0x5dda0c(0x142)+_0x1d4481['error']}],'isError':!![]};const _0x7c3039=_0x1d4481[_0x5dda0c(0x225)][_0x5dda0c(0x1ea)]||_0x1d4481['data']['owner_repo'];if(!_0x7c3039)return{'content':[{'type':'text','text':_0x5dda0c(0x23e)}],'isError':!![]};const _0xeab9f4=MORPH_API_KEY;if(!_0xeab9f4)throw new Error(_0x5dda0c(0x154));const _0x549ac7=Date[_0x5dda0c(0x167)]();logger[_0x5dda0c(0x1cc)](_0x5dda0c(0x203),_0x5dda0c(0x24f),{'identifier':_0x7c3039,'query':_0x1d4481[_0x5dda0c(0x225)][_0x5dda0c(0x217)],'branch':_0x1d4481[_0x5dda0c(0x225)][_0x5dda0c(0x162)]});try{const _0xdf097c=new WarpGrepClient({'morphApiKey':_0xeab9f4,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x4217e8=await _0xdf097c[_0x5dda0c(0x12e)]({'searchTerm':_0x1d4481[_0x5dda0c(0x225)][_0x5dda0c(0x217)],'github':_0x7c3039,'branch':_0x1d4481[_0x5dda0c(0x225)][_0x5dda0c(0x162)]}),_0x15be92=Date[_0x5dda0c(0x167)]()-_0x549ac7;logMcpStderr('[github_codebase_search]\x20Done\x20in\x20'+_0x15be92+_0x5dda0c(0x1e7)+_0x4217e8['success']);const _0x666534=formatResult(_0x4217e8);return{'content':[{'type':'text','text':_0x666534}]};}catch(_0x530f35){const _0x198d63=handleMorphAPIError(_0x530f35);if(_0x198d63)return _0x198d63;const _0x3094fa=Date[_0x5dda0c(0x167)]()-_0x549ac7,_0x28b98f=_0x530f35 instanceof Error?_0x530f35[_0x5dda0c(0x1cb)]:String(_0x530f35);return logMcpStderr(_0x5dda0c(0x19f)+_0x3094fa+_0x5dda0c(0x126),_0x28b98f),reportMorphError({'error_message':_0x28b98f,'error_type':_0x530f35 instanceof Error?_0x530f35[_0x5dda0c(0x145)][_0x5dda0c(0x20f)]:'UnknownError','context':{'tool':_0x5dda0c(0x229),'github_url':_0x7c3039,'search_string':_0x1d4481[_0x5dda0c(0x225)][_0x5dda0c(0x217)],'branch':_0x1d4481['data']['branch']},'stack_trace':_0x530f35 instanceof Error?_0x530f35[_0x5dda0c(0x240)]:undefined,'source':'mcp-filesystem','tool':_0x5dda0c(0x229),'latency_ms':_0x3094fa})[_0x5dda0c(0x199)](()=>{}),{'content':[{'type':_0x5dda0c(0x16c),'text':'GitHub\x20search\x20failed:\x20'+_0x28b98f}],'isError':![]};}}default:throw new Error(_0x5dda0c(0x1bd)+_0xde66b7);}}catch(_0x1ec0d5){const _0x3c18fe=_0x1ec0d5 instanceof Error?_0x1ec0d5[_0x5dda0c(0x1cb)]:String(_0x1ec0d5);return reportMorphError({'error_message':_0x3c18fe,'error_type':_0x1ec0d5 instanceof Error?_0x1ec0d5[_0x5dda0c(0x145)]['name']:_0x5dda0c(0x1fd),'context':{'tool':_0xde66b7,'arguments':_0x51f0de?JSON['stringify'](_0x51f0de)[_0x5dda0c(0x152)](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x1ec0d5 instanceof Error?_0x1ec0d5[_0x5dda0c(0x240)]:undefined,'source':'mcp-filesystem'})[_0x5dda0c(0x199)](()=>{}),{'content':[{'type':_0x5dda0c(0x16c),'text':_0x5dda0c(0x20c)+_0x3c18fe}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x5bc894){const _0x39326c=a0_0x5c9100,_0x4ff2e5=await getValidRootDirectories(_0x5bc894);if(_0x4ff2e5[_0x39326c(0x22a)]>0x0)allowedDirectories=[..._0x4ff2e5],logMcpStderr('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0x4ff2e5[_0x39326c(0x22a)]+_0x39326c(0x19d));else{logMcpStderr(_0x39326c(0x211));if(ENABLE_WORKSPACE_MODE)try{const _0x23a4fb=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x23a4fb&&(allowedDirectories=[_0x23a4fb],logMcpStderr('Fallback:\x20Using\x20workspace\x20root\x20'+_0x23a4fb));}catch(_0x2fa38e){logMcpStderr(_0x39326c(0x13a)+_0x2fa38e);}}}server[a0_0x5c9100(0x202)](RootsListChangedNotificationSchema,async()=>{const _0x4677a9=a0_0x5c9100;try{const _0x5b3d52=await server[_0x4677a9(0x216)]();_0x5b3d52&&_0x4677a9(0x15e)in _0x5b3d52&&await updateAllowedDirectoriesFromRoots(_0x5b3d52['roots']);}catch(_0x5907c4){logMcpStderr(_0x4677a9(0x1d5),_0x5907c4 instanceof Error?_0x5907c4[_0x4677a9(0x1cb)]:String(_0x5907c4));}}),server[a0_0x5c9100(0x124)]=async()=>{const _0x4d0e86=a0_0x5c9100,_0x24f6dc=server[_0x4d0e86(0x236)]();if(_0x24f6dc?.[_0x4d0e86(0x15e)])try{const _0x2b9283=await server[_0x4d0e86(0x216)]();_0x2b9283&&_0x4d0e86(0x15e)in _0x2b9283?await updateAllowedDirectoriesFromRoots(_0x2b9283[_0x4d0e86(0x15e)]):logMcpStderr(_0x4d0e86(0x139));}catch(_0x5dea58){logMcpStderr(_0x4d0e86(0x129),_0x5dea58 instanceof Error?_0x5dea58['message']:String(_0x5dea58));}else{if(allowedDirectories[_0x4d0e86(0x22a)]>0x0)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:',allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x4d0e86(0x172));else throw new Error(_0x4d0e86(0x16e));}}};async function runServer(){const _0x4b5d0c=a0_0x5c9100,_0x363140=new StdioServerTransport();await server[_0x4b5d0c(0x18a)](_0x363140),logMcpStderr(_0x4b5d0c(0x12f)),allowedDirectories[_0x4b5d0c(0x22a)]===0x0&&logMcpStderr('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()['catch'](_0x2d9fd4=>{const _0x2b88f2=a0_0x5c9100;logMcpStderr(_0x2b88f2(0x1d1),_0x2d9fd4),process['exit'](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var a1_0x408969=a1_0x4476;(function(_0x47e8a6,_0x4bd106){var _0x363418=a1_0x4476,_0x574ed6=_0x47e8a6();while(!![]){try{var _0x4d4109=parseInt(_0x363418(0xdf))/0x1+parseInt(_0x363418(0xd5))/0x2+parseInt(_0x363418(0xd1))/0x3*(parseInt(_0x363418(0xd7))/0x4)+parseInt(_0x363418(0xe1))/0x5+-parseInt(_0x363418(0xe0))/0x6*(-parseInt(_0x363418(0xd9))/0x7)+-parseInt(_0x363418(0xdb))/0x8+-parseInt(_0x363418(0xe3))/0x9;if(_0x4d4109===_0x4bd106)break;else _0x574ed6['push'](_0x574ed6['shift']());}catch(_0x242e54){_0x574ed6['push'](_0x574ed6['shift']());}}}(a1_0x260d,0x7e85a));import a1_0x567d2c from'os';import{logger}from'./logger.js';function a1_0x4476(_0x53802d,_0x27bc76){_0x53802d=_0x53802d-0xd0;var _0x260dc2=a1_0x260d();var _0x4476a5=_0x260dc2[_0x53802d];return _0x4476a5;}export function getOperatingSystemType(_0x3dbf7d=a1_0x567d2c['platform']()){var _0x179aa1=a1_0x4476;switch(_0x3dbf7d){case _0x179aa1(0xd4):return _0x179aa1(0xe2);case'win32':return _0x179aa1(0xe4);case _0x179aa1(0xda):return _0x179aa1(0xdd);default:return _0x179aa1(0xd6);}}function a1_0x260d(){var _0x20b198=['map','3DXpmfZ','error','info','darwin','1351196XHBWvc','Unknown','1303580AjVfwh','MCP','22757yLhKdb','linux','7697168LGWbuL','[os=','Linux','platform','306982kFgEko','1854zdcuKR','5028310JZeqCu','macOS','16544844rSdXdc','Windows'];a1_0x260d=function(){return _0x20b198;};return a1_0x260d();}export function formatMcpLogMessage(_0x427a96,_0xfe2e5c=a1_0x567d2c[a1_0x408969(0xde)]()){var _0x4216ff=a1_0x408969;return _0x4216ff(0xdc)+getOperatingSystemType(_0xfe2e5c)+']\x20'+_0x427a96;}export function logMcpStderr(_0x5dc3cc,..._0x164ea2){var _0x412c27=a1_0x408969;console[_0x412c27(0xd2)](formatMcpLogMessage(_0x5dc3cc),..._0x164ea2),logger[_0x412c27(0xd3)](_0x412c27(0xd8),_0x5dc3cc,_0x164ea2['length']?{'args':_0x164ea2[_0x412c27(0xd0)](_0x38096f=>String(_0x38096f))}:undefined);}
|
package/dist/logger.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const a2_0x3d4878=a2_0x52e2;(function(_0x5df58e,_0x538115){const _0x173dc6=a2_0x52e2,_0x1edd8a=_0x5df58e();while(!![]){try{const _0x5659fc=-parseInt(_0x173dc6(0x91))/0x1+-parseInt(_0x173dc6(0x95))/0x2+parseInt(_0x173dc6(0x87))/0x3+-parseInt(_0x173dc6(0x96))/0x4+parseInt(_0x173dc6(0x8b))/0x5*(-parseInt(_0x173dc6(0x9b))/0x6)+-parseInt(_0x173dc6(0x84))/0x7*(parseInt(_0x173dc6(0x90))/0x8)+parseInt(_0x173dc6(0x88))/0x9;if(_0x5659fc===_0x538115)break;else _0x1edd8a['push'](_0x1edd8a['shift']());}catch(_0x52da0f){_0x1edd8a['push'](_0x1edd8a['shift']());}}}(a2_0x4c38,0xe22a9));function a2_0x4c38(){const _0x1a76a3=['error','info','MORPH_DEBUG','876BOYWDJ',']\x20[','enable','6587oSpuwf','_log','stringify','3089436axqCRN','35519571DgkroY','debug','toISOString','61235AVvgEl','write','warn','isEnabled','fileStream','2528JXLJam','633043ASpyai','toUpperCase','MORPH_LOG_FILE','env','747348aenAqN','3831676WaZDGz','enabled'];a2_0x4c38=function(){return _0x1a76a3;};return a2_0x4c38();}import{createWriteStream}from'fs';class MorphLogger{['enabled'];[a2_0x3d4878(0x8f)];constructor(){const _0x292356=a2_0x3d4878;this['enabled']=process[_0x292356(0x94)][_0x292356(0x9a)]==='1'||!!process['env']['MORPH_LOG_FILE'];const _0x44e328=process['env'][_0x292356(0x93)];this[_0x292356(0x8f)]=_0x44e328?createWriteStream(_0x44e328,{'flags':'a'}):null;}[a2_0x3d4878(0x89)](_0x40c229,_0x1c18e8,_0x30a0c5){const _0x4a5d85=a2_0x3d4878;this[_0x4a5d85(0x85)](_0x4a5d85(0x89),_0x40c229,_0x1c18e8,_0x30a0c5);}['info'](_0x56c6ce,_0x8918c7,_0x1dcaaa){const _0x42139d=a2_0x3d4878;this[_0x42139d(0x85)](_0x42139d(0x99),_0x56c6ce,_0x8918c7,_0x1dcaaa);}['warn'](_0x21ebcb,_0x85bead,_0x5287d2){const _0x568234=a2_0x3d4878;this[_0x568234(0x85)](_0x568234(0x8d),_0x21ebcb,_0x85bead,_0x5287d2);}[a2_0x3d4878(0x98)](_0x26f260,_0x532e10,_0xd82400){const _0x4c48ef=a2_0x3d4878;this[_0x4c48ef(0x85)](_0x4c48ef(0x98),_0x26f260,_0x532e10,_0xd82400);}[a2_0x3d4878(0x9d)](){const _0x7af70a=a2_0x3d4878;this[_0x7af70a(0x97)]=!![];}get[a2_0x3d4878(0x8e)](){return this['enabled'];}[a2_0x3d4878(0x85)](_0x309dad,_0x1096d3,_0x132310,_0x252926){const _0x26c167=a2_0x3d4878;if(_0x309dad!=='error'&&!this[_0x26c167(0x97)])return;const _0x290f6=new Date()[_0x26c167(0x8a)](),_0x2e0542='['+_0x290f6+_0x26c167(0x9c)+_0x309dad[_0x26c167(0x92)]()+_0x26c167(0x9c)+_0x1096d3+']';console[_0x26c167(0x98)](_0x252926?_0x2e0542+'\x20'+_0x132310+'\x20'+JSON[_0x26c167(0x86)](_0x252926):_0x2e0542+'\x20'+_0x132310),this[_0x26c167(0x8f)]?.[_0x26c167(0x8c)](JSON[_0x26c167(0x86)]({'ts':_0x290f6,'level':_0x309dad,'component':_0x1096d3,'msg':_0x132310,..._0x252926&&{'data':_0x252926}})+'\x0a');}}function a2_0x52e2(_0x98fad3,_0x59fb60){_0x98fad3=_0x98fad3-0x84;const _0x4c3858=a2_0x4c38();let _0x52e29e=_0x4c3858[_0x98fad3];return _0x52e29e;}export const logger=new MorphLogger();
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x30228f,_0x19b3d3){const _0x3b6a2c=a3_0x19d3,_0x44c43e=_0x30228f();while(!![]){try{const _0x78068d=-parseInt(_0x3b6a2c(0x1e8))/0x1+-parseInt(_0x3b6a2c(0x1e3))/0x2+-parseInt(_0x3b6a2c(0x1ec))/0x3+-parseInt(_0x3b6a2c(0x1e2))/0x4+parseInt(_0x3b6a2c(0x1e6))/0x5*(parseInt(_0x3b6a2c(0x1f0))/0x6)+parseInt(_0x3b6a2c(0x1f3))/0x7+parseInt(_0x3b6a2c(0x1f2))/0x8;if(_0x78068d===_0x19b3d3)break;else _0x44c43e['push'](_0x44c43e['shift']());}catch(_0x1997a4){_0x44c43e['push'](_0x44c43e['shift']());}}}(a3_0x3f53,0xa1449));import a3_0x4cbc0b from'path';import a3_0x5d4405 from'os';function a3_0x3f53(){const _0x309b09=['startsWith','832530PjpUpT','toUpperCase','replace','match','2710869RRjSwF','normalize','slice','/mnt/','18RDQJPg','substring','19283824fjMRSt','5606251FPuCss','charAt','2995320vBUbsn','661008kJBcKL','test','trim','441115MYhLpf'];a3_0x3f53=function(){return _0x309b09;};return a3_0x3f53();}export function convertToWindowsPath(_0x1cfb7a){const _0x3ef1c6=a3_0x19d3;if(_0x1cfb7a[_0x3ef1c6(0x1e7)](_0x3ef1c6(0x1ef))){const _0x1508a3=_0x1cfb7a[_0x3ef1c6(0x1e1)](0x5)['toUpperCase'](),_0x27f936=_0x1cfb7a[_0x3ef1c6(0x1ee)](0x6)[_0x3ef1c6(0x1ea)](/\//g,'\x5c');return _0x1508a3+':'+_0x27f936;}if(_0x1cfb7a[_0x3ef1c6(0x1eb)](/^\/[a-zA-Z]\//)){const _0x35ef10=_0x1cfb7a[_0x3ef1c6(0x1e1)](0x1)[_0x3ef1c6(0x1e9)](),_0xebc99a=_0x1cfb7a[_0x3ef1c6(0x1ee)](0x2)[_0x3ef1c6(0x1ea)](/\//g,'\x5c');return _0x35ef10+':'+_0xebc99a;}if(_0x1cfb7a[_0x3ef1c6(0x1eb)](/^[a-zA-Z]:/))return _0x1cfb7a[_0x3ef1c6(0x1ea)](/\//g,'\x5c');return _0x1cfb7a;}export function normalizePath(_0x3cedc6){const _0x41301a=a3_0x19d3;_0x3cedc6=_0x3cedc6[_0x41301a(0x1e5)]()[_0x41301a(0x1ea)](/^["']|["']$/g,'');const _0x5ec9ce=_0x3cedc6[_0x41301a(0x1e7)]('/')&&!_0x3cedc6[_0x41301a(0x1eb)](/^\/mnt\/[a-z]\//i)&&!_0x3cedc6['match'](/^\/[a-zA-Z]\//);if(_0x5ec9ce)return _0x3cedc6[_0x41301a(0x1ea)](/\/+/g,'/')[_0x41301a(0x1ea)](/\/+$/,'');_0x3cedc6=convertToWindowsPath(_0x3cedc6);if(_0x3cedc6[_0x41301a(0x1e7)]('\x5c\x5c')){let _0x42f3b9=_0x3cedc6;_0x42f3b9=_0x42f3b9[_0x41301a(0x1ea)](/^\\{2,}/,'\x5c\x5c');const _0x595b5a=_0x42f3b9[_0x41301a(0x1f1)](0x2)['replace'](/\\\\/g,'\x5c');_0x3cedc6='\x5c\x5c'+_0x595b5a;}else _0x3cedc6=_0x3cedc6[_0x41301a(0x1ea)](/\\\\/g,'\x5c');let _0x130e5a=a3_0x4cbc0b[_0x41301a(0x1ed)](_0x3cedc6);_0x3cedc6['startsWith']('\x5c\x5c')&&!_0x130e5a[_0x41301a(0x1e7)]('\x5c\x5c')&&(_0x130e5a='\x5c'+_0x130e5a);if(_0x130e5a['match'](/^[a-zA-Z]:/)){let _0x2a0d41=_0x130e5a[_0x41301a(0x1ea)](/\//g,'\x5c');return/^[a-z]:/[_0x41301a(0x1e4)](_0x2a0d41)&&(_0x2a0d41=_0x2a0d41[_0x41301a(0x1e1)](0x0)[_0x41301a(0x1e9)]()+_0x2a0d41[_0x41301a(0x1ee)](0x1)),_0x2a0d41;}return _0x130e5a[_0x41301a(0x1ea)](/\//g,'\x5c');}function a3_0x19d3(_0x4e3fc6,_0x5ee99d){_0x4e3fc6=_0x4e3fc6-0x1e1;const _0x3f53c2=a3_0x3f53();let _0x19d349=_0x3f53c2[_0x4e3fc6];return _0x19d349;}export function expandHome(_0x409c84){const _0x5cd1e0=a3_0x19d3;if(_0x409c84['startsWith']('~/')||_0x409c84==='~')return a3_0x4cbc0b['join'](a3_0x5d4405['homedir'](),_0x409c84[_0x5cd1e0(0x1ee)](0x1));return _0x409c84;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a4_0x5e88(_0x25b98a,_0x4e9426){_0x25b98a=_0x25b98a-0x1f1;const _0x5f3c0b=a4_0x5f3c();let _0x5e88a8=_0x5f3c0b[_0x25b98a];return _0x5e88a8;}(function(_0x3366f1,_0x53d00e){const _0x3fb213=a4_0x5e88,_0x1bea63=_0x3366f1();while(!![]){try{const _0x1b7ef4=-parseInt(_0x3fb213(0x1fb))/0x1+-parseInt(_0x3fb213(0x1fc))/0x2+-parseInt(_0x3fb213(0x1f3))/0x3*(parseInt(_0x3fb213(0x203))/0x4)+-parseInt(_0x3fb213(0x1f2))/0x5+parseInt(_0x3fb213(0x1f8))/0x6*(-parseInt(_0x3fb213(0x202))/0x7)+parseInt(_0x3fb213(0x1fe))/0x8+parseInt(_0x3fb213(0x1f9))/0x9;if(_0x1b7ef4===_0x53d00e)break;else _0x1bea63['push'](_0x1bea63['shift']());}catch(_0x401eda){_0x1bea63['push'](_0x1bea63['shift']());}}}(a4_0x5f3c,0xb1f37));import a4_0x217776 from'path';function a4_0x5f3c(){const _0x4361a6=['2411630xJdxtg','string','5503056cNtDWC','Path\x20must\x20be\x20absolute\x20after\x20normalization','isAbsolute','isArray','4739SiIINC','4073816DYCbTM','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','resolve','3964025qcXnXY','3hDgfrp','length','startsWith','sep','normalize','5976fDxGsQ','38467809YwkFBz','includes','541830dTqluj'];a4_0x5f3c=function(){return _0x4361a6;};return a4_0x5f3c();}export function isPathWithinAllowedDirectories(_0x4740f3,_0x45bd37){const _0x6d1728=a4_0x5e88;if(typeof _0x4740f3!=='string'||!Array[_0x6d1728(0x201)](_0x45bd37))return![];if(!_0x4740f3||_0x45bd37[_0x6d1728(0x1f4)]===0x0)return![];if(_0x4740f3[_0x6d1728(0x1fa)]('\x00'))return![];let _0x4ef80e;try{_0x4ef80e=a4_0x217776[_0x6d1728(0x1f1)](a4_0x217776[_0x6d1728(0x1f7)](_0x4740f3));}catch{return![];}if(!a4_0x217776[_0x6d1728(0x200)](_0x4ef80e))throw new Error(_0x6d1728(0x1ff));return _0x45bd37['some'](_0x14438a=>{const _0x474abc=_0x6d1728;if(typeof _0x14438a!==_0x474abc(0x1fd)||!_0x14438a)return![];if(_0x14438a[_0x474abc(0x1fa)]('\x00'))return![];let _0x5b83aa;try{_0x5b83aa=a4_0x217776[_0x474abc(0x1f1)](a4_0x217776[_0x474abc(0x1f7)](_0x14438a));}catch{return![];}if(!a4_0x217776[_0x474abc(0x200)](_0x5b83aa))throw new Error(_0x474abc(0x204));if(_0x4ef80e===_0x5b83aa)return!![];if(_0x5b83aa===a4_0x217776[_0x474abc(0x1f6)])return _0x4ef80e[_0x474abc(0x1f5)](a4_0x217776[_0x474abc(0x1f6)]);return _0x4ef80e[_0x474abc(0x1f5)](_0x5b83aa+a4_0x217776['sep']);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x10e590,_0x2cd1fe){const _0x6bb557=a5_0x4e45,_0x42eed0=_0x10e590();while(!![]){try{const _0x2e2eab=-parseInt(_0x6bb557(0x94))/0x1+parseInt(_0x6bb557(0x9f))/0x2+-parseInt(_0x6bb557(0x9e))/0x3*(parseInt(_0x6bb557(0xa2))/0x4)+parseInt(_0x6bb557(0xa3))/0x5+-parseInt(_0x6bb557(0x9a))/0x6*(parseInt(_0x6bb557(0x92))/0x7)+parseInt(_0x6bb557(0x96))/0x8+parseInt(_0x6bb557(0xa1))/0x9;if(_0x2e2eab===_0x2cd1fe)break;else _0x42eed0['push'](_0x42eed0['shift']());}catch(_0x379721){_0x42eed0['push'](_0x42eed0['shift']());}}}(a5_0x5f04,0x52429));import{promises as a5_0x1f39be}from'fs';import a5_0x5615eb from'path';function a5_0x5f04(){const _0x24675c=['2109145qAFsKm','stat','slice','isDirectory','\x20due\x20to\x20error:\x20','196889UjPEZH','homedir','160178ZcQsnf','uri','200448bkCtQK','message','startsWith','file://','132LGSqkK','resolve','Skipping\x20','non-directory\x20root','47919IalKHa','1135842LiqwOn','invalid\x20path\x20or\x20inaccessible','1628712akoWIB','20uzTcog'];a5_0x5f04=function(){return _0x24675c;};return a5_0x5f04();}import a5_0x8aa98a from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0xdac0a8){const _0x5c6325=a5_0x4e45;try{const _0x4453ee=_0xdac0a8[_0x5c6325(0x98)](_0x5c6325(0x99))?_0xdac0a8['slice'](0x7):_0xdac0a8,_0x358e54=_0x4453ee[_0x5c6325(0x98)]('~/')||_0x4453ee==='~'?a5_0x5615eb['join'](a5_0x8aa98a[_0x5c6325(0x93)](),_0x4453ee[_0x5c6325(0xa5)](0x1)):_0x4453ee,_0x4e8ee3=a5_0x5615eb[_0x5c6325(0x9b)](_0x358e54),_0x543565=await a5_0x1f39be['realpath'](_0x4e8ee3);return normalizePath(_0x543565);}catch{return null;}}function formatDirectoryError(_0x4e49d5,_0xeba73f,_0x10ba56){const _0x1380ea=a5_0x4e45;if(_0x10ba56)return _0x1380ea(0x9c)+_0x10ba56+':\x20'+_0x4e49d5;const _0x265059=_0xeba73f instanceof Error?_0xeba73f[_0x1380ea(0x97)]:String(_0xeba73f);return'Skipping\x20invalid\x20directory:\x20'+_0x4e49d5+_0x1380ea(0xa7)+_0x265059;}function a5_0x4e45(_0x2a16eb,_0x2c1cac){_0x2a16eb=_0x2a16eb-0x92;const _0x5f04f2=a5_0x5f04();let _0x4e4593=_0x5f04f2[_0x2a16eb];return _0x4e4593;}export async function getValidRootDirectories(_0x1d67bc){const _0x55cd12=a5_0x4e45,_0xa4401c=[];for(const _0x513ee9 of _0x1d67bc){const _0x4b4ce0=await parseRootUri(_0x513ee9[_0x55cd12(0x95)]);if(!_0x4b4ce0){logMcpStderr(formatDirectoryError(_0x513ee9['uri'],undefined,_0x55cd12(0xa0)));continue;}try{const _0x11a025=await a5_0x1f39be[_0x55cd12(0xa4)](_0x4b4ce0);_0x11a025[_0x55cd12(0xa6)]()?_0xa4401c['push'](_0x4b4ce0):logMcpStderr(formatDirectoryError(_0x4b4ce0,undefined,_0x55cd12(0x9d)));}catch(_0x402e58){logMcpStderr(formatDirectoryError(_0x4b4ce0,_0x402e58));}}return _0xa4401c;}
|
package/dist/tool-definitions.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a6_0x57f3(_0x276486,_0xd3d328){_0x276486=_0x276486-0xef;const _0x86a5e9=a6_0x86a5();let _0x57f314=_0x86a5e9[_0x276486];return _0x57f314;}const a6_0x2b1b8f=a6_0x57f3;(function(_0x486069,_0x2bb2c7){const _0x529379=a6_0x57f3,_0xdd9a8e=_0x486069();while(!![]){try{const _0x485f0b=-parseInt(_0x529379(0xfd))/0x1*(-parseInt(_0x529379(0xf8))/0x2)+-parseInt(_0x529379(0xf4))/0x3*(parseInt(_0x529379(0xf6))/0x4)+-parseInt(_0x529379(0xef))/0x5*(parseInt(_0x529379(0xf3))/0x6)+parseInt(_0x529379(0xfa))/0x7+parseInt(_0x529379(0xf7))/0x8*(parseInt(_0x529379(0xfb))/0x9)+-parseInt(_0x529379(0xfc))/0xa*(-parseInt(_0x529379(0xf5))/0xb)+-parseInt(_0x529379(0xf9))/0xc;if(_0x485f0b===_0x2bb2c7)break;else _0xdd9a8e['push'](_0xdd9a8e['shift']());}catch(_0x5f4d8f){_0xdd9a8e['push'](_0xdd9a8e['shift']());}}}(a6_0x86a5,0x1ec69));export const TOOL_NAMES={'EDIT_FILE':a6_0x2b1b8f(0xf0),'CODEBASE_SEARCH':a6_0x2b1b8f(0xf2),'GITHUB_CODEBASE_SEARCH':a6_0x2b1b8f(0xf1)};export const ALL_TOOL_NAMES=Object['values'](TOOL_NAMES);export const KNOWN_TOOL_NAMES=new Set(ALL_TOOL_NAMES);function a6_0x86a5(){const _0x7bb18b=['github_codebase_search','codebase_search','10662NqZPJw','92409ushdPQ','69707SKCLTG','8EcqJcj','432dLiyLu','2ZxKjmi','5559000JzcPhZ','1287440ftYoST','35073jpzOam','230pyPGHQ','190769rdvUHV','225MiUFQC','edit_file'];a6_0x86a5=function(){return _0x7bb18b;};return a6_0x86a5();}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.170",
|
|
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",
|