@morphllm/morphmcp 0.8.192 → 0.8.193
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_0x510957=a0_0x4273;(function(_0x1dddc3,_0x268a3b){const _0x2c08f9=a0_0x4273,_0x118c89=_0x1dddc3();while(!![]){try{const _0x44fb74=-parseInt(_0x2c08f9(0x205))/0x1*(parseInt(_0x2c08f9(0x247))/0x2)+-parseInt(_0x2c08f9(0x2ff))/0x3+parseInt(_0x2c08f9(0x26b))/0x4*(-parseInt(_0x2c08f9(0x2a7))/0x5)+-parseInt(_0x2c08f9(0x248))/0x6*(-parseInt(_0x2c08f9(0x2b8))/0x7)+parseInt(_0x2c08f9(0x238))/0x8*(parseInt(_0x2c08f9(0x22d))/0x9)+-parseInt(_0x2c08f9(0x275))/0xa+-parseInt(_0x2c08f9(0x2f4))/0xb*(-parseInt(_0x2c08f9(0x21f))/0xc);if(_0x44fb74===_0x268a3b)break;else _0x118c89['push'](_0x118c89['shift']());}catch(_0x341e7e){_0x118c89['push'](_0x118c89['shift']());}}}(a0_0x2384,0x81584));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_0x53dc6d from'fs/promises';import a0_0xa4cb51 from'path';import a0_0xd57d56 from'os';import{createRequire}from'module';import{z}from'zod';import{zodToJsonSchema}from'zod-to-json-schema';function a0_0x4273(_0x2ace7e,_0x299241){_0x2ace7e=_0x2ace7e-0x1d9;const _0x2384b7=a0_0x2384();let _0x42734f=_0x2384b7[_0x2ace7e];return _0x42734f;}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_0x56b343 from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x186c5d){const _0x220dfc=a0_0x4273,_0x347c2c=_0x186c5d[_0x220dfc(0x2da)](a0_0xa4cb51['sep'])[_0x220dfc(0x2c6)](Boolean);if(_0x347c2c['length']<0x2)return null;for(let _0x4ff2af=Math[_0x220dfc(0x1de)](_0x347c2c['length']/0x2);_0x4ff2af>=0x1;_0x4ff2af--){for(let _0x5315d4=0x0;_0x5315d4<=_0x347c2c[_0x220dfc(0x244)]-0x2*_0x4ff2af;_0x5315d4++){const _0x34f68e=_0x347c2c[_0x220dfc(0x2b2)](_0x5315d4,_0x5315d4+_0x4ff2af),_0x590a9d=_0x347c2c['slice'](_0x5315d4+_0x4ff2af,_0x5315d4+0x2*_0x4ff2af);if(_0x34f68e[_0x220dfc(0x2ba)]((_0x4e80b8,_0x488b4a)=>_0x4e80b8===_0x590a9d[_0x488b4a])){const _0x5722e2=[..._0x347c2c[_0x220dfc(0x2b2)](0x0,_0x5315d4),..._0x347c2c[_0x220dfc(0x2b2)](_0x5315d4+_0x4ff2af)];return a0_0xa4cb51[_0x220dfc(0x2c3)]+_0x5722e2[_0x220dfc(0x201)](a0_0xa4cb51[_0x220dfc(0x2c3)]);}}}return null;}function a0_0x2384(){const _0x3c7f2e=['object','.vscode',',\x20removed\x20','repo_path','optional','`\x20in\x20`','\x20(new\x20file)','isDirectory','getClientCapabilities','-\x20Preserve\x20exact\x20indentation\x0a','Tool\x20','DISABLED_TOOLS','grep_search','Created\x20File','now','morph-v3-fast','filePath','\x20valid\x20directories','path_validation_start','morph-mcp','homedir','ReadError','error','tool_calls','env','MORPH_API_KEY','Specific\x20commit\x20hash\x20to\x20search','terminationReason','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.','etimedout','--version','target_file','Rules:\x0a','join','messages','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','read','45bidVME','UnknownError','node_modules','default','Tool\x20\x22','argv','path_validation_resolved','API\x20error\x20(auth/rate-limit)','FileReadError','list_directory','branch','SubToolError','linesModified','timeout','response','metadata','0.2.0','ENOENT','path','toISOString','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','string','Invalid\x20arguments:\x20','substring','basename','\x0a</file>','714036nPGuNm','--api-key','toLowerCase','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','Parent\x20directory\x20does\x20not\x20exist:\x20','description','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','stack','readFile','size','post','pattern','\x20as\x20allowed\x20directory','.\x20Changes:\x20','376749LYBivI','-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a','access','tool','realpath','log','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','codebase_search','includes','setNotificationHandler','morph-warp-grep-v2.1','16cgFLwq','role','github_search_start','Warning:\x20Workspace\x20fallback\x20failed:\x20','mcp-filesystem','RipgrepError','application/json','Warning:\x20','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','params','<file\x20path=\x22','completed_with_file_errors','length','grep\x20\x27','[github_codebase_search]\x20Done\x20in\x20','15538FIrFrB','2137050YQQOoe','read\x20','instructions','\x0aExamples:','GITHUB_CODEBASE_SEARCH','File\x20read\x20error:','linesRemoved','grep','Error:\x20','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','map','\x20disabled\x20via\x20DISABLED_TOOLS','instruction','describe','-\x20Grepped\x20\x27','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','runWarpGrep_call','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','https://morphllm.com/api/error-report','terminated','finish',',\x20modified\x20','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','Applied','normalize','command','success','\x27\x20in\x20`','lines','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','false','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','parse','\x20is\x20not\x20a\x20directory','version','17324nkhmOk','debug','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','LocalRipgrepProvider','-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a','-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a','catch','listRoots','\x20\x20morph-mcp','2250440xbpLVU','MORPH_API_URL','EDIT_FILE','Max\x20results\x20to\x20return','inputSchema','morph-','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','stringify','Warning:\x20Unable\x20to\x20determine\x20package\x20version:','CODEBASE_SEARCH','-\x20Read\x20file\x20`','tool_call_complete','file_read_complete','cwd','requiresApiKey','composer.json','dryRun','.\x20Path:\x20','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','@morphllm/morphmcp\x20','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','code_edit','indexOf','number','some','data','-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\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.','startsWith','trim','MORPH_WARP_GREP_TIMEOUT','target_filepath','path_validation_failed','code','function','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','text','added\x20','safeParse','PWD','morph-v3-large','linesAdded','has','tool_call_error','resolve','Fatal\x20error\x20running\x20server:','Morph\x20Edit\x20','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','exit','1105iMbVhB','context','-\x20Glob\x20search\x20`','roots','push','Preview\x20changes\x20without\x20applying\x20them.','message','Here\x20is\x20the\x20content\x20of\x20files:\x0a','warp_grep_complete','WarpGrepError','completed','slice','\x20chars)','glob','\x22>\x0a','setRequestHandler','.cursor','7zLChNc','\x22.\x20Known\x20tools:\x20','every','ToolException','Use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code\x20blocks.\x20Include\x20just\x20enough\x20surrounding\x20context\x20to\x20locate\x20each\x20edit\x20precisely.\x0a\x0a','source','SymlinkError','Workspace\x20mode\x20enabled:\x20Using\x20','dirname','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','Morph\x20Edit\x20Preview','sep','Fallback:\x20Using\x20workspace\x20root\x20','FileNotFound','filter','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','BinaryFile','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','name','file','PathError','tool_call_id','changes','Relevant\x20context\x20found:','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','Example\x20format:\x0a','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','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.','ms:','searchGitHub','list_directory\x20','timed\x20out','❌\x20Morph\x20Edit\x20Failed:\x20','utf-8','split','stat','Parameters:\x0a','ms.\x20Success:\x20','files','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','Bearer\x20','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','connect','user','\x20-\x20','\x0a...\x20(truncated,\x20total:\x20','MCP','../package.json','go.mod','timings','unknown','Error\x20accessing\x20directory\x20','Unknown\x20error','Unknown\x20tool:\x20','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','all','Failed\x20to\x20read\x20file:\x20','search_string','isArray','341uQWQLe','errors','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','array','RipgrepNotAvailable','edit_file','\x20error(s)','content','assistant','Repository\x20identifier','TimeoutError','668682alXmAv','github_codebase_search','arguments','sk-','tsconfig.json','constructor','status','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','min','\x22>\x0aError\x20reading\x20file:\x20','GitHub\x20search\x20failed:\x20','floor','match'];a0_0x2384=function(){return _0x3c7f2e;};return a0_0x2384();}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x8d4c68=a0_0x4273;try{const _0x190334=require(_0x8d4c68(0x2e8));return _0x190334[_0x8d4c68(0x26a)]??'unknown';}catch(_0x1cc990){return logMcpStderr(_0x8d4c68(0x27d),_0x1cc990),_0x8d4c68(0x2eb);}}function printHelp(){const _0x44b9d0=a0_0x4273;console[_0x44b9d0(0x232)](_0x44b9d0(0x288)+getPackageVersion()),console[_0x44b9d0(0x232)](_0x44b9d0(0x240)),console['log']('\x0aOptions:'),console[_0x44b9d0(0x232)]('\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)'),console[_0x44b9d0(0x232)](_0x44b9d0(0x225)),console[_0x44b9d0(0x232)](_0x44b9d0(0x25e)),console[_0x44b9d0(0x232)](_0x44b9d0(0x24b)),console[_0x44b9d0(0x232)](_0x44b9d0(0x274)),console[_0x44b9d0(0x232)]('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0x510957(0x20a)]['slice'](0x2),VERSION_FLAGS=new Set([a0_0x510957(0x1fe),'-v','-V']),HELP_FLAGS=new Set(['--help','-h']);cliArgs[a0_0x510957(0x28d)](_0x50d81b=>VERSION_FLAGS[a0_0x510957(0x29f)](_0x50d81b))&&(console[a0_0x510957(0x232)](a0_0x510957(0x288)+getPackageVersion()),process[a0_0x510957(0x2a6)](0x0));cliArgs[a0_0x510957(0x28d)](_0x52b658=>HELP_FLAGS[a0_0x510957(0x29f)](_0x52b658))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x22ed4d){const _0xfe0bac=a0_0x510957;for(let _0x110ccd=0x0;_0x110ccd<cliArgs[_0xfe0bac(0x244)];_0x110ccd++){const _0xa867f7=cliArgs[_0x110ccd];if(_0xa867f7[_0xfe0bac(0x291)]('--'+_0x22ed4d+'='))return _0xa867f7[_0xfe0bac(0x2b2)](('--'+_0x22ed4d+'=')[_0xfe0bac(0x244)]);if(_0xa867f7==='--'+_0x22ed4d&&_0x110ccd+0x1<cliArgs[_0xfe0bac(0x244)])return cliArgs[_0x110ccd+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs['length'];i++){const arg=cliArgs[i];if(VERSION_FLAGS['has'](arg)||HELP_FLAGS[a0_0x510957(0x29f)](arg))continue;if(arg[a0_0x510957(0x291)]('--api-key='))continue;if(arg===a0_0x510957(0x220)){i++;continue;}args[a0_0x510957(0x2ab)](arg);}const WORKSPACE_ROOT=process[a0_0x510957(0x1f8)]['WORKSPACE_ROOT']||process['env'][a0_0x510957(0x29c)]||process[a0_0x510957(0x282)](),ENABLE_WORKSPACE_MODE=process['env']['ENABLE_WORKSPACE_MODE']!==a0_0x510957(0x266),MORPH_API_KEY=getCliArg('api-key')??process[a0_0x510957(0x1f8)][a0_0x510957(0x1f9)],MORPH_API_URL=process[a0_0x510957(0x1f8)][a0_0x510957(0x276)],MORPH_LARGE_APPLY=process[a0_0x510957(0x1f8)]['MORPH_LARGE_APPLY']!==a0_0x510957(0x266),MORPH_WARP_GREP_TIMEOUT=process['env'][a0_0x510957(0x293)]?parseInt(process[a0_0x510957(0x1f8)][a0_0x510957(0x293)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process['env'][a0_0x510957(0x1eb)]?new Set(process[a0_0x510957(0x1f8)][a0_0x510957(0x1eb)]['split'](',')[a0_0x510957(0x252)](_0x526c71=>_0x526c71[a0_0x510957(0x292)]())[a0_0x510957(0x2c6)](_0x5b3226=>_0x5b3226[a0_0x510957(0x244)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x510957(0x228)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x510957(0x29f)](tool)&&console[a0_0x510957(0x1f6)](a0_0x510957(0x27b)+tool+a0_0x510957(0x2b9)+[...KNOWN_TOOL_NAMES]['join'](',\x20'));}console[a0_0x510957(0x1f6)]('Disabled\x20tools:\x20'+[...DISABLED_TOOLS][a0_0x510957(0x201)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x510957(0x291)](a0_0x510957(0x302))&&!MORPH_API_KEY[a0_0x510957(0x291)](a0_0x510957(0x27a))&&logMcpStderr(a0_0x510957(0x2a4));async function reportMorphError(_0x3af346){const _0x4f9a85=a0_0x510957;try{await a0_0x56b343[_0x4f9a85(0x229)](_0x4f9a85(0x25a),{..._0x3af346,'timestamp':new Date()[_0x4f9a85(0x218)](),'source':_0x3af346['source']||_0x4f9a85(0x23c),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x3af346[_0x4f9a85(0x2a8)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x4f9a85(0x23e),'Authorization':_0x4f9a85(0x2e1)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x5a80db,_0x4f9cb8){const _0x4b8599=a0_0x510957;if(_0x5a80db&&typeof _0x5a80db===_0x4b8599(0x1e0)&&'status'in _0x5a80db)return _0x5a80db[_0x4b8599(0x1d9)];if(_0x5a80db&&typeof _0x5a80db===_0x4b8599(0x1e0)&&_0x4b8599(0x213)in _0x5a80db)return _0x5a80db[_0x4b8599(0x213)]?.['status'];const _0x1fbad2=_0x4f9cb8[_0x4b8599(0x1df)](/\b(401|429)\b/);return _0x1fbad2?parseInt(_0x1fbad2[0x1],0xa):null;}function handleMorphAPIError(_0x32adb8){const _0x650a22=a0_0x510957,_0x3fdf6f=_0x32adb8 instanceof Error?_0x32adb8[_0x650a22(0x2ad)]:String(_0x32adb8),_0x4a4596=extractStatusCode(_0x32adb8,_0x3fdf6f);switch(_0x4a4596){case 0x191:return{'content':[{'type':_0x650a22(0x299),'text':'Authentication\x20failed:\x20Your\x20Morph\x20API\x20key\x20is\x20invalid\x20or\x20has\x20been\x20revoked.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key,\x20then\x20update\x20your\x20MCP\x20configuration.'}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x650a22(0x299),'text':_0x650a22(0x222)}],'isError':!![]};default:return null;}}args[a0_0x510957(0x244)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x510957(0x2d0)),logMcpStderr(a0_0x510957(0x2a5)),logMcpStderr(a0_0x510957(0x259)),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr(a0_0x510957(0x2e0)),logMcpStderr(a0_0x510957(0x26e)));function normalizePath(_0x485500){const _0xc93e56=a0_0x510957;return a0_0xa4cb51[_0xc93e56(0x260)](_0x485500);}function expandHome(_0x56bddb){const _0x195882=a0_0x510957;if(_0x56bddb[_0x195882(0x291)]('~/')||_0x56bddb==='~')return a0_0xa4cb51['join'](a0_0xd57d56[_0x195882(0x1f4)](),_0x56bddb[_0x195882(0x2b2)](0x1));return _0x56bddb;}let allowedDirectories=await Promise[a0_0x510957(0x2f0)](args[a0_0x510957(0x252)](async _0x95a02=>{const _0x41afdd=a0_0x510957,_0x1e64c9=expandHome(_0x95a02),_0x1d1d23=a0_0xa4cb51[_0x41afdd(0x2a1)](_0x1e64c9);try{const _0x37602f=await a0_0x53dc6d[_0x41afdd(0x231)](_0x1d1d23);return normalizePath(_0x37602f);}catch(_0x1511e6){return normalizePath(_0x1d1d23);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x510957(0x244)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x510957(0x2ab)](workspaceDir),logMcpStderr(a0_0x510957(0x2bf)+workspaceDir+a0_0x510957(0x22b)));}catch(a0_0xd51ef0){logMcpStderr(a0_0x510957(0x1da)+a0_0xd51ef0);}async function detectWorkspaceRoot(_0x1b429a){const _0x338a97=a0_0x510957;let _0x2514af=a0_0xa4cb51[_0x338a97(0x2a1)](_0x1b429a);const _0x2a804e=['.git',_0x338a97(0x1e1),'package.json','Cargo.toml','pyproject.toml',_0x338a97(0x2e9),_0x338a97(0x2b7),_0x338a97(0x303),_0x338a97(0x284)];while(_0x2514af!==a0_0xa4cb51['dirname'](_0x2514af)){for(const _0x5011fa of _0x2a804e){const _0x143166=a0_0xa4cb51['join'](_0x2514af,_0x5011fa);try{return await a0_0x53dc6d[_0x338a97(0x22f)](_0x143166),normalizePath(_0x2514af);}catch{}}_0x2514af=a0_0xa4cb51[_0x338a97(0x2c0)](_0x2514af);}return normalizePath(_0x1b429a);}await Promise[a0_0x510957(0x2f0)](args[a0_0x510957(0x252)](async _0x459dc9=>{const _0x4e497e=a0_0x510957;try{const _0x29ccd1=await a0_0x53dc6d[_0x4e497e(0x2db)](expandHome(_0x459dc9));!_0x29ccd1[_0x4e497e(0x1e7)]()&&(logMcpStderr(_0x4e497e(0x250)+_0x459dc9+_0x4e497e(0x269)),process[_0x4e497e(0x2a6)](0x1));}catch(_0x41c79e){logMcpStderr(_0x4e497e(0x2ec)+_0x459dc9+':',_0x41c79e),process[_0x4e497e(0x2a6)](0x1);}}));async function validatePath(_0xbb079d){const _0x5703a4=a0_0x510957,_0x38890e=expandHome(_0xbb079d),_0x4c0722=a0_0xa4cb51['resolve'](_0x38890e);logger[_0x5703a4(0x26c)](_0x5703a4(0x2e7),_0x5703a4(0x1f2),{'raw_path':_0xbb079d,'absolute':_0x4c0722});try{const _0x4ce698=await a0_0x53dc6d[_0x5703a4(0x231)](_0x4c0722);return logger[_0x5703a4(0x26c)]('MCP',_0x5703a4(0x20b),{'resolved':_0x4ce698,'symlink':_0x4ce698!==_0x4c0722}),_0x4ce698;}catch(_0x484e01){if(_0x484e01[_0x5703a4(0x296)]===_0x5703a4(0x216)){const _0x2bac78=a0_0xa4cb51[_0x5703a4(0x2c0)](_0x4c0722);try{const _0x2b6c16=await a0_0x53dc6d[_0x5703a4(0x231)](_0x2bac78),_0x25233e=a0_0xa4cb51[_0x5703a4(0x201)](_0x2b6c16,a0_0xa4cb51['basename'](_0x4c0722));return logger[_0x5703a4(0x26c)](_0x5703a4(0x2e7),_0x5703a4(0x20b),{'resolved':_0x25233e,'new_file':!![]}),_0x25233e;}catch{logger['error'](_0x5703a4(0x2e7),_0x5703a4(0x295),{'raw_path':_0xbb079d,'error':_0x5703a4(0x223)+_0x2bac78});throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x2bac78);}}logger[_0x5703a4(0x1f6)](_0x5703a4(0x2e7),_0x5703a4(0x295),{'raw_path':_0xbb079d,'error':_0x484e01[_0x5703a4(0x2ad)]});throw _0x484e01;}}const MorphEditFileArgsSchema=z['object']({'path':z['string'](),'code_edit':z[a0_0x510957(0x21a)]()['describe'](a0_0x510957(0x2ef)),'instruction':z['string']()[a0_0x510957(0x255)]('A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.'),'dryRun':z['boolean']()[a0_0x510957(0x208)](![])['describe'](a0_0x510957(0x2ac))}),CODEBASE_SEARCH_QUERY_DESCRIPTION='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.',WarpGrepArgsSchema=z[a0_0x510957(0x1e0)]({'search_string':z[a0_0x510957(0x21a)]()[a0_0x510957(0x255)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x510957(0x21a)]()[a0_0x510957(0x255)](a0_0x510957(0x298)),'search_type':z['enum']([a0_0x510957(0x208),a0_0x510957(0x207)])[a0_0x510957(0x1e4)]()['describe'](a0_0x510957(0x267))}),WarpGrepGitHubArgsSchema=z[a0_0x510957(0x1e0)]({'search_string':z[a0_0x510957(0x21a)]()[a0_0x510957(0x255)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x510957(0x21a)]()[a0_0x510957(0x1e4)]()[a0_0x510957(0x255)](a0_0x510957(0x290)),'owner_repo':z[a0_0x510957(0x21a)]()[a0_0x510957(0x1e4)]()[a0_0x510957(0x255)]('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z[a0_0x510957(0x21a)]()[a0_0x510957(0x1e4)]()[a0_0x510957(0x255)]('Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)')}),CodebaseSearchArgsSchema=z[a0_0x510957(0x1e0)]({'query':z[a0_0x510957(0x21a)]()[a0_0x510957(0x255)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z[a0_0x510957(0x21a)]()[a0_0x510957(0x255)](a0_0x510957(0x2fd)),'branch':z[a0_0x510957(0x21a)]()[a0_0x510957(0x1e4)]()['describe']('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x510957(0x21a)]()[a0_0x510957(0x1e4)]()['describe'](a0_0x510957(0x1fa)),'targetDirectories':z[a0_0x510957(0x2f7)](z[a0_0x510957(0x21a)]())[a0_0x510957(0x208)]([])[a0_0x510957(0x255)](a0_0x510957(0x251)),'limit':z[a0_0x510957(0x28c)]()[a0_0x510957(0x1e4)]()['default'](0xa)[a0_0x510957(0x255)](a0_0x510957(0x278))}),server=new Server({'name':a0_0x510957(0x1f3),'version':a0_0x510957(0x215)},{'capabilities':{'tools':{}}});server[a0_0x510957(0x2b6)](ListToolsRequestSchema,async()=>{const _0x32251a=a0_0x510957,_0x31911a=[{'name':TOOL_NAMES['EDIT_FILE'],'description':'**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES.**\x20Fast,\x20accurate,\x20and\x20prevents\x20context\x20pollution.\x20Especially\x20useful\x20when\x20making\x20multiple\x20edits\x20in\x20one\x20file:\x20describe\x20all\x20changes\x20in\x20a\x20single\x20call\x20and\x20the\x20semantic\x20edit\x20applies\x20them\x20all\x20at\x20once,\x20more\x20accurately\x20and\x20faster\x20than\x20sequential\x20edits.\x20Unlike\x20search-and-replace\x20or\x20patch\x20edits\x20which\x20do\x20narrow\x20edits\x20one\x20at\x20a\x20time,\x20with\x20this\x20tool\x20you\x20should\x20do\x20all\x20your\x20code\x20changes\x20in\x20one\x20go\x20separated\x20by\x20`//\x20...\x20existing\x20code\x20...`\x20markers.\x20This\x20saves\x20tokens\x20and\x20improves\x20performance\x20because\x20you\x20do\x20not\x20need\x20to\x20reread\x20files\x20before\x20edits.\x20All\x20three\x20parameters\x20are\x20required.\x0a\x0a'+_0x32251a(0x2dc)+'-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a'+_0x32251a(0x271)+_0x32251a(0x28f)+_0x32251a(0x2bc)+_0x32251a(0x2d1)+_0x32251a(0x257)+_0x32251a(0x200)+_0x32251a(0x22e)+_0x32251a(0x1e9)+_0x32251a(0x270)+_0x32251a(0x2d2),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x32251a(0x27e)],'description':'A\x20code\x20exploration\x20tool,\x20use\x20this\x20tool\x20when\x20exploring\x20an\x20unfamiliar\x20codebase,\x20and\x20you\x27re\x20unsure\x20of\x20the\x20exact\x20file\x20or\x20string\x20to\x20look\x20for.\x20This\x20tool\x20will\x20find\x20all\x20relevant\x20bits\x20of\x20code\x20given\x20a\x20natural\x20lanugage\x20description,\x20or\x20questin\x20of\x20the\x20thing\x20you\x27re\x20looking\x20for.\x20'+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+_0x32251a(0x287)+'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':!![]}],_0x5205e6=_0x31911a['filter'](_0x170539=>{const _0x74cda5=_0x32251a;if(DISABLED_TOOLS[_0x74cda5(0x29f)](_0x170539[_0x74cda5(0x2ca)]))return console['error'](_0x74cda5(0x1ea)+_0x170539['name']+_0x74cda5(0x253)),![];if('requiresApiKey'in _0x170539&&_0x170539[_0x74cda5(0x283)]&&!MORPH_API_KEY)return logMcpStderr(_0x74cda5(0x23f)+_0x170539['name']+_0x74cda5(0x2c9)),![];return!![];});return{'tools':_0x5205e6[_0x32251a(0x252)](_0x4629ac=>({'name':_0x4629ac[_0x32251a(0x2ca)],'description':_0x4629ac[_0x32251a(0x224)],'inputSchema':_0x4629ac[_0x32251a(0x279)]}))};}),server[a0_0x510957(0x2b6)](CallToolRequestSchema,async _0x1d7e7a=>{const _0x4c66f0=a0_0x510957,{name:_0x4170d1,arguments:_0x21926f}=_0x1d7e7a[_0x4c66f0(0x241)],_0x551b55=Date[_0x4c66f0(0x1ee)]();logger[_0x4c66f0(0x26c)](_0x4c66f0(0x2e7),'tool_call_received',{'tool':_0x4170d1,'args':_0x4170d1===_0x4c66f0(0x2f9)?{'path':_0x21926f?.[_0x4c66f0(0x217)],'instruction':_0x21926f?.[_0x4c66f0(0x254)]||_0x21926f?.[_0x4c66f0(0x24a)],'dryRun':_0x21926f?.['dryRun']}:_0x21926f});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x4c66f0(0x299),'text':_0x4c66f0(0x2c1)}],'isError':!![]};if(!MORPH_API_KEY[_0x4c66f0(0x291)]('sk-')&&!MORPH_API_KEY['startsWith'](_0x4c66f0(0x27a)))return{'content':[{'type':_0x4c66f0(0x299),'text':_0x4c66f0(0x1fc)}],'isError':!![]};if(DISABLED_TOOLS['has'](_0x4170d1))return{'content':[{'type':_0x4c66f0(0x299),'text':_0x4c66f0(0x209)+_0x4170d1+'\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.'}],'isError':![]};switch(_0x4170d1){case TOOL_NAMES[_0x4c66f0(0x277)]:{let _0x169b3d=_0x21926f;if(_0x169b3d&&typeof _0x169b3d===_0x4c66f0(0x1e0)){if(!(_0x4c66f0(0x217)in _0x169b3d)){const _0x59360b=_0x169b3d[_0x4c66f0(0x1ff)]??_0x169b3d[_0x4c66f0(0x1f0)]??_0x169b3d[_0x4c66f0(0x294)]??_0x169b3d['file_path']??_0x169b3d[_0x4c66f0(0x2cb)];if(_0x59360b)_0x169b3d={..._0x169b3d,'path':_0x59360b};}_0x4c66f0(0x24a)in _0x169b3d&&!(_0x4c66f0(0x254)in _0x169b3d)&&(_0x169b3d={..._0x169b3d,'instruction':_0x169b3d['instructions']});if(!(_0x4c66f0(0x28a)in _0x169b3d)){const _0x21d311=_0x169b3d['code']??_0x169b3d['new_string']??_0x169b3d[_0x4c66f0(0x2fb)]??_0x169b3d['edit'];if(_0x21d311)_0x169b3d={..._0x169b3d,'code_edit':_0x21d311};}}const _0x595b70=MorphEditFileArgsSchema[_0x4c66f0(0x29b)](_0x169b3d);if(!_0x595b70[_0x4c66f0(0x262)])throw new Error(_0x4c66f0(0x219)+_0x595b70[_0x4c66f0(0x1f6)]);const _0x3666dc=await validatePath(_0x595b70[_0x4c66f0(0x28e)]['path']);let _0x5af96d=null,_0x3c41bf=!![],_0x169cd3=null;try{_0x5af96d=await a0_0x53dc6d[_0x4c66f0(0x227)](_0x3666dc,_0x4c66f0(0x2d9)),logger[_0x4c66f0(0x26c)](_0x4c66f0(0x2e7),_0x4c66f0(0x281),{'path':_0x3666dc,'size_bytes':_0x5af96d['length']});}catch(_0x13ed9a){const _0x4c429d=_0x13ed9a[_0x4c66f0(0x296)];_0x4c429d===_0x4c66f0(0x216)?(_0x3c41bf=![],_0x5af96d='',logger[_0x4c66f0(0x26c)](_0x4c66f0(0x2e7),'file_read_complete',{'path':_0x3666dc,'exists':![]})):(_0x169cd3=_0x4c66f0(0x2f1)+(_0x4c429d||_0x4c66f0(0x2eb))+_0x4c66f0(0x2e5)+(_0x13ed9a instanceof Error?_0x13ed9a[_0x4c66f0(0x2ad)]:String(_0x13ed9a)),logger[_0x4c66f0(0x1f6)]('MCP','file_read_failed',{'path':_0x3666dc,'error':_0x169cd3}),logMcpStderr(_0x4c66f0(0x23f)+_0x169cd3));}let _0x3c2fb0;try{const _0xb86e4f=MORPH_API_KEY;if(!_0xb86e4f)throw new Error(_0x4c66f0(0x265));const _0x4adbac=a0_0xa4cb51['dirname'](_0x3666dc),_0xedec2e=a0_0xa4cb51[_0x4c66f0(0x21d)](_0x3666dc);logger['debug'](_0x4c66f0(0x2e7),'api_request_start',{'model':_0x4c66f0(0x1ef),'path':_0x595b70['data'][_0x4c66f0(0x217)],'instruction_len':_0x595b70['data']['instruction'][_0x4c66f0(0x244)],'code_edit_len':_0x595b70[_0x4c66f0(0x28e)][_0x4c66f0(0x28a)][_0x4c66f0(0x244)],'original_code_len':_0x5af96d?.[_0x4c66f0(0x244)]??0x0,'dry_run':_0x595b70[_0x4c66f0(0x28e)][_0x4c66f0(0x285)]});const _0x1cd819=Date['now'](),_0x4400ad=await executeEditFile({'target_filepath':_0xedec2e,'code_edit':_0x595b70[_0x4c66f0(0x28e)][_0x4c66f0(0x28a)],'instruction':_0x595b70[_0x4c66f0(0x28e)][_0x4c66f0(0x254)]},{'morphApiKey':_0xb86e4f,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x4adbac,'autoWrite':!_0x595b70[_0x4c66f0(0x28e)][_0x4c66f0(0x285)],'generateUdiff':![],'debug':![]}),_0x1f12a0=Date['now']()-_0x1cd819;_0x3c2fb0=_0x4400ad['completionId'];if(!_0x4400ad[_0x4c66f0(0x262)])throw new Error(_0x4400ad[_0x4c66f0(0x1f6)]||'Morph\x20FastApply\x20failed\x20without\x20error\x20message');const _0x49e2a9=_0x4400ad[_0x4c66f0(0x2ce)],_0x312d62=_0x4c66f0(0x29a)+_0x49e2a9[_0x4c66f0(0x29e)]+_0x4c66f0(0x1e2)+_0x49e2a9[_0x4c66f0(0x24e)]+_0x4c66f0(0x25d)+_0x49e2a9[_0x4c66f0(0x211)];logger[_0x4c66f0(0x26c)](_0x4c66f0(0x2e7),_0x4c66f0(0x280),{'tool':_0x4c66f0(0x2f9),'success':!![],'latency_ms':Date[_0x4c66f0(0x1ee)]()-_0x551b55,'edit_latency_ms':_0x1f12a0,'changes':{'added':_0x49e2a9[_0x4c66f0(0x29e)],'removed':_0x49e2a9[_0x4c66f0(0x24e)],'modified':_0x49e2a9[_0x4c66f0(0x211)]},'completion_id':_0x3c2fb0});if(_0x595b70['data'][_0x4c66f0(0x285)])return{'content':[{'type':_0x4c66f0(0x299),'text':_0x4c66f0(0x2c2)+(_0x3c41bf?'':_0x4c66f0(0x1e6))+':\x20'+_0x595b70[_0x4c66f0(0x28e)]['instruction']+_0x4c66f0(0x22c)+_0x312d62+_0x4c66f0(0x286)+_0x595b70[_0x4c66f0(0x28e)][_0x4c66f0(0x217)]+'.'}]};return{'content':[{'type':_0x4c66f0(0x299),'text':_0x4c66f0(0x2a3)+(_0x3c41bf?_0x4c66f0(0x25f):_0x4c66f0(0x1ed))+':\x20'+_0x595b70['data'][_0x4c66f0(0x254)]+_0x4c66f0(0x22c)+_0x312d62+_0x4c66f0(0x286)+_0x595b70[_0x4c66f0(0x28e)][_0x4c66f0(0x217)]+'.'}]};}catch(_0x28f040){const _0xebf647=handleMorphAPIError(_0x28f040);if(_0xebf647)return logger['error'](_0x4c66f0(0x2e7),_0x4c66f0(0x2a0),{'tool':'edit_file','error':_0x4c66f0(0x20c),'latency_ms':Date['now']()-_0x551b55}),_0xebf647;const _0x1904c9=_0x28f040 instanceof Error?_0x28f040[_0x4c66f0(0x2ad)]:String(_0x28f040);return logger['error'](_0x4c66f0(0x2e7),'tool_call_error',{'tool':_0x4c66f0(0x2f9),'error':_0x1904c9,'path':_0x595b70[_0x4c66f0(0x28e)][_0x4c66f0(0x217)],'validated_path':_0x3666dc,'latency_ms':Date[_0x4c66f0(0x1ee)]()-_0x551b55,'stack':_0x28f040 instanceof Error?_0x28f040[_0x4c66f0(0x226)]:undefined}),reportMorphError({'error_message':_0x1904c9,'error_type':_0x28f040 instanceof Error?_0x28f040[_0x4c66f0(0x304)][_0x4c66f0(0x2ca)]:_0x4c66f0(0x206),'context':{'tool':'edit_file','completion_id':_0x3c2fb0,'file_path':_0x595b70[_0x4c66f0(0x28e)][_0x4c66f0(0x217)],'validated_path':_0x3666dc,'instruction':_0x595b70[_0x4c66f0(0x28e)][_0x4c66f0(0x254)],'model':MORPH_LARGE_APPLY?_0x4c66f0(0x29d):_0x4c66f0(0x1ef),'dry_run':_0x595b70[_0x4c66f0(0x28e)]['dryRun'],'file_exists':_0x3c41bf,'file_read_error':_0x169cd3,'file_readable':_0x5af96d!==null,'request_content':{'path':_0x595b70[_0x4c66f0(0x28e)][_0x4c66f0(0x217)],'code_edit':_0x595b70['data'][_0x4c66f0(0x28a)],'instruction':_0x595b70[_0x4c66f0(0x28e)][_0x4c66f0(0x254)],'original_code':_0x5af96d!==null?_0x5af96d[_0x4c66f0(0x244)]>0xc350?_0x5af96d['substring'](0x0,0xc350)+_0x4c66f0(0x2e6)+_0x5af96d[_0x4c66f0(0x244)]+_0x4c66f0(0x2b3):_0x5af96d:'[could\x20not\x20read\x20file:\x20'+(_0x169cd3||'unknown\x20error')+']','original_code_length':_0x5af96d?.[_0x4c66f0(0x244)]??0x0,'model':MORPH_LARGE_APPLY?_0x4c66f0(0x29d):'morph-v3-fast','dry_run':_0x595b70[_0x4c66f0(0x28e)][_0x4c66f0(0x285)]}},'stack_trace':_0x28f040 instanceof Error?_0x28f040[_0x4c66f0(0x226)]:undefined,'source':_0x4c66f0(0x23c)})[_0x4c66f0(0x272)](()=>{}),{'content':[{'type':_0x4c66f0(0x299),'text':_0x4c66f0(0x2d8)+_0x1904c9}],'isError':!![]};}}case TOOL_NAMES[_0x4c66f0(0x27e)]:{const _0x48afe4=WarpGrepArgsSchema[_0x4c66f0(0x29b)](_0x21926f);if(!_0x48afe4['success'])return{'content':[{'type':'text','text':_0x4c66f0(0x21b)+_0x48afe4['error']}],'isError':!![]};const _0x38fb01=_0x17844e=>{const _0x5c0f0c=_0x4c66f0,_0x5238b3=[];for(const _0x2ea8ae of _0x17844e||[]){if(_0x2ea8ae[_0x5c0f0c(0x239)]===_0x5c0f0c(0x2fc)&&Array[_0x5c0f0c(0x2f3)](_0x2ea8ae[_0x5c0f0c(0x1f7)]))for(const _0x36bc78 of _0x2ea8ae[_0x5c0f0c(0x1f7)]){try{const _0x392518=_0x36bc78[_0x5c0f0c(0x297)]?.[_0x5c0f0c(0x2ca)],_0x3df743=JSON['parse'](_0x36bc78[_0x5c0f0c(0x297)]?.[_0x5c0f0c(0x301)]||'{}');if(_0x392518===_0x5c0f0c(0x1ec))_0x5238b3[_0x5c0f0c(0x2ab)](_0x5c0f0c(0x245)+_0x3df743[_0x5c0f0c(0x22a)]+'\x27\x20'+(_0x3df743[_0x5c0f0c(0x217)]||'.'));else{if(_0x392518===_0x5c0f0c(0x204))_0x5238b3[_0x5c0f0c(0x2ab)](_0x5c0f0c(0x249)+_0x3df743[_0x5c0f0c(0x217)]);else{if(_0x392518===_0x5c0f0c(0x20e))_0x5238b3['push'](_0x5c0f0c(0x2d6)+(_0x3df743['command']||'.'));else{if(_0x392518==='glob')_0x5238b3[_0x5c0f0c(0x2ab)]('glob\x20\x27'+_0x3df743[_0x5c0f0c(0x22a)]+'\x27\x20'+(_0x3df743[_0x5c0f0c(0x217)]||'.'));else _0x392518===_0x5c0f0c(0x25c)&&_0x5238b3[_0x5c0f0c(0x2ab)]('finish');}}}}catch{}}}return _0x5238b3;},_0x214bdb=_0x4ac1f2=>{const _0x5231ca=_0x4c66f0,_0x4f206b=[];if(!_0x4ac1f2||!Array[_0x5231ca(0x2f3)](_0x4ac1f2))return _0x4f206b;const _0x423230=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':_0x5231ca(0x2c5),'tool':_0x5231ca(0x204)},{'pattern':/\[PATH ERROR\]/,'error_type':_0x5231ca(0x2cc),'tool':_0x5231ca(0x204)},{'pattern':/\[READ ERROR\]/,'error_type':'ReadError','tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x5231ca(0x2c8),'tool':'read'},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x5231ca(0x23d),'tool':_0x5231ca(0x24f)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x5231ca(0x2f8),'tool':_0x5231ca(0x24f)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x5231ca(0x2c8),'tool':_0x5231ca(0x204)},{'pattern':/\[SYMLINK\]/,'error_type':_0x5231ca(0x2be),'tool':_0x5231ca(0x204)},{'pattern':/not a text file/,'error_type':_0x5231ca(0x2c8),'tool':_0x5231ca(0x204)},{'pattern':/symbolic link/,'error_type':_0x5231ca(0x2be),'tool':'read'},{'pattern':/Error reading file:/,'error_type':_0x5231ca(0x1f5),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x5231ca(0x2bb),'tool':_0x5231ca(0x2eb)}];let _0x2fc591=0x0;for(const _0x2009fb of _0x4ac1f2){_0x2009fb['role']===_0x5231ca(0x2fc)&&Array['isArray'](_0x2009fb[_0x5231ca(0x1f7)])&&_0x2fc591++;const _0xf5092f=_0x2009fb[_0x5231ca(0x2fb)];if((_0x2009fb[_0x5231ca(0x239)]===_0x5231ca(0x230)||_0x2009fb[_0x5231ca(0x239)]===_0x5231ca(0x2e4))&&_0xf5092f&&typeof _0xf5092f===_0x5231ca(0x21a))for(const {pattern:_0x544985,error_type:_0x292caa,tool:_0x3e2d49}of _0x423230){const _0x918175=_0xf5092f[_0x5231ca(0x1df)](new RegExp(_0x544985[_0x5231ca(0x2bd)],'g'));if(_0x918175)for(const _0x1ca073 of _0x918175){const _0x37e41d=_0xf5092f[_0x5231ca(0x28b)](_0x1ca073),_0x2392d4=_0xf5092f[_0x5231ca(0x21c)](_0x37e41d,Math[_0x5231ca(0x1db)](_0x37e41d+0xc8,_0xf5092f[_0x5231ca(0x244)]));_0x4f206b[_0x5231ca(0x2ab)]({'tool':_0x3e2d49,'error_type':_0x292caa,'error_message':_0x2392d4['split']('\x0a')[0x0],'turn':_0x2fc591});}}}return _0x4f206b;};try{const _0x4184a5=a0_0xa4cb51['resolve'](_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x1e3)]),_0x1564c8=_0x48afe4[_0x4c66f0(0x28e)]['search_type'],_0x11cdd2=_0x1564c8==='node_modules'?{'allowNames':[_0x4c66f0(0x207)]}:undefined,_0x501107=new LocalRipgrepProvider(_0x4184a5,undefined,_0x11cdd2);logger[_0x4c66f0(0x26c)](_0x4c66f0(0x2e7),'provider_created',{'type':_0x4c66f0(0x26f),'repo_root':_0x4184a5,'search_type':_0x1564c8||_0x4c66f0(0x208)}),logger[_0x4c66f0(0x26c)](_0x4c66f0(0x2e7),'warp_grep_start',{'query':_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x2f2)],'repo_root':_0x4184a5,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0xba5e80=Date[_0x4c66f0(0x1ee)](),_0x1675e3=await runWarpGrep({'searchTerm':_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x2f2)],'repoRoot':_0x4184a5,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x501107,'search_type':_0x1564c8}),_0x509fe7=Date[_0x4c66f0(0x1ee)]()-_0xba5e80,_0xee7836=_0x1675e3['finish']?.[_0x4c66f0(0x214)]?.[_0x4c66f0(0x2de)]?.['length']??0x0;logger[_0x4c66f0(0x26c)]('MCP',_0x4c66f0(0x2af),{'termination':_0x1675e3[_0x4c66f0(0x1fb)],'turns':_0x1675e3[_0x4c66f0(0x2ea)]?.['turns']??0x0,'files_found':_0xee7836,'latency_ms':_0x509fe7});const _0x2adfcc=_0x214bdb(_0x1675e3[_0x4c66f0(0x202)]);_0x2adfcc['length']>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0x2adfcc[_0x4c66f0(0x244)]+_0x4c66f0(0x2fa),'error_type':_0x4c66f0(0x210),'level':'warn','tool':'codebase_search','context':{'repo_path':_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x1e3)],'query':_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x2f2)],'model':_0x4c66f0(0x237),'termination_reason':_0x1675e3['terminationReason'],'sub_tool_errors':_0x2adfcc,'timings':_0x1675e3[_0x4c66f0(0x2ea)],'tool_calls':_0x38fb01(_0x1675e3['messages']),'messages':_0x1675e3[_0x4c66f0(0x202)]?.[_0x4c66f0(0x252)](_0x53fd5e=>({'role':_0x53fd5e[_0x4c66f0(0x239)],'content':_0x53fd5e[_0x4c66f0(0x2fb)],..._0x53fd5e[_0x4c66f0(0x1f7)]?{'tool_calls':_0x53fd5e[_0x4c66f0(0x1f7)]['length']}:{},..._0x53fd5e[_0x4c66f0(0x2cd)]?{'tool_call_id':_0x53fd5e[_0x4c66f0(0x2cd)]}:{}}))},'source':_0x4c66f0(0x23c)})[_0x4c66f0(0x272)](()=>{});let _0x1f8874='';if(_0x1675e3['terminationReason']===_0x4c66f0(0x2b1)&&_0x1675e3[_0x4c66f0(0x25c)]?.[_0x4c66f0(0x214)]?.[_0x4c66f0(0x2de)]){const _0x1591ff=_0x1675e3[_0x4c66f0(0x25c)]['metadata'][_0x4c66f0(0x2de)];if(_0x1591ff['length']===0x0)return _0x1f8874=_0x1675e3[_0x4c66f0(0x25c)]['payload']||_0x4c66f0(0x289),{'content':[{'type':_0x4c66f0(0x299),'text':_0x1f8874}]};const _0xd5aeca=[],_0x18cb88=[_0x4c66f0(0x203)];for(const _0x14b488 of _0x1675e3[_0x4c66f0(0x202)]){if(_0x14b488[_0x4c66f0(0x239)]===_0x4c66f0(0x2fc)&&Array[_0x4c66f0(0x2f3)](_0x14b488['tool_calls']))for(const _0x50805e of _0x14b488[_0x4c66f0(0x1f7)]){try{const _0x41ded1=_0x50805e[_0x4c66f0(0x297)]?.[_0x4c66f0(0x2ca)],_0x523c9d=JSON[_0x4c66f0(0x268)](_0x50805e[_0x4c66f0(0x297)]?.[_0x4c66f0(0x301)]||'{}');if(_0x41ded1===_0x4c66f0(0x1ec))_0x18cb88['push'](_0x4c66f0(0x256)+_0x523c9d['pattern']+_0x4c66f0(0x263)+(_0x523c9d[_0x4c66f0(0x217)]||'.')+'`');else{if(_0x41ded1==='read')_0x18cb88[_0x4c66f0(0x2ab)](_0x4c66f0(0x27f)+_0x523c9d[_0x4c66f0(0x217)]+'`');else{if(_0x41ded1===_0x4c66f0(0x20e))_0x18cb88[_0x4c66f0(0x2ab)]('-\x20Listed\x20directory\x20`'+(_0x523c9d[_0x4c66f0(0x261)]||'.')+'`');else _0x41ded1===_0x4c66f0(0x2b4)&&_0x18cb88[_0x4c66f0(0x2ab)](_0x4c66f0(0x2a9)+_0x523c9d[_0x4c66f0(0x22a)]+_0x4c66f0(0x1e5)+(_0x523c9d[_0x4c66f0(0x217)]||'.')+'`');}}}catch{}}}_0xd5aeca[_0x4c66f0(0x2ab)](_0x18cb88['join']('\x0a'));const _0x3826aa=['',_0x4c66f0(0x2cf)];for(const _0x5d5eef of _0x1591ff){if(_0x5d5eef[_0x4c66f0(0x264)]==='*')_0x3826aa[_0x4c66f0(0x2ab)]('-\x20'+_0x5d5eef['path']+':*');else{if(Array[_0x4c66f0(0x2f3)](_0x5d5eef[_0x4c66f0(0x264)])){const _0x5ef306=_0x5d5eef['lines'][_0x4c66f0(0x252)](([_0x314ce1,_0x49e224])=>{if(_0x314ce1===_0x49e224)return''+_0x314ce1;return _0x314ce1+'-'+_0x49e224;});_0x3826aa[_0x4c66f0(0x2ab)]('-\x20'+_0x5d5eef[_0x4c66f0(0x217)]+':'+_0x5ef306[_0x4c66f0(0x201)](','));}else _0x3826aa['push']('-\x20'+_0x5d5eef['path']+':*');}}_0x3826aa[_0x4c66f0(0x2ab)](''),_0xd5aeca[_0x4c66f0(0x2ab)](_0x3826aa['join']('\x0a')),_0xd5aeca['push'](_0x4c66f0(0x2ae));const _0x5c4887=[],_0x4e8cdc=[];for(const _0x5b9f00 of _0x1591ff){let _0x33d5a2=a0_0xa4cb51[_0x4c66f0(0x2a1)](_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x1e3)],_0x5b9f00[_0x4c66f0(0x217)]),_0x35080f=null,_0x4d2d92=null;try{_0x35080f=await a0_0x53dc6d[_0x4c66f0(0x227)](_0x33d5a2,{'encoding':_0x4c66f0(0x2d9)});}catch(_0x52819b){const _0x1a369b=fixPathRepetition(_0x33d5a2);if(_0x1a369b)try{_0x35080f=await a0_0x53dc6d['readFile'](_0x1a369b,{'encoding':_0x4c66f0(0x2d9)}),_0x33d5a2=_0x1a369b;}catch{_0x4d2d92=_0x52819b instanceof Error?_0x52819b:new Error(String(_0x52819b));}else _0x4d2d92=_0x52819b instanceof Error?_0x52819b:new Error(String(_0x52819b));}if(_0x35080f!==null){const _0x120246=_0x35080f[_0x4c66f0(0x2da)](/\r?\n/),_0x3c3136=[];if(_0x5b9f00[_0x4c66f0(0x264)]==='*'||!Array[_0x4c66f0(0x2f3)](_0x5b9f00[_0x4c66f0(0x264)]))for(let _0x21a018=0x1;_0x21a018<=_0x120246[_0x4c66f0(0x244)];_0x21a018++){const _0x3950da=_0x120246[_0x21a018-0x1];_0x3c3136[_0x4c66f0(0x2ab)](_0x21a018+'|\x20'+_0x3950da);}else for(const [_0xe26e87,_0x3307b0]of _0x5b9f00['lines']){_0x3c3136[_0x4c66f0(0x244)]>0x0&&_0x3c3136['push']('');for(let _0x5182ab=_0xe26e87;_0x5182ab<=_0x3307b0&&_0x5182ab<=_0x120246[_0x4c66f0(0x244)];_0x5182ab++){const _0x5fbcf4=_0x120246[_0x5182ab-0x1];_0x3c3136['push'](_0x5182ab+'|\x20'+_0x5fbcf4);}}_0x4e8cdc[_0x4c66f0(0x2ab)]({'path':_0x5b9f00['path'],'content':_0x3c3136[_0x4c66f0(0x201)]('\x0a')});}else _0x5c4887['push'](_0x4c66f0(0x242)+_0x5b9f00[_0x4c66f0(0x217)]+_0x4c66f0(0x1dc)+(_0x4d2d92?.[_0x4c66f0(0x2ad)]||_0x4c66f0(0x2ed))+_0x4c66f0(0x21e));}try{const _0x1cf872=await compactFileContexts(_0x4e8cdc,_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x2f2)],MORPH_API_KEY,MORPH_API_URL);for(const _0x178778 of _0x1cf872){_0x5c4887[_0x4c66f0(0x2ab)](_0x4c66f0(0x242)+_0x178778[_0x4c66f0(0x217)]+'\x22>\x0a'+_0x178778[_0x4c66f0(0x2fb)]+_0x4c66f0(0x21e));}}catch(_0x325101){logger['warn']('MCP','compaction_failed',{'error':_0x325101 instanceof Error?_0x325101[_0x4c66f0(0x2ad)]:String(_0x325101),'files_count':_0x4e8cdc[_0x4c66f0(0x244)]});for(const _0x56a18f of _0x4e8cdc){_0x5c4887[_0x4c66f0(0x2ab)]('<file\x20path=\x22'+_0x56a18f['path']+_0x4c66f0(0x2b5)+_0x56a18f[_0x4c66f0(0x2fb)]+'\x0a</file>');}}_0xd5aeca[_0x4c66f0(0x2ab)](_0x5c4887[_0x4c66f0(0x201)]('\x0a\x0a')),_0x1f8874=_0xd5aeca[_0x4c66f0(0x201)]('\x0a');const _0x3d4d45=_0x1675e3[_0x4c66f0(0x2f5)]?.['filter'](_0x277232=>_0x277232[_0x4c66f0(0x2ad)]?.['startsWith'](_0x4c66f0(0x24d)))||[];if(_0x3d4d45[_0x4c66f0(0x244)]>0x0){const _0x3ba9aa=_0x3d4d45[_0x4c66f0(0x252)](_0x4cdb02=>_0x4cdb02['message'])['join'](';\x20');reportMorphError({'error_message':_0x3ba9aa,'error_type':_0x4c66f0(0x20d),'context':{'tool':_0x4c66f0(0x234),'repo_path':_0x48afe4['data'][_0x4c66f0(0x1e3)],'query':_0x48afe4[_0x4c66f0(0x28e)]['search_string'],'model':_0x4c66f0(0x237),'termination_reason':_0x4c66f0(0x243),'error_count':_0x3d4d45[_0x4c66f0(0x244)],'is_timeout':![],'timings':_0x1675e3[_0x4c66f0(0x2ea)],'files_attempted':_0x1591ff[_0x4c66f0(0x252)](_0x372a1f=>({'path':_0x372a1f['path'],'lines':_0x372a1f['lines']})),'tool_calls':_0x38fb01(_0x1675e3[_0x4c66f0(0x202)]),'messages':_0x1675e3[_0x4c66f0(0x202)]?.[_0x4c66f0(0x252)](_0x45de69=>({'role':_0x45de69['role'],'content':_0x45de69[_0x4c66f0(0x2fb)],..._0x45de69[_0x4c66f0(0x1f7)]?{'tool_calls':_0x45de69[_0x4c66f0(0x1f7)][_0x4c66f0(0x244)]}:{},..._0x45de69['tool_call_id']?{'tool_call_id':_0x45de69['tool_call_id']}:{}})),'request_content':{'query':_0x48afe4['data']['search_string'],'repo_path':_0x48afe4['data'][_0x4c66f0(0x1e3)],'repoRoot':a0_0xa4cb51[_0x4c66f0(0x2a1)](_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x1e3)]),'model':'morph-warp-grep-v2.1'}},'source':_0x4c66f0(0x23c)})[_0x4c66f0(0x272)](()=>{});}}else{if(_0x1675e3['terminationReason']===_0x4c66f0(0x25b)&&_0x1675e3[_0x4c66f0(0x2f5)][_0x4c66f0(0x244)]>0x0){const _0x2d5892=_0x1675e3[_0x4c66f0(0x2f5)][_0x4c66f0(0x252)](_0x84ea6e=>_0x84ea6e[_0x4c66f0(0x2ad)])[_0x4c66f0(0x201)](';\x20');_0x1f8874=_0x4c66f0(0x250)+_0x2d5892;const _0x102623=_0x2d5892[_0x4c66f0(0x221)]()[_0x4c66f0(0x235)](_0x4c66f0(0x212))||_0x2d5892[_0x4c66f0(0x221)]()[_0x4c66f0(0x235)]('timed\x20out')||_0x2d5892[_0x4c66f0(0x221)]()['includes'](_0x4c66f0(0x1fd)),_0x5be270=_0x1675e3[_0x4c66f0(0x25c)]?.[_0x4c66f0(0x214)]?.['files'],_0x2af8fd=_0x1675e3[_0x4c66f0(0x2f5)][0x0];reportMorphError({'error_message':_0x2d5892,'error_type':_0x102623?_0x4c66f0(0x2fe):_0x2af8fd?.[_0x4c66f0(0x304)]?.[_0x4c66f0(0x2ca)]||_0x4c66f0(0x2b0),'context':{'tool':_0x4c66f0(0x234),'repo_path':_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x1e3)],'query':_0x48afe4['data'][_0x4c66f0(0x2f2)],'model':_0x4c66f0(0x237),'termination_reason':_0x1675e3[_0x4c66f0(0x1fb)],'error_count':_0x1675e3[_0x4c66f0(0x2f5)][_0x4c66f0(0x244)],'is_timeout':_0x102623,'timings':_0x1675e3[_0x4c66f0(0x2ea)],'files_attempted':_0x5be270?.['map'](_0x2394ed=>({'path':_0x2394ed[_0x4c66f0(0x217)],'lines':_0x2394ed[_0x4c66f0(0x264)]})),'tool_calls':_0x38fb01(_0x1675e3[_0x4c66f0(0x202)]),'messages':_0x1675e3['messages']?.[_0x4c66f0(0x252)](_0x54ac20=>({'role':_0x54ac20[_0x4c66f0(0x239)],'content':_0x54ac20[_0x4c66f0(0x2fb)],..._0x54ac20[_0x4c66f0(0x1f7)]?{'tool_calls':_0x54ac20[_0x4c66f0(0x1f7)][_0x4c66f0(0x244)]}:{},..._0x54ac20[_0x4c66f0(0x2cd)]?{'tool_call_id':_0x54ac20['tool_call_id']}:{}})),'request_content':{'query':_0x48afe4['data']['search_string'],'repo_path':_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x1e3)],'repoRoot':a0_0xa4cb51['resolve'](_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x1e3)]),'model':_0x4c66f0(0x237)}},'stack_trace':_0x2af8fd?.[_0x4c66f0(0x226)]||undefined,'source':_0x4c66f0(0x23c)})[_0x4c66f0(0x272)](()=>{});}else _0x1f8874=_0x4c66f0(0x26d);}return{'content':[{'type':_0x4c66f0(0x299),'text':_0x1f8874}]};}catch(_0x4c6c00){const _0x4cfeee=handleMorphAPIError(_0x4c6c00);if(_0x4cfeee)return logger[_0x4c66f0(0x1f6)](_0x4c66f0(0x2e7),_0x4c66f0(0x2a0),{'tool':'codebase_search','error':_0x4c66f0(0x20c),'latency_ms':Date['now']()-_0x551b55}),_0x4cfeee;const _0x94f34d=_0x4c6c00 instanceof Error?_0x4c6c00['message']:String(_0x4c6c00);logger[_0x4c66f0(0x1f6)]('MCP',_0x4c66f0(0x2a0),{'tool':'codebase_search','error':_0x94f34d,'repo_path':_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x1e3)],'query':_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x2f2)],'latency_ms':Date['now']()-_0x551b55});const _0xfe50e6=_0x94f34d['toLowerCase']()[_0x4c66f0(0x235)]('timeout')||_0x94f34d['toLowerCase']()[_0x4c66f0(0x235)](_0x4c66f0(0x2d7))||_0x94f34d['toLowerCase']()[_0x4c66f0(0x235)](_0x4c66f0(0x1fd))||_0x4c6c00 instanceof Error&&_0x4c6c00['name']==='TimeoutError';return reportMorphError({'error_message':_0x94f34d,'error_type':_0xfe50e6?_0x4c66f0(0x2fe):_0x4c6c00 instanceof Error?_0x4c6c00['constructor'][_0x4c66f0(0x2ca)]:_0x4c66f0(0x206),'context':{'tool':_0x4c66f0(0x234),'repo_path':_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x1e3)],'query':_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x2f2)],'model':_0x4c66f0(0x237),'is_timeout':_0xfe50e6,'exception_phase':_0x4c66f0(0x258),'request_content':{'query':_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x2f2)],'repo_path':_0x48afe4[_0x4c66f0(0x28e)][_0x4c66f0(0x1e3)],'repoRoot':a0_0xa4cb51[_0x4c66f0(0x2a1)](_0x48afe4['data']['repo_path']),'model':_0x4c66f0(0x237)}},'stack_trace':_0x4c6c00 instanceof Error?_0x4c6c00[_0x4c66f0(0x226)]:undefined,'source':_0x4c66f0(0x23c)})[_0x4c66f0(0x272)](()=>{}),{'content':[{'type':_0x4c66f0(0x299),'text':'Error\x20running\x20fast\x20context\x20search:\x20'+_0x94f34d}],'isError':![]};}}case TOOL_NAMES[_0x4c66f0(0x24c)]:{const _0x4a8be3=WarpGrepGitHubArgsSchema[_0x4c66f0(0x29b)](_0x21926f);if(!_0x4a8be3['success'])return{'content':[{'type':'text','text':_0x4c66f0(0x21b)+_0x4a8be3[_0x4c66f0(0x1f6)]}],'isError':!![]};const _0x3513ff=_0x4a8be3['data']['github_url']||_0x4a8be3[_0x4c66f0(0x28e)]['owner_repo'];if(!_0x3513ff)return{'content':[{'type':'text','text':'Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id'}],'isError':!![]};const _0x13477d=MORPH_API_KEY;if(!_0x13477d)throw new Error(_0x4c66f0(0x265));const _0x19c831=Date[_0x4c66f0(0x1ee)]();logger['debug'](_0x4c66f0(0x2e7),_0x4c66f0(0x23a),{'identifier':_0x3513ff,'query':_0x4a8be3[_0x4c66f0(0x28e)][_0x4c66f0(0x2f2)],'branch':_0x4a8be3[_0x4c66f0(0x28e)][_0x4c66f0(0x20f)]});try{const _0x5c1fc1=new WarpGrepClient({'morphApiKey':_0x13477d,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x1c6b9e=await _0x5c1fc1[_0x4c66f0(0x2d5)]({'searchTerm':_0x4a8be3['data'][_0x4c66f0(0x2f2)],'github':_0x3513ff,'branch':_0x4a8be3['data'][_0x4c66f0(0x20f)]}),_0x3483db=Date['now']()-_0x19c831;logMcpStderr(_0x4c66f0(0x246)+_0x3483db+_0x4c66f0(0x2dd)+_0x1c6b9e[_0x4c66f0(0x262)]);const _0x2a5260=formatResult(_0x1c6b9e);return{'content':[{'type':_0x4c66f0(0x299),'text':_0x2a5260}]};}catch(_0x6f11f8){const _0x1715b9=handleMorphAPIError(_0x6f11f8);if(_0x1715b9)return _0x1715b9;const _0x5db94e=Date['now']()-_0x19c831,_0x45f634=_0x6f11f8 instanceof Error?_0x6f11f8[_0x4c66f0(0x2ad)]:String(_0x6f11f8);return logMcpStderr('[github_codebase_search]\x20Failed\x20in\x20'+_0x5db94e+_0x4c66f0(0x2d4),_0x45f634),reportMorphError({'error_message':_0x45f634,'error_type':_0x6f11f8 instanceof Error?_0x6f11f8['constructor'][_0x4c66f0(0x2ca)]:'UnknownError','context':{'tool':_0x4c66f0(0x300),'github_url':_0x3513ff,'search_string':_0x4a8be3['data'][_0x4c66f0(0x2f2)],'branch':_0x4a8be3[_0x4c66f0(0x28e)][_0x4c66f0(0x20f)]},'stack_trace':_0x6f11f8 instanceof Error?_0x6f11f8[_0x4c66f0(0x226)]:undefined,'source':_0x4c66f0(0x23c),'tool':_0x4c66f0(0x300),'latency_ms':_0x5db94e})[_0x4c66f0(0x272)](()=>{}),{'content':[{'type':_0x4c66f0(0x299),'text':_0x4c66f0(0x1dd)+_0x45f634}],'isError':![]};}}default:throw new Error(_0x4c66f0(0x2ee)+_0x4170d1);}}catch(_0x39d300){const _0x56ebbb=_0x39d300 instanceof Error?_0x39d300[_0x4c66f0(0x2ad)]:String(_0x39d300);return reportMorphError({'error_message':_0x56ebbb,'error_type':_0x39d300 instanceof Error?_0x39d300[_0x4c66f0(0x304)][_0x4c66f0(0x2ca)]:'UnknownError','context':{'tool':_0x4170d1,'arguments':_0x21926f?JSON[_0x4c66f0(0x27c)](_0x21926f)[_0x4c66f0(0x21c)](0x0,0x1f4):undefined,'mcp_server_version':_0x4c66f0(0x215)},'stack_trace':_0x39d300 instanceof Error?_0x39d300['stack']:undefined,'source':_0x4c66f0(0x23c)})['catch'](()=>{}),{'content':[{'type':_0x4c66f0(0x299),'text':_0x4c66f0(0x250)+_0x56ebbb}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x57dae3){const _0x33e8bf=a0_0x510957,_0x52a679=await getValidRootDirectories(_0x57dae3);if(_0x52a679['length']>0x0)allowedDirectories=[..._0x52a679],logMcpStderr(_0x33e8bf(0x2df)+_0x52a679[_0x33e8bf(0x244)]+_0x33e8bf(0x1f1));else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x38d0df=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x38d0df&&(allowedDirectories=[_0x38d0df],logMcpStderr(_0x33e8bf(0x2c4)+_0x38d0df));}catch(_0x4392f8){logMcpStderr(_0x33e8bf(0x23b)+_0x4392f8);}}}server[a0_0x510957(0x236)](RootsListChangedNotificationSchema,async()=>{const _0x32578d=a0_0x510957;try{const _0x462052=await server[_0x32578d(0x273)]();_0x462052&&_0x32578d(0x2aa)in _0x462052&&await updateAllowedDirectoriesFromRoots(_0x462052[_0x32578d(0x2aa)]);}catch(_0x3d8abd){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x3d8abd instanceof Error?_0x3d8abd[_0x32578d(0x2ad)]:String(_0x3d8abd));}}),server['oninitialized']=async()=>{const _0x17f33f=a0_0x510957,_0x2c80ad=server[_0x17f33f(0x1e8)]();if(_0x2c80ad?.[_0x17f33f(0x2aa)])try{const _0x1169e0=await server['listRoots']();_0x1169e0&&_0x17f33f(0x2aa)in _0x1169e0?await updateAllowedDirectoriesFromRoots(_0x1169e0[_0x17f33f(0x2aa)]):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x4029ca){logMcpStderr(_0x17f33f(0x2c7),_0x4029ca instanceof Error?_0x4029ca[_0x17f33f(0x2ad)]:String(_0x4029ca));}else{if(allowedDirectories['length']>0x0)logMcpStderr(_0x17f33f(0x233),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode');else throw new Error(_0x17f33f(0x2d3));}}};async function runServer(){const _0x461eb1=a0_0x510957,_0x5e5b79=new StdioServerTransport();await server[_0x461eb1(0x2e3)](_0x5e5b79),logMcpStderr(_0x461eb1(0x2e2)),allowedDirectories[_0x461eb1(0x244)]===0x0&&logMcpStderr(_0x461eb1(0x2f6));}runServer()[a0_0x510957(0x272)](_0x40d508=>{const _0x221de7=a0_0x510957;logMcpStderr(_0x221de7(0x2a2),_0x40d508),process['exit'](0x1);});
|
|
2
|
+
const a0_0x1f02f7=a0_0x1216;(function(_0x215d81,_0xa8714c){const _0x51e2dc=a0_0x1216,_0x28d363=_0x215d81();while(!![]){try{const _0x1349f5=parseInt(_0x51e2dc(0x2e4))/0x1+parseInt(_0x51e2dc(0x2fd))/0x2+-parseInt(_0x51e2dc(0x264))/0x3+-parseInt(_0x51e2dc(0x1e2))/0x4*(-parseInt(_0x51e2dc(0x2a7))/0x5)+-parseInt(_0x51e2dc(0x2c3))/0x6+parseInt(_0x51e2dc(0x21b))/0x7*(parseInt(_0x51e2dc(0x2cb))/0x8)+-parseInt(_0x51e2dc(0x2e5))/0x9;if(_0x1349f5===_0xa8714c)break;else _0x28d363['push'](_0x28d363['shift']());}catch(_0x1f5665){_0x28d363['push'](_0x28d363['shift']());}}}(a0_0x569c,0x44777));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_0x51536d from'fs/promises';import a0_0x53111d from'path';import a0_0x58ec05 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_0x4f42e8 from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function a0_0x1216(_0x58815b,_0x12bd02){_0x58815b=_0x58815b-0x1db;const _0x569ca0=a0_0x569c();let _0x12166e=_0x569ca0[_0x58815b];return _0x12166e;}function fixPathRepetition(_0x9abf0e){const _0x2cd7e8=a0_0x1216,_0xdf658d=_0x9abf0e[_0x2cd7e8(0x2de)](a0_0x53111d[_0x2cd7e8(0x292)])['filter'](Boolean);if(_0xdf658d['length']<0x2)return null;for(let _0x45eac5=Math[_0x2cd7e8(0x274)](_0xdf658d[_0x2cd7e8(0x2eb)]/0x2);_0x45eac5>=0x1;_0x45eac5--){for(let _0x1359d9=0x0;_0x1359d9<=_0xdf658d['length']-0x2*_0x45eac5;_0x1359d9++){const _0x2750e0=_0xdf658d[_0x2cd7e8(0x27a)](_0x1359d9,_0x1359d9+_0x45eac5),_0x26a19d=_0xdf658d[_0x2cd7e8(0x27a)](_0x1359d9+_0x45eac5,_0x1359d9+0x2*_0x45eac5);if(_0x2750e0['every']((_0x43901a,_0x353247)=>_0x43901a===_0x26a19d[_0x353247])){const _0x5b8e2c=[..._0xdf658d[_0x2cd7e8(0x27a)](0x0,_0x1359d9),..._0xdf658d[_0x2cd7e8(0x27a)](_0x1359d9+_0x45eac5)];return a0_0x53111d['sep']+_0x5b8e2c[_0x2cd7e8(0x27c)](a0_0x53111d[_0x2cd7e8(0x292)]);}}}return null;}function a0_0x569c(){const _0x4a61d1=['\x22.\x20Known\x20tools:\x20','glob\x20\x27','[github_codebase_search]\x20Done\x20in\x20','ms:','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','Failed\x20to\x20read\x20file:\x20','0.2.0','LocalRipgrepProvider','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','list_directory','Unknown\x20tool:\x20','resolve','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a','default','DISABLED_TOOLS','changes','UnknownError','object','isArray','path','path_validation_resolved','searchGitHub','\x0a...\x20(truncated,\x20total:\x20','has','describe','stringify','grep\x20\x27','path_validation_failed','**PRIMARY\x20TOOL\x20FOR\x20EDITING\x20FILES.**\x20Fast,\x20accurate,\x20and\x20prevents\x20context\x20pollution.\x20Especially\x20useful\x20when\x20making\x20multiple\x20edits\x20in\x20one\x20file:\x20describe\x20all\x20changes\x20in\x20a\x20single\x20call\x20and\x20the\x20semantic\x20edit\x20applies\x20them\x20all\x20at\x20once,\x20more\x20accurately\x20and\x20faster\x20than\x20sequential\x20edits.\x20Unlike\x20search-and-replace\x20or\x20patch\x20edits\x20which\x20do\x20narrow\x20edits\x20one\x20at\x20a\x20time,\x20with\x20this\x20tool\x20you\x20should\x20do\x20all\x20your\x20code\x20changes\x20in\x20one\x20go\x20separated\x20by\x20`//\x20...\x20existing\x20code\x20...`\x20markers.\x20This\x20saves\x20tokens\x20and\x20improves\x20performance\x20because\x20you\x20do\x20not\x20need\x20to\x20reread\x20files\x20before\x20edits.\x20All\x20three\x20parameters\x20are\x20required.\x0a\x0a','--api-key','edit',',\x20removed\x20','cwd','listRoots','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','https://morphllm.com/api/error-report','unknown','Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol','tool','morph-v3-fast','filter','tool_calls','\x0a</file>','toISOString','\x20error(s)','File\x20read\x20error:','codebase_search','success','MORPH_API_URL','file','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','\x20-\x20','112FAeDgO','<file\x20path=\x22','roots','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.','stack','oninitialized','Specific\x20commit\x20hash\x20to\x20search','instructions','linesAdded','ENOENT','SymlinkError','role','Use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code\x20blocks.\x20Include\x20just\x20enough\x20surrounding\x20context\x20to\x20locate\x20each\x20edit\x20precisely.\x0a\x0a','realpath','linesRemoved','catch','Warning:\x20Workspace\x20fallback\x20failed:\x20','filePath','Rules:\x0a','-\x20Glob\x20search\x20`','mcp-filesystem','function','added\x20','[could\x20not\x20read\x20file:\x20','Max\x20results\x20to\x20return','Example\x20format:\x0a','RipgrepNotAvailable','morph-warp-grep-v2.1','safeParse','new_string','code','PWD','\x20(new\x20file)','API\x20error\x20(auth/rate-limit)','file_read_failed','status','terminationReason','-\x20Listed\x20directory\x20`','Morph\x20Edit\x20Preview','params','setRequestHandler','map','composer.json','No\x20valid\x20root\x20directories\x20provided\x20by\x20client','constructor','Preview\x20changes\x20without\x20applying\x20them.','Error\x20accessing\x20directory\x20','sk-','warp_grep_complete','CODEBASE_SEARCH','push','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','timeout','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','normalize','utf-8','text','--api-key=','\x0aOptions:','api-key','EDIT_FILE','homedir','linesModified','completionId','\x20as\x20allowed\x20directory','Unknown\x20error','-\x20Grepped\x20\x27','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','Bearer\x20','trim','response','code_edit','string','1282629IPkcOE','\x22>\x0aError\x20reading\x20file:\x20','content','provider_created','tool_call_received','substring','timings','tool_call_id','.\x20Changes:\x20','ENABLE_WORKSPACE_MODE','GitHub\x20search\x20failed:\x20','lines','grep_search','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','runWarpGrep_call','search_string','floor','owner_repo','WORKSPACE_ROOT','morph-mcp','error','morph-v3-large','slice','ReadError','join','version','pattern','some','isDirectory','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','search_type','inputSchema','warp_grep_start','list_directory\x20','read\x20','github_url','MORPH_API_KEY','❌\x20Morph\x20Edit\x20Failed:\x20','stat','toLowerCase','tool_call_error','\x22>\x0a','debug','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','repo_path','go.mod','sep','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','SubToolError','path_validation_start','grep','assistant','Tool\x20\x22','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','application/json','warn','Relevant\x20context\x20found:','pyproject.toml','errors','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','Morph\x20Edit\x20','../package.json','unknown\x20error','dryRun','ms.\x20Success:\x20','5KeBmmE','Created\x20File','exit','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','BinaryFile','log','-\x20Preserve\x20exact\x20indentation\x0a','files','package.json','FileReadError','messages','completed','readFile','.cursor','read','\x20chars)','env','number','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','edit_file','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','Fallback:\x20Using\x20workspace\x20root\x20','size','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','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.','requiresApiKey','user','2032308bUtGvi','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','file_path','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','timed\x20out','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','MORPH_LARGE_APPLY','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','181816CowtPj','morph-','connect','instruction','basename','indexOf','all','@morphllm/morphmcp\x20','terminated','target_file','Invalid\x20arguments:\x20','node_modules','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','`\x20in\x20`','Morph\x20FastApply\x20failed\x20without\x20error\x20message','includes','WarpGrep\x20sub-tool\x20errors:\x20','parse','payload','split','--help','access','false','command','optional','296611YzmbOV','551979GEXAtK','dirname','MCP','TimeoutError','\x20disabled\x20via\x20DISABLED_TOOLS','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','length','setNotificationHandler','file_read_complete','source','arguments','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.','RipgrepError','name','--version','min','etimedout','\x20\x20morph-mcp','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','Cargo.toml','finish','context','branch','data','556346XVfmZa','match','.\x20Path:\x20','Parent\x20directory\x20does\x20not\x20exist:\x20','PathError','Fatal\x20error\x20running\x20server:','Error:\x20','Warning:\x20','glob','now','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','ToolException','message','-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','startsWith','678460NxjAYa','metadata','Tool\x20','argv'];a0_0x569c=function(){return _0x4a61d1;};return a0_0x569c();}const require=createRequire(import.meta.url);function getPackageVersion(){const _0xc1091=a0_0x1216;try{const _0x6605fc=require(_0xc1091(0x2a3));return _0x6605fc[_0xc1091(0x27d)]??_0xc1091(0x20b);}catch(_0x594694){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x594694),_0xc1091(0x20b);}}function printHelp(){const _0x40da32=a0_0x1216;console['log'](_0x40da32(0x2d2)+getPackageVersion()),console[_0x40da32(0x2ac)](_0x40da32(0x219)),console[_0x40da32(0x2ac)](_0x40da32(0x255)),console[_0x40da32(0x2ac)](_0x40da32(0x250)),console[_0x40da32(0x2ac)](_0x40da32(0x2aa)),console[_0x40da32(0x2ac)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console[_0x40da32(0x2ac)]('\x0aExamples:'),console[_0x40da32(0x2ac)](_0x40da32(0x2f6)),console[_0x40da32(0x2ac)](_0x40da32(0x25e));}const cliArgs=process[a0_0x1f02f7(0x1e5)]['slice'](0x2),VERSION_FLAGS=new Set([a0_0x1f02f7(0x2f3),'-v','-V']),HELP_FLAGS=new Set([a0_0x1f02f7(0x2df),'-h']);cliArgs[a0_0x1f02f7(0x27f)](_0x2b40c1=>VERSION_FLAGS['has'](_0x2b40c1))&&(console[a0_0x1f02f7(0x2ac)](a0_0x1f02f7(0x2d2)+getPackageVersion()),process[a0_0x1f02f7(0x2a9)](0x0));cliArgs[a0_0x1f02f7(0x27f)](_0x417b9d=>HELP_FLAGS[a0_0x1f02f7(0x1fe)](_0x417b9d))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x5668f3){const _0x37453b=a0_0x1f02f7;for(let _0x459447=0x0;_0x459447<cliArgs[_0x37453b(0x2eb)];_0x459447++){const _0x32f83e=cliArgs[_0x459447];if(_0x32f83e[_0x37453b(0x1e1)]('--'+_0x5668f3+'='))return _0x32f83e[_0x37453b(0x27a)](('--'+_0x5668f3+'=')[_0x37453b(0x2eb)]);if(_0x32f83e==='--'+_0x5668f3&&_0x459447+0x1<cliArgs[_0x37453b(0x2eb)])return cliArgs[_0x459447+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs['length'];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x1f02f7(0x1fe)](arg)||HELP_FLAGS[a0_0x1f02f7(0x1fe)](arg))continue;if(arg[a0_0x1f02f7(0x1e1)](a0_0x1f02f7(0x254)))continue;if(arg===a0_0x1f02f7(0x204)){i++;continue;}args[a0_0x1f02f7(0x24d)](arg);}const WORKSPACE_ROOT=process['env'][a0_0x1f02f7(0x276)]||process['env'][a0_0x1f02f7(0x23a)]||process[a0_0x1f02f7(0x207)](),ENABLE_WORKSPACE_MODE=process[a0_0x1f02f7(0x2b7)][a0_0x1f02f7(0x26d)]!==a0_0x1f02f7(0x2e1),MORPH_API_KEY=getCliArg(a0_0x1f02f7(0x256))??process['env'][a0_0x1f02f7(0x288)],MORPH_API_URL=process[a0_0x1f02f7(0x2b7)][a0_0x1f02f7(0x217)],MORPH_LARGE_APPLY=process['env'][a0_0x1f02f7(0x2c9)]!==a0_0x1f02f7(0x2e1),MORPH_WARP_GREP_TIMEOUT=process['env']['MORPH_WARP_GREP_TIMEOUT']?parseInt(process['env']['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process['env']['DISABLED_TOOLS']?new Set(process[a0_0x1f02f7(0x2b7)][a0_0x1f02f7(0x1f5)][a0_0x1f02f7(0x2de)](',')[a0_0x1f02f7(0x244)](_0xf6accc=>_0xf6accc[a0_0x1f02f7(0x260)]())['filter'](_0x155fdf=>_0x155fdf['length']>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x1f02f7(0x2bd)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x1f02f7(0x1fe)](tool)&&console['error'](a0_0x1f02f7(0x2c6)+tool+a0_0x1f02f7(0x1e6)+[...KNOWN_TOOL_NAMES][a0_0x1f02f7(0x27c)](',\x20'));}console['error']('Disabled\x20tools:\x20'+[...DISABLED_TOOLS][a0_0x1f02f7(0x27c)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x1f02f7(0x1e1)](a0_0x1f02f7(0x24a))&&!MORPH_API_KEY[a0_0x1f02f7(0x1e1)](a0_0x1f02f7(0x2cc))&&logMcpStderr(a0_0x1f02f7(0x2ca));async function reportMorphError(_0x387837){const _0x222f29=a0_0x1f02f7;try{await a0_0x4f42e8['post'](_0x222f29(0x20a),{..._0x387837,'timestamp':new Date()[_0x222f29(0x212)](),'source':_0x387837[_0x222f29(0x2ee)]||_0x222f29(0x22f),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x387837[_0x222f29(0x2fa)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x222f29(0x29c),'Authorization':_0x222f29(0x25f)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x3b6b77,_0x11dfb5){const _0x1a648a=a0_0x1f02f7;if(_0x3b6b77&&typeof _0x3b6b77==='object'&&_0x1a648a(0x23e)in _0x3b6b77)return _0x3b6b77[_0x1a648a(0x23e)];if(_0x3b6b77&&typeof _0x3b6b77==='object'&&_0x1a648a(0x261)in _0x3b6b77)return _0x3b6b77[_0x1a648a(0x261)]?.[_0x1a648a(0x23e)];const _0x1a59cc=_0x11dfb5[_0x1a648a(0x2fe)](/\b(401|429)\b/);return _0x1a59cc?parseInt(_0x1a59cc[0x1],0xa):null;}function handleMorphAPIError(_0x412023){const _0x4a98e7=a0_0x1f02f7,_0x5430aa=_0x412023 instanceof Error?_0x412023[_0x4a98e7(0x1de)]:String(_0x412023),_0x26fabc=extractStatusCode(_0x412023,_0x5430aa);switch(_0x26fabc){case 0x191:return{'content':[{'type':_0x4a98e7(0x253),'text':'Authentication\x20failed:\x20Your\x20Morph\x20API\x20key\x20is\x20invalid\x20or\x20has\x20been\x20revoked.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key,\x20then\x20update\x20your\x20MCP\x20configuration.'}],'isError':!![]};case 0x1ad:return{'content':[{'type':_0x4a98e7(0x253),'text':_0x4a98e7(0x2b9)}],'isError':!![]};default:return null;}}args[a0_0x1f02f7(0x2eb)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x1f02f7(0x1ea)),logMcpStderr(a0_0x1f02f7(0x281)),logMcpStderr(a0_0x1f02f7(0x2c8)),logMcpStderr(a0_0x1f02f7(0x271)),logMcpStderr(a0_0x1f02f7(0x1dc)),logMcpStderr('At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.'));function normalizePath(_0x426c30){const _0x5a226f=a0_0x1f02f7;return a0_0x53111d[_0x5a226f(0x251)](_0x426c30);}function expandHome(_0x10e7f2){const _0x3cb861=a0_0x1f02f7;if(_0x10e7f2['startsWith']('~/')||_0x10e7f2==='~')return a0_0x53111d[_0x3cb861(0x27c)](a0_0x58ec05[_0x3cb861(0x258)](),_0x10e7f2['slice'](0x1));return _0x10e7f2;}let allowedDirectories=await Promise[a0_0x1f02f7(0x2d1)](args['map'](async _0x29893c=>{const _0x10aa15=a0_0x1f02f7,_0x5bad8a=expandHome(_0x29893c),_0x304f9f=a0_0x53111d[_0x10aa15(0x1f1)](_0x5bad8a);try{const _0x2ac782=await a0_0x51536d[_0x10aa15(0x228)](_0x304f9f);return normalizePath(_0x2ac782);}catch(_0x831f4){return normalizePath(_0x304f9f);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x1f02f7(0x2eb)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories['push'](workspaceDir),logMcpStderr('Workspace\x20mode\x20enabled:\x20Using\x20'+workspaceDir+a0_0x1f02f7(0x25b)));}catch(a0_0x2b3154){logMcpStderr(a0_0x1f02f7(0x2d7)+a0_0x2b3154);}async function detectWorkspaceRoot(_0x44cb60){const _0x5ae3b7=a0_0x1f02f7;let _0x5b4d78=a0_0x53111d['resolve'](_0x44cb60);const _0xb1a1df=['.git','.vscode',_0x5ae3b7(0x2af),_0x5ae3b7(0x2f8),_0x5ae3b7(0x29f),_0x5ae3b7(0x291),_0x5ae3b7(0x2b4),'tsconfig.json',_0x5ae3b7(0x245)];while(_0x5b4d78!==a0_0x53111d[_0x5ae3b7(0x2e6)](_0x5b4d78)){for(const _0x3e9c59 of _0xb1a1df){const _0x285f71=a0_0x53111d[_0x5ae3b7(0x27c)](_0x5b4d78,_0x3e9c59);try{return await a0_0x51536d[_0x5ae3b7(0x2e0)](_0x285f71),normalizePath(_0x5b4d78);}catch{}}_0x5b4d78=a0_0x53111d[_0x5ae3b7(0x2e6)](_0x5b4d78);}return normalizePath(_0x44cb60);}await Promise[a0_0x1f02f7(0x2d1)](args[a0_0x1f02f7(0x244)](async _0xcd91bf=>{const _0x24b2b=a0_0x1f02f7;try{const _0x2865a3=await a0_0x51536d[_0x24b2b(0x28a)](expandHome(_0xcd91bf));!_0x2865a3[_0x24b2b(0x280)]()&&(logMcpStderr(_0x24b2b(0x303)+_0xcd91bf+'\x20is\x20not\x20a\x20directory'),process[_0x24b2b(0x2a9)](0x1));}catch(_0xf5401f){logMcpStderr(_0x24b2b(0x249)+_0xcd91bf+':',_0xf5401f),process['exit'](0x1);}}));async function validatePath(_0xc64c33){const _0x3725db=a0_0x1f02f7,_0x10272d=expandHome(_0xc64c33),_0x450713=a0_0x53111d[_0x3725db(0x1f1)](_0x10272d);logger[_0x3725db(0x28e)](_0x3725db(0x2e7),_0x3725db(0x297),{'raw_path':_0xc64c33,'absolute':_0x450713});try{const _0x49b5dd=await a0_0x51536d[_0x3725db(0x228)](_0x450713);return logger[_0x3725db(0x28e)](_0x3725db(0x2e7),_0x3725db(0x1fb),{'resolved':_0x49b5dd,'symlink':_0x49b5dd!==_0x450713}),_0x49b5dd;}catch(_0x1bc274){if(_0x1bc274[_0x3725db(0x239)]===_0x3725db(0x224)){const _0x2b1fc8=a0_0x53111d[_0x3725db(0x2e6)](_0x450713);try{const _0x51f87e=await a0_0x51536d[_0x3725db(0x228)](_0x2b1fc8),_0x2b900e=a0_0x53111d[_0x3725db(0x27c)](_0x51f87e,a0_0x53111d[_0x3725db(0x2cf)](_0x450713));return logger['debug'](_0x3725db(0x2e7),_0x3725db(0x1fb),{'resolved':_0x2b900e,'new_file':!![]}),_0x2b900e;}catch{logger['error']('MCP',_0x3725db(0x202),{'raw_path':_0xc64c33,'error':'Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x2b1fc8});throw new Error(_0x3725db(0x300)+_0x2b1fc8);}}logger[_0x3725db(0x278)](_0x3725db(0x2e7),_0x3725db(0x202),{'raw_path':_0xc64c33,'error':_0x1bc274['message']});throw _0x1bc274;}}const MorphEditFileArgsSchema=z['object']({'path':z[a0_0x1f02f7(0x263)](),'code_edit':z[a0_0x1f02f7(0x263)]()[a0_0x1f02f7(0x1ff)]('Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.'),'instruction':z['string']()[a0_0x1f02f7(0x1ff)](a0_0x1f02f7(0x2be)),'dryRun':z['boolean']()[a0_0x1f02f7(0x1f4)](![])['describe'](a0_0x1f02f7(0x248))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x1f02f7(0x2c0),WarpGrepArgsSchema=z[a0_0x1f02f7(0x1f8)]({'search_string':z[a0_0x1f02f7(0x263)]()[a0_0x1f02f7(0x1ff)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z['string']()[a0_0x1f02f7(0x1ff)](a0_0x1f02f7(0x1ee)),'search_type':z['enum'](['default',a0_0x1f02f7(0x2d6)])[a0_0x1f02f7(0x2e3)]()[a0_0x1f02f7(0x1ff)](a0_0x1f02f7(0x2ea))}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z[a0_0x1f02f7(0x263)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x1f02f7(0x263)]()['optional']()[a0_0x1f02f7(0x1ff)](a0_0x1f02f7(0x2f0)),'owner_repo':z[a0_0x1f02f7(0x263)]()[a0_0x1f02f7(0x2e3)]()[a0_0x1f02f7(0x1ff)]('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z[a0_0x1f02f7(0x263)]()['optional']()[a0_0x1f02f7(0x1ff)](a0_0x1f02f7(0x2c4))}),CodebaseSearchArgsSchema=z['object']({'query':z['string']()[a0_0x1f02f7(0x1ff)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z['string']()[a0_0x1f02f7(0x1ff)]('Repository\x20identifier'),'branch':z[a0_0x1f02f7(0x263)]()['optional']()['describe']('Branch\x20to\x20search\x20(uses\x20latest\x20commit)'),'commitHash':z[a0_0x1f02f7(0x263)]()[a0_0x1f02f7(0x2e3)]()[a0_0x1f02f7(0x1ff)](a0_0x1f02f7(0x221)),'targetDirectories':z['array'](z[a0_0x1f02f7(0x263)]())['default']([])[a0_0x1f02f7(0x1ff)](a0_0x1f02f7(0x28f)),'limit':z[a0_0x1f02f7(0x2b8)]()[a0_0x1f02f7(0x2e3)]()['default'](0xa)[a0_0x1f02f7(0x1ff)](a0_0x1f02f7(0x233))}),server=new Server({'name':a0_0x1f02f7(0x277),'version':'0.2.0'},{'capabilities':{'tools':{}}});server[a0_0x1f02f7(0x243)](ListToolsRequestSchema,async()=>{const _0x1a866e=a0_0x1f02f7,_0x2a8196=[{'name':TOOL_NAMES[_0x1a866e(0x257)],'description':_0x1a866e(0x203)+'Parameters:\x0a'+_0x1a866e(0x1f3)+_0x1a866e(0x294)+'-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a'+_0x1a866e(0x227)+_0x1a866e(0x234)+'//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a'+_0x1a866e(0x22d)+'-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a'+_0x1a866e(0x2ad)+_0x1a866e(0x1df)+_0x1a866e(0x2a1),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x1a866e(0x24c)],'description':'A\x20code\x20exploration\x20tool,\x20use\x20this\x20tool\x20when\x20exploring\x20an\x20unfamiliar\x20codebase,\x20and\x20you\x27re\x20unsure\x20of\x20the\x20exact\x20file\x20or\x20string\x20to\x20look\x20for.\x20This\x20tool\x20will\x20find\x20all\x20relevant\x20bits\x20of\x20code\x20given\x20a\x20natural\x20lanugage\x20description,\x20or\x20questin\x20of\x20the\x20thing\x20you\x27re\x20looking\x20for.\x20'+CODEBASE_SEARCH_QUERY_DESCRIPTION+'\x20'+'Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20'+_0x1a866e(0x209)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x304327=_0x2a8196[_0x1a866e(0x20f)](_0x268bc0=>{const _0x3fe836=_0x1a866e;if(DISABLED_TOOLS[_0x3fe836(0x1fe)](_0x268bc0[_0x3fe836(0x2f2)]))return console[_0x3fe836(0x278)](_0x3fe836(0x1e4)+_0x268bc0['name']+_0x3fe836(0x2e9)),![];if(_0x3fe836(0x2c1)in _0x268bc0&&_0x268bc0[_0x3fe836(0x2c1)]&&!MORPH_API_KEY)return logMcpStderr('Warning:\x20'+_0x268bc0['name']+_0x3fe836(0x2bb)),![];return!![];});return{'tools':_0x304327['map'](_0x4ff7fc=>({'name':_0x4ff7fc[_0x1a866e(0x2f2)],'description':_0x4ff7fc['description'],'inputSchema':_0x4ff7fc[_0x1a866e(0x283)]}))};}),server[a0_0x1f02f7(0x243)](CallToolRequestSchema,async _0x5485e6=>{const _0x3ee72e=a0_0x1f02f7,{name:_0x3fc855,arguments:_0x1506c7}=_0x5485e6[_0x3ee72e(0x242)],_0x20ddf3=Date[_0x3ee72e(0x306)]();logger[_0x3ee72e(0x28e)]('MCP',_0x3ee72e(0x268),{'tool':_0x3fc855,'args':_0x3fc855===_0x3ee72e(0x2ba)?{'path':_0x1506c7?.[_0x3ee72e(0x1fa)],'instruction':_0x1506c7?.[_0x3ee72e(0x2ce)]||_0x1506c7?.[_0x3ee72e(0x222)],'dryRun':_0x1506c7?.[_0x3ee72e(0x2a5)]}:_0x1506c7});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x3ee72e(0x253),'text':_0x3ee72e(0x24e)}],'isError':!![]};if(!MORPH_API_KEY[_0x3ee72e(0x1e1)](_0x3ee72e(0x24a))&&!MORPH_API_KEY[_0x3ee72e(0x1e1)]('morph-'))return{'content':[{'type':_0x3ee72e(0x253),'text':_0x3ee72e(0x21e)}],'isError':!![]};if(DISABLED_TOOLS[_0x3ee72e(0x1fe)](_0x3fc855))return{'content':[{'type':'text','text':_0x3ee72e(0x29a)+_0x3fc855+'\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.'}],'isError':![]};switch(_0x3fc855){case TOOL_NAMES[_0x3ee72e(0x257)]:{let _0xb53d0f=_0x1506c7;if(_0xb53d0f&&typeof _0xb53d0f===_0x3ee72e(0x1f8)){if(!(_0x3ee72e(0x1fa)in _0xb53d0f)){const _0x310962=_0xb53d0f[_0x3ee72e(0x2d4)]??_0xb53d0f[_0x3ee72e(0x22c)]??_0xb53d0f['target_filepath']??_0xb53d0f[_0x3ee72e(0x2c5)]??_0xb53d0f[_0x3ee72e(0x218)];if(_0x310962)_0xb53d0f={..._0xb53d0f,'path':_0x310962};}'instructions'in _0xb53d0f&&!(_0x3ee72e(0x2ce)in _0xb53d0f)&&(_0xb53d0f={..._0xb53d0f,'instruction':_0xb53d0f[_0x3ee72e(0x222)]});if(!(_0x3ee72e(0x262)in _0xb53d0f)){const _0xc2f679=_0xb53d0f[_0x3ee72e(0x239)]??_0xb53d0f[_0x3ee72e(0x238)]??_0xb53d0f[_0x3ee72e(0x266)]??_0xb53d0f[_0x3ee72e(0x205)];if(_0xc2f679)_0xb53d0f={..._0xb53d0f,'code_edit':_0xc2f679};}}const _0x4b5831=MorphEditFileArgsSchema['safeParse'](_0xb53d0f);if(!_0x4b5831[_0x3ee72e(0x216)])throw new Error(_0x3ee72e(0x2bf)+_0x4b5831[_0x3ee72e(0x278)]);const _0x745af1=await validatePath(_0x4b5831['data'][_0x3ee72e(0x1fa)]);let _0x20c057=null,_0x47ea7f=!![],_0x2734f4=null;try{_0x20c057=await a0_0x51536d[_0x3ee72e(0x2b3)](_0x745af1,_0x3ee72e(0x252)),logger[_0x3ee72e(0x28e)](_0x3ee72e(0x2e7),_0x3ee72e(0x2ed),{'path':_0x745af1,'size_bytes':_0x20c057['length']});}catch(_0x58f9e4){const _0x8dc996=_0x58f9e4['code'];_0x8dc996===_0x3ee72e(0x224)?(_0x47ea7f=![],_0x20c057='',logger[_0x3ee72e(0x28e)]('MCP',_0x3ee72e(0x2ed),{'path':_0x745af1,'exists':![]})):(_0x2734f4=_0x3ee72e(0x1eb)+(_0x8dc996||_0x3ee72e(0x20b))+_0x3ee72e(0x21a)+(_0x58f9e4 instanceof Error?_0x58f9e4[_0x3ee72e(0x1de)]:String(_0x58f9e4)),logger[_0x3ee72e(0x278)](_0x3ee72e(0x2e7),_0x3ee72e(0x23d),{'path':_0x745af1,'error':_0x2734f4}),logMcpStderr(_0x3ee72e(0x304)+_0x2734f4));}let _0x4c5fd7;try{const _0x341628=MORPH_API_KEY;if(!_0x341628)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x533598=a0_0x53111d[_0x3ee72e(0x2e6)](_0x745af1),_0x32388d=a0_0x53111d[_0x3ee72e(0x2cf)](_0x745af1);logger[_0x3ee72e(0x28e)](_0x3ee72e(0x2e7),'api_request_start',{'model':_0x3ee72e(0x20e),'path':_0x4b5831[_0x3ee72e(0x2fc)]['path'],'instruction_len':_0x4b5831['data']['instruction']['length'],'code_edit_len':_0x4b5831['data'][_0x3ee72e(0x262)][_0x3ee72e(0x2eb)],'original_code_len':_0x20c057?.[_0x3ee72e(0x2eb)]??0x0,'dry_run':_0x4b5831[_0x3ee72e(0x2fc)][_0x3ee72e(0x2a5)]});const _0x2c17c4=Date['now'](),_0x4af6f1=await executeEditFile({'target_filepath':_0x32388d,'code_edit':_0x4b5831[_0x3ee72e(0x2fc)][_0x3ee72e(0x262)],'instruction':_0x4b5831[_0x3ee72e(0x2fc)]['instruction']},{'morphApiKey':_0x341628,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x533598,'autoWrite':!_0x4b5831[_0x3ee72e(0x2fc)][_0x3ee72e(0x2a5)],'generateUdiff':![],'debug':![]}),_0x441e24=Date[_0x3ee72e(0x306)]()-_0x2c17c4;_0x4c5fd7=_0x4af6f1[_0x3ee72e(0x25a)];if(!_0x4af6f1[_0x3ee72e(0x216)])throw new Error(_0x4af6f1[_0x3ee72e(0x278)]||_0x3ee72e(0x2d9));const _0x16da13=_0x4af6f1[_0x3ee72e(0x1f6)],_0x155ab6=_0x3ee72e(0x231)+_0x16da13[_0x3ee72e(0x223)]+_0x3ee72e(0x206)+_0x16da13[_0x3ee72e(0x229)]+',\x20modified\x20'+_0x16da13['linesModified'];logger[_0x3ee72e(0x28e)](_0x3ee72e(0x2e7),'tool_call_complete',{'tool':_0x3ee72e(0x2ba),'success':!![],'latency_ms':Date[_0x3ee72e(0x306)]()-_0x20ddf3,'edit_latency_ms':_0x441e24,'changes':{'added':_0x16da13[_0x3ee72e(0x223)],'removed':_0x16da13[_0x3ee72e(0x229)],'modified':_0x16da13[_0x3ee72e(0x259)]},'completion_id':_0x4c5fd7});if(_0x4b5831[_0x3ee72e(0x2fc)][_0x3ee72e(0x2a5)])return{'content':[{'type':'text','text':_0x3ee72e(0x241)+(_0x47ea7f?'':_0x3ee72e(0x23b))+':\x20'+_0x4b5831[_0x3ee72e(0x2fc)][_0x3ee72e(0x2ce)]+_0x3ee72e(0x26c)+_0x155ab6+'.\x20Path:\x20'+_0x4b5831[_0x3ee72e(0x2fc)][_0x3ee72e(0x1fa)]+'.'}]};return{'content':[{'type':_0x3ee72e(0x253),'text':_0x3ee72e(0x2a2)+(_0x47ea7f?'Applied':_0x3ee72e(0x2a8))+':\x20'+_0x4b5831[_0x3ee72e(0x2fc)]['instruction']+'.\x20Changes:\x20'+_0x155ab6+_0x3ee72e(0x2ff)+_0x4b5831[_0x3ee72e(0x2fc)][_0x3ee72e(0x1fa)]+'.'}]};}catch(_0x2c5187){const _0x1ba06d=handleMorphAPIError(_0x2c5187);if(_0x1ba06d)return logger[_0x3ee72e(0x278)](_0x3ee72e(0x2e7),_0x3ee72e(0x28c),{'tool':_0x3ee72e(0x2ba),'error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date[_0x3ee72e(0x306)]()-_0x20ddf3}),_0x1ba06d;const _0x4427b8=_0x2c5187 instanceof Error?_0x2c5187['message']:String(_0x2c5187);return logger[_0x3ee72e(0x278)](_0x3ee72e(0x2e7),_0x3ee72e(0x28c),{'tool':_0x3ee72e(0x2ba),'error':_0x4427b8,'path':_0x4b5831[_0x3ee72e(0x2fc)]['path'],'validated_path':_0x745af1,'latency_ms':Date['now']()-_0x20ddf3,'stack':_0x2c5187 instanceof Error?_0x2c5187[_0x3ee72e(0x21f)]:undefined}),reportMorphError({'error_message':_0x4427b8,'error_type':_0x2c5187 instanceof Error?_0x2c5187[_0x3ee72e(0x247)][_0x3ee72e(0x2f2)]:'UnknownError','context':{'tool':_0x3ee72e(0x2ba),'completion_id':_0x4c5fd7,'file_path':_0x4b5831[_0x3ee72e(0x2fc)][_0x3ee72e(0x1fa)],'validated_path':_0x745af1,'instruction':_0x4b5831[_0x3ee72e(0x2fc)]['instruction'],'model':MORPH_LARGE_APPLY?_0x3ee72e(0x279):_0x3ee72e(0x20e),'dry_run':_0x4b5831[_0x3ee72e(0x2fc)][_0x3ee72e(0x2a5)],'file_exists':_0x47ea7f,'file_read_error':_0x2734f4,'file_readable':_0x20c057!==null,'request_content':{'path':_0x4b5831[_0x3ee72e(0x2fc)]['path'],'code_edit':_0x4b5831['data'][_0x3ee72e(0x262)],'instruction':_0x4b5831['data'][_0x3ee72e(0x2ce)],'original_code':_0x20c057!==null?_0x20c057[_0x3ee72e(0x2eb)]>0xc350?_0x20c057[_0x3ee72e(0x269)](0x0,0xc350)+_0x3ee72e(0x1fd)+_0x20c057[_0x3ee72e(0x2eb)]+_0x3ee72e(0x2b6):_0x20c057:_0x3ee72e(0x232)+(_0x2734f4||_0x3ee72e(0x2a4))+']','original_code_length':_0x20c057?.[_0x3ee72e(0x2eb)]??0x0,'model':MORPH_LARGE_APPLY?_0x3ee72e(0x279):_0x3ee72e(0x20e),'dry_run':_0x4b5831['data'][_0x3ee72e(0x2a5)]}},'stack_trace':_0x2c5187 instanceof Error?_0x2c5187[_0x3ee72e(0x21f)]:undefined,'source':'mcp-filesystem'})[_0x3ee72e(0x22a)](()=>{}),{'content':[{'type':_0x3ee72e(0x253),'text':_0x3ee72e(0x289)+_0x4427b8}],'isError':!![]};}}case TOOL_NAMES[_0x3ee72e(0x24c)]:{const _0x3bea39=WarpGrepArgsSchema[_0x3ee72e(0x237)](_0x1506c7);if(!_0x3bea39[_0x3ee72e(0x216)])return{'content':[{'type':_0x3ee72e(0x253),'text':'Invalid\x20arguments:\x20'+_0x3bea39[_0x3ee72e(0x278)]}],'isError':!![]};const _0x58a748=_0x35bfa5=>{const _0x2c03db=_0x3ee72e,_0x1535df=[];for(const _0x42d10f of _0x35bfa5||[]){if(_0x42d10f[_0x2c03db(0x226)]==='assistant'&&Array['isArray'](_0x42d10f[_0x2c03db(0x210)]))for(const _0x3e3c79 of _0x42d10f[_0x2c03db(0x210)]){try{const _0x310d64=_0x3e3c79[_0x2c03db(0x230)]?.[_0x2c03db(0x2f2)],_0x758466=JSON[_0x2c03db(0x2dc)](_0x3e3c79[_0x2c03db(0x230)]?.[_0x2c03db(0x2ef)]||'{}');if(_0x310d64===_0x2c03db(0x270))_0x1535df[_0x2c03db(0x24d)](_0x2c03db(0x201)+_0x758466[_0x2c03db(0x27e)]+'\x27\x20'+(_0x758466[_0x2c03db(0x1fa)]||'.'));else{if(_0x310d64==='read')_0x1535df['push'](_0x2c03db(0x286)+_0x758466[_0x2c03db(0x1fa)]);else{if(_0x310d64===_0x2c03db(0x1ef))_0x1535df[_0x2c03db(0x24d)](_0x2c03db(0x285)+(_0x758466[_0x2c03db(0x2e2)]||'.'));else{if(_0x310d64==='glob')_0x1535df[_0x2c03db(0x24d)](_0x2c03db(0x1e7)+_0x758466[_0x2c03db(0x27e)]+'\x27\x20'+(_0x758466[_0x2c03db(0x1fa)]||'.'));else _0x310d64===_0x2c03db(0x2f9)&&_0x1535df['push'](_0x2c03db(0x2f9));}}}}catch{}}}return _0x1535df;},_0x6f2eec=_0x4b1506=>{const _0x29b2e4=_0x3ee72e,_0x321968=[];if(!_0x4b1506||!Array[_0x29b2e4(0x1f9)](_0x4b1506))return _0x321968;const _0x47f5d1=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':'FileNotFound','tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':_0x29b2e4(0x301),'tool':'read'},{'pattern':/\[READ ERROR\]/,'error_type':_0x29b2e4(0x27b),'tool':_0x29b2e4(0x2b5)},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x29b2e4(0x2ab),'tool':_0x29b2e4(0x2b5)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x29b2e4(0x2f1),'tool':_0x29b2e4(0x298)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x29b2e4(0x235),'tool':_0x29b2e4(0x298)},{'pattern':/\[BINARY FILE\]/,'error_type':_0x29b2e4(0x2ab),'tool':_0x29b2e4(0x2b5)},{'pattern':/\[SYMLINK\]/,'error_type':_0x29b2e4(0x225),'tool':_0x29b2e4(0x2b5)},{'pattern':/not a text file/,'error_type':_0x29b2e4(0x2ab),'tool':'read'},{'pattern':/symbolic link/,'error_type':_0x29b2e4(0x225),'tool':'read'},{'pattern':/Error reading file:/,'error_type':_0x29b2e4(0x27b),'tool':'read'},{'pattern':/status="error"/,'error_type':_0x29b2e4(0x1dd),'tool':_0x29b2e4(0x20b)}];let _0x5904b9=0x0;for(const _0x31dd2c of _0x4b1506){_0x31dd2c[_0x29b2e4(0x226)]==='assistant'&&Array[_0x29b2e4(0x1f9)](_0x31dd2c['tool_calls'])&&_0x5904b9++;const _0x2978c0=_0x31dd2c['content'];if((_0x31dd2c[_0x29b2e4(0x226)]===_0x29b2e4(0x20d)||_0x31dd2c[_0x29b2e4(0x226)]===_0x29b2e4(0x2c2))&&_0x2978c0&&typeof _0x2978c0===_0x29b2e4(0x263))for(const {pattern:_0x16c7fa,error_type:_0x23751f,tool:_0x51d42c}of _0x47f5d1){const _0x428726=_0x2978c0[_0x29b2e4(0x2fe)](new RegExp(_0x16c7fa[_0x29b2e4(0x2ee)],'g'));if(_0x428726)for(const _0x489f9f of _0x428726){const _0x3fafac=_0x2978c0[_0x29b2e4(0x2d0)](_0x489f9f),_0x36c771=_0x2978c0[_0x29b2e4(0x269)](_0x3fafac,Math[_0x29b2e4(0x2f4)](_0x3fafac+0xc8,_0x2978c0[_0x29b2e4(0x2eb)]));_0x321968['push']({'tool':_0x51d42c,'error_type':_0x23751f,'error_message':_0x36c771[_0x29b2e4(0x2de)]('\x0a')[0x0],'turn':_0x5904b9});}}}return _0x321968;};try{const _0x11013c=a0_0x53111d[_0x3ee72e(0x1f1)](_0x3bea39['data'][_0x3ee72e(0x290)]),_0x188767=_0x3bea39['data'][_0x3ee72e(0x282)],_0x566e01=_0x188767===_0x3ee72e(0x2d6)?{'allowNames':[_0x3ee72e(0x2d6)]}:undefined,_0x5ed05a=new LocalRipgrepProvider(_0x11013c,undefined,_0x566e01);logger[_0x3ee72e(0x28e)]('MCP',_0x3ee72e(0x267),{'type':_0x3ee72e(0x1ed),'repo_root':_0x11013c,'search_type':_0x188767||_0x3ee72e(0x1f4)}),logger[_0x3ee72e(0x28e)]('MCP',_0x3ee72e(0x284),{'query':_0x3bea39['data'][_0x3ee72e(0x273)],'repo_root':_0x11013c,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x4e83dd=Date[_0x3ee72e(0x306)](),_0x3196ed=await runWarpGrep({'searchTerm':_0x3bea39['data'][_0x3ee72e(0x273)],'repoRoot':_0x11013c,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x5ed05a,'search_type':_0x188767}),_0x3899e1=Date[_0x3ee72e(0x306)]()-_0x4e83dd,_0x194a45=_0x3196ed[_0x3ee72e(0x2f9)]?.[_0x3ee72e(0x1e3)]?.[_0x3ee72e(0x2ae)]?.[_0x3ee72e(0x2eb)]??0x0;logger[_0x3ee72e(0x28e)](_0x3ee72e(0x2e7),_0x3ee72e(0x24b),{'termination':_0x3196ed[_0x3ee72e(0x23f)],'turns':_0x3196ed[_0x3ee72e(0x26a)]?.['turns']??0x0,'files_found':_0x194a45,'latency_ms':_0x3899e1});const _0x18a2cc=_0x6f2eec(_0x3196ed[_0x3ee72e(0x2b1)]);_0x18a2cc[_0x3ee72e(0x2eb)]>0x0&&reportMorphError({'error_message':_0x3ee72e(0x2db)+_0x18a2cc[_0x3ee72e(0x2eb)]+_0x3ee72e(0x213),'error_type':_0x3ee72e(0x296),'level':'warn','tool':'codebase_search','context':{'repo_path':_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x290)],'query':_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x273)],'model':_0x3ee72e(0x236),'termination_reason':_0x3196ed[_0x3ee72e(0x23f)],'sub_tool_errors':_0x18a2cc,'timings':_0x3196ed[_0x3ee72e(0x26a)],'tool_calls':_0x58a748(_0x3196ed[_0x3ee72e(0x2b1)]),'messages':_0x3196ed[_0x3ee72e(0x2b1)]?.['map'](_0x105efb=>({'role':_0x105efb[_0x3ee72e(0x226)],'content':_0x105efb[_0x3ee72e(0x266)],..._0x105efb[_0x3ee72e(0x210)]?{'tool_calls':_0x105efb[_0x3ee72e(0x210)][_0x3ee72e(0x2eb)]}:{},..._0x105efb[_0x3ee72e(0x26b)]?{'tool_call_id':_0x105efb['tool_call_id']}:{}}))},'source':'mcp-filesystem'})[_0x3ee72e(0x22a)](()=>{});let _0x545b84='';if(_0x3196ed['terminationReason']===_0x3ee72e(0x2b2)&&_0x3196ed['finish']?.[_0x3ee72e(0x1e3)]?.['files']){const _0x39febe=_0x3196ed[_0x3ee72e(0x2f9)][_0x3ee72e(0x1e3)][_0x3ee72e(0x2ae)];if(_0x39febe[_0x3ee72e(0x2eb)]===0x0)return _0x545b84=_0x3196ed['finish'][_0x3ee72e(0x2dd)]||_0x3ee72e(0x295),{'content':[{'type':_0x3ee72e(0x253),'text':_0x545b84}]};const _0x58d768=[],_0xeebb68=['Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:'];for(const _0x4e5ea9 of _0x3196ed[_0x3ee72e(0x2b1)]){if(_0x4e5ea9[_0x3ee72e(0x226)]===_0x3ee72e(0x299)&&Array[_0x3ee72e(0x1f9)](_0x4e5ea9[_0x3ee72e(0x210)]))for(const _0x16ab6b of _0x4e5ea9[_0x3ee72e(0x210)]){try{const _0x4efdd5=_0x16ab6b[_0x3ee72e(0x230)]?.[_0x3ee72e(0x2f2)],_0x433e59=JSON[_0x3ee72e(0x2dc)](_0x16ab6b[_0x3ee72e(0x230)]?.[_0x3ee72e(0x2ef)]||'{}');if(_0x4efdd5===_0x3ee72e(0x270))_0xeebb68['push'](_0x3ee72e(0x25d)+_0x433e59['pattern']+'\x27\x20in\x20`'+(_0x433e59[_0x3ee72e(0x1fa)]||'.')+'`');else{if(_0x4efdd5===_0x3ee72e(0x2b5))_0xeebb68[_0x3ee72e(0x24d)]('-\x20Read\x20file\x20`'+_0x433e59[_0x3ee72e(0x1fa)]+'`');else{if(_0x4efdd5===_0x3ee72e(0x1ef))_0xeebb68[_0x3ee72e(0x24d)](_0x3ee72e(0x240)+(_0x433e59[_0x3ee72e(0x2e2)]||'.')+'`');else _0x4efdd5===_0x3ee72e(0x305)&&_0xeebb68[_0x3ee72e(0x24d)](_0x3ee72e(0x22e)+_0x433e59[_0x3ee72e(0x27e)]+_0x3ee72e(0x2d8)+(_0x433e59['path']||'.')+'`');}}}catch{}}}_0x58d768[_0x3ee72e(0x24d)](_0xeebb68[_0x3ee72e(0x27c)]('\x0a'));const _0x6dece4=['',_0x3ee72e(0x29e)];for(const _0x35fb08 of _0x39febe){if(_0x35fb08['lines']==='*')_0x6dece4['push']('-\x20'+_0x35fb08[_0x3ee72e(0x1fa)]+':*');else{if(Array[_0x3ee72e(0x1f9)](_0x35fb08[_0x3ee72e(0x26f)])){const _0x3422e3=_0x35fb08[_0x3ee72e(0x26f)][_0x3ee72e(0x244)](([_0x59ae59,_0x15e627])=>{if(_0x59ae59===_0x15e627)return''+_0x59ae59;return _0x59ae59+'-'+_0x15e627;});_0x6dece4['push']('-\x20'+_0x35fb08[_0x3ee72e(0x1fa)]+':'+_0x3422e3[_0x3ee72e(0x27c)](','));}else _0x6dece4[_0x3ee72e(0x24d)]('-\x20'+_0x35fb08[_0x3ee72e(0x1fa)]+':*');}}_0x6dece4[_0x3ee72e(0x24d)](''),_0x58d768[_0x3ee72e(0x24d)](_0x6dece4[_0x3ee72e(0x27c)]('\x0a')),_0x58d768[_0x3ee72e(0x24d)]('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x5b8ad8=[],_0x58a4d8=[];for(const _0x224e11 of _0x39febe){let _0x355423=a0_0x53111d[_0x3ee72e(0x1f1)](_0x3bea39[_0x3ee72e(0x2fc)]['repo_path'],_0x224e11['path']),_0x3de968=null,_0x158a9e=null;try{_0x3de968=await a0_0x51536d[_0x3ee72e(0x2b3)](_0x355423,{'encoding':'utf-8'});}catch(_0x55592a){const _0x2a5d24=fixPathRepetition(_0x355423);if(_0x2a5d24)try{_0x3de968=await a0_0x51536d[_0x3ee72e(0x2b3)](_0x2a5d24,{'encoding':_0x3ee72e(0x252)}),_0x355423=_0x2a5d24;}catch{_0x158a9e=_0x55592a instanceof Error?_0x55592a:new Error(String(_0x55592a));}else _0x158a9e=_0x55592a instanceof Error?_0x55592a:new Error(String(_0x55592a));}if(_0x3de968!==null){const _0x20edff=_0x3de968[_0x3ee72e(0x2de)](/\r?\n/),_0x46dba5=[];if(_0x224e11['lines']==='*'||!Array['isArray'](_0x224e11[_0x3ee72e(0x26f)]))for(let _0x4d96a4=0x1;_0x4d96a4<=_0x20edff[_0x3ee72e(0x2eb)];_0x4d96a4++){const _0x1b7717=_0x20edff[_0x4d96a4-0x1];_0x46dba5[_0x3ee72e(0x24d)](_0x4d96a4+'|\x20'+_0x1b7717);}else for(const [_0x30c171,_0x553c7e]of _0x224e11[_0x3ee72e(0x26f)]){_0x46dba5[_0x3ee72e(0x2eb)]>0x0&&_0x46dba5[_0x3ee72e(0x24d)]('');for(let _0x4985a8=_0x30c171;_0x4985a8<=_0x553c7e&&_0x4985a8<=_0x20edff[_0x3ee72e(0x2eb)];_0x4985a8++){const _0x372387=_0x20edff[_0x4985a8-0x1];_0x46dba5['push'](_0x4985a8+'|\x20'+_0x372387);}}_0x58a4d8[_0x3ee72e(0x24d)]({'path':_0x224e11['path'],'content':_0x46dba5[_0x3ee72e(0x27c)]('\x0a')});}else _0x5b8ad8[_0x3ee72e(0x24d)](_0x3ee72e(0x21c)+_0x224e11[_0x3ee72e(0x1fa)]+_0x3ee72e(0x265)+(_0x158a9e?.['message']||_0x3ee72e(0x25c))+_0x3ee72e(0x211));}try{const _0x3b6aaf=await compactFileContexts(_0x58a4d8,_0x3bea39['data'][_0x3ee72e(0x273)],MORPH_API_KEY,MORPH_API_URL);for(const _0x23197e of _0x3b6aaf){_0x5b8ad8[_0x3ee72e(0x24d)](_0x3ee72e(0x21c)+_0x23197e[_0x3ee72e(0x1fa)]+'\x22>\x0a'+_0x23197e[_0x3ee72e(0x266)]+_0x3ee72e(0x211));}}catch(_0x503abd){logger[_0x3ee72e(0x29d)](_0x3ee72e(0x2e7),'compaction_failed',{'error':_0x503abd instanceof Error?_0x503abd[_0x3ee72e(0x1de)]:String(_0x503abd),'files_count':_0x58a4d8[_0x3ee72e(0x2eb)]});for(const _0x5bb1cb of _0x58a4d8){_0x5b8ad8['push']('<file\x20path=\x22'+_0x5bb1cb[_0x3ee72e(0x1fa)]+_0x3ee72e(0x28d)+_0x5bb1cb[_0x3ee72e(0x266)]+'\x0a</file>');}}_0x58d768[_0x3ee72e(0x24d)](_0x5b8ad8['join']('\x0a\x0a')),_0x545b84=_0x58d768[_0x3ee72e(0x27c)]('\x0a');const _0x107daf=_0x3196ed[_0x3ee72e(0x2a0)]?.[_0x3ee72e(0x20f)](_0x5b7ffa=>_0x5b7ffa[_0x3ee72e(0x1de)]?.[_0x3ee72e(0x1e1)](_0x3ee72e(0x214)))||[];if(_0x107daf[_0x3ee72e(0x2eb)]>0x0){const _0x394d21=_0x107daf[_0x3ee72e(0x244)](_0x582410=>_0x582410[_0x3ee72e(0x1de)])[_0x3ee72e(0x27c)](';\x20');reportMorphError({'error_message':_0x394d21,'error_type':_0x3ee72e(0x2b0),'context':{'tool':'codebase_search','repo_path':_0x3bea39[_0x3ee72e(0x2fc)]['repo_path'],'query':_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x273)],'model':'morph-warp-grep-v2.1','termination_reason':'completed_with_file_errors','error_count':_0x107daf[_0x3ee72e(0x2eb)],'is_timeout':![],'timings':_0x3196ed[_0x3ee72e(0x26a)],'files_attempted':_0x39febe[_0x3ee72e(0x244)](_0x58f4ed=>({'path':_0x58f4ed[_0x3ee72e(0x1fa)],'lines':_0x58f4ed[_0x3ee72e(0x26f)]})),'tool_calls':_0x58a748(_0x3196ed[_0x3ee72e(0x2b1)]),'messages':_0x3196ed[_0x3ee72e(0x2b1)]?.[_0x3ee72e(0x244)](_0x590436=>({'role':_0x590436[_0x3ee72e(0x226)],'content':_0x590436['content'],..._0x590436[_0x3ee72e(0x210)]?{'tool_calls':_0x590436[_0x3ee72e(0x210)][_0x3ee72e(0x2eb)]}:{},..._0x590436[_0x3ee72e(0x26b)]?{'tool_call_id':_0x590436['tool_call_id']}:{}})),'request_content':{'query':_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x273)],'repo_path':_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x290)],'repoRoot':a0_0x53111d[_0x3ee72e(0x1f1)](_0x3bea39['data'][_0x3ee72e(0x290)]),'model':_0x3ee72e(0x236)}},'source':_0x3ee72e(0x22f)})[_0x3ee72e(0x22a)](()=>{});}}else{if(_0x3196ed[_0x3ee72e(0x23f)]===_0x3ee72e(0x2d3)&&_0x3196ed[_0x3ee72e(0x2a0)][_0x3ee72e(0x2eb)]>0x0){const _0x2bd2d0=_0x3196ed['errors'][_0x3ee72e(0x244)](_0x25065b=>_0x25065b['message'])[_0x3ee72e(0x27c)](';\x20');_0x545b84=_0x3ee72e(0x303)+_0x2bd2d0;const _0x25a541=_0x2bd2d0[_0x3ee72e(0x28b)]()[_0x3ee72e(0x2da)](_0x3ee72e(0x24f))||_0x2bd2d0[_0x3ee72e(0x28b)]()[_0x3ee72e(0x2da)](_0x3ee72e(0x2c7))||_0x2bd2d0[_0x3ee72e(0x28b)]()[_0x3ee72e(0x2da)](_0x3ee72e(0x2f5)),_0x3fabf5=_0x3196ed['finish']?.[_0x3ee72e(0x1e3)]?.['files'],_0x26b387=_0x3196ed[_0x3ee72e(0x2a0)][0x0];reportMorphError({'error_message':_0x2bd2d0,'error_type':_0x25a541?_0x3ee72e(0x2e8):_0x26b387?.[_0x3ee72e(0x247)]?.[_0x3ee72e(0x2f2)]||'WarpGrepError','context':{'tool':_0x3ee72e(0x215),'repo_path':_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x290)],'query':_0x3bea39[_0x3ee72e(0x2fc)]['search_string'],'model':_0x3ee72e(0x236),'termination_reason':_0x3196ed[_0x3ee72e(0x23f)],'error_count':_0x3196ed[_0x3ee72e(0x2a0)]['length'],'is_timeout':_0x25a541,'timings':_0x3196ed[_0x3ee72e(0x26a)],'files_attempted':_0x3fabf5?.['map'](_0x2bc285=>({'path':_0x2bc285[_0x3ee72e(0x1fa)],'lines':_0x2bc285[_0x3ee72e(0x26f)]})),'tool_calls':_0x58a748(_0x3196ed[_0x3ee72e(0x2b1)]),'messages':_0x3196ed['messages']?.[_0x3ee72e(0x244)](_0x516c95=>({'role':_0x516c95[_0x3ee72e(0x226)],'content':_0x516c95[_0x3ee72e(0x266)],..._0x516c95[_0x3ee72e(0x210)]?{'tool_calls':_0x516c95[_0x3ee72e(0x210)][_0x3ee72e(0x2eb)]}:{},..._0x516c95[_0x3ee72e(0x26b)]?{'tool_call_id':_0x516c95[_0x3ee72e(0x26b)]}:{}})),'request_content':{'query':_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x273)],'repo_path':_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x290)],'repoRoot':a0_0x53111d[_0x3ee72e(0x1f1)](_0x3bea39['data'][_0x3ee72e(0x290)]),'model':_0x3ee72e(0x236)}},'stack_trace':_0x26b387?.['stack']||undefined,'source':_0x3ee72e(0x22f)})[_0x3ee72e(0x22a)](()=>{});}else _0x545b84=_0x3ee72e(0x293);}return{'content':[{'type':_0x3ee72e(0x253),'text':_0x545b84}]};}catch(_0x3cb2ca){const _0x1e5344=handleMorphAPIError(_0x3cb2ca);if(_0x1e5344)return logger[_0x3ee72e(0x278)](_0x3ee72e(0x2e7),_0x3ee72e(0x28c),{'tool':_0x3ee72e(0x215),'error':_0x3ee72e(0x23c),'latency_ms':Date[_0x3ee72e(0x306)]()-_0x20ddf3}),_0x1e5344;const _0xa38819=_0x3cb2ca instanceof Error?_0x3cb2ca[_0x3ee72e(0x1de)]:String(_0x3cb2ca);logger[_0x3ee72e(0x278)](_0x3ee72e(0x2e7),_0x3ee72e(0x28c),{'tool':_0x3ee72e(0x215),'error':_0xa38819,'repo_path':_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x290)],'query':_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x273)],'latency_ms':Date[_0x3ee72e(0x306)]()-_0x20ddf3});const _0x59bd4a=_0xa38819[_0x3ee72e(0x28b)]()[_0x3ee72e(0x2da)](_0x3ee72e(0x24f))||_0xa38819[_0x3ee72e(0x28b)]()[_0x3ee72e(0x2da)]('timed\x20out')||_0xa38819[_0x3ee72e(0x28b)]()['includes'](_0x3ee72e(0x2f5))||_0x3cb2ca instanceof Error&&_0x3cb2ca['name']===_0x3ee72e(0x2e8);return reportMorphError({'error_message':_0xa38819,'error_type':_0x59bd4a?'TimeoutError':_0x3cb2ca instanceof Error?_0x3cb2ca[_0x3ee72e(0x247)][_0x3ee72e(0x2f2)]:'UnknownError','context':{'tool':_0x3ee72e(0x215),'repo_path':_0x3bea39['data'][_0x3ee72e(0x290)],'query':_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x273)],'model':'morph-warp-grep-v2.1','is_timeout':_0x59bd4a,'exception_phase':_0x3ee72e(0x272),'request_content':{'query':_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x273)],'repo_path':_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x290)],'repoRoot':a0_0x53111d[_0x3ee72e(0x1f1)](_0x3bea39[_0x3ee72e(0x2fc)][_0x3ee72e(0x290)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x3cb2ca instanceof Error?_0x3cb2ca[_0x3ee72e(0x21f)]:undefined,'source':_0x3ee72e(0x22f)})[_0x3ee72e(0x22a)](()=>{}),{'content':[{'type':_0x3ee72e(0x253),'text':'Error\x20running\x20fast\x20context\x20search:\x20'+_0xa38819}],'isError':![]};}}case TOOL_NAMES['GITHUB_CODEBASE_SEARCH']:{const _0x299ac4=WarpGrepGitHubArgsSchema[_0x3ee72e(0x237)](_0x1506c7);if(!_0x299ac4[_0x3ee72e(0x216)])return{'content':[{'type':_0x3ee72e(0x253),'text':_0x3ee72e(0x2d5)+_0x299ac4[_0x3ee72e(0x278)]}],'isError':!![]};const _0x363843=_0x299ac4[_0x3ee72e(0x2fc)][_0x3ee72e(0x287)]||_0x299ac4[_0x3ee72e(0x2fc)][_0x3ee72e(0x275)];if(!_0x363843)return{'content':[{'type':'text','text':'Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id'}],'isError':!![]};const _0x4c6f5d=MORPH_API_KEY;if(!_0x4c6f5d)throw new Error(_0x3ee72e(0x2f7));const _0x49bdc8=Date[_0x3ee72e(0x306)]();logger['debug'](_0x3ee72e(0x2e7),'github_search_start',{'identifier':_0x363843,'query':_0x299ac4[_0x3ee72e(0x2fc)][_0x3ee72e(0x273)],'branch':_0x299ac4[_0x3ee72e(0x2fc)]['branch']});try{const _0x4e5b31=new WarpGrepClient({'morphApiKey':_0x4c6f5d,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0xf46774=await _0x4e5b31[_0x3ee72e(0x1fc)]({'searchTerm':_0x299ac4[_0x3ee72e(0x2fc)][_0x3ee72e(0x273)],'github':_0x363843,'branch':_0x299ac4[_0x3ee72e(0x2fc)][_0x3ee72e(0x2fb)]}),_0x461a12=Date[_0x3ee72e(0x306)]()-_0x49bdc8;logMcpStderr(_0x3ee72e(0x1e8)+_0x461a12+_0x3ee72e(0x2a6)+_0xf46774['success']);const _0x20666f=formatResult(_0xf46774);return{'content':[{'type':_0x3ee72e(0x253),'text':_0x20666f}]};}catch(_0x404c53){const _0x3a15a5=handleMorphAPIError(_0x404c53);if(_0x3a15a5)return _0x3a15a5;const _0x3fb3de=Date['now']()-_0x49bdc8,_0x29d9c1=_0x404c53 instanceof Error?_0x404c53[_0x3ee72e(0x1de)]:String(_0x404c53);return logMcpStderr('[github_codebase_search]\x20Failed\x20in\x20'+_0x3fb3de+_0x3ee72e(0x1e9),_0x29d9c1),reportMorphError({'error_message':_0x29d9c1,'error_type':_0x404c53 instanceof Error?_0x404c53[_0x3ee72e(0x247)][_0x3ee72e(0x2f2)]:_0x3ee72e(0x1f7),'context':{'tool':'github_codebase_search','github_url':_0x363843,'search_string':_0x299ac4[_0x3ee72e(0x2fc)][_0x3ee72e(0x273)],'branch':_0x299ac4[_0x3ee72e(0x2fc)][_0x3ee72e(0x2fb)]},'stack_trace':_0x404c53 instanceof Error?_0x404c53[_0x3ee72e(0x21f)]:undefined,'source':_0x3ee72e(0x22f),'tool':'github_codebase_search','latency_ms':_0x3fb3de})[_0x3ee72e(0x22a)](()=>{}),{'content':[{'type':_0x3ee72e(0x253),'text':_0x3ee72e(0x26e)+_0x29d9c1}],'isError':![]};}}default:throw new Error(_0x3ee72e(0x1f0)+_0x3fc855);}}catch(_0x232270){const _0x2bd86d=_0x232270 instanceof Error?_0x232270[_0x3ee72e(0x1de)]:String(_0x232270);return reportMorphError({'error_message':_0x2bd86d,'error_type':_0x232270 instanceof Error?_0x232270[_0x3ee72e(0x247)][_0x3ee72e(0x2f2)]:_0x3ee72e(0x1f7),'context':{'tool':_0x3fc855,'arguments':_0x1506c7?JSON[_0x3ee72e(0x200)](_0x1506c7)[_0x3ee72e(0x269)](0x0,0x1f4):undefined,'mcp_server_version':_0x3ee72e(0x1ec)},'stack_trace':_0x232270 instanceof Error?_0x232270[_0x3ee72e(0x21f)]:undefined,'source':'mcp-filesystem'})[_0x3ee72e(0x22a)](()=>{}),{'content':[{'type':_0x3ee72e(0x253),'text':_0x3ee72e(0x303)+_0x2bd86d}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x5caab2){const _0x583be9=a0_0x1f02f7,_0x593bc1=await getValidRootDirectories(_0x5caab2);if(_0x593bc1[_0x583be9(0x2eb)]>0x0)allowedDirectories=[..._0x593bc1],logMcpStderr(_0x583be9(0x1db)+_0x593bc1['length']+'\x20valid\x20directories');else{logMcpStderr(_0x583be9(0x246));if(ENABLE_WORKSPACE_MODE)try{const _0x541172=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x541172&&(allowedDirectories=[_0x541172],logMcpStderr(_0x583be9(0x2bc)+_0x541172));}catch(_0x5307fe){logMcpStderr(_0x583be9(0x22b)+_0x5307fe);}}}server[a0_0x1f02f7(0x2ec)](RootsListChangedNotificationSchema,async()=>{const _0x5a748a=a0_0x1f02f7;try{const _0x4adde5=await server[_0x5a748a(0x208)]();_0x4adde5&&_0x5a748a(0x21d)in _0x4adde5&&await updateAllowedDirectoriesFromRoots(_0x4adde5[_0x5a748a(0x21d)]);}catch(_0x5d04a8){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x5d04a8 instanceof Error?_0x5d04a8['message']:String(_0x5d04a8));}}),server[a0_0x1f02f7(0x220)]=async()=>{const _0x35c5c3=a0_0x1f02f7,_0x4fdf5d=server['getClientCapabilities']();if(_0x4fdf5d?.[_0x35c5c3(0x21d)])try{const _0x58f03d=await server[_0x35c5c3(0x208)]();_0x58f03d&&_0x35c5c3(0x21d)in _0x58f03d?await updateAllowedDirectoriesFromRoots(_0x58f03d[_0x35c5c3(0x21d)]):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x3ba85d){logMcpStderr('Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:',_0x3ba85d instanceof Error?_0x3ba85d[_0x35c5c3(0x1de)]:String(_0x3ba85d));}else{if(allowedDirectories[_0x35c5c3(0x2eb)]>0x0)logMcpStderr(_0x35c5c3(0x29b),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x35c5c3(0x1e0));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 _0x352e85=a0_0x1f02f7,_0x346d95=new StdioServerTransport();await server[_0x352e85(0x2cd)](_0x346d95),logMcpStderr(_0x352e85(0x1f2)),allowedDirectories[_0x352e85(0x2eb)]===0x0&&logMcpStderr(_0x352e85(0x20c));}runServer()[a0_0x1f02f7(0x22a)](_0x1b1cc0=>{const _0x16aa75=a0_0x1f02f7;logMcpStderr(_0x16aa75(0x302),_0x1b1cc0),process[_0x16aa75(0x2a9)](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
function a1_0x3021(_0x2ce03e,_0x28161e){_0x2ce03e=_0x2ce03e-0x1a2;var _0xaf6341=a1_0xaf63();var _0x3021e2=_0xaf6341[_0x2ce03e];return _0x3021e2;}var a1_0x1a7b4c=a1_0x3021;(function(_0x41363a,_0x55bd13){var _0x56af34=a1_0x3021,_0x3c31c8=_0x41363a();while(!![]){try{var _0x157404=parseInt(_0x56af34(0x1ab))/0x1+-parseInt(_0x56af34(0x1b0))/0x2+parseInt(_0x56af34(0x1a3))/0x3+-parseInt(_0x56af34(0x1ac))/0x4+parseInt(_0x56af34(0x1b6))/0x5+-parseInt(_0x56af34(0x1b2))/0x6*(parseInt(_0x56af34(0x1b5))/0x7)+-parseInt(_0x56af34(0x1ad))/0x8*(-parseInt(_0x56af34(0x1aa))/0x9);if(_0x157404===_0x55bd13)break;else _0x3c31c8['push'](_0x3c31c8['shift']());}catch(_0x5593c1){_0x3c31c8['push'](_0x3c31c8['shift']());}}}(a1_0xaf63,0x85bd9));import a1_0x318e8e from'os';import{logger}from'./logger.js';export function getOperatingSystemType(_0x1bceab=a1_0x318e8e[a1_0x1a7b4c(0x1b1)]()){var _0x2ccf34=a1_0x1a7b4c;switch(_0x1bceab){case _0x2ccf34(0x1a6):return _0x2ccf34(0x1b3);case _0x2ccf34(0x1af):return'Windows';case _0x2ccf34(0x1b4):return _0x2ccf34(0x1a8);default:return _0x2ccf34(0x1a5);}}function a1_0xaf63(){var _0x2eb3ad=['16oLcgLd','[os=','win32','991776OHRsNW','platform','24IspUDc','macOS','linux','1347199pPCJdW','1586360jDpOTD','MCP','3118260nNrgVj','info','Unknown','darwin','length','Linux','map','1907109OHYvtb','986380ITuuLG','3813428sEBONq'];a1_0xaf63=function(){return _0x2eb3ad;};return a1_0xaf63();}export function formatMcpLogMessage(_0x1adac9,_0x14954b=a1_0x318e8e['platform']()){var _0x11cba5=a1_0x1a7b4c;return _0x11cba5(0x1ae)+getOperatingSystemType(_0x14954b)+']\x20'+_0x1adac9;}export function logMcpStderr(_0x2d0271,..._0x2f4691){var _0x91364c=a1_0x1a7b4c;console['error'](formatMcpLogMessage(_0x2d0271),..._0x2f4691),logger[_0x91364c(0x1a4)](_0x91364c(0x1a2),_0x2d0271,_0x2f4691[_0x91364c(0x1a7)]?{'args':_0x2f4691[_0x91364c(0x1a9)](_0x380e3d=>String(_0x380e3d))}:undefined);}
|
package/dist/logger.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const a2_0x1ea00c=a2_0x5d57;function a2_0x216f(){const _0x1f5068=['6551868Ggrhgu','env','2905973NWlxlT','warn','MORPH_DEBUG','_log','45358GwMKsU','write','enabled',']\x20[','fileStream','34aVjgma','35866620JldLTh','27msrcLv','MORPH_LOG_FILE','1236968xSLcfT','debug','stringify','error','toUpperCase','1268845DFqAjE','40872USTKHY','4IzEmCW'];a2_0x216f=function(){return _0x1f5068;};return a2_0x216f();}(function(_0x2e4ea3,_0x4684c3){const _0x4a460d=a2_0x5d57,_0x28502c=_0x2e4ea3();while(!![]){try{const _0x1080c6=parseInt(_0x4a460d(0x11b))/0x1*(-parseInt(_0x4a460d(0x120))/0x2)+-parseInt(_0x4a460d(0x12a))/0x3+parseInt(_0x4a460d(0x12b))/0x4*(-parseInt(_0x4a460d(0x129))/0x5)+-parseInt(_0x4a460d(0x12c))/0x6+-parseInt(_0x4a460d(0x12e))/0x7+parseInt(_0x4a460d(0x124))/0x8*(-parseInt(_0x4a460d(0x122))/0x9)+parseInt(_0x4a460d(0x121))/0xa;if(_0x1080c6===_0x4684c3)break;else _0x28502c['push'](_0x28502c['shift']());}catch(_0x273c38){_0x28502c['push'](_0x28502c['shift']());}}}(a2_0x216f,0x8ceb3));function a2_0x5d57(_0x3e74a5,_0x1e48e9){_0x3e74a5=_0x3e74a5-0x11a;const _0x216f16=a2_0x216f();let _0x5d57d3=_0x216f16[_0x3e74a5];return _0x5d57d3;}import{createWriteStream}from'fs';class MorphLogger{[a2_0x1ea00c(0x11d)];[a2_0x1ea00c(0x11f)];constructor(){const _0x17ebf7=a2_0x1ea00c;this[_0x17ebf7(0x11d)]=process[_0x17ebf7(0x12d)][_0x17ebf7(0x130)]==='1'||!!process[_0x17ebf7(0x12d)]['MORPH_LOG_FILE'];const _0xfe7939=process['env'][_0x17ebf7(0x123)];this[_0x17ebf7(0x11f)]=_0xfe7939?createWriteStream(_0xfe7939,{'flags':'a'}):null;}['debug'](_0x3e4bcd,_0x510070,_0x32636f){const _0x14a7ee=a2_0x1ea00c;this[_0x14a7ee(0x11a)](_0x14a7ee(0x125),_0x3e4bcd,_0x510070,_0x32636f);}['info'](_0x29829d,_0x51286d,_0x31fb2d){const _0x3d2808=a2_0x1ea00c;this[_0x3d2808(0x11a)]('info',_0x29829d,_0x51286d,_0x31fb2d);}['warn'](_0x5ebbda,_0x2489bf,_0x547167){const _0x3b04aa=a2_0x1ea00c;this[_0x3b04aa(0x11a)](_0x3b04aa(0x12f),_0x5ebbda,_0x2489bf,_0x547167);}['error'](_0x3a5fdb,_0x205d7d,_0x2fcb87){const _0x57145a=a2_0x1ea00c;this[_0x57145a(0x11a)]('error',_0x3a5fdb,_0x205d7d,_0x2fcb87);}['enable'](){const _0x5c43a4=a2_0x1ea00c;this[_0x5c43a4(0x11d)]=!![];}get['isEnabled'](){const _0x25bd34=a2_0x1ea00c;return this[_0x25bd34(0x11d)];}[a2_0x1ea00c(0x11a)](_0x3dc7d1,_0x2a90d4,_0x53ba3a,_0x33cf04){const _0x5227d5=a2_0x1ea00c;if(_0x3dc7d1!=='error'&&!this[_0x5227d5(0x11d)])return;const _0xd81c66=new Date()['toISOString'](),_0x26b35e='['+_0xd81c66+_0x5227d5(0x11e)+_0x3dc7d1[_0x5227d5(0x128)]()+_0x5227d5(0x11e)+_0x2a90d4+']';console[_0x5227d5(0x127)](_0x33cf04?_0x26b35e+'\x20'+_0x53ba3a+'\x20'+JSON[_0x5227d5(0x126)](_0x33cf04):_0x26b35e+'\x20'+_0x53ba3a),this[_0x5227d5(0x11f)]?.[_0x5227d5(0x11c)](JSON[_0x5227d5(0x126)]({'ts':_0xd81c66,'level':_0x3dc7d1,'component':_0x2a90d4,'msg':_0x53ba3a,..._0x33cf04&&{'data':_0x33cf04}})+'\x0a');}}export const logger=new MorphLogger();
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x270b4d,_0x282fa7){const _0x160e49=a3_0x288a,_0x3ad726=_0x270b4d();while(!![]){try{const _0xb61c68=parseInt(_0x160e49(0x121))/0x1+parseInt(_0x160e49(0x11f))/0x2*(-parseInt(_0x160e49(0x120))/0x3)+parseInt(_0x160e49(0x129))/0x4+-parseInt(_0x160e49(0x122))/0x5+parseInt(_0x160e49(0x12b))/0x6+-parseInt(_0x160e49(0x124))/0x7*(parseInt(_0x160e49(0x12e))/0x8)+-parseInt(_0x160e49(0x11e))/0x9*(-parseInt(_0x160e49(0x12a))/0xa);if(_0xb61c68===_0x282fa7)break;else _0x3ad726['push'](_0x3ad726['shift']());}catch(_0x553408){_0x3ad726['push'](_0x3ad726['shift']());}}}(a3_0x1de2,0x86c37));import a3_0x37bdb9 from'path';import a3_0x11dd64 from'os';export function convertToWindowsPath(_0x4e3bcd){const _0x14087b=a3_0x288a;if(_0x4e3bcd[_0x14087b(0x12f)](_0x14087b(0x123))){const _0xc59c83=_0x4e3bcd[_0x14087b(0x11c)](0x5)[_0x14087b(0x11d)](),_0xfdc33e=_0x4e3bcd['slice'](0x6)[_0x14087b(0x131)](/\//g,'\x5c');return _0xc59c83+':'+_0xfdc33e;}if(_0x4e3bcd[_0x14087b(0x130)](/^\/[a-zA-Z]\//)){const _0x67455=_0x4e3bcd[_0x14087b(0x11c)](0x1)[_0x14087b(0x11d)](),_0x124424=_0x4e3bcd[_0x14087b(0x126)](0x2)[_0x14087b(0x131)](/\//g,'\x5c');return _0x67455+':'+_0x124424;}if(_0x4e3bcd[_0x14087b(0x130)](/^[a-zA-Z]:/))return _0x4e3bcd[_0x14087b(0x131)](/\//g,'\x5c');return _0x4e3bcd;}export function normalizePath(_0x43b896){const _0x3b2e15=a3_0x288a;_0x43b896=_0x43b896[_0x3b2e15(0x12d)]()[_0x3b2e15(0x131)](/^["']|["']$/g,'');const _0x28c85b=_0x43b896[_0x3b2e15(0x12f)]('/')&&!_0x43b896[_0x3b2e15(0x130)](/^\/mnt\/[a-z]\//i)&&!_0x43b896['match'](/^\/[a-zA-Z]\//);if(_0x28c85b)return _0x43b896[_0x3b2e15(0x131)](/\/+/g,'/')[_0x3b2e15(0x131)](/\/+$/,'');_0x43b896=convertToWindowsPath(_0x43b896);if(_0x43b896[_0x3b2e15(0x12f)]('\x5c\x5c')){let _0x1f8f11=_0x43b896;_0x1f8f11=_0x1f8f11[_0x3b2e15(0x131)](/^\\{2,}/,'\x5c\x5c');const _0x110397=_0x1f8f11[_0x3b2e15(0x127)](0x2)[_0x3b2e15(0x131)](/\\\\/g,'\x5c');_0x43b896='\x5c\x5c'+_0x110397;}else _0x43b896=_0x43b896[_0x3b2e15(0x131)](/\\\\/g,'\x5c');let _0x5cd336=a3_0x37bdb9[_0x3b2e15(0x128)](_0x43b896);_0x43b896['startsWith']('\x5c\x5c')&&!_0x5cd336[_0x3b2e15(0x12f)]('\x5c\x5c')&&(_0x5cd336='\x5c'+_0x5cd336);if(_0x5cd336[_0x3b2e15(0x130)](/^[a-zA-Z]:/)){let _0x2fdb61=_0x5cd336['replace'](/\//g,'\x5c');return/^[a-z]:/[_0x3b2e15(0x125)](_0x2fdb61)&&(_0x2fdb61=_0x2fdb61[_0x3b2e15(0x11c)](0x0)[_0x3b2e15(0x11d)]()+_0x2fdb61[_0x3b2e15(0x126)](0x1)),_0x2fdb61;}return _0x5cd336[_0x3b2e15(0x131)](/\//g,'\x5c');}export function expandHome(_0x3dfce7){const _0x5580ba=a3_0x288a;if(_0x3dfce7['startsWith']('~/')||_0x3dfce7==='~')return a3_0x37bdb9['join'](a3_0x11dd64[_0x5580ba(0x12c)](),_0x3dfce7[_0x5580ba(0x126)](0x1));return _0x3dfce7;}function a3_0x288a(_0x223076,_0x385562){_0x223076=_0x223076-0x11c;const _0x1de235=a3_0x1de2();let _0x288a74=_0x1de235[_0x223076];return _0x288a74;}function a3_0x1de2(){const _0x3727d1=['2189744SWLQmk','startsWith','match','replace','charAt','toUpperCase','465471ViMRjf','3546AZRUVB','1677ZtJCJZ','262636NzOalv','401280kUZsis','/mnt/','7PHStnZ','test','slice','substring','normalize','3302356QDtBrr','50dJGWrR','3301512NeFJqi','homedir','trim'];a3_0x1de2=function(){return _0x3727d1;};return a3_0x1de2();}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0xa86854,_0x4b1f0a){const _0x1904aa=a4_0x19b2,_0x50a59d=_0xa86854();while(!![]){try{const _0x16b487=parseInt(_0x1904aa(0x1f1))/0x1+-parseInt(_0x1904aa(0x1f4))/0x2+-parseInt(_0x1904aa(0x1fd))/0x3+parseInt(_0x1904aa(0x1ff))/0x4+-parseInt(_0x1904aa(0x1fe))/0x5+-parseInt(_0x1904aa(0x1f3))/0x6*(parseInt(_0x1904aa(0x201))/0x7)+parseInt(_0x1904aa(0x1f7))/0x8;if(_0x16b487===_0x4b1f0a)break;else _0x50a59d['push'](_0x50a59d['shift']());}catch(_0x56b68e){_0x50a59d['push'](_0x50a59d['shift']());}}}(a4_0x26d3,0xa0bd7));import a4_0x2ef420 from'path';function a4_0x19b2(_0x3654d5,_0x3f2582){_0x3654d5=_0x3654d5-0x1f1;const _0x26d369=a4_0x26d3();let _0x19b2d4=_0x26d369[_0x3654d5];return _0x19b2d4;}function a4_0x26d3(){const _0xcc5a7=['6972djkLJz','includes','903905alxRCQ','isAbsolute','2214buCZcs','2212174DwuObe','string','resolve','18994144QMIuPA','startsWith','Path\x20must\x20be\x20absolute\x20after\x20normalization','sep','Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization','normalize','470271xNwBrw','5244705yqySjw','238108LkLlke','isArray'];a4_0x26d3=function(){return _0xcc5a7;};return a4_0x26d3();}export function isPathWithinAllowedDirectories(_0x3f986b,_0x2f12b0){const _0x4eec86=a4_0x19b2;if(typeof _0x3f986b!=='string'||!Array[_0x4eec86(0x200)](_0x2f12b0))return![];if(!_0x3f986b||_0x2f12b0['length']===0x0)return![];if(_0x3f986b[_0x4eec86(0x202)]('\x00'))return![];let _0x3e6eb1;try{_0x3e6eb1=a4_0x2ef420['resolve'](a4_0x2ef420[_0x4eec86(0x1fc)](_0x3f986b));}catch{return![];}if(!a4_0x2ef420[_0x4eec86(0x1f2)](_0x3e6eb1))throw new Error(_0x4eec86(0x1f9));return _0x2f12b0['some'](_0x1f15ab=>{const _0x26f9e5=_0x4eec86;if(typeof _0x1f15ab!==_0x26f9e5(0x1f5)||!_0x1f15ab)return![];if(_0x1f15ab[_0x26f9e5(0x202)]('\x00'))return![];let _0x41dc31;try{_0x41dc31=a4_0x2ef420[_0x26f9e5(0x1f6)](a4_0x2ef420[_0x26f9e5(0x1fc)](_0x1f15ab));}catch{return![];}if(!a4_0x2ef420[_0x26f9e5(0x1f2)](_0x41dc31))throw new Error(_0x26f9e5(0x1fb));if(_0x3e6eb1===_0x41dc31)return!![];if(_0x41dc31===a4_0x2ef420[_0x26f9e5(0x1fa)])return _0x3e6eb1[_0x26f9e5(0x1f8)](a4_0x2ef420[_0x26f9e5(0x1fa)]);return _0x3e6eb1[_0x26f9e5(0x1f8)](_0x41dc31+a4_0x2ef420[_0x26f9e5(0x1fa)]);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
function a5_0x15d7(_0x11d234,_0x532fec){_0x11d234=_0x11d234-0x16d;const _0x56c0c2=a5_0x56c0();let _0x15d79f=_0x56c0c2[_0x11d234];return _0x15d79f;}(function(_0x1d73e4,_0x2422a6){const _0x18a381=a5_0x15d7,_0x30ea77=_0x1d73e4();while(!![]){try{const _0x12c315=parseInt(_0x18a381(0x185))/0x1+-parseInt(_0x18a381(0x17e))/0x2+-parseInt(_0x18a381(0x181))/0x3*(parseInt(_0x18a381(0x17d))/0x4)+-parseInt(_0x18a381(0x180))/0x5*(-parseInt(_0x18a381(0x172))/0x6)+-parseInt(_0x18a381(0x17f))/0x7+parseInt(_0x18a381(0x175))/0x8+-parseInt(_0x18a381(0x170))/0x9*(-parseInt(_0x18a381(0x178))/0xa);if(_0x12c315===_0x2422a6)break;else _0x30ea77['push'](_0x30ea77['shift']());}catch(_0x58112e){_0x30ea77['push'](_0x30ea77['shift']());}}}(a5_0x56c0,0x290dc));function a5_0x56c0(){const _0x454240=['file://','uri','resolve','279809QcEpZt','\x20due\x20to\x20error:\x20','homedir','message','567wRlWUO','Skipping\x20invalid\x20directory:\x20','12ELgkln','startsWith','non-directory\x20root','320328pfZQJF','stat','Skipping\x20','19870fzUWZo','push','realpath','isDirectory','slice','12uCwHpl','510862jZMWrv','254289mMXOYF','591390oeoZdg','221673cVpPSH'];a5_0x56c0=function(){return _0x454240;};return a5_0x56c0();}import{promises as a5_0x9c0cf4}from'fs';import a5_0x2e2cb8 from'path';import a5_0x367db3 from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';async function parseRootUri(_0x5e8740){const _0x9f65e9=a5_0x15d7;try{const _0x4313b2=_0x5e8740[_0x9f65e9(0x173)](_0x9f65e9(0x182))?_0x5e8740[_0x9f65e9(0x17c)](0x7):_0x5e8740,_0x5f023a=_0x4313b2['startsWith']('~/')||_0x4313b2==='~'?a5_0x2e2cb8['join'](a5_0x367db3[_0x9f65e9(0x16e)](),_0x4313b2[_0x9f65e9(0x17c)](0x1)):_0x4313b2,_0x15a4fc=a5_0x2e2cb8[_0x9f65e9(0x184)](_0x5f023a),_0x4925b2=await a5_0x9c0cf4[_0x9f65e9(0x17a)](_0x15a4fc);return normalizePath(_0x4925b2);}catch{return null;}}function formatDirectoryError(_0x200852,_0x5b3691,_0x506f9c){const _0x57f1e2=a5_0x15d7;if(_0x506f9c)return _0x57f1e2(0x177)+_0x506f9c+':\x20'+_0x200852;const _0x10b6ad=_0x5b3691 instanceof Error?_0x5b3691[_0x57f1e2(0x16f)]:String(_0x5b3691);return _0x57f1e2(0x171)+_0x200852+_0x57f1e2(0x16d)+_0x10b6ad;}export async function getValidRootDirectories(_0x3cb61e){const _0x1f9579=a5_0x15d7,_0x4969c9=[];for(const _0x19d72b of _0x3cb61e){const _0x599384=await parseRootUri(_0x19d72b[_0x1f9579(0x183)]);if(!_0x599384){logMcpStderr(formatDirectoryError(_0x19d72b['uri'],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0x4c3e02=await a5_0x9c0cf4[_0x1f9579(0x176)](_0x599384);_0x4c3e02[_0x1f9579(0x17b)]()?_0x4969c9[_0x1f9579(0x179)](_0x599384):logMcpStderr(formatDirectoryError(_0x599384,undefined,_0x1f9579(0x174)));}catch(_0x286faa){logMcpStderr(formatDirectoryError(_0x599384,_0x286faa));}}return _0x4969c9;}
|
package/dist/tool-definitions.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const a6_0x1466ab=a6_0x1cb4;(function(_0x38ffd8,_0x4c4058){const _0x2fd057=a6_0x1cb4,_0x2ae376=_0x38ffd8();while(!![]){try{const _0x3885aa=parseInt(_0x2fd057(0x9d))/0x1+parseInt(_0x2fd057(0x97))/0x2+-parseInt(_0x2fd057(0x9c))/0x3+parseInt(_0x2fd057(0x9a))/0x4*(parseInt(_0x2fd057(0x99))/0x5)+-parseInt(_0x2fd057(0x9b))/0x6+-parseInt(_0x2fd057(0x98))/0x7*(parseInt(_0x2fd057(0x96))/0x8)+parseInt(_0x2fd057(0x95))/0x9;if(_0x3885aa===_0x4c4058)break;else _0x2ae376['push'](_0x2ae376['shift']());}catch(_0x180c1a){_0x2ae376['push'](_0x2ae376['shift']());}}}(a6_0x15ba,0xdef94));export const TOOL_NAMES={'EDIT_FILE':'edit_file','CODEBASE_SEARCH':a6_0x1466ab(0x93),'GITHUB_CODEBASE_SEARCH':a6_0x1466ab(0x94)};export const ALL_TOOL_NAMES=Object['values'](TOOL_NAMES);function a6_0x15ba(){const _0x29bde9=['351988xNlnQw','10749074XQHXlq','18355FaBfkj','68crQVfm','10875372xJIgRo','3161322zwezeD','517071YoVXRY','codebase_search','github_codebase_search','41037714PrdPMQ','8jJppCy'];a6_0x15ba=function(){return _0x29bde9;};return a6_0x15ba();}function a6_0x1cb4(_0x43de43,_0x151462){_0x43de43=_0x43de43-0x93;const _0x15ba1a=a6_0x15ba();let _0x1cb4d3=_0x15ba1a[_0x43de43];return _0x1cb4d3;}export const KNOWN_TOOL_NAMES=new Set(ALL_TOOL_NAMES);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.193",
|
|
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.183",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|