@morphllm/morphmcp 0.8.195 → 0.8.196
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_0x780d31=a0_0x21ff;(function(_0x3c3fc9,_0x335604){const _0x10b2a3=a0_0x21ff,_0x26caab=_0x3c3fc9();while(!![]){try{const _0x301a10=parseInt(_0x10b2a3(0x9a))/0x1+parseInt(_0x10b2a3(0x1a6))/0x2*(-parseInt(_0x10b2a3(0x126))/0x3)+-parseInt(_0x10b2a3(0x127))/0x4*(-parseInt(_0x10b2a3(0xfa))/0x5)+-parseInt(_0x10b2a3(0x14f))/0x6+parseInt(_0x10b2a3(0xfd))/0x7*(parseInt(_0x10b2a3(0x8a))/0x8)+-parseInt(_0x10b2a3(0x1ad))/0x9+-parseInt(_0x10b2a3(0x172))/0xa*(-parseInt(_0x10b2a3(0x1b6))/0xb);if(_0x301a10===_0x335604)break;else _0x26caab['push'](_0x26caab['shift']());}catch(_0x1e7e27){_0x26caab['push'](_0x26caab['shift']());}}}(a0_0x4b65,0xc7421));import{Server}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';function a0_0x4b65(){const _0x26027c=[',\x20modified\x20','dryRun','path_validation_resolved','slice','map','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','Morph\x20FastApply\x20failed\x20without\x20error\x20message','Tool\x20\x22','isDirectory','At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.','github_search_start','grep_search','text','4340hawnzp','optional','Created\x20File','debug','-\x20Grepped\x20\x27','added\x20','\x22>\x0aError\x20reading\x20file:\x20','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','data','Error:\x20','GITHUB_CODEBASE_SEARCH','false','stat','Workspace\x20mode\x20enabled:\x20Using\x20','<file\x20path=\x22','\x0a</file>','lines','requiresApiKey','Relevant\x20context\x20found:','Morph\x20Edit\x20Preview','completed','Unknown\x20tool:\x20','string','utf-8','.vscode','access','\x27\x20in\x20`','realpath','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','.cursor','linesAdded','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','LocalRipgrepProvider','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','some','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','morph-v3-large','MORPH_API_URL','\x20\x20morph-mcp','oninitialized','command','.\x20Changes:\x20','RipgrepError','ENABLE_WORKSPACE_MODE','log','package.json','split','metadata','file_read_failed','enum','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit','7466xPuDyj','search_string','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','timeout','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','WarpGrep\x20sub-tool\x20errors:\x20','4903974UlWkeY','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','PWD','DISABLED_TOOLS','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','**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','tool_call_complete','github_codebase_search','Max\x20results\x20to\x20return','1133PLmuta','glob','8irDljl','tool','sk-','content','-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a','compaction_failed','\x20valid\x20directories','Repository\x20identifier','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.','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','provider_created','[github_codebase_search]\x20Done\x20in\x20','resolve','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','tool_call_error','tsconfig.json','871110NdAOEw','-\x20Read\x20file\x20`','.\x20Path:\x20','\x20disabled\x20via\x20DISABLED_TOOLS','context','Specific\x20commit\x20hash\x20to\x20search','Fallback:\x20Using\x20workspace\x20root\x20','edit','Example\x20format:\x0a','function','stack','role','instruction','../package.json','pattern','env','Preview\x20changes\x20without\x20applying\x20them.','MORPH_API_KEY','unknown','roots','Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]','--version','setRequestHandler','indexOf','ms:','TimeoutError','Error\x20running\x20fast\x20context\x20search:\x20','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','runWarpGrep_call','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','go.mod','Bearer\x20','readFile','user','API\x20error\x20(auth/rate-limit)','listRoots','https://morphllm.com/api/error-report','array','now','min','ms.\x20Success:\x20','warn','parse','morph-','constructor','homedir','GitHub\x20search\x20failed:\x20','morph-warp-grep-v2.1','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','linesModified','description','setNotificationHandler','MCP','code_edit','messages','inputSchema','read','composer.json','has','glob\x20\x27','-\x20Listed\x20directory\x20`','0.2.0','message','owner_repo','trim','\x22>\x0a','stringify','PathError','Disabled\x20tools:\x20','timings','Parameters:\x0a','list_directory\x20','path','BinaryFile','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','grep\x20\x27','changes','Parent\x20directory\x20does\x20not\x20exist:\x20','warp_grep_complete','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','size','api_request_start','params','push','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','catch','status','Warning:\x20','github_url','-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a','boolean','SymlinkError','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','morph-mcp','15Txbxfz','-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a','\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)','10010791LUEPYa','RipgrepNotAvailable','includes','WORKSPACE_ROOT','arguments','error','dirname','describe','terminated','\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo','Rules:\x0a','code','FileReadError','cwd','response','--api-key=','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','file_path','exit','argv','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','pyproject.toml','toLowerCase','files','linesRemoved','safeParse','\x20chars)','File\x20read\x20error:','Failed\x20to\x20request\x20roots\x20from\x20client:','grep','assistant','morph-v3-fast','branch','etimedout','length','`\x20in\x20`','SubToolError','substring','CODEBASE_SEARCH','codebase_search','-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a','957jKkglm','2143352FIXWLu','UnknownError','warp_grep_start','Unknown\x20error','//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a','finish','timed\x20out','repo_path','every','Invalid\x20arguments:\x20','\x0a...\x20(truncated,\x20total:\x20','\x20error(s)','filePath','Warning:\x20Workspace\x20fallback\x20failed:\x20','join','❌\x20Morph\x20Edit\x20Failed:\x20','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.','list_directory','all','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','\x20(new\x20file)','name','api-key','Failed\x20to\x20read\x20file:\x20','ToolException','success','completionId','edit_file','filter','errors','tool_call_id','MORPH_WARP_GREP_TIMEOUT','tool_calls','path_validation_failed','file_read_complete','Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.','.git','sep','Error\x20accessing\x20directory\x20','version','8409390MLfLaY','application/json','ReadError','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','\x20-\x20','number','instructions','ENOENT','@morphllm/morphmcp\x20','basename','object','startsWith','path_validation_start','terminationReason','node_modules','mcp-filesystem','Applied','isArray','[github_codebase_search]\x20Failed\x20in\x20','-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a','read\x20','searchGitHub'];a0_0x4b65=function(){return _0x26027c;};return a0_0x4b65();}import{CallToolRequestSchema,ListToolsRequestSchema,RootsListChangedNotificationSchema}from'@modelcontextprotocol/sdk/types.js';import a0_0x510943 from'fs/promises';import a0_0x29b6ce from'path';import a0_0x189ace 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';function a0_0x21ff(_0x327ae6,_0x1dc59b){_0x327ae6=_0x327ae6-0x8a;const _0x4b6549=a0_0x4b65();let _0x21ff81=_0x4b6549[_0x327ae6];return _0x21ff81;}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_0x6059d7 from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x415738){const _0x547d84=a0_0x21ff,_0x311d33=_0x415738[_0x547d84(0x1a0)](a0_0x29b6ce[_0x547d84(0x14c)])['filter'](Boolean);if(_0x311d33[_0x547d84(0x11f)]<0x2)return null;for(let _0x39758d=Math['floor'](_0x311d33[_0x547d84(0x11f)]/0x2);_0x39758d>=0x1;_0x39758d--){for(let _0x28ff57=0x0;_0x28ff57<=_0x311d33[_0x547d84(0x11f)]-0x2*_0x39758d;_0x28ff57++){const _0x124671=_0x311d33[_0x547d84(0x168)](_0x28ff57,_0x28ff57+_0x39758d),_0x60141b=_0x311d33[_0x547d84(0x168)](_0x28ff57+_0x39758d,_0x28ff57+0x2*_0x39758d);if(_0x124671[_0x547d84(0x12f)]((_0x14e409,_0x2f8c75)=>_0x14e409===_0x60141b[_0x2f8c75])){const _0x3f1ef3=[..._0x311d33[_0x547d84(0x168)](0x0,_0x28ff57),..._0x311d33[_0x547d84(0x168)](_0x28ff57+_0x39758d)];return a0_0x29b6ce[_0x547d84(0x14c)]+_0x3f1ef3[_0x547d84(0x135)](a0_0x29b6ce[_0x547d84(0x14c)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0x1e3c9c=a0_0x21ff;try{const _0x1b03e3=require(_0x1e3c9c(0xa7));return _0x1b03e3[_0x1e3c9c(0x14e)]??_0x1e3c9c(0xac);}catch(_0x59e197){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x59e197),_0x1e3c9c(0xac);}}function printHelp(){const _0x3b64fd=a0_0x21ff;console[_0x3b64fd(0x19e)](_0x3b64fd(0x157)+getPackageVersion()),console['log'](_0x3b64fd(0xf0)),console['log']('\x0aOptions:'),console[_0x3b64fd(0x19e)](_0x3b64fd(0x191)),console['log'](_0x3b64fd(0x97)),console['log'](_0x3b64fd(0x1a5)),console[_0x3b64fd(0x19e)]('\x0aExamples:'),console[_0x3b64fd(0x19e)](_0x3b64fd(0x198)),console[_0x3b64fd(0x19e)](_0x3b64fd(0x106));}const cliArgs=process[a0_0x780d31(0x110)][a0_0x780d31(0x168)](0x2),VERSION_FLAGS=new Set([a0_0x780d31(0xaf),'-v','-V']),HELP_FLAGS=new Set(['--help','-h']);cliArgs['some'](_0x5a2bff=>VERSION_FLAGS[a0_0x780d31(0xd6)](_0x5a2bff))&&(console[a0_0x780d31(0x19e)](a0_0x780d31(0x157)+getPackageVersion()),process['exit'](0x0));cliArgs[a0_0x780d31(0x194)](_0x3f1435=>HELP_FLAGS[a0_0x780d31(0xd6)](_0x3f1435))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x2b3331){const _0x104c46=a0_0x780d31;for(let _0x4af0a1=0x0;_0x4af0a1<cliArgs[_0x104c46(0x11f)];_0x4af0a1++){const _0x21dcfc=cliArgs[_0x4af0a1];if(_0x21dcfc[_0x104c46(0x15a)]('--'+_0x2b3331+'='))return _0x21dcfc[_0x104c46(0x168)](('--'+_0x2b3331+'=')['length']);if(_0x21dcfc==='--'+_0x2b3331&&_0x4af0a1+0x1<cliArgs[_0x104c46(0x11f)])return cliArgs[_0x4af0a1+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x780d31(0x11f)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x780d31(0xd6)](arg)||HELP_FLAGS[a0_0x780d31(0xd6)](arg))continue;if(arg['startsWith'](a0_0x780d31(0x10c)))continue;if(arg==='--api-key'){i++;continue;}args[a0_0x780d31(0xef)](arg);}const WORKSPACE_ROOT=process[a0_0x780d31(0xa9)][a0_0x780d31(0x100)]||process[a0_0x780d31(0xa9)][a0_0x780d31(0x1af)]||process[a0_0x780d31(0x10a)](),ENABLE_WORKSPACE_MODE=process[a0_0x780d31(0xa9)][a0_0x780d31(0x19d)]!==a0_0x780d31(0x17d),MORPH_API_KEY=getCliArg(a0_0x780d31(0x13d))??process[a0_0x780d31(0xa9)][a0_0x780d31(0xab)],MORPH_API_URL=process[a0_0x780d31(0xa9)][a0_0x780d31(0x197)],MORPH_LARGE_APPLY=process[a0_0x780d31(0xa9)]['MORPH_LARGE_APPLY']!==a0_0x780d31(0x17d),MORPH_WARP_GREP_TIMEOUT=process['env']['MORPH_WARP_GREP_TIMEOUT']?parseInt(process['env'][a0_0x780d31(0x146)],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x780d31(0xa9)][a0_0x780d31(0x1b0)]?new Set(process[a0_0x780d31(0xa9)]['DISABLED_TOOLS'][a0_0x780d31(0x1a0)](',')['map'](_0xe437fc=>_0xe437fc[a0_0x780d31(0xdc)]())[a0_0x780d31(0x143)](_0x515a5d=>_0x515a5d['length']>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x780d31(0xec)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x780d31(0xd6)](tool)&&console[a0_0x780d31(0x102)](a0_0x780d31(0x179)+tool+'\x22.\x20Known\x20tools:\x20'+[...KNOWN_TOOL_NAMES]['join'](',\x20'));}console['error'](a0_0x780d31(0xe0)+[...DISABLED_TOOLS][a0_0x780d31(0x135)](',\x20'));}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x780d31(0x15a)](a0_0x780d31(0x8c))&&!MORPH_API_KEY[a0_0x780d31(0x15a)]('morph-')&&logMcpStderr('Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27');async function reportMorphError(_0x482f38){const _0x445411=a0_0x780d31;try{await a0_0x6059d7['post'](_0x445411(0xbe),{..._0x482f38,'timestamp':new Date()['toISOString'](),'source':_0x482f38['source']||_0x445411(0x15e),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x482f38[_0x445411(0x9e)]}},{'timeout':0x1388,'headers':{'Content-Type':_0x445411(0x150),'Authorization':_0x445411(0xb9)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x1b855e,_0x5024e8){const _0x365706=a0_0x780d31;if(_0x1b855e&&typeof _0x1b855e===_0x365706(0x159)&&_0x365706(0xf2)in _0x1b855e)return _0x1b855e['status'];if(_0x1b855e&&typeof _0x1b855e==='object'&&_0x365706(0x10b)in _0x1b855e)return _0x1b855e['response']?.[_0x365706(0xf2)];const _0x900201=_0x5024e8['match'](/\b(401|429)\b/);return _0x900201?parseInt(_0x900201[0x1],0xa):null;}function handleMorphAPIError(_0x1ffaf4){const _0x595eee=a0_0x780d31,_0x1cee01=_0x1ffaf4 instanceof Error?_0x1ffaf4['message']:String(_0x1ffaf4),_0x52e173=extractStatusCode(_0x1ffaf4,_0x1cee01);switch(_0x52e173){case 0x191:return{'content':[{'type':_0x595eee(0x171),'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':_0x595eee(0x171),'text':_0x595eee(0xb5)}],'isError':!![]};default:return null;}}args[a0_0x780d31(0x11f)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr(a0_0x780d31(0xae)),logMcpStderr(a0_0x780d31(0x93)),logMcpStderr(a0_0x780d31(0x195)),logMcpStderr(a0_0x780d31(0xfc)),logMcpStderr(a0_0x780d31(0x10d)),logMcpStderr(a0_0x780d31(0x16e)));function normalizePath(_0x5aac39){return a0_0x29b6ce['normalize'](_0x5aac39);}function expandHome(_0x5af627){const _0x317bee=a0_0x780d31;if(_0x5af627['startsWith']('~/')||_0x5af627==='~')return a0_0x29b6ce['join'](a0_0x189ace[_0x317bee(0xc7)](),_0x5af627[_0x317bee(0x168)](0x1));return _0x5af627;}let allowedDirectories=await Promise['all'](args[a0_0x780d31(0x169)](async _0x28f92e=>{const _0x289adc=a0_0x780d31,_0x5665f3=expandHome(_0x28f92e),_0x3ff58d=a0_0x29b6ce[_0x289adc(0x96)](_0x5665f3);try{const _0x1f9cfc=await a0_0x510943[_0x289adc(0x18d)](_0x3ff58d);return normalizePath(_0x1f9cfc);}catch(_0x7b480c){return normalizePath(_0x3ff58d);}}));if(ENABLE_WORKSPACE_MODE&&args['length']===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories['push'](workspaceDir),logMcpStderr(a0_0x780d31(0x17f)+workspaceDir+'\x20as\x20allowed\x20directory'));}catch(a0_0x42fda0){logMcpStderr('Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20'+a0_0x42fda0);}async function detectWorkspaceRoot(_0xf082aa){const _0x12836b=a0_0x780d31;let _0x4e31e1=a0_0x29b6ce[_0x12836b(0x96)](_0xf082aa);const _0x55f921=[_0x12836b(0x14b),_0x12836b(0x18a),_0x12836b(0x19f),'Cargo.toml',_0x12836b(0x112),_0x12836b(0xb8),_0x12836b(0x18f),_0x12836b(0x99),_0x12836b(0xd5)];while(_0x4e31e1!==a0_0x29b6ce[_0x12836b(0x103)](_0x4e31e1)){for(const _0x4bfbb1 of _0x55f921){const _0x13def6=a0_0x29b6ce[_0x12836b(0x135)](_0x4e31e1,_0x4bfbb1);try{return await a0_0x510943[_0x12836b(0x18b)](_0x13def6),normalizePath(_0x4e31e1);}catch{}}_0x4e31e1=a0_0x29b6ce['dirname'](_0x4e31e1);}return normalizePath(_0xf082aa);}await Promise[a0_0x780d31(0x139)](args[a0_0x780d31(0x169)](async _0x3d4863=>{const _0x124057=a0_0x780d31;try{const _0x3912ae=await a0_0x510943[_0x124057(0x17e)](expandHome(_0x3d4863));!_0x3912ae[_0x124057(0x16d)]()&&(logMcpStderr(_0x124057(0x17b)+_0x3d4863+'\x20is\x20not\x20a\x20directory'),process[_0x124057(0x10f)](0x1));}catch(_0x31774c){logMcpStderr(_0x124057(0x14d)+_0x3d4863+':',_0x31774c),process[_0x124057(0x10f)](0x1);}}));async function validatePath(_0x472605){const _0x388273=a0_0x780d31,_0x5cd5ab=expandHome(_0x472605),_0xf5b216=a0_0x29b6ce[_0x388273(0x96)](_0x5cd5ab);logger[_0x388273(0x175)](_0x388273(0xd0),_0x388273(0x15b),{'raw_path':_0x472605,'absolute':_0xf5b216});try{const _0x239dc2=await a0_0x510943[_0x388273(0x18d)](_0xf5b216);return logger[_0x388273(0x175)]('MCP',_0x388273(0x167),{'resolved':_0x239dc2,'symlink':_0x239dc2!==_0xf5b216}),_0x239dc2;}catch(_0x574e3f){if(_0x574e3f[_0x388273(0x108)]===_0x388273(0x156)){const _0x18d913=a0_0x29b6ce[_0x388273(0x103)](_0xf5b216);try{const _0x39f17d=await a0_0x510943[_0x388273(0x18d)](_0x18d913),_0x2bc996=a0_0x29b6ce[_0x388273(0x135)](_0x39f17d,a0_0x29b6ce[_0x388273(0x158)](_0xf5b216));return logger[_0x388273(0x175)](_0x388273(0xd0),_0x388273(0x167),{'resolved':_0x2bc996,'new_file':!![]}),_0x2bc996;}catch{logger[_0x388273(0x102)](_0x388273(0xd0),_0x388273(0x148),{'raw_path':_0x472605,'error':_0x388273(0xe9)+_0x18d913});throw new Error(_0x388273(0xe9)+_0x18d913);}}logger['error'](_0x388273(0xd0),_0x388273(0x148),{'raw_path':_0x472605,'error':_0x574e3f[_0x388273(0xda)]});throw _0x574e3f;}}const MorphEditFileArgsSchema=z[a0_0x780d31(0x159)]({'path':z[a0_0x780d31(0x188)](),'code_edit':z[a0_0x780d31(0x188)]()[a0_0x780d31(0x104)](a0_0x780d31(0x152)),'instruction':z[a0_0x780d31(0x188)]()[a0_0x780d31(0x104)](a0_0x780d31(0x193)),'dryRun':z[a0_0x780d31(0xf6)]()['default'](![])[a0_0x780d31(0x104)](a0_0x780d31(0xaa))}),CODEBASE_SEARCH_QUERY_DESCRIPTION=a0_0x780d31(0x92),WarpGrepArgsSchema=z['object']({'search_string':z[a0_0x780d31(0x188)]()[a0_0x780d31(0x104)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x780d31(0x188)]()[a0_0x780d31(0x104)](a0_0x780d31(0x1b1)),'search_type':z[a0_0x780d31(0x1a3)](['default',a0_0x780d31(0x15d)])[a0_0x780d31(0x173)]()['describe']('Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.')}),WarpGrepGitHubArgsSchema=z[a0_0x780d31(0x159)]({'search_string':z[a0_0x780d31(0x188)]()[a0_0x780d31(0x104)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x780d31(0x188)]()[a0_0x780d31(0x173)]()['describe']('GitHub\x20repository\x20URL\x20to\x20search\x20(e.g.\x20\x27https://github.com/vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'owner_repo':z[a0_0x780d31(0x188)]()['optional']()[a0_0x780d31(0x104)](a0_0x780d31(0x14a)),'branch':z['string']()[a0_0x780d31(0x173)]()[a0_0x780d31(0x104)](a0_0x780d31(0xeb))}),CodebaseSearchArgsSchema=z['object']({'query':z[a0_0x780d31(0x188)]()[a0_0x780d31(0x104)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z['string']()[a0_0x780d31(0x104)](a0_0x780d31(0x91)),'branch':z['string']()[a0_0x780d31(0x173)]()[a0_0x780d31(0x104)](a0_0x780d31(0x111)),'commitHash':z['string']()[a0_0x780d31(0x173)]()[a0_0x780d31(0x104)](a0_0x780d31(0x9f)),'targetDirectories':z[a0_0x780d31(0xbf)](z[a0_0x780d31(0x188)]())['default']([])[a0_0x780d31(0x104)](a0_0x780d31(0xcc)),'limit':z[a0_0x780d31(0x154)]()[a0_0x780d31(0x173)]()['default'](0xa)[a0_0x780d31(0x104)](a0_0x780d31(0x1b5))}),server=new Server({'name':a0_0x780d31(0xf9),'version':a0_0x780d31(0xd9)},{'capabilities':{'tools':{}}});server[a0_0x780d31(0xb0)](ListToolsRequestSchema,async()=>{const _0x1c9b22=a0_0x780d31,_0x5b1105=[{'name':TOOL_NAMES['EDIT_FILE'],'description':_0x1c9b22(0x1b2)+_0x1c9b22(0xe2)+_0x1c9b22(0xfb)+_0x1c9b22(0x162)+_0x1c9b22(0x8e)+_0x1c9b22(0xb7)+_0x1c9b22(0xa2)+_0x1c9b22(0x12b)+_0x1c9b22(0x107)+_0x1c9b22(0xf5)+'-\x20Preserve\x20exact\x20indentation\x0a'+_0x1c9b22(0x125)+_0x1c9b22(0x1ae),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES[_0x1c9b22(0x123)],'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'+_0x1c9b22(0x1aa)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x2dd503=_0x5b1105[_0x1c9b22(0x143)](_0x7c51a0=>{const _0x25fe49=_0x1c9b22;if(DISABLED_TOOLS['has'](_0x7c51a0[_0x25fe49(0x13c)]))return console[_0x25fe49(0x102)]('Tool\x20'+_0x7c51a0[_0x25fe49(0x13c)]+_0x25fe49(0x9d)),![];if(_0x25fe49(0x183)in _0x7c51a0&&_0x7c51a0[_0x25fe49(0x183)]&&!MORPH_API_KEY)return logMcpStderr(_0x25fe49(0xf3)+_0x7c51a0['name']+_0x25fe49(0x1ab)),![];return!![];});return{'tools':_0x2dd503[_0x1c9b22(0x169)](_0x144546=>({'name':_0x144546['name'],'description':_0x144546[_0x1c9b22(0xce)],'inputSchema':_0x144546[_0x1c9b22(0xd3)]}))};}),server[a0_0x780d31(0xb0)](CallToolRequestSchema,async _0x4c9b04=>{const _0x5daa89=a0_0x780d31,{name:_0x493aeb,arguments:_0x40b02f}=_0x4c9b04[_0x5daa89(0xee)],_0x267154=Date[_0x5daa89(0xc0)]();logger['debug']('MCP','tool_call_received',{'tool':_0x493aeb,'args':_0x493aeb==='edit_file'?{'path':_0x40b02f?.[_0x5daa89(0xe4)],'instruction':_0x40b02f?.[_0x5daa89(0xa6)]||_0x40b02f?.['instructions'],'dryRun':_0x40b02f?.['dryRun']}:_0x40b02f});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x5daa89(0x171),'text':_0x5daa89(0xe6)}],'isError':!![]};if(!MORPH_API_KEY['startsWith'](_0x5daa89(0x8c))&&!MORPH_API_KEY[_0x5daa89(0x15a)](_0x5daa89(0xc5)))return{'content':[{'type':_0x5daa89(0x171),'text':'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.'}],'isError':!![]};if(DISABLED_TOOLS[_0x5daa89(0xd6)](_0x493aeb))return{'content':[{'type':_0x5daa89(0x171),'text':_0x5daa89(0x16c)+_0x493aeb+_0x5daa89(0x16a)}],'isError':![]};switch(_0x493aeb){case TOOL_NAMES['EDIT_FILE']:{let _0x5af383=_0x40b02f;if(_0x5af383&&typeof _0x5af383===_0x5daa89(0x159)){if(!(_0x5daa89(0xe4)in _0x5af383)){const _0x1dbcdb=_0x5af383['target_file']??_0x5af383[_0x5daa89(0x133)]??_0x5af383['target_filepath']??_0x5af383[_0x5daa89(0x10e)]??_0x5af383['file'];if(_0x1dbcdb)_0x5af383={..._0x5af383,'path':_0x1dbcdb};}_0x5daa89(0x155)in _0x5af383&&!('instruction'in _0x5af383)&&(_0x5af383={..._0x5af383,'instruction':_0x5af383[_0x5daa89(0x155)]});if(!(_0x5daa89(0xd1)in _0x5af383)){const _0x44675a=_0x5af383['code']??_0x5af383['new_string']??_0x5af383['content']??_0x5af383[_0x5daa89(0xa1)];if(_0x44675a)_0x5af383={..._0x5af383,'code_edit':_0x44675a};}}const _0x44e3aa=MorphEditFileArgsSchema[_0x5daa89(0x116)](_0x5af383);if(!_0x44e3aa['success'])throw new Error('Invalid\x20arguments\x20for\x20morph_edit_file:\x20'+_0x44e3aa['error']);const _0x3e65c0=await validatePath(_0x44e3aa[_0x5daa89(0x17a)][_0x5daa89(0xe4)]);let _0x4b95f0=null,_0xed08af=!![],_0x53522d=null;try{_0x4b95f0=await a0_0x510943[_0x5daa89(0xba)](_0x3e65c0,_0x5daa89(0x189)),logger['debug'](_0x5daa89(0xd0),_0x5daa89(0x149),{'path':_0x3e65c0,'size_bytes':_0x4b95f0[_0x5daa89(0x11f)]});}catch(_0x5f1ee7){const _0x48b8cd=_0x5f1ee7[_0x5daa89(0x108)];_0x48b8cd===_0x5daa89(0x156)?(_0xed08af=![],_0x4b95f0='',logger[_0x5daa89(0x175)](_0x5daa89(0xd0),'file_read_complete',{'path':_0x3e65c0,'exists':![]})):(_0x53522d=_0x5daa89(0x13e)+(_0x48b8cd||_0x5daa89(0xac))+_0x5daa89(0x153)+(_0x5f1ee7 instanceof Error?_0x5f1ee7[_0x5daa89(0xda)]:String(_0x5f1ee7)),logger[_0x5daa89(0x102)](_0x5daa89(0xd0),_0x5daa89(0x1a2),{'path':_0x3e65c0,'error':_0x53522d}),logMcpStderr('Warning:\x20'+_0x53522d));}let _0x56d089;try{const _0x408ee8=MORPH_API_KEY;if(!_0x408ee8)throw new Error('MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.');const _0x3628f0=a0_0x29b6ce['dirname'](_0x3e65c0),_0x1ceb90=a0_0x29b6ce[_0x5daa89(0x158)](_0x3e65c0);logger[_0x5daa89(0x175)]('MCP',_0x5daa89(0xed),{'model':_0x5daa89(0x11c),'path':_0x44e3aa['data'][_0x5daa89(0xe4)],'instruction_len':_0x44e3aa[_0x5daa89(0x17a)]['instruction']['length'],'code_edit_len':_0x44e3aa[_0x5daa89(0x17a)][_0x5daa89(0xd1)][_0x5daa89(0x11f)],'original_code_len':_0x4b95f0?.[_0x5daa89(0x11f)]??0x0,'dry_run':_0x44e3aa[_0x5daa89(0x17a)]['dryRun']});const _0x2c3aaf=Date['now'](),_0x4ddd6b=await executeEditFile({'target_filepath':_0x1ceb90,'code_edit':_0x44e3aa['data'][_0x5daa89(0xd1)],'instruction':_0x44e3aa[_0x5daa89(0x17a)][_0x5daa89(0xa6)]},{'morphApiKey':_0x408ee8,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x3628f0,'autoWrite':!_0x44e3aa['data'][_0x5daa89(0x166)],'generateUdiff':![],'debug':![]}),_0x3ce31e=Date[_0x5daa89(0xc0)]()-_0x2c3aaf;_0x56d089=_0x4ddd6b[_0x5daa89(0x141)];if(!_0x4ddd6b[_0x5daa89(0x140)])throw new Error(_0x4ddd6b[_0x5daa89(0x102)]||_0x5daa89(0x16b));const _0x18ced2=_0x4ddd6b[_0x5daa89(0xe8)],_0x176986=_0x5daa89(0x177)+_0x18ced2[_0x5daa89(0x190)]+',\x20removed\x20'+_0x18ced2[_0x5daa89(0x115)]+_0x5daa89(0x165)+_0x18ced2['linesModified'];logger['debug'](_0x5daa89(0xd0),_0x5daa89(0x1b3),{'tool':_0x5daa89(0x142),'success':!![],'latency_ms':Date[_0x5daa89(0xc0)]()-_0x267154,'edit_latency_ms':_0x3ce31e,'changes':{'added':_0x18ced2[_0x5daa89(0x190)],'removed':_0x18ced2['linesRemoved'],'modified':_0x18ced2[_0x5daa89(0xcd)]},'completion_id':_0x56d089});if(_0x44e3aa['data'][_0x5daa89(0x166)])return{'content':[{'type':_0x5daa89(0x171),'text':_0x5daa89(0x185)+(_0xed08af?'':_0x5daa89(0x13b))+':\x20'+_0x44e3aa[_0x5daa89(0x17a)][_0x5daa89(0xa6)]+_0x5daa89(0x19b)+_0x176986+'.\x20Path:\x20'+_0x44e3aa[_0x5daa89(0x17a)][_0x5daa89(0xe4)]+'.'}]};return{'content':[{'type':_0x5daa89(0x171),'text':'Morph\x20Edit\x20'+(_0xed08af?_0x5daa89(0x15f):_0x5daa89(0x174))+':\x20'+_0x44e3aa['data'][_0x5daa89(0xa6)]+_0x5daa89(0x19b)+_0x176986+_0x5daa89(0x9c)+_0x44e3aa[_0x5daa89(0x17a)][_0x5daa89(0xe4)]+'.'}]};}catch(_0x570243){const _0x18dff3=handleMorphAPIError(_0x570243);if(_0x18dff3)return logger[_0x5daa89(0x102)](_0x5daa89(0xd0),'tool_call_error',{'tool':_0x5daa89(0x142),'error':_0x5daa89(0xbc),'latency_ms':Date['now']()-_0x267154}),_0x18dff3;const _0x1285ac=_0x570243 instanceof Error?_0x570243[_0x5daa89(0xda)]:String(_0x570243);return logger['error'](_0x5daa89(0xd0),'tool_call_error',{'tool':'edit_file','error':_0x1285ac,'path':_0x44e3aa['data'][_0x5daa89(0xe4)],'validated_path':_0x3e65c0,'latency_ms':Date[_0x5daa89(0xc0)]()-_0x267154,'stack':_0x570243 instanceof Error?_0x570243['stack']:undefined}),reportMorphError({'error_message':_0x1285ac,'error_type':_0x570243 instanceof Error?_0x570243['constructor'][_0x5daa89(0x13c)]:_0x5daa89(0x128),'context':{'tool':_0x5daa89(0x142),'completion_id':_0x56d089,'file_path':_0x44e3aa[_0x5daa89(0x17a)]['path'],'validated_path':_0x3e65c0,'instruction':_0x44e3aa[_0x5daa89(0x17a)][_0x5daa89(0xa6)],'model':MORPH_LARGE_APPLY?'morph-v3-large':_0x5daa89(0x11c),'dry_run':_0x44e3aa[_0x5daa89(0x17a)]['dryRun'],'file_exists':_0xed08af,'file_read_error':_0x53522d,'file_readable':_0x4b95f0!==null,'request_content':{'path':_0x44e3aa[_0x5daa89(0x17a)]['path'],'code_edit':_0x44e3aa[_0x5daa89(0x17a)][_0x5daa89(0xd1)],'instruction':_0x44e3aa[_0x5daa89(0x17a)][_0x5daa89(0xa6)],'original_code':_0x4b95f0!==null?_0x4b95f0[_0x5daa89(0x11f)]>0xc350?_0x4b95f0[_0x5daa89(0x122)](0x0,0xc350)+_0x5daa89(0x131)+_0x4b95f0[_0x5daa89(0x11f)]+_0x5daa89(0x117):_0x4b95f0:'[could\x20not\x20read\x20file:\x20'+(_0x53522d||'unknown\x20error')+']','original_code_length':_0x4b95f0?.['length']??0x0,'model':MORPH_LARGE_APPLY?_0x5daa89(0x196):'morph-v3-fast','dry_run':_0x44e3aa[_0x5daa89(0x17a)][_0x5daa89(0x166)]}},'stack_trace':_0x570243 instanceof Error?_0x570243[_0x5daa89(0xa4)]:undefined,'source':_0x5daa89(0x15e)})['catch'](()=>{}),{'content':[{'type':_0x5daa89(0x171),'text':_0x5daa89(0x136)+_0x1285ac}],'isError':!![]};}}case TOOL_NAMES['CODEBASE_SEARCH']:{const _0x2aace8=WarpGrepArgsSchema[_0x5daa89(0x116)](_0x40b02f);if(!_0x2aace8[_0x5daa89(0x140)])return{'content':[{'type':'text','text':'Invalid\x20arguments:\x20'+_0x2aace8[_0x5daa89(0x102)]}],'isError':!![]};const _0x1b6100=_0x549b3d=>{const _0x38e6f8=_0x5daa89,_0x3ee2fc=[];for(const _0x4c2634 of _0x549b3d||[]){if(_0x4c2634[_0x38e6f8(0xa5)]===_0x38e6f8(0x11b)&&Array[_0x38e6f8(0x160)](_0x4c2634[_0x38e6f8(0x147)]))for(const _0x590907 of _0x4c2634[_0x38e6f8(0x147)]){try{const _0x1b9186=_0x590907[_0x38e6f8(0xa3)]?.[_0x38e6f8(0x13c)],_0x4ed852=JSON[_0x38e6f8(0xc4)](_0x590907[_0x38e6f8(0xa3)]?.[_0x38e6f8(0x101)]||'{}');if(_0x1b9186===_0x38e6f8(0x170))_0x3ee2fc[_0x38e6f8(0xef)](_0x38e6f8(0xe7)+_0x4ed852[_0x38e6f8(0xa8)]+'\x27\x20'+(_0x4ed852[_0x38e6f8(0xe4)]||'.'));else{if(_0x1b9186===_0x38e6f8(0xd4))_0x3ee2fc['push'](_0x38e6f8(0x163)+_0x4ed852[_0x38e6f8(0xe4)]);else{if(_0x1b9186===_0x38e6f8(0x138))_0x3ee2fc[_0x38e6f8(0xef)](_0x38e6f8(0xe3)+(_0x4ed852[_0x38e6f8(0x19a)]||'.'));else{if(_0x1b9186===_0x38e6f8(0x1b7))_0x3ee2fc[_0x38e6f8(0xef)](_0x38e6f8(0xd7)+_0x4ed852[_0x38e6f8(0xa8)]+'\x27\x20'+(_0x4ed852[_0x38e6f8(0xe4)]||'.'));else _0x1b9186===_0x38e6f8(0x12c)&&_0x3ee2fc[_0x38e6f8(0xef)]('finish');}}}}catch{}}}return _0x3ee2fc;},_0x2895d2=_0x5c864c=>{const _0x3968cc=_0x5daa89,_0x11e72e=[];if(!_0x5c864c||!Array['isArray'](_0x5c864c))return _0x11e72e;const _0xe50d9f=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':'FileNotFound','tool':'read'},{'pattern':/\[PATH ERROR\]/,'error_type':_0x3968cc(0xdf),'tool':_0x3968cc(0xd4)},{'pattern':/\[READ ERROR\]/,'error_type':_0x3968cc(0x151),'tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x3968cc(0xe5),'tool':_0x3968cc(0xd4)},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x3968cc(0x19c),'tool':_0x3968cc(0x11a)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x3968cc(0xfe),'tool':'grep'},{'pattern':/\[BINARY FILE\]/,'error_type':'BinaryFile','tool':'read'},{'pattern':/\[SYMLINK\]/,'error_type':_0x3968cc(0xf7),'tool':_0x3968cc(0xd4)},{'pattern':/not a text file/,'error_type':_0x3968cc(0xe5),'tool':_0x3968cc(0xd4)},{'pattern':/symbolic link/,'error_type':_0x3968cc(0xf7),'tool':'read'},{'pattern':/Error reading file:/,'error_type':'ReadError','tool':_0x3968cc(0xd4)},{'pattern':/status="error"/,'error_type':_0x3968cc(0x13f),'tool':_0x3968cc(0xac)}];let _0x5d1dbb=0x0;for(const _0xd725d8 of _0x5c864c){_0xd725d8['role']===_0x3968cc(0x11b)&&Array[_0x3968cc(0x160)](_0xd725d8[_0x3968cc(0x147)])&&_0x5d1dbb++;const _0x4eb9c3=_0xd725d8[_0x3968cc(0x8d)];if((_0xd725d8[_0x3968cc(0xa5)]===_0x3968cc(0x8b)||_0xd725d8[_0x3968cc(0xa5)]===_0x3968cc(0xbb))&&_0x4eb9c3&&typeof _0x4eb9c3===_0x3968cc(0x188))for(const {pattern:_0x30cb2d,error_type:_0x3391f3,tool:_0x332c2b}of _0xe50d9f){const _0x3adf19=_0x4eb9c3['match'](new RegExp(_0x30cb2d['source'],'g'));if(_0x3adf19)for(const _0x318c18 of _0x3adf19){const _0xc1150d=_0x4eb9c3[_0x3968cc(0xb1)](_0x318c18),_0x515469=_0x4eb9c3[_0x3968cc(0x122)](_0xc1150d,Math[_0x3968cc(0xc1)](_0xc1150d+0xc8,_0x4eb9c3[_0x3968cc(0x11f)]));_0x11e72e[_0x3968cc(0xef)]({'tool':_0x332c2b,'error_type':_0x3391f3,'error_message':_0x515469['split']('\x0a')[0x0],'turn':_0x5d1dbb});}}}return _0x11e72e;};try{const _0x233b42=a0_0x29b6ce[_0x5daa89(0x96)](_0x2aace8[_0x5daa89(0x17a)][_0x5daa89(0x12e)]),_0x3d3838=_0x2aace8['data']['search_type'],_0x4e571a=_0x3d3838===_0x5daa89(0x15d)?{'allowNames':[_0x5daa89(0x15d)]}:undefined,_0x1882a9=new LocalRipgrepProvider(_0x233b42,undefined,_0x4e571a);logger[_0x5daa89(0x175)](_0x5daa89(0xd0),_0x5daa89(0x94),{'type':_0x5daa89(0x192),'repo_root':_0x233b42,'search_type':_0x3d3838||'default'}),logger[_0x5daa89(0x175)](_0x5daa89(0xd0),_0x5daa89(0x129),{'query':_0x2aace8['data'][_0x5daa89(0x1a7)],'repo_root':_0x233b42,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x43a745=Date[_0x5daa89(0xc0)](),_0x5602fc=await runWarpGrep({'searchTerm':_0x2aace8[_0x5daa89(0x17a)]['search_string'],'repoRoot':_0x233b42,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x1882a9,'search_type':_0x3d3838}),_0x59da8e=Date[_0x5daa89(0xc0)]()-_0x43a745,_0x64a7cf=_0x5602fc[_0x5daa89(0x12c)]?.[_0x5daa89(0x1a1)]?.[_0x5daa89(0x114)]?.['length']??0x0;logger[_0x5daa89(0x175)](_0x5daa89(0xd0),_0x5daa89(0xea),{'termination':_0x5602fc[_0x5daa89(0x15c)],'turns':_0x5602fc['timings']?.['turns']??0x0,'files_found':_0x64a7cf,'latency_ms':_0x59da8e});const _0x5a7911=_0x2895d2(_0x5602fc[_0x5daa89(0xd2)]);_0x5a7911[_0x5daa89(0x11f)]>0x0&&reportMorphError({'error_message':_0x5daa89(0x1ac)+_0x5a7911[_0x5daa89(0x11f)]+_0x5daa89(0x132),'error_type':_0x5daa89(0x121),'level':'warn','tool':_0x5daa89(0x124),'context':{'repo_path':_0x2aace8[_0x5daa89(0x17a)][_0x5daa89(0x12e)],'query':_0x2aace8[_0x5daa89(0x17a)][_0x5daa89(0x1a7)],'model':_0x5daa89(0xc9),'termination_reason':_0x5602fc['terminationReason'],'sub_tool_errors':_0x5a7911,'timings':_0x5602fc[_0x5daa89(0xe1)],'tool_calls':_0x1b6100(_0x5602fc[_0x5daa89(0xd2)]),'messages':_0x5602fc[_0x5daa89(0xd2)]?.[_0x5daa89(0x169)](_0xe5e01=>({'role':_0xe5e01[_0x5daa89(0xa5)],'content':_0xe5e01[_0x5daa89(0x8d)],..._0xe5e01[_0x5daa89(0x147)]?{'tool_calls':_0xe5e01[_0x5daa89(0x147)][_0x5daa89(0x11f)]}:{},..._0xe5e01[_0x5daa89(0x145)]?{'tool_call_id':_0xe5e01[_0x5daa89(0x145)]}:{}}))},'source':_0x5daa89(0x15e)})['catch'](()=>{});let _0x308335='';if(_0x5602fc[_0x5daa89(0x15c)]===_0x5daa89(0x186)&&_0x5602fc[_0x5daa89(0x12c)]?.['metadata']?.[_0x5daa89(0x114)]){const _0xad31ba=_0x5602fc[_0x5daa89(0x12c)][_0x5daa89(0x1a1)][_0x5daa89(0x114)];if(_0xad31ba[_0x5daa89(0x11f)]===0x0)return _0x308335=_0x5602fc['finish']['payload']||_0x5daa89(0xcb),{'content':[{'type':_0x5daa89(0x171),'text':_0x308335}]};const _0x5cb29f=[],_0x10c634=[_0x5daa89(0xf8)];for(const _0x4e32d2 of _0x5602fc[_0x5daa89(0xd2)]){if(_0x4e32d2[_0x5daa89(0xa5)]===_0x5daa89(0x11b)&&Array[_0x5daa89(0x160)](_0x4e32d2[_0x5daa89(0x147)]))for(const _0xc9e18c of _0x4e32d2['tool_calls']){try{const _0x5dde5c=_0xc9e18c[_0x5daa89(0xa3)]?.[_0x5daa89(0x13c)],_0x2f843b=JSON[_0x5daa89(0xc4)](_0xc9e18c[_0x5daa89(0xa3)]?.[_0x5daa89(0x101)]||'{}');if(_0x5dde5c===_0x5daa89(0x170))_0x10c634[_0x5daa89(0xef)](_0x5daa89(0x176)+_0x2f843b[_0x5daa89(0xa8)]+_0x5daa89(0x18c)+(_0x2f843b['path']||'.')+'`');else{if(_0x5dde5c===_0x5daa89(0xd4))_0x10c634[_0x5daa89(0xef)](_0x5daa89(0x9b)+_0x2f843b[_0x5daa89(0xe4)]+'`');else{if(_0x5dde5c==='list_directory')_0x10c634[_0x5daa89(0xef)](_0x5daa89(0xd8)+(_0x2f843b[_0x5daa89(0x19a)]||'.')+'`');else _0x5dde5c===_0x5daa89(0x1b7)&&_0x10c634['push']('-\x20Glob\x20search\x20`'+_0x2f843b[_0x5daa89(0xa8)]+_0x5daa89(0x120)+(_0x2f843b[_0x5daa89(0xe4)]||'.')+'`');}}}catch{}}}_0x5cb29f[_0x5daa89(0xef)](_0x10c634[_0x5daa89(0x135)]('\x0a'));const _0x5c2de1=['',_0x5daa89(0x184)];for(const _0x3c0e08 of _0xad31ba){if(_0x3c0e08[_0x5daa89(0x182)]==='*')_0x5c2de1[_0x5daa89(0xef)]('-\x20'+_0x3c0e08[_0x5daa89(0xe4)]+':*');else{if(Array['isArray'](_0x3c0e08[_0x5daa89(0x182)])){const _0x1389d3=_0x3c0e08[_0x5daa89(0x182)][_0x5daa89(0x169)](([_0x2f3a65,_0x64a831])=>{if(_0x2f3a65===_0x64a831)return''+_0x2f3a65;return _0x2f3a65+'-'+_0x64a831;});_0x5c2de1[_0x5daa89(0xef)]('-\x20'+_0x3c0e08['path']+':'+_0x1389d3[_0x5daa89(0x135)](','));}else _0x5c2de1[_0x5daa89(0xef)]('-\x20'+_0x3c0e08[_0x5daa89(0xe4)]+':*');}}_0x5c2de1[_0x5daa89(0xef)](''),_0x5cb29f[_0x5daa89(0xef)](_0x5c2de1[_0x5daa89(0x135)]('\x0a')),_0x5cb29f[_0x5daa89(0xef)]('Here\x20is\x20the\x20content\x20of\x20files:\x0a');const _0x1d229d=[],_0x6c7674=[];for(const _0x324284 of _0xad31ba){let _0x1bf7fc=a0_0x29b6ce[_0x5daa89(0x96)](_0x2aace8['data']['repo_path'],_0x324284[_0x5daa89(0xe4)]),_0x476e14=null,_0x10e475=null;try{_0x476e14=await a0_0x510943[_0x5daa89(0xba)](_0x1bf7fc,{'encoding':'utf-8'});}catch(_0x2de663){const _0x148bf3=fixPathRepetition(_0x1bf7fc);if(_0x148bf3)try{_0x476e14=await a0_0x510943[_0x5daa89(0xba)](_0x148bf3,{'encoding':_0x5daa89(0x189)}),_0x1bf7fc=_0x148bf3;}catch{_0x10e475=_0x2de663 instanceof Error?_0x2de663:new Error(String(_0x2de663));}else _0x10e475=_0x2de663 instanceof Error?_0x2de663:new Error(String(_0x2de663));}if(_0x476e14!==null){const _0x243bda=_0x476e14[_0x5daa89(0x1a0)](/\r?\n/),_0x4567ad=[];if(_0x324284[_0x5daa89(0x182)]==='*'||!Array[_0x5daa89(0x160)](_0x324284[_0x5daa89(0x182)]))for(let _0x118689=0x1;_0x118689<=_0x243bda[_0x5daa89(0x11f)];_0x118689++){const _0x5c6f2e=_0x243bda[_0x118689-0x1];_0x4567ad['push'](_0x118689+'|\x20'+_0x5c6f2e);}else for(const [_0x28c1ec,_0x37af26]of _0x324284[_0x5daa89(0x182)]){_0x4567ad[_0x5daa89(0x11f)]>0x0&&_0x4567ad[_0x5daa89(0xef)]('');for(let _0x2a0d00=_0x28c1ec;_0x2a0d00<=_0x37af26&&_0x2a0d00<=_0x243bda[_0x5daa89(0x11f)];_0x2a0d00++){const _0x1bec1a=_0x243bda[_0x2a0d00-0x1];_0x4567ad['push'](_0x2a0d00+'|\x20'+_0x1bec1a);}}_0x6c7674[_0x5daa89(0xef)]({'path':_0x324284[_0x5daa89(0xe4)],'content':_0x4567ad[_0x5daa89(0x135)]('\x0a')});}else _0x1d229d[_0x5daa89(0xef)](_0x5daa89(0x180)+_0x324284['path']+_0x5daa89(0x178)+(_0x10e475?.[_0x5daa89(0xda)]||_0x5daa89(0x12a))+_0x5daa89(0x181));}try{const _0x44e88c=await compactFileContexts(_0x6c7674,_0x2aace8[_0x5daa89(0x17a)]['search_string'],MORPH_API_KEY,MORPH_API_URL);for(const _0x244d87 of _0x44e88c){_0x1d229d['push'](_0x5daa89(0x180)+_0x244d87[_0x5daa89(0xe4)]+'\x22>\x0a'+_0x244d87[_0x5daa89(0x8d)]+_0x5daa89(0x181));}}catch(_0x2cee0b){logger[_0x5daa89(0xc3)](_0x5daa89(0xd0),_0x5daa89(0x8f),{'error':_0x2cee0b instanceof Error?_0x2cee0b[_0x5daa89(0xda)]:String(_0x2cee0b),'files_count':_0x6c7674[_0x5daa89(0x11f)]});for(const _0x1b0af8 of _0x6c7674){_0x1d229d['push'](_0x5daa89(0x180)+_0x1b0af8['path']+_0x5daa89(0xdd)+_0x1b0af8[_0x5daa89(0x8d)]+_0x5daa89(0x181));}}_0x5cb29f[_0x5daa89(0xef)](_0x1d229d[_0x5daa89(0x135)]('\x0a\x0a')),_0x308335=_0x5cb29f[_0x5daa89(0x135)]('\x0a');const _0x4d4f0f=_0x5602fc[_0x5daa89(0x144)]?.[_0x5daa89(0x143)](_0x5c495c=>_0x5c495c['message']?.['startsWith'](_0x5daa89(0x118)))||[];if(_0x4d4f0f[_0x5daa89(0x11f)]>0x0){const _0x3a5559=_0x4d4f0f['map'](_0x1f7a0e=>_0x1f7a0e[_0x5daa89(0xda)])[_0x5daa89(0x135)](';\x20');reportMorphError({'error_message':_0x3a5559,'error_type':_0x5daa89(0x109),'context':{'tool':'codebase_search','repo_path':_0x2aace8[_0x5daa89(0x17a)][_0x5daa89(0x12e)],'query':_0x2aace8[_0x5daa89(0x17a)]['search_string'],'model':_0x5daa89(0xc9),'termination_reason':'completed_with_file_errors','error_count':_0x4d4f0f['length'],'is_timeout':![],'timings':_0x5602fc[_0x5daa89(0xe1)],'files_attempted':_0xad31ba[_0x5daa89(0x169)](_0x2bdcab=>({'path':_0x2bdcab['path'],'lines':_0x2bdcab['lines']})),'tool_calls':_0x1b6100(_0x5602fc[_0x5daa89(0xd2)]),'messages':_0x5602fc['messages']?.[_0x5daa89(0x169)](_0x1f321c=>({'role':_0x1f321c[_0x5daa89(0xa5)],'content':_0x1f321c[_0x5daa89(0x8d)],..._0x1f321c[_0x5daa89(0x147)]?{'tool_calls':_0x1f321c['tool_calls'][_0x5daa89(0x11f)]}:{},..._0x1f321c[_0x5daa89(0x145)]?{'tool_call_id':_0x1f321c[_0x5daa89(0x145)]}:{}})),'request_content':{'query':_0x2aace8['data'][_0x5daa89(0x1a7)],'repo_path':_0x2aace8[_0x5daa89(0x17a)][_0x5daa89(0x12e)],'repoRoot':a0_0x29b6ce[_0x5daa89(0x96)](_0x2aace8[_0x5daa89(0x17a)][_0x5daa89(0x12e)]),'model':'morph-warp-grep-v2.1'}},'source':_0x5daa89(0x15e)})[_0x5daa89(0xf1)](()=>{});}}else{if(_0x5602fc[_0x5daa89(0x15c)]===_0x5daa89(0x105)&&_0x5602fc['errors'][_0x5daa89(0x11f)]>0x0){const _0x4e62fd=_0x5602fc['errors'][_0x5daa89(0x169)](_0x57903d=>_0x57903d[_0x5daa89(0xda)])[_0x5daa89(0x135)](';\x20');_0x308335=_0x5daa89(0x17b)+_0x4e62fd;const _0x2cfe64=_0x4e62fd[_0x5daa89(0x113)]()['includes'](_0x5daa89(0x1a9))||_0x4e62fd['toLowerCase']()[_0x5daa89(0xff)](_0x5daa89(0x12d))||_0x4e62fd['toLowerCase']()['includes']('etimedout'),_0xa006bd=_0x5602fc[_0x5daa89(0x12c)]?.[_0x5daa89(0x1a1)]?.['files'],_0x100954=_0x5602fc[_0x5daa89(0x144)][0x0];reportMorphError({'error_message':_0x4e62fd,'error_type':_0x2cfe64?_0x5daa89(0xb3):_0x100954?.[_0x5daa89(0xc6)]?.[_0x5daa89(0x13c)]||'WarpGrepError','context':{'tool':'codebase_search','repo_path':_0x2aace8[_0x5daa89(0x17a)][_0x5daa89(0x12e)],'query':_0x2aace8[_0x5daa89(0x17a)][_0x5daa89(0x1a7)],'model':_0x5daa89(0xc9),'termination_reason':_0x5602fc[_0x5daa89(0x15c)],'error_count':_0x5602fc['errors'][_0x5daa89(0x11f)],'is_timeout':_0x2cfe64,'timings':_0x5602fc[_0x5daa89(0xe1)],'files_attempted':_0xa006bd?.[_0x5daa89(0x169)](_0x7335c2=>({'path':_0x7335c2[_0x5daa89(0xe4)],'lines':_0x7335c2[_0x5daa89(0x182)]})),'tool_calls':_0x1b6100(_0x5602fc[_0x5daa89(0xd2)]),'messages':_0x5602fc[_0x5daa89(0xd2)]?.[_0x5daa89(0x169)](_0x3c32b1=>({'role':_0x3c32b1[_0x5daa89(0xa5)],'content':_0x3c32b1[_0x5daa89(0x8d)],..._0x3c32b1[_0x5daa89(0x147)]?{'tool_calls':_0x3c32b1[_0x5daa89(0x147)][_0x5daa89(0x11f)]}:{},..._0x3c32b1[_0x5daa89(0x145)]?{'tool_call_id':_0x3c32b1[_0x5daa89(0x145)]}:{}})),'request_content':{'query':_0x2aace8[_0x5daa89(0x17a)]['search_string'],'repo_path':_0x2aace8[_0x5daa89(0x17a)][_0x5daa89(0x12e)],'repoRoot':a0_0x29b6ce[_0x5daa89(0x96)](_0x2aace8[_0x5daa89(0x17a)][_0x5daa89(0x12e)]),'model':_0x5daa89(0xc9)}},'stack_trace':_0x100954?.[_0x5daa89(0xa4)]||undefined,'source':_0x5daa89(0x15e)})[_0x5daa89(0xf1)](()=>{});}else _0x308335=_0x5daa89(0x18e);}return{'content':[{'type':_0x5daa89(0x171),'text':_0x308335}]};}catch(_0x396087){const _0x2a17c7=handleMorphAPIError(_0x396087);if(_0x2a17c7)return logger['error'](_0x5daa89(0xd0),_0x5daa89(0x98),{'tool':'codebase_search','error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date[_0x5daa89(0xc0)]()-_0x267154}),_0x2a17c7;const _0x22ff1b=_0x396087 instanceof Error?_0x396087[_0x5daa89(0xda)]:String(_0x396087);logger['error'](_0x5daa89(0xd0),_0x5daa89(0x98),{'tool':_0x5daa89(0x124),'error':_0x22ff1b,'repo_path':_0x2aace8[_0x5daa89(0x17a)][_0x5daa89(0x12e)],'query':_0x2aace8[_0x5daa89(0x17a)]['search_string'],'latency_ms':Date[_0x5daa89(0xc0)]()-_0x267154});const _0x5d508b=_0x22ff1b[_0x5daa89(0x113)]()[_0x5daa89(0xff)](_0x5daa89(0x1a9))||_0x22ff1b['toLowerCase']()[_0x5daa89(0xff)](_0x5daa89(0x12d))||_0x22ff1b[_0x5daa89(0x113)]()[_0x5daa89(0xff)](_0x5daa89(0x11e))||_0x396087 instanceof Error&&_0x396087[_0x5daa89(0x13c)]===_0x5daa89(0xb3);return reportMorphError({'error_message':_0x22ff1b,'error_type':_0x5d508b?_0x5daa89(0xb3):_0x396087 instanceof Error?_0x396087['constructor'][_0x5daa89(0x13c)]:_0x5daa89(0x128),'context':{'tool':_0x5daa89(0x124),'repo_path':_0x2aace8[_0x5daa89(0x17a)]['repo_path'],'query':_0x2aace8[_0x5daa89(0x17a)]['search_string'],'model':'morph-warp-grep-v2.1','is_timeout':_0x5d508b,'exception_phase':_0x5daa89(0xb6),'request_content':{'query':_0x2aace8[_0x5daa89(0x17a)][_0x5daa89(0x1a7)],'repo_path':_0x2aace8[_0x5daa89(0x17a)][_0x5daa89(0x12e)],'repoRoot':a0_0x29b6ce[_0x5daa89(0x96)](_0x2aace8[_0x5daa89(0x17a)]['repo_path']),'model':_0x5daa89(0xc9)}},'stack_trace':_0x396087 instanceof Error?_0x396087[_0x5daa89(0xa4)]:undefined,'source':_0x5daa89(0x15e)})[_0x5daa89(0xf1)](()=>{}),{'content':[{'type':_0x5daa89(0x171),'text':_0x5daa89(0xb4)+_0x22ff1b}],'isError':![]};}}case TOOL_NAMES[_0x5daa89(0x17c)]:{const _0xb38231=WarpGrepGitHubArgsSchema[_0x5daa89(0x116)](_0x40b02f);if(!_0xb38231[_0x5daa89(0x140)])return{'content':[{'type':'text','text':_0x5daa89(0x130)+_0xb38231[_0x5daa89(0x102)]}],'isError':!![]};const _0x2d5585=_0xb38231['data'][_0x5daa89(0xf4)]||_0xb38231[_0x5daa89(0x17a)][_0x5daa89(0xdb)];if(!_0x2d5585)return{'content':[{'type':'text','text':'Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id'}],'isError':!![]};const _0x5ebefb=MORPH_API_KEY;if(!_0x5ebefb)throw new Error(_0x5daa89(0xca));const _0x34240b=Date[_0x5daa89(0xc0)]();logger[_0x5daa89(0x175)](_0x5daa89(0xd0),_0x5daa89(0x16f),{'identifier':_0x2d5585,'query':_0xb38231[_0x5daa89(0x17a)][_0x5daa89(0x1a7)],'branch':_0xb38231[_0x5daa89(0x17a)][_0x5daa89(0x11d)]});try{const _0x2fffe6=new WarpGrepClient({'morphApiKey':_0x5ebefb,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x49561f=await _0x2fffe6[_0x5daa89(0x164)]({'searchTerm':_0xb38231[_0x5daa89(0x17a)][_0x5daa89(0x1a7)],'github':_0x2d5585,'branch':_0xb38231[_0x5daa89(0x17a)][_0x5daa89(0x11d)]}),_0x581617=Date[_0x5daa89(0xc0)]()-_0x34240b;logMcpStderr(_0x5daa89(0x95)+_0x581617+_0x5daa89(0xc2)+_0x49561f[_0x5daa89(0x140)]);const _0x53845b=formatResult(_0x49561f);return{'content':[{'type':_0x5daa89(0x171),'text':_0x53845b}]};}catch(_0x166c04){const _0x42a7b6=handleMorphAPIError(_0x166c04);if(_0x42a7b6)return _0x42a7b6;const _0x4faecc=Date['now']()-_0x34240b,_0x2d39f7=_0x166c04 instanceof Error?_0x166c04[_0x5daa89(0xda)]:String(_0x166c04);return logMcpStderr(_0x5daa89(0x161)+_0x4faecc+_0x5daa89(0xb2),_0x2d39f7),reportMorphError({'error_message':_0x2d39f7,'error_type':_0x166c04 instanceof Error?_0x166c04[_0x5daa89(0xc6)][_0x5daa89(0x13c)]:_0x5daa89(0x128),'context':{'tool':_0x5daa89(0x1b4),'github_url':_0x2d5585,'search_string':_0xb38231[_0x5daa89(0x17a)][_0x5daa89(0x1a7)],'branch':_0xb38231[_0x5daa89(0x17a)][_0x5daa89(0x11d)]},'stack_trace':_0x166c04 instanceof Error?_0x166c04[_0x5daa89(0xa4)]:undefined,'source':'mcp-filesystem','tool':'github_codebase_search','latency_ms':_0x4faecc})['catch'](()=>{}),{'content':[{'type':_0x5daa89(0x171),'text':_0x5daa89(0xc8)+_0x2d39f7}],'isError':![]};}}default:throw new Error(_0x5daa89(0x187)+_0x493aeb);}}catch(_0x2bb9e1){const _0x5e5ec1=_0x2bb9e1 instanceof Error?_0x2bb9e1[_0x5daa89(0xda)]:String(_0x2bb9e1);return reportMorphError({'error_message':_0x5e5ec1,'error_type':_0x2bb9e1 instanceof Error?_0x2bb9e1[_0x5daa89(0xc6)]['name']:'UnknownError','context':{'tool':_0x493aeb,'arguments':_0x40b02f?JSON[_0x5daa89(0xde)](_0x40b02f)[_0x5daa89(0x122)](0x0,0x1f4):undefined,'mcp_server_version':_0x5daa89(0xd9)},'stack_trace':_0x2bb9e1 instanceof Error?_0x2bb9e1['stack']:undefined,'source':_0x5daa89(0x15e)})['catch'](()=>{}),{'content':[{'type':_0x5daa89(0x171),'text':_0x5daa89(0x17b)+_0x5e5ec1}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x350bcd){const _0x335aeb=a0_0x780d31,_0x1a6af9=await getValidRootDirectories(_0x350bcd);if(_0x1a6af9[_0x335aeb(0x11f)]>0x0)allowedDirectories=[..._0x1a6af9],logMcpStderr('Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20'+_0x1a6af9[_0x335aeb(0x11f)]+_0x335aeb(0x90));else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x290b3d=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x290b3d&&(allowedDirectories=[_0x290b3d],logMcpStderr(_0x335aeb(0xa0)+_0x290b3d));}catch(_0x541eff){logMcpStderr(_0x335aeb(0x134)+_0x541eff);}}}server[a0_0x780d31(0xcf)](RootsListChangedNotificationSchema,async()=>{const _0x36934e=a0_0x780d31;try{const _0xd71026=await server['listRoots']();_0xd71026&&_0x36934e(0xad)in _0xd71026&&await updateAllowedDirectoriesFromRoots(_0xd71026[_0x36934e(0xad)]);}catch(_0x23bb7b){logMcpStderr(_0x36934e(0x119),_0x23bb7b instanceof Error?_0x23bb7b[_0x36934e(0xda)]:String(_0x23bb7b));}}),server[a0_0x780d31(0x199)]=async()=>{const _0x563ada=a0_0x780d31,_0x5898b9=server['getClientCapabilities']();if(_0x5898b9?.[_0x563ada(0xad)])try{const _0x15e4bf=await server[_0x563ada(0xbd)]();_0x15e4bf&&_0x563ada(0xad)in _0x15e4bf?await updateAllowedDirectoriesFromRoots(_0x15e4bf['roots']):logMcpStderr('Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings');}catch(_0x4bf7e5){logMcpStderr(_0x563ada(0x1a4),_0x4bf7e5 instanceof Error?_0x4bf7e5[_0x563ada(0xda)]:String(_0x4bf7e5));}else{if(allowedDirectories[_0x563ada(0x11f)]>0x0)logMcpStderr(_0x563ada(0x1a8),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr('Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode');else throw new Error(_0x563ada(0x137));}}};async function runServer(){const _0x4566fe=a0_0x780d31,_0x31df7d=new StdioServerTransport();await server['connect'](_0x31df7d),logMcpStderr(_0x4566fe(0x13a)),allowedDirectories[_0x4566fe(0x11f)]===0x0&&logMcpStderr('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()[a0_0x780d31(0xf1)](_0x23393a=>{logMcpStderr('Fatal\x20error\x20running\x20server:',_0x23393a),process['exit'](0x1);});
|
|
2
|
+
const a0_0x525535=a0_0x4b31;(function(_0x3f2428,_0x129863){const _0x3ee4e4=a0_0x4b31,_0x11ae3e=_0x3f2428();while(!![]){try{const _0x120332=parseInt(_0x3ee4e4(0x25f))/0x1*(parseInt(_0x3ee4e4(0x152))/0x2)+-parseInt(_0x3ee4e4(0x26f))/0x3+-parseInt(_0x3ee4e4(0x1c8))/0x4*(-parseInt(_0x3ee4e4(0x1ae))/0x5)+-parseInt(_0x3ee4e4(0x157))/0x6*(parseInt(_0x3ee4e4(0x236))/0x7)+-parseInt(_0x3ee4e4(0x1dc))/0x8+parseInt(_0x3ee4e4(0x275))/0x9*(-parseInt(_0x3ee4e4(0x1ec))/0xa)+parseInt(_0x3ee4e4(0x197))/0xb*(parseInt(_0x3ee4e4(0x150))/0xc);if(_0x120332===_0x129863)break;else _0x11ae3e['push'](_0x11ae3e['shift']());}catch(_0x585d19){_0x11ae3e['push'](_0x11ae3e['shift']());}}}(a0_0x2805,0x76da9));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_0x4128a0 from'fs/promises';import a0_0x368898 from'path';import a0_0x55064c 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_0x598df from'axios';import{KNOWN_TOOL_NAMES,TOOL_NAMES}from'./tool-definitions.js';function fixPathRepetition(_0x35a4c3){const _0x97e2d0=a0_0x4b31,_0x5d759e=_0x35a4c3[_0x97e2d0(0x253)](a0_0x368898[_0x97e2d0(0x1b8)])['filter'](Boolean);if(_0x5d759e[_0x97e2d0(0x1b2)]<0x2)return null;for(let _0x2beec2=Math[_0x97e2d0(0x158)](_0x5d759e[_0x97e2d0(0x1b2)]/0x2);_0x2beec2>=0x1;_0x2beec2--){for(let _0x32e744=0x0;_0x32e744<=_0x5d759e[_0x97e2d0(0x1b2)]-0x2*_0x2beec2;_0x32e744++){const _0x48946c=_0x5d759e[_0x97e2d0(0x1bf)](_0x32e744,_0x32e744+_0x2beec2),_0x1f68ee=_0x5d759e[_0x97e2d0(0x1bf)](_0x32e744+_0x2beec2,_0x32e744+0x2*_0x2beec2);if(_0x48946c['every']((_0x50444a,_0x45f659)=>_0x50444a===_0x1f68ee[_0x45f659])){const _0x2031f4=[..._0x5d759e[_0x97e2d0(0x1bf)](0x0,_0x32e744),..._0x5d759e[_0x97e2d0(0x1bf)](_0x32e744+_0x2beec2)];return a0_0x368898[_0x97e2d0(0x1b8)]+_0x2031f4[_0x97e2d0(0x25b)](a0_0x368898[_0x97e2d0(0x1b8)]);}}}return null;}const require=createRequire(import.meta.url);function getPackageVersion(){const _0xec0b91=a0_0x4b31;try{const _0x30d7ab=require(_0xec0b91(0x23c));return _0x30d7ab[_0xec0b91(0x24c)]??_0xec0b91(0x199);}catch(_0x3f3593){return logMcpStderr('Warning:\x20Unable\x20to\x20determine\x20package\x20version:',_0x3f3593),_0xec0b91(0x199);}}function printHelp(){const _0x1bdc9c=a0_0x4b31;console[_0x1bdc9c(0x1c3)]('@morphllm/morphmcp\x20'+getPackageVersion()),console[_0x1bdc9c(0x1c3)](_0x1bdc9c(0x1cc)),console[_0x1bdc9c(0x1c3)](_0x1bdc9c(0x15c)),console['log'](_0x1bdc9c(0x1cd)),console[_0x1bdc9c(0x1c3)](_0x1bdc9c(0x1bd)),console[_0x1bdc9c(0x1c3)]('\x20\x20-v,\x20--version\x20\x20\x20\x20Print\x20version\x20and\x20exit'),console[_0x1bdc9c(0x1c3)](_0x1bdc9c(0x189)),console[_0x1bdc9c(0x1c3)]('\x20\x20morph-mcp'),console['log']('\x20\x20morph-mcp\x20--api-key\x20sk-xxx\x20~/repo');}const cliArgs=process[a0_0x525535(0x1ee)]['slice'](0x2),VERSION_FLAGS=new Set([a0_0x525535(0x181),'-v','-V']),HELP_FLAGS=new Set([a0_0x525535(0x18f),'-h']);cliArgs[a0_0x525535(0x26d)](_0x1408e7=>VERSION_FLAGS['has'](_0x1408e7))&&(console[a0_0x525535(0x1c3)](a0_0x525535(0x271)+getPackageVersion()),process[a0_0x525535(0x1d8)](0x0));cliArgs[a0_0x525535(0x26d)](_0x60b7b6=>HELP_FLAGS[a0_0x525535(0x187)](_0x60b7b6))&&(printHelp(),process['exit'](0x0));function getCliArg(_0x2bfa02){const _0xa5613e=a0_0x525535;for(let _0x55de95=0x0;_0x55de95<cliArgs['length'];_0x55de95++){const _0x5ee86d=cliArgs[_0x55de95];if(_0x5ee86d[_0xa5613e(0x1c9)]('--'+_0x2bfa02+'='))return _0x5ee86d[_0xa5613e(0x1bf)](('--'+_0x2bfa02+'=')[_0xa5613e(0x1b2)]);if(_0x5ee86d==='--'+_0x2bfa02&&_0x55de95+0x1<cliArgs[_0xa5613e(0x1b2)])return cliArgs[_0x55de95+0x1];}return undefined;}const args=[];for(let i=0x0;i<cliArgs[a0_0x525535(0x1b2)];i++){const arg=cliArgs[i];if(VERSION_FLAGS[a0_0x525535(0x187)](arg)||HELP_FLAGS[a0_0x525535(0x187)](arg))continue;if(arg[a0_0x525535(0x1c9)](a0_0x525535(0x20b)))continue;if(arg===a0_0x525535(0x1e2)){i++;continue;}args['push'](arg);}const WORKSPACE_ROOT=process[a0_0x525535(0x1d2)][a0_0x525535(0x21d)]||process[a0_0x525535(0x1d2)]['PWD']||process[a0_0x525535(0x1ad)](),ENABLE_WORKSPACE_MODE=process[a0_0x525535(0x1d2)]['ENABLE_WORKSPACE_MODE']!==a0_0x525535(0x1c2),MORPH_API_KEY=getCliArg('api-key')??process[a0_0x525535(0x1d2)][a0_0x525535(0x25c)],MORPH_API_URL=process['env']['MORPH_API_URL'],MORPH_LARGE_APPLY=process[a0_0x525535(0x1d2)][a0_0x525535(0x215)]!==a0_0x525535(0x1c2),MORPH_WARP_GREP_TIMEOUT=process[a0_0x525535(0x1d2)][a0_0x525535(0x22b)]?parseInt(process['env']['MORPH_WARP_GREP_TIMEOUT'],0xa):undefined,OPERATING_SYSTEM_TYPE=getOperatingSystemType(),DEFAULT_DISABLED_TOOLS=new Set(),DISABLED_TOOLS=process[a0_0x525535(0x1d2)][a0_0x525535(0x1e5)]?new Set(process['env'][a0_0x525535(0x1e5)][a0_0x525535(0x253)](',')[a0_0x525535(0x1bb)](_0x1ff9f5=>_0x1ff9f5[a0_0x525535(0x237)]())[a0_0x525535(0x1c7)](_0x154417=>_0x154417[a0_0x525535(0x1b2)]>0x0)):DEFAULT_DISABLED_TOOLS;if(DISABLED_TOOLS[a0_0x525535(0x1f1)]>0x0){for(const tool of DISABLED_TOOLS){!KNOWN_TOOL_NAMES[a0_0x525535(0x187)](tool)&&console[a0_0x525535(0x225)](a0_0x525535(0x244)+tool+a0_0x525535(0x23d)+[...KNOWN_TOOL_NAMES][a0_0x525535(0x25b)](',\x20'));}console[a0_0x525535(0x225)](a0_0x525535(0x19c)+[...DISABLED_TOOLS][a0_0x525535(0x25b)](',\x20'));}function a0_0x4b31(_0x27aa1a,_0x2b0f35){_0x27aa1a=_0x27aa1a-0x14f;const _0x2805c9=a0_0x2805();let _0x4b3180=_0x2805c9[_0x27aa1a];return _0x4b3180;}function a0_0x2805(){const _0x5685ff=['normalize','Branch\x20to\x20search\x20(uses\x20latest\x20commit)','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20workspace\x20mode','default','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.','role','unknown\x20error','file','\x20as\x20allowed\x20directory','mcp-filesystem','api_request_start','min','completed','now','etimedout','Here\x20is\x20the\x20content\x20of\x20files:\x0a','<file\x20path=\x22','-\x20Read\x20file\x20`','--version','ToolException','Client\x20does\x20not\x20support\x20MCP\x20Roots,\x20using\x20allowed\x20directories\x20set\x20from\x20server\x20args:','array','glob','tool','has','read\x20','\x0aExamples:','toISOString','Rate\x20limited:\x20You\x27ve\x20exceeded\x20your\x20Morph\x20API\x20usage\x20limits.\x20Please\x20visit\x20https://morphllm.com\x20to\x20check\x20your\x20plan\x20and\x20purchase\x20additional\x20credits.','Bearer\x20','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','Tool\x20','--help','-\x20instruction:\x20Brief\x20first-person\x20description\x20of\x20what\x20you\x27re\x20changing\x0a','timeout','MORPH_API_KEY\x20environment\x20variable\x20must\x20be\x20set\x20in\x20MCP\x20config.\x20Check\x20your\x20global\x20MCP\x20configuration.','morph-warp-grep-v2.1','Unknown\x20tool:\x20','Fatal\x20error\x20running\x20server:','stringify','193017TfTZPQ','Tool\x20\x22','unknown','TimeoutError','changes','Disabled\x20tools:\x20','morph-v3-large','Morph\x20Edit\x20','Secure\x20MCP\x20Filesystem\x20Server\x20running\x20on\x20stdio','Warning:\x20Could\x20not\x20initialize\x20workspace\x20mode:\x20','string','path_validation_resolved','tool_call_error','.\x20Path:\x20','\x0a...\x20(truncated,\x20total:\x20','UnknownError','**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','Error:\x20','Authentication\x20failed:\x20Your\x20Morph\x20API\x20key\x20is\x20invalid\x20or\x20has\x20been\x20revoked.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20a\x20valid\x20API\x20key,\x20then\x20update\x20your\x20MCP\x20configuration.','Warning:\x20','BinaryFile','describe','cwd','2461210jmEfBv','No\x20relevant\x20code\x20found\x20for\x20the\x20query.','user','file_read_complete','length','-\x20Preserve\x20exact\x20indentation\x0a','MCP','SymlinkError','success','timings','sep','.cursor','Search\x20type\x20hint.\x20Use\x20\x27node_modules\x27\x20when\x20searching\x20inside\x20node_modules\x20or\x20other\x20dependency\x20directories\x20that\x20are\x20normally\x20excluded.','map','dryRun','\x20\x20-h,\x20--help\x20\x20\x20\x20\x20\x20\x20Show\x20this\x20help\x20message\x20and\x20exit','0.2.0','slice','\x20valid\x20directories','code','false','log','search_type','ReadError','No\x20Morph\x20API\x20key\x20configured.\x20Please\x20visit\x20https://morphllm.com\x20to\x20get\x20an\x20API\x20key,\x20then\x20set\x20MORPH_API_KEY\x20in\x20your\x20MCP\x20configuration.','filter','4FikJNP','startsWith','Morph\x20FastApply\x20failed\x20without\x20error\x20message','match','\x0aUsage:\x20morph-mcp\x20[options]\x20[allowed-directory\x20...]','\x20\x20--api-key\x20<key>\x20\x20Morph\x20API\x20key\x20(takes\x20priority\x20over\x20MORPH_API_KEY\x20env\x20var)','instructions','Invalid\x20arguments:\x20','searchGitHub','function','env','isArray','Specific\x20commit\x20hash\x20to\x20search','linesRemoved','terminationReason','\x20(new\x20file)','exit','grep','text','pyproject.toml','1450440TxwPhD','go.mod','includes','lines','\x20tool\x20unavailable\x20-\x20MORPH_API_KEY\x20not\x20provided\x20in\x20MCP\x20config','[github_codebase_search]\x20Done\x20in\x20','--api-key','tool_call_id','You\x20should\x20ALWAYS\x20use\x20this\x20tool\x20to\x20start\x20your\x20search.\x20','DISABLED_TOOLS','Updated\x20allowed\x20directories\x20from\x20MCP\x20roots:\x20','metadata','safeParse','morph-v3-fast','listRoots','RipgrepNotAvailable','1970ElHsHK','https://morphllm.com/api/error-report','argv','.git','read','size','enum','number',',\x20removed\x20','turns','Warning:\x20Workspace\x20fallback\x20failed:\x20','Preview\x20changes\x20without\x20applying\x20them.','push','setRequestHandler','list_directory\x20','Unknown\x20error','instruction','warp_grep_start','morph-mcp','Note:\x20Allowed\x20directories\x20can\x20be\x20provided\x20via:','sk-','debug','github_url','code_edit','path_validation_failed','package.json','linesModified','terminated','optional','ms:','WarpGrepError','--api-key=','payload','oninitialized','Error\x20accessing\x20directory\x20','\x27\x20in\x20`','.\x20Changes:\x20','parse','search_string','realpath','path_validation_start','MORPH_LARGE_APPLY','\x0a</file>','codebase_search','runWarpGrep_call','roots','.vscode','status','morph-','WORKSPACE_ROOT','content','repo_path','A\x20brief\x20single\x20first-person\x20sentence\x20instruction\x20describing\x20changes\x20being\x20made\x20to\x20this\x20file.\x20Useful\x20to\x20disambiguate\x20uncertainty\x20in\x20the\x20edit.','new_string','name','Failed\x20to\x20request\x20initial\x20roots\x20from\x20client:','target_filepath','error','Fallback:\x20Using\x20workspace\x20root\x20','tool_calls','arguments','isDirectory','message','MORPH_WARP_GREP_TIMEOUT','object','-\x20Grepped\x20\x27','Changed\x20lines\x20with\x20minimal\x20context.\x20Use\x20placeholders\x20intelligently\x20like\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20to\x20represent\x20unchanged\x20code.','RipgrepError','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.','all','-\x20Glob\x20search\x20`','Created\x20File','-\x20For\x20deletions:\x20show\x20context\x20before\x20and\x20after,\x20omit\x20the\x20deleted\x20lines\x0a','File\x20read\x20error:','21YdTWKp','trim','Filter\x20to\x20specific\x20directories,\x20empty\x20for\x20all','grep_search','\x22\x20is\x20disabled\x20via\x20the\x20DISABLED_TOOLS\x20environment\x20variable\x20in\x20your\x20MCP\x20configuration.\x20Please\x20use\x20an\x20alternative\x20approach.','Client\x20returned\x20no\x20roots\x20set,\x20keeping\x20current\x20settings','../package.json','\x22.\x20Known\x20tools:\x20','Cargo.toml','filePath','readFile','owner_repo','GitHub\x20search\x20failed:\x20','constructor','Warning:\x20DISABLED_TOOLS\x20contains\x20unknown\x20tool\x20\x22','grep\x20\x27','\x20disabled\x20via\x20DISABLED_TOOLS','\x20\x203.\x20Workspace\x20mode\x20(default\x20behavior,\x20set\x20ENABLE_WORKSPACE_MODE=false\x20to\x20disable)','source','EDIT_FILE','node_modules','substring','version','edit','ms.\x20Success:\x20','file_path','Workspace\x20mode\x20enabled:\x20Using\x20','composer.json','errors','split','Branch\x20to\x20search\x20(defaults\x20to\x20repo\x27s\x20default\x20branch)','Relevant\x20context\x20found:','finish','command','Parameters:\x0a','CODEBASE_SEARCH','timed\x20out','join','MORPH_API_KEY','toLowerCase','-\x20Batch\x20multiple\x20edits\x20to\x20the\x20same\x20file\x20in\x20one\x20call\x0a','176138mqauNo','ENOENT','catch','warn','Invalid\x20arguments\x20for\x20morph_edit_file:\x20','stack','Agent\x20completed\x20but\x20did\x20not\x20call\x20finish\x20tool.','pattern','getClientCapabilities','added\x20','dirname','\x20-\x20','boolean','params','some','edit_file','60888OcpUYh','\x20is\x20not\x20a\x20directory','@morphllm/morphmcp\x20','data','files','context','33507seOadF','\x20error(s)','Morph\x20Fast\x20Context\x20subagent\x20performed\x20search\x20on\x20repository:','828FAtKhW','Warning:\x20API\x20key\x20format\x20may\x20be\x20incorrect.\x20Morph\x20API\x20keys\x20typically\x20start\x20with\x20\x27sk-\x27\x20or\x20\x27morph-\x27','2GZEBjX','github_codebase_search','description','messages','\x22>\x0a','914532lCgqQo','floor','branch','completionId','assistant','\x0aOptions:','utf-8','\x20\x201.\x20Command-line\x20arguments\x20(shown\x20above)','-\x20Listed\x20directory\x20`','LocalRipgrepProvider','Applied','resolve','API\x20error\x20(auth/rate-limit)','indexOf','Fill\x20out\x20extra\x20details\x20that\x20you\x20as\x20a\x20smart\x20model\x20can\x20infer\x20in\x20the\x20question\x20to\x20aid\x20the\x20toolin\x20its\x20search.\x20','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.','\x20chars)','path','glob\x20\x27','response','❌\x20Morph\x20Edit\x20Failed:\x20','-\x20ALWAYS\x20use\x20\x22//\x20...\x20existing\x20code\x20...\x22\x20for\x20unchanged\x20sections\x20(omitting\x20this\x20marker\x20will\x20cause\x20deletions)\x0a','`\x20in\x20`','[could\x20not\x20read\x20file:\x20'];a0_0x2805=function(){return _0x5685ff;};return a0_0x2805();}MORPH_API_KEY&&!MORPH_API_KEY[a0_0x525535(0x1c9)](a0_0x525535(0x200))&&!MORPH_API_KEY[a0_0x525535(0x1c9)]('morph-')&&logMcpStderr(a0_0x525535(0x151));async function reportMorphError(_0x47ead2){const _0x41f676=a0_0x525535;try{await a0_0x598df['post'](_0x41f676(0x1ed),{..._0x47ead2,'timestamp':new Date()[_0x41f676(0x18a)](),'source':_0x47ead2['source']||_0x41f676(0x178),'os_type':OPERATING_SYSTEM_TYPE,'context':{'os_type':OPERATING_SYSTEM_TYPE,..._0x47ead2[_0x41f676(0x274)]}},{'timeout':0x1388,'headers':{'Content-Type':'application/json','Authorization':_0x41f676(0x18c)+MORPH_API_KEY}});}catch{}}function extractStatusCode(_0x2eaf42,_0xe11803){const _0x13b306=a0_0x525535;if(_0x2eaf42&&typeof _0x2eaf42===_0x13b306(0x22c)&&'status'in _0x2eaf42)return _0x2eaf42[_0x13b306(0x21b)];if(_0x2eaf42&&typeof _0x2eaf42===_0x13b306(0x22c)&&_0x13b306(0x16a)in _0x2eaf42)return _0x2eaf42['response']?.['status'];const _0xba1d84=_0xe11803[_0x13b306(0x1cb)](/\b(401|429)\b/);return _0xba1d84?parseInt(_0xba1d84[0x1],0xa):null;}function handleMorphAPIError(_0x7c5507){const _0x2fdf45=a0_0x525535,_0x5dcfac=_0x7c5507 instanceof Error?_0x7c5507['message']:String(_0x7c5507),_0x2d3de8=extractStatusCode(_0x7c5507,_0x5dcfac);switch(_0x2d3de8){case 0x191:return{'content':[{'type':'text','text':_0x2fdf45(0x1a9)}],'isError':!![]};case 0x1ad:return{'content':[{'type':'text','text':_0x2fdf45(0x18b)}],'isError':!![]};default:return null;}}args[a0_0x525535(0x1b2)]===0x0&&!ENABLE_WORKSPACE_MODE&&(logMcpStderr('Usage:\x20mcp-server-filesystem\x20[allowed-directory]\x20[additional-directories...]'),logMcpStderr(a0_0x525535(0x1ff)),logMcpStderr(a0_0x525535(0x15e)),logMcpStderr('\x20\x202.\x20MCP\x20roots\x20protocol\x20(if\x20client\x20supports\x20it)'),logMcpStderr(a0_0x525535(0x247)),logMcpStderr('At\x20least\x20one\x20directory\x20must\x20be\x20provided\x20by\x20EITHER\x20method\x20for\x20the\x20server\x20to\x20operate.'));function normalizePath(_0x4becee){const _0x43b16c=a0_0x525535;return a0_0x368898[_0x43b16c(0x16f)](_0x4becee);}function expandHome(_0x20acc7){const _0x190c16=a0_0x525535;if(_0x20acc7[_0x190c16(0x1c9)]('~/')||_0x20acc7==='~')return a0_0x368898[_0x190c16(0x25b)](a0_0x55064c['homedir'](),_0x20acc7[_0x190c16(0x1bf)](0x1));return _0x20acc7;}let allowedDirectories=await Promise[a0_0x525535(0x231)](args['map'](async _0x232691=>{const _0x44c3a6=a0_0x525535,_0x303ab1=expandHome(_0x232691),_0xc4839=a0_0x368898[_0x44c3a6(0x162)](_0x303ab1);try{const _0x480f82=await a0_0x4128a0['realpath'](_0xc4839);return normalizePath(_0x480f82);}catch(_0x4b206c){return normalizePath(_0xc4839);}}));if(ENABLE_WORKSPACE_MODE&&args[a0_0x525535(0x1b2)]===0x0)try{const workspaceDir=await detectWorkspaceRoot(WORKSPACE_ROOT);workspaceDir&&(allowedDirectories[a0_0x525535(0x1f8)](workspaceDir),logMcpStderr(a0_0x525535(0x250)+workspaceDir+a0_0x525535(0x177)));}catch(a0_0x29d551){logMcpStderr(a0_0x525535(0x1a0)+a0_0x29d551);}async function detectWorkspaceRoot(_0x3653e7){const _0x57a79a=a0_0x525535;let _0x1c2d2d=a0_0x368898['resolve'](_0x3653e7);const _0x2767a1=[_0x57a79a(0x1ef),_0x57a79a(0x21a),_0x57a79a(0x205),_0x57a79a(0x23e),_0x57a79a(0x1db),_0x57a79a(0x1dd),_0x57a79a(0x1b9),'tsconfig.json',_0x57a79a(0x251)];while(_0x1c2d2d!==a0_0x368898['dirname'](_0x1c2d2d)){for(const _0x5ce410 of _0x2767a1){const _0x308231=a0_0x368898['join'](_0x1c2d2d,_0x5ce410);try{return await a0_0x4128a0['access'](_0x308231),normalizePath(_0x1c2d2d);}catch{}}_0x1c2d2d=a0_0x368898[_0x57a79a(0x269)](_0x1c2d2d);}return normalizePath(_0x3653e7);}await Promise[a0_0x525535(0x231)](args[a0_0x525535(0x1bb)](async _0x4e200e=>{const _0x519e98=a0_0x525535;try{const _0x18e91d=await a0_0x4128a0['stat'](expandHome(_0x4e200e));!_0x18e91d[_0x519e98(0x229)]()&&(logMcpStderr(_0x519e98(0x1a8)+_0x4e200e+_0x519e98(0x270)),process[_0x519e98(0x1d8)](0x1));}catch(_0xb341e8){logMcpStderr(_0x519e98(0x20e)+_0x4e200e+':',_0xb341e8),process[_0x519e98(0x1d8)](0x1);}}));async function validatePath(_0x151ca4){const _0xc59c0b=a0_0x525535,_0x199e95=expandHome(_0x151ca4),_0x9eff54=a0_0x368898[_0xc59c0b(0x162)](_0x199e95);logger[_0xc59c0b(0x201)](_0xc59c0b(0x1b4),_0xc59c0b(0x214),{'raw_path':_0x151ca4,'absolute':_0x9eff54});try{const _0xbaae6f=await a0_0x4128a0[_0xc59c0b(0x213)](_0x9eff54);return logger['debug'](_0xc59c0b(0x1b4),_0xc59c0b(0x1a2),{'resolved':_0xbaae6f,'symlink':_0xbaae6f!==_0x9eff54}),_0xbaae6f;}catch(_0x3c2a44){if(_0x3c2a44['code']===_0xc59c0b(0x260)){const _0x26ede2=a0_0x368898['dirname'](_0x9eff54);try{const _0x482dbc=await a0_0x4128a0['realpath'](_0x26ede2),_0x2b604d=a0_0x368898['join'](_0x482dbc,a0_0x368898['basename'](_0x9eff54));return logger[_0xc59c0b(0x201)](_0xc59c0b(0x1b4),'path_validation_resolved',{'resolved':_0x2b604d,'new_file':!![]}),_0x2b604d;}catch{logger[_0xc59c0b(0x225)](_0xc59c0b(0x1b4),_0xc59c0b(0x204),{'raw_path':_0x151ca4,'error':'Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x26ede2});throw new Error('Parent\x20directory\x20does\x20not\x20exist:\x20'+_0x26ede2);}}logger[_0xc59c0b(0x225)](_0xc59c0b(0x1b4),_0xc59c0b(0x204),{'raw_path':_0x151ca4,'error':_0x3c2a44[_0xc59c0b(0x22a)]});throw _0x3c2a44;}}const MorphEditFileArgsSchema=z[a0_0x525535(0x22c)]({'path':z['string'](),'code_edit':z[a0_0x525535(0x1a1)]()[a0_0x525535(0x1ac)](a0_0x525535(0x22e)),'instruction':z[a0_0x525535(0x1a1)]()['describe'](a0_0x525535(0x220)),'dryRun':z[a0_0x525535(0x26b)]()[a0_0x525535(0x172)](![])[a0_0x525535(0x1ac)](a0_0x525535(0x1f7))}),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_0x525535(0x22c)]({'search_string':z[a0_0x525535(0x1a1)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repo_path':z[a0_0x525535(0x1a1)]()['describe'](a0_0x525535(0x18d)),'search_type':z[a0_0x525535(0x1f2)]([a0_0x525535(0x172),a0_0x525535(0x24a)])[a0_0x525535(0x208)]()['describe'](a0_0x525535(0x1ba))}),WarpGrepGitHubArgsSchema=z['object']({'search_string':z[a0_0x525535(0x1a1)]()['describe'](CODEBASE_SEARCH_QUERY_DESCRIPTION),'github_url':z[a0_0x525535(0x1a1)]()[a0_0x525535(0x208)]()['describe'](a0_0x525535(0x173)),'owner_repo':z[a0_0x525535(0x1a1)]()[a0_0x525535(0x208)]()[a0_0x525535(0x1ac)]('Repository\x20owner/repo\x20shorthand\x20(e.g.\x20\x27vercel/next.js\x27).\x20You\x20must\x20provide\x20either\x20github_url\x20or\x20owner_repo.'),'branch':z[a0_0x525535(0x1a1)]()[a0_0x525535(0x208)]()[a0_0x525535(0x1ac)](a0_0x525535(0x254))}),CodebaseSearchArgsSchema=z[a0_0x525535(0x22c)]({'query':z['string']()[a0_0x525535(0x1ac)](CODEBASE_SEARCH_QUERY_DESCRIPTION),'repoId':z['string']()['describe']('Repository\x20identifier'),'branch':z[a0_0x525535(0x1a1)]()[a0_0x525535(0x208)]()[a0_0x525535(0x1ac)](a0_0x525535(0x170)),'commitHash':z[a0_0x525535(0x1a1)]()[a0_0x525535(0x208)]()[a0_0x525535(0x1ac)](a0_0x525535(0x1d4)),'targetDirectories':z[a0_0x525535(0x184)](z['string']())[a0_0x525535(0x172)]([])[a0_0x525535(0x1ac)](a0_0x525535(0x238)),'limit':z[a0_0x525535(0x1f3)]()[a0_0x525535(0x208)]()[a0_0x525535(0x172)](0xa)[a0_0x525535(0x1ac)]('Max\x20results\x20to\x20return')}),server=new Server({'name':a0_0x525535(0x1fe),'version':a0_0x525535(0x1be)},{'capabilities':{'tools':{}}});server[a0_0x525535(0x1f9)](ListToolsRequestSchema,async()=>{const _0x4ae465=a0_0x525535,_0x5374e5=[{'name':TOOL_NAMES[_0x4ae465(0x249)],'description':_0x4ae465(0x1a7)+_0x4ae465(0x258)+'-\x20path:\x20Absolute\x20file\x20path\x20to\x20edit\x0a'+_0x4ae465(0x190)+'-\x20code_edit:\x20Only\x20the\x20changed\x20lines\x20with\x20//\x20...\x20existing\x20code\x20...\x20markers\x0a\x0a'+'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'+'Example\x20format:\x0a'+'//\x20...\x20existing\x20code\x20...\x0aFIRST_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0aSECOND_EDIT\x0a//\x20...\x20existing\x20code\x20...\x0a\x0a'+'Rules:\x0a'+_0x4ae465(0x16c)+_0x4ae465(0x1b3)+_0x4ae465(0x234)+_0x4ae465(0x25e),'inputSchema':zodToJsonSchema(MorphEditFileArgsSchema),'requiresApiKey':!![]},{'name':TOOL_NAMES['CODEBASE_SEARCH'],'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'+_0x4ae465(0x165)+_0x4ae465(0x1e4)+'','inputSchema':zodToJsonSchema(WarpGrepArgsSchema),'requiresApiKey':!![]},{'name':GITHUB_SEARCH_TOOL_NAME,'description':GITHUB_SEARCH_DESCRIPTION,'inputSchema':zodToJsonSchema(WarpGrepGitHubArgsSchema),'requiresApiKey':!![]}],_0x35b960=_0x5374e5[_0x4ae465(0x1c7)](_0x3cafad=>{const _0x285bf1=_0x4ae465;if(DISABLED_TOOLS['has'](_0x3cafad['name']))return console[_0x285bf1(0x225)](_0x285bf1(0x18e)+_0x3cafad[_0x285bf1(0x222)]+_0x285bf1(0x246)),![];if('requiresApiKey'in _0x3cafad&&_0x3cafad['requiresApiKey']&&!MORPH_API_KEY)return logMcpStderr(_0x285bf1(0x1aa)+_0x3cafad[_0x285bf1(0x222)]+_0x285bf1(0x1e0)),![];return!![];});return{'tools':_0x35b960[_0x4ae465(0x1bb)](_0xa9cb7b=>({'name':_0xa9cb7b['name'],'description':_0xa9cb7b[_0x4ae465(0x154)],'inputSchema':_0xa9cb7b['inputSchema']}))};}),server[a0_0x525535(0x1f9)](CallToolRequestSchema,async _0x2e96b0=>{const _0x170471=a0_0x525535,{name:_0x2a3159,arguments:_0x592b7e}=_0x2e96b0[_0x170471(0x26c)],_0x9fc9d0=Date[_0x170471(0x17c)]();logger[_0x170471(0x201)](_0x170471(0x1b4),'tool_call_received',{'tool':_0x2a3159,'args':_0x2a3159==='edit_file'?{'path':_0x592b7e?.[_0x170471(0x168)],'instruction':_0x592b7e?.[_0x170471(0x1fc)]||_0x592b7e?.[_0x170471(0x1ce)],'dryRun':_0x592b7e?.[_0x170471(0x1bc)]}:_0x592b7e});try{if(!MORPH_API_KEY)return{'content':[{'type':_0x170471(0x1da),'text':_0x170471(0x1c6)}],'isError':!![]};if(!MORPH_API_KEY[_0x170471(0x1c9)](_0x170471(0x200))&&!MORPH_API_KEY['startsWith'](_0x170471(0x21c)))return{'content':[{'type':_0x170471(0x1da),'text':_0x170471(0x230)}],'isError':!![]};if(DISABLED_TOOLS[_0x170471(0x187)](_0x2a3159))return{'content':[{'type':_0x170471(0x1da),'text':_0x170471(0x198)+_0x2a3159+_0x170471(0x23a)}],'isError':![]};switch(_0x2a3159){case TOOL_NAMES['EDIT_FILE']:{let _0x41f18c=_0x592b7e;if(_0x41f18c&&typeof _0x41f18c===_0x170471(0x22c)){if(!(_0x170471(0x168)in _0x41f18c)){const _0x20e92a=_0x41f18c['target_file']??_0x41f18c[_0x170471(0x23f)]??_0x41f18c[_0x170471(0x224)]??_0x41f18c[_0x170471(0x24f)]??_0x41f18c[_0x170471(0x176)];if(_0x20e92a)_0x41f18c={..._0x41f18c,'path':_0x20e92a};}_0x170471(0x1ce)in _0x41f18c&&!(_0x170471(0x1fc)in _0x41f18c)&&(_0x41f18c={..._0x41f18c,'instruction':_0x41f18c['instructions']});if(!(_0x170471(0x203)in _0x41f18c)){const _0x23aae2=_0x41f18c[_0x170471(0x1c1)]??_0x41f18c[_0x170471(0x221)]??_0x41f18c[_0x170471(0x21e)]??_0x41f18c[_0x170471(0x24d)];if(_0x23aae2)_0x41f18c={..._0x41f18c,'code_edit':_0x23aae2};}}const _0x30d794=MorphEditFileArgsSchema[_0x170471(0x1e8)](_0x41f18c);if(!_0x30d794[_0x170471(0x1b6)])throw new Error(_0x170471(0x263)+_0x30d794[_0x170471(0x225)]);const _0x224a38=await validatePath(_0x30d794[_0x170471(0x272)][_0x170471(0x168)]);let _0x24ab25=null,_0x182e08=!![],_0x153626=null;try{_0x24ab25=await a0_0x4128a0[_0x170471(0x240)](_0x224a38,_0x170471(0x15d)),logger[_0x170471(0x201)](_0x170471(0x1b4),_0x170471(0x1b1),{'path':_0x224a38,'size_bytes':_0x24ab25[_0x170471(0x1b2)]});}catch(_0x271951){const _0x452092=_0x271951['code'];_0x452092==='ENOENT'?(_0x182e08=![],_0x24ab25='',logger['debug']('MCP',_0x170471(0x1b1),{'path':_0x224a38,'exists':![]})):(_0x153626='Failed\x20to\x20read\x20file:\x20'+(_0x452092||_0x170471(0x199))+_0x170471(0x26a)+(_0x271951 instanceof Error?_0x271951[_0x170471(0x22a)]:String(_0x271951)),logger[_0x170471(0x225)]('MCP','file_read_failed',{'path':_0x224a38,'error':_0x153626}),logMcpStderr(_0x170471(0x1aa)+_0x153626));}let _0x23793d;try{const _0x7e2abb=MORPH_API_KEY;if(!_0x7e2abb)throw new Error(_0x170471(0x192));const _0x590bec=a0_0x368898[_0x170471(0x269)](_0x224a38),_0xd92589=a0_0x368898['basename'](_0x224a38);logger[_0x170471(0x201)](_0x170471(0x1b4),_0x170471(0x179),{'model':_0x170471(0x1e9),'path':_0x30d794[_0x170471(0x272)]['path'],'instruction_len':_0x30d794[_0x170471(0x272)]['instruction'][_0x170471(0x1b2)],'code_edit_len':_0x30d794['data'][_0x170471(0x203)][_0x170471(0x1b2)],'original_code_len':_0x24ab25?.['length']??0x0,'dry_run':_0x30d794['data'][_0x170471(0x1bc)]});const _0x502b74=Date[_0x170471(0x17c)](),_0x417f7f=await executeEditFile({'target_filepath':_0xd92589,'code_edit':_0x30d794['data'][_0x170471(0x203)],'instruction':_0x30d794['data'][_0x170471(0x1fc)]},{'morphApiKey':_0x7e2abb,'morphApiUrl':MORPH_API_URL,'large':MORPH_LARGE_APPLY,'baseDir':_0x590bec,'autoWrite':!_0x30d794[_0x170471(0x272)][_0x170471(0x1bc)],'generateUdiff':![],'debug':![]}),_0x1df48b=Date[_0x170471(0x17c)]()-_0x502b74;_0x23793d=_0x417f7f[_0x170471(0x15a)];if(!_0x417f7f['success'])throw new Error(_0x417f7f[_0x170471(0x225)]||_0x170471(0x1ca));const _0x21de4e=_0x417f7f[_0x170471(0x19b)],_0x200408=_0x170471(0x268)+_0x21de4e['linesAdded']+_0x170471(0x1f4)+_0x21de4e['linesRemoved']+',\x20modified\x20'+_0x21de4e[_0x170471(0x206)];logger[_0x170471(0x201)](_0x170471(0x1b4),'tool_call_complete',{'tool':_0x170471(0x26e),'success':!![],'latency_ms':Date[_0x170471(0x17c)]()-_0x9fc9d0,'edit_latency_ms':_0x1df48b,'changes':{'added':_0x21de4e['linesAdded'],'removed':_0x21de4e[_0x170471(0x1d5)],'modified':_0x21de4e[_0x170471(0x206)]},'completion_id':_0x23793d});if(_0x30d794[_0x170471(0x272)][_0x170471(0x1bc)])return{'content':[{'type':'text','text':'Morph\x20Edit\x20Preview'+(_0x182e08?'':_0x170471(0x1d7))+':\x20'+_0x30d794[_0x170471(0x272)][_0x170471(0x1fc)]+_0x170471(0x210)+_0x200408+_0x170471(0x1a4)+_0x30d794['data'][_0x170471(0x168)]+'.'}]};return{'content':[{'type':_0x170471(0x1da),'text':_0x170471(0x19e)+(_0x182e08?_0x170471(0x161):_0x170471(0x233))+':\x20'+_0x30d794[_0x170471(0x272)][_0x170471(0x1fc)]+'.\x20Changes:\x20'+_0x200408+_0x170471(0x1a4)+_0x30d794[_0x170471(0x272)]['path']+'.'}]};}catch(_0x270cff){const _0x8d0af2=handleMorphAPIError(_0x270cff);if(_0x8d0af2)return logger[_0x170471(0x225)]('MCP',_0x170471(0x1a3),{'tool':_0x170471(0x26e),'error':_0x170471(0x163),'latency_ms':Date['now']()-_0x9fc9d0}),_0x8d0af2;const _0x541309=_0x270cff instanceof Error?_0x270cff[_0x170471(0x22a)]:String(_0x270cff);return logger[_0x170471(0x225)](_0x170471(0x1b4),'tool_call_error',{'tool':_0x170471(0x26e),'error':_0x541309,'path':_0x30d794['data'][_0x170471(0x168)],'validated_path':_0x224a38,'latency_ms':Date[_0x170471(0x17c)]()-_0x9fc9d0,'stack':_0x270cff instanceof Error?_0x270cff[_0x170471(0x264)]:undefined}),reportMorphError({'error_message':_0x541309,'error_type':_0x270cff instanceof Error?_0x270cff[_0x170471(0x243)][_0x170471(0x222)]:_0x170471(0x1a6),'context':{'tool':_0x170471(0x26e),'completion_id':_0x23793d,'file_path':_0x30d794[_0x170471(0x272)][_0x170471(0x168)],'validated_path':_0x224a38,'instruction':_0x30d794[_0x170471(0x272)][_0x170471(0x1fc)],'model':MORPH_LARGE_APPLY?_0x170471(0x19d):'morph-v3-fast','dry_run':_0x30d794[_0x170471(0x272)]['dryRun'],'file_exists':_0x182e08,'file_read_error':_0x153626,'file_readable':_0x24ab25!==null,'request_content':{'path':_0x30d794[_0x170471(0x272)]['path'],'code_edit':_0x30d794['data'][_0x170471(0x203)],'instruction':_0x30d794[_0x170471(0x272)]['instruction'],'original_code':_0x24ab25!==null?_0x24ab25[_0x170471(0x1b2)]>0xc350?_0x24ab25[_0x170471(0x24b)](0x0,0xc350)+_0x170471(0x1a5)+_0x24ab25['length']+_0x170471(0x167):_0x24ab25:_0x170471(0x16e)+(_0x153626||_0x170471(0x175))+']','original_code_length':_0x24ab25?.[_0x170471(0x1b2)]??0x0,'model':MORPH_LARGE_APPLY?'morph-v3-large':_0x170471(0x1e9),'dry_run':_0x30d794[_0x170471(0x272)][_0x170471(0x1bc)]}},'stack_trace':_0x270cff instanceof Error?_0x270cff[_0x170471(0x264)]:undefined,'source':_0x170471(0x178)})[_0x170471(0x261)](()=>{}),{'content':[{'type':_0x170471(0x1da),'text':_0x170471(0x16b)+_0x541309}],'isError':!![]};}}case TOOL_NAMES[_0x170471(0x259)]:{const _0x46d926=WarpGrepArgsSchema[_0x170471(0x1e8)](_0x592b7e);if(!_0x46d926[_0x170471(0x1b6)])return{'content':[{'type':_0x170471(0x1da),'text':'Invalid\x20arguments:\x20'+_0x46d926['error']}],'isError':!![]};const _0x31547b=_0x40e023=>{const _0x4323f9=_0x170471,_0x2c2393=[];for(const _0x3f921a of _0x40e023||[]){if(_0x3f921a[_0x4323f9(0x174)]==='assistant'&&Array[_0x4323f9(0x1d3)](_0x3f921a['tool_calls']))for(const _0x64045c of _0x3f921a[_0x4323f9(0x227)]){try{const _0x58a0d6=_0x64045c[_0x4323f9(0x1d1)]?.[_0x4323f9(0x222)],_0x5814d5=JSON[_0x4323f9(0x211)](_0x64045c[_0x4323f9(0x1d1)]?.['arguments']||'{}');if(_0x58a0d6===_0x4323f9(0x239))_0x2c2393['push'](_0x4323f9(0x245)+_0x5814d5[_0x4323f9(0x266)]+'\x27\x20'+(_0x5814d5[_0x4323f9(0x168)]||'.'));else{if(_0x58a0d6===_0x4323f9(0x1f0))_0x2c2393[_0x4323f9(0x1f8)](_0x4323f9(0x188)+_0x5814d5[_0x4323f9(0x168)]);else{if(_0x58a0d6==='list_directory')_0x2c2393['push'](_0x4323f9(0x1fa)+(_0x5814d5['command']||'.'));else{if(_0x58a0d6===_0x4323f9(0x185))_0x2c2393[_0x4323f9(0x1f8)](_0x4323f9(0x169)+_0x5814d5[_0x4323f9(0x266)]+'\x27\x20'+(_0x5814d5['path']||'.'));else _0x58a0d6===_0x4323f9(0x256)&&_0x2c2393[_0x4323f9(0x1f8)](_0x4323f9(0x256));}}}}catch{}}}return _0x2c2393;},_0x308a52=_0x316c84=>{const _0x5b04f2=_0x170471,_0x330a3c=[];if(!_0x316c84||!Array['isArray'](_0x316c84))return _0x330a3c;const _0x5416fe=[{'pattern':/\[FILE NOT FOUND\]/,'error_type':'FileNotFound','tool':_0x5b04f2(0x1f0)},{'pattern':/\[PATH ERROR\]/,'error_type':'PathError','tool':_0x5b04f2(0x1f0)},{'pattern':/\[READ ERROR\]/,'error_type':_0x5b04f2(0x1c5),'tool':'read'},{'pattern':/\[UNREADABLE FILE\]/,'error_type':_0x5b04f2(0x1ab),'tool':'read'},{'pattern':/\[RIPGREP ERROR\]/,'error_type':_0x5b04f2(0x22f),'tool':_0x5b04f2(0x1d9)},{'pattern':/\[RIPGREP NOT AVAILABLE\]/,'error_type':_0x5b04f2(0x1eb),'tool':_0x5b04f2(0x1d9)},{'pattern':/\[BINARY FILE\]/,'error_type':'BinaryFile','tool':_0x5b04f2(0x1f0)},{'pattern':/\[SYMLINK\]/,'error_type':_0x5b04f2(0x1b5),'tool':_0x5b04f2(0x1f0)},{'pattern':/not a text file/,'error_type':_0x5b04f2(0x1ab),'tool':'read'},{'pattern':/symbolic link/,'error_type':_0x5b04f2(0x1b5),'tool':_0x5b04f2(0x1f0)},{'pattern':/Error reading file:/,'error_type':_0x5b04f2(0x1c5),'tool':_0x5b04f2(0x1f0)},{'pattern':/status="error"/,'error_type':_0x5b04f2(0x182),'tool':_0x5b04f2(0x199)}];let _0xdc5fd3=0x0;for(const _0x50f484 of _0x316c84){_0x50f484[_0x5b04f2(0x174)]===_0x5b04f2(0x15b)&&Array['isArray'](_0x50f484[_0x5b04f2(0x227)])&&_0xdc5fd3++;const _0xb12f3e=_0x50f484[_0x5b04f2(0x21e)];if((_0x50f484[_0x5b04f2(0x174)]===_0x5b04f2(0x186)||_0x50f484[_0x5b04f2(0x174)]===_0x5b04f2(0x1b0))&&_0xb12f3e&&typeof _0xb12f3e===_0x5b04f2(0x1a1))for(const {pattern:_0x2ec384,error_type:_0x1c4ffc,tool:_0x27066a}of _0x5416fe){const _0x9ac5b4=_0xb12f3e[_0x5b04f2(0x1cb)](new RegExp(_0x2ec384[_0x5b04f2(0x248)],'g'));if(_0x9ac5b4)for(const _0x1c74a2 of _0x9ac5b4){const _0x3d4e9c=_0xb12f3e[_0x5b04f2(0x164)](_0x1c74a2),_0x1b3902=_0xb12f3e[_0x5b04f2(0x24b)](_0x3d4e9c,Math[_0x5b04f2(0x17a)](_0x3d4e9c+0xc8,_0xb12f3e[_0x5b04f2(0x1b2)]));_0x330a3c[_0x5b04f2(0x1f8)]({'tool':_0x27066a,'error_type':_0x1c4ffc,'error_message':_0x1b3902[_0x5b04f2(0x253)]('\x0a')[0x0],'turn':_0xdc5fd3});}}}return _0x330a3c;};try{const _0x2eecb8=a0_0x368898[_0x170471(0x162)](_0x46d926[_0x170471(0x272)][_0x170471(0x21f)]),_0x375040=_0x46d926[_0x170471(0x272)][_0x170471(0x1c4)],_0x6d7054=_0x375040===_0x170471(0x24a)?{'allowNames':[_0x170471(0x24a)]}:undefined,_0x2fa7b4=new LocalRipgrepProvider(_0x2eecb8,undefined,_0x6d7054);logger['debug']('MCP','provider_created',{'type':_0x170471(0x160),'repo_root':_0x2eecb8,'search_type':_0x375040||_0x170471(0x172)}),logger[_0x170471(0x201)](_0x170471(0x1b4),_0x170471(0x1fd),{'query':_0x46d926[_0x170471(0x272)][_0x170471(0x212)],'repo_root':_0x2eecb8,'timeout_ms':MORPH_WARP_GREP_TIMEOUT});const _0x1da3f5=Date[_0x170471(0x17c)](),_0x31047f=await runWarpGrep({'searchTerm':_0x46d926[_0x170471(0x272)][_0x170471(0x212)],'repoRoot':_0x2eecb8,'morphApiKey':MORPH_API_KEY,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT,'provider':_0x2fa7b4,'search_type':_0x375040}),_0x516e17=Date[_0x170471(0x17c)]()-_0x1da3f5,_0x375aa6=_0x31047f[_0x170471(0x256)]?.[_0x170471(0x1e7)]?.[_0x170471(0x273)]?.[_0x170471(0x1b2)]??0x0;logger['debug'](_0x170471(0x1b4),'warp_grep_complete',{'termination':_0x31047f[_0x170471(0x1d6)],'turns':_0x31047f[_0x170471(0x1b7)]?.[_0x170471(0x1f5)]??0x0,'files_found':_0x375aa6,'latency_ms':_0x516e17});const _0xe9b0e=_0x308a52(_0x31047f[_0x170471(0x155)]);_0xe9b0e[_0x170471(0x1b2)]>0x0&&reportMorphError({'error_message':'WarpGrep\x20sub-tool\x20errors:\x20'+_0xe9b0e[_0x170471(0x1b2)]+_0x170471(0x276),'error_type':'SubToolError','level':_0x170471(0x262),'tool':_0x170471(0x217),'context':{'repo_path':_0x46d926[_0x170471(0x272)][_0x170471(0x21f)],'query':_0x46d926[_0x170471(0x272)][_0x170471(0x212)],'model':_0x170471(0x193),'termination_reason':_0x31047f[_0x170471(0x1d6)],'sub_tool_errors':_0xe9b0e,'timings':_0x31047f[_0x170471(0x1b7)],'tool_calls':_0x31547b(_0x31047f['messages']),'messages':_0x31047f[_0x170471(0x155)]?.[_0x170471(0x1bb)](_0x4610c1=>({'role':_0x4610c1[_0x170471(0x174)],'content':_0x4610c1['content'],..._0x4610c1['tool_calls']?{'tool_calls':_0x4610c1[_0x170471(0x227)][_0x170471(0x1b2)]}:{},..._0x4610c1['tool_call_id']?{'tool_call_id':_0x4610c1['tool_call_id']}:{}}))},'source':_0x170471(0x178)})[_0x170471(0x261)](()=>{});let _0x383ee7='';if(_0x31047f['terminationReason']===_0x170471(0x17b)&&_0x31047f[_0x170471(0x256)]?.[_0x170471(0x1e7)]?.[_0x170471(0x273)]){const _0x17f043=_0x31047f['finish'][_0x170471(0x1e7)][_0x170471(0x273)];if(_0x17f043[_0x170471(0x1b2)]===0x0)return _0x383ee7=_0x31047f[_0x170471(0x256)][_0x170471(0x20c)]||_0x170471(0x1af),{'content':[{'type':_0x170471(0x1da),'text':_0x383ee7}]};const _0x567377=[],_0x200235=[_0x170471(0x14f)];for(const _0x508670 of _0x31047f[_0x170471(0x155)]){if(_0x508670[_0x170471(0x174)]===_0x170471(0x15b)&&Array[_0x170471(0x1d3)](_0x508670[_0x170471(0x227)]))for(const _0x1a4398 of _0x508670[_0x170471(0x227)]){try{const _0x385af2=_0x1a4398[_0x170471(0x1d1)]?.['name'],_0x1142c9=JSON[_0x170471(0x211)](_0x1a4398[_0x170471(0x1d1)]?.[_0x170471(0x228)]||'{}');if(_0x385af2===_0x170471(0x239))_0x200235[_0x170471(0x1f8)](_0x170471(0x22d)+_0x1142c9[_0x170471(0x266)]+_0x170471(0x20f)+(_0x1142c9[_0x170471(0x168)]||'.')+'`');else{if(_0x385af2===_0x170471(0x1f0))_0x200235[_0x170471(0x1f8)](_0x170471(0x180)+_0x1142c9[_0x170471(0x168)]+'`');else{if(_0x385af2==='list_directory')_0x200235['push'](_0x170471(0x15f)+(_0x1142c9[_0x170471(0x257)]||'.')+'`');else _0x385af2===_0x170471(0x185)&&_0x200235['push'](_0x170471(0x232)+_0x1142c9[_0x170471(0x266)]+_0x170471(0x16d)+(_0x1142c9['path']||'.')+'`');}}}catch{}}}_0x567377['push'](_0x200235[_0x170471(0x25b)]('\x0a'));const _0x226cb2=['',_0x170471(0x255)];for(const _0x577cf2 of _0x17f043){if(_0x577cf2[_0x170471(0x1df)]==='*')_0x226cb2[_0x170471(0x1f8)]('-\x20'+_0x577cf2[_0x170471(0x168)]+':*');else{if(Array[_0x170471(0x1d3)](_0x577cf2[_0x170471(0x1df)])){const _0x30dc6f=_0x577cf2['lines'][_0x170471(0x1bb)](([_0x576fd7,_0x34ccd0])=>{if(_0x576fd7===_0x34ccd0)return''+_0x576fd7;return _0x576fd7+'-'+_0x34ccd0;});_0x226cb2[_0x170471(0x1f8)]('-\x20'+_0x577cf2[_0x170471(0x168)]+':'+_0x30dc6f['join'](','));}else _0x226cb2[_0x170471(0x1f8)]('-\x20'+_0x577cf2[_0x170471(0x168)]+':*');}}_0x226cb2[_0x170471(0x1f8)](''),_0x567377[_0x170471(0x1f8)](_0x226cb2[_0x170471(0x25b)]('\x0a')),_0x567377[_0x170471(0x1f8)](_0x170471(0x17e));const _0x2e4ea5=[],_0x954db3=[];for(const _0x309c84 of _0x17f043){let _0x460bc7=a0_0x368898[_0x170471(0x162)](_0x46d926[_0x170471(0x272)][_0x170471(0x21f)],_0x309c84['path']),_0x470d9a=null,_0xb19f0f=null;try{_0x470d9a=await a0_0x4128a0[_0x170471(0x240)](_0x460bc7,{'encoding':'utf-8'});}catch(_0x473e08){const _0x34b469=fixPathRepetition(_0x460bc7);if(_0x34b469)try{_0x470d9a=await a0_0x4128a0[_0x170471(0x240)](_0x34b469,{'encoding':_0x170471(0x15d)}),_0x460bc7=_0x34b469;}catch{_0xb19f0f=_0x473e08 instanceof Error?_0x473e08:new Error(String(_0x473e08));}else _0xb19f0f=_0x473e08 instanceof Error?_0x473e08:new Error(String(_0x473e08));}if(_0x470d9a!==null){const _0x249117=_0x470d9a[_0x170471(0x253)](/\r?\n/),_0x481d22=[];if(_0x309c84['lines']==='*'||!Array[_0x170471(0x1d3)](_0x309c84[_0x170471(0x1df)]))for(let _0x150e27=0x1;_0x150e27<=_0x249117['length'];_0x150e27++){const _0x231405=_0x249117[_0x150e27-0x1];_0x481d22[_0x170471(0x1f8)](_0x150e27+'|\x20'+_0x231405);}else for(const [_0x1a8e4c,_0x422a94]of _0x309c84['lines']){_0x481d22[_0x170471(0x1b2)]>0x0&&_0x481d22[_0x170471(0x1f8)]('');for(let _0x2f40b9=_0x1a8e4c;_0x2f40b9<=_0x422a94&&_0x2f40b9<=_0x249117[_0x170471(0x1b2)];_0x2f40b9++){const _0x233d06=_0x249117[_0x2f40b9-0x1];_0x481d22[_0x170471(0x1f8)](_0x2f40b9+'|\x20'+_0x233d06);}}_0x954db3['push']({'path':_0x309c84[_0x170471(0x168)],'content':_0x481d22[_0x170471(0x25b)]('\x0a')});}else _0x2e4ea5['push']('<file\x20path=\x22'+_0x309c84[_0x170471(0x168)]+'\x22>\x0aError\x20reading\x20file:\x20'+(_0xb19f0f?.['message']||_0x170471(0x1fb))+_0x170471(0x216));}try{const _0x5f49a2=await compactFileContexts(_0x954db3,_0x46d926[_0x170471(0x272)][_0x170471(0x212)],MORPH_API_KEY,MORPH_API_URL);for(const _0x4a492e of _0x5f49a2){_0x2e4ea5['push'](_0x170471(0x17f)+_0x4a492e['path']+'\x22>\x0a'+_0x4a492e[_0x170471(0x21e)]+'\x0a</file>');}}catch(_0x1a0602){logger[_0x170471(0x262)](_0x170471(0x1b4),'compaction_failed',{'error':_0x1a0602 instanceof Error?_0x1a0602[_0x170471(0x22a)]:String(_0x1a0602),'files_count':_0x954db3['length']});for(const _0x42895b of _0x954db3){_0x2e4ea5[_0x170471(0x1f8)]('<file\x20path=\x22'+_0x42895b[_0x170471(0x168)]+_0x170471(0x156)+_0x42895b[_0x170471(0x21e)]+'\x0a</file>');}}_0x567377[_0x170471(0x1f8)](_0x2e4ea5[_0x170471(0x25b)]('\x0a\x0a')),_0x383ee7=_0x567377[_0x170471(0x25b)]('\x0a');const _0x5019b2=_0x31047f[_0x170471(0x252)]?.[_0x170471(0x1c7)](_0x5c66c5=>_0x5c66c5[_0x170471(0x22a)]?.[_0x170471(0x1c9)](_0x170471(0x235)))||[];if(_0x5019b2[_0x170471(0x1b2)]>0x0){const _0x1cdc0f=_0x5019b2[_0x170471(0x1bb)](_0x241717=>_0x241717['message'])['join'](';\x20');reportMorphError({'error_message':_0x1cdc0f,'error_type':'FileReadError','context':{'tool':_0x170471(0x217),'repo_path':_0x46d926[_0x170471(0x272)][_0x170471(0x21f)],'query':_0x46d926[_0x170471(0x272)][_0x170471(0x212)],'model':_0x170471(0x193),'termination_reason':'completed_with_file_errors','error_count':_0x5019b2[_0x170471(0x1b2)],'is_timeout':![],'timings':_0x31047f['timings'],'files_attempted':_0x17f043[_0x170471(0x1bb)](_0x292a8b=>({'path':_0x292a8b[_0x170471(0x168)],'lines':_0x292a8b[_0x170471(0x1df)]})),'tool_calls':_0x31547b(_0x31047f['messages']),'messages':_0x31047f[_0x170471(0x155)]?.[_0x170471(0x1bb)](_0x3fc007=>({'role':_0x3fc007[_0x170471(0x174)],'content':_0x3fc007[_0x170471(0x21e)],..._0x3fc007[_0x170471(0x227)]?{'tool_calls':_0x3fc007[_0x170471(0x227)][_0x170471(0x1b2)]}:{},..._0x3fc007['tool_call_id']?{'tool_call_id':_0x3fc007['tool_call_id']}:{}})),'request_content':{'query':_0x46d926['data'][_0x170471(0x212)],'repo_path':_0x46d926['data'][_0x170471(0x21f)],'repoRoot':a0_0x368898[_0x170471(0x162)](_0x46d926[_0x170471(0x272)][_0x170471(0x21f)]),'model':_0x170471(0x193)}},'source':_0x170471(0x178)})[_0x170471(0x261)](()=>{});}}else{if(_0x31047f['terminationReason']===_0x170471(0x207)&&_0x31047f['errors'][_0x170471(0x1b2)]>0x0){const _0x198c80=_0x31047f[_0x170471(0x252)][_0x170471(0x1bb)](_0x21dc19=>_0x21dc19[_0x170471(0x22a)])[_0x170471(0x25b)](';\x20');_0x383ee7=_0x170471(0x1a8)+_0x198c80;const _0x27da2a=_0x198c80['toLowerCase']()[_0x170471(0x1de)](_0x170471(0x191))||_0x198c80[_0x170471(0x25d)]()['includes'](_0x170471(0x25a))||_0x198c80[_0x170471(0x25d)]()[_0x170471(0x1de)](_0x170471(0x17d)),_0x447a9d=_0x31047f['finish']?.[_0x170471(0x1e7)]?.[_0x170471(0x273)],_0x3adc85=_0x31047f[_0x170471(0x252)][0x0];reportMorphError({'error_message':_0x198c80,'error_type':_0x27da2a?'TimeoutError':_0x3adc85?.[_0x170471(0x243)]?.[_0x170471(0x222)]||_0x170471(0x20a),'context':{'tool':'codebase_search','repo_path':_0x46d926['data'][_0x170471(0x21f)],'query':_0x46d926[_0x170471(0x272)]['search_string'],'model':_0x170471(0x193),'termination_reason':_0x31047f[_0x170471(0x1d6)],'error_count':_0x31047f['errors'][_0x170471(0x1b2)],'is_timeout':_0x27da2a,'timings':_0x31047f['timings'],'files_attempted':_0x447a9d?.['map'](_0x57c868=>({'path':_0x57c868[_0x170471(0x168)],'lines':_0x57c868[_0x170471(0x1df)]})),'tool_calls':_0x31547b(_0x31047f['messages']),'messages':_0x31047f[_0x170471(0x155)]?.[_0x170471(0x1bb)](_0x487352=>({'role':_0x487352[_0x170471(0x174)],'content':_0x487352[_0x170471(0x21e)],..._0x487352[_0x170471(0x227)]?{'tool_calls':_0x487352['tool_calls'][_0x170471(0x1b2)]}:{},..._0x487352[_0x170471(0x1e3)]?{'tool_call_id':_0x487352['tool_call_id']}:{}})),'request_content':{'query':_0x46d926[_0x170471(0x272)]['search_string'],'repo_path':_0x46d926['data'][_0x170471(0x21f)],'repoRoot':a0_0x368898[_0x170471(0x162)](_0x46d926[_0x170471(0x272)][_0x170471(0x21f)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x3adc85?.[_0x170471(0x264)]||undefined,'source':_0x170471(0x178)})[_0x170471(0x261)](()=>{});}else _0x383ee7=_0x170471(0x265);}return{'content':[{'type':_0x170471(0x1da),'text':_0x383ee7}]};}catch(_0x46f62f){const _0x402524=handleMorphAPIError(_0x46f62f);if(_0x402524)return logger[_0x170471(0x225)](_0x170471(0x1b4),_0x170471(0x1a3),{'tool':_0x170471(0x217),'error':'API\x20error\x20(auth/rate-limit)','latency_ms':Date[_0x170471(0x17c)]()-_0x9fc9d0}),_0x402524;const _0x2328f2=_0x46f62f instanceof Error?_0x46f62f[_0x170471(0x22a)]:String(_0x46f62f);logger[_0x170471(0x225)](_0x170471(0x1b4),_0x170471(0x1a3),{'tool':'codebase_search','error':_0x2328f2,'repo_path':_0x46d926[_0x170471(0x272)][_0x170471(0x21f)],'query':_0x46d926[_0x170471(0x272)][_0x170471(0x212)],'latency_ms':Date['now']()-_0x9fc9d0});const _0x4e03b8=_0x2328f2[_0x170471(0x25d)]()['includes']('timeout')||_0x2328f2['toLowerCase']()['includes'](_0x170471(0x25a))||_0x2328f2['toLowerCase']()[_0x170471(0x1de)]('etimedout')||_0x46f62f instanceof Error&&_0x46f62f[_0x170471(0x222)]===_0x170471(0x19a);return reportMorphError({'error_message':_0x2328f2,'error_type':_0x4e03b8?'TimeoutError':_0x46f62f instanceof Error?_0x46f62f[_0x170471(0x243)]['name']:_0x170471(0x1a6),'context':{'tool':_0x170471(0x217),'repo_path':_0x46d926[_0x170471(0x272)][_0x170471(0x21f)],'query':_0x46d926['data'][_0x170471(0x212)],'model':_0x170471(0x193),'is_timeout':_0x4e03b8,'exception_phase':_0x170471(0x218),'request_content':{'query':_0x46d926[_0x170471(0x272)][_0x170471(0x212)],'repo_path':_0x46d926['data'][_0x170471(0x21f)],'repoRoot':a0_0x368898[_0x170471(0x162)](_0x46d926[_0x170471(0x272)][_0x170471(0x21f)]),'model':'morph-warp-grep-v2.1'}},'stack_trace':_0x46f62f instanceof Error?_0x46f62f['stack']:undefined,'source':_0x170471(0x178)})[_0x170471(0x261)](()=>{}),{'content':[{'type':_0x170471(0x1da),'text':'Error\x20running\x20fast\x20context\x20search:\x20'+_0x2328f2}],'isError':![]};}}case TOOL_NAMES['GITHUB_CODEBASE_SEARCH']:{const _0x1766ad=WarpGrepGitHubArgsSchema['safeParse'](_0x592b7e);if(!_0x1766ad[_0x170471(0x1b6)])return{'content':[{'type':_0x170471(0x1da),'text':_0x170471(0x1cf)+_0x1766ad[_0x170471(0x225)]}],'isError':!![]};const _0x1bdf0f=_0x1766ad[_0x170471(0x272)][_0x170471(0x202)]||_0x1766ad[_0x170471(0x272)][_0x170471(0x241)];if(!_0x1bdf0f)return{'content':[{'type':'text','text':'Please\x20provide\x20github\x20search\x20url\x20or\x20owner/repo\x20id'}],'isError':!![]};const _0x225bd3=MORPH_API_KEY;if(!_0x225bd3)throw new Error(_0x170471(0x192));const _0x159b09=Date[_0x170471(0x17c)]();logger[_0x170471(0x201)]('MCP','github_search_start',{'identifier':_0x1bdf0f,'query':_0x1766ad[_0x170471(0x272)][_0x170471(0x212)],'branch':_0x1766ad[_0x170471(0x272)]['branch']});try{const _0x25be65=new WarpGrepClient({'morphApiKey':_0x225bd3,'morphApiUrl':MORPH_API_URL,'timeout':MORPH_WARP_GREP_TIMEOUT}),_0x43dd84=await _0x25be65[_0x170471(0x1d0)]({'searchTerm':_0x1766ad[_0x170471(0x272)][_0x170471(0x212)],'github':_0x1bdf0f,'branch':_0x1766ad[_0x170471(0x272)][_0x170471(0x159)]}),_0x11876b=Date['now']()-_0x159b09;logMcpStderr(_0x170471(0x1e1)+_0x11876b+_0x170471(0x24e)+_0x43dd84['success']);const _0xd083e3=formatResult(_0x43dd84);return{'content':[{'type':_0x170471(0x1da),'text':_0xd083e3}]};}catch(_0x4cc456){const _0x3f4000=handleMorphAPIError(_0x4cc456);if(_0x3f4000)return _0x3f4000;const _0x5394df=Date[_0x170471(0x17c)]()-_0x159b09,_0x1dcb73=_0x4cc456 instanceof Error?_0x4cc456[_0x170471(0x22a)]:String(_0x4cc456);return logMcpStderr('[github_codebase_search]\x20Failed\x20in\x20'+_0x5394df+_0x170471(0x209),_0x1dcb73),reportMorphError({'error_message':_0x1dcb73,'error_type':_0x4cc456 instanceof Error?_0x4cc456[_0x170471(0x243)][_0x170471(0x222)]:_0x170471(0x1a6),'context':{'tool':_0x170471(0x153),'github_url':_0x1bdf0f,'search_string':_0x1766ad['data']['search_string'],'branch':_0x1766ad[_0x170471(0x272)][_0x170471(0x159)]},'stack_trace':_0x4cc456 instanceof Error?_0x4cc456[_0x170471(0x264)]:undefined,'source':_0x170471(0x178),'tool':_0x170471(0x153),'latency_ms':_0x5394df})[_0x170471(0x261)](()=>{}),{'content':[{'type':_0x170471(0x1da),'text':_0x170471(0x242)+_0x1dcb73}],'isError':![]};}}default:throw new Error(_0x170471(0x194)+_0x2a3159);}}catch(_0x3513e9){const _0x2829ae=_0x3513e9 instanceof Error?_0x3513e9[_0x170471(0x22a)]:String(_0x3513e9);return reportMorphError({'error_message':_0x2829ae,'error_type':_0x3513e9 instanceof Error?_0x3513e9[_0x170471(0x243)]['name']:_0x170471(0x1a6),'context':{'tool':_0x2a3159,'arguments':_0x592b7e?JSON[_0x170471(0x196)](_0x592b7e)['substring'](0x0,0x1f4):undefined,'mcp_server_version':'0.2.0'},'stack_trace':_0x3513e9 instanceof Error?_0x3513e9[_0x170471(0x264)]:undefined,'source':_0x170471(0x178)})[_0x170471(0x261)](()=>{}),{'content':[{'type':_0x170471(0x1da),'text':_0x170471(0x1a8)+_0x2829ae}],'isError':!![]};}});async function updateAllowedDirectoriesFromRoots(_0x17e096){const _0x4d9650=a0_0x525535,_0x2fd797=await getValidRootDirectories(_0x17e096);if(_0x2fd797['length']>0x0)allowedDirectories=[..._0x2fd797],logMcpStderr(_0x4d9650(0x1e6)+_0x2fd797['length']+_0x4d9650(0x1c0));else{logMcpStderr('No\x20valid\x20root\x20directories\x20provided\x20by\x20client');if(ENABLE_WORKSPACE_MODE)try{const _0x2952b0=await detectWorkspaceRoot(WORKSPACE_ROOT);_0x2952b0&&(allowedDirectories=[_0x2952b0],logMcpStderr(_0x4d9650(0x226)+_0x2952b0));}catch(_0x3fa6f8){logMcpStderr(_0x4d9650(0x1f6)+_0x3fa6f8);}}}server['setNotificationHandler'](RootsListChangedNotificationSchema,async()=>{const _0xe9775d=a0_0x525535;try{const _0xe03072=await server[_0xe9775d(0x1ea)]();_0xe03072&&'roots'in _0xe03072&&await updateAllowedDirectoriesFromRoots(_0xe03072[_0xe9775d(0x219)]);}catch(_0x490afe){logMcpStderr('Failed\x20to\x20request\x20roots\x20from\x20client:',_0x490afe instanceof Error?_0x490afe[_0xe9775d(0x22a)]:String(_0x490afe));}}),server[a0_0x525535(0x20d)]=async()=>{const _0x4488de=a0_0x525535,_0x139f42=server[_0x4488de(0x267)]();if(_0x139f42?.[_0x4488de(0x219)])try{const _0x182172=await server['listRoots']();_0x182172&&_0x4488de(0x219)in _0x182172?await updateAllowedDirectoriesFromRoots(_0x182172[_0x4488de(0x219)]):logMcpStderr(_0x4488de(0x23b));}catch(_0x6f29d5){logMcpStderr(_0x4488de(0x223),_0x6f29d5 instanceof Error?_0x6f29d5[_0x4488de(0x22a)]:String(_0x6f29d5));}else{if(allowedDirectories['length']>0x0)logMcpStderr(_0x4488de(0x183),allowedDirectories);else{if(ENABLE_WORKSPACE_MODE)logMcpStderr(_0x4488de(0x171));else throw new Error(_0x4488de(0x166));}}};async function runServer(){const _0x109d00=a0_0x525535,_0x54d1fb=new StdioServerTransport();await server['connect'](_0x54d1fb),logMcpStderr(_0x109d00(0x19f)),allowedDirectories['length']===0x0&&logMcpStderr('Started\x20without\x20allowed\x20directories\x20-\x20waiting\x20for\x20client\x20to\x20provide\x20roots\x20via\x20MCP\x20protocol');}runServer()[a0_0x525535(0x261)](_0xd49bec=>{const _0x380009=a0_0x525535;logMcpStderr(_0x380009(0x195),_0xd49bec),process[_0x380009(0x1d8)](0x1);});
|
package/dist/log-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var
|
|
1
|
+
var a1_0x3cb76d=a1_0x34c4;function a1_0x34c4(_0x409289,_0x27886f){_0x409289=_0x409289-0x67;var _0x32c4ed=a1_0x32c4();var _0x34c464=_0x32c4ed[_0x409289];return _0x34c464;}(function(_0x1f693d,_0xa01517){var _0x399970=a1_0x34c4,_0x45cc68=_0x1f693d();while(!![]){try{var _0x123b3c=parseInt(_0x399970(0x7b))/0x1+parseInt(_0x399970(0x71))/0x2+-parseInt(_0x399970(0x70))/0x3*(-parseInt(_0x399970(0x74))/0x4)+-parseInt(_0x399970(0x69))/0x5*(-parseInt(_0x399970(0x79))/0x6)+-parseInt(_0x399970(0x78))/0x7+-parseInt(_0x399970(0x6e))/0x8+-parseInt(_0x399970(0x76))/0x9*(parseInt(_0x399970(0x77))/0xa);if(_0x123b3c===_0xa01517)break;else _0x45cc68['push'](_0x45cc68['shift']());}catch(_0x1a2334){_0x45cc68['push'](_0x45cc68['shift']());}}}(a1_0x32c4,0x28bb4));import a1_0x57b329 from'os';import{logger}from'./logger.js';function a1_0x32c4(){var _0x4feb6e=['Windows','2403MiIGct','14640cvSIEi','368305DwofrE','504tDNpjq','macOS','182246nbcAia','platform','map','8090CkKsoS','win32','linux','Linux','Unknown','1948272WKxSDf','info','699819oEikvU','604884zLklrN','MCP','length','4zqCGfR'];a1_0x32c4=function(){return _0x4feb6e;};return a1_0x32c4();}export function getOperatingSystemType(_0x1412d0=a1_0x57b329['platform']()){var _0x320fc9=a1_0x34c4;switch(_0x1412d0){case'darwin':return _0x320fc9(0x7a);case _0x320fc9(0x6a):return _0x320fc9(0x75);case _0x320fc9(0x6b):return _0x320fc9(0x6c);default:return _0x320fc9(0x6d);}}export function formatMcpLogMessage(_0x4a010e,_0x32364d=a1_0x57b329[a1_0x3cb76d(0x67)]()){return'[os='+getOperatingSystemType(_0x32364d)+']\x20'+_0x4a010e;}export function logMcpStderr(_0x48cbb1,..._0x5bd2e6){var _0x16c640=a1_0x3cb76d;console['error'](formatMcpLogMessage(_0x48cbb1),..._0x5bd2e6),logger[_0x16c640(0x6f)](_0x16c640(0x72),_0x48cbb1,_0x5bd2e6[_0x16c640(0x73)]?{'args':_0x5bd2e6[_0x16c640(0x68)](_0x2f8e80=>String(_0x2f8e80))}:undefined);}
|
package/dist/logger.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
function a2_0x588d(_0x3e406f,_0x2a2f27){_0x3e406f=_0x3e406f-0x1b5;const _0x541694=a2_0x5416();let _0x588d90=_0x541694[_0x3e406f];return _0x588d90;}const a2_0x4d5afb=a2_0x588d;(function(_0x207068,_0x5bd4af){const _0x27826d=a2_0x588d,_0x2c4132=_0x207068();while(!![]){try{const _0x2e89c9=-parseInt(_0x27826d(0x1c6))/0x1+-parseInt(_0x27826d(0x1c0))/0x2*(-parseInt(_0x27826d(0x1cc))/0x3)+-parseInt(_0x27826d(0x1c4))/0x4*(parseInt(_0x27826d(0x1c7))/0x5)+parseInt(_0x27826d(0x1b6))/0x6+parseInt(_0x27826d(0x1c3))/0x7*(-parseInt(_0x27826d(0x1bd))/0x8)+parseInt(_0x27826d(0x1c8))/0x9+-parseInt(_0x27826d(0x1ba))/0xa*(-parseInt(_0x27826d(0x1cb))/0xb);if(_0x2e89c9===_0x5bd4af)break;else _0x2c4132['push'](_0x2c4132['shift']());}catch(_0x1dd694){_0x2c4132['push'](_0x2c4132['shift']());}}}(a2_0x5416,0x83f96));function a2_0x5416(){const _0x5c89f9=['debug','_log','40873ktldyn','4259572cvXRfA','write','409302qOQoYv','5VStpxa','2497896ssmlAr','enable','stringify','11GBmkBm','39pCmApD','warn',']\x20[','fileStream','4853190iPBRDB','info','MORPH_LOG_FILE','env','5076530zJqkPv','error','toUpperCase','704XIwNbc','enabled','isEnabled','143774OGjpJG'];a2_0x5416=function(){return _0x5c89f9;};return a2_0x5416();}import{createWriteStream}from'fs';class MorphLogger{[a2_0x4d5afb(0x1be)];[a2_0x4d5afb(0x1b5)];constructor(){const _0x521b5c=a2_0x4d5afb;this[_0x521b5c(0x1be)]=process[_0x521b5c(0x1b9)]['MORPH_DEBUG']==='1'||!!process['env'][_0x521b5c(0x1b8)];const _0x2bd6bd=process[_0x521b5c(0x1b9)][_0x521b5c(0x1b8)];this[_0x521b5c(0x1b5)]=_0x2bd6bd?createWriteStream(_0x2bd6bd,{'flags':'a'}):null;}[a2_0x4d5afb(0x1c1)](_0x3b0fad,_0xe84ba0,_0x58a962){const _0x346d9d=a2_0x4d5afb;this['_log'](_0x346d9d(0x1c1),_0x3b0fad,_0xe84ba0,_0x58a962);}[a2_0x4d5afb(0x1b7)](_0x492f9b,_0x404df4,_0x2aab30){const _0x527a06=a2_0x4d5afb;this[_0x527a06(0x1c2)](_0x527a06(0x1b7),_0x492f9b,_0x404df4,_0x2aab30);}[a2_0x4d5afb(0x1cd)](_0x13226a,_0x461ab9,_0x19dd06){const _0x4e611a=a2_0x4d5afb;this[_0x4e611a(0x1c2)](_0x4e611a(0x1cd),_0x13226a,_0x461ab9,_0x19dd06);}[a2_0x4d5afb(0x1bb)](_0x3b7b6f,_0x28195a,_0x125315){this['_log']('error',_0x3b7b6f,_0x28195a,_0x125315);}[a2_0x4d5afb(0x1c9)](){const _0x898663=a2_0x4d5afb;this[_0x898663(0x1be)]=!![];}get[a2_0x4d5afb(0x1bf)](){const _0x2b3223=a2_0x4d5afb;return this[_0x2b3223(0x1be)];}['_log'](_0x69274f,_0x946175,_0x476c7d,_0x13a92b){const _0x3fe6f7=a2_0x4d5afb;if(_0x69274f!==_0x3fe6f7(0x1bb)&&!this['enabled'])return;const _0x95a9bc=new Date()['toISOString'](),_0x4c15ef='['+_0x95a9bc+_0x3fe6f7(0x1ce)+_0x69274f[_0x3fe6f7(0x1bc)]()+']\x20['+_0x946175+']';console[_0x3fe6f7(0x1bb)](_0x13a92b?_0x4c15ef+'\x20'+_0x476c7d+'\x20'+JSON[_0x3fe6f7(0x1ca)](_0x13a92b):_0x4c15ef+'\x20'+_0x476c7d),this[_0x3fe6f7(0x1b5)]?.[_0x3fe6f7(0x1c5)](JSON[_0x3fe6f7(0x1ca)]({'ts':_0x95a9bc,'level':_0x69274f,'component':_0x946175,'msg':_0x476c7d,..._0x13a92b&&{'data':_0x13a92b}})+'\x0a');}}export const logger=new MorphLogger();
|
package/dist/path-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x20f23c,_0x113203){const _0x4efce6=a3_0x1bbe,_0x4e72d1=_0x20f23c();while(!![]){try{const _0x40ec2a=parseInt(_0x4efce6(0x1b8))/0x1*(-parseInt(_0x4efce6(0x1b3))/0x2)+-parseInt(_0x4efce6(0x1bc))/0x3+parseInt(_0x4efce6(0x1b6))/0x4+-parseInt(_0x4efce6(0x1b1))/0x5*(-parseInt(_0x4efce6(0x1b2))/0x6)+-parseInt(_0x4efce6(0x1c0))/0x7+parseInt(_0x4efce6(0x1ad))/0x8*(-parseInt(_0x4efce6(0x1af))/0x9)+-parseInt(_0x4efce6(0x1ae))/0xa*(-parseInt(_0x4efce6(0x1be))/0xb);if(_0x40ec2a===_0x113203)break;else _0x4e72d1['push'](_0x4e72d1['shift']());}catch(_0x3ef217){_0x4e72d1['push'](_0x4e72d1['shift']());}}}(a3_0x18ee,0x3d7cb));import a3_0x964d14 from'path';function a3_0x1bbe(_0x116cfa,_0x4a5bd0){_0x116cfa=_0x116cfa-0x1ac;const _0x18ee66=a3_0x18ee();let _0x1bbe6b=_0x18ee66[_0x116cfa];return _0x1bbe6b;}import a3_0xc155c3 from'os';function a3_0x18ee(){const _0x5a8d24=['16xKpuzf','16470Mrqnpv','909747kmRGuE','slice','115735LAJmLW','114sPqbXs','1658YYsfLb','/mnt/','join','464188IwrznB','match','7sRHLfc','substring','charAt','toUpperCase','821970rPFpJs','startsWith','4433sKOzbX','replace','3400397SiQsHw','trim','homedir'];a3_0x18ee=function(){return _0x5a8d24;};return a3_0x18ee();}export function convertToWindowsPath(_0x4ed4fd){const _0x1ec95f=a3_0x1bbe;if(_0x4ed4fd[_0x1ec95f(0x1bd)](_0x1ec95f(0x1b4))){const _0x36f478=_0x4ed4fd[_0x1ec95f(0x1ba)](0x5)[_0x1ec95f(0x1bb)](),_0xd67d67=_0x4ed4fd[_0x1ec95f(0x1b0)](0x6)[_0x1ec95f(0x1bf)](/\//g,'\x5c');return _0x36f478+':'+_0xd67d67;}if(_0x4ed4fd['match'](/^\/[a-zA-Z]\//)){const _0x1d2ee6=_0x4ed4fd[_0x1ec95f(0x1ba)](0x1)[_0x1ec95f(0x1bb)](),_0x2e2ed0=_0x4ed4fd[_0x1ec95f(0x1b0)](0x2)[_0x1ec95f(0x1bf)](/\//g,'\x5c');return _0x1d2ee6+':'+_0x2e2ed0;}if(_0x4ed4fd[_0x1ec95f(0x1b7)](/^[a-zA-Z]:/))return _0x4ed4fd[_0x1ec95f(0x1bf)](/\//g,'\x5c');return _0x4ed4fd;}export function normalizePath(_0x542f84){const _0x1e1fcc=a3_0x1bbe;_0x542f84=_0x542f84[_0x1e1fcc(0x1c1)]()[_0x1e1fcc(0x1bf)](/^["']|["']$/g,'');const _0x296e8c=_0x542f84[_0x1e1fcc(0x1bd)]('/')&&!_0x542f84[_0x1e1fcc(0x1b7)](/^\/mnt\/[a-z]\//i)&&!_0x542f84[_0x1e1fcc(0x1b7)](/^\/[a-zA-Z]\//);if(_0x296e8c)return _0x542f84[_0x1e1fcc(0x1bf)](/\/+/g,'/')[_0x1e1fcc(0x1bf)](/\/+$/,'');_0x542f84=convertToWindowsPath(_0x542f84);if(_0x542f84[_0x1e1fcc(0x1bd)]('\x5c\x5c')){let _0x44cca3=_0x542f84;_0x44cca3=_0x44cca3['replace'](/^\\{2,}/,'\x5c\x5c');const _0x15d661=_0x44cca3[_0x1e1fcc(0x1b9)](0x2)[_0x1e1fcc(0x1bf)](/\\\\/g,'\x5c');_0x542f84='\x5c\x5c'+_0x15d661;}else _0x542f84=_0x542f84[_0x1e1fcc(0x1bf)](/\\\\/g,'\x5c');let _0x56c301=a3_0x964d14['normalize'](_0x542f84);_0x542f84[_0x1e1fcc(0x1bd)]('\x5c\x5c')&&!_0x56c301[_0x1e1fcc(0x1bd)]('\x5c\x5c')&&(_0x56c301='\x5c'+_0x56c301);if(_0x56c301['match'](/^[a-zA-Z]:/)){let _0x451323=_0x56c301[_0x1e1fcc(0x1bf)](/\//g,'\x5c');return/^[a-z]:/['test'](_0x451323)&&(_0x451323=_0x451323[_0x1e1fcc(0x1ba)](0x0)[_0x1e1fcc(0x1bb)]()+_0x451323[_0x1e1fcc(0x1b0)](0x1)),_0x451323;}return _0x56c301['replace'](/\//g,'\x5c');}export function expandHome(_0x4f2194){const _0x207e3f=a3_0x1bbe;if(_0x4f2194[_0x207e3f(0x1bd)]('~/')||_0x4f2194==='~')return a3_0x964d14[_0x207e3f(0x1b5)](a3_0xc155c3[_0x207e3f(0x1ac)](),_0x4f2194[_0x207e3f(0x1b0)](0x1));return _0x4f2194;}
|
package/dist/path-validation.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x36684f,_0x2bd14c){const _0x28599f=a4_0x534d,_0x4e924a=_0x36684f();while(!![]){try{const _0xadfc29=parseInt(_0x28599f(0x1d9))/0x1*(parseInt(_0x28599f(0x1d1))/0x2)+parseInt(_0x28599f(0x1e4))/0x3*(parseInt(_0x28599f(0x1db))/0x4)+parseInt(_0x28599f(0x1da))/0x5*(-parseInt(_0x28599f(0x1d3))/0x6)+-parseInt(_0x28599f(0x1e0))/0x7*(-parseInt(_0x28599f(0x1d2))/0x8)+parseInt(_0x28599f(0x1dc))/0x9+parseInt(_0x28599f(0x1e1))/0xa*(parseInt(_0x28599f(0x1d6))/0xb)+-parseInt(_0x28599f(0x1e3))/0xc;if(_0xadfc29===_0x2bd14c)break;else _0x4e924a['push'](_0x4e924a['shift']());}catch(_0x5c0f2e){_0x4e924a['push'](_0x4e924a['shift']());}}}(a4_0x20fa,0xd90be));function a4_0x20fa(){const _0x274b59=['429dhGudj','includes','some','30789fxveMh','3760qQpMlr','1132RYJkcV','1949445uPvRbX','isAbsolute','Path\x20must\x20be\x20absolute\x20after\x20normalization','length','14IbPVqi','101550qHojtE','startsWith','14739060pNKwPw','15927sJengX','4qgVuiu','3916456EAeEcY','8286iPAtum','sep','resolve'];a4_0x20fa=function(){return _0x274b59;};return a4_0x20fa();}import a4_0x470a2e from'path';function a4_0x534d(_0x521886,_0x247f1d){_0x521886=_0x521886-0x1d1;const _0x20fa95=a4_0x20fa();let _0x534df8=_0x20fa95[_0x521886];return _0x534df8;}export function isPathWithinAllowedDirectories(_0xbd203a,_0x5d8d36){const _0x523ba4=a4_0x534d;if(typeof _0xbd203a!=='string'||!Array['isArray'](_0x5d8d36))return![];if(!_0xbd203a||_0x5d8d36[_0x523ba4(0x1df)]===0x0)return![];if(_0xbd203a[_0x523ba4(0x1d7)]('\x00'))return![];let _0x2f4eb5;try{_0x2f4eb5=a4_0x470a2e['resolve'](a4_0x470a2e['normalize'](_0xbd203a));}catch{return![];}if(!a4_0x470a2e[_0x523ba4(0x1dd)](_0x2f4eb5))throw new Error(_0x523ba4(0x1de));return _0x5d8d36[_0x523ba4(0x1d8)](_0x39bb07=>{const _0x2e18ba=_0x523ba4;if(typeof _0x39bb07!=='string'||!_0x39bb07)return![];if(_0x39bb07['includes']('\x00'))return![];let _0x58787e;try{_0x58787e=a4_0x470a2e[_0x2e18ba(0x1d5)](a4_0x470a2e['normalize'](_0x39bb07));}catch{return![];}if(!a4_0x470a2e[_0x2e18ba(0x1dd)](_0x58787e))throw new Error('Allowed\x20directories\x20must\x20be\x20absolute\x20paths\x20after\x20normalization');if(_0x2f4eb5===_0x58787e)return!![];if(_0x58787e===a4_0x470a2e[_0x2e18ba(0x1d4)])return _0x2f4eb5[_0x2e18ba(0x1e2)](a4_0x470a2e['sep']);return _0x2f4eb5['startsWith'](_0x58787e+a4_0x470a2e[_0x2e18ba(0x1d4)]);});}
|
package/dist/roots-utils.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(_0x5b30dd,_0x3fa288){const _0x27f909=a5_0x3c49,_0x512716=_0x5b30dd();while(!![]){try{const _0x2e9c7e=-parseInt(_0x27f909(0x104))/0x1*(-parseInt(_0x27f909(0x109))/0x2)+parseInt(_0x27f909(0x10b))/0x3+-parseInt(_0x27f909(0x111))/0x4*(-parseInt(_0x27f909(0x108))/0x5)+parseInt(_0x27f909(0x10c))/0x6*(-parseInt(_0x27f909(0x107))/0x7)+-parseInt(_0x27f909(0x115))/0x8+parseInt(_0x27f909(0x106))/0x9*(-parseInt(_0x27f909(0x105))/0xa)+-parseInt(_0x27f909(0x102))/0xb*(parseInt(_0x27f909(0x10e))/0xc);if(_0x2e9c7e===_0x3fa288)break;else _0x512716['push'](_0x512716['shift']());}catch(_0x2d562a){_0x512716['push'](_0x512716['shift']());}}}(a5_0xb138,0x33aab));import{promises as a5_0x211077}from'fs';function a5_0xb138(){const _0x24292c=['push','2105ecYivf','387540kYyXlr','27XoQheR','187593xuesNd','1507745KZzjms','334SMJXrO','homedir','482781yzQMhc','24GrFaWR','Skipping\x20invalid\x20directory:\x20','19440qmZGlJ','join','file://','4LmxIfZ','startsWith','uri','isDirectory','2849968DlIiuX','\x20due\x20to\x20error:\x20','realpath','resolve','stat','Skipping\x20','slice','154ZgUzse'];a5_0xb138=function(){return _0x24292c;};return a5_0xb138();}import a5_0x13367d from'path';import a5_0x64426d from'os';import{normalizePath}from'./path-utils.js';import{logMcpStderr}from'./log-utils.js';function a5_0x3c49(_0x402407,_0x3e2b80){_0x402407=_0x402407-0xff;const _0xb1383d=a5_0xb138();let _0x3c497c=_0xb1383d[_0x402407];return _0x3c497c;}async function parseRootUri(_0x45ed22){const _0x5d4a99=a5_0x3c49;try{const _0x38dcd1=_0x45ed22[_0x5d4a99(0x112)](_0x5d4a99(0x110))?_0x45ed22[_0x5d4a99(0x101)](0x7):_0x45ed22,_0x395a89=_0x38dcd1[_0x5d4a99(0x112)]('~/')||_0x38dcd1==='~'?a5_0x13367d[_0x5d4a99(0x10f)](a5_0x64426d[_0x5d4a99(0x10a)](),_0x38dcd1[_0x5d4a99(0x101)](0x1)):_0x38dcd1,_0x1b3b10=a5_0x13367d[_0x5d4a99(0x118)](_0x395a89),_0x429752=await a5_0x211077[_0x5d4a99(0x117)](_0x1b3b10);return normalizePath(_0x429752);}catch{return null;}}function formatDirectoryError(_0x28bdfa,_0x2ac8f7,_0x98cedc){const _0x3e888c=a5_0x3c49;if(_0x98cedc)return _0x3e888c(0x100)+_0x98cedc+':\x20'+_0x28bdfa;const _0x7e4842=_0x2ac8f7 instanceof Error?_0x2ac8f7['message']:String(_0x2ac8f7);return _0x3e888c(0x10d)+_0x28bdfa+_0x3e888c(0x116)+_0x7e4842;}export async function getValidRootDirectories(_0x1f2ce1){const _0x4ba348=a5_0x3c49,_0x5256e4=[];for(const _0x189ff6 of _0x1f2ce1){const _0x47c783=await parseRootUri(_0x189ff6['uri']);if(!_0x47c783){logMcpStderr(formatDirectoryError(_0x189ff6[_0x4ba348(0x113)],undefined,'invalid\x20path\x20or\x20inaccessible'));continue;}try{const _0x5be49b=await a5_0x211077[_0x4ba348(0xff)](_0x47c783);_0x5be49b[_0x4ba348(0x114)]()?_0x5256e4[_0x4ba348(0x103)](_0x47c783):logMcpStderr(formatDirectoryError(_0x47c783,undefined,'non-directory\x20root'));}catch(_0x2fdb66){logMcpStderr(formatDirectoryError(_0x47c783,_0x2fdb66));}}return _0x5256e4;}
|
package/dist/tool-definitions.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
function a6_0x3419(){const _0x2129d7=['1058755rAOlKh','3YzOxGV','1710556FsTUiS','2422764qnljap','1000843ycVwzy','712Vuaekp','6cCrYPt','codebase_search','1345918RZcpzV','25058890GHetWk','103230XtFWDd'];a6_0x3419=function(){return _0x2129d7;};return a6_0x3419();}const a6_0x1c502f=a6_0x472f;(function(_0x594d25,_0x473098){const _0x403aa9=a6_0x472f,_0x43ce5e=_0x594d25();while(!![]){try{const _0x89e19b=-parseInt(_0x403aa9(0xa5))/0x1+-parseInt(_0x403aa9(0xa3))/0x2+-parseInt(_0x403aa9(0xad))/0x3*(parseInt(_0x403aa9(0xa4))/0x4)+-parseInt(_0x403aa9(0xac))/0x5+parseInt(_0x403aa9(0xa7))/0x6*(-parseInt(_0x403aa9(0xa9))/0x7)+parseInt(_0x403aa9(0xa6))/0x8*(parseInt(_0x403aa9(0xab))/0x9)+parseInt(_0x403aa9(0xaa))/0xa;if(_0x89e19b===_0x473098)break;else _0x43ce5e['push'](_0x43ce5e['shift']());}catch(_0x536571){_0x43ce5e['push'](_0x43ce5e['shift']());}}}(a6_0x3419,0xa1592));export const TOOL_NAMES={'EDIT_FILE':'edit_file','CODEBASE_SEARCH':a6_0x1c502f(0xa8),'GITHUB_CODEBASE_SEARCH':'github_codebase_search'};function a6_0x472f(_0x428397,_0x36e1ef){_0x428397=_0x428397-0xa3;const _0x341955=a6_0x3419();let _0x472f73=_0x341955[_0x428397];return _0x472f73;}export const ALL_TOOL_NAMES=Object['values'](TOOL_NAMES);export const KNOWN_TOOL_NAMES=new Set(ALL_TOOL_NAMES);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morphllm/morphmcp",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.196",
|
|
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.186",
|
|
39
39
|
"@vscode/ripgrep": "^1.15.14",
|
|
40
40
|
"axios": "^1.6.0",
|
|
41
41
|
"chalk": "^5.3.0",
|